diff --git a/README.md b/README.md
index 4333e878..078d95ab 100644
--- a/README.md
+++ b/README.md
@@ -117,6 +117,7 @@ Returns an object with all contracts from a deployment and their addresses.
| Stakeless Gauge Checkpointer V2 | [`20230915-stakeless-gauge-checkpointer-v2`](./tasks/20230915-stakeless-gauge-checkpointer-v2) |
| Batch Relayer V6 | [`20231031-batch-relayer-v6`](./tasks/20231031-batch-relayer-v6) |
| Composable Stable Pools V6 | [`20240223-composable-stable-pool-v6`](./tasks/20240223-composable-stable-pool-v6) |
+| Fraxtal Root Gauge, for veBAL voting | [`20240522-fraxtal-root-gauge-factory`](./tasks/20240522-fraxtal-root-gauge-factory) |
## Scripts
diff --git a/tasks/20240522-fraxtal-root-gauge-factory/artifact/OptimisticRootGauge.json b/tasks/20240522-fraxtal-root-gauge-factory/artifact/OptimisticRootGauge.json
new file mode 100644
index 00000000..7c069a48
--- /dev/null
+++ b/tasks/20240522-fraxtal-root-gauge-factory/artifact/OptimisticRootGauge.json
@@ -0,0 +1,288 @@
+{
+ "_format": "hh-sol-artifact-1",
+ "contractName": "OptimisticRootGauge",
+ "sourceName": "contracts/gauges/optimistic/OptimisticRootGauge.sol",
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "contract IMainnetBalancerMinter",
+ "name": "minter",
+ "type": "address"
+ },
+ {
+ "internalType": "contract IL1StandardBridge",
+ "name": "optimismL1StandardBridge",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "optimismBal",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "periodTime",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "periodEmissions",
+ "type": "uint256"
+ }
+ ],
+ "name": "Checkpoint",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "new_relative_weight_cap",
+ "type": "uint256"
+ }
+ ],
+ "name": "RelativeWeightCapChanged",
+ "type": "event"
+ },
+ {
+ "inputs": [],
+ "name": "MAX_RELATIVE_WEIGHT_CAP",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "NETWORK",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "checkpoint",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "time",
+ "type": "uint256"
+ }
+ ],
+ "name": "getCappedRelativeWeight",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "getOptimismBal",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "getOptimismBridge",
+ "outputs": [
+ {
+ "internalType": "contract IL1StandardBridge",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "getRecipient",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "getRelativeWeightCap",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "getTotalBridgeCost",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "relativeWeightCap",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "targetNetwork",
+ "type": "string"
+ }
+ ],
+ "name": "initialize",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "user",
+ "type": "address"
+ }
+ ],
+ "name": "integrate_fraction",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "is_killed",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "killGauge",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "relativeWeightCap",
+ "type": "uint256"
+ }
+ ],
+ "name": "setRelativeWeightCap",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "unkillGauge",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "user_checkpoint",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "pure",
+ "type": "function"
+ }
+ ],
+ "bytecode": "0x6101e06040523480156200001257600080fd5b5060405162001c5238038062001c52833981810160405260608110156200003857600080fd5b50805160208083015160409384015160016000908155855163e6dec36f60e01b81529551949592949193869391926001600160a01b0385169263e6dec36f926004808301939192829003018186803b1580156200009457600080fd5b505afa158015620000a9573d6000803e3d6000fd5b505050506040513d6020811015620000c057600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d60208110156200013557600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017e57600080fd5b505afa15801562000193573d6000803e3d6000fd5b505050506040513d6020811015620001aa57600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021b57600080fd5b505afa15801562000230573d6000803e3d6000fd5b505050506040513d60208110156200024757600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029b57600080fd5b505afa158015620002b0573d6000803e3d6000fd5b505050506040513d6020811015620002c757600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d60208110156200033a57600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b505161016052505060001960025550506001600160601b0319606092831b81166101805290821b166101a05233901b6101c0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c6101c05160601c6117ab620004a760003980611175525080610696528061113052508061066c52806110ac52806110d3525080610ad2525080610ab1525080610a345280610b1e5250806104e752806107f952806108d95280610cbc52508061058652806109c2525080610c14525080610e8d5280610f8a52508061108a528061110f52506117ab6000f3fe6080604052600436106100f35760003560e01c806383f5c39b1161008a578063ab8f094511610059578063ab8f0945146103fa578063b02452251461040f578063c2c4c5c114610424578063d34fb2671461042c576100f3565b806383f5c39b146103315780638759e6d1146103465780639c868ac0146103d05780639f867671146103e5576100f3565b80632d8411af116100c65780632d8411af146101de5780634b820093146101f357806360b630c41461024757806381d609561461025c576100f3565b806309400707146100f857806310d3eb041461014a57806314e956f5146101765780631b88094d146101a0575b600080fd5b34801561010457600080fd5b506101386004803603602081101561011b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610441565b60408051918252519081900360200190f35b34801561015657600080fd5b506101746004803603602081101561016d57600080fd5b50356104cf565b005b34801561018257600080fd5b506101386004803603602081101561019957600080fd5b503561057f565b3480156101ac57600080fd5b506101b561064d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101ea57600080fd5b506101b561066a565b3480156101ff57600080fd5b506102336004803603602081101561021657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661068e565b604080519115158252519081900360200190f35b34801561025357600080fd5b506101b5610694565b34801561026857600080fd5b506101746004803603606081101561027f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156102bc57600080fd5b8201836020820111156102ce57600080fd5b803590602001918460018302840111640100000000831117156102f057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106b8945050505050565b34801561033d57600080fd5b5061013861071a565b34801561035257600080fd5b5061035b610720565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039557818101518382015260200161037d565b50505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103dc57600080fd5b506102336107cc565b3480156103f157600080fd5b506101386107d5565b34801561040657600080fd5b506101746107e1565b34801561041b57600080fd5b506101386108b2565b6102336108b7565b34801561043857600080fd5b50610174610ca4565b600073ffffffffffffffffffffffffffffffffffffffff821630146104c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461057357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61057c81610d72565b50565b60006106477f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561061357600080fd5b505afa158015610627573d6000803e3d6000fd5b505050506040513d602081101561063d57600080fd5b5051600654610e0e565b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff165b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106c182610e1a565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8516179055805161071490600790602084019061168a565b50505050565b60065490565b6007805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156107c45780601f10610799576101008083540402835291602001916107c4565b820191906000526020600020905b8154815290600101906020018083116107a757829003601f168201915b505050505081565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461088557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b60006108c161102c565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610972611045565b905080821015610c9657604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610ba95784811115610a6e57610ba9565b62093a808102600080610a808361057f565b9050828510158015610a9657508262093a800185105b15610b4f57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000890281610afa57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f00000000000000000000000000000000000000000000000000000000000000009098019704939093019250610b649050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610a56565b50600284905560048054830190558115801590610bc9575060055460ff16155b15610c9257604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610c5c57600080fd5b505af1158015610c70573d6000803e3d6000fd5b505050506040513d6020811015610c8657600080fd5b50610c92905082611070565b5050505b6001925050506106676112e4565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d4857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061171e6034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b60025415610e8957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ef157600080fd5b505afa158015610f05573d6000803e3d6000fd5b505050506040513d6020811015610f1b57600080fd5b5051905080610f75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806117526024913960400191505060405180910390fd5b6001819055610f82611045565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610ff057600080fd5b505af1158015611004573d6000803e3d6000fd5b505050506040513d602081101561101a57600080fd5b505160035561102882610d72565b5050565b61103e600260005414156101906112eb565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6110d173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836112f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663838b25207f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a0566e726040518163ffffffff1660e01b815260040160206040518083038186803b1580156111d957600080fd5b505afa1580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16815273ffffffffffffffffffffffffffffffffffffffff96871660048201529486166024860152929094166044840152606483015263ffffffff909216608482015260c060a4820152600260c48201527f307800000000000000000000000000000000000000000000000000000000000060e4820152905161010480830192600092919082900301818387803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b5050505050565b6001600055565b8161102857611028816114cf565b80158015906113a85750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d60208110156113a357600080fd5b505115155b1561143d576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261143d9084906114f9565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526114ca9084906114f9565b505050565b61057c817f42414c000000000000000000000000000000000000000000000000000000000061160f565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061156257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611525565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115c4576040519150601f19603f3d011682016040523d82523d6000602084013e6115c9565b606091505b509150915060008214156115e1573d6000803e3d6000fd5b610714815160001480611607575081806020019051602081101561160457600080fd5b50515b6101a26112eb565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116cb57805160ff19168380011785556116f8565b828001600101855582156116f8579182015b828111156116f85782518255916020019190600101906116dd565b50611704929150611708565b5090565b5b80821115611704576000815560010161170956fe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122032b577cafe255b968523d7e91f990f1a920451e7e6bc8cef6ae63ff4dd2e92bf64736f6c63430007010033",
+ "deployedBytecode": "0x6080604052600436106100f35760003560e01c806383f5c39b1161008a578063ab8f094511610059578063ab8f0945146103fa578063b02452251461040f578063c2c4c5c114610424578063d34fb2671461042c576100f3565b806383f5c39b146103315780638759e6d1146103465780639c868ac0146103d05780639f867671146103e5576100f3565b80632d8411af116100c65780632d8411af146101de5780634b820093146101f357806360b630c41461024757806381d609561461025c576100f3565b806309400707146100f857806310d3eb041461014a57806314e956f5146101765780631b88094d146101a0575b600080fd5b34801561010457600080fd5b506101386004803603602081101561011b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610441565b60408051918252519081900360200190f35b34801561015657600080fd5b506101746004803603602081101561016d57600080fd5b50356104cf565b005b34801561018257600080fd5b506101386004803603602081101561019957600080fd5b503561057f565b3480156101ac57600080fd5b506101b561064d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101ea57600080fd5b506101b561066a565b3480156101ff57600080fd5b506102336004803603602081101561021657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661068e565b604080519115158252519081900360200190f35b34801561025357600080fd5b506101b5610694565b34801561026857600080fd5b506101746004803603606081101561027f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156102bc57600080fd5b8201836020820111156102ce57600080fd5b803590602001918460018302840111640100000000831117156102f057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106b8945050505050565b34801561033d57600080fd5b5061013861071a565b34801561035257600080fd5b5061035b610720565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039557818101518382015260200161037d565b50505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103dc57600080fd5b506102336107cc565b3480156103f157600080fd5b506101386107d5565b34801561040657600080fd5b506101746107e1565b34801561041b57600080fd5b506101386108b2565b6102336108b7565b34801561043857600080fd5b50610174610ca4565b600073ffffffffffffffffffffffffffffffffffffffff821630146104c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461057357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61057c81610d72565b50565b60006106477f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561061357600080fd5b505afa158015610627573d6000803e3d6000fd5b505050506040513d602081101561063d57600080fd5b5051600654610e0e565b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff165b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106c182610e1a565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8516179055805161071490600790602084019061168a565b50505050565b60065490565b6007805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156107c45780601f10610799576101008083540402835291602001916107c4565b820191906000526020600020905b8154815290600101906020018083116107a757829003601f168201915b505050505081565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461088557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b60006108c161102c565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610972611045565b905080821015610c9657604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610ba95784811115610a6e57610ba9565b62093a808102600080610a808361057f565b9050828510158015610a9657508262093a800185105b15610b4f57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000890281610afa57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f00000000000000000000000000000000000000000000000000000000000000009098019704939093019250610b649050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610a56565b50600284905560048054830190558115801590610bc9575060055460ff16155b15610c9257604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610c5c57600080fd5b505af1158015610c70573d6000803e3d6000fd5b505050506040513d6020811015610c8657600080fd5b50610c92905082611070565b5050505b6001925050506106676112e4565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d4857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061171e6034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b60025415610e8957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ef157600080fd5b505afa158015610f05573d6000803e3d6000fd5b505050506040513d6020811015610f1b57600080fd5b5051905080610f75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806117526024913960400191505060405180910390fd5b6001819055610f82611045565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610ff057600080fd5b505af1158015611004573d6000803e3d6000fd5b505050506040513d602081101561101a57600080fd5b505160035561102882610d72565b5050565b61103e600260005414156101906112eb565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6110d173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836112f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663838b25207f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a0566e726040518163ffffffff1660e01b815260040160206040518083038186803b1580156111d957600080fd5b505afa1580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16815273ffffffffffffffffffffffffffffffffffffffff96871660048201529486166024860152929094166044840152606483015263ffffffff909216608482015260c060a4820152600260c48201527f307800000000000000000000000000000000000000000000000000000000000060e4820152905161010480830192600092919082900301818387803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b5050505050565b6001600055565b8161102857611028816114cf565b80158015906113a85750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d60208110156113a357600080fd5b505115155b1561143d576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261143d9084906114f9565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526114ca9084906114f9565b505050565b61057c817f42414c000000000000000000000000000000000000000000000000000000000061160f565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061156257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611525565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115c4576040519150601f19603f3d011682016040523d82523d6000602084013e6115c9565b606091505b509150915060008214156115e1573d6000803e3d6000fd5b610714815160001480611607575081806020019051602081101561160457600080fd5b50515b6101a26112eb565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116cb57805160ff19168380011785556116f8565b828001600101855582156116f8579182015b828111156116f85782518255916020019190600101906116dd565b50611704929150611708565b5090565b5b80821115611704576000815560010161170956fe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122032b577cafe255b968523d7e91f990f1a920451e7e6bc8cef6ae63ff4dd2e92bf64736f6c63430007010033",
+ "linkReferences": {},
+ "deployedLinkReferences": {}
+}
\ No newline at end of file
diff --git a/tasks/20240522-fraxtal-root-gauge-factory/artifact/OptimisticRootGaugeFactory.json b/tasks/20240522-fraxtal-root-gauge-factory/artifact/OptimisticRootGaugeFactory.json
new file mode 100644
index 00000000..fa275677
--- /dev/null
+++ b/tasks/20240522-fraxtal-root-gauge-factory/artifact/OptimisticRootGaugeFactory.json
@@ -0,0 +1,213 @@
+{
+ "_format": "hh-sol-artifact-1",
+ "contractName": "OptimisticRootGaugeFactory",
+ "sourceName": "contracts/gauges/optimistic/OptimisticRootGaugeFactory.sol",
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "contract IVault",
+ "name": "vault",
+ "type": "address"
+ },
+ {
+ "internalType": "contract IMainnetBalancerMinter",
+ "name": "minter",
+ "type": "address"
+ },
+ {
+ "internalType": "contract IL1StandardBridge",
+ "name": "optimismL1StandardBridge",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "optimismBal",
+ "type": "address"
+ },
+ {
+ "internalType": "uint32",
+ "name": "gasLimit",
+ "type": "uint32"
+ },
+ {
+ "internalType": "string",
+ "name": "targetNetwork",
+ "type": "string"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "gauge",
+ "type": "address"
+ }
+ ],
+ "name": "GaugeCreated",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "gasLimit",
+ "type": "uint256"
+ }
+ ],
+ "name": "OptimismGasLimitModified",
+ "type": "event"
+ },
+ {
+ "inputs": [],
+ "name": "NETWORK",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "relativeWeightCap",
+ "type": "uint256"
+ }
+ ],
+ "name": "create",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes4",
+ "name": "selector",
+ "type": "bytes4"
+ }
+ ],
+ "name": "getActionId",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "getAuthorizer",
+ "outputs": [
+ {
+ "internalType": "contract IAuthorizer",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "getGaugeImplementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "getOptimismGasLimit",
+ "outputs": [
+ {
+ "internalType": "uint32",
+ "name": "",
+ "type": "uint32"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "getVault",
+ "outputs": [
+ {
+ "internalType": "contract IVault",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "gauge",
+ "type": "address"
+ }
+ ],
+ "name": "isGaugeFromFactory",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint32",
+ "name": "gasLimit",
+ "type": "uint32"
+ }
+ ],
+ "name": "setOptimismGasLimit",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+ ],
+ "bytecode": "0x60c06040523480156200001157600080fd5b5060405162002a3e38038062002a3e833981016040819052620000349162000193565b85306001600160a01b031660001b8686866040516200005390620000e9565b6200006193929190620002cb565b604051809103906000f0801580156200007e573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905560805260601b6001600160601b03191660a0526003805463ffffffff191663ffffffff84161790558051620000dc906002906020840190620000f7565b5050505050505062000307565b611c528062000dec83390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013a57805160ff19168380011785556200016a565b828001600101855582156200016a579182015b828111156200016a5782518255916020019190600101906200014d565b50620001789291506200017c565b5090565b5b808211156200017857600081556001016200017d565b60008060008060008060c08789031215620001ac578182fd5b8651620001b981620002ee565b80965050602080880151620001ce81620002ee565b6040890151909650620001e181620002ee565b6060890151909550620001f481620002ee565b608089015190945063ffffffff811681146200020e578384fd5b60a08901519093506001600160401b03808211156200022b578384fd5b818a0191508a601f8301126200023f578384fd5b8151818111156200024e578485fd5b604051601f8201601f19168101850183811182821017156200026e578687fd5b60405281815283820185018d101562000285578586fd5b8592505b81831015620002a8578383018501518184018601529184019162000289565b81831115620002b957858583830101525b80955050505050509295509295509295565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b03811681146200030457600080fd5b50565b60805160a05160601c610abe6200032e600039806103215250806102275250610abe6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80638d928af811610076578063aaabadc51161005b578063aaabadc51461012b578063bf5fa77214610133578063ce3cc8bd14610148576100a3565b80638d928af81461010e578063a0566e7214610116576100a3565b80630ecaea73146100a857806339312dee146100d1578063851c1bb3146100d95780638759e6d1146100f9575b600080fd5b6100bb6100b6366004610778565b610168565b6040516100c89190610873565b60405180910390f35b6100bb610207565b6100ec6100e73660046107c3565b610223565b6040516100c8919061096c565b610101610276565b6040516100c891906109a1565b6100bb61031f565b61011e610343565b6040516100c89190610a49565b6100bb61034f565b61014661014136600461081f565b6103db565b005b61015b61015636600461075c565b61044e565b6040516100c89190610961565b600080610173610479565b6040517f81d6095600000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906381d60956906101cd9087908790600290600401610894565b600060405180830381600087803b1580156101e757600080fd5b505af11580156101fb573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610258929190610843565b6040516020818303038152906040528051906020012090505b919050565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f810184900484028201840190925281815292918301828280156103175780601f106102ec57610100808354040283529160200191610317565b820191906000526020600020905b8154815290600101906020018083116102fa57829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000090565b60035463ffffffff1690565b600061035961031f565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561039e57600080fd5b505afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190610803565b905090565b6103e361051f565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83161790556040517f7c1820748876489d9c02f32c788d21f7a0719b00e777eca80532dd5d77c481ce90610443908390610a49565b60405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60008054819061049e9073ffffffffffffffffffffffffffffffffffffffff16610568565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b600061054e6000357fffffffff0000000000000000000000000000000000000000000000000000000016610223565b905061056561055d823361061e565b6101916106bb565b50565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590610a12565b60405180910390fd5b600061062861034f565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161066493929190610975565b60206040518083038186803b15801561067c57600080fd5b505afa158015610690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b491906107a3565b9392505050565b816106c9576106c9816106cd565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610565917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b60006020828403121561076d578081fd5b81356106b481610a66565b6000806040838503121561078a578081fd5b823561079581610a66565b946020939093013593505050565b6000602082840312156107b4578081fd5b815180151581146106b4578182fd5b6000602082840312156107d4578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106b4578182fd5b600060208284031215610814578081fd5b81516106b481610a66565b600060208284031215610830578081fd5b813563ffffffff811681146106b4578182fd5b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60006060820173ffffffffffffffffffffffffffffffffffffffff8616835260208581850152606060408501528285546001808216600081146108de576001811461091a57610952565b607f600284041686527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316608089015260a088019350610952565b6002830480875261092a8a610a5a565b885b828110156109485781548b82016080015290840190870161092c565b8a01608001955050505b50919998505050505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6000602080835283518082850152825b818110156109cd578581018301518582016040015282016109b1565b818111156109de5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b63ffffffff91909116815260200190565b60009081526020902090565b73ffffffffffffffffffffffffffffffffffffffff8116811461056557600080fdfea2646970667358221220e24746db362b70ad2a4093f27f1f654d83f347aa4cef59e4a3502c26cc6bf27464736f6c634300070100336101e06040523480156200001257600080fd5b5060405162001c5238038062001c52833981810160405260608110156200003857600080fd5b50805160208083015160409384015160016000908155855163e6dec36f60e01b81529551949592949193869391926001600160a01b0385169263e6dec36f926004808301939192829003018186803b1580156200009457600080fd5b505afa158015620000a9573d6000803e3d6000fd5b505050506040513d6020811015620000c057600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d60208110156200013557600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017e57600080fd5b505afa15801562000193573d6000803e3d6000fd5b505050506040513d6020811015620001aa57600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021b57600080fd5b505afa15801562000230573d6000803e3d6000fd5b505050506040513d60208110156200024757600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029b57600080fd5b505afa158015620002b0573d6000803e3d6000fd5b505050506040513d6020811015620002c757600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d60208110156200033a57600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b505161016052505060001960025550506001600160601b0319606092831b81166101805290821b166101a05233901b6101c0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c6101c05160601c6117ab620004a760003980611175525080610696528061113052508061066c52806110ac52806110d3525080610ad2525080610ab1525080610a345280610b1e5250806104e752806107f952806108d95280610cbc52508061058652806109c2525080610c14525080610e8d5280610f8a52508061108a528061110f52506117ab6000f3fe6080604052600436106100f35760003560e01c806383f5c39b1161008a578063ab8f094511610059578063ab8f0945146103fa578063b02452251461040f578063c2c4c5c114610424578063d34fb2671461042c576100f3565b806383f5c39b146103315780638759e6d1146103465780639c868ac0146103d05780639f867671146103e5576100f3565b80632d8411af116100c65780632d8411af146101de5780634b820093146101f357806360b630c41461024757806381d609561461025c576100f3565b806309400707146100f857806310d3eb041461014a57806314e956f5146101765780631b88094d146101a0575b600080fd5b34801561010457600080fd5b506101386004803603602081101561011b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610441565b60408051918252519081900360200190f35b34801561015657600080fd5b506101746004803603602081101561016d57600080fd5b50356104cf565b005b34801561018257600080fd5b506101386004803603602081101561019957600080fd5b503561057f565b3480156101ac57600080fd5b506101b561064d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101ea57600080fd5b506101b561066a565b3480156101ff57600080fd5b506102336004803603602081101561021657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661068e565b604080519115158252519081900360200190f35b34801561025357600080fd5b506101b5610694565b34801561026857600080fd5b506101746004803603606081101561027f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156102bc57600080fd5b8201836020820111156102ce57600080fd5b803590602001918460018302840111640100000000831117156102f057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106b8945050505050565b34801561033d57600080fd5b5061013861071a565b34801561035257600080fd5b5061035b610720565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039557818101518382015260200161037d565b50505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103dc57600080fd5b506102336107cc565b3480156103f157600080fd5b506101386107d5565b34801561040657600080fd5b506101746107e1565b34801561041b57600080fd5b506101386108b2565b6102336108b7565b34801561043857600080fd5b50610174610ca4565b600073ffffffffffffffffffffffffffffffffffffffff821630146104c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461057357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61057c81610d72565b50565b60006106477f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561061357600080fd5b505afa158015610627573d6000803e3d6000fd5b505050506040513d602081101561063d57600080fd5b5051600654610e0e565b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff165b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106c182610e1a565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8516179055805161071490600790602084019061168a565b50505050565b60065490565b6007805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156107c45780601f10610799576101008083540402835291602001916107c4565b820191906000526020600020905b8154815290600101906020018083116107a757829003601f168201915b505050505081565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461088557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b60006108c161102c565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610972611045565b905080821015610c9657604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610ba95784811115610a6e57610ba9565b62093a808102600080610a808361057f565b9050828510158015610a9657508262093a800185105b15610b4f57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000890281610afa57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f00000000000000000000000000000000000000000000000000000000000000009098019704939093019250610b649050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610a56565b50600284905560048054830190558115801590610bc9575060055460ff16155b15610c9257604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610c5c57600080fd5b505af1158015610c70573d6000803e3d6000fd5b505050506040513d6020811015610c8657600080fd5b50610c92905082611070565b5050505b6001925050506106676112e4565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d4857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061171e6034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b60025415610e8957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ef157600080fd5b505afa158015610f05573d6000803e3d6000fd5b505050506040513d6020811015610f1b57600080fd5b5051905080610f75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806117526024913960400191505060405180910390fd5b6001819055610f82611045565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610ff057600080fd5b505af1158015611004573d6000803e3d6000fd5b505050506040513d602081101561101a57600080fd5b505160035561102882610d72565b5050565b61103e600260005414156101906112eb565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6110d173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836112f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663838b25207f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a0566e726040518163ffffffff1660e01b815260040160206040518083038186803b1580156111d957600080fd5b505afa1580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16815273ffffffffffffffffffffffffffffffffffffffff96871660048201529486166024860152929094166044840152606483015263ffffffff909216608482015260c060a4820152600260c48201527f307800000000000000000000000000000000000000000000000000000000000060e4820152905161010480830192600092919082900301818387803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b5050505050565b6001600055565b8161102857611028816114cf565b80158015906113a85750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d60208110156113a357600080fd5b505115155b1561143d576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261143d9084906114f9565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526114ca9084906114f9565b505050565b61057c817f42414c000000000000000000000000000000000000000000000000000000000061160f565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061156257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611525565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115c4576040519150601f19603f3d011682016040523d82523d6000602084013e6115c9565b606091505b509150915060008214156115e1573d6000803e3d6000fd5b610714815160001480611607575081806020019051602081101561160457600080fd5b50515b6101a26112eb565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116cb57805160ff19168380011785556116f8565b828001600101855582156116f8579182015b828111156116f85782518255916020019190600101906116dd565b50611704929150611708565b5090565b5b80821115611704576000815560010161170956fe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122032b577cafe255b968523d7e91f990f1a920451e7e6bc8cef6ae63ff4dd2e92bf64736f6c63430007010033",
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c80638d928af811610076578063aaabadc51161005b578063aaabadc51461012b578063bf5fa77214610133578063ce3cc8bd14610148576100a3565b80638d928af81461010e578063a0566e7214610116576100a3565b80630ecaea73146100a857806339312dee146100d1578063851c1bb3146100d95780638759e6d1146100f9575b600080fd5b6100bb6100b6366004610778565b610168565b6040516100c89190610873565b60405180910390f35b6100bb610207565b6100ec6100e73660046107c3565b610223565b6040516100c8919061096c565b610101610276565b6040516100c891906109a1565b6100bb61031f565b61011e610343565b6040516100c89190610a49565b6100bb61034f565b61014661014136600461081f565b6103db565b005b61015b61015636600461075c565b61044e565b6040516100c89190610961565b600080610173610479565b6040517f81d6095600000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906381d60956906101cd9087908790600290600401610894565b600060405180830381600087803b1580156101e757600080fd5b505af11580156101fb573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610258929190610843565b6040516020818303038152906040528051906020012090505b919050565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f810184900484028201840190925281815292918301828280156103175780601f106102ec57610100808354040283529160200191610317565b820191906000526020600020905b8154815290600101906020018083116102fa57829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000090565b60035463ffffffff1690565b600061035961031f565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561039e57600080fd5b505afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190610803565b905090565b6103e361051f565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83161790556040517f7c1820748876489d9c02f32c788d21f7a0719b00e777eca80532dd5d77c481ce90610443908390610a49565b60405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60008054819061049e9073ffffffffffffffffffffffffffffffffffffffff16610568565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b600061054e6000357fffffffff0000000000000000000000000000000000000000000000000000000016610223565b905061056561055d823361061e565b6101916106bb565b50565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590610a12565b60405180910390fd5b600061062861034f565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161066493929190610975565b60206040518083038186803b15801561067c57600080fd5b505afa158015610690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b491906107a3565b9392505050565b816106c9576106c9816106cd565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610565917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b60006020828403121561076d578081fd5b81356106b481610a66565b6000806040838503121561078a578081fd5b823561079581610a66565b946020939093013593505050565b6000602082840312156107b4578081fd5b815180151581146106b4578182fd5b6000602082840312156107d4578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106b4578182fd5b600060208284031215610814578081fd5b81516106b481610a66565b600060208284031215610830578081fd5b813563ffffffff811681146106b4578182fd5b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60006060820173ffffffffffffffffffffffffffffffffffffffff8616835260208581850152606060408501528285546001808216600081146108de576001811461091a57610952565b607f600284041686527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316608089015260a088019350610952565b6002830480875261092a8a610a5a565b885b828110156109485781548b82016080015290840190870161092c565b8a01608001955050505b50919998505050505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6000602080835283518082850152825b818110156109cd578581018301518582016040015282016109b1565b818111156109de5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b63ffffffff91909116815260200190565b60009081526020902090565b73ffffffffffffffffffffffffffffffffffffffff8116811461056557600080fdfea2646970667358221220e24746db362b70ad2a4093f27f1f654d83f347aa4cef59e4a3502c26cc6bf27464736f6c63430007010033",
+ "linkReferences": {},
+ "deployedLinkReferences": {}
+}
\ No newline at end of file
diff --git a/tasks/20240522-fraxtal-root-gauge-factory/build-info/OptimisticRootGauge.json b/tasks/20240522-fraxtal-root-gauge-factory/build-info/OptimisticRootGauge.json
new file mode 100644
index 00000000..06e4e21f
--- /dev/null
+++ b/tasks/20240522-fraxtal-root-gauge-factory/build-info/OptimisticRootGauge.json
@@ -0,0 +1 @@
+{"id":"b7f90c9feeff18c98ec0aa73c9bf16d4","_format":"hh-sol-build-info-1","solcVersion":"0.7.1","solcLongVersion":"0.7.1+commit.f4a555be","input":{"language":"Solidity","sources":{"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IArbitrumFeeProvider {\n function getArbitrumFees()\n external\n view\n returns (\n uint256 gasLimit,\n uint256 gasPrice,\n uint256 maxSubmissionCost\n );\n\n function setArbitrumFees(\n uint64 gasLimit,\n uint64 gasPrice,\n uint64 maxSubmissionCost\n ) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\nimport \"../vault/IVault.sol\";\n\ninterface IAuthorizerAdaptor is IAuthentication {\n /**\n * @notice Returns the Balancer Vault\n */\n function getVault() external view returns (IVault);\n\n /**\n * @notice Returns the Authorizer\n */\n function getAuthorizer() external view returns (IAuthorizer);\n\n /**\n * @notice Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\n * @param target - Address of the contract to be called\n * @param data - Calldata to be sent to the target contract\n * @return The bytes encoded return value from the performed function call\n */\n function performAction(address target, bytes calldata data) external payable returns (bytes memory);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"./IAuthorizerAdaptor.sol\";\n\n/**\n * @notice Interface for `AuthorizerAdaptorEntrypoint`.\n */\ninterface IAuthorizerAdaptorEntrypoint is IAuthorizerAdaptor {\n /**\n * @notice Returns the Authorizer Adaptor\n */\n function getAuthorizerAdaptor() external view returns (IAuthorizerAdaptor);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n/**\n * @dev Base minter interface, applicable to Mainnet minter or L2 pseudo minters.\n */\ninterface IBalancerMinter {\n event Minted(address indexed recipient, address gauge, uint256 minted);\n\n /**\n * @notice Returns the address of the Balancer Governance Token\n */\n function getBalancerToken() external view returns (IERC20);\n\n /**\n * @notice Mint everything which belongs to `msg.sender` and send to them\n * @param gauge `LiquidityGauge` address to get mintable amount from\n */\n function mint(address gauge) external returns (uint256);\n\n /**\n * @notice Mint everything which belongs to `msg.sender` across multiple gauges\n * @param gauges List of `LiquidityGauge` addresses\n */\n function mintMany(address[] calldata gauges) external returns (uint256);\n\n /**\n * @notice Mint tokens for `user`\n * @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n * @param gauge `LiquidityGauge` address to get mintable amount from\n * @param user Address to mint to\n */\n function mintFor(address gauge, address user) external returns (uint256);\n\n /**\n * @notice Mint tokens for `user` across multiple gauges\n * @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n * @param gauges List of `LiquidityGauge` addresses\n * @param user Address to mint to\n */\n function mintManyFor(address[] calldata gauges, address user) external returns (uint256);\n\n /**\n * @notice The total number of tokens minted for `user` from `gauge`\n */\n function minted(address user, address gauge) external view returns (uint256);\n\n /**\n * @notice Whether `minter` is approved to mint tokens for `user`\n */\n function getMinterApproval(address minter, address user) external view returns (bool);\n\n /**\n * @notice Set whether `minter` is approved to mint tokens on your behalf\n */\n function setMinterApproval(address minter, bool approval) external;\n\n /**\n * @notice Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing\n * them.\n */\n function setMinterApprovalWithSignature(\n address minter,\n bool approval,\n address user,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n // The below functions are near-duplicates of functions available above.\n // They are included for ABI compatibility with snake_casing as used in vyper contracts.\n // solhint-disable func-name-mixedcase\n\n /**\n * @notice Whether `minter` is approved to mint tokens for `user`\n */\n function allowed_to_mint_for(address minter, address user) external view returns (bool);\n\n /**\n * @notice Mint everything which belongs to `msg.sender` across multiple gauges\n * @dev This function is not recommended as `mintMany()` is more flexible and gas efficient\n * @param gauges List of `LiquidityGauge` addresses\n */\n function mint_many(address[8] calldata gauges) external;\n\n /**\n * @notice Mint tokens for `user`\n * @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n * @param gauge `LiquidityGauge` address to get mintable amount from\n * @param user Address to mint to\n */\n function mint_for(address gauge, address user) external;\n\n /**\n * @notice Toggle whether `minter` is approved to mint tokens for `user`\n */\n function toggle_approve_mint(address minter) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IBalancerToken is IERC20 {\n function mint(address to, uint256 amount) external;\n\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\n\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\n\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n function grantRole(bytes32 role, address account) external;\n\n function revokeRole(bytes32 role, address account) external;\n\n // solhint-disable-next-line func-name-mixedcase\n function DEFAULT_ADMIN_ROLE() external view returns (bytes32);\n\n // solhint-disable-next-line func-name-mixedcase\n function MINTER_ROLE() external view returns (bytes32);\n\n // solhint-disable-next-line func-name-mixedcase\n function SNAPSHOT_ROLE() external view returns (bytes32);\n\n function snapshot() external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\n\nimport \"./IBalancerToken.sol\";\n\ninterface IBalancerTokenAdmin is IAuthentication {\n // solhint-disable func-name-mixedcase\n function INITIAL_RATE() external view returns (uint256);\n\n function RATE_REDUCTION_TIME() external view returns (uint256);\n\n function RATE_REDUCTION_COEFFICIENT() external view returns (uint256);\n\n function RATE_DENOMINATOR() external view returns (uint256);\n\n // solhint-enable func-name-mixedcase\n\n /**\n * @notice Returns the address of the Balancer Governance Token\n */\n function getBalancerToken() external view returns (IBalancerToken);\n\n function activate() external;\n\n function rate() external view returns (uint256);\n\n function startEpochTimeWrite() external returns (uint256);\n\n function mint(address to, uint256 amount) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/helpers/IVersion.sol\";\nimport \"./ILiquidityGaugeFactory.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n// solhint-disable func-param-name-mixedcase\n\ninterface IChildChainGauge is IVersion {\n /**\n * @notice Proxy constructor.\n * @param lpToken Pool allowed to stake in this gauge.\n * @param version Gauge version string identifier.\n */\n function initialize(address lpToken, string memory version) external;\n\n /**\n * @notice Returns BAL liquidity emissions calculated during checkpoints for the given user.\n * @param user User address.\n * @return uint256 BAL amount to issue for the address.\n */\n function integrate_fraction(address user) external view returns (uint256);\n\n /**\n * @notice Records a checkpoint for a given user.\n * @param user User address.\n * @return bool Always true.\n */\n function user_checkpoint(address user) external returns (bool);\n\n /**\n * @notice Returns gauge factory address.\n */\n function factory() external view returns (ILiquidityGaugeFactory);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IChildChainStreamer.sol\";\nimport \"./ILiquidityGauge.sol\";\nimport \"./ILiquidityGaugeFactory.sol\";\nimport \"./IRewardsOnlyGauge.sol\";\n\ninterface IChildChainLiquidityGaugeFactory is ILiquidityGaugeFactory {\n event RewardsOnlyGaugeCreated(address indexed gauge, address indexed pool, address streamer);\n\n /**\n * @notice Returns the address of the implementation used for gauge deployments.\n */\n function getGaugeImplementation() external view returns (ILiquidityGauge);\n\n /**\n * @notice Returns the address of the implementation used for streamer deployments.\n */\n function getChildChainStreamerImplementation() external view returns (IChildChainStreamer);\n\n /**\n * @notice Returns the address of the gauge belonging to `pool`.\n */\n function getPoolGauge(address pool) external view returns (ILiquidityGauge);\n\n /**\n * @notice Returns the address of the streamer belonging to `gauge`.\n */\n function getGaugeStreamer(address gauge) external view returns (address);\n\n /**\n * @notice Returns true if `streamer` was created by this factory.\n */\n function isStreamerFromFactory(address streamer) external view returns (bool);\n\n /**\n * @notice Returns the address of the pool which `gauge` belongs.\n */\n function getGaugePool(address gauge) external view returns (IERC20);\n\n /**\n * @notice Returns the address of the streamer belonging to `pool`'s gauge.\n */\n function getPoolStreamer(address pool) external view returns (address);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ninterface IChildChainStreamer {\n function initialize(address gauge) external;\n\n function get_reward() external;\n\n function reward_tokens(uint256 index) external view returns (IERC20);\n\n function add_reward(\n IERC20 rewardToken,\n address distributor,\n uint256 duration\n ) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IVotingEscrow.sol\";\n\n/**\n * @title Fee Distributor\n * @notice Distributes any tokens transferred to the contract (e.g. Protocol fees and any BAL emissions) among veBAL\n * holders proportionally based on a snapshot of the week at which the tokens are sent to the FeeDistributor contract.\n * @dev Supports distributing arbitrarily many different tokens. In order to start distributing a new token to veBAL\n * holders simply transfer the tokens to the `FeeDistributor` contract and then call `checkpointToken`.\n */\ninterface IFeeDistributor {\n event TokenCheckpointed(IERC20 token, uint256 amount, uint256 lastCheckpointTimestamp);\n event TokensClaimed(address user, IERC20 token, uint256 amount, uint256 userTokenTimeCursor);\n\n /**\n * @notice Returns the VotingEscrow (veBAL) token contract\n */\n function getVotingEscrow() external view returns (IVotingEscrow);\n\n /**\n * @notice Returns the global time cursor representing the most earliest uncheckpointed week.\n */\n function getTimeCursor() external view returns (uint256);\n\n /**\n * @notice Returns the user-level time cursor representing the most earliest uncheckpointed week.\n * @param user - The address of the user to query.\n */\n function getUserTimeCursor(address user) external view returns (uint256);\n\n /**\n * @notice Returns the token-level time cursor storing the timestamp at up to which tokens have been distributed.\n * @param token - The ERC20 token address to query.\n */\n function getTokenTimeCursor(IERC20 token) external view returns (uint256);\n\n /**\n * @notice Returns the user-level time cursor storing the timestamp of the latest token distribution claimed.\n * @param user - The address of the user to query.\n * @param token - The ERC20 token address to query.\n */\n function getUserTokenTimeCursor(address user, IERC20 token) external view returns (uint256);\n\n /**\n * @notice Returns the user's cached balance of veBAL as of the provided timestamp.\n * @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n * This function requires `user` to have been checkpointed past `timestamp` so that their balance is cached.\n * @param user - The address of the user of which to read the cached balance of.\n * @param timestamp - The timestamp at which to read the `user`'s cached balance at.\n */\n function getUserBalanceAtTimestamp(address user, uint256 timestamp) external view returns (uint256);\n\n /**\n * @notice Returns the cached total supply of veBAL as of the provided timestamp.\n * @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n * This function requires the contract to have been checkpointed past `timestamp` so that the supply is cached.\n * @param timestamp - The timestamp at which to read the cached total supply at.\n */\n function getTotalSupplyAtTimestamp(uint256 timestamp) external view returns (uint256);\n\n /**\n * @notice Returns the FeeDistributor's cached balance of `token`.\n */\n function getTokenLastBalance(IERC20 token) external view returns (uint256);\n\n /**\n * @notice Returns the amount of `token` which the FeeDistributor received in the week beginning at `timestamp`.\n * @param token - The ERC20 token address to query.\n * @param timestamp - The timestamp corresponding to the beginning of the week of interest.\n */\n function getTokensDistributedInWeek(IERC20 token, uint256 timestamp) external view returns (uint256);\n\n // Depositing\n\n /**\n * @notice Deposits tokens to be distributed in the current week.\n * @dev Sending tokens directly to the FeeDistributor instead of using `depositTokens` may result in tokens being\n * retroactively distributed to past weeks, or for the distribution to carry over to future weeks.\n *\n * If for some reason `depositTokens` cannot be called, in order to ensure that all tokens are correctly distributed\n * manually call `checkpointToken` before and after the token transfer.\n * @param token - The ERC20 token address to distribute.\n * @param amount - The amount of tokens to deposit.\n */\n function depositToken(IERC20 token, uint256 amount) external;\n\n /**\n * @notice Deposits tokens to be distributed in the current week.\n * @dev A version of `depositToken` which supports depositing multiple `tokens` at once.\n * See `depositToken` for more details.\n * @param tokens - An array of ERC20 token addresses to distribute.\n * @param amounts - An array of token amounts to deposit.\n */\n function depositTokens(IERC20[] calldata tokens, uint256[] calldata amounts) external;\n\n // Checkpointing\n\n /**\n * @notice Caches the total supply of veBAL at the beginning of each week.\n * This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n */\n function checkpoint() external;\n\n /**\n * @notice Caches the user's balance of veBAL at the beginning of each week.\n * This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n * @param user - The address of the user to be checkpointed.\n */\n function checkpointUser(address user) external;\n\n /**\n * @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n * @dev Any `token` balance held by the FeeDistributor above that which is returned by `getTokenLastBalance`\n * will be distributed evenly across the time period since `token` was last checkpointed.\n *\n * This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n * @param token - The ERC20 token address to be checkpointed.\n */\n function checkpointToken(IERC20 token) external;\n\n /**\n * @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n * @dev A version of `checkpointToken` which supports checkpointing multiple tokens.\n * See `checkpointToken` for more details.\n * @param tokens - An array of ERC20 token addresses to be checkpointed.\n */\n function checkpointTokens(IERC20[] calldata tokens) external;\n\n // Claiming\n\n /**\n * @notice Claims all pending distributions of the provided token for a user.\n * @dev It's not necessary to explicitly checkpoint before calling this function, it will ensure the FeeDistributor\n * is up to date before calculating the amount of tokens to be claimed.\n * @param user - The user on behalf of which to claim.\n * @param token - The ERC20 token address to be claimed.\n * @return The amount of `token` sent to `user` as a result of claiming.\n */\n function claimToken(address user, IERC20 token) external returns (uint256);\n\n /**\n * @notice Claims a number of tokens on behalf of a user.\n * @dev A version of `claimToken` which supports claiming multiple `tokens` on behalf of `user`.\n * See `claimToken` for more details.\n * @param user - The user on behalf of which to claim.\n * @param tokens - An array of ERC20 token addresses to be claimed.\n * @return An array of the amounts of each token in `tokens` sent to `user` as a result of claiming.\n */\n function claimTokens(address user, IERC20[] calldata tokens) external returns (uint256[] memory);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IAuthorizerAdaptorEntrypoint.sol\";\nimport \"./IGaugeController.sol\";\nimport \"./ILiquidityGauge.sol\";\nimport \"./ILiquidityGaugeFactory.sol\";\nimport \"./IStakingLiquidityGauge.sol\";\n\ninterface IGaugeAdder is IAuthentication {\n // Deprecated. TODO: remove from interfaces, and remove references.\n enum GaugeType { LiquidityMiningCommittee, veBAL, Ethereum, Polygon, Arbitrum, Optimism, Gnosis, ZKSync }\n\n // String values are hashed when indexed, so we also emit the raw string as a data field for ease of use.\n event GaugeTypeAdded(string indexed indexedGaugeType, string gaugeType);\n event GaugeFactorySet(string indexed indexedGaugeType, string gaugeType, ILiquidityGaugeFactory gaugeFactory);\n\n /**\n * @notice Returns the address of the Authorizer adaptor entrypoint contract.\n */\n function getAuthorizerAdaptorEntrypoint() external view returns (IAuthorizerAdaptorEntrypoint);\n\n /**\n * @notice Returns the address of the Gauge Controller\n */\n function getGaugeController() external view returns (IGaugeController);\n\n /**\n * @notice Returns the list of gauge types.\n */\n function getGaugeTypes() external view returns (string[] memory);\n\n /**\n * @notice Returns gauge type name registered at the given index.\n */\n function getGaugeTypeAtIndex(uint256 index) external view returns (string memory);\n\n /**\n * @notice Returns the number of gauge types.\n */\n function getGaugeTypesCount() external view returns (uint256);\n\n /**\n * @notice Returns true if the given gauge type is valid; false otherwise.\n */\n function isValidGaugeType(string memory gaugeType) external view returns (bool);\n\n /**\n * @notice Returns the factory for gauge type `gaugeType`.\n */\n function getFactoryForGaugeType(string memory gaugeType) external view returns (ILiquidityGaugeFactory);\n\n /**\n * @notice Returns true if `gauge` has been deployed by the factory for the gauge type `gaugeType`.\n * Note that if a gauge type's factory changes then this function will start returning false for previously\n * valid gauges.\n */\n function isGaugeFromValidFactory(address gauge, string memory gaugeType) external view returns (bool);\n\n /**\n * @notice Adds a new `gaugeType` corresponding to a new network, which allows setting a factory and adding gauges\n * for the type later on.\n * @param gaugeType Name of the new gauge type.\n */\n function addGaugeType(string memory gaugeType) external;\n\n /**\n * @notice Adds a new gauge to the GaugeController for the given `gaugeType` type.\n * @dev When adding gauges for L2 networks or sidechains, this must be called with the address of the *root* gauge\n * which is deployed on Ethereum. It should *not* be called with the address of the child gauge which is deployed on\n * the L2 / sidechain.\n *\n * If the gauge added is an Ethereum gauge, it cannot be a gauge for the 80BAL-20WETH pool.\n */\n function addGauge(address gauge, string memory gaugeType) external;\n\n /**\n * @notice Sets `factory` as the allowlisted factory contract for gauges with type `gaugeType`.\n * @dev This function can either set a new factory or replace an existing one.\n */\n function setGaugeFactory(ILiquidityGaugeFactory factory, string memory gaugeType) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IAuthorizerAdaptor.sol\";\nimport \"./IVotingEscrow.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ninterface IGaugeController {\n function checkpoint_gauge(address gauge) external;\n\n function gauge_relative_weight(address gauge, uint256 time) external view returns (uint256);\n\n function voting_escrow() external view returns (IVotingEscrow);\n\n function token() external view returns (IERC20);\n\n function add_type(string calldata name, uint256 weight) external;\n\n function change_type_weight(int128 typeId, uint256 weight) external;\n\n function add_gauge(address gauge, int128 gaugeType) external;\n\n function n_gauge_types() external view returns (int128);\n\n function gauge_types(address gauge) external view returns (int128);\n\n function admin() external view returns (IAuthorizerAdaptor);\n\n function gauge_exists(address gauge) external view returns (bool);\n\n function time_weight(address gauge) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @notice Standard token bridging interface, common to Optimism and Base networks.\n */\ninterface IL1StandardBridge {\n function depositERC20To(\n address _l1Token,\n address _l2Token,\n address _to,\n uint256 _amount,\n uint32 _l2Gas,\n bytes calldata _data\n ) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @notice Minimal hook interface to be called whenever the veBAL balance of a user is updated in a L2 chain.\n */\ninterface IL2LayerZeroDelegation {\n /**\n * @notice Called whenever the veBAL balance of a user is updated in a L2 chain.\n * @param user The user whose veBAL balance was updated.\n */\n function onVeBalBridged(address user) external;\n\n /**\n * @notice Called whenever the total veBAL supply is updated in a L2 chain.\n */\n function onVeBalSupplyUpdate() external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n// solhint-disable func-param-name-mixedcase\n\ninterface ILiquidityGauge {\n // solhint-disable-next-line var-name-mixedcase\n event RelativeWeightCapChanged(uint256 new_relative_weight_cap);\n\n /**\n * @notice Returns BAL liquidity emissions calculated during checkpoints for the given user.\n * @param user User address.\n * @return uint256 BAL amount to issue for the address.\n */\n function integrate_fraction(address user) external view returns (uint256);\n\n /**\n * @notice Record a checkpoint for a given user.\n * @param user User address.\n * @return bool Always true.\n */\n function user_checkpoint(address user) external returns (bool);\n\n /**\n * @notice Returns true if gauge is killed; false otherwise.\n */\n function is_killed() external view returns (bool);\n\n /**\n * @notice Kills the gauge so it cannot mint BAL.\n */\n function killGauge() external;\n\n /**\n * @notice Unkills the gauge so it can mint BAL again.\n */\n function unkillGauge() external;\n\n /**\n * @notice Sets a new relative weight cap for the gauge.\n * The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\n * @param relativeWeightCap New relative weight cap.\n */\n function setRelativeWeightCap(uint256 relativeWeightCap) external;\n\n /**\n * @notice Gets the relative weight cap for the gauge.\n */\n function getRelativeWeightCap() external view returns (uint256);\n\n /**\n * @notice Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\n * @param time Timestamp in the past or present.\n */\n function getCappedRelativeWeight(uint256 time) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"./ILiquidityGauge.sol\";\n\ninterface ILiquidityGaugeFactory {\n /**\n * @notice Returns true if `gauge` was created by this factory.\n */\n function isGaugeFromFactory(address gauge) external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"./IBalancerTokenAdmin.sol\";\nimport \"./IGaugeController.sol\";\n\ninterface ILMGetters {\n /**\n * @notice Returns the address of the Balancer Token Admin contract\n */\n function getBalancerTokenAdmin() external view returns (IBalancerTokenAdmin);\n\n /**\n * @notice Returns the address of the Gauge Controller\n */\n function getGaugeController() external view returns (IGaugeController);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"./IBalancerMinter.sol\";\nimport \"./ILMGetters.sol\";\n\n/**\n * @dev Full L1 Balancer minter interface with singleton getters.\n */\ninterface IMainnetBalancerMinter is IBalancerMinter, ILMGetters {\n // solhint-disable-previous-line no-empty-blocks\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Partial voting escrow bridge interface.\n * See https://github.com/LayerZero-Labs/lz_gauges/blob/main/contracts/OmniVotingEscrow.sol for reference.\n */\ninterface IOmniVotingEscrow {\n function estimateSendUserBalance(\n uint16 _dstChainId,\n bool _useZro,\n bytes calldata _adapterParams\n ) external view returns (uint256 nativeFee, uint256 zroFee);\n\n function sendUserBalance(\n address _user,\n uint16 _dstChainId,\n address payable _refundAddress,\n address _zroPaymentAddress,\n bytes memory _adapterParams\n ) external payable;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface for `OmniVotingEscrowAdaptor`.\n */\ninterface IOmniVotingEscrowAdaptor {\n /**\n * @notice Forwards `estimateSendUserBalance` call to omni voting escrow.\n * @dev Reverts if `OmniVotingEscrow` is not set.\n * @param _dstChainId - Destination chain ID.\n * @return nativeFee - Native fee reported by the omni voting escrow.\n * @return zroFee - Layer zero fee reported by the omni voting escrow.\n */\n function estimateSendUserBalance(uint16 _dstChainId) external view returns (uint256 nativeFee, uint256 zroFee);\n\n /**\n * @notice Forwards `sendUserBalance` call to omni voting escrow.\n * @dev Reverts if `OmniVotingEscrow` is not set.\n * @param _user - User to bridge the balance from.\n * @param _dstChainId - Destination chain ID.\n * @param _refundAddress - Address where to return excess ETH.\n */\n function sendUserBalance(\n address _user,\n uint16 _dstChainId,\n address payable _refundAddress\n ) external payable;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"./IOmniVotingEscrow.sol\";\n\n/**\n * @dev Interface for `OmniVotingEscrowAdaptor` settings.\n */\ninterface IOmniVotingEscrowAdaptorSettings {\n event OmniVotingEscrowUpdated(IOmniVotingEscrow indexed newOmniVotingEscrow);\n event UseZeroUpdated(bool newUseZero);\n event AdapterParamsUpdated(bytes newAdapterParams);\n event ZeroPaymentAddressUpdated(address indexed newZeroPaymentAddress);\n\n /**\n * @notice Returns Omni Voting Escrow contract address, which is the gateway to bridge veBAL balances to L2s.\n */\n function getOmniVotingEscrow() external view returns (IOmniVotingEscrow);\n\n /**\n * @notice Returns `_useZro` parameter used in `estimateSendUserBalance`.\n */\n function getUseZero() external view returns (bool);\n\n /**\n * @notice Returns `_adapterParams` parameter used in `estimateSendUserBalance` and `sendUserBalance`.\n */\n function getAdapterParams() external view returns (bytes memory);\n\n /**\n * @notice Returns `_zroPaymentAddress` parameter used in `sendUserBalance`.\n */\n function getZeroPaymentAddress() external view returns (address);\n\n /**\n * @notice Sets omni voting escrow address.\n * @dev This step is required before creating any remapping in the `VotingEscrowRemapper`.\n * Omni voting escrow is not set in the constructor to avoid circular dependencies.\n * Emits `OmniVotingEscrowUpdated` event.\n * @param omniVotingEscrow - Address of the omni voting escrow contract.\n */\n function setOmniVotingEscrow(IOmniVotingEscrow omniVotingEscrow) external;\n\n /**\n * @notice Sets `_useZro` parameter for `estimateSendUserBalance` when forwarding calls.\n * @dev Emits `UseZeroUpdated` event.\n */\n function setUseZero(bool useZro) external;\n\n /**\n * @notice Sets `_adapterParams` parameter for `estimateSendUserBalance` and `sendUserBalance` when forwarding\n * calls.\n * @dev Emits `AdapterParamsUpdated` event.\n */\n function setAdapterParams(bytes memory adapterParams) external;\n\n /**\n * @notice Sets `_zroPaymentAddress` parameter for `sendUserBalance` when forwarding calls.\n * @dev Emits `ZeroPaymentAddressUpdated` event.\n */\n function setZeroPaymentAddress(address paymentAddress) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IOptimismGasLimitProvider {\n function getOptimismGasLimit() external view returns (uint32 gasLimit);\n\n function setOptimismGasLimit(uint32 gasLimit) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"./IChildChainStreamer.sol\";\nimport \"./IRewardTokenDistributor.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ninterface IRewardsOnlyGauge is IRewardTokenDistributor {\n function initialize(\n address pool,\n address streamer,\n bytes32 claimSignature\n ) external;\n\n // solhint-disable-next-line func-name-mixedcase\n function lp_token() external view returns (IERC20);\n\n function reward_contract() external view returns (IChildChainStreamer);\n\n function set_rewards(\n address childChainStreamer,\n bytes32 claimSig,\n address[8] calldata rewardTokens\n ) external;\n\n function last_claim() external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase, var-name-mixedcase\n\ninterface IRewardTokenDistributor {\n struct Reward {\n IERC20 token;\n address distributor;\n uint256 period_finish;\n uint256 rate;\n uint256 last_update;\n uint256 integral;\n }\n\n function reward_tokens(uint256 index) external view returns (IERC20);\n\n function reward_data(IERC20 token) external view returns (Reward memory);\n\n function claim_rewards(address user) external;\n\n function add_reward(IERC20 rewardToken, address distributor) external;\n\n function set_reward_distributor(IERC20 rewardToken, address distributor) external;\n\n function deposit_reward_token(IERC20 rewardToken, uint256 amount) external;\n\n function claimable_reward(address rewardToken, address user) external view returns (uint256);\n\n function claimable_reward_write(address rewardToken, address user) external returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface ISmartWalletChecker {\n function check(address contractAddress) external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"./ILiquidityGauge.sol\";\n\ninterface IStakelessGauge is ILiquidityGauge {\n /// @dev Performs a checkpoint, computing how much should be minted for the gauge.\n function checkpoint() external payable returns (bool);\n\n /// @dev Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\n function getRecipient() external view returns (address);\n\n /**\n * @dev Returns total ETH bridge cost (post mint action) in wei.\n * Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH\n * to work; in those cases the cost will be 0.\n */\n function getTotalBridgeCost() external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IGaugeAdder.sol\";\nimport \"./IStakelessGauge.sol\";\n\n/**\n * @title Stakeless Gauge Checkpointer interface\n * @notice Manages checkpoints for L2 and mainnet stakeless root gauges, allowing to perform mutiple checkpoints in a\n * single call.\n * @dev Supports gauge types registered in `GaugeAdder`.\n * Gauges to be checkpointed need to be added to the controller beforehand.\n */\ninterface IStakelessGaugeCheckpointer {\n // String values are hashed when indexed, so we also emit the raw string as a data field for ease of use.\n /**\n * @notice Emitted when a gauge is added to the checkpointer.\n */\n event GaugeAdded(IStakelessGauge indexed gauge, string indexed indexedGaugeType, string gaugeType);\n\n /**\n * @notice Emitted when a gauge is removed from the checkpointer.\n */\n event GaugeRemoved(IStakelessGauge indexed gauge, string indexed indexedGaugeType, string gaugeType);\n\n /**\n * @notice Returns `GaugeAdder` contract.\n */\n function getGaugeAdder() external view returns (IGaugeAdder);\n\n /**\n * @notice Returns gauge types available in the checkpointer.\n */\n function getGaugeTypes() external view returns (string[] memory);\n\n /**\n * @notice Adds an array of gauges from the given type. This is a permissioned function.\n * @dev Gauges added will be considered when performing checkpoints.\n * The gauges to add should meet the following preconditions:\n * - They must exist in the GaugeController, according to GaugeController#gauge_exists.\n * - They must not be killed.\n * - They must not have been previously added to the checkpointer.\n * Unlike `addGauges`, this function can add gauges that were created by factories registered in a deprecated\n * `GaugeAdder`, and therefore cannot be validated by the current `GaugeAdder`.\n * @param gaugeType Type of the gauge.\n * @param gauges Gauges to add.\n */\n function addGaugesWithVerifiedType(string memory gaugeType, IStakelessGauge[] calldata gauges) external;\n\n /**\n * @notice Adds an array of gauges from the given type.\n * @dev Gauges added will be considered when performing checkpoints.\n * The gauges to add should meet the following preconditions:\n * - They must have been created in a valid `GaugeFactory`, according to `GaugeAdder#isGaugeFromValidFactory`.\n * - They must exist in the `GaugeController`, according to `GaugeController#gauge_exists`.\n * - They must not be killed.\n * - They must not have been previously added to the checkpointer.\n * @param gaugeType Type of the gauge.\n * @param gauges Gauges to add.\n */\n function addGauges(string memory gaugeType, IStakelessGauge[] calldata gauges) external;\n\n /**\n * @notice Removes an array of gauges from the given type.\n * @dev Removed gauges will not be considered when performing checkpoints. To remove gauges:\n * - They must be killed.\n * - They must have been previously added to the checkpointer.\n * @param gaugeType Type of the gauge.\n * @param gauges Gauges to remove.\n */\n function removeGauges(string memory gaugeType, IStakelessGauge[] calldata gauges) external;\n\n /**\n * @notice Returns true if the given gauge was added for the given type; false otherwise.\n * @param gaugeType Type of the gauge.\n * @param gauge Gauge to check.\n */\n function hasGauge(string memory gaugeType, IStakelessGauge gauge) external view returns (bool);\n\n /**\n * @notice Returns the amount of added gauges for a given type.\n * @param gaugeType Type of the gauge.\n */\n function getTotalGauges(string memory gaugeType) external view returns (uint256);\n\n /**\n * @notice Returns the gauge of a given type at the given index.\n * @dev Reverts if the index is greater than or equal to the amount of added gauges for the given type.\n * @param gaugeType Type of the gauge.\n * @param index - Index of the added gauge.\n */\n function getGaugeAtIndex(string memory gaugeType, uint256 index) external view returns (IStakelessGauge);\n\n /**\n * @notice Returns the timestamp corresponding to the start of the previous week of the current block.\n */\n function getRoundedDownBlockTimestamp() external view returns (uint256);\n\n /**\n * @notice Performs a checkpoint for all added gauges above the given relative weight threshold.\n * @dev Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getTotalBridgeCost` to\n * determine the required amount of ETH for the execution to succeed.\n * @param minRelativeWeight Threshold to filter out gauges below it.\n */\n function checkpointAllGaugesAboveRelativeWeight(uint256 minRelativeWeight) external payable;\n\n /**\n * @notice Performs a checkpoint for all added gauges above the given relative weight threshold for the given types.\n * @dev Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getGaugeTypesBridgeCost` to\n * determine the required amount of ETH for the execution to succeed.\n * Reverts if invalid gauge types are given.\n * @param gaugeTypes Types of the gauges to checkpoint.\n * @param minRelativeWeight Threshold to filter out gauges below it.\n */\n function checkpointGaugesOfTypesAboveRelativeWeight(string[] memory gaugeTypes, uint256 minRelativeWeight)\n external\n payable;\n\n /**\n * @notice Performs a checkpoint for a single added gauge of a given type.\n * @dev Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getSingleBridgeCost` to\n * determine the required amount of ETH for the execution to succeed.\n * Reverts if the gauge was not added to the checkpointer beforehand.\n * @param gaugeType Type of the gauge.\n * @param gauge Address of the gauge to checkpoint.\n */\n function checkpointSingleGauge(string memory gaugeType, IStakelessGauge gauge) external payable;\n\n /**\n * @notice Performs a checkpoint for a multiple added gauges of the given types.\n * @dev Reverts if the ETH sent in the call is not enough to cover bridge costs.\n * Reverts if the gauges were not added to the checkpointer beforehand, or if an invalid gauge type is given.\n * @param gaugeType Type of the gauges to be checkpointed.\n * @param gauges Addresses of the gauges to checkpoint.\n */\n function checkpointMultipleGaugesOfMatchingType(string memory gaugeType, IStakelessGauge[] memory gauges)\n external\n payable;\n\n /**\n * @notice Performs a checkpoint for a multiple added gauges of the given types.\n * @dev Reverts if the ETH sent in the call is not enough to cover bridge costs.\n * Reverts if the gauges were not added to the checkpointer beforehand, or if invalid gauge types are given.\n * Reverts if the types array does not have the same length as the gauges array.\n * @param gaugeTypes Types of the gauges to be checkpointed, in the same order as the gauges to be checkpointed.\n * @param gauges Addresses of the gauges to checkpoint.\n */\n function checkpointMultipleGauges(string[] memory gaugeTypes, IStakelessGauge[] memory gauges) external payable;\n\n /**\n * @notice Returns the ETH cost to checkpoint all gauges for a given minimum relative weight.\n * @dev A lower minimum relative weight might return higher costs, since more gauges could potentially be included\n * in the checkpoint.\n * @param minRelativeWeight Minimum relative weight filter: gauges below this value do not add to the bridge cost.\n */\n function getTotalBridgeCost(uint256 minRelativeWeight) external view returns (uint256);\n\n /**\n * @notice Returns the ETH cost to checkpoint all gauges from the given types.\n * @dev A lower minimum relative weight might return higher costs, since more gauges could potentially be included\n * in the checkpoint. Reverts for invalid gauge types.\n * @param gaugeTypes Types of the gauges.\n * @param minRelativeWeight Minimum relative weight filter: gauges below this value do not add to the bridge cost.\n */\n function getGaugeTypesBridgeCost(string[] memory gaugeTypes, uint256 minRelativeWeight)\n external\n view\n returns (uint256 totalCost);\n\n /**\n * @notice Returns the ETH cost to checkpoint a single given gauge.\n * @dev Reverts if the gauge was not added to the checkpointer beforehand, or if the gauge type is invalid.\n * @param gaugeType Type of the gauge.\n * @param gauge Address of the gauge to check the bridge costs.\n */\n function getSingleBridgeCost(string memory gaugeType, IStakelessGauge gauge) external view returns (uint256);\n\n /**\n * @notice Returns true if gauge type is valid; false otherwise.\n */\n function isValidGaugeType(string memory gaugeType) external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./ILiquidityGauge.sol\";\nimport \"./IRewardTokenDistributor.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase, var-name-mixedcase\n\ninterface IStakingLiquidityGauge is IRewardTokenDistributor, ILiquidityGauge, IERC20 {\n function initialize(address lpToken, uint256 relativeWeightCap) external;\n\n function lp_token() external view returns (IERC20);\n\n function deposit(uint256 value, address recipient) external;\n\n function withdraw(uint256 value) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ninterface IVeDelegation {\n // solhint-disable-next-line func-name-mixedcase\n function adjusted_balance_of(address user) external view returns (uint256);\n\n function totalSupply() external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IAuthorizerAdaptor.sol\";\nimport \"./ISmartWalletChecker.sol\";\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ninterface IVotingEscrow is IERC20 {\n struct Point {\n int128 bias;\n int128 slope; // - dweight / dt\n uint256 ts;\n uint256 blk; // block\n }\n\n function epoch() external view returns (uint256);\n\n function balanceOf(address user, uint256 timestamp) external view returns (uint256);\n\n function totalSupply(uint256 timestamp) external view returns (uint256);\n\n function user_point_epoch(address user) external view returns (uint256);\n\n function point_history(uint256 timestamp) external view returns (Point memory);\n\n function user_point_history(address user, uint256 timestamp) external view returns (Point memory);\n\n function checkpoint() external;\n\n function admin() external view returns (IAuthorizerAdaptor);\n\n function smart_wallet_checker() external view returns (ISmartWalletChecker);\n\n function commit_smart_wallet_checker(address newSmartWalletChecker) external;\n\n function apply_smart_wallet_checker() external;\n\n function locked__end(address user) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General external License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General external License for more details.\n\n// You should have received a copy of the GNU General external License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IOmniVotingEscrowAdaptor.sol\";\nimport \"./IVotingEscrow.sol\";\n\n/**\n * @notice This contract allows veBAL holders on Ethereum to assign their balance to designated addresses on each L2.\n * This is intended for smart contracts that are not deployed to the same address on all networks. EOA's are\n * expected to either use the same address, or manage delegation on L2 networks themselves.\n *\n * @dev For each network (chainId), we maintain a mapping between local (Ethereum) and remote (L2) addresses.\n * This contract remaps balance queries on remote network addresses to their corresponding local addresses.\n * Users able to call this contract can set their own mappings, or delegate this function to another account if they\n * cannot.\n */\ninterface IVotingEscrowRemapper {\n event AddressMappingUpdated(address indexed localUser, address indexed remoteUser, uint16 indexed chainId);\n event RemoteAddressMappingCleared(address indexed remoteUser, uint16 indexed chainId);\n event AddressDelegateUpdated(address indexed localUser, address indexed delegate);\n\n /**\n * @notice Returns Voting Escrow contract address.\n */\n function getVotingEscrow() external view returns (IVotingEscrow);\n\n /**\n * @notice Returns Omni Voting Escrow Adaptor contract address, which interfaces with the gateway to bridge\n * veBAL balances to L2s.\n */\n function getOmniVotingEscrowAdaptor() external view returns (IOmniVotingEscrowAdaptor);\n\n /**\n * @notice Returns the current total supply of veBAL as a Point.\n * @dev We return the total supply as a Point to allow extrapolating this into the future. Note that this\n * extrapolation will become invalid when crossing weeks, since we're not taking into account veBAL locks that\n * expire then.\n */\n function getTotalSupplyPoint() external view returns (IVotingEscrow.Point memory);\n\n /**\n * @notice Returns a user's current veBAL balance as a Point. Note that we don't apply any remappings in this query.\n * The returned value is taken directly from the voting escrow.\n * @dev We return the balance as a Point to allow extrapolating this into the future.\n */\n function getUserPoint(address user) external view returns (IVotingEscrow.Point memory);\n\n /**\n * @notice Get timestamp when `user`'s lock finishes.\n * @dev The returned value is taken directly from the voting escrow.\n */\n function getLockedEnd(address user) external view returns (uint256);\n\n /**\n * @notice Returns the local user corresponding to an address on a remote chain.\n * @dev Returns `address(0)` if the remapping does not exist for the given remote user.\n * @param remoteUser - Address of the user on the remote chain corresponding to the local address.\n * @param chainId - The chain ID of the remote network.\n */\n function getLocalUser(address remoteUser, uint16 chainId) external view returns (address);\n\n /**\n * @notice Returns the remote user corresponding to an address on the local chain.\n * @dev Returns `address(0)` if the remapping does not exist for the given local user.\n * @param localUser - Address of the user on the local chain corresponding to the remote address.\n * @param chainId - The chain ID of the remote network.\n */\n function getRemoteUser(address localUser, uint16 chainId) external view returns (address);\n\n /**\n * @notice Gets the account that can set a remapping for a given local user.\n * @param localUser - Address of the user on the local chain with a remapping manager.\n */\n function getRemappingManager(address localUser) external view returns (address);\n\n // Remapping Setters\n\n /**\n * @notice Sets up a mapping from `localUser`'s veBAL balance to `remoteUser` for chain `chainId`.\n * @dev In order to set up a remapping on this contract, `localUser` must be a smart contract which has been\n * allowlisted to hold veBAL. EOAs are expected to set up any delegation of their veBAL on L2s directly.\n * @param localUser - The address of a contract allowlisted on the `SmartWalletChecker`.\n * @param remoteUser - The address to receive `localUser`'s balance of veBAL on the remote chain.\n * @param chainId - The chain id of the remote chain on which `remoteUser` resides.\n */\n function setNetworkRemapping(\n address localUser,\n address remoteUser,\n uint16 chainId\n ) external payable;\n\n /**\n * @notice Sets an address to manage the mapping for a given local user on their behalf.\n * @dev This is intended to handle contracts which cannot interact with this contract directly.\n * @param localUser - The address of a contract allowlisted on the `SmartWalletChecker`.\n * @param delegate - The address which is allowed to manage remote users to be linked to `localUser`.\n */\n function setNetworkRemappingManager(address localUser, address delegate) external;\n\n /**\n * @notice Clears a local user's mapping for a particular network.\n * @dev This is intended to discourage and also allow recovery from griefing attacks.\n * If griefing occurs then the griefer can be removed from Smart Wallet Checker and have their remappings erased.\n * The local user can always clear their own mapping, regardless the state of the Smart Wallet Checker.\n * @param localUser - The address of the local user to erase.\n * @param chainId - The chain id of the network to erase.\n */\n function clearNetworkRemapping(address localUser, uint16 chainId) external payable;\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.1 <0.9.0;\n\n// solhint-disable\n\n/**\n * @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n * supported.\n * Uses the default 'BAL' prefix for the error code\n */\nfunction _require(bool condition, uint256 errorCode) pure {\n if (!condition) _revert(errorCode);\n}\n\n/**\n * @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n * supported.\n */\nfunction _require(\n bool condition,\n uint256 errorCode,\n bytes3 prefix\n) pure {\n if (!condition) _revert(errorCode, prefix);\n}\n\n/**\n * @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported.\n * Uses the default 'BAL' prefix for the error code\n */\nfunction _revert(uint256 errorCode) pure {\n _revert(errorCode, 0x42414c); // This is the raw byte representation of \"BAL\"\n}\n\n/**\n * @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported.\n */\nfunction _revert(uint256 errorCode, bytes3 prefix) pure {\n uint256 prefixUint = uint256(uint24(prefix));\n // We're going to dynamically create a revert string based on the error code, with the following format:\n // 'BAL#{errorCode}'\n // where the code is left-padded with zeroes to three digits (so they range from 000 to 999).\n //\n // We don't have revert strings embedded in the contract to save bytecode size: it takes much less space to store a\n // number (8 to 16 bits) than the individual string characters.\n //\n // The dynamic string creation algorithm that follows could be implemented in Solidity, but assembly allows for a\n // much denser implementation, again saving bytecode size. Given this function unconditionally reverts, this is a\n // safe place to rely on it without worrying about how its usage might affect e.g. memory contents.\n assembly {\n // First, we need to compute the ASCII representation of the error code. We assume that it is in the 0-999\n // range, so we only need to convert three digits. To convert the digits to ASCII, we add 0x30, the value for\n // the '0' character.\n\n let units := add(mod(errorCode, 10), 0x30)\n\n errorCode := div(errorCode, 10)\n let tenths := add(mod(errorCode, 10), 0x30)\n\n errorCode := div(errorCode, 10)\n let hundreds := add(mod(errorCode, 10), 0x30)\n\n // With the individual characters, we can now construct the full string.\n // We first append the '#' character (0x23) to the prefix. In the case of 'BAL', it results in 0x42414c23 ('BAL#')\n // Then, we shift this by 24 (to provide space for the 3 bytes of the error code), and add the\n // characters to it, each shifted by a multiple of 8.\n // The revert reason is then shifted left by 200 bits (256 minus the length of the string, 7 characters * 8 bits\n // per character = 56) to locate it in the most significant part of the 256 slot (the beginning of a byte\n // array).\n let formattedPrefix := shl(24, add(0x23, shl(8, prefixUint)))\n\n let revertReason := shl(200, add(formattedPrefix, add(add(units, shl(8, tenths)), shl(16, hundreds))))\n\n // We can now encode the reason in memory, which can be safely overwritten as we're about to revert. The encoded\n // message will have the following layout:\n // [ revert reason identifier ] [ string location offset ] [ string length ] [ string contents ]\n\n // The Solidity revert reason identifier is 0x08c739a0, the function selector of the Error(string) function. We\n // also write zeroes to the next 28 bytes of memory, but those are about to be overwritten.\n mstore(0x0, 0x08c379a000000000000000000000000000000000000000000000000000000000)\n // Next is the offset to the location of the string, which will be placed immediately after (20 bytes away).\n mstore(0x04, 0x0000000000000000000000000000000000000000000000000000000000000020)\n // The string length is fixed: 7 characters.\n mstore(0x24, 7)\n // Finally, the string itself is stored.\n mstore(0x44, revertReason)\n\n // Even if the string is only 7 bytes long, we need to return a full 32 byte slot containing it. The length of\n // the encoded message is therefore 4 + 32 + 32 + 32 = 100.\n revert(0, 100)\n }\n}\n\nlibrary Errors {\n // Math\n uint256 internal constant ADD_OVERFLOW = 0;\n uint256 internal constant SUB_OVERFLOW = 1;\n uint256 internal constant SUB_UNDERFLOW = 2;\n uint256 internal constant MUL_OVERFLOW = 3;\n uint256 internal constant ZERO_DIVISION = 4;\n uint256 internal constant DIV_INTERNAL = 5;\n uint256 internal constant X_OUT_OF_BOUNDS = 6;\n uint256 internal constant Y_OUT_OF_BOUNDS = 7;\n uint256 internal constant PRODUCT_OUT_OF_BOUNDS = 8;\n uint256 internal constant INVALID_EXPONENT = 9;\n\n // Input\n uint256 internal constant OUT_OF_BOUNDS = 100;\n uint256 internal constant UNSORTED_ARRAY = 101;\n uint256 internal constant UNSORTED_TOKENS = 102;\n uint256 internal constant INPUT_LENGTH_MISMATCH = 103;\n uint256 internal constant ZERO_TOKEN = 104;\n uint256 internal constant INSUFFICIENT_DATA = 105;\n\n // Shared pools\n uint256 internal constant MIN_TOKENS = 200;\n uint256 internal constant MAX_TOKENS = 201;\n uint256 internal constant MAX_SWAP_FEE_PERCENTAGE = 202;\n uint256 internal constant MIN_SWAP_FEE_PERCENTAGE = 203;\n uint256 internal constant MINIMUM_BPT = 204;\n uint256 internal constant CALLER_NOT_VAULT = 205;\n uint256 internal constant UNINITIALIZED = 206;\n uint256 internal constant BPT_IN_MAX_AMOUNT = 207;\n uint256 internal constant BPT_OUT_MIN_AMOUNT = 208;\n uint256 internal constant EXPIRED_PERMIT = 209;\n uint256 internal constant NOT_TWO_TOKENS = 210;\n uint256 internal constant DISABLED = 211;\n\n // Pools\n uint256 internal constant MIN_AMP = 300;\n uint256 internal constant MAX_AMP = 301;\n uint256 internal constant MIN_WEIGHT = 302;\n uint256 internal constant MAX_STABLE_TOKENS = 303;\n uint256 internal constant MAX_IN_RATIO = 304;\n uint256 internal constant MAX_OUT_RATIO = 305;\n uint256 internal constant MIN_BPT_IN_FOR_TOKEN_OUT = 306;\n uint256 internal constant MAX_OUT_BPT_FOR_TOKEN_IN = 307;\n uint256 internal constant NORMALIZED_WEIGHT_INVARIANT = 308;\n uint256 internal constant INVALID_TOKEN = 309;\n uint256 internal constant UNHANDLED_JOIN_KIND = 310;\n uint256 internal constant ZERO_INVARIANT = 311;\n uint256 internal constant ORACLE_INVALID_SECONDS_QUERY = 312;\n uint256 internal constant ORACLE_NOT_INITIALIZED = 313;\n uint256 internal constant ORACLE_QUERY_TOO_OLD = 314;\n uint256 internal constant ORACLE_INVALID_INDEX = 315;\n uint256 internal constant ORACLE_BAD_SECS = 316;\n uint256 internal constant AMP_END_TIME_TOO_CLOSE = 317;\n uint256 internal constant AMP_ONGOING_UPDATE = 318;\n uint256 internal constant AMP_RATE_TOO_HIGH = 319;\n uint256 internal constant AMP_NO_ONGOING_UPDATE = 320;\n uint256 internal constant STABLE_INVARIANT_DIDNT_CONVERGE = 321;\n uint256 internal constant STABLE_GET_BALANCE_DIDNT_CONVERGE = 322;\n uint256 internal constant RELAYER_NOT_CONTRACT = 323;\n uint256 internal constant BASE_POOL_RELAYER_NOT_CALLED = 324;\n uint256 internal constant REBALANCING_RELAYER_REENTERED = 325;\n uint256 internal constant GRADUAL_UPDATE_TIME_TRAVEL = 326;\n uint256 internal constant SWAPS_DISABLED = 327;\n uint256 internal constant CALLER_IS_NOT_LBP_OWNER = 328;\n uint256 internal constant PRICE_RATE_OVERFLOW = 329;\n uint256 internal constant INVALID_JOIN_EXIT_KIND_WHILE_SWAPS_DISABLED = 330;\n uint256 internal constant WEIGHT_CHANGE_TOO_FAST = 331;\n uint256 internal constant LOWER_GREATER_THAN_UPPER_TARGET = 332;\n uint256 internal constant UPPER_TARGET_TOO_HIGH = 333;\n uint256 internal constant UNHANDLED_BY_LINEAR_POOL = 334;\n uint256 internal constant OUT_OF_TARGET_RANGE = 335;\n uint256 internal constant UNHANDLED_EXIT_KIND = 336;\n uint256 internal constant UNAUTHORIZED_EXIT = 337;\n uint256 internal constant MAX_MANAGEMENT_SWAP_FEE_PERCENTAGE = 338;\n uint256 internal constant UNHANDLED_BY_MANAGED_POOL = 339;\n uint256 internal constant UNHANDLED_BY_PHANTOM_POOL = 340;\n uint256 internal constant TOKEN_DOES_NOT_HAVE_RATE_PROVIDER = 341;\n uint256 internal constant INVALID_INITIALIZATION = 342;\n uint256 internal constant OUT_OF_NEW_TARGET_RANGE = 343;\n uint256 internal constant FEATURE_DISABLED = 344;\n uint256 internal constant UNINITIALIZED_POOL_CONTROLLER = 345;\n uint256 internal constant SET_SWAP_FEE_DURING_FEE_CHANGE = 346;\n uint256 internal constant SET_SWAP_FEE_PENDING_FEE_CHANGE = 347;\n uint256 internal constant CHANGE_TOKENS_DURING_WEIGHT_CHANGE = 348;\n uint256 internal constant CHANGE_TOKENS_PENDING_WEIGHT_CHANGE = 349;\n uint256 internal constant MAX_WEIGHT = 350;\n uint256 internal constant UNAUTHORIZED_JOIN = 351;\n uint256 internal constant MAX_MANAGEMENT_AUM_FEE_PERCENTAGE = 352;\n uint256 internal constant FRACTIONAL_TARGET = 353;\n uint256 internal constant ADD_OR_REMOVE_BPT = 354;\n uint256 internal constant INVALID_CIRCUIT_BREAKER_BOUNDS = 355;\n uint256 internal constant CIRCUIT_BREAKER_TRIPPED = 356;\n uint256 internal constant MALICIOUS_QUERY_REVERT = 357;\n uint256 internal constant JOINS_EXITS_DISABLED = 358;\n\n // Lib\n uint256 internal constant REENTRANCY = 400;\n uint256 internal constant SENDER_NOT_ALLOWED = 401;\n uint256 internal constant PAUSED = 402;\n uint256 internal constant PAUSE_WINDOW_EXPIRED = 403;\n uint256 internal constant MAX_PAUSE_WINDOW_DURATION = 404;\n uint256 internal constant MAX_BUFFER_PERIOD_DURATION = 405;\n uint256 internal constant INSUFFICIENT_BALANCE = 406;\n uint256 internal constant INSUFFICIENT_ALLOWANCE = 407;\n uint256 internal constant ERC20_TRANSFER_FROM_ZERO_ADDRESS = 408;\n uint256 internal constant ERC20_TRANSFER_TO_ZERO_ADDRESS = 409;\n uint256 internal constant ERC20_MINT_TO_ZERO_ADDRESS = 410;\n uint256 internal constant ERC20_BURN_FROM_ZERO_ADDRESS = 411;\n uint256 internal constant ERC20_APPROVE_FROM_ZERO_ADDRESS = 412;\n uint256 internal constant ERC20_APPROVE_TO_ZERO_ADDRESS = 413;\n uint256 internal constant ERC20_TRANSFER_EXCEEDS_ALLOWANCE = 414;\n uint256 internal constant ERC20_DECREASED_ALLOWANCE_BELOW_ZERO = 415;\n uint256 internal constant ERC20_TRANSFER_EXCEEDS_BALANCE = 416;\n uint256 internal constant ERC20_BURN_EXCEEDS_ALLOWANCE = 417;\n uint256 internal constant SAFE_ERC20_CALL_FAILED = 418;\n uint256 internal constant ADDRESS_INSUFFICIENT_BALANCE = 419;\n uint256 internal constant ADDRESS_CANNOT_SEND_VALUE = 420;\n uint256 internal constant SAFE_CAST_VALUE_CANT_FIT_INT256 = 421;\n uint256 internal constant GRANT_SENDER_NOT_ADMIN = 422;\n uint256 internal constant REVOKE_SENDER_NOT_ADMIN = 423;\n uint256 internal constant RENOUNCE_SENDER_NOT_ALLOWED = 424;\n uint256 internal constant BUFFER_PERIOD_EXPIRED = 425;\n uint256 internal constant CALLER_IS_NOT_OWNER = 426;\n uint256 internal constant NEW_OWNER_IS_ZERO = 427;\n uint256 internal constant CODE_DEPLOYMENT_FAILED = 428;\n uint256 internal constant CALL_TO_NON_CONTRACT = 429;\n uint256 internal constant LOW_LEVEL_CALL_FAILED = 430;\n uint256 internal constant NOT_PAUSED = 431;\n uint256 internal constant ADDRESS_ALREADY_ALLOWLISTED = 432;\n uint256 internal constant ADDRESS_NOT_ALLOWLISTED = 433;\n uint256 internal constant ERC20_BURN_EXCEEDS_BALANCE = 434;\n uint256 internal constant INVALID_OPERATION = 435;\n uint256 internal constant CODEC_OVERFLOW = 436;\n uint256 internal constant IN_RECOVERY_MODE = 437;\n uint256 internal constant NOT_IN_RECOVERY_MODE = 438;\n uint256 internal constant INDUCED_FAILURE = 439;\n uint256 internal constant EXPIRED_SIGNATURE = 440;\n uint256 internal constant MALFORMED_SIGNATURE = 441;\n uint256 internal constant SAFE_CAST_VALUE_CANT_FIT_UINT64 = 442;\n uint256 internal constant UNHANDLED_FEE_TYPE = 443;\n uint256 internal constant BURN_FROM_ZERO = 444;\n\n // Vault\n uint256 internal constant INVALID_POOL_ID = 500;\n uint256 internal constant CALLER_NOT_POOL = 501;\n uint256 internal constant SENDER_NOT_ASSET_MANAGER = 502;\n uint256 internal constant USER_DOESNT_ALLOW_RELAYER = 503;\n uint256 internal constant INVALID_SIGNATURE = 504;\n uint256 internal constant EXIT_BELOW_MIN = 505;\n uint256 internal constant JOIN_ABOVE_MAX = 506;\n uint256 internal constant SWAP_LIMIT = 507;\n uint256 internal constant SWAP_DEADLINE = 508;\n uint256 internal constant CANNOT_SWAP_SAME_TOKEN = 509;\n uint256 internal constant UNKNOWN_AMOUNT_IN_FIRST_SWAP = 510;\n uint256 internal constant MALCONSTRUCTED_MULTIHOP_SWAP = 511;\n uint256 internal constant INTERNAL_BALANCE_OVERFLOW = 512;\n uint256 internal constant INSUFFICIENT_INTERNAL_BALANCE = 513;\n uint256 internal constant INVALID_ETH_INTERNAL_BALANCE = 514;\n uint256 internal constant INVALID_POST_LOAN_BALANCE = 515;\n uint256 internal constant INSUFFICIENT_ETH = 516;\n uint256 internal constant UNALLOCATED_ETH = 517;\n uint256 internal constant ETH_TRANSFER = 518;\n uint256 internal constant CANNOT_USE_ETH_SENTINEL = 519;\n uint256 internal constant TOKENS_MISMATCH = 520;\n uint256 internal constant TOKEN_NOT_REGISTERED = 521;\n uint256 internal constant TOKEN_ALREADY_REGISTERED = 522;\n uint256 internal constant TOKENS_ALREADY_SET = 523;\n uint256 internal constant TOKENS_LENGTH_MUST_BE_2 = 524;\n uint256 internal constant NONZERO_TOKEN_BALANCE = 525;\n uint256 internal constant BALANCE_TOTAL_OVERFLOW = 526;\n uint256 internal constant POOL_NO_TOKENS = 527;\n uint256 internal constant INSUFFICIENT_FLASH_LOAN_BALANCE = 528;\n\n // Fees\n uint256 internal constant SWAP_FEE_PERCENTAGE_TOO_HIGH = 600;\n uint256 internal constant FLASH_LOAN_FEE_PERCENTAGE_TOO_HIGH = 601;\n uint256 internal constant INSUFFICIENT_FLASH_LOAN_FEE_AMOUNT = 602;\n uint256 internal constant AUM_FEE_PERCENTAGE_TOO_HIGH = 603;\n\n // FeeSplitter\n uint256 internal constant SPLITTER_FEE_PERCENTAGE_TOO_HIGH = 700;\n\n // Misc\n uint256 internal constant UNIMPLEMENTED = 998;\n uint256 internal constant SHOULD_NOT_HAPPEN = 999;\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IAuthentication {\n /**\n * @dev Returns the action identifier associated with the external function described by `selector`.\n */\n function getActionId(bytes4 selector) external view returns (bytes32);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface for the OptionalOnlyCaller helper, used to opt in to a caller\n * verification for a given address to methods that are otherwise callable by any address.\n */\ninterface IOptionalOnlyCaller {\n /**\n * @dev Emitted every time setOnlyCallerCheck is called.\n */\n event OnlyCallerOptIn(address user, bool enabled);\n\n /**\n * @dev Enables / disables verification mechanism for caller.\n * @param enabled - True if caller verification shall be enabled, false otherwise.\n */\n function setOnlyCallerCheck(bool enabled) external;\n\n function setOnlyCallerCheckWithSignature(\n address user,\n bool enabled,\n bytes memory signature\n ) external;\n\n /**\n * @dev Returns true if caller verification is enabled for the given user, false otherwise.\n */\n function isOnlyCallerEnabled(address user) external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface for the SignatureValidator helper, used to support meta-transactions.\n */\ninterface ISignaturesValidator {\n /**\n * @dev Returns the EIP712 domain separator.\n */\n function getDomainSeparator() external view returns (bytes32);\n\n /**\n * @dev Returns the next nonce used by an address to sign messages.\n */\n function getNextNonce(address user) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface for the TemporarilyPausable helper.\n */\ninterface ITemporarilyPausable {\n /**\n * @dev Emitted every time the pause state changes by `_setPaused`.\n */\n event PausedStateChanged(bool paused);\n\n /**\n * @dev Returns the current paused state.\n */\n function getPausedState()\n external\n view\n returns (\n bool paused,\n uint256 pauseWindowEndTime,\n uint256 bufferPeriodEndTime\n );\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @notice Simple interface to retrieve the version of a deployed contract.\n */\ninterface IVersion {\n /**\n * @dev Returns a JSON representation of the contract version containing name, version number and task ID.\n */\n function version() external view returns (string memory);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../openzeppelin/IERC20.sol\";\n\n/**\n * @dev Interface for WETH9.\n * See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol\n */\ninterface IWETH is IERC20 {\n function deposit() external payable;\n\n function withdraw(uint256 amount) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (interfaces/IERC1271.sol)\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface of the ERC1271 standard signature validation method for\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\n *\n * _Available since v4.1._\n */\ninterface IERC1271 {\n /**\n * @dev Should return whether the signature provided is valid for the provided data\n * @param hash Hash of the data to be signed\n * @param signature Signature byte array associated with _data\n */\n function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) external returns (bool);\n\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20Permit {\n /**\n * @dev Sets `value` as the allowance of `spender` over `owner`'s tokens,\n * given `owner`'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero\n * address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like\n * types.\n *\n * This concept is unrelated to a Pool's Asset Managers.\n */\ninterface IAsset {\n // solhint-disable-previous-line no-empty-blocks\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IAuthorizer {\n /**\n * @dev Returns true if `account` can perform the action described by `actionId` in the contract `where`.\n */\n function canPerform(\n bytes32 actionId,\n address account,\n address where\n ) external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n// Inspired by Aave Protocol's IFlashLoanReceiver.\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IFlashLoanRecipient {\n /**\n * @dev When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient.\n *\n * At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this\n * call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the\n * Vault, or else the entire flash loan will revert.\n *\n * `userData` is the same value passed in the `IVault.flashLoan` call.\n */\n function receiveFlashLoan(\n IERC20[] memory tokens,\n uint256[] memory amounts,\n uint256[] memory feeAmounts,\n bytes memory userData\n ) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IVault.sol\";\nimport \"./IAuthorizer.sol\";\n\ninterface IProtocolFeesCollector {\n event SwapFeePercentageChanged(uint256 newSwapFeePercentage);\n event FlashLoanFeePercentageChanged(uint256 newFlashLoanFeePercentage);\n\n function withdrawCollectedFees(\n IERC20[] calldata tokens,\n uint256[] calldata amounts,\n address recipient\n ) external;\n\n function setSwapFeePercentage(uint256 newSwapFeePercentage) external;\n\n function setFlashLoanFeePercentage(uint256 newFlashLoanFeePercentage) external;\n\n function getSwapFeePercentage() external view returns (uint256);\n\n function getFlashLoanFeePercentage() external view returns (uint256);\n\n function getCollectedFeeAmounts(IERC20[] memory tokens) external view returns (uint256[] memory feeAmounts);\n\n function getAuthorizer() external view returns (IAuthorizer);\n\n function vault() external view returns (IVault);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\nimport \"../solidity-utils/helpers/ISignaturesValidator.sol\";\nimport \"../solidity-utils/helpers/ITemporarilyPausable.sol\";\nimport \"../solidity-utils/misc/IWETH.sol\";\n\nimport \"./IAsset.sol\";\nimport \"./IAuthorizer.sol\";\nimport \"./IFlashLoanRecipient.sol\";\nimport \"./IProtocolFeesCollector.sol\";\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Full external interface for the Vault core contract - no external or public methods exist in the contract that\n * don't override one of these declarations.\n */\ninterface IVault is ISignaturesValidator, ITemporarilyPausable, IAuthentication {\n // Generalities about the Vault:\n //\n // - Whenever documentation refers to 'tokens', it strictly refers to ERC20-compliant token contracts. Tokens are\n // transferred out of the Vault by calling the `IERC20.transfer` function, and transferred in by calling\n // `IERC20.transferFrom`. In these cases, the sender must have previously allowed the Vault to use their tokens by\n // calling `IERC20.approve`. The only deviation from the ERC20 standard that is supported is functions not returning\n // a boolean value: in these scenarios, a non-reverting call is assumed to be successful.\n //\n // - All non-view functions in the Vault are non-reentrant: calling them while another one is mid-execution (e.g.\n // while execution control is transferred to a token contract during a swap) will result in a revert. View\n // functions can be called in a re-reentrant way, but doing so might cause them to return inconsistent results.\n // Contracts calling view functions in the Vault must make sure the Vault has not already been entered.\n //\n // - View functions revert if referring to either unregistered Pools, or unregistered tokens for registered Pools.\n\n // Authorizer\n //\n // Some system actions are permissioned, like setting and collecting protocol fees. This permissioning system exists\n // outside of the Vault in the Authorizer contract: the Vault simply calls the Authorizer to check if the caller\n // can perform a given action.\n\n /**\n * @dev Returns the Vault's Authorizer.\n */\n function getAuthorizer() external view returns (IAuthorizer);\n\n /**\n * @dev Sets a new Authorizer for the Vault. The caller must be allowed by the current Authorizer to do this.\n *\n * Emits an `AuthorizerChanged` event.\n */\n function setAuthorizer(IAuthorizer newAuthorizer) external;\n\n /**\n * @dev Emitted when a new authorizer is set by `setAuthorizer`.\n */\n event AuthorizerChanged(IAuthorizer indexed newAuthorizer);\n\n // Relayers\n //\n // Additionally, it is possible for an account to perform certain actions on behalf of another one, using their\n // Vault ERC20 allowance and Internal Balance. These accounts are said to be 'relayers' for these Vault functions,\n // and are expected to be smart contracts with sound authentication mechanisms. For an account to be able to wield\n // this power, two things must occur:\n // - The Authorizer must grant the account the permission to be a relayer for the relevant Vault function. This\n // means that Balancer governance must approve each individual contract to act as a relayer for the intended\n // functions.\n // - Each user must approve the relayer to act on their behalf.\n // This double protection means users cannot be tricked into approving malicious relayers (because they will not\n // have been allowed by the Authorizer via governance), nor can malicious relayers approved by a compromised\n // Authorizer or governance drain user funds, since they would also need to be approved by each individual user.\n\n /**\n * @dev Returns true if `user` has approved `relayer` to act as a relayer for them.\n */\n function hasApprovedRelayer(address user, address relayer) external view returns (bool);\n\n /**\n * @dev Allows `relayer` to act as a relayer for `sender` if `approved` is true, and disallows it otherwise.\n *\n * Emits a `RelayerApprovalChanged` event.\n */\n function setRelayerApproval(\n address sender,\n address relayer,\n bool approved\n ) external;\n\n /**\n * @dev Emitted every time a relayer is approved or disapproved by `setRelayerApproval`.\n */\n event RelayerApprovalChanged(address indexed relayer, address indexed sender, bool approved);\n\n // Internal Balance\n //\n // Users can deposit tokens into the Vault, where they are allocated to their Internal Balance, and later\n // transferred or withdrawn. It can also be used as a source of tokens when joining Pools, as a destination\n // when exiting them, and as either when performing swaps. This usage of Internal Balance results in greatly reduced\n // gas costs when compared to relying on plain ERC20 transfers, leading to large savings for frequent users.\n //\n // Internal Balance management features batching, which means a single contract call can be used to perform multiple\n // operations of different kinds, with different senders and recipients, at once.\n\n /**\n * @dev Returns `user`'s Internal Balance for a set of tokens.\n */\n function getInternalBalance(address user, IERC20[] memory tokens) external view returns (uint256[] memory);\n\n /**\n * @dev Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer)\n * and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as\n * it lets integrators reuse a user's Vault allowance.\n *\n * For each operation, if the caller is not `sender`, it must be an authorized relayer for them.\n */\n function manageUserBalance(UserBalanceOp[] memory ops) external payable;\n\n /**\n * @dev Data for `manageUserBalance` operations, which include the possibility for ETH to be sent and received\n without manual WETH wrapping or unwrapping.\n */\n struct UserBalanceOp {\n UserBalanceOpKind kind;\n IAsset asset;\n uint256 amount;\n address sender;\n address payable recipient;\n }\n\n // There are four possible operations in `manageUserBalance`:\n //\n // - DEPOSIT_INTERNAL\n // Increases the Internal Balance of the `recipient` account by transferring tokens from the corresponding\n // `sender`. The sender must have allowed the Vault to use their tokens via `IERC20.approve()`.\n //\n // ETH can be used by passing the ETH sentinel value as the asset and forwarding ETH in the call: it will be wrapped\n // and deposited as WETH. Any ETH amount remaining will be sent back to the caller (not the sender, which is\n // relevant for relayers).\n //\n // Emits an `InternalBalanceChanged` event.\n //\n //\n // - WITHDRAW_INTERNAL\n // Decreases the Internal Balance of the `sender` account by transferring tokens to the `recipient`.\n //\n // ETH can be used by passing the ETH sentinel value as the asset. This will deduct WETH instead, unwrap it and send\n // it to the recipient as ETH.\n //\n // Emits an `InternalBalanceChanged` event.\n //\n //\n // - TRANSFER_INTERNAL\n // Transfers tokens from the Internal Balance of the `sender` account to the Internal Balance of `recipient`.\n //\n // Reverts if the ETH sentinel value is passed.\n //\n // Emits an `InternalBalanceChanged` event.\n //\n //\n // - TRANSFER_EXTERNAL\n // Transfers tokens from `sender` to `recipient`, using the Vault's ERC20 allowance. This is typically used by\n // relayers, as it lets them reuse a user's Vault allowance.\n //\n // Reverts if the ETH sentinel value is passed.\n //\n // Emits an `ExternalBalanceTransfer` event.\n\n enum UserBalanceOpKind { DEPOSIT_INTERNAL, WITHDRAW_INTERNAL, TRANSFER_INTERNAL, TRANSFER_EXTERNAL }\n\n /**\n * @dev Emitted when a user's Internal Balance changes, either from calls to `manageUserBalance`, or through\n * interacting with Pools using Internal Balance.\n *\n * Because Internal Balance works exclusively with ERC20 tokens, ETH deposits and withdrawals will use the WETH\n * address.\n */\n event InternalBalanceChanged(address indexed user, IERC20 indexed token, int256 delta);\n\n /**\n * @dev Emitted when a user's Vault ERC20 allowance is used by the Vault to transfer tokens to an external account.\n */\n event ExternalBalanceTransfer(IERC20 indexed token, address indexed sender, address recipient, uint256 amount);\n\n // Pools\n //\n // There are three specialization settings for Pools, which allow for cheaper swaps at the cost of reduced\n // functionality:\n //\n // - General: no specialization, suited for all Pools. IGeneralPool is used for swap request callbacks, passing the\n // balance of all tokens in the Pool. These Pools have the largest swap costs (because of the extra storage reads),\n // which increase with the number of registered tokens.\n //\n // - Minimal Swap Info: IMinimalSwapInfoPool is used instead of IGeneralPool, which saves gas by only passing the\n // balance of the two tokens involved in the swap. This is suitable for some pricing algorithms, like the weighted\n // constant product one popularized by Balancer V1. Swap costs are smaller compared to general Pools, and are\n // independent of the number of registered tokens.\n //\n // - Two Token: only allows two tokens to be registered. This achieves the lowest possible swap gas cost. Like\n // minimal swap info Pools, these are called via IMinimalSwapInfoPool.\n\n enum PoolSpecialization { GENERAL, MINIMAL_SWAP_INFO, TWO_TOKEN }\n\n /**\n * @dev Registers the caller account as a Pool with a given specialization setting. Returns the Pool's ID, which\n * is used in all Pool-related functions. Pools cannot be deregistered, nor can the Pool's specialization be\n * changed.\n *\n * The caller is expected to be a smart contract that implements either `IGeneralPool` or `IMinimalSwapInfoPool`,\n * depending on the chosen specialization setting. This contract is known as the Pool's contract.\n *\n * Note that the same contract may register itself as multiple Pools with unique Pool IDs, or in other words,\n * multiple Pools may share the same contract.\n *\n * Emits a `PoolRegistered` event.\n */\n function registerPool(PoolSpecialization specialization) external returns (bytes32);\n\n /**\n * @dev Emitted when a Pool is registered by calling `registerPool`.\n */\n event PoolRegistered(bytes32 indexed poolId, address indexed poolAddress, PoolSpecialization specialization);\n\n /**\n * @dev Returns a Pool's contract address and specialization setting.\n */\n function getPool(bytes32 poolId) external view returns (address, PoolSpecialization);\n\n /**\n * @dev Registers `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n *\n * Pools can only interact with tokens they have registered. Users join a Pool by transferring registered tokens,\n * exit by receiving registered tokens, and can only swap registered tokens.\n *\n * Each token can only be registered once. For Pools with the Two Token specialization, `tokens` must have a length\n * of two, that is, both tokens must be registered in the same `registerTokens` call, and they must be sorted in\n * ascending order.\n *\n * The `tokens` and `assetManagers` arrays must have the same length, and each entry in these indicates the Asset\n * Manager for the corresponding token. Asset Managers can manage a Pool's tokens via `managePoolBalance`,\n * depositing and withdrawing them directly, and can even set their balance to arbitrary amounts. They are therefore\n * expected to be highly secured smart contracts with sound design principles, and the decision to register an\n * Asset Manager should not be made lightly.\n *\n * Pools can choose not to assign an Asset Manager to a given token by passing in the zero address. Once an Asset\n * Manager is set, it cannot be changed except by deregistering the associated token and registering again with a\n * different Asset Manager.\n *\n * Emits a `TokensRegistered` event.\n */\n function registerTokens(\n bytes32 poolId,\n IERC20[] memory tokens,\n address[] memory assetManagers\n ) external;\n\n /**\n * @dev Emitted when a Pool registers tokens by calling `registerTokens`.\n */\n event TokensRegistered(bytes32 indexed poolId, IERC20[] tokens, address[] assetManagers);\n\n /**\n * @dev Deregisters `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n *\n * Only registered tokens (via `registerTokens`) can be deregistered. Additionally, they must have zero total\n * balance. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens\n * must be deregistered in the same `deregisterTokens` call.\n *\n * A deregistered token can be re-registered later on, possibly with a different Asset Manager.\n *\n * Emits a `TokensDeregistered` event.\n */\n function deregisterTokens(bytes32 poolId, IERC20[] memory tokens) external;\n\n /**\n * @dev Emitted when a Pool deregisters tokens by calling `deregisterTokens`.\n */\n event TokensDeregistered(bytes32 indexed poolId, IERC20[] tokens);\n\n /**\n * @dev Returns detailed information for a Pool's registered token.\n *\n * `cash` is the number of tokens the Vault currently holds for the Pool. `managed` is the number of tokens\n * withdrawn and held outside the Vault by the Pool's token Asset Manager. The Pool's total balance for `token`\n * equals the sum of `cash` and `managed`.\n *\n * Internally, `cash` and `managed` are stored using 112 bits. No action can ever cause a Pool's token `cash`,\n * `managed` or `total` balance to be greater than 2^112 - 1.\n *\n * `lastChangeBlock` is the number of the block in which `token`'s total balance was last modified (via either a\n * join, exit, swap, or Asset Manager update). This value is useful to avoid so-called 'sandwich attacks', for\n * example when developing price oracles. A change of zero (e.g. caused by a swap with amount zero) is considered a\n * change for this purpose, and will update `lastChangeBlock`.\n *\n * `assetManager` is the Pool's token Asset Manager.\n */\n function getPoolTokenInfo(bytes32 poolId, IERC20 token)\n external\n view\n returns (\n uint256 cash,\n uint256 managed,\n uint256 lastChangeBlock,\n address assetManager\n );\n\n /**\n * @dev Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of\n * the tokens' `balances` changed.\n *\n * The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all\n * Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order.\n *\n * If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same\n * order as passed to `registerTokens`.\n *\n * Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are\n * the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo`\n * instead.\n */\n function getPoolTokens(bytes32 poolId)\n external\n view\n returns (\n IERC20[] memory tokens,\n uint256[] memory balances,\n uint256 lastChangeBlock\n );\n\n /**\n * @dev Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will\n * trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized\n * Pool shares.\n *\n * If the caller is not `sender`, it must be an authorized relayer for them.\n *\n * The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount\n * to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces\n * these maximums.\n *\n * If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable\n * this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the\n * WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent\n * back to the caller (not the sender, which is important for relayers).\n *\n * `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n * interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be\n * sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final\n * `assets` array might not be sorted. Pools with no registered tokens cannot be joined.\n *\n * If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only\n * be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be\n * withdrawn from Internal Balance: attempting to do so will trigger a revert.\n *\n * This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement\n * their own custom logic. This typically requires additional information from the user (such as the expected number\n * of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed\n * directly to the Pool's contract, as is `recipient`.\n *\n * Emits a `PoolBalanceChanged` event.\n */\n function joinPool(\n bytes32 poolId,\n address sender,\n address recipient,\n JoinPoolRequest memory request\n ) external payable;\n\n struct JoinPoolRequest {\n IAsset[] assets;\n uint256[] maxAmountsIn;\n bytes userData;\n bool fromInternalBalance;\n }\n\n /**\n * @dev Called by users to exit a Pool, which transfers tokens from the Pool's balance to `recipient`. This will\n * trigger custom Pool behavior, which will typically ask for something in return from `sender` - often tokenized\n * Pool shares. The amount of tokens that can be withdrawn is limited by the Pool's `cash` balance (see\n * `getPoolTokenInfo`).\n *\n * If the caller is not `sender`, it must be an authorized relayer for them.\n *\n * The `tokens` and `minAmountsOut` arrays must have the same length, and each entry in these indicates the minimum\n * token amount to receive for each token contract. The amounts to send are decided by the Pool and not the Vault:\n * it just enforces these minimums.\n *\n * If exiting a Pool that holds WETH, it is possible to receive ETH directly: the Vault will do the unwrapping. To\n * enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead\n * of the WETH address. Note that it is not possible to combine ETH and WETH in the same exit.\n *\n * `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n * interacting with Pools that register and deregister tokens frequently. If receiving ETH however, the array must\n * be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the\n * final `assets` array might not be sorted. Pools with no registered tokens cannot be exited.\n *\n * If `toInternalBalance` is true, the tokens will be deposited to `recipient`'s Internal Balance. Otherwise,\n * an ERC20 transfer will be performed. Note that ETH cannot be deposited to Internal Balance: attempting to\n * do so will trigger a revert.\n *\n * `minAmountsOut` is the minimum amount of tokens the user expects to get out of the Pool, for each token in the\n * `tokens` array. This array must match the Pool's registered tokens.\n *\n * This causes the Vault to call the `IBasePool.onExitPool` hook on the Pool's contract, where Pools implement\n * their own custom logic. This typically requires additional information from the user (such as the expected number\n * of Pool shares to return). This can be encoded in the `userData` argument, which is ignored by the Vault and\n * passed directly to the Pool's contract.\n *\n * Emits a `PoolBalanceChanged` event.\n */\n function exitPool(\n bytes32 poolId,\n address sender,\n address payable recipient,\n ExitPoolRequest memory request\n ) external;\n\n struct ExitPoolRequest {\n IAsset[] assets;\n uint256[] minAmountsOut;\n bytes userData;\n bool toInternalBalance;\n }\n\n /**\n * @dev Emitted when a user joins or exits a Pool by calling `joinPool` or `exitPool`, respectively.\n */\n event PoolBalanceChanged(\n bytes32 indexed poolId,\n address indexed liquidityProvider,\n IERC20[] tokens,\n int256[] deltas,\n uint256[] protocolFeeAmounts\n );\n\n enum PoolBalanceChangeKind { JOIN, EXIT }\n\n // Swaps\n //\n // Users can swap tokens with Pools by calling the `swap` and `batchSwap` functions. To do this,\n // they need not trust Pool contracts in any way: all security checks are made by the Vault. They must however be\n // aware of the Pools' pricing algorithms in order to estimate the prices Pools will quote.\n //\n // The `swap` function executes a single swap, while `batchSwap` can perform multiple swaps in sequence.\n // In each individual swap, tokens of one kind are sent from the sender to the Pool (this is the 'token in'),\n // and tokens of another kind are sent from the Pool to the recipient in exchange (this is the 'token out').\n // More complex swaps, such as one token in to multiple tokens out can be achieved by batching together\n // individual swaps.\n //\n // There are two swap kinds:\n // - 'given in' swaps, where the amount of tokens in (sent to the Pool) is known, and the Pool determines (via the\n // `onSwap` hook) the amount of tokens out (to send to the recipient).\n // - 'given out' swaps, where the amount of tokens out (received from the Pool) is known, and the Pool determines\n // (via the `onSwap` hook) the amount of tokens in (to receive from the sender).\n //\n // Additionally, it is possible to chain swaps using a placeholder input amount, which the Vault replaces with\n // the calculated output of the previous swap. If the previous swap was 'given in', this will be the calculated\n // tokenOut amount. If the previous swap was 'given out', it will use the calculated tokenIn amount. These extended\n // swaps are known as 'multihop' swaps, since they 'hop' through a number of intermediate tokens before arriving at\n // the final intended token.\n //\n // In all cases, tokens are only transferred in and out of the Vault (or withdrawn from and deposited into Internal\n // Balance) after all individual swaps have been completed, and the net token balance change computed. This makes\n // certain swap patterns, such as multihops, or swaps that interact with the same token pair in multiple Pools, cost\n // much less gas than they would otherwise.\n //\n // It also means that under certain conditions it is possible to perform arbitrage by swapping with multiple\n // Pools in a way that results in net token movement out of the Vault (profit), with no tokens being sent in (only\n // updating the Pool's internal accounting).\n //\n // To protect users from front-running or the market changing rapidly, they supply a list of 'limits' for each token\n // involved in the swap, where either the maximum number of tokens to send (by passing a positive value) or the\n // minimum amount of tokens to receive (by passing a negative value) is specified.\n //\n // Additionally, a 'deadline' timestamp can also be provided, forcing the swap to fail if it occurs after\n // this point in time (e.g. if the transaction failed to be included in a block promptly).\n //\n // If interacting with Pools that hold WETH, it is possible to both send and receive ETH directly: the Vault will do\n // the wrapping and unwrapping. To enable this mechanism, the IAsset sentinel value (the zero address) must be\n // passed in the `assets` array instead of the WETH address. Note that it is possible to combine ETH and WETH in the\n // same swap. Any excess ETH will be sent back to the caller (not the sender, which is relevant for relayers).\n //\n // Finally, Internal Balance can be used when either sending or receiving tokens.\n\n enum SwapKind { GIVEN_IN, GIVEN_OUT }\n\n /**\n * @dev Performs a swap with a single Pool.\n *\n * If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens\n * taken from the Pool, which must be greater than or equal to `limit`.\n *\n * If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens\n * sent to the Pool, which must be less than or equal to `limit`.\n *\n * Internal Balance usage and the recipient are determined by the `funds` struct.\n *\n * Emits a `Swap` event.\n */\n function swap(\n SingleSwap memory singleSwap,\n FundManagement memory funds,\n uint256 limit,\n uint256 deadline\n ) external payable returns (uint256);\n\n /**\n * @dev Data for a single swap executed by `swap`. `amount` is either `amountIn` or `amountOut` depending on\n * the `kind` value.\n *\n * `assetIn` and `assetOut` are either token addresses, or the IAsset sentinel value for ETH (the zero address).\n * Note that Pools never interact with ETH directly: it will be wrapped to or unwrapped from WETH by the Vault.\n *\n * The `userData` field is ignored by the Vault, but forwarded to the Pool in the `onSwap` hook, and may be\n * used to extend swap behavior.\n */\n struct SingleSwap {\n bytes32 poolId;\n SwapKind kind;\n IAsset assetIn;\n IAsset assetOut;\n uint256 amount;\n bytes userData;\n }\n\n /**\n * @dev Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either\n * the amount of tokens sent to or received from the Pool, depending on the `kind` value.\n *\n * Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the\n * Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at\n * the same index in the `assets` array.\n *\n * Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a\n * Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or\n * `amountOut` depending on the swap kind.\n *\n * Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out\n * of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal\n * the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`.\n *\n * The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses,\n * or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and\n * out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to\n * or unwrapped from WETH by the Vault.\n *\n * Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies\n * the minimum or maximum amount of each token the vault is allowed to transfer.\n *\n * `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the\n * equivalent `swap` call.\n *\n * Emits `Swap` events.\n */\n function batchSwap(\n SwapKind kind,\n BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n FundManagement memory funds,\n int256[] memory limits,\n uint256 deadline\n ) external payable returns (int256[] memory);\n\n /**\n * @dev Data for each individual swap executed by `batchSwap`. The asset in and out fields are indexes into the\n * `assets` array passed to that function, and ETH assets are converted to WETH.\n *\n * If `amount` is zero, the multihop mechanism is used to determine the actual amount based on the amount in/out\n * from the previous swap, depending on the swap kind.\n *\n * The `userData` field is ignored by the Vault, but forwarded to the Pool in the `onSwap` hook, and may be\n * used to extend swap behavior.\n */\n struct BatchSwapStep {\n bytes32 poolId;\n uint256 assetInIndex;\n uint256 assetOutIndex;\n uint256 amount;\n bytes userData;\n }\n\n /**\n * @dev Emitted for each individual swap performed by `swap` or `batchSwap`.\n */\n event Swap(\n bytes32 indexed poolId,\n IERC20 indexed tokenIn,\n IERC20 indexed tokenOut,\n uint256 amountIn,\n uint256 amountOut\n );\n\n /**\n * @dev All tokens in a swap are either sent from the `sender` account to the Vault, or from the Vault to the\n * `recipient` account.\n *\n * If the caller is not `sender`, it must be an authorized relayer for them.\n *\n * If `fromInternalBalance` is true, the `sender`'s Internal Balance will be preferred, performing an ERC20\n * transfer for the difference between the requested amount and the User's Internal Balance (if any). The `sender`\n * must have allowed the Vault to use their tokens via `IERC20.approve()`. This matches the behavior of\n * `joinPool`.\n *\n * If `toInternalBalance` is true, tokens will be deposited to `recipient`'s internal balance instead of\n * transferred. This matches the behavior of `exitPool`.\n *\n * Note that ETH cannot be deposited to or withdrawn from Internal Balance: attempting to do so will trigger a\n * revert.\n */\n struct FundManagement {\n address sender;\n bool fromInternalBalance;\n address payable recipient;\n bool toInternalBalance;\n }\n\n /**\n * @dev Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be\n * simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result.\n *\n * Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH)\n * the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it\n * receives are the same that an equivalent `batchSwap` call would receive.\n *\n * Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct.\n * This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens,\n * approve them for the Vault, or even know a user's address.\n *\n * Note that this function is not 'view' (due to implementation details): the client code must explicitly execute\n * eth_call instead of eth_sendTransaction.\n */\n function queryBatchSwap(\n SwapKind kind,\n BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n FundManagement memory funds\n ) external returns (int256[] memory assetDeltas);\n\n // Flash Loans\n\n /**\n * @dev Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it,\n * and then reverting unless the tokens plus a proportional protocol fee have been returned.\n *\n * The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount\n * for each token contract. `tokens` must be sorted in ascending order.\n *\n * The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the\n * `receiveFlashLoan` call.\n *\n * Emits `FlashLoan` events.\n */\n function flashLoan(\n IFlashLoanRecipient recipient,\n IERC20[] memory tokens,\n uint256[] memory amounts,\n bytes memory userData\n ) external;\n\n /**\n * @dev Emitted for each individual flash loan performed by `flashLoan`.\n */\n event FlashLoan(IFlashLoanRecipient indexed recipient, IERC20 indexed token, uint256 amount, uint256 feeAmount);\n\n // Asset Management\n //\n // Each token registered for a Pool can be assigned an Asset Manager, which is able to freely withdraw the Pool's\n // tokens from the Vault, deposit them, or assign arbitrary values to its `managed` balance (see\n // `getPoolTokenInfo`). This makes them extremely powerful and dangerous. Even if an Asset Manager only directly\n // controls one of the tokens in a Pool, a malicious manager could set that token's balance to manipulate the\n // prices of the other tokens, and then drain the Pool with swaps. The risk of using Asset Managers is therefore\n // not constrained to the tokens they are managing, but extends to the entire Pool's holdings.\n //\n // However, a properly designed Asset Manager smart contract can be safely used for the Pool's benefit,\n // for example by lending unused tokens out for interest, or using them to participate in voting protocols.\n //\n // This concept is unrelated to the IAsset interface.\n\n /**\n * @dev Performs a set of Pool balance operations, which may be either withdrawals, deposits or updates.\n *\n * Pool Balance management features batching, which means a single contract call can be used to perform multiple\n * operations of different kinds, with different Pools and tokens, at once.\n *\n * For each operation, the caller must be registered as the Asset Manager for `token` in `poolId`.\n */\n function managePoolBalance(PoolBalanceOp[] memory ops) external;\n\n struct PoolBalanceOp {\n PoolBalanceOpKind kind;\n bytes32 poolId;\n IERC20 token;\n uint256 amount;\n }\n\n /**\n * Withdrawals decrease the Pool's cash, but increase its managed balance, leaving the total balance unchanged.\n *\n * Deposits increase the Pool's cash, but decrease its managed balance, leaving the total balance unchanged.\n *\n * Updates don't affect the Pool's cash balance, but because the managed balance changes, it does alter the total.\n * The external amount can be either increased or decreased by this call (i.e., reporting a gain or a loss).\n */\n enum PoolBalanceOpKind { WITHDRAW, DEPOSIT, UPDATE }\n\n /**\n * @dev Emitted when a Pool's token Asset Manager alters its balance via `managePoolBalance`.\n */\n event PoolBalanceManaged(\n bytes32 indexed poolId,\n address indexed assetManager,\n IERC20 indexed token,\n int256 cashDelta,\n int256 managedDelta\n );\n\n // Protocol Fees\n //\n // Some operations cause the Vault to collect tokens in the form of protocol fees, which can then be withdrawn by\n // permissioned accounts.\n //\n // There are two kinds of protocol fees:\n //\n // - flash loan fees: charged on all flash loans, as a percentage of the amounts lent.\n //\n // - swap fees: a percentage of the fees charged by Pools when performing swaps. For a number of reasons, including\n // swap gas costs and interface simplicity, protocol swap fees are not charged on each individual swap. Rather,\n // Pools are expected to keep track of how much they have charged in swap fees, and pay any outstanding debts to the\n // Vault when they are joined or exited. This prevents users from joining a Pool with unpaid debt, as well as\n // exiting a Pool in debt without first paying their share.\n\n /**\n * @dev Returns the current protocol fee module.\n */\n function getProtocolFeesCollector() external view returns (IProtocolFeesCollector);\n\n /**\n * @dev Safety mechanism to pause most Vault operations in the event of an emergency - typically detection of an\n * error in some part of the system.\n *\n * The Vault can only be paused during an initial time period, after which pausing is forever disabled.\n *\n * While the contract is paused, the following features are disabled:\n * - depositing and transferring internal balance\n * - transferring external balance (using the Vault's allowance)\n * - swaps\n * - joining Pools\n * - Asset Manager interactions\n *\n * Internal Balance can still be withdrawn, and Pools exited.\n */\n function setPaused(bool paused) external;\n\n /**\n * @dev Returns the Vault's WETH instance.\n */\n function WETH() external view returns (IWETH);\n // solhint-disable-previous-line func-name-mixedcase\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\";\n\n/**\n * @dev Building block for performing access control on external functions.\n *\n * This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied\n * to external functions to only make them callable by authorized accounts.\n *\n * Derived contracts must implement the `_canPerform` function, which holds the actual access control logic.\n */\nabstract contract Authentication is IAuthentication {\n bytes32 private immutable _actionIdDisambiguator;\n\n /**\n * @dev The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in\n * multi contract systems.\n *\n * There are two main uses for it:\n * - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers\n * unique. The contract's own address is a good option.\n * - if the contract belongs to a family that shares action identifiers for the same functions, an identifier\n * shared by the entire family (and no other contract) should be used instead.\n */\n constructor(bytes32 actionIdDisambiguator) {\n _actionIdDisambiguator = actionIdDisambiguator;\n }\n\n /**\n * @dev Reverts unless the caller is allowed to call this function. Should only be applied to external functions.\n */\n modifier authenticate() {\n _authenticateCaller();\n _;\n }\n\n /**\n * @dev Reverts unless the caller is allowed to call the entry point function.\n */\n function _authenticateCaller() internal view {\n bytes32 actionId = getActionId(msg.sig);\n _require(_canPerform(actionId, msg.sender), Errors.SENDER_NOT_ALLOWED);\n }\n\n function getActionId(bytes4 selector) public view override returns (bytes32) {\n // Each external function is dynamically assigned an action identifier as the hash of the disambiguator and the\n // function selector. Disambiguation is necessary to avoid potential collisions in the function selectors of\n // multiple contracts.\n return keccak256(abi.encodePacked(_actionIdDisambiguator, selector));\n }\n\n function _canPerform(bytes32 actionId, address user) internal view virtual returns (bool);\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\";\n\nimport \"../openzeppelin/EIP712.sol\";\n\n/**\n * @dev Utility for signing Solidity function calls.\n */\nabstract contract EOASignaturesValidator is ISignaturesValidator, EIP712 {\n // Replay attack prevention for each account.\n mapping(address => uint256) internal _nextNonce;\n\n function getDomainSeparator() public view override returns (bytes32) {\n return _domainSeparatorV4();\n }\n\n function getNextNonce(address account) public view override returns (uint256) {\n return _nextNonce[account];\n }\n\n function _ensureValidSignature(\n address account,\n bytes32 structHash,\n bytes memory signature,\n uint256 errorCode\n ) internal {\n return _ensureValidSignature(account, structHash, signature, type(uint256).max, errorCode);\n }\n\n function _ensureValidSignature(\n address account,\n bytes32 structHash,\n bytes memory signature,\n uint256 deadline,\n uint256 errorCode\n ) internal {\n bytes32 digest = _hashTypedDataV4(structHash);\n _require(_isValidSignature(account, digest, signature), errorCode);\n\n // We could check for the deadline before validating the signature, but this leads to saner error processing (as\n // we only care about expired deadlines if the signature is correct) and only affects the gas cost of the revert\n // scenario, which will only occur infrequently, if ever.\n // The deadline is timestamp-based: it should not be relied upon for sub-minute accuracy.\n // solhint-disable-next-line not-rely-on-time\n _require(deadline >= block.timestamp, Errors.EXPIRED_SIGNATURE);\n\n // We only advance the nonce after validating the signature. This is irrelevant for this module, but it can be\n // important in derived contracts that override _isValidSignature (e.g. SignaturesValidator), as we want for\n // the observable state to still have the current nonce as the next valid one.\n _nextNonce[account] += 1;\n }\n\n function _isValidSignature(\n address account,\n bytes32 digest,\n bytes memory signature\n ) internal view virtual returns (bool) {\n _require(signature.length == 65, Errors.MALFORMED_SIGNATURE);\n\n bytes32 r;\n bytes32 s;\n uint8 v;\n\n // ecrecover takes the r, s and v signature parameters, and the only way to get them is to use assembly.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n\n address recoveredAddress = ecrecover(digest, v, r, s);\n\n // ecrecover returns the zero address on recover failure, so we need to handle that explicitly.\n return (recoveredAddress != address(0) && recoveredAddress == account);\n }\n\n function _toArraySignature(\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (bytes memory) {\n bytes memory signature = new bytes(65);\n // solhint-disable-next-line no-inline-assembly\n assembly {\n mstore(add(signature, 32), r)\n mstore(add(signature, 64), s)\n mstore8(add(signature, 96), v)\n }\n\n return signature;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\nlibrary InputHelpers {\n function ensureInputLengthMatch(uint256 a, uint256 b) internal pure {\n _require(a == b, Errors.INPUT_LENGTH_MISMATCH);\n }\n\n function ensureInputLengthMatch(\n uint256 a,\n uint256 b,\n uint256 c\n ) internal pure {\n _require(a == b && b == c, Errors.INPUT_LENGTH_MISMATCH);\n }\n\n function ensureArrayIsSorted(IERC20[] memory array) internal pure {\n address[] memory addressArray;\n // solhint-disable-next-line no-inline-assembly\n assembly {\n addressArray := array\n }\n ensureArrayIsSorted(addressArray);\n }\n\n function ensureArrayIsSorted(address[] memory array) internal pure {\n if (array.length < 2) {\n return;\n }\n\n address previous = array[0];\n for (uint256 i = 1; i < array.length; ++i) {\n address current = array[i];\n _require(previous < current, Errors.UNSORTED_ARRAY);\n previous = current;\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\nimport \"./SignaturesValidator.sol\";\n\nabstract contract OptionalOnlyCaller is IOptionalOnlyCaller, SignaturesValidator {\n mapping(address => bool) private _isOnlyCallerEnabled;\n\n bytes32 private constant _SET_ONLY_CALLER_CHECK_TYPEHASH = keccak256(\n \"SetOnlyCallerCheck(address user,bool enabled,uint256 nonce)\"\n );\n\n /**\n * @dev Reverts if the verification mechanism is enabled and the given address is not the caller.\n * @param user - Address to validate as the only allowed caller, if the verification is enabled.\n */\n modifier optionalOnlyCaller(address user) {\n _verifyCaller(user);\n _;\n }\n\n function setOnlyCallerCheck(bool enabled) external override {\n _setOnlyCallerCheck(msg.sender, enabled);\n }\n\n function setOnlyCallerCheckWithSignature(\n address user,\n bool enabled,\n bytes memory signature\n ) external override {\n bytes32 structHash = keccak256(abi.encode(_SET_ONLY_CALLER_CHECK_TYPEHASH, user, enabled, getNextNonce(user)));\n _ensureValidSignature(user, structHash, signature, Errors.INVALID_SIGNATURE);\n _setOnlyCallerCheck(user, enabled);\n }\n\n function _setOnlyCallerCheck(address user, bool enabled) private {\n _isOnlyCallerEnabled[user] = enabled;\n emit OnlyCallerOptIn(user, enabled);\n }\n\n function isOnlyCallerEnabled(address user) external view override returns (bool) {\n return _isOnlyCallerEnabled[user];\n }\n\n function _verifyCaller(address user) private view {\n if (_isOnlyCallerEnabled[user]) {\n _require(msg.sender == user, Errors.SENDER_NOT_ALLOWED);\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol\";\n\nimport \"./EOASignaturesValidator.sol\";\nimport \"../openzeppelin/Address.sol\";\n\n/**\n * @dev Utility for signing Solidity function calls.\n */\nabstract contract SignaturesValidator is EOASignaturesValidator {\n using Address for address;\n\n function _isValidSignature(\n address account,\n bytes32 digest,\n bytes memory signature\n ) internal view virtual override returns (bool) {\n if (account.isContract()) {\n return IERC1271(account).isValidSignature(digest, signature) == IERC1271.isValidSignature.selector;\n } else {\n return super._isValidSignature(account, digest, signature);\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"./Authentication.sol\";\n\nabstract contract SingletonAuthentication is Authentication {\n IVault private immutable _vault;\n\n // Use the contract's own address to disambiguate action identifiers\n constructor(IVault vault) Authentication(bytes32(uint256(address(this)))) {\n _vault = vault;\n }\n\n /**\n * @notice Returns the Balancer Vault\n */\n function getVault() public view returns (IVault) {\n return _vault;\n }\n\n /**\n * @notice Returns the Authorizer\n */\n function getAuthorizer() public view returns (IAuthorizer) {\n return getVault().getAuthorizer();\n }\n\n function _canPerform(bytes32 actionId, address account) internal view override returns (bool) {\n return getAuthorizer().canPerform(actionId, account, address(this));\n }\n\n function _canPerform(\n bytes32 actionId,\n address account,\n address where\n ) internal view returns (bool) {\n return getAuthorizer().canPerform(actionId, account, where);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\";\n\n/**\n * @notice Retrieves a contract's version set at creation time from storage.\n */\ncontract Version is IVersion {\n string private _version;\n\n constructor(string memory version) {\n _setVersion(version);\n }\n\n function version() external view override returns (string memory) {\n return _version;\n }\n\n /**\n * @dev Internal setter that allows this contract to be used in proxies.\n */\n function _setVersion(string memory newVersion) internal {\n _version = newVersion;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\nimport \"./LogExpMath.sol\";\n\n/* solhint-disable private-vars-leading-underscore */\n\nlibrary FixedPoint {\n // solhint-disable no-inline-assembly\n\n uint256 internal constant ONE = 1e18; // 18 decimal places\n uint256 internal constant TWO = 2 * ONE;\n uint256 internal constant FOUR = 4 * ONE;\n uint256 internal constant MAX_POW_RELATIVE_ERROR = 10000; // 10^(-14)\n\n // Minimum base for the power function when the exponent is 'free' (larger than ONE).\n uint256 internal constant MIN_POW_BASE_FREE_EXPONENT = 0.7e18;\n\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n // Fixed Point addition is the same as regular checked addition\n\n uint256 c = a + b;\n _require(c >= a, Errors.ADD_OVERFLOW);\n return c;\n }\n\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n // Fixed Point addition is the same as regular checked addition\n\n _require(b <= a, Errors.SUB_OVERFLOW);\n uint256 c = a - b;\n return c;\n }\n\n function mulDown(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 product = a * b;\n _require(a == 0 || product / a == b, Errors.MUL_OVERFLOW);\n\n return product / ONE;\n }\n\n function mulUp(uint256 a, uint256 b) internal pure returns (uint256 result) {\n uint256 product = a * b;\n _require(a == 0 || product / a == b, Errors.MUL_OVERFLOW);\n\n // The traditional divUp formula is:\n // divUp(x, y) := (x + y - 1) / y\n // To avoid intermediate overflow in the addition, we distribute the division and get:\n // divUp(x, y) := (x - 1) / y + 1\n // Note that this requires x != 0, if x == 0 then the result is zero\n //\n // Equivalent to:\n // result = product == 0 ? 0 : ((product - 1) / FixedPoint.ONE) + 1;\n assembly {\n result := mul(iszero(iszero(product)), add(div(sub(product, 1), ONE), 1))\n }\n }\n\n function divDown(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b != 0, Errors.ZERO_DIVISION);\n\n uint256 aInflated = a * ONE;\n _require(a == 0 || aInflated / a == ONE, Errors.DIV_INTERNAL); // mul overflow\n\n return aInflated / b;\n }\n\n function divUp(uint256 a, uint256 b) internal pure returns (uint256 result) {\n _require(b != 0, Errors.ZERO_DIVISION);\n\n uint256 aInflated = a * ONE;\n _require(a == 0 || aInflated / a == ONE, Errors.DIV_INTERNAL); // mul overflow\n\n // The traditional divUp formula is:\n // divUp(x, y) := (x + y - 1) / y\n // To avoid intermediate overflow in the addition, we distribute the division and get:\n // divUp(x, y) := (x - 1) / y + 1\n // Note that this requires x != 0, if x == 0 then the result is zero\n //\n // Equivalent to:\n // result = a == 0 ? 0 : (a * FixedPoint.ONE - 1) / b + 1;\n assembly {\n result := mul(iszero(iszero(aInflated)), add(div(sub(aInflated, 1), b), 1))\n }\n }\n\n /**\n * @dev Returns x^y, assuming both are fixed point numbers, rounding down. The result is guaranteed to not be above\n * the true value (that is, the error function expected - actual is always positive).\n */\n function powDown(uint256 x, uint256 y) internal pure returns (uint256) {\n // Optimize for when y equals 1.0, 2.0 or 4.0, as those are very simple to implement and occur often in 50/50\n // and 80/20 Weighted Pools\n if (y == ONE) {\n return x;\n } else if (y == TWO) {\n return mulDown(x, x);\n } else if (y == FOUR) {\n uint256 square = mulDown(x, x);\n return mulDown(square, square);\n } else {\n uint256 raw = LogExpMath.pow(x, y);\n uint256 maxError = add(mulUp(raw, MAX_POW_RELATIVE_ERROR), 1);\n\n if (raw < maxError) {\n return 0;\n } else {\n return sub(raw, maxError);\n }\n }\n }\n\n /**\n * @dev Returns x^y, assuming both are fixed point numbers, rounding up. The result is guaranteed to not be below\n * the true value (that is, the error function expected - actual is always negative).\n */\n function powUp(uint256 x, uint256 y) internal pure returns (uint256) {\n // Optimize for when y equals 1.0, 2.0 or 4.0, as those are very simple to implement and occur often in 50/50\n // and 80/20 Weighted Pools\n if (y == ONE) {\n return x;\n } else if (y == TWO) {\n return mulUp(x, x);\n } else if (y == FOUR) {\n uint256 square = mulUp(x, x);\n return mulUp(square, square);\n } else {\n uint256 raw = LogExpMath.pow(x, y);\n uint256 maxError = add(mulUp(raw, MAX_POW_RELATIVE_ERROR), 1);\n\n return add(raw, maxError);\n }\n }\n\n /**\n * @dev Returns the complement of a value (1 - x), capped to 0 if x is larger than 1.\n *\n * Useful when computing the complement for values with some level of relative error, as it strips this error and\n * prevents intermediate negative values.\n */\n function complement(uint256 x) internal pure returns (uint256 result) {\n // Equivalent to:\n // result = (x < ONE) ? (ONE - x) : 0;\n assembly {\n result := mul(lt(x, ONE), sub(ONE, x))\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n// documentation files (the “Software”), to deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the\n// Software.\n\n// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE\n// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/* solhint-disable */\n\n/**\n * @dev Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument).\n *\n * Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural\n * exponentiation and logarithm (where the base is Euler's number).\n *\n * @author Fernando Martinelli - @fernandomartinelli\n * @author Sergio Yuhjtman - @sergioyuhjtman\n * @author Daniel Fernandez - @dmf7z\n */\nlibrary LogExpMath {\n // All fixed point multiplications and divisions are inlined. This means we need to divide by ONE when multiplying\n // two numbers, and multiply by ONE when dividing them.\n\n // All arguments and return values are 18 decimal fixed point numbers.\n int256 constant ONE_18 = 1e18;\n\n // Internally, intermediate values are computed with higher precision as 20 decimal fixed point numbers, and in the\n // case of ln36, 36 decimals.\n int256 constant ONE_20 = 1e20;\n int256 constant ONE_36 = 1e36;\n\n // The domain of natural exponentiation is bound by the word size and number of decimals used.\n //\n // Because internally the result will be stored using 20 decimals, the largest possible result is\n // (2^255 - 1) / 10^20, which makes the largest exponent ln((2^255 - 1) / 10^20) = 130.700829182905140221.\n // The smallest possible result is 10^(-18), which makes largest negative argument\n // ln(10^(-18)) = -41.446531673892822312.\n // We use 130.0 and -41.0 to have some safety margin.\n int256 constant MAX_NATURAL_EXPONENT = 130e18;\n int256 constant MIN_NATURAL_EXPONENT = -41e18;\n\n // Bounds for ln_36's argument. Both ln(0.9) and ln(1.1) can be represented with 36 decimal places in a fixed point\n // 256 bit integer.\n int256 constant LN_36_LOWER_BOUND = ONE_18 - 1e17;\n int256 constant LN_36_UPPER_BOUND = ONE_18 + 1e17;\n\n uint256 constant MILD_EXPONENT_BOUND = 2**254 / uint256(ONE_20);\n\n // 18 decimal constants\n int256 constant x0 = 128000000000000000000; // 2ˆ7\n int256 constant a0 = 38877084059945950922200000000000000000000000000000000000; // eˆ(x0) (no decimals)\n int256 constant x1 = 64000000000000000000; // 2ˆ6\n int256 constant a1 = 6235149080811616882910000000; // eˆ(x1) (no decimals)\n\n // 20 decimal constants\n int256 constant x2 = 3200000000000000000000; // 2ˆ5\n int256 constant a2 = 7896296018268069516100000000000000; // eˆ(x2)\n int256 constant x3 = 1600000000000000000000; // 2ˆ4\n int256 constant a3 = 888611052050787263676000000; // eˆ(x3)\n int256 constant x4 = 800000000000000000000; // 2ˆ3\n int256 constant a4 = 298095798704172827474000; // eˆ(x4)\n int256 constant x5 = 400000000000000000000; // 2ˆ2\n int256 constant a5 = 5459815003314423907810; // eˆ(x5)\n int256 constant x6 = 200000000000000000000; // 2ˆ1\n int256 constant a6 = 738905609893065022723; // eˆ(x6)\n int256 constant x7 = 100000000000000000000; // 2ˆ0\n int256 constant a7 = 271828182845904523536; // eˆ(x7)\n int256 constant x8 = 50000000000000000000; // 2ˆ-1\n int256 constant a8 = 164872127070012814685; // eˆ(x8)\n int256 constant x9 = 25000000000000000000; // 2ˆ-2\n int256 constant a9 = 128402541668774148407; // eˆ(x9)\n int256 constant x10 = 12500000000000000000; // 2ˆ-3\n int256 constant a10 = 113314845306682631683; // eˆ(x10)\n int256 constant x11 = 6250000000000000000; // 2ˆ-4\n int256 constant a11 = 106449445891785942956; // eˆ(x11)\n\n /**\n * @dev Exponentiation (x^y) with unsigned 18 decimal fixed point base and exponent.\n *\n * Reverts if ln(x) * y is smaller than `MIN_NATURAL_EXPONENT`, or larger than `MAX_NATURAL_EXPONENT`.\n */\n function pow(uint256 x, uint256 y) internal pure returns (uint256) {\n if (y == 0) {\n // We solve the 0^0 indetermination by making it equal one.\n return uint256(ONE_18);\n }\n\n if (x == 0) {\n return 0;\n }\n\n // Instead of computing x^y directly, we instead rely on the properties of logarithms and exponentiation to\n // arrive at that result. In particular, exp(ln(x)) = x, and ln(x^y) = y * ln(x). This means\n // x^y = exp(y * ln(x)).\n\n // The ln function takes a signed value, so we need to make sure x fits in the signed 256 bit range.\n _require(x >> 255 == 0, Errors.X_OUT_OF_BOUNDS);\n int256 x_int256 = int256(x);\n\n // We will compute y * ln(x) in a single step. Depending on the value of x, we can either use ln or ln_36. In\n // both cases, we leave the division by ONE_18 (due to fixed point multiplication) to the end.\n\n // This prevents y * ln(x) from overflowing, and at the same time guarantees y fits in the signed 256 bit range.\n _require(y < MILD_EXPONENT_BOUND, Errors.Y_OUT_OF_BOUNDS);\n int256 y_int256 = int256(y);\n\n int256 logx_times_y;\n if (LN_36_LOWER_BOUND < x_int256 && x_int256 < LN_36_UPPER_BOUND) {\n int256 ln_36_x = _ln_36(x_int256);\n\n // ln_36_x has 36 decimal places, so multiplying by y_int256 isn't as straightforward, since we can't just\n // bring y_int256 to 36 decimal places, as it might overflow. Instead, we perform two 18 decimal\n // multiplications and add the results: one with the first 18 decimals of ln_36_x, and one with the\n // (downscaled) last 18 decimals.\n logx_times_y = ((ln_36_x / ONE_18) * y_int256 + ((ln_36_x % ONE_18) * y_int256) / ONE_18);\n } else {\n logx_times_y = _ln(x_int256) * y_int256;\n }\n logx_times_y /= ONE_18;\n\n // Finally, we compute exp(y * ln(x)) to arrive at x^y\n _require(\n MIN_NATURAL_EXPONENT <= logx_times_y && logx_times_y <= MAX_NATURAL_EXPONENT,\n Errors.PRODUCT_OUT_OF_BOUNDS\n );\n\n return uint256(exp(logx_times_y));\n }\n\n /**\n * @dev Natural exponentiation (e^x) with signed 18 decimal fixed point exponent.\n *\n * Reverts if `x` is smaller than MIN_NATURAL_EXPONENT, or larger than `MAX_NATURAL_EXPONENT`.\n */\n function exp(int256 x) internal pure returns (int256) {\n _require(x >= MIN_NATURAL_EXPONENT && x <= MAX_NATURAL_EXPONENT, Errors.INVALID_EXPONENT);\n\n if (x < 0) {\n // We only handle positive exponents: e^(-x) is computed as 1 / e^x. We can safely make x positive since it\n // fits in the signed 256 bit range (as it is larger than MIN_NATURAL_EXPONENT).\n // Fixed point division requires multiplying by ONE_18.\n return ((ONE_18 * ONE_18) / exp(-x));\n }\n\n // First, we use the fact that e^(x+y) = e^x * e^y to decompose x into a sum of powers of two, which we call x_n,\n // where x_n == 2^(7 - n), and e^x_n = a_n has been precomputed. We choose the first x_n, x0, to equal 2^7\n // because all larger powers are larger than MAX_NATURAL_EXPONENT, and therefore not present in the\n // decomposition.\n // At the end of this process we will have the product of all e^x_n = a_n that apply, and the remainder of this\n // decomposition, which will be lower than the smallest x_n.\n // exp(x) = k_0 * a_0 * k_1 * a_1 * ... + k_n * a_n * exp(remainder), where each k_n equals either 0 or 1.\n // We mutate x by subtracting x_n, making it the remainder of the decomposition.\n\n // The first two a_n (e^(2^7) and e^(2^6)) are too large if stored as 18 decimal numbers, and could cause\n // intermediate overflows. Instead we store them as plain integers, with 0 decimals.\n // Additionally, x0 + x1 is larger than MAX_NATURAL_EXPONENT, which means they will not both be present in the\n // decomposition.\n\n // For each x_n, we test if that term is present in the decomposition (if x is larger than it), and if so deduct\n // it and compute the accumulated product.\n\n int256 firstAN;\n if (x >= x0) {\n x -= x0;\n firstAN = a0;\n } else if (x >= x1) {\n x -= x1;\n firstAN = a1;\n } else {\n firstAN = 1; // One with no decimal places\n }\n\n // We now transform x into a 20 decimal fixed point number, to have enhanced precision when computing the\n // smaller terms.\n x *= 100;\n\n // `product` is the accumulated product of all a_n (except a0 and a1), which starts at 20 decimal fixed point\n // one. Recall that fixed point multiplication requires dividing by ONE_20.\n int256 product = ONE_20;\n\n if (x >= x2) {\n x -= x2;\n product = (product * a2) / ONE_20;\n }\n if (x >= x3) {\n x -= x3;\n product = (product * a3) / ONE_20;\n }\n if (x >= x4) {\n x -= x4;\n product = (product * a4) / ONE_20;\n }\n if (x >= x5) {\n x -= x5;\n product = (product * a5) / ONE_20;\n }\n if (x >= x6) {\n x -= x6;\n product = (product * a6) / ONE_20;\n }\n if (x >= x7) {\n x -= x7;\n product = (product * a7) / ONE_20;\n }\n if (x >= x8) {\n x -= x8;\n product = (product * a8) / ONE_20;\n }\n if (x >= x9) {\n x -= x9;\n product = (product * a9) / ONE_20;\n }\n\n // x10 and x11 are unnecessary here since we have high enough precision already.\n\n // Now we need to compute e^x, where x is small (in particular, it is smaller than x9). We use the Taylor series\n // expansion for e^x: 1 + x + (x^2 / 2!) + (x^3 / 3!) + ... + (x^n / n!).\n\n int256 seriesSum = ONE_20; // The initial one in the sum, with 20 decimal places.\n int256 term; // Each term in the sum, where the nth term is (x^n / n!).\n\n // The first term is simply x.\n term = x;\n seriesSum += term;\n\n // Each term (x^n / n!) equals the previous one times x, divided by n. Since x is a fixed point number,\n // multiplying by it requires dividing by ONE_20, but dividing by the non-fixed point n values does not.\n\n term = ((term * x) / ONE_20) / 2;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 3;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 4;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 5;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 6;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 7;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 8;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 9;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 10;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 11;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 12;\n seriesSum += term;\n\n // 12 Taylor terms are sufficient for 18 decimal precision.\n\n // We now have the first a_n (with no decimals), and the product of all other a_n present, and the Taylor\n // approximation of the exponentiation of the remainder (both with 20 decimals). All that remains is to multiply\n // all three (one 20 decimal fixed point multiplication, dividing by ONE_20, and one integer multiplication),\n // and then drop two digits to return an 18 decimal value.\n\n return (((product * seriesSum) / ONE_20) * firstAN) / 100;\n }\n\n /**\n * @dev Logarithm (log(arg, base), with signed 18 decimal fixed point base and argument.\n */\n function log(int256 arg, int256 base) internal pure returns (int256) {\n // This performs a simple base change: log(arg, base) = ln(arg) / ln(base).\n\n // Both logBase and logArg are computed as 36 decimal fixed point numbers, either by using ln_36, or by\n // upscaling.\n\n int256 logBase;\n if (LN_36_LOWER_BOUND < base && base < LN_36_UPPER_BOUND) {\n logBase = _ln_36(base);\n } else {\n logBase = _ln(base) * ONE_18;\n }\n\n int256 logArg;\n if (LN_36_LOWER_BOUND < arg && arg < LN_36_UPPER_BOUND) {\n logArg = _ln_36(arg);\n } else {\n logArg = _ln(arg) * ONE_18;\n }\n\n // When dividing, we multiply by ONE_18 to arrive at a result with 18 decimal places\n return (logArg * ONE_18) / logBase;\n }\n\n /**\n * @dev Natural logarithm (ln(a)) with signed 18 decimal fixed point argument.\n */\n function ln(int256 a) internal pure returns (int256) {\n // The real natural logarithm is not defined for negative numbers or zero.\n _require(a > 0, Errors.OUT_OF_BOUNDS);\n if (LN_36_LOWER_BOUND < a && a < LN_36_UPPER_BOUND) {\n return _ln_36(a) / ONE_18;\n } else {\n return _ln(a);\n }\n }\n\n /**\n * @dev Internal natural logarithm (ln(a)) with signed 18 decimal fixed point argument.\n */\n function _ln(int256 a) private pure returns (int256) {\n if (a < ONE_18) {\n // Since ln(a^k) = k * ln(a), we can compute ln(a) as ln(a) = ln((1/a)^(-1)) = - ln((1/a)). If a is less\n // than one, 1/a will be greater than one, and this if statement will not be entered in the recursive call.\n // Fixed point division requires multiplying by ONE_18.\n return (-_ln((ONE_18 * ONE_18) / a));\n }\n\n // First, we use the fact that ln^(a * b) = ln(a) + ln(b) to decompose ln(a) into a sum of powers of two, which\n // we call x_n, where x_n == 2^(7 - n), which are the natural logarithm of precomputed quantities a_n (that is,\n // ln(a_n) = x_n). We choose the first x_n, x0, to equal 2^7 because the exponential of all larger powers cannot\n // be represented as 18 fixed point decimal numbers in 256 bits, and are therefore larger than a.\n // At the end of this process we will have the sum of all x_n = ln(a_n) that apply, and the remainder of this\n // decomposition, which will be lower than the smallest a_n.\n // ln(a) = k_0 * x_0 + k_1 * x_1 + ... + k_n * x_n + ln(remainder), where each k_n equals either 0 or 1.\n // We mutate a by subtracting a_n, making it the remainder of the decomposition.\n\n // For reasons related to how `exp` works, the first two a_n (e^(2^7) and e^(2^6)) are not stored as fixed point\n // numbers with 18 decimals, but instead as plain integers with 0 decimals, so we need to multiply them by\n // ONE_18 to convert them to fixed point.\n // For each a_n, we test if that term is present in the decomposition (if a is larger than it), and if so divide\n // by it and compute the accumulated sum.\n\n int256 sum = 0;\n if (a >= a0 * ONE_18) {\n a /= a0; // Integer, not fixed point division\n sum += x0;\n }\n\n if (a >= a1 * ONE_18) {\n a /= a1; // Integer, not fixed point division\n sum += x1;\n }\n\n // All other a_n and x_n are stored as 20 digit fixed point numbers, so we convert the sum and a to this format.\n sum *= 100;\n a *= 100;\n\n // Because further a_n are 20 digit fixed point numbers, we multiply by ONE_20 when dividing by them.\n\n if (a >= a2) {\n a = (a * ONE_20) / a2;\n sum += x2;\n }\n\n if (a >= a3) {\n a = (a * ONE_20) / a3;\n sum += x3;\n }\n\n if (a >= a4) {\n a = (a * ONE_20) / a4;\n sum += x4;\n }\n\n if (a >= a5) {\n a = (a * ONE_20) / a5;\n sum += x5;\n }\n\n if (a >= a6) {\n a = (a * ONE_20) / a6;\n sum += x6;\n }\n\n if (a >= a7) {\n a = (a * ONE_20) / a7;\n sum += x7;\n }\n\n if (a >= a8) {\n a = (a * ONE_20) / a8;\n sum += x8;\n }\n\n if (a >= a9) {\n a = (a * ONE_20) / a9;\n sum += x9;\n }\n\n if (a >= a10) {\n a = (a * ONE_20) / a10;\n sum += x10;\n }\n\n if (a >= a11) {\n a = (a * ONE_20) / a11;\n sum += x11;\n }\n\n // a is now a small number (smaller than a_11, which roughly equals 1.06). This means we can use a Taylor series\n // that converges rapidly for values of `a` close to one - the same one used in ln_36.\n // Let z = (a - 1) / (a + 1).\n // ln(a) = 2 * (z + z^3 / 3 + z^5 / 5 + z^7 / 7 + ... + z^(2 * n + 1) / (2 * n + 1))\n\n // Recall that 20 digit fixed point division requires multiplying by ONE_20, and multiplication requires\n // division by ONE_20.\n int256 z = ((a - ONE_20) * ONE_20) / (a + ONE_20);\n int256 z_squared = (z * z) / ONE_20;\n\n // num is the numerator of the series: the z^(2 * n + 1) term\n int256 num = z;\n\n // seriesSum holds the accumulated sum of each term in the series, starting with the initial z\n int256 seriesSum = num;\n\n // In each step, the numerator is multiplied by z^2\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 3;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 5;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 7;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 9;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 11;\n\n // 6 Taylor terms are sufficient for 36 decimal precision.\n\n // Finally, we multiply by 2 (non fixed point) to compute ln(remainder)\n seriesSum *= 2;\n\n // We now have the sum of all x_n present, and the Taylor approximation of the logarithm of the remainder (both\n // with 20 decimals). All that remains is to sum these two, and then drop two digits to return a 18 decimal\n // value.\n\n return (sum + seriesSum) / 100;\n }\n\n /**\n * @dev Intrnal high precision (36 decimal places) natural logarithm (ln(x)) with signed 18 decimal fixed point argument,\n * for x close to one.\n *\n * Should only be used if x is between LN_36_LOWER_BOUND and LN_36_UPPER_BOUND.\n */\n function _ln_36(int256 x) private pure returns (int256) {\n // Since ln(1) = 0, a value of x close to one will yield a very small result, which makes using 36 digits\n // worthwhile.\n\n // First, we transform x to a 36 digit fixed point value.\n x *= ONE_18;\n\n // We will use the following Taylor expansion, which converges very rapidly. Let z = (x - 1) / (x + 1).\n // ln(x) = 2 * (z + z^3 / 3 + z^5 / 5 + z^7 / 7 + ... + z^(2 * n + 1) / (2 * n + 1))\n\n // Recall that 36 digit fixed point division requires multiplying by ONE_36, and multiplication requires\n // division by ONE_36.\n int256 z = ((x - ONE_36) * ONE_36) / (x + ONE_36);\n int256 z_squared = (z * z) / ONE_36;\n\n // num is the numerator of the series: the z^(2 * n + 1) term\n int256 num = z;\n\n // seriesSum holds the accumulated sum of each term in the series, starting with the initial z\n int256 seriesSum = num;\n\n // In each step, the numerator is multiplied by z^2\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 3;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 5;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 7;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 9;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 11;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 13;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 15;\n\n // 8 Taylor terms are sufficient for 36 decimal precision.\n\n // All that remains is multiplying by 2 (non fixed point).\n return seriesSum * 2;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow checks.\n * Adapted from OpenZeppelin's SafeMath library.\n */\nlibrary Math {\n // solhint-disable no-inline-assembly\n\n /**\n * @dev Returns the absolute value of a signed integer.\n */\n function abs(int256 a) internal pure returns (uint256 result) {\n // Equivalent to:\n // result = a > 0 ? uint256(a) : uint256(-a)\n assembly {\n let s := sar(255, a)\n result := sub(xor(a, s), s)\n }\n }\n\n /**\n * @dev Returns the addition of two unsigned integers of 256 bits, reverting on overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n _require(c >= a, Errors.ADD_OVERFLOW);\n return c;\n }\n\n /**\n * @dev Returns the addition of two signed integers, reverting on overflow.\n */\n function add(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a + b;\n _require((b >= 0 && c >= a) || (b < 0 && c < a), Errors.ADD_OVERFLOW);\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers of 256 bits, reverting on overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b <= a, Errors.SUB_OVERFLOW);\n uint256 c = a - b;\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two signed integers, reverting on overflow.\n */\n function sub(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a - b;\n _require((b >= 0 && c <= a) || (b < 0 && c > a), Errors.SUB_OVERFLOW);\n return c;\n }\n\n /**\n * @dev Returns the largest of two numbers of 256 bits.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256 result) {\n // Equivalent to:\n // result = (a < b) ? b : a;\n assembly {\n result := sub(a, mul(sub(a, b), lt(a, b)))\n }\n }\n\n /**\n * @dev Returns the smallest of two numbers of 256 bits.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256 result) {\n // Equivalent to `result = (a < b) ? a : b`\n assembly {\n result := sub(a, mul(sub(a, b), gt(a, b)))\n }\n }\n\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a * b;\n _require(a == 0 || c / a == b, Errors.MUL_OVERFLOW);\n return c;\n }\n\n function div(\n uint256 a,\n uint256 b,\n bool roundUp\n ) internal pure returns (uint256) {\n return roundUp ? divUp(a, b) : divDown(a, b);\n }\n\n function divDown(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b != 0, Errors.ZERO_DIVISION);\n return a / b;\n }\n\n function divUp(uint256 a, uint256 b) internal pure returns (uint256 result) {\n _require(b != 0, Errors.ZERO_DIVISION);\n\n // Equivalent to:\n // result = a == 0 ? 0 : 1 + (a - 1) / b;\n assembly {\n result := mul(iszero(iszero(a)), add(1, div(sub(a, 1), b)))\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the Address library from OpenZeppelin Contracts, altered by removing the `isContract` checks on\n// `functionCall` and `functionDelegateCall` in order to save gas, as the recipients are known to be contracts.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize, which returns 0 for contracts in\n // construction, since the code is only stored at the end of the\n // constructor execution.\n\n uint256 size;\n // solhint-disable-next-line no-inline-assembly\n assembly {\n size := extcodesize(account)\n }\n return size > 0;\n }\n\n // solhint-disable max-line-length\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n _require(address(this).balance >= amount, Errors.ADDRESS_INSUFFICIENT_BALANCE);\n\n // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n (bool success, ) = recipient.call{ value: amount }(\"\");\n _require(success, Errors.ADDRESS_CANNOT_SEND_VALUE);\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.call(data);\n return verifyCallResult(success, returndata);\n }\n\n // solhint-enable max-line-length\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but passing some native ETH as msg.value to the call.\n *\n * _Available since v3.4._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.call{ value: value }(data);\n return verifyCallResult(success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling up the\n * revert reason or using the one provided.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n // solhint-disable-next-line no-inline-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n _revert(Errors.LOW_LEVEL_CALL_FAILED);\n }\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/Clones.sol)\n\npragma solidity ^0.7.0;\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n * deploying minimal proxy contracts, also known as \"clones\".\n *\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n *\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n * deterministic method.\n *\n * _Available since v3.4._\n */\nlibrary Clones {\n // solhint-disable no-inline-assembly\n\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create opcode, which should never revert.\n */\n function clone(address implementation) internal returns (address instance) {\n assembly {\n let ptr := mload(0x40)\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\n instance := create(0, ptr, 0x37)\n }\n require(instance != address(0), \"ERC1167: create failed\");\n }\n\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create2 opcode and a `salt` to deterministically deploy\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\n * the clones cannot be deployed twice at the same address.\n */\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\n assembly {\n let ptr := mload(0x40)\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\n instance := create2(0, ptr, 0x37, salt)\n }\n require(instance != address(0), \"ERC1167: create2 failed\");\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n assembly {\n let ptr := mload(0x40)\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000)\n mstore(add(ptr, 0x38), shl(0x60, deployer))\n mstore(add(ptr, 0x4c), salt)\n mstore(add(ptr, 0x6c), keccak256(ptr, 0x37))\n predicted := keccak256(add(ptr, 0x37), 0x55)\n }\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(address implementation, bytes32 salt)\n internal\n view\n returns (address predicted)\n {\n return predictDeterministicAddress(implementation, salt, address(this));\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * _Available since v3.4._\n */\nabstract contract EIP712 {\n /* solhint-disable var-name-mixedcase */\n bytes32 private immutable _HASHED_NAME;\n bytes32 private immutable _HASHED_VERSION;\n bytes32 private immutable _TYPE_HASH;\n\n /* solhint-enable var-name-mixedcase */\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n constructor(string memory name, string memory version) {\n _HASHED_NAME = keccak256(bytes(name));\n _HASHED_VERSION = keccak256(bytes(version));\n _TYPE_HASH = keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view virtual returns (bytes32) {\n return keccak256(abi.encode(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION, _getChainId(), address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x01\", _domainSeparatorV4(), structHash));\n }\n\n // solc-ignore-next-line func-mutability\n function _getChainId() private view returns (uint256 chainId) {\n // solhint-disable-next-line no-inline-assembly\n assembly {\n chainId := chainid()\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the EnumerableSet library from OpenZeppelin Contracts, altered to remove the base private functions that\n// work on bytes32, replacing them with a native implementation for address and bytes32 values, to reduce bytecode\n// size and runtime costs.\n// The `unchecked_at` function was also added, which allows for more gas efficient data reads in some scenarios.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n */\nlibrary EnumerableSet {\n // The original OpenZeppelin implementation uses a generic Set type with bytes32 values: this was replaced with\n // AddressSet, which uses address keys natively, resulting in more dense bytecode.\n\n struct AddressSet {\n // Storage of set values\n address[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(address => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, if it was not already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n if (!contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n // The swap is only necessary if we're not removing the last element\n if (toDeleteIndex != lastIndex) {\n address lastValue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastValue;\n // Update the index for the moved value\n set._indexes[lastValue] = toDeleteIndex + 1; // All indexes are 1-based\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n _require(set._values.length > index, Errors.OUT_OF_BOUNDS);\n return unchecked_at(set, index);\n }\n\n /**\n * @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n * than {length}). O(1).\n *\n * This function performs one less storage read than {at}, but should only be used when `index` is known to be\n * within bounds.\n */\n // solhint-disable-next-line func-name-mixedcase\n function unchecked_at(AddressSet storage set, uint256 index) internal view returns (address) {\n return set._values[index];\n }\n\n function rawIndexOf(AddressSet storage set, address value) internal view returns (uint256) {\n return set._indexes[value] - 1;\n }\n\n struct Bytes32Set {\n // Storage of set values\n bytes32[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(bytes32 => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n if (!contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n // The swap is only necessary if we're not removing the last element\n if (toDeleteIndex != lastIndex) {\n bytes32 lastValue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastValue;\n // Update the index for the moved value\n set._indexes[lastValue] = toDeleteIndex + 1; // All indexes are 1-based\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n _require(set._values.length > index, Errors.OUT_OF_BOUNDS);\n return unchecked_at(set, index);\n }\n\n /**\n * @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n * than {length}). O(1).\n *\n * This function performs one less storage read than {at}, but should only be used when `index` is known to be\n * within bounds.\n */\n // solhint-disable-next-line func-name-mixedcase\n function unchecked_at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return set._values[index];\n }\n\n function rawIndexOf(Bytes32Set storage set, bytes32 value) internal view returns (uint256) {\n return set._indexes[value] - 1;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./SafeMath.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is IERC20 {\n using SafeMath for uint256;\n\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n uint8 private _decimals;\n\n /**\n * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n * a default value of 18.\n *\n * To select a different value for {decimals}, use {_setupDecimals}.\n *\n * All three of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n _decimals = 18;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n\n /**\n * @dev See {IERC20-totalSupply}. The total supply should only be read using this function\n *\n * Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n * storage values).\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev Sets a new value for the total supply. It should only be set using this function.\n *\n * * Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n * storage values).\n */\n function _setTotalSupply(uint256 value) internal virtual {\n _totalSupply = value;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(msg.sender, recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n _approve(msg.sender, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * Requirements:\n *\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for ``sender``'s tokens of at least\n * `amount`.\n */\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) public virtual override returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(\n sender,\n msg.sender,\n _allowances[sender][msg.sender].sub(amount, Errors.ERC20_TRANSFER_EXCEEDS_ALLOWANCE)\n );\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n _approve(\n msg.sender,\n spender,\n _allowances[msg.sender][spender].sub(subtractedValue, Errors.ERC20_DECREASED_ALLOWANCE_BELOW_ZERO)\n );\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(\n address sender,\n address recipient,\n uint256 amount\n ) internal virtual {\n _require(sender != address(0), Errors.ERC20_TRANSFER_FROM_ZERO_ADDRESS);\n _require(recipient != address(0), Errors.ERC20_TRANSFER_TO_ZERO_ADDRESS);\n\n _beforeTokenTransfer(sender, recipient, amount);\n\n _balances[sender] = _balances[sender].sub(amount, Errors.ERC20_TRANSFER_EXCEEDS_BALANCE);\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n _beforeTokenTransfer(address(0), account, amount);\n\n _setTotalSupply(totalSupply().add(amount));\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n _require(account != address(0), Errors.ERC20_BURN_FROM_ZERO_ADDRESS);\n\n _beforeTokenTransfer(account, address(0), amount);\n\n _balances[account] = _balances[account].sub(amount, Errors.ERC20_BURN_EXCEEDS_BALANCE);\n _setTotalSupply(totalSupply().sub(amount));\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(\n address owner,\n address spender,\n uint256 amount\n ) internal virtual {\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Sets {decimals} to a value other than the default one of 18.\n *\n * WARNING: This function should only be called from the constructor. Most\n * applications that interact with token contracts will not expect\n * {decimals} to ever change, and may work incorrectly if it does.\n */\n function _setupDecimals(uint8 decimals_) internal {\n _decimals = decimals_;\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be to transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"./ERC20.sol\";\n\n/**\n * @dev Extension of {ERC20} that allows token holders to destroy both their own\n * tokens and those that they have an allowance for, in a way that can be\n * recognized off-chain (via event analysis).\n */\nabstract contract ERC20Burnable is ERC20 {\n using SafeMath for uint256;\n\n /**\n * @dev Destroys `amount` tokens from the caller.\n *\n * See {ERC20-_burn}.\n */\n function burn(uint256 amount) public virtual {\n _burn(msg.sender, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\n * allowance.\n *\n * See {ERC20-_burn} and {ERC20-allowance}.\n *\n * Requirements:\n *\n * - the caller must have allowance for ``accounts``'s tokens of at least\n * `amount`.\n */\n function burnFrom(address account, uint256 amount) public virtual {\n uint256 decreasedAllowance = allowance(account, msg.sender).sub(amount, Errors.ERC20_BURN_EXCEEDS_ALLOWANCE);\n\n _approve(account, msg.sender, decreasedAllowance);\n _burn(account, amount);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\";\n\nimport \"./ERC20.sol\";\nimport \"../helpers/EOASignaturesValidator.sol\";\n\n/**\n * @dev Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n *\n * _Available since v3.4._\n */\nabstract contract ERC20Permit is ERC20, IERC20Permit, EOASignaturesValidator {\n // solhint-disable-next-line var-name-mixedcase\n bytes32 private constant _PERMIT_TYPEHASH = keccak256(\n \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\"\n );\n\n /**\n * @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n *\n * It's a good idea to use the same `name` that is defined as the ERC20 token name.\n */\n constructor(string memory name) EIP712(name, \"1\") {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @dev See {IERC20Permit-permit}.\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public virtual override {\n bytes32 structHash = keccak256(\n abi.encode(_PERMIT_TYPEHASH, owner, spender, value, getNextNonce(owner), deadline)\n );\n\n _ensureValidSignature(owner, structHash, _toArraySignature(v, r, s), deadline, Errors.INVALID_SIGNATURE);\n\n _approve(owner, spender, value);\n }\n\n /**\n * @dev See {IERC20Permit-nonces}.\n */\n function nonces(address owner) public view override returns (uint256) {\n return getNextNonce(owner);\n }\n\n /**\n * @dev See {IERC20Permit-DOMAIN_SEPARATOR}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view override returns (bytes32) {\n return getDomainSeparator();\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the ReentrancyGuard library from OpenZeppelin Contracts, altered to reduce bytecode size.\n// Modifier code is inlined by the compiler, which causes its code to appear multiple times in the codebase. By using\n// private functions, we achieve the same end result with slightly higher runtime gas costs, but reduced bytecode size.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant _NOT_ENTERED = 1;\n uint256 private constant _ENTERED = 2;\n\n uint256 private _status;\n\n constructor() {\n _status = _NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and make it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n _enterNonReentrant();\n _;\n _exitNonReentrant();\n }\n\n function _enterNonReentrant() private {\n // On the first call to nonReentrant, _status will be _NOT_ENTERED\n _require(_status != _ENTERED, Errors.REENTRANCY);\n\n // Any calls to nonReentrant after this point will fail\n _status = _ENTERED;\n }\n\n function _exitNonReentrant() private {\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = _NOT_ENTERED;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the ReentrancyGuard library from OpenZeppelin Contracts, altered to reduce gas costs.\n// The `safeTransfer` and `safeTransferFrom` functions assume that `token` is a contract (an account with code), and\n// work differently from the OpenZeppelin version if it is not.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n\n function safeApprove(\n IERC20 token,\n address to,\n uint256 value\n ) internal {\n // Some contracts need their allowance reduced to 0 before setting it to an arbitrary amount.\n if (value != 0 && token.allowance(address(this), address(to)) != 0) {\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.approve.selector, to, 0));\n }\n\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.approve.selector, to, value));\n }\n\n function safeTransfer(\n IERC20 token,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n function safeTransferFrom(\n IERC20 token,\n address from,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n *\n * WARNING: `token` is assumed to be a contract: calls to EOAs will *not* revert.\n */\n function _callOptionalReturn(address token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves.\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = token.call(data);\n\n // If the low-level call didn't succeed we return whatever was returned from it.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n if eq(success, 0) {\n returndatacopy(0, 0, returndatasize())\n revert(0, returndatasize())\n }\n }\n\n // Finally we check the returndata size is either zero or true - note that this check will always pass for EOAs\n _require(returndata.length == 0 || abi.decode(returndata, (bool)), Errors.SAFE_ERC20_CALL_FAILED);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n _require(c >= a, Errors.ADD_OVERFLOW);\n\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return sub(a, b, Errors.SUB_OVERFLOW);\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(\n uint256 a,\n uint256 b,\n uint256 errorCode\n ) internal pure returns (uint256) {\n _require(b <= a, errorCode);\n uint256 c = a - b;\n\n return c;\n }\n}\n"},"contracts/admin/AuthorizerAdaptor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\n/**\n * @title Authorizer Adaptor\n *\n * WARNING: this contract contains a *critical bug* that can lead into exploits where it checks for permissions\n * incorrectly. It should *never* be used by itself. We keep a copy of it in the repository, including the bug and all\n * original comments (some of which are incorrect due to the bug), both for historical reasons and because it is part of\n * our immutable infrastructure. See the `AuthorizerAdaptorEntrypoint` contract for more information on how we use this\n * contract safely.\n *\n * @notice This contract is intended to act as an adaptor between systems which expect a single admin address\n * and the Balancer Authorizer such that the Authorizer may grant/revoke admin powers to unlimited addresses.\n *\n * The permissions the Authorizer can grant are granular such they may be global or specific to a particular contract\n *\n * @dev When calculating the actionId to call a function on a target contract, it must be calculated as if it were\n * to be called on this adaptor. This can be done by passing the function selector to the `getActionId` function.\n */\ncontract AuthorizerAdaptor is IAuthorizerAdaptor, ReentrancyGuard {\n using Address for address;\n\n bytes32 private immutable _actionIdDisambiguator;\n IVault private immutable _vault;\n\n constructor(IVault vault) {\n // AuthorizerAdaptor is a singleton, so it simply uses its own address to disambiguate action identifiers\n _actionIdDisambiguator = bytes32(uint256(address(this)));\n _vault = vault;\n }\n\n /**\n * @notice Returns the Balancer Vault\n */\n function getVault() public view override returns (IVault) {\n return _vault;\n }\n\n /**\n * @notice Returns the Authorizer\n */\n function getAuthorizer() public view override returns (IAuthorizer) {\n return getVault().getAuthorizer();\n }\n\n function _canPerform(\n bytes32 actionId,\n address account,\n address where\n ) internal view returns (bool) {\n return getAuthorizer().canPerform(actionId, account, where);\n }\n\n /**\n * @notice Returns the action ID associated with calling a given function through this adaptor\n * @dev As the contracts managed by this adaptor don't have action ID disambiguators, we use the adaptor's globally.\n * This means that contracts with the same function selector will have a matching action ID:\n * if granularity is required then permissions must not be granted globally in the Authorizer.\n *\n * @param selector - The 4 byte selector of the function to be called using `performAction`\n * @return The associated action ID\n */\n function getActionId(bytes4 selector) public view override returns (bytes32) {\n return keccak256(abi.encodePacked(_actionIdDisambiguator, selector));\n }\n\n /**\n * @notice Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\n *\n * This function should not be called directly as that will result in an unconditional revert: instead, use\n * `AuthorizerAdaptorEntrypoint.performAction`.\n * @param target - Address of the contract to be called\n * @param data - Calldata to be sent to the target contract\n * @return The bytes encoded return value from the performed function call\n */\n function performAction(address target, bytes calldata data)\n external\n payable\n override\n nonReentrant\n returns (bytes memory)\n {\n // WARNING: the following line contains a critical bug that allows the caller to trick this contract into\n // checking for an incorrect permission.\n // We unconditionally read memory slot 100, which is where the first four bytes of `data` will reside (i.e. the\n // function selector) given a standard packed ABI encoding. Both the Solidity compiler and clients such as\n // ethers.js will do the ABI encoding in such a way that the selector is actually on slot 100, since this is the\n // way that minimizes gas costs, but it is *not* the only valid way to ABI encode.\n // In particular, it is possible to choose a larger offset and place `data` much further away in calldata. Under\n // those conditions, slot 100 will *not* contain the selector, but it can instead be any arbitrary value. This\n // means that the AuthorizerAdaptor can be made to check for the permission of any arbitrary selector,\n // regardless of the action encoded in `data`.\n //\n // In other words, an account that has permission to execute *any* action via the Adaptor can actually execute\n // *all* of them: there's no permission granularity.\n // Note that actually performing this exploit requires the ability to manually craft calldata: as such,\n // Solidity contracts that call into the Adaptor and create the call via the `abi.encode` function are safe to\n // use since they will always use the standard encoding.\n //\n // To work around this issue, the `TimelockAuthorizer` contract contains a special condition that will check\n // when it is being called by the `AuthorizerAdaptor`, and behave differently when that happens. See the\n // `TimelockAuthorizer.canPerform` and `AuthorizerAdaptorEntrypoint.performAction` functions for more\n // information.\n //\n // All comments below are part of the original source code, and as noted above some of them are incorrect. They\n // are kept for historical reasons.\n\n bytes4 selector;\n\n // We want to check that the caller is authorized to call the function on the target rather than this function.\n // We must then pull the function selector from `data` rather than `msg.sig`. The most effective way to do this\n // is via assembly.\n // Note that if `data` is empty this will return an empty function signature (0x00000000)\n\n // solhint-disable-next-line no-inline-assembly\n assembly {\n // The function selector encoded in `data` has an offset relative to the start of msg.data of:\n // - 4 bytes due to the function selector for `performAction`\n // - 3 words (3 * 32 = 96 bytes) for `target` and the length and offset of `data`\n // 96 + 4 = 100 bytes\n selector := calldataload(100)\n }\n\n // NOTE: The `TimelockAuthorizer` special cases the `AuthorizerAdaptor` calling into it, so that the action ID\n // and `target` values are completely ignored. The following check will only pass if the caller is the\n // `AuthorizerAdaptorEntrypoint`, which will have already checked for permissions correctly.\n _require(_canPerform(getActionId(selector), msg.sender, target), Errors.SENDER_NOT_ALLOWED);\n\n // We don't check that `target` is a contract so all calls to an EOA will succeed.\n return target.functionCallWithValue(data, msg.value);\n }\n}\n"},"contracts/admin/AuthorizerAdaptorEntrypoint.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\n/**\n * @title Authorizer Adaptor Entrypoint\n * @notice This contract exists as a fix for a critical bug in the `AuthorizerAdaptor` that could lead to escalation of\n * privileges. The Entrypoint contract addresses this by working in combination with `TimelockAuthorizer` so that all\n * Adaptor calls that are not made via the Entrypoint fail, while those that do happen through the Entrypoint check for\n * permissions correctly.\n */\ncontract AuthorizerAdaptorEntrypoint is IAuthorizerAdaptorEntrypoint {\n event ActionPerformed(bytes4 indexed selector, address indexed caller, address indexed target, bytes data);\n\n using Address for address;\n\n IAuthorizerAdaptor private immutable _adaptor;\n IVault private immutable _vault;\n\n constructor(IAuthorizerAdaptor adaptor) {\n _adaptor = adaptor;\n _vault = adaptor.getVault();\n }\n\n function getVault() public view override returns (IVault) {\n return _vault;\n }\n\n function getAuthorizer() public view override returns (IAuthorizer) {\n return getVault().getAuthorizer();\n }\n\n function getAuthorizerAdaptor() public view override returns (IAuthorizerAdaptor) {\n return _adaptor;\n }\n\n function canPerform(\n bytes32 actionId,\n address account,\n address where\n ) public view returns (bool) {\n return getAuthorizer().canPerform(actionId, account, where);\n }\n\n /**\n * @notice Returns the action ID associated with calling a given function through the `AuthorizerAdaptor`. Note that\n * even though the Adaptor's action IDs are not actually used by it (since the Authorizer ignores those values - see\n * `TimelockAuthorizer.canPerform`), this contract reuses those IDs to simplify migrations and tooling.\n *\n * See `AuthorizerAdaptor.getActionId` for more information on how the action IDs are computed, and how functions\n * with equal selectors are assigned the same action ID.\n */\n function getActionId(bytes4 selector) public view override returns (bytes32) {\n return getAuthorizerAdaptor().getActionId(selector);\n }\n\n function performAction(address target, bytes calldata data) external payable override returns (bytes memory) {\n // We want to check that the caller is authorized to call the function on the target rather than this function.\n // We must then pull the function selector from `data` rather than `msg.sig`.\n\n // Note that this will revert if `data` is less than 4 bytes long. We test for that to provide a nicer revert\n // reason.\n _require(data.length >= 4, Errors.INSUFFICIENT_DATA);\n bytes4 selector = data[0] | (bytes4(data[1]) >> 8) | (bytes4(data[2]) >> 16) | (bytes4(data[3]) >> 24);\n\n _require(canPerform(getActionId(selector), msg.sender, target), Errors.SENDER_NOT_ALLOWED);\n\n emit ActionPerformed(selector, msg.sender, target, data);\n\n // The `AuthorizerAdaptor` will not check for permissions: it is special-cased in the `TimelockAuthorizer` so\n // that all calls to it that are not made from this entrypoint fail, while those that originate in the\n // entrypoint succeed. This works as we have just checked that the caller has permission to perform the action\n // encoded by `data`. See `TimelockAuthorizer.canPerform` for more details.\n return getAuthorizerAdaptor().performAction{ value: msg.value }(target, data);\n }\n}\n"},"contracts/admin/ChildChainGaugeTokenAdder.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\n/**\n * @title ChildChainGaugeTokenAdder\n * @notice Allows atomically adding a new reward token to a RewardsOnlyGauge while ensuring that it remains in sync\n * with its ChildChainStreamer.\n */\ncontract ChildChainGaugeTokenAdder is SingletonAuthentication {\n // RewardsOnlyGauge expects the claim function selector to be left padded with zeros.\n // We then shift right 28 bytes so that the function selector (top 4 bytes) sits in the lowest 4 bytes.\n bytes32 private constant _CLAIM_SIG = keccak256(\"get_reward()\") >> (28 * 8);\n uint256 private constant _MAX_TOKENS = 8;\n uint256 private constant _REWARD_DURATION = 1 weeks;\n\n IAuthorizerAdaptorEntrypoint private immutable _authorizerAdaptorEntrypoint;\n IChildChainLiquidityGaugeFactory private immutable _gaugeFactory;\n\n constructor(IChildChainLiquidityGaugeFactory gaugeFactory, IAuthorizerAdaptorEntrypoint authorizerAdaptorEntrypoint)\n SingletonAuthentication(authorizerAdaptorEntrypoint.getVault())\n {\n _authorizerAdaptorEntrypoint = authorizerAdaptorEntrypoint;\n _gaugeFactory = gaugeFactory;\n }\n\n /**\n * @notice Returns the address of the Authorizer adaptor entrypoint contract.\n */\n function getAuthorizerAdaptorEntrypoint() external view returns (IAuthorizerAdaptorEntrypoint) {\n return _authorizerAdaptorEntrypoint;\n }\n\n /**\n * @notice Adds a new token to a RewardsOnlyGauge.\n * @dev This is a permissioned function.\n * @param gauge - The gauge we are modifying\n * @param rewardToken - The token to be added.\n * @param distributor - The distributor for the rewards.\n */\n function addTokenToGauge(\n IRewardsOnlyGauge gauge,\n IERC20 rewardToken,\n address distributor\n ) external authenticate {\n require(_gaugeFactory.isGaugeFromFactory(address(gauge)), \"Invalid gauge\");\n IChildChainStreamer streamer = IChildChainStreamer(_gaugeFactory.getGaugeStreamer(address(gauge)));\n require(streamer == gauge.reward_contract(), \"Not original gauge streamer\");\n\n // We first add the new token to the streamer so that the gauge can claim it when checkpointing.\n _addTokenToStreamer(streamer, rewardToken, distributor);\n\n // We must pass the full list of tokens which the gauge should claim from the streamer when adding a new token.\n // We then query this from the streamer to ensure that the reward tokens on each contract are consistent.\n // As we have added the new reward token to the streamer already, this array will include it.\n IERC20[_MAX_TOKENS] memory rewardTokens;\n for (uint256 i; i < _MAX_TOKENS; ++i) {\n rewardTokens[i] = streamer.reward_tokens(i);\n }\n\n // We now let the gauge know to claim the new token.\n _updateGaugeRewardTokens(gauge, streamer, rewardTokens);\n }\n\n function _addTokenToStreamer(\n IChildChainStreamer streamer,\n IERC20 rewardToken,\n address distributor\n ) private {\n _authorizerAdaptorEntrypoint.performAction(\n address(streamer),\n abi.encodeWithSelector(IChildChainStreamer.add_reward.selector, rewardToken, distributor, _REWARD_DURATION)\n );\n }\n\n function _updateGaugeRewardTokens(\n IRewardsOnlyGauge gauge,\n IChildChainStreamer streamer,\n IERC20[_MAX_TOKENS] memory rewardTokens\n ) private {\n _authorizerAdaptorEntrypoint.performAction(\n address(gauge),\n abi.encodeWithSelector(IRewardsOnlyGauge.set_rewards.selector, streamer, _CLAIM_SIG, rewardTokens)\n );\n }\n}\n"},"contracts/admin/DistributionScheduler.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\n// solhint-disable not-rely-on-time\n\n/**\n * @title DistributionScheduler\n * @notice Scheduler for setting up permissionless distributions of liquidity gauge reward tokens.\n * @dev Any address may send tokens to the DistributionSchedule to be distributed among gauge depositors.\n */\ncontract DistributionScheduler {\n using SafeERC20 for IERC20;\n\n uint256 private constant _MAX_REWARDS = 8;\n\n // The node at _HEAD contains no value, and simply points to the actual first node. The last node points to _NULL.\n uint32 private constant _HEAD = 0;\n uint32 private constant _NULL = 0;\n\n // gauge-token pair -> timestamp -> (amount, nextTimestamp)\n mapping(bytes32 => mapping(uint32 => RewardNode)) private _rewardsLists;\n\n struct RewardNode {\n uint224 amount;\n uint32 nextTimestamp;\n }\n\n /**\n * @notice Returns information on the reward paid out to `gauge` in `token` over the week starting at `timestamp`\n * @param gauge - The gauge which is to distribute the reward token.\n * @param token - The token which is to be distributed among gauge depositors.\n * @param timestamp - The timestamp corresponding to the beginning of the week being queried.\n * @return - the amount of `token` which is to be distributed over the week starting at `timestamp`.\n * - the timestamp of the next scheduled distribution of `token` to `gauge`. Zero if no distribution exists.\n */\n function getRewardNode(\n IRewardTokenDistributor gauge,\n IERC20 token,\n uint256 timestamp\n ) external view returns (RewardNode memory) {\n return _rewardsLists[_getRewardsListId(gauge, token)][uint32(timestamp)];\n }\n\n /**\n * @notice Returns the amount of `token` which is ready to be distributed by `gauge` as of the current timestamp.\n * @param gauge - The gauge which is to distribute the reward token.\n * @param token - The token which is to be distributed among gauge depositors.\n */\n function getPendingRewards(IRewardTokenDistributor gauge, IERC20 token) public view returns (uint256) {\n return getPendingRewardsAt(gauge, token, block.timestamp);\n }\n\n /**\n * @notice Returns the amount of `token` which is ready to be distributed by `gauge` as of a specified timestamp.\n * @param gauge - The gauge which is to distribute the reward token.\n * @param token - The token which is to be distributed among gauge depositors.\n * @param timestamp - The future timestamp in which to query.\n */\n function getPendingRewardsAt(\n IRewardTokenDistributor gauge,\n IERC20 token,\n uint256 timestamp\n ) public view returns (uint256) {\n mapping(uint32 => RewardNode) storage rewardsList = _rewardsLists[_getRewardsListId(gauge, token)];\n\n (, uint256 amount) = _getPendingRewards(rewardsList, timestamp);\n return amount;\n }\n\n /**\n * @notice Schedule a distribution of tokens to gauge depositors over the span of 1 week.\n * @dev All distributions must start at the beginning of a week in UNIX time, i.e. Thurs 00:00 UTC.\n * This is to prevent griefing from many low value distributions having to be processed before a meaningful\n * distribution can be processed.\n * @param gauge - The gauge which is to distribute the reward token.\n * @param token - The token which is to be distributed among gauge depositors.\n * @param amount - The amount of tokens which to distribute.\n * @param startTime - The timestamp at the beginning of the week over which to distribute tokens.\n */\n function scheduleDistribution(\n IRewardTokenDistributor gauge,\n IERC20 token,\n uint256 amount,\n uint256 startTime\n ) external {\n require(amount > 0, \"Must provide non-zero number of tokens\");\n\n // Ensure that values won't overflow when put into storage.\n require(amount <= type(uint224).max, \"Reward amount overflow\");\n require(startTime <= type(uint32).max, \"Reward timestamp overflow\");\n\n // Ensure that a user doesn't add a reward token which becomes locked on scheduler\n address rewardDistributor = gauge.reward_data(token).distributor;\n require(rewardDistributor != address(0), \"Reward token does not exist on gauge\");\n require(rewardDistributor == address(this), \"DistributionScheduler is not reward token's distributor\");\n\n // Prevent griefing by creating many small distributions which must be processed.\n require(startTime >= block.timestamp, \"Distribution can only be scheduled for the future\");\n require(startTime == _roundDownTimestamp(startTime), \"Distribution must start at the beginning of the week\");\n\n // Avoid mistakes causing rewards being locked far into the future.\n require(startTime - block.timestamp <= 365 days, \"Distribution too far into the future\");\n\n token.safeTransferFrom(msg.sender, address(this), amount);\n\n _insertReward(_rewardsLists[_getRewardsListId(gauge, token)], uint32(startTime), uint224(amount));\n }\n\n /**\n * @notice Process all pending distributions for a gauge to start distributing the tokens.\n * @param gauge - The gauge which is to distribute the reward token.\n */\n function startDistributions(IRewardTokenDistributor gauge) external {\n for (uint256 i = 0; i < _MAX_REWARDS; ++i) {\n IERC20 token = gauge.reward_tokens(i);\n if (token == IERC20(0)) break;\n\n // Only attempt to start distributions for tokens which we are the distributor for\n address rewardDistributor = gauge.reward_data(token).distributor;\n if (rewardDistributor == address(this)) {\n startDistributionForToken(gauge, token);\n }\n }\n }\n\n /**\n * @notice Process all pending distributions for a given token for a gauge to start distributing tokens.\n * @param gauge - The gauge which is to distribute the reward token.\n * @param token - The token which is to be distributed among gauge depositors.\n */\n function startDistributionForToken(IRewardTokenDistributor gauge, IERC20 token) public {\n mapping(uint32 => RewardNode) storage rewardsList = _rewardsLists[_getRewardsListId(gauge, token)];\n\n (uint32 firstUnprocessedNodeKey, uint256 rewardAmount) = _getPendingRewards(rewardsList, block.timestamp);\n\n // These calls are reentrancy-safe as we've already performed our only state transition (updating the head of\n // the list)\n rewardsList[_HEAD].nextTimestamp = firstUnprocessedNodeKey;\n\n token.safeApprove(address(gauge), rewardAmount);\n gauge.deposit_reward_token(token, rewardAmount);\n }\n\n // Internal functions\n\n function _getRewardsListId(IRewardTokenDistributor gauge, IERC20 rewardToken) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(gauge, rewardToken));\n }\n\n /**\n * @dev Sums the rewards held on all pending reward nodes with a key lesser than `targetKey`.\n * @return - the key corresponding to the first node with a key greater than `targetKey`.\n * - the cumulative rewards held on all pending nodes before `targetKey`\n */\n function _getPendingRewards(mapping(uint32 => RewardNode) storage rewardsList, uint256 targetKey)\n internal\n view\n returns (uint32, uint256)\n {\n uint32 currentNodeKey = rewardsList[_HEAD].nextTimestamp;\n\n // Iterate through all nodes which are ready to be started, summing the values of each.\n uint256 amount;\n while (targetKey >= currentNodeKey && currentNodeKey != _NULL) {\n amount += rewardsList[currentNodeKey].amount;\n\n currentNodeKey = rewardsList[currentNodeKey].nextTimestamp;\n }\n\n return (currentNodeKey, amount);\n }\n\n /**\n * @dev Find the position of the new node in the list of pending nodes and insert it.\n */\n function _insertReward(\n mapping(uint32 => RewardNode) storage rewardsList,\n uint32 insertedNodeKey,\n uint224 amount\n ) private {\n // We want to find two nodes which sit either side of the new node to be created so we can insert between them.\n\n uint32 currentNodeKey = _HEAD;\n uint32 nextNodeKey = rewardsList[currentNodeKey].nextTimestamp;\n\n // Search through nodes until the new node sits somewhere between `currentNodeKey` and `nextNodeKey`, or\n // we process all nodes.\n while (insertedNodeKey > nextNodeKey && nextNodeKey != _NULL) {\n currentNodeKey = nextNodeKey;\n nextNodeKey = rewardsList[currentNodeKey].nextTimestamp;\n }\n\n if (nextNodeKey == _NULL) {\n // We reached the end of the list and so can just append the new node.\n rewardsList[currentNodeKey].nextTimestamp = insertedNodeKey;\n rewardsList[insertedNodeKey] = RewardNode(amount, _NULL);\n } else if (nextNodeKey == insertedNodeKey) {\n // There already exists a node at the time we want to insert one.\n // We then just increase the value of this node.\n\n uint256 rewardAmount = uint256(rewardsList[nextNodeKey].amount) + amount;\n require(rewardAmount <= type(uint224).max, \"Reward amount overflow\");\n rewardsList[nextNodeKey].amount = uint224(rewardAmount);\n } else {\n // We're inserting a node in between `currentNodeKey` and `nextNodeKey` so then update\n // `currentNodeKey` to point to the newly inserted node and the new node to point to `nextNodeKey`.\n rewardsList[insertedNodeKey] = RewardNode(amount, nextNodeKey);\n rewardsList[currentNodeKey].nextTimestamp = insertedNodeKey;\n }\n }\n\n /**\n * @dev Rounds the provided timestamp down to the beginning of the previous week (Thurs 00:00 UTC)\n */\n function _roundDownTimestamp(uint256 timestamp) private pure returns (uint256) {\n return (timestamp / 1 weeks) * 1 weeks;\n }\n}\n"},"contracts/admin/GaugeAdder.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\";\n\ncontract GaugeAdder is IGaugeAdder, SingletonAuthentication, ReentrancyGuard {\n // This is the gauge type as used in the GaugeController for Ethereum gauges, which we'll use for all gauges of all\n // networks from now on.\n int128 private constant _ETHEREUM_GAUGE_CONTROLLER_TYPE = 2;\n\n bytes32 private immutable _ethereum = keccak256(abi.encodePacked(\"Ethereum\"));\n IGaugeController private immutable _gaugeController;\n IERC20 private immutable _balWethBpt;\n IAuthorizerAdaptorEntrypoint private _authorizerAdaptorEntrypoint;\n\n // Registered gauge types. Append-only.\n string[] private _gaugeTypes;\n\n // Mapping from gauge type to address of approved factory for that type\n mapping(string => ILiquidityGaugeFactory) private _gaugeTypeFactory;\n\n constructor(IGaugeController gaugeController, IAuthorizerAdaptorEntrypoint authorizerAdaptorEntrypoint)\n SingletonAuthentication(gaugeController.admin().getVault())\n {\n _gaugeController = gaugeController;\n _authorizerAdaptorEntrypoint = authorizerAdaptorEntrypoint;\n\n // Cache the BAL 80 WETH 20 BPT on this contract.\n _balWethBpt = gaugeController.token();\n }\n\n modifier withValidGaugeType(string memory gaugeType) {\n require(_isValidGaugeType(gaugeType), \"Invalid gauge type\");\n _;\n }\n\n /// @inheritdoc IGaugeAdder\n function getAuthorizerAdaptorEntrypoint() external view override returns (IAuthorizerAdaptorEntrypoint) {\n return _authorizerAdaptorEntrypoint;\n }\n\n /// @inheritdoc IGaugeAdder\n function getGaugeController() external view override returns (IGaugeController) {\n return _gaugeController;\n }\n\n /// @inheritdoc IGaugeAdder\n function getGaugeTypes() external view override returns (string[] memory) {\n return _gaugeTypes;\n }\n\n /// @inheritdoc IGaugeAdder\n function getGaugeTypeAtIndex(uint256 index) external view override returns (string memory) {\n return _gaugeTypes[index];\n }\n\n /// @inheritdoc IGaugeAdder\n function getGaugeTypesCount() external view override returns (uint256) {\n return _gaugeTypes.length;\n }\n\n /// @inheritdoc IGaugeAdder\n function isValidGaugeType(string memory gaugeType) external view override returns (bool) {\n return _isValidGaugeType(gaugeType);\n }\n\n /// @inheritdoc IGaugeAdder\n function getFactoryForGaugeType(string memory gaugeType)\n external\n view\n override\n withValidGaugeType(gaugeType)\n returns (ILiquidityGaugeFactory)\n {\n return _gaugeTypeFactory[gaugeType];\n }\n\n /// @inheritdoc IGaugeAdder\n function isGaugeFromValidFactory(address gauge, string memory gaugeType)\n external\n view\n override\n withValidGaugeType(gaugeType)\n returns (bool)\n {\n return _isGaugeFromValidFactory(gauge, gaugeType);\n }\n\n // Admin Functions\n\n /// @inheritdoc IGaugeAdder\n function addGaugeType(string memory gaugeType) external override authenticate {\n require(bytes(gaugeType).length > 0, \"Gauge type cannot be empty\");\n require(!_isValidGaugeType(gaugeType), \"Gauge type already added\");\n\n _gaugeTypes.push(gaugeType);\n\n emit GaugeTypeAdded(gaugeType, gaugeType);\n }\n\n /// @inheritdoc IGaugeAdder\n function addGauge(address gauge, string memory gaugeType)\n external\n override\n authenticate\n withValidGaugeType(gaugeType)\n {\n if (keccak256(abi.encodePacked(gaugeType)) == _ethereum) {\n IERC20 pool = IStakingLiquidityGauge(gauge).lp_token();\n require(pool != _balWethBpt, \"Cannot add gauge for 80/20 BAL-WETH BPT\");\n }\n\n _addGauge(gauge, gaugeType);\n }\n\n /// @inheritdoc IGaugeAdder\n function setGaugeFactory(ILiquidityGaugeFactory factory, string memory gaugeType)\n external\n override\n authenticate\n withValidGaugeType(gaugeType)\n {\n // Sanity check that calling `isGaugeFromFactory` won't revert\n require(\n (factory == ILiquidityGaugeFactory(0)) || (!factory.isGaugeFromFactory(address(0))),\n \"Invalid factory implementation\"\n );\n\n _gaugeTypeFactory[gaugeType] = factory;\n\n emit GaugeFactorySet(gaugeType, gaugeType, factory);\n }\n\n // Internal functions\n\n function _isGaugeFromValidFactory(address gauge, string memory gaugeType) internal view returns (bool) {\n ILiquidityGaugeFactory gaugeFactory = _gaugeTypeFactory[gaugeType];\n return gaugeFactory == ILiquidityGaugeFactory(0) ? false : gaugeFactory.isGaugeFromFactory(gauge);\n }\n\n /**\n * @dev Adds `gauge` to the GaugeController with type `gaugeType` and an initial weight of zero\n */\n function _addGauge(address gauge, string memory gaugeType) private {\n require(_isGaugeFromValidFactory(gauge, gaugeType), \"Invalid gauge\");\n\n // `_gaugeController` enforces that duplicate gauges may not be added so we do not need to check here.\n _authorizerAdaptorEntrypoint.performAction(\n address(_gaugeController),\n abi.encodeWithSelector(IGaugeController.add_gauge.selector, gauge, _ETHEREUM_GAUGE_CONTROLLER_TYPE)\n );\n }\n\n function _isValidGaugeType(string memory gaugeType) internal view returns (bool) {\n bytes32 gaugeTypeHash = keccak256(abi.encodePacked(gaugeType));\n for (uint256 i = 0; i < _gaugeTypes.length; ++i) {\n if (gaugeTypeHash == keccak256(abi.encodePacked(_gaugeTypes[i]))) {\n return true;\n }\n }\n\n return false;\n }\n}\n"},"contracts/BalancerMinter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\";\n\nabstract contract BalancerMinter is IBalancerMinter, ReentrancyGuard, EOASignaturesValidator {\n using SafeMath for uint256;\n\n IERC20 private immutable _token;\n\n // user -> gauge -> value\n mapping(address => mapping(address => uint256)) private _minted;\n // minter -> user -> can mint?\n mapping(address => mapping(address => bool)) private _allowedMinter;\n\n // solhint-disable-next-line var-name-mixedcase\n bytes32 private constant _SET_MINTER_APPROVAL_TYPEHASH = keccak256(\n \"SetMinterApproval(address minter,bool approval,uint256 nonce,uint256 deadline)\"\n );\n\n event MinterApprovalSet(address indexed user, address indexed minter, bool approval);\n\n constructor(\n IERC20 token,\n string memory name,\n string memory version\n ) EIP712(name, version) {\n _token = token;\n }\n\n /// @inheritdoc IBalancerMinter\n function getBalancerToken() public view override returns (IERC20) {\n return _token;\n }\n\n /// @inheritdoc IBalancerMinter\n function mint(address gauge) external override nonReentrant returns (uint256) {\n return _mintFor(gauge, msg.sender);\n }\n\n /// @inheritdoc IBalancerMinter\n function mintMany(address[] calldata gauges) external override nonReentrant returns (uint256) {\n return _mintForMany(gauges, msg.sender);\n }\n\n /// @inheritdoc IBalancerMinter\n function mintFor(address gauge, address user) external override nonReentrant returns (uint256) {\n require(_allowedMinter[msg.sender][user], \"Caller not allowed to mint for user\");\n return _mintFor(gauge, user);\n }\n\n /// @inheritdoc IBalancerMinter\n function mintManyFor(address[] calldata gauges, address user) external override nonReentrant returns (uint256) {\n require(_allowedMinter[msg.sender][user], \"Caller not allowed to mint for user\");\n return _mintForMany(gauges, user);\n }\n\n /// @inheritdoc IBalancerMinter\n function minted(address user, address gauge) public view override returns (uint256) {\n return _minted[user][gauge];\n }\n\n /// @inheritdoc IBalancerMinter\n function getMinterApproval(address minter, address user) external view override returns (bool) {\n return _allowedMinter[minter][user];\n }\n\n /// @inheritdoc IBalancerMinter\n function setMinterApproval(address minter, bool approval) public override {\n _setMinterApproval(minter, msg.sender, approval);\n }\n\n /// @inheritdoc IBalancerMinter\n function setMinterApprovalWithSignature(\n address minter,\n bool approval,\n address user,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external override {\n bytes32 structHash = keccak256(\n abi.encode(_SET_MINTER_APPROVAL_TYPEHASH, minter, approval, getNextNonce(user), deadline)\n );\n\n _ensureValidSignature(user, structHash, _toArraySignature(v, r, s), deadline, Errors.INVALID_SIGNATURE);\n\n _setMinterApproval(minter, user, approval);\n }\n\n function _setMinterApproval(\n address minter,\n address user,\n bool approval\n ) private {\n _allowedMinter[minter][user] = approval;\n emit MinterApprovalSet(user, minter, approval);\n }\n\n // Internal functions\n\n function _setMinted(\n address user,\n address gauge,\n uint256 value\n ) internal {\n _minted[user][gauge] = value;\n emit Minted(user, gauge, value);\n }\n\n function _mintFor(address gauge, address user) internal virtual returns (uint256 tokensToMint);\n\n function _mintForMany(address[] calldata gauges, address user) internal virtual returns (uint256 tokensToMint);\n\n // The below functions are near-duplicates of functions available above.\n // They are included for ABI compatibility with snake_casing as used in vyper contracts.\n // solhint-disable func-name-mixedcase\n\n /// @inheritdoc IBalancerMinter\n function allowed_to_mint_for(address minter, address user) external view override returns (bool) {\n return _allowedMinter[minter][user];\n }\n\n /// @inheritdoc IBalancerMinter\n function mint_many(address[8] calldata gauges) external override nonReentrant {\n for (uint256 i = 0; i < 8; ++i) {\n if (gauges[i] == address(0)) {\n break;\n }\n _mintFor(gauges[i], msg.sender);\n }\n }\n\n /// @inheritdoc IBalancerMinter\n function mint_for(address gauge, address user) external override nonReentrant {\n if (_allowedMinter[msg.sender][user]) {\n _mintFor(gauge, user);\n }\n }\n\n /// @inheritdoc IBalancerMinter\n function toggle_approve_mint(address minter) external override {\n setMinterApproval(minter, !_allowedMinter[minter][msg.sender]);\n }\n}\n"},"contracts/BalancerTokenAdmin.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\";\n\n// solhint-disable not-rely-on-time\n\n/**\n * @title Balancer Token Admin\n * @notice This contract holds all admin powers over the BAL token passing through calls\n * while delegating access control to the Balancer Authorizer\n *\n * In addition, calls to the mint function must respect the inflation schedule as defined in this contract.\n * As this contract is the only way to mint BAL tokens this ensures that the maximum allowed supply is enforced\n * @dev This contract exists as a consequence of the gauge systems needing to know a fixed inflation schedule\n * in order to know how much BAL a gauge is allowed to mint. As this does not exist within the BAL token itself\n * it is defined here, we must then wrap the token's minting functionality in order for this to be meaningful.\n */\ncontract BalancerTokenAdmin is IBalancerTokenAdmin, SingletonAuthentication, ReentrancyGuard {\n using Math for uint256;\n\n // Initial inflation rate of 145k BAL per week.\n uint256 public constant override INITIAL_RATE = (145000 * 1e18) / uint256(1 weeks); // BAL has 18 decimals\n uint256 public constant override RATE_REDUCTION_TIME = 365 days;\n uint256 public constant override RATE_REDUCTION_COEFFICIENT = 1189207115002721024; // 2 ** (1/4) * 1e18\n uint256 public constant override RATE_DENOMINATOR = 1e18;\n\n IBalancerToken private immutable _balancerToken;\n\n event MiningParametersUpdated(uint256 rate, uint256 supply);\n\n // Supply Variables\n uint256 private _miningEpoch;\n uint256 private _startEpochTime = type(uint256).max; // Sentinel value for contract not being activated\n uint256 private _startEpochSupply;\n uint256 private _rate;\n\n constructor(IVault vault, IBalancerToken balancerToken) SingletonAuthentication(vault) {\n _balancerToken = balancerToken;\n }\n\n /**\n * @dev Returns the Balancer token.\n */\n function getBalancerToken() external view override returns (IBalancerToken) {\n return _balancerToken;\n }\n\n /**\n * @notice Initiate BAL token inflation schedule\n * @dev Reverts if contract does not have sole minting powers over BAL (and no other minters can be added).\n */\n function activate() external override nonReentrant authenticate {\n require(_startEpochTime == type(uint256).max, \"Already activated\");\n\n // We need to check that this contract can't be bypassed to mint more BAL in the future.\n // If other addresses had minting rights over the BAL token then this inflation schedule\n // could be bypassed by minting new tokens directly on the BalancerGovernanceToken contract.\n\n // On the BalancerGovernanceToken contract the minter role's admin is the DEFAULT_ADMIN_ROLE.\n // No external function exists to change the minter role's admin so we cannot make the list of\n // minters immutable without revoking all access to DEFAULT_ADMIN_ROLE.\n bytes32 minterRole = _balancerToken.MINTER_ROLE();\n bytes32 snapshotRole = _balancerToken.SNAPSHOT_ROLE();\n bytes32 adminRole = _balancerToken.DEFAULT_ADMIN_ROLE();\n\n require(_balancerToken.hasRole(adminRole, address(this)), \"BalancerTokenAdmin is not an admin\");\n\n // All other minters must be removed to avoid inflation schedule enforcement being bypassed.\n uint256 numberOfMinters = _balancerToken.getRoleMemberCount(minterRole);\n for (uint256 i = 0; i < numberOfMinters; ++i) {\n address minter = _balancerToken.getRoleMember(minterRole, 0);\n _balancerToken.revokeRole(minterRole, minter);\n }\n // Give this contract minting rights over the BAL token\n _balancerToken.grantRole(minterRole, address(this));\n\n // BalancerGovernanceToken exposes a role-restricted `snapshot` function for performing onchain voting.\n // We delegate control over this to the Balancer Authorizer by removing this role from all current addresses\n // and exposing a function which defers to the Authorizer for access control.\n uint256 numberOfSnapshotters = _balancerToken.getRoleMemberCount(snapshotRole);\n for (uint256 i = 0; i < numberOfSnapshotters; ++i) {\n address snapshotter = _balancerToken.getRoleMember(snapshotRole, 0);\n _balancerToken.revokeRole(snapshotRole, snapshotter);\n }\n // Give this contract snapshotting rights over the BAL token\n _balancerToken.grantRole(snapshotRole, address(this));\n\n // BalancerTokenAdmin now is the only holder of MINTER_ROLE and SNAPSHOT_ROLE for BalancerGovernanceToken.\n\n // We can't prevent any other admins from granting other addresses these roles however.\n // This undermines the ability for BalancerTokenAdmin to enforce the correct inflation schedule.\n // The only way to prevent this is for BalancerTokenAdmin to be the only admin. We then remove all other admins.\n uint256 numberOfAdmins = _balancerToken.getRoleMemberCount(adminRole);\n uint256 skipSelf = 0;\n for (uint256 i = 0; i < numberOfAdmins; ++i) {\n address admin = _balancerToken.getRoleMember(adminRole, skipSelf);\n if (admin != address(this)) {\n _balancerToken.revokeRole(adminRole, admin);\n } else {\n // This contract is now the admin with index 0, we now delete the address with index 1 instead\n skipSelf = 1;\n }\n }\n\n // BalancerTokenAdmin doesn't actually need admin rights any more and won't grant rights to any more addresses\n // We then renounce our admin role to ensure that another address won't gain absolute minting powers.\n _balancerToken.revokeRole(adminRole, address(this));\n\n // Perform sanity checks to make sure we're not leaving the roles in a broken state\n require(_balancerToken.getRoleMemberCount(adminRole) == 0, \"Address exists with admin rights\");\n require(_balancerToken.hasRole(minterRole, address(this)), \"BalancerTokenAdmin is not a minter\");\n require(_balancerToken.hasRole(snapshotRole, address(this)), \"BalancerTokenAdmin is not a snapshotter\");\n require(_balancerToken.getRoleMemberCount(minterRole) == 1, \"Multiple minters exist\");\n require(_balancerToken.getRoleMemberCount(snapshotRole) == 1, \"Multiple snapshotters exist\");\n\n // As BAL inflation is now enforced by this contract we can initialise the relevant variables.\n _startEpochSupply = _balancerToken.totalSupply();\n _startEpochTime = block.timestamp;\n _rate = INITIAL_RATE;\n emit MiningParametersUpdated(INITIAL_RATE, _startEpochSupply);\n }\n\n /**\n * @notice Mint BAL tokens subject to the defined inflation schedule\n * @dev Callable only by addresses defined in the Balancer Authorizer contract\n */\n function mint(address to, uint256 amount) external override authenticate {\n // Check if we've passed into a new epoch such that we should calculate available supply with a smaller rate.\n if (block.timestamp >= _startEpochTime.add(RATE_REDUCTION_TIME)) {\n _updateMiningParameters();\n }\n\n require(\n _balancerToken.totalSupply().add(amount) <= _availableSupply(),\n \"Mint amount exceeds remaining available supply\"\n );\n _balancerToken.mint(to, amount);\n }\n\n /**\n * @notice Perform a snapshot of BAL token balances\n * @dev Callable only by addresses defined in the Balancer Authorizer contract\n */\n function snapshot() external authenticate {\n _balancerToken.snapshot();\n }\n\n /**\n * @notice Returns the current epoch number.\n */\n function getMiningEpoch() external view returns (uint256) {\n return _miningEpoch;\n }\n\n /**\n * @notice Returns the start timestamp of the current epoch.\n */\n function getStartEpochTime() external view returns (uint256) {\n return _startEpochTime;\n }\n\n /**\n * @notice Returns the start timestamp of the next epoch.\n */\n function getFutureEpochTime() external view returns (uint256) {\n return _startEpochTime.add(RATE_REDUCTION_TIME);\n }\n\n /**\n * @notice Returns the available supply at the beginning of the current epoch.\n */\n function getStartEpochSupply() external view returns (uint256) {\n return _startEpochSupply;\n }\n\n /**\n * @notice Returns the current inflation rate of BAL per second\n */\n function getInflationRate() external view returns (uint256) {\n return _rate;\n }\n\n /**\n * @notice Maximum allowable number of tokens in existence (claimed or unclaimed)\n */\n function getAvailableSupply() external view returns (uint256) {\n return _availableSupply();\n }\n\n /**\n * @notice Get timestamp of the current mining epoch start while simultaneously updating mining parameters\n * @return Timestamp of the current epoch\n */\n function startEpochTimeWrite() external override returns (uint256) {\n return _startEpochTimeWrite();\n }\n\n /**\n * @notice Get timestamp of the next mining epoch start while simultaneously updating mining parameters\n * @return Timestamp of the next epoch\n */\n function futureEpochTimeWrite() external returns (uint256) {\n return _startEpochTimeWrite().add(RATE_REDUCTION_TIME);\n }\n\n /**\n * @notice Update mining rate and supply at the start of the epoch\n * @dev Callable by any address, but only once per epoch\n * Total supply becomes slightly larger if this function is called late\n */\n function updateMiningParameters() external {\n require(block.timestamp >= _startEpochTime.add(RATE_REDUCTION_TIME), \"Epoch has not finished yet\");\n _updateMiningParameters();\n }\n\n /**\n * @notice How much supply is mintable from start timestamp till end timestamp\n * @param start Start of the time interval (timestamp)\n * @param end End of the time interval (timestamp)\n * @return Tokens mintable from `start` till `end`\n */\n function mintableInTimeframe(uint256 start, uint256 end) external view returns (uint256) {\n return _mintableInTimeframe(start, end);\n }\n\n // Internal functions\n\n /**\n * @notice Maximum allowable number of tokens in existence (claimed or unclaimed)\n */\n function _availableSupply() internal view returns (uint256) {\n uint256 newSupplyFromCurrentEpoch = (block.timestamp.sub(_startEpochTime)).mul(_rate);\n return _startEpochSupply.add(newSupplyFromCurrentEpoch);\n }\n\n /**\n * @notice Get timestamp of the current mining epoch start while simultaneously updating mining parameters\n * @return Timestamp of the current epoch\n */\n function _startEpochTimeWrite() internal returns (uint256) {\n uint256 startEpochTime = _startEpochTime;\n if (block.timestamp >= startEpochTime.add(RATE_REDUCTION_TIME)) {\n _updateMiningParameters();\n return _startEpochTime;\n }\n return startEpochTime;\n }\n\n function _updateMiningParameters() internal {\n uint256 inflationRate = _rate;\n uint256 startEpochSupply = _startEpochSupply.add(inflationRate.mul(RATE_REDUCTION_TIME));\n inflationRate = inflationRate.mul(RATE_DENOMINATOR).divDown(RATE_REDUCTION_COEFFICIENT);\n\n _miningEpoch = _miningEpoch.add(1);\n _startEpochTime = _startEpochTime.add(RATE_REDUCTION_TIME);\n _rate = inflationRate;\n _startEpochSupply = startEpochSupply;\n\n emit MiningParametersUpdated(inflationRate, startEpochSupply);\n }\n\n /**\n * @notice How much supply is mintable from start timestamp till end timestamp\n * @param start Start of the time interval (timestamp)\n * @param end End of the time interval (timestamp)\n * @return Tokens mintable from `start` till `end`\n */\n function _mintableInTimeframe(uint256 start, uint256 end) internal view returns (uint256) {\n require(start <= end, \"start > end\");\n\n uint256 currentEpochTime = _startEpochTime;\n uint256 currentRate = _rate;\n\n // It shouldn't be possible to over/underflow in here but we add checked maths to be safe\n\n // Special case if end is in future (not yet minted) epoch\n if (end > currentEpochTime.add(RATE_REDUCTION_TIME)) {\n currentEpochTime = currentEpochTime.add(RATE_REDUCTION_TIME);\n currentRate = currentRate.mul(RATE_DENOMINATOR).divDown(RATE_REDUCTION_COEFFICIENT);\n }\n\n require(end <= currentEpochTime.add(RATE_REDUCTION_TIME), \"too far in future\");\n\n uint256 toMint = 0;\n for (uint256 epoch = 0; epoch < 999; ++epoch) {\n if (end >= currentEpochTime) {\n uint256 currentEnd = end;\n if (currentEnd > currentEpochTime.add(RATE_REDUCTION_TIME)) {\n currentEnd = currentEpochTime.add(RATE_REDUCTION_TIME);\n }\n\n uint256 currentStart = start;\n if (currentStart >= currentEpochTime.add(RATE_REDUCTION_TIME)) {\n // We should never get here but what if...\n break;\n } else if (currentStart < currentEpochTime) {\n currentStart = currentEpochTime;\n }\n\n toMint = toMint.add(currentRate.mul(currentEnd.sub(currentStart)));\n\n if (start >= currentEpochTime) {\n break;\n }\n }\n\n currentEpochTime = currentEpochTime.sub(RATE_REDUCTION_TIME);\n // double-division with rounding made rate a bit less => good\n currentRate = currentRate.mul(RATE_REDUCTION_COEFFICIENT).divDown(RATE_DENOMINATOR);\n assert(currentRate <= INITIAL_RATE);\n }\n\n return toMint;\n }\n\n // The below functions are duplicates of functions available above.\n // They are included for ABI compatibility with snake_casing as used in vyper contracts.\n // solhint-disable func-name-mixedcase\n\n function rate() external view override returns (uint256) {\n return _rate;\n }\n\n function available_supply() external view returns (uint256) {\n return _availableSupply();\n }\n\n /**\n * @notice Get timestamp of the current mining epoch start while simultaneously updating mining parameters\n * @return Timestamp of the current epoch\n */\n function start_epoch_time_write() external returns (uint256) {\n return _startEpochTimeWrite();\n }\n\n /**\n * @notice Get timestamp of the next mining epoch start while simultaneously updating mining parameters\n * @return Timestamp of the next epoch\n */\n function future_epoch_time_write() external returns (uint256) {\n return _startEpochTimeWrite().add(RATE_REDUCTION_TIME);\n }\n\n /**\n * @notice Update mining rate and supply at the start of the epoch\n * @dev Callable by any address, but only once per epoch\n * Total supply becomes slightly larger if this function is called late\n */\n function update_mining_parameters() external {\n require(block.timestamp >= _startEpochTime.add(RATE_REDUCTION_TIME), \"Epoch has not finished yet\");\n _updateMiningParameters();\n }\n\n /**\n * @notice How much supply is mintable from start timestamp till end timestamp\n * @param start Start of the time interval (timestamp)\n * @param end End of the time interval (timestamp)\n * @return Tokens mintable from `start` till `end`\n */\n function mintable_in_timeframe(uint256 start, uint256 end) external view returns (uint256) {\n return _mintableInTimeframe(start, end);\n }\n}\n"},"contracts/fee-distribution/FeeDistributor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\";\n\n// solhint-disable not-rely-on-time\n\n/**\n * @title Fee Distributor\n * @notice Distributes any tokens transferred to the contract (e.g. Protocol fees and any BAL emissions) among veBAL\n * holders proportionally based on a snapshot of the week at which the tokens are sent to the FeeDistributor contract.\n * @dev Supports distributing arbitrarily many different tokens. In order to start distributing a new token to veBAL\n * holders simply transfer the tokens to the `FeeDistributor` contract and then call `checkpointToken`.\n */\ncontract FeeDistributor is IFeeDistributor, OptionalOnlyCaller, ReentrancyGuard {\n using SafeMath for uint256;\n using SafeERC20 for IERC20;\n\n IVotingEscrow private immutable _votingEscrow;\n\n uint256 private immutable _startTime;\n\n // Global State\n uint256 private _timeCursor;\n mapping(uint256 => uint256) private _veSupplyCache;\n\n // Token State\n\n // `startTime` and `timeCursor` are both timestamps so comfortably fit in a uint64.\n // `cachedBalance` will comfortably fit the total supply of any meaningful token.\n // Should more than 2^128 tokens be sent to this contract then checkpointing this token will fail until enough\n // tokens have been claimed to bring the total balance back below 2^128.\n struct TokenState {\n uint64 startTime;\n uint64 timeCursor;\n uint128 cachedBalance;\n }\n mapping(IERC20 => TokenState) private _tokenState;\n mapping(IERC20 => mapping(uint256 => uint256)) private _tokensPerWeek;\n\n // User State\n\n // `startTime` and `timeCursor` are timestamps so will comfortably fit in a uint64.\n // For `lastEpochCheckpointed` to overflow would need over 2^128 transactions to the VotingEscrow contract.\n struct UserState {\n uint64 startTime;\n uint64 timeCursor;\n uint128 lastEpochCheckpointed;\n }\n mapping(address => UserState) internal _userState;\n mapping(address => mapping(uint256 => uint256)) private _userBalanceAtTimestamp;\n mapping(address => mapping(IERC20 => uint256)) private _userTokenTimeCursor;\n\n constructor(IVotingEscrow votingEscrow, uint256 startTime) EIP712(\"FeeDistributor\", \"1\") {\n _votingEscrow = votingEscrow;\n\n startTime = _roundDownTimestamp(startTime);\n uint256 currentWeek = _roundDownTimestamp(block.timestamp);\n require(startTime >= currentWeek, \"Cannot start before current week\");\n if (startTime == currentWeek) {\n // We assume that `votingEscrow` has been deployed in a week previous to this one.\n // If `votingEscrow` did not have a non-zero supply at the beginning of the current week\n // then any tokens which are distributed this week will be lost permanently.\n require(votingEscrow.totalSupply(currentWeek) > 0, \"Zero total supply results in lost tokens\");\n }\n _startTime = startTime;\n _timeCursor = startTime;\n }\n\n /**\n * @notice Returns the VotingEscrow (veBAL) token contract\n */\n function getVotingEscrow() external view override returns (IVotingEscrow) {\n return _votingEscrow;\n }\n\n /**\n * @notice Returns the global time cursor representing the most earliest uncheckpointed week.\n */\n function getTimeCursor() external view override returns (uint256) {\n return _timeCursor;\n }\n\n /**\n * @notice Returns the user-level time cursor representing the most earliest uncheckpointed week.\n * @param user - The address of the user to query.\n */\n function getUserTimeCursor(address user) external view override returns (uint256) {\n return _userState[user].timeCursor;\n }\n\n /**\n * @notice Returns the token-level time cursor storing the timestamp at up to which tokens have been distributed.\n * @param token - The ERC20 token address to query.\n */\n function getTokenTimeCursor(IERC20 token) external view override returns (uint256) {\n return _tokenState[token].timeCursor;\n }\n\n /**\n * @notice Returns the user-level time cursor storing the timestamp of the latest token distribution claimed.\n * @param user - The address of the user to query.\n * @param token - The ERC20 token address to query.\n */\n function getUserTokenTimeCursor(address user, IERC20 token) external view override returns (uint256) {\n return _getUserTokenTimeCursor(user, token);\n }\n\n /**\n * @notice Returns the user's cached balance of veBAL as of the provided timestamp.\n * @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n * This function requires `user` to have been checkpointed past `timestamp` so that their balance is cached.\n * @param user - The address of the user of which to read the cached balance of.\n * @param timestamp - The timestamp at which to read the `user`'s cached balance at.\n */\n function getUserBalanceAtTimestamp(address user, uint256 timestamp) external view override returns (uint256) {\n return _userBalanceAtTimestamp[user][timestamp];\n }\n\n /**\n * @notice Returns the cached total supply of veBAL as of the provided timestamp.\n * @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n * This function requires the contract to have been checkpointed past `timestamp` so that the supply is cached.\n * @param timestamp - The timestamp at which to read the cached total supply at.\n */\n function getTotalSupplyAtTimestamp(uint256 timestamp) external view override returns (uint256) {\n return _veSupplyCache[timestamp];\n }\n\n /**\n * @notice Returns the FeeDistributor's cached balance of `token`.\n */\n function getTokenLastBalance(IERC20 token) external view override returns (uint256) {\n return _tokenState[token].cachedBalance;\n }\n\n /**\n * @notice Returns the amount of `token` which the FeeDistributor received in the week beginning at `timestamp`.\n * @param token - The ERC20 token address to query.\n * @param timestamp - The timestamp corresponding to the beginning of the week of interest.\n */\n function getTokensDistributedInWeek(IERC20 token, uint256 timestamp) external view override returns (uint256) {\n return _tokensPerWeek[token][timestamp];\n }\n\n // Depositing\n\n /**\n * @notice Deposits tokens to be distributed in the current week.\n * @dev Sending tokens directly to the FeeDistributor instead of using `depositToken` may result in tokens being\n * retroactively distributed to past weeks, or for the distribution to carry over to future weeks.\n *\n * If for some reason `depositToken` cannot be called, in order to ensure that all tokens are correctly distributed\n * manually call `checkpointToken` before and after the token transfer.\n * @param token - The ERC20 token address to distribute.\n * @param amount - The amount of tokens to deposit.\n */\n function depositToken(IERC20 token, uint256 amount) external override nonReentrant {\n _checkpointToken(token, false);\n token.safeTransferFrom(msg.sender, address(this), amount);\n _checkpointToken(token, true);\n }\n\n /**\n * @notice Deposits tokens to be distributed in the current week.\n * @dev A version of `depositToken` which supports depositing multiple `tokens` at once.\n * See `depositToken` for more details.\n * @param tokens - An array of ERC20 token addresses to distribute.\n * @param amounts - An array of token amounts to deposit.\n */\n function depositTokens(IERC20[] calldata tokens, uint256[] calldata amounts) external override nonReentrant {\n InputHelpers.ensureInputLengthMatch(tokens.length, amounts.length);\n\n uint256 length = tokens.length;\n for (uint256 i = 0; i < length; ++i) {\n _checkpointToken(tokens[i], false);\n tokens[i].safeTransferFrom(msg.sender, address(this), amounts[i]);\n _checkpointToken(tokens[i], true);\n }\n }\n\n // Checkpointing\n\n /**\n * @notice Caches the total supply of veBAL at the beginning of each week.\n * This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n */\n function checkpoint() external override nonReentrant {\n _checkpointTotalSupply();\n }\n\n /**\n * @notice Caches the user's balance of veBAL at the beginning of each week.\n * This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n * @param user - The address of the user to be checkpointed.\n */\n function checkpointUser(address user) external override nonReentrant {\n _checkpointUserBalance(user);\n }\n\n /**\n * @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n * @dev Any `token` balance held by the FeeDistributor above that which is returned by `getTokenLastBalance`\n * will be distributed evenly across the time period since `token` was last checkpointed.\n *\n * This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n * @param token - The ERC20 token address to be checkpointed.\n */\n function checkpointToken(IERC20 token) external override nonReentrant {\n _checkpointToken(token, true);\n }\n\n /**\n * @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n * @dev A version of `checkpointToken` which supports checkpointing multiple tokens.\n * See `checkpointToken` for more details.\n * @param tokens - An array of ERC20 token addresses to be checkpointed.\n */\n function checkpointTokens(IERC20[] calldata tokens) external override nonReentrant {\n uint256 tokensLength = tokens.length;\n for (uint256 i = 0; i < tokensLength; ++i) {\n _checkpointToken(tokens[i], true);\n }\n }\n\n // Claiming\n\n /**\n * @notice Claims all pending distributions of the provided token for a user.\n * @dev It's not necessary to explicitly checkpoint before calling this function, it will ensure the FeeDistributor\n * is up to date before calculating the amount of tokens to be claimed.\n * @param user - The user on behalf of which to claim.\n * @param token - The ERC20 token address to be claimed.\n * @return The amount of `token` sent to `user` as a result of claiming.\n */\n function claimToken(address user, IERC20 token)\n external\n override\n nonReentrant\n optionalOnlyCaller(user)\n returns (uint256)\n {\n _checkpointTotalSupply();\n _checkpointUserBalance(user);\n _checkpointToken(token, false);\n\n uint256 amount = _claimToken(user, token);\n return amount;\n }\n\n /**\n * @notice Claims a number of tokens on behalf of a user.\n * @dev A version of `claimToken` which supports claiming multiple `tokens` on behalf of `user`.\n * See `claimToken` for more details.\n * @param user - The user on behalf of which to claim.\n * @param tokens - An array of ERC20 token addresses to be claimed.\n * @return An array of the amounts of each token in `tokens` sent to `user` as a result of claiming.\n */\n function claimTokens(address user, IERC20[] calldata tokens)\n external\n override\n nonReentrant\n optionalOnlyCaller(user)\n returns (uint256[] memory)\n {\n _checkpointTotalSupply();\n _checkpointUserBalance(user);\n\n uint256 tokensLength = tokens.length;\n uint256[] memory amounts = new uint256[](tokensLength);\n for (uint256 i = 0; i < tokensLength; ++i) {\n _checkpointToken(tokens[i], false);\n amounts[i] = _claimToken(user, tokens[i]);\n }\n\n return amounts;\n }\n\n // Internal functions\n\n /**\n * @dev It is required that both the global, token and user state have been properly checkpointed\n * before calling this function.\n */\n function _claimToken(address user, IERC20 token) internal returns (uint256) {\n TokenState storage tokenState = _tokenState[token];\n uint256 nextUserTokenWeekToClaim = _getUserTokenTimeCursor(user, token);\n\n // The first week which cannot be correctly claimed is the earliest of:\n // - A) The global or user time cursor (whichever is earliest), rounded up to the end of the week.\n // - B) The token time cursor, rounded down to the beginning of the week.\n //\n // This prevents the two failure modes:\n // - A) A user may claim a week for which we have not processed their balance, resulting in tokens being locked.\n // - B) A user may claim a week which then receives more tokens to be distributed. However the user has\n // already claimed for that week so their share of these new tokens are lost.\n uint256 firstUnclaimableWeek = Math.min(\n _roundUpTimestamp(Math.min(_timeCursor, _userState[user].timeCursor)),\n _roundDownTimestamp(tokenState.timeCursor)\n );\n\n mapping(uint256 => uint256) storage tokensPerWeek = _tokensPerWeek[token];\n mapping(uint256 => uint256) storage userBalanceAtTimestamp = _userBalanceAtTimestamp[user];\n\n uint256 amount;\n for (uint256 i = 0; i < 20; ++i) {\n // We clearly cannot claim for `firstUnclaimableWeek` and so we break here.\n if (nextUserTokenWeekToClaim >= firstUnclaimableWeek) break;\n\n amount +=\n (tokensPerWeek[nextUserTokenWeekToClaim] * userBalanceAtTimestamp[nextUserTokenWeekToClaim]) /\n _veSupplyCache[nextUserTokenWeekToClaim];\n nextUserTokenWeekToClaim += 1 weeks;\n }\n // Update the stored user-token time cursor to prevent this user claiming this week again.\n _userTokenTimeCursor[user][token] = nextUserTokenWeekToClaim;\n\n if (amount > 0) {\n // For a token to be claimable it must have been added to the cached balance so this is safe.\n tokenState.cachedBalance = uint128(tokenState.cachedBalance - amount);\n token.safeTransfer(user, amount);\n emit TokensClaimed(user, token, amount, nextUserTokenWeekToClaim);\n }\n\n return amount;\n }\n\n /**\n * @dev Calculate the amount of `token` to be distributed to `_votingEscrow` holders since the last checkpoint.\n */\n function _checkpointToken(IERC20 token, bool force) internal {\n TokenState storage tokenState = _tokenState[token];\n uint256 lastTokenTime = tokenState.timeCursor;\n uint256 timeSinceLastCheckpoint;\n if (lastTokenTime == 0) {\n // If it's the first time we're checkpointing this token then start distributing from now.\n // Also mark at which timestamp users should start attempts to claim this token from.\n lastTokenTime = block.timestamp;\n tokenState.startTime = uint64(_roundDownTimestamp(block.timestamp));\n\n // Prevent someone from assigning tokens to an inaccessible week.\n require(block.timestamp > _startTime, \"Fee distribution has not started yet\");\n } else {\n timeSinceLastCheckpoint = block.timestamp - lastTokenTime;\n\n if (!force) {\n // Checkpointing N times within a single week is completely equivalent to checkpointing once at the end.\n // We then want to get as close as possible to a single checkpoint every Wed 23:59 UTC to save gas.\n\n // We then skip checkpointing if we're in the same week as the previous checkpoint.\n bool alreadyCheckpointedThisWeek = _roundDownTimestamp(block.timestamp) ==\n _roundDownTimestamp(lastTokenTime);\n // However we want to ensure that all of this week's fees are assigned to the current week without\n // overspilling into the next week. To mitigate this, we checkpoint if we're near the end of the week.\n bool nearingEndOfWeek = _roundUpTimestamp(block.timestamp) - block.timestamp < 1 days;\n\n // This ensures that we checkpoint once at the beginning of the week and again for each user interaction\n // towards the end of the week to give an accurate final reading of the balance.\n if (alreadyCheckpointedThisWeek && !nearingEndOfWeek) {\n return;\n }\n }\n }\n\n tokenState.timeCursor = uint64(block.timestamp);\n\n uint256 tokenBalance = token.balanceOf(address(this));\n uint256 newTokensToDistribute = tokenBalance.sub(tokenState.cachedBalance);\n if (newTokensToDistribute == 0) return;\n require(tokenBalance <= type(uint128).max, \"Maximum token balance exceeded\");\n tokenState.cachedBalance = uint128(tokenBalance);\n\n uint256 firstIncompleteWeek = _roundDownTimestamp(lastTokenTime);\n uint256 nextWeek = 0;\n\n // Distribute `newTokensToDistribute` evenly across the time period from `lastTokenTime` to now.\n // These tokens are assigned to weeks proportionally to how much of this period falls into each week.\n mapping(uint256 => uint256) storage tokensPerWeek = _tokensPerWeek[token];\n for (uint256 i = 0; i < 20; ++i) {\n // This is safe as we're incrementing a timestamp.\n nextWeek = firstIncompleteWeek + 1 weeks;\n if (block.timestamp < nextWeek) {\n // `firstIncompleteWeek` is now the beginning of the current week, i.e. this is the final iteration.\n if (timeSinceLastCheckpoint == 0 && block.timestamp == lastTokenTime) {\n tokensPerWeek[firstIncompleteWeek] += newTokensToDistribute;\n } else {\n // block.timestamp >= lastTokenTime by definition.\n tokensPerWeek[firstIncompleteWeek] +=\n (newTokensToDistribute * (block.timestamp - lastTokenTime)) /\n timeSinceLastCheckpoint;\n }\n // As we've caught up to the present then we should now break.\n break;\n } else {\n // We've gone a full week or more without checkpointing so need to distribute tokens to previous weeks.\n if (timeSinceLastCheckpoint == 0 && nextWeek == lastTokenTime) {\n // It shouldn't be possible to enter this block\n tokensPerWeek[firstIncompleteWeek] += newTokensToDistribute;\n } else {\n // nextWeek > lastTokenTime by definition.\n tokensPerWeek[firstIncompleteWeek] +=\n (newTokensToDistribute * (nextWeek - lastTokenTime)) /\n timeSinceLastCheckpoint;\n }\n }\n\n // We've now \"checkpointed\" up to the beginning of next week so must update timestamps appropriately.\n lastTokenTime = nextWeek;\n firstIncompleteWeek = nextWeek;\n }\n\n emit TokenCheckpointed(token, newTokensToDistribute, lastTokenTime);\n }\n\n /**\n * @dev Cache the `user`'s balance of `_votingEscrow` at the beginning of each new week\n */\n function _checkpointUserBalance(address user) internal {\n uint256 maxUserEpoch = _votingEscrow.user_point_epoch(user);\n\n // If user has no epochs then they have never locked veBAL.\n // They clearly will not then receive fees.\n if (maxUserEpoch == 0) return;\n\n UserState storage userState = _userState[user];\n\n // `nextWeekToCheckpoint` represents the timestamp of the beginning of the first week\n // which we haven't checkpointed the user's VotingEscrow balance yet.\n uint256 nextWeekToCheckpoint = userState.timeCursor;\n\n uint256 userEpoch;\n if (nextWeekToCheckpoint == 0) {\n // First checkpoint for user so need to do the initial binary search\n userEpoch = _findTimestampUserEpoch(user, _startTime, 0, maxUserEpoch);\n } else {\n if (nextWeekToCheckpoint >= block.timestamp) {\n // User has checkpointed the current week already so perform early return.\n // This prevents a user from processing epochs created later in this week, however this is not an issue\n // as if a significant number of these builds up then the user will skip past them with a binary search.\n return;\n }\n\n // Otherwise use the value saved from last time\n userEpoch = userState.lastEpochCheckpointed;\n\n // This optimizes a scenario common for power users, which have frequent `VotingEscrow` interactions in\n // the same week. We assume that any such user is also claiming fees every week, and so we only perform\n // a binary search here rather than integrating it into the main search algorithm, effectively skipping\n // most of the week's irrelevant checkpoints.\n // The slight tradeoff is that users who have multiple infrequent `VotingEscrow` interactions and also don't\n // claim frequently will also perform the binary search, despite it not leading to gas savings.\n if (maxUserEpoch - userEpoch > 20) {\n userEpoch = _findTimestampUserEpoch(user, nextWeekToCheckpoint, userEpoch, maxUserEpoch);\n }\n }\n\n // Epoch 0 is always empty so bump onto the next one so that we start on a valid epoch.\n if (userEpoch == 0) {\n userEpoch = 1;\n }\n\n IVotingEscrow.Point memory nextUserPoint = _votingEscrow.user_point_history(user, userEpoch);\n\n // If this is the first checkpoint for the user, calculate the first week they're eligible for.\n // i.e. the timestamp of the first Thursday after they locked.\n // If this is earlier then the first distribution then fast forward to then.\n if (nextWeekToCheckpoint == 0) {\n // Disallow checkpointing before `startTime`.\n require(block.timestamp > _startTime, \"Fee distribution has not started yet\");\n nextWeekToCheckpoint = Math.max(_startTime, _roundUpTimestamp(nextUserPoint.ts));\n userState.startTime = uint64(nextWeekToCheckpoint);\n }\n\n // It's safe to increment `userEpoch` and `nextWeekToCheckpoint` in this loop as epochs and timestamps\n // are always much smaller than 2^256 and are being incremented by small values.\n IVotingEscrow.Point memory currentUserPoint;\n for (uint256 i = 0; i < 50; ++i) {\n if (nextWeekToCheckpoint >= nextUserPoint.ts && userEpoch <= maxUserEpoch) {\n // The week being considered is contained in a user epoch after that described by `currentUserPoint`.\n // We then shift `nextUserPoint` into `currentUserPoint` and query the Point for the next user epoch.\n // We do this in order to step though epochs until we find the first epoch starting after\n // `nextWeekToCheckpoint`, making the previous epoch the one that contains `nextWeekToCheckpoint`.\n userEpoch += 1;\n currentUserPoint = nextUserPoint;\n if (userEpoch > maxUserEpoch) {\n nextUserPoint = IVotingEscrow.Point(0, 0, 0, 0);\n } else {\n nextUserPoint = _votingEscrow.user_point_history(user, userEpoch);\n }\n } else {\n // The week being considered lies inside the user epoch described by `oldUserPoint`\n // we can then use it to calculate the user's balance at the beginning of the week.\n if (nextWeekToCheckpoint >= block.timestamp) {\n // Break if we're trying to cache the user's balance at a timestamp in the future.\n // We only perform this check here to ensure that we can still process checkpoints created\n // in the current week.\n break;\n }\n\n int128 dt = int128(nextWeekToCheckpoint - currentUserPoint.ts);\n uint256 userBalance = currentUserPoint.bias > currentUserPoint.slope * dt\n ? uint256(currentUserPoint.bias - currentUserPoint.slope * dt)\n : 0;\n\n // User's lock has expired and they haven't relocked yet.\n if (userBalance == 0 && userEpoch > maxUserEpoch) {\n nextWeekToCheckpoint = _roundUpTimestamp(block.timestamp);\n break;\n }\n\n // User had a nonzero lock and so is eligible to collect fees.\n _userBalanceAtTimestamp[user][nextWeekToCheckpoint] = userBalance;\n\n nextWeekToCheckpoint += 1 weeks;\n }\n }\n\n // We subtract off 1 from the userEpoch to step back once so that on the next attempt to checkpoint\n // the current `currentUserPoint` will be loaded as `nextUserPoint`. This ensures that we can't skip over the\n // user epoch containing `nextWeekToCheckpoint`.\n // userEpoch > 0 so this is safe.\n userState.lastEpochCheckpointed = uint64(userEpoch - 1);\n userState.timeCursor = uint64(nextWeekToCheckpoint);\n }\n\n /**\n * @dev Cache the totalSupply of VotingEscrow token at the beginning of each new week\n */\n function _checkpointTotalSupply() internal {\n uint256 nextWeekToCheckpoint = _timeCursor;\n uint256 weekStart = _roundDownTimestamp(block.timestamp);\n\n // We expect `timeCursor == weekStart + 1 weeks` when fully up to date.\n if (nextWeekToCheckpoint > weekStart || weekStart == block.timestamp) {\n // We've already checkpointed up to this week so perform early return\n return;\n }\n\n _votingEscrow.checkpoint();\n\n // Step through the each week and cache the total supply at beginning of week on this contract\n for (uint256 i = 0; i < 20; ++i) {\n if (nextWeekToCheckpoint > weekStart) break;\n\n _veSupplyCache[nextWeekToCheckpoint] = _votingEscrow.totalSupply(nextWeekToCheckpoint);\n\n // This is safe as we're incrementing a timestamp\n nextWeekToCheckpoint += 1 weeks;\n }\n // Update state to the end of the current week (`weekStart` + 1 weeks)\n _timeCursor = nextWeekToCheckpoint;\n }\n\n // Helper functions\n\n /**\n * @dev Wrapper around `_userTokenTimeCursor` which returns the start timestamp for `token`\n * if `user` has not attempted to interact with it previously.\n */\n function _getUserTokenTimeCursor(address user, IERC20 token) internal view returns (uint256) {\n uint256 userTimeCursor = _userTokenTimeCursor[user][token];\n if (userTimeCursor > 0) return userTimeCursor;\n // This is the first time that the user has interacted with this token.\n // We then start from the latest out of either when `user` first locked veBAL or `token` was first checkpointed.\n return Math.max(_userState[user].startTime, _tokenState[token].startTime);\n }\n\n /**\n * @dev Return the user epoch number for `user` corresponding to the provided `timestamp`\n */\n function _findTimestampUserEpoch(\n address user,\n uint256 timestamp,\n uint256 minUserEpoch,\n uint256 maxUserEpoch\n ) internal view returns (uint256) {\n uint256 min = minUserEpoch;\n uint256 max = maxUserEpoch;\n\n // Perform binary search through epochs to find epoch containing `timestamp`\n for (uint256 i = 0; i < 128; ++i) {\n if (min >= max) break;\n\n // Algorithm assumes that inputs are less than 2^128 so this operation is safe.\n // +2 avoids getting stuck in min == mid < max\n uint256 mid = (min + max + 2) / 2;\n IVotingEscrow.Point memory pt = _votingEscrow.user_point_history(user, mid);\n if (pt.ts <= timestamp) {\n min = mid;\n } else {\n // max > min so this is safe.\n max = mid - 1;\n }\n }\n return min;\n }\n\n /**\n * @dev Rounds the provided timestamp down to the beginning of the previous week (Thurs 00:00 UTC)\n */\n function _roundDownTimestamp(uint256 timestamp) private pure returns (uint256) {\n // Division by zero or overflows are impossible here.\n return (timestamp / 1 weeks) * 1 weeks;\n }\n\n /**\n * @dev Rounds the provided timestamp up to the beginning of the next week (Thurs 00:00 UTC)\n */\n function _roundUpTimestamp(uint256 timestamp) private pure returns (uint256) {\n // Overflows are impossible here for all realistic inputs.\n return _roundDownTimestamp(timestamp + 1 weeks - 1);\n }\n}\n"},"contracts/gauges/arbitrum/ArbitrumRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"../StakelessGauge.sol\";\nimport \"./IGatewayRouter.sol\";\n\ncontract ArbitrumRootGauge is StakelessGauge {\n using SafeERC20 for IERC20;\n\n address private immutable _gateway;\n IGatewayRouter private immutable _gatewayRouter;\n IArbitrumFeeProvider private immutable _factory;\n\n address private _recipient;\n\n constructor(IMainnetBalancerMinter minter, IGatewayRouter gatewayRouter) StakelessGauge(minter) {\n _gateway = gatewayRouter.getGateway(address(minter.getBalancerToken()));\n _gatewayRouter = gatewayRouter;\n _factory = IArbitrumFeeProvider(msg.sender);\n }\n\n function initialize(address recipient, uint256 relativeWeightCap) external {\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n }\n\n function getRecipient() external view override returns (address) {\n return _recipient;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n // Token needs to be approved on the gateway NOT the gateway router\n _balToken.safeApprove(_gateway, mintAmount);\n\n (uint256 gasLimit, uint256 gasPrice, uint256 maxSubmissionCost) = _factory.getArbitrumFees();\n uint256 totalBridgeCost = _getTotalBridgeCost(gasLimit, gasPrice, maxSubmissionCost);\n require(msg.value == totalBridgeCost, \"Incorrect msg.value passed\");\n\n // After bridging, the BAL should arrive on Arbitrum within 10 minutes. If it\n // does not, the L2 transaction may have failed due to an insufficient amount\n // within `max_submission_cost + (gas_limit * gas_price)`\n // In this case, the transaction can be manually broadcasted on Arbitrum by calling\n // `ArbRetryableTicket(0x000000000000000000000000000000000000006e).redeem(redemption-TxID)`\n // The calldata for this manual transaction is easily obtained by finding the reverted\n // transaction in the tx history for 0x000000000000000000000000000000000000006e on Arbiscan.\n // https://developer.offchainlabs.com/docs/l1_l2_messages#retryable-transaction-lifecycle\n _gatewayRouter.outboundTransfer{ value: totalBridgeCost }(\n _balToken,\n _recipient,\n mintAmount,\n gasLimit,\n gasPrice,\n abi.encode(maxSubmissionCost, \"\")\n );\n }\n\n function getTotalBridgeCost() external view override returns (uint256) {\n (uint256 gasLimit, uint256 gasPrice, uint256 maxSubmissionCost) = _factory.getArbitrumFees();\n return _getTotalBridgeCost(gasLimit, gasPrice, maxSubmissionCost);\n }\n\n function _getTotalBridgeCost(\n uint256 gasLimit,\n uint256 gasPrice,\n uint256 maxSubmissionCost\n ) internal pure returns (uint256) {\n return gasLimit * gasPrice + maxSubmissionCost;\n }\n}\n"},"contracts/gauges/arbitrum/ArbitrumRootGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./ArbitrumRootGauge.sol\";\n\ncontract ArbitrumRootGaugeFactory is IArbitrumFeeProvider, BaseGaugeFactory, SingletonAuthentication {\n uint64 private _gasLimit;\n uint64 private _gasPrice;\n uint64 private _maxSubmissionCost;\n\n event ArbitrumFeesModified(uint256 gasLimit, uint256 gasPrice, uint256 maxSubmissionCost);\n\n constructor(\n IVault vault,\n IMainnetBalancerMinter minter,\n IGatewayRouter gatewayRouter,\n uint64 gasLimit,\n uint64 gasPrice,\n uint64 maxSubmissionCost\n ) BaseGaugeFactory(address(new ArbitrumRootGauge(minter, gatewayRouter))) SingletonAuthentication(vault) {\n _gasLimit = gasLimit;\n _gasPrice = gasPrice;\n _maxSubmissionCost = maxSubmissionCost;\n }\n\n /**\n * @notice Set the fees for the Arbitrum side of the bridging transaction\n */\n function getArbitrumFees()\n external\n view\n override\n returns (\n uint256 gasLimit,\n uint256 gasPrice,\n uint256 maxSubmissionCost\n )\n {\n gasLimit = _gasLimit;\n gasPrice = _gasPrice;\n maxSubmissionCost = _maxSubmissionCost;\n }\n\n /**\n * @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Arbitrum.\n * @dev Care must be taken to ensure that gauges deployed from this factory are\n * suitable before they are added to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @return The address of the deployed gauge\n */\n function create(address recipient, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n ArbitrumRootGauge(gauge).initialize(recipient, relativeWeightCap);\n return gauge;\n }\n\n /**\n * @notice Set the fees for the Arbitrum side of the bridging transaction\n */\n function setArbitrumFees(\n uint64 gasLimit,\n uint64 gasPrice,\n uint64 maxSubmissionCost\n ) external override authenticate {\n _gasLimit = gasLimit;\n _gasPrice = gasPrice;\n _maxSubmissionCost = maxSubmissionCost;\n emit ArbitrumFeesModified(gasLimit, gasPrice, maxSubmissionCost);\n }\n}\n"},"contracts/gauges/arbitrum/IGatewayRouter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IGatewayRouter {\n function outboundTransfer(\n IERC20 token,\n address recipient,\n uint256 amount,\n uint256 gasLimit,\n uint256 gasPrice,\n bytes calldata data\n ) external payable;\n\n function getGateway(address token) external view returns (address gateway);\n}\n"},"contracts/gauges/avalanche/AvalancheRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"./AvalancheRootGaugeLib.sol\";\nimport \"../StakelessGauge.sol\";\n\n/// @dev Partial interface for LayerZero BAL proxy.\ninterface ILayerZeroBALProxy {\n struct LzCallParams {\n address payable refundAddress;\n address zroPaymentAddress;\n bytes adapterParams;\n }\n\n /// @dev Returns packet type to be used in adapter params. It is a constant set to 0.\n // solhint-disable-next-line func-name-mixedcase\n function PT_SEND() external pure returns (uint8);\n\n /// @dev Returns minimum gas limit required for the target `chainId` and `packetType`.\n function minDstGasLookup(uint16 chainId, uint16 packetType) external view returns (uint256);\n\n /// @dev Returns true if custom adapter parameters are activated in the proxy.\n function useCustomAdapterParams() external view returns (bool);\n\n /// @dev Returns the address of the underlying ERC20 token.\n function token() external view returns (address);\n\n /**\n * @dev Estimate fee for sending token `_tokenId` to (`_dstChainId`, `_toAddress`).\n * @param _dstChainId L0 defined chain id to send tokens to.\n * @param _toAddress dynamic bytes array with the address you are sending tokens to on dstChain.\n * @param _amount amount of the tokens to transfer.\n * @param _useZro indicates to use zro to pay L0 fees.\n * @param _adapterParams flexible bytes array to indicate messaging adapter services in L0.\n */\n function estimateSendFee(\n uint16 _dstChainId,\n bytes32 _toAddress,\n uint256 _amount,\n bool _useZro,\n bytes calldata _adapterParams\n ) external view returns (uint256 nativeFee, uint256 zroFee);\n\n /**\n * @dev Send `_amount` amount of token to (`_dstChainId`, `_toAddress`) from `_from`.\n * @param _from the token owner.\n * @param _dstChainId the destination chain identifier.\n * @param _toAddress can be any size depending on the `dstChainId`.\n * @param _amount the quantity of tokens in wei.\n * @param _minAmount the minimum amount of tokens to receive on dstChain.\n * @param _callParams struct with custom options.\n * - refundAddress: the address LayerZero refunds if too much message fee is sent.\n * - zroPaymentAddress set to address(0x0) if not paying in ZRO (LayerZero Token).\n * - adapterParams is a flexible bytes array used to configure messaging adapter services.\n */\n function sendFrom(\n address _from,\n uint16 _dstChainId,\n bytes32 _toAddress,\n uint256 _amount,\n uint256 _minAmount,\n LzCallParams calldata _callParams\n ) external payable;\n\n /// @dev Returns the maximum allowed precision (decimals) for proxy transfers.\n function sharedDecimals() external returns (uint8);\n}\n\n/**\n * @notice Root Gauge for the Avalanche network.\n * @dev Uses LayerZero OFTv2 (Omni Fungible Token V2) proxy contracts to bridge BAL.\n * See https://layerzero.gitbook.io/docs/evm-guides/layerzero-omnichain-contracts/oft/oftv2 for reference.\n */\ncontract AvalancheRootGauge is StakelessGauge {\n using SafeERC20 for IERC20;\n\n // LayerZero uses proprietary chain IDs.\n // https://layerzero.gitbook.io/docs/technical-reference/mainnet/supported-chain-ids#avalanche\n uint16 private constant _AVALANCHE_LZ_CHAIN_ID = 106;\n\n // PT_SEND constant in proxy; replicated here for simplicity.\n // See https://layerzero.gitbook.io/docs/evm-guides/layerzero-tooling/wire-up-configuration.\n // and https://github.com/LayerZero-Labs/solidity-examples/blob/9134640fe5b618a047f365555e760c8736ebc162/contracts/token/oft/v2/OFTCoreV2.sol#L17.\n // solhint-disable-previous-line max-line-length\n uint16 private constant _SEND_PACKET_TYPE = 0;\n\n // https://layerzero.gitbook.io/docs/evm-guides/advanced/relayer-adapter-parameters\n uint16 private constant _ADAPTER_PARAMS_VERSION = 1;\n\n ILayerZeroBALProxy private immutable _lzBALProxy;\n\n // The proxy will truncate the amounts to send using this value, as it does not support 18 decimals.\n // Any amount to send is truncated to this number, which depends on the shared decimals in the proxy.\n // See https://layerzero.gitbook.io/docs/evm-guides/layerzero-omnichain-contracts/oft/oft-v1-vs-oftv2-which-should-i-use#what-are-the-differences-between-the-two-versions\n // solhint-disable-previous-line max-line-length\n uint256 private immutable _minimumBridgeAmount;\n\n // This value is kept in storage and not made immutable to allow for this contract to be proxyable\n address private _recipient;\n\n /**\n * @dev Must be deployed by the AvalancheRootGaugeFactory, or other contract that implements\n * `IAvalancheBridgeLimitsProvider`.\n */\n constructor(IMainnetBalancerMinter minter, ILayerZeroBALProxy lzBALProxy) StakelessGauge(minter) {\n _lzBALProxy = lzBALProxy;\n uint8 decimalDifference = ERC20(address(minter.getBalancerToken())).decimals() - lzBALProxy.sharedDecimals();\n _minimumBridgeAmount = 10**decimalDifference;\n }\n\n function initialize(address recipient, uint256 relativeWeightCap) external {\n // Sanity check that the underlying token of the minter is the same we've wrapped for Avalanche.\n require(_lzBALProxy.token() == address(_balToken), \"Invalid Wrapper Token\");\n\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n }\n\n /// @inheritdoc IStakelessGauge\n function getRecipient() public view override returns (address) {\n return _recipient;\n }\n\n /// @dev Return the Layer Zero proxy contract for the underlying BAL token.\n function getBALProxy() external view returns (address) {\n return address(_lzBALProxy);\n }\n\n /**\n * @dev Returns the minimum amount of tokens that can be bridged.\n * Values lower than this one will not even be transferred to the proxy.\n */\n function getMinimumBridgeAmount() public view returns (uint256) {\n return _minimumBridgeAmount;\n }\n\n /// @inheritdoc IStakelessGauge\n function getTotalBridgeCost() public view override returns (uint256) {\n return _getTotalBridgeCost(_getAdapterParams());\n }\n\n function _getTotalBridgeCost(bytes memory adapterParams) internal view returns (uint256) {\n // Estimate fee does not depend on the amount to bridge.\n // We just set it to 0 so that we can have the same external interface across other gauges that require ETH.\n (uint256 nativeFee, ) = _lzBALProxy.estimateSendFee(\n _AVALANCHE_LZ_CHAIN_ID,\n AvalancheRootGaugeLib.bytes32Recipient(getRecipient()),\n 0,\n false,\n adapterParams\n );\n\n return nativeFee;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n uint256 amountWithoutDust = AvalancheRootGaugeLib.removeDust(mintAmount, _minimumBridgeAmount);\n // If there is nothing to bridge, we return early.\n if (amountWithoutDust == 0) {\n return;\n }\n\n bytes memory adapterParams = _getAdapterParams();\n uint256 totalBridgeCost = _getTotalBridgeCost(adapterParams);\n\n require(msg.value == totalBridgeCost, \"Incorrect msg.value passed\");\n\n // The underlying token will be transferred, and must be approved.\n _balToken.safeApprove(address(_lzBALProxy), mintAmount);\n\n // Progress and results can be monitored using the Layer Zero scanner: https://layerzeroscan.com/\n // The BAL proxy uses less than 18 decimals, so any amount with greater precision than the supported one will\n // be truncated.\n // This is why we remove \"dust\" the same way the proxy does to provide an appropriate minimum amount and\n // ensure the transfer does not revert.\n // This assumes that there is no fee for the token, neither in the proxy (which can be set by governance, but\n // it is not expected to happen ever), nor for the token transfer itself (the BAL token does not take a cut\n // in `transferFrom`, so it is OK).\n _lzBALProxy.sendFrom{ value: totalBridgeCost }(\n address(this),\n _AVALANCHE_LZ_CHAIN_ID,\n AvalancheRootGaugeLib.bytes32Recipient(getRecipient()),\n mintAmount,\n amountWithoutDust,\n ILayerZeroBALProxy.LzCallParams(payable(msg.sender), address(0), adapterParams)\n );\n }\n\n function _getAdapterParams() internal view returns (bytes memory) {\n // Adapter params should either encode the minimum destination gas if custom parameters are used, or be\n // an empty bytes array otherwise.\n // See https://layerzero.gitbook.io/docs/evm-guides/advanced/relayer-adapter-parameters\n // These lines were reverse-engineered from the BAL proxy and its dependencies (LZ endpoint and relayer).\n\n // solhint-disable max-line-length\n // See https://github.com/LayerZero-Labs/LayerZero/blob/48c21c3921931798184367fc02d3a8132b041942/contracts/RelayerV2.sol#L104-L112\n // https://github.com/LayerZero-Labs/solidity-examples/blob/8e00603ae03995622d643722d6d194f830774208/contracts/token/oft/v2/OFTCoreV2.sol#L178-L179\n // https://github.com/LayerZero-Labs/solidity-examples/blob/8e00603ae03995622d643722d6d194f830774208/contracts/lzApp/LzApp.sol#L57-L58\n // solhint-enable max-line-length\n if (_lzBALProxy.useCustomAdapterParams()) {\n uint256 minDstGas = _lzBALProxy.minDstGasLookup(_AVALANCHE_LZ_CHAIN_ID, _SEND_PACKET_TYPE);\n return abi.encodePacked(_ADAPTER_PARAMS_VERSION, minDstGas);\n } else {\n return bytes(\"\");\n }\n }\n}\n"},"contracts/gauges/avalanche/AvalancheRootGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./AvalancheRootGauge.sol\";\n\ncontract AvalancheRootGaugeFactory is BaseGaugeFactory, SingletonAuthentication {\n constructor(\n IVault vault,\n IMainnetBalancerMinter minter,\n ILayerZeroBALProxy lzBALProxy\n ) BaseGaugeFactory(address(new AvalancheRootGauge(minter, lzBALProxy))) SingletonAuthentication(vault) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Avalanche.\n * @dev Care must be taken to ensure that gauges deployed from this factory are suitable before they are added\n * to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @return The address of the deployed gauge\n */\n function create(address recipient, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n AvalancheRootGauge(gauge).initialize(recipient, relativeWeightCap);\n return gauge;\n }\n}\n"},"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nlibrary AvalancheRootGaugeLib {\n /// @dev Truncates given amount to the maximum allowed precision.\n function removeDust(uint256 amount, uint256 dustModulo) internal pure returns (uint256) {\n uint256 dust = amount % dustModulo;\n return amount - dust;\n }\n\n /// @dev Returns given address as bytes32, padded with zeroes to the left.\n function bytes32Recipient(address recipient) internal pure returns (bytes32) {\n return bytes32(uint256(uint160(recipient)));\n }\n}\n"},"contracts/gauges/base/BaseRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"../StakelessGauge.sol\";\n\ncontract BaseRootGauge is StakelessGauge {\n using SafeERC20 for IERC20;\n\n // Unlike on Optimism, on Base we do not need to maintain a dynamic gas limit in the factory to pass along\n // on calls to the bridge.\n //\n // The gas limit on L2 is computed based in part upon the _MIN_GAS_LIMIT passed in on the bridge call.\n // However, this value has a \"floor\" of RELAY_CONSTANT_OVERHEAD, set to 200_000. Since this floor is already\n // twice the gas actually required to simply mint BAL, we can just pass in 0 for `_minGasLimit`, and the full\n // computation will yield a total gas limit of around 288k.\n //\n // This parameter is provided for non-standard bridge tokens, or other unforeseen edge cases where more gas\n // might be required. We do not need it for our simple, conforming token.\n // solhint-disable-next-line max-line-length\n // See https://github.com/ethereum-optimism/optimism/blob/595d5916e568ee4fcff5cb8d236a05361a50a881/packages/contracts-bedrock/src/universal/CrossDomainMessenger.sol#L331\n uint32 private constant _MIN_GAS_LIMIT = 0;\n\n IL1StandardBridge private immutable _baseL1StandardBridge;\n\n // solhint-disable-next-line max-line-length\n // The original BAL token was redeployed; explanation here: https://github.com/balancer/balancer-deployments/pull/77#issue-1848405451\n address private immutable _baseBal;\n\n // This value is kept in storage and not made immutable to allow for this contract to be proxyable\n address private _recipient;\n\n constructor(\n IMainnetBalancerMinter minter,\n IL1StandardBridge baseL1StandardBridge,\n address baseBal\n ) StakelessGauge(minter) {\n _baseL1StandardBridge = baseL1StandardBridge;\n _baseBal = baseBal;\n }\n\n function initialize(address recipient, uint256 relativeWeightCap) external {\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n }\n\n function getRecipient() external view override returns (address) {\n return _recipient;\n }\n\n function getBaseL1StandardBridge() external view returns (IL1StandardBridge) {\n return _baseL1StandardBridge;\n }\n\n function getBaseBal() external view returns (address) {\n return _baseBal;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n _balToken.safeApprove(address(_baseL1StandardBridge), mintAmount);\n\n // This will transfer BAL to `_recipient` on the Base chain\n _baseL1StandardBridge.depositERC20To(address(_balToken), _baseBal, _recipient, mintAmount, _MIN_GAS_LIMIT, \"\");\n }\n}\n"},"contracts/gauges/base/BaseRootGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./BaseRootGauge.sol\";\n\ncontract BaseRootGaugeFactory is BaseGaugeFactory, SingletonAuthentication {\n constructor(\n IVault vault,\n IMainnetBalancerMinter minter,\n IL1StandardBridge baseL1StandardBridge,\n address baseBal\n )\n BaseGaugeFactory(address(new BaseRootGauge(minter, baseL1StandardBridge, baseBal)))\n SingletonAuthentication(vault)\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Optimism.\n * @dev Care must be taken to ensure that gauges deployed from this factory are\n * suitable before they are added to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @return The address of the deployed gauge\n */\n function create(address recipient, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n BaseRootGauge(gauge).initialize(recipient, relativeWeightCap);\n return gauge;\n }\n}\n"},"contracts/gauges/BaseGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\";\n\nabstract contract BaseGaugeFactory is ILiquidityGaugeFactory {\n address private _gaugeImplementation;\n\n mapping(address => bool) private _isGaugeFromFactory;\n\n event GaugeCreated(address indexed gauge);\n\n constructor(address gaugeImplementation) {\n _gaugeImplementation = gaugeImplementation;\n }\n\n /**\n * @notice Returns the address of the implementation used for gauge deployments.\n */\n function getGaugeImplementation() public view returns (address) {\n return _gaugeImplementation;\n }\n\n /**\n * @notice Returns true if `gauge` was created by this factory.\n */\n function isGaugeFromFactory(address gauge) external view override returns (bool) {\n return _isGaugeFromFactory[gauge];\n }\n\n /**\n * @dev Deploys a new gauge as a proxy of the implementation in storage.\n * The deployed gauge must be initialized by the caller method.\n * @return The address of the deployed gauge\n */\n function _create() internal returns (address) {\n address gauge = Clones.clone(_gaugeImplementation);\n\n _isGaugeFromFactory[gauge] = true;\n emit GaugeCreated(gauge);\n\n return gauge;\n }\n}\n"},"contracts/gauges/ChildChainGaugeCheckpointer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\";\n\nimport { ChildChainGaugeRegistry } from \"./ChildChainGaugeRegistry.sol\";\n\n/**\n * @title ChildChainGaugeCheckpointer\n * @notice Checkpointer for all child chain gauges.\n * This contract calls `user_checkpoint` function on every child chain gauge during onVeBalBridged callback.\n */\ncontract ChildChainGaugeCheckpointer is IL2LayerZeroDelegation {\n ChildChainGaugeRegistry private immutable _childChainGaugeRegistry;\n\n constructor(ChildChainGaugeRegistry childChainGaugeRegistry) {\n _childChainGaugeRegistry = childChainGaugeRegistry;\n }\n\n /// @inheritdoc IL2LayerZeroDelegation\n function onVeBalBridged(address user) external override {\n uint256 totalGauges = _childChainGaugeRegistry.totalGauges();\n IChildChainGauge[] memory gauges = _childChainGaugeRegistry.getGauges(0, totalGauges);\n for (uint256 i = 0; i < totalGauges; i++) {\n gauges[i].user_checkpoint(user);\n }\n }\n\n /// @inheritdoc IL2LayerZeroDelegation\n function onVeBalSupplyUpdate() external override {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n"},"contracts/gauges/ChildChainGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\";\n\nimport \"./BaseGaugeFactory.sol\";\n\ncontract ChildChainGaugeFactory is Version, BaseGaugeFactory {\n string private _productVersion;\n\n constructor(\n IChildChainGauge gaugeImplementation,\n string memory factoryVersion,\n string memory productVersion\n ) Version(factoryVersion) BaseGaugeFactory(address(gaugeImplementation)) {\n require(\n keccak256(abi.encodePacked(gaugeImplementation.version())) == keccak256(abi.encodePacked(productVersion)),\n \"VERSION_MISMATCH\"\n );\n _productVersion = productVersion;\n }\n\n /**\n * @notice Returns a JSON representation of the deployed gauge version containing name, version number and task ID.\n *\n * @dev This value will only be updated at factory creation time.\n */\n function getProductVersion() public view returns (string memory) {\n return _productVersion;\n }\n\n /**\n * @notice Deploys a new gauge for a Balancer pool.\n * @dev As anyone can register arbitrary Balancer pools with the Vault,\n * it's impossible to prove onchain that `pool` is a \"valid\" deployment.\n *\n * Care must be taken to ensure that gauges deployed from this factory are suitable to distribute rewards.\n *\n * It is possible to deploy multiple gauges for a single pool.\n * @param pool The address of the pool for which to deploy a gauge\n * @return The address of the deployed gauge\n */\n function create(address pool) external returns (address) {\n address gauge = _create();\n IChildChainGauge(gauge).initialize(pool, getProductVersion());\n return gauge;\n }\n}\n"},"contracts/gauges/ChildChainGaugeRegistry.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\n\nimport \"../L2BalancerPseudoMinter.sol\";\n\n/**\n * @title ChildChainGaugeRegistry\n * @notice Registry for all child chain gauges.\n * This contract enables the addition and removal of child chain gauges to the registry.\n * Duplication is not permitted. Gauges are verified to be valid.\n */\ncontract ChildChainGaugeRegistry is SingletonAuthentication, ReentrancyGuard {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n L2BalancerPseudoMinter private immutable _l2BalancerPseudoMinter;\n ILiquidityGaugeFactory private immutable _liquidityGaugeFactory;\n\n EnumerableSet.AddressSet private _gauges;\n\n event GaugeAdded(IChildChainGauge indexed gauge);\n event GaugeRemoved(IChildChainGauge indexed gauge);\n\n /**\n * @notice Constructor initializes the ChildChainGaugeRegistry contract.\n * @param l2BalancerPseudoMinter The L2 Balancer pseudo minter.\n * @param liquidityGaugeFactory The liquidity gauge factory.\n */\n constructor(L2BalancerPseudoMinter l2BalancerPseudoMinter, ILiquidityGaugeFactory liquidityGaugeFactory)\n SingletonAuthentication(l2BalancerPseudoMinter.getVault())\n {\n _l2BalancerPseudoMinter = l2BalancerPseudoMinter;\n _liquidityGaugeFactory = liquidityGaugeFactory;\n }\n\n /**\n * @notice Add a gauge to the registry after validating its legitimacy.\n * @dev This function checks that the gauge's factory is registered with the L2BalancerPseudoMinter,\n * and that the gauge has been deployed from the registered factory. If these conditions are met,\n * the gauge is added to the registry, and a GaugeAdded event is emitted.\n * @param gauge The gauge to add to the registry.\n */\n function addGauge(IChildChainGauge gauge) external authenticate nonReentrant {\n // Check that the gauge is valid\n // 1. The gauge's factory is registered with the L2BalancerPseudoMinter\n // 2. The gauge is deployed from the registered factory\n ILiquidityGaugeFactory factory = gauge.factory();\n require(_l2BalancerPseudoMinter.isValidGaugeFactory(factory), \"INVALID_GAUGE_FACTORY\");\n require(factory.isGaugeFromFactory(address(gauge)), \"GAUGE_NOT_FROM_FACTORY\");\n\n require(_gauges.add(address(gauge)), \"GAUGE_ALREADY_REGISTERED\");\n\n emit GaugeAdded(gauge);\n }\n\n /**\n * @notice Remove a registered gauge from the registry and emit a GaugeRemoved event.\n * @dev If the gauge is not registered, the function reverts with a \"GAUGE_NOT_REGISTERED\" error.\n * Remove a gauge might affect the order of the remaining gauges.\n * @param gauge The gauge to remove from the registry.\n */\n function removeGauge(IChildChainGauge gauge) external authenticate {\n require(_gauges.remove(address(gauge)), \"GAUGE_NOT_REGISTERED\");\n\n emit GaugeRemoved(gauge);\n }\n\n /**\n * @notice Retrieve the total number of gauges registered in the registry.\n * @return The total number of registered gauges as a uint256.\n */\n function totalGauges() external view returns (uint256) {\n return _gauges.length();\n }\n\n /**\n * @notice Retrieve a list of gauges within the specified index range from the registry.\n * @param startIndex The starting index (inclusive) for retrieving gauges from the registry.\n * @param endIndex The ending index (exclusive) for retrieving gauges from the registry.\n * @return An array of IChildChainGauge containing the gauges within the specified index range.\n */\n function getGauges(uint256 startIndex, uint256 endIndex) external view returns (IChildChainGauge[] memory) {\n require(startIndex < endIndex, \"INVALID_INDICES\");\n require(endIndex <= _gauges.length(), \"END_INDEX_OUT_OF_BOUNDS\");\n\n uint256 size = endIndex - startIndex;\n IChildChainGauge[] memory slicedGauges = new IChildChainGauge[](size);\n\n for (uint256 i = 0; i < size; i++) {\n slicedGauges[i] = IChildChainGauge(_gauges.at(startIndex + i));\n }\n\n return slicedGauges;\n }\n}\n"},"contracts/gauges/ChildChainGaugeRewardHelper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\";\n\n/**\n * @title ChildChainGaugeRewardHelper\n * @author Balancer Labs\n * @notice Helper contract which allows claiming rewards from many RewardsOnlyGauges in a single transaction.\n * This contract manually triggers an update to the gauges' streamers as a workaround for the gauge .\n */\ncontract ChildChainGaugeRewardHelper {\n uint256 public constant CLAIM_FREQUENCY = 3600;\n\n /**\n * @notice Returns the amount of ERC20 token `token` on RewardsOnlyGauge `gauge` claimable by address `user`.\n * @dev This function cannot be marked `view` as it updates the gauge's state (not possible in a view context).\n * Offchain users attempting to read from this function should manually perform a static call or modify the abi.\n * @param gauge - The address of the RewardsOnlyGauge for which to query.\n * @param user - The address of the user for which to query.\n * @param token - The address of the reward token for which to query.\n */\n function getPendingRewards(\n IRewardsOnlyGauge gauge,\n address user,\n address token\n ) external returns (uint256) {\n gauge.reward_contract().get_reward();\n return gauge.claimable_reward_write(user, token);\n }\n\n /**\n * @notice Claims pending rewards on RewardsOnlyGauge `gauge` for account `user`.\n * @param gauge - The address of the RewardsOnlyGauge from which to claim rewards.\n * @param user - The address of the user for which to claim rewards.\n */\n function claimRewardsFromGauge(IRewardsOnlyGauge gauge, address user) external {\n _claimRewardsFromGauge(gauge, user);\n }\n\n /**\n * @notice Claims pending rewards on a list of RewardsOnlyGauges `gauges` for account `user`.\n * @param gauges - An array of address of RewardsOnlyGauges from which to claim rewards.\n * @param user - The address of the user for which to claim rewards.\n */\n function claimRewardsFromGauges(IRewardsOnlyGauge[] calldata gauges, address user) external {\n for (uint256 i = 0; i < gauges.length; i++) {\n _claimRewardsFromGauge(gauges[i], user);\n }\n }\n\n // Internal functions\n\n function _claimRewardsFromGauge(IRewardsOnlyGauge gauge, address user) internal {\n // Force rewards from the streamer onto the gauge.\n gauge.reward_contract().get_reward();\n gauge.claim_rewards(user);\n }\n}\n"},"contracts/gauges/ChildChainLiquidityGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\";\n\ncontract ChildChainLiquidityGaugeFactory is IChildChainLiquidityGaugeFactory {\n // RewardsOnlyGauge expects the claim function selector to be left padded with zeros.\n // We then shift right 28 bytes so that the function selector (top 4 bytes) sits in the lowest 4 bytes.\n bytes32 private constant _CLAIM_SIG = keccak256(\"get_reward()\") >> (28 * 8);\n\n ILiquidityGauge private immutable _gaugeImplementation;\n IChildChainStreamer private immutable _childChainStreamerImplementation;\n\n mapping(address => bool) private _isGaugeFromFactory;\n mapping(address => bool) private _isStreamerFromFactory;\n mapping(address => address) private _poolGauge;\n mapping(address => address) private _gaugeStreamer;\n\n constructor(ILiquidityGauge gauge, IChildChainStreamer childChainStreamer) {\n _gaugeImplementation = gauge;\n _childChainStreamerImplementation = childChainStreamer;\n }\n\n /**\n * @notice Returns the address of the implementation used for gauge deployments.\n */\n function getGaugeImplementation() external view override returns (ILiquidityGauge) {\n return _gaugeImplementation;\n }\n\n /**\n * @notice Returns the address of the implementation used for streamer deployments.\n */\n function getChildChainStreamerImplementation() external view override returns (IChildChainStreamer) {\n return _childChainStreamerImplementation;\n }\n\n /**\n * @notice Returns the address of the gauge belonging to `pool`.\n */\n function getPoolGauge(address pool) public view override returns (ILiquidityGauge) {\n return ILiquidityGauge(_poolGauge[pool]);\n }\n\n /**\n * @notice Returns true if `gauge` was created by this factory.\n */\n function isGaugeFromFactory(address gauge) external view override returns (bool) {\n return _isGaugeFromFactory[gauge];\n }\n\n /**\n * @notice Returns the address of the streamer belonging to `gauge`.\n */\n function getGaugeStreamer(address gauge) public view override returns (address) {\n return _gaugeStreamer[gauge];\n }\n\n /**\n * @notice Returns true if `streamer` was created by this factory.\n */\n function isStreamerFromFactory(address streamer) external view override returns (bool) {\n return _isStreamerFromFactory[streamer];\n }\n\n /**\n * @notice Returns the address of the pool which `gauge` belongs.\n */\n function getGaugePool(address gauge) external view override returns (IERC20) {\n return IRewardsOnlyGauge(gauge).lp_token();\n }\n\n /**\n * @notice Returns the address of the streamer belonging to `pool`'s gauge.\n */\n function getPoolStreamer(address pool) external view override returns (address) {\n return getGaugeStreamer(address(getPoolGauge(pool)));\n }\n\n /**\n * @notice Deploys a new gauge for a Balancer pool.\n * @dev As anyone can register arbitrary Balancer pools with the Vault,\n * it's impossible to prove onchain that `pool` is a \"valid\" deployment.\n *\n * Care must be taken to ensure that gauges deployed from this factory are\n * suitable before they are added to the GaugeController.\n *\n * This factory disallows deploying multiple gauges for a single pool.\n * @param pool The address of the pool for which to deploy a gauge\n * @return The address of the deployed gauge\n */\n function create(address pool) external returns (address) {\n require(_poolGauge[pool] == address(0), \"Gauge already exists\");\n\n address gauge = Clones.clone(address(_gaugeImplementation));\n address streamer = Clones.clone(address(_childChainStreamerImplementation));\n\n IChildChainStreamer(streamer).initialize(gauge);\n IRewardsOnlyGauge(gauge).initialize(pool, streamer, _CLAIM_SIG);\n\n _isGaugeFromFactory[gauge] = true;\n _poolGauge[pool] = gauge;\n _gaugeStreamer[gauge] = streamer;\n emit RewardsOnlyGaugeCreated(gauge, pool, streamer);\n\n return gauge;\n }\n}\n"},"contracts/gauges/ethereum/LiquidityGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\";\n\nimport \"../BaseGaugeFactory.sol\";\n\ncontract LiquidityGaugeFactory is BaseGaugeFactory {\n constructor(IStakingLiquidityGauge gauge) BaseGaugeFactory(address(gauge)) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Deploys a new gauge for a Balancer pool.\n * @dev As anyone can register arbitrary Balancer pools with the Vault,\n * it's impossible to prove onchain that `pool` is a \"valid\" deployment.\n *\n * Care must be taken to ensure that gauges deployed from this factory are\n * suitable before they are added to the GaugeController.\n *\n * It is possible to deploy multiple gauges for a single pool.\n * @param pool The address of the pool for which to deploy a gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @return The address of the deployed gauge\n */\n function create(address pool, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n IStakingLiquidityGauge(gauge).initialize(pool, relativeWeightCap);\n return gauge;\n }\n}\n"},"contracts/gauges/ethereum/SingleRecipientGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"../StakelessGauge.sol\";\n\ncontract SingleRecipientGauge is Version, StakelessGauge {\n using SafeERC20 for IERC20;\n\n address private _recipient;\n bool private _feeDistributorRecipient;\n\n // The version of the implementation is irrelevant, so we use an empty string.\n // The actual gauge version will be set during initialization.\n constructor(IMainnetBalancerMinter minter) Version(\"\") StakelessGauge(minter) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function initialize(\n address recipient,\n uint256 relativeWeightCap,\n bool feeDistributorRecipient,\n string memory version\n ) external {\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n _feeDistributorRecipient = feeDistributorRecipient;\n _setVersion(version);\n }\n\n function getRecipient() public view override returns (address) {\n return _recipient;\n }\n\n function isRecipientFeeDistributor() public view returns (bool) {\n return _feeDistributorRecipient;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n address recipient = getRecipient();\n\n if (isRecipientFeeDistributor()) {\n _balToken.safeApprove(recipient, mintAmount);\n IFeeDistributor(recipient).depositToken(_balToken, mintAmount);\n } else {\n _balToken.safeTransfer(recipient, mintAmount);\n }\n }\n}\n"},"contracts/gauges/ethereum/SingleRecipientGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./SingleRecipientGauge.sol\";\n\ncontract SingleRecipientGaugeFactory is Version, BaseGaugeFactory {\n string private _productVersion;\n\n constructor(\n IMainnetBalancerMinter minter,\n string memory factoryVersion,\n string memory productVersion\n ) Version(factoryVersion) BaseGaugeFactory(address(new SingleRecipientGauge(minter))) {\n _productVersion = productVersion;\n }\n\n function getProductVersion() public view returns (string memory) {\n return _productVersion;\n }\n\n /**\n * @notice Deploys a new gauge which sends all of its BAL allowance to a single recipient.\n * @dev Care must be taken to ensure that gauges deployed from this factory are\n * suitable before they are added to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @param feeDistributorRecipient True if the recipient implements the IFeeDistributor interface and should receive\n * tokens via the `depositToken` function.\n * @return The address of the deployed gauge\n */\n function create(\n address recipient,\n uint256 relativeWeightCap,\n bool feeDistributorRecipient\n ) external returns (address) {\n address gauge = _create();\n SingleRecipientGauge(gauge).initialize(\n recipient,\n relativeWeightCap,\n feeDistributorRecipient,\n getProductVersion()\n );\n return gauge;\n }\n}\n"},"contracts/gauges/gnosis/GnosisRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../StakelessGauge.sol\";\n\ninterface IGnosisBridge {\n function relayTokens(\n IERC20 token,\n address _receiver,\n uint256 _value\n ) external;\n}\n\ncontract GnosisRootGauge is StakelessGauge {\n IGnosisBridge private immutable _gnosisBridge;\n\n // This value is kept in storage and not made immutable to allow for the recipient to be set during `initialize`\n address private _recipient;\n\n constructor(IMainnetBalancerMinter minter, IGnosisBridge gnosisBridge) StakelessGauge(minter) {\n _gnosisBridge = gnosisBridge;\n }\n\n function initialize(address recipient, uint256 relativeWeightCap) external {\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n }\n\n function getRecipient() external view override returns (address) {\n return _recipient;\n }\n\n function getGnosisBridge() external view returns (IGnosisBridge) {\n return _gnosisBridge;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n _balToken.approve(address(_gnosisBridge), mintAmount);\n\n // This will transfer BAL to `_recipient` on Gnosis Chain\n _gnosisBridge.relayTokens(_balToken, _recipient, mintAmount);\n }\n}\n"},"contracts/gauges/gnosis/GnosisRootGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./GnosisRootGauge.sol\";\n\ncontract GnosisRootGaugeFactory is BaseGaugeFactory {\n constructor(IMainnetBalancerMinter minter, IGnosisBridge gnosisBridge)\n BaseGaugeFactory(address(new GnosisRootGauge(minter, gnosisBridge)))\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Gnosis.\n * @dev Care must be taken to ensure that gauges deployed from this factory are suitable before they are\n * added to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge (18-decimal FP value from 0 to 1)\n * @return The address of the deployed gauge\n */\n function create(address recipient, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n GnosisRootGauge(gauge).initialize(recipient, relativeWeightCap);\n return gauge;\n }\n}\n"},"contracts/gauges/optimistic/OptimisticRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"../StakelessGauge.sol\";\n\ncontract OptimisticRootGauge is StakelessGauge {\n using SafeERC20 for IERC20;\n\n // solhint-disable-next-line var-name-mixedcase\n string public NETWORK;\n\n IL1StandardBridge private immutable _optimismL1StandardBridge;\n address private immutable _optimismBal;\n IOptimismGasLimitProvider private immutable _factory;\n\n // This value is kept in storage and not made immutable to allow for this contract to be proxyable\n address private _recipient;\n\n constructor(\n IMainnetBalancerMinter minter,\n IL1StandardBridge optimismL1StandardBridge,\n address optimismBal\n ) StakelessGauge(minter) {\n _optimismL1StandardBridge = optimismL1StandardBridge;\n _optimismBal = optimismBal;\n _factory = IOptimismGasLimitProvider(msg.sender);\n }\n\n function initialize(\n address recipient,\n uint256 relativeWeightCap,\n string memory targetNetwork\n ) external {\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n NETWORK = targetNetwork;\n }\n\n function getRecipient() external view override returns (address) {\n return _recipient;\n }\n\n function getOptimismBridge() external view returns (IL1StandardBridge) {\n return _optimismL1StandardBridge;\n }\n\n function getOptimismBal() external view returns (address) {\n return _optimismBal;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n _balToken.safeApprove(address(_optimismL1StandardBridge), mintAmount);\n\n // This will transfer BAL to `_recipient` on the Optimism chain\n _optimismL1StandardBridge.depositERC20To(\n address(_balToken),\n _optimismBal,\n _recipient,\n mintAmount,\n _factory.getOptimismGasLimit(),\n \"0x\"\n );\n }\n}\n"},"contracts/gauges/optimistic/OptimisticRootGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./OptimisticRootGauge.sol\";\n\ncontract OptimisticRootGaugeFactory is IOptimismGasLimitProvider, BaseGaugeFactory, SingletonAuthentication {\n // solhint-disable-next-line var-name-mixedcase\n string public NETWORK;\n\n uint32 private _gasLimit;\n\n event OptimismGasLimitModified(uint256 gasLimit);\n\n constructor(\n IVault vault,\n IMainnetBalancerMinter minter,\n IL1StandardBridge optimismL1StandardBridge,\n address optimismBal,\n uint32 gasLimit,\n string memory targetNetwork\n )\n BaseGaugeFactory(address(new OptimisticRootGauge(minter, optimismL1StandardBridge, optimismBal)))\n SingletonAuthentication(vault)\n {\n _gasLimit = gasLimit;\n NETWORK = targetNetwork;\n }\n\n /**\n * @notice Returns the gas limit for the Optimism side of the bridging transaction\n */\n function getOptimismGasLimit() external view override returns (uint32) {\n return _gasLimit;\n }\n\n /**\n * @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Optimism.\n * @dev Care must be taken to ensure that gauges deployed from this factory are\n * suitable before they are added to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @return The address of the deployed gauge\n */\n function create(address recipient, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n OptimisticRootGauge(gauge).initialize(recipient, relativeWeightCap, NETWORK);\n return gauge;\n }\n\n /**\n * @notice Set the gas limit for the Optimism side of the bridging transaction\n */\n function setOptimismGasLimit(uint32 gasLimit) external override authenticate {\n _gasLimit = gasLimit;\n emit OptimismGasLimitModified(gasLimit);\n }\n}\n"},"contracts/gauges/polygon/PolygonRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"../StakelessGauge.sol\";\n\ninterface IPolygonRootChainManager {\n function depositFor(\n address user,\n IERC20 token,\n bytes calldata depositData\n ) external;\n}\n\ncontract PolygonRootGauge is StakelessGauge {\n using SafeERC20 for IERC20;\n\n IPolygonRootChainManager private immutable _polygonRootChainManager;\n address private immutable _polygonERC20Predicate;\n\n // This value is kept in storage and not made immutable to allow for this contract to be proxyable\n address private _recipient;\n\n constructor(\n IMainnetBalancerMinter minter,\n IPolygonRootChainManager polygonRootChainManager,\n address polygonERC20Predicate\n ) StakelessGauge(minter) {\n _polygonRootChainManager = polygonRootChainManager;\n _polygonERC20Predicate = polygonERC20Predicate;\n }\n\n function initialize(address recipient, uint256 relativeWeightCap) external {\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n }\n\n function getRecipient() external view override returns (address) {\n return _recipient;\n }\n\n function getPolygonBridge() external view returns (IPolygonRootChainManager) {\n return _polygonRootChainManager;\n }\n\n function getPolygonERC20Predicate() external view returns (address) {\n return _polygonERC20Predicate;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n // Token needs to be approved on the predicate NOT the main bridge contract\n _balToken.safeApprove(_polygonERC20Predicate, mintAmount);\n\n // This will transfer BAL to `_recipient` on the Polygon chain\n _polygonRootChainManager.depositFor(_recipient, _balToken, abi.encode(mintAmount));\n }\n}\n"},"contracts/gauges/polygon/PolygonRootGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./PolygonRootGauge.sol\";\n\ncontract PolygonRootGaugeFactory is BaseGaugeFactory {\n constructor(\n IMainnetBalancerMinter minter,\n IPolygonRootChainManager polygonRootChainManager,\n address polygonERC20Predicate\n ) BaseGaugeFactory(address(new PolygonRootGauge(minter, polygonRootChainManager, polygonERC20Predicate))) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Polygon.\n * @dev Care must be taken to ensure that gauges deployed from this factory are\n * suitable before they are added to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @return The address of the deployed gauge\n */\n function create(address recipient, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n PolygonRootGauge(gauge).initialize(recipient, relativeWeightCap);\n return gauge;\n }\n}\n"},"contracts/gauges/StakelessGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\n\nabstract contract StakelessGauge is IStakelessGauge, ReentrancyGuard {\n uint256 public constant MAX_RELATIVE_WEIGHT_CAP = 1e18;\n\n IERC20 internal immutable _balToken;\n IBalancerTokenAdmin private immutable _tokenAdmin;\n IMainnetBalancerMinter private immutable _minter;\n IGaugeController private immutable _gaugeController;\n IAuthorizerAdaptor private immutable _authorizerAdaptor;\n\n event Checkpoint(uint256 indexed periodTime, uint256 periodEmissions);\n\n // solhint-disable var-name-mixedcase\n uint256 private immutable _RATE_REDUCTION_TIME;\n uint256 private immutable _RATE_REDUCTION_COEFFICIENT;\n uint256 private immutable _RATE_DENOMINATOR;\n // solhint-enable var-name-mixedcase\n\n uint256 private _rate;\n uint256 private _period;\n uint256 private _startEpochTime;\n\n uint256 private _emissions;\n bool private _isKilled;\n\n uint256 private _relativeWeightCap;\n\n constructor(IMainnetBalancerMinter minter) {\n IBalancerTokenAdmin tokenAdmin = IBalancerTokenAdmin(minter.getBalancerTokenAdmin());\n IERC20 balToken = tokenAdmin.getBalancerToken();\n IGaugeController gaugeController = minter.getGaugeController();\n\n _balToken = balToken;\n _tokenAdmin = tokenAdmin;\n _minter = minter;\n _gaugeController = gaugeController;\n _authorizerAdaptor = gaugeController.admin();\n\n _RATE_REDUCTION_TIME = tokenAdmin.RATE_REDUCTION_TIME();\n _RATE_REDUCTION_COEFFICIENT = tokenAdmin.RATE_REDUCTION_COEFFICIENT();\n _RATE_DENOMINATOR = tokenAdmin.RATE_DENOMINATOR();\n\n // Prevent initialisation of implementation contract\n // Choice of `type(uint256).max` prevents implementation from being checkpointed\n _period = type(uint256).max;\n }\n\n // solhint-disable-next-line func-name-mixedcase\n function __StakelessGauge_init(uint256 relativeWeightCap) internal {\n require(_period == 0, \"Already initialized\");\n\n // Because we calculate the rate locally, this gauge cannot\n // be used prior to the start of the first emission period\n uint256 rate = _tokenAdmin.rate();\n require(rate != 0, \"BalancerTokenAdmin not yet activated\");\n\n _rate = rate;\n _period = _currentPeriod();\n _startEpochTime = _tokenAdmin.startEpochTimeWrite();\n _setRelativeWeightCap(relativeWeightCap);\n }\n\n function checkpoint() external payable override nonReentrant returns (bool) {\n require(msg.sender == address(_authorizerAdaptor), \"SENDER_NOT_ALLOWED\");\n uint256 lastPeriod = _period;\n uint256 currentPeriod = _currentPeriod();\n\n if (lastPeriod < currentPeriod) {\n _gaugeController.checkpoint_gauge(address(this));\n\n uint256 rate = _rate;\n uint256 newEmissions = 0;\n lastPeriod += 1;\n uint256 nextEpochTime = _startEpochTime + _RATE_REDUCTION_TIME;\n for (uint256 i = lastPeriod; i < lastPeriod + 255; ++i) {\n if (i > currentPeriod) break;\n\n uint256 periodTime = i * 1 weeks;\n uint256 periodEmission = 0;\n uint256 gaugeWeight = getCappedRelativeWeight(periodTime);\n\n if (nextEpochTime >= periodTime && nextEpochTime < periodTime + 1 weeks) {\n // If the period crosses an epoch, we calculate a reduction in the rate\n // using the same formula as used in `BalancerTokenAdmin`. We perform the calculation\n // locally instead of calling to `BalancerTokenAdmin.rate()` because we are generating\n // the emissions for the upcoming week, so there is a possibility the new\n // rate has not yet been applied.\n\n // Calculate emission up until the epoch change\n uint256 durationInCurrentEpoch = nextEpochTime - periodTime;\n periodEmission = (gaugeWeight * rate * durationInCurrentEpoch) / 10**18;\n // Action the decrease in rate\n rate = (rate * _RATE_DENOMINATOR) / _RATE_REDUCTION_COEFFICIENT;\n // Calculate emission from epoch change to end of period\n uint256 durationInNewEpoch = 1 weeks - durationInCurrentEpoch;\n periodEmission += (gaugeWeight * rate * durationInNewEpoch) / 10**18;\n\n _rate = rate;\n _startEpochTime = nextEpochTime;\n nextEpochTime += _RATE_REDUCTION_TIME;\n } else {\n periodEmission = (gaugeWeight * rate * 1 weeks) / 10**18;\n }\n\n emit Checkpoint(periodTime, periodEmission);\n newEmissions += periodEmission;\n }\n\n _period = currentPeriod;\n _emissions += newEmissions;\n\n if (newEmissions > 0 && !_isKilled) {\n _minter.mint(address(this));\n _postMintAction(newEmissions);\n }\n }\n\n return true;\n }\n\n /// @inheritdoc IStakelessGauge\n function getTotalBridgeCost() external view virtual override returns (uint256) {\n return 0;\n }\n\n function _currentPeriod() internal view returns (uint256) {\n // solhint-disable-next-line not-rely-on-time\n return (block.timestamp / 1 weeks) - 1;\n }\n\n function _postMintAction(uint256 mintAmount) internal virtual;\n\n // solhint-disable func-name-mixedcase\n\n function user_checkpoint(address) external pure override returns (bool) {\n return true;\n }\n\n function integrate_fraction(address user) external view override returns (uint256) {\n require(user == address(this), \"Gauge can only mint for itself\");\n return _emissions;\n }\n\n function is_killed() external view override returns (bool) {\n return _isKilled;\n }\n\n function killGauge() external override {\n require(msg.sender == address(_authorizerAdaptor), \"SENDER_NOT_ALLOWED\");\n _isKilled = true;\n }\n\n function unkillGauge() external override {\n require(msg.sender == address(_authorizerAdaptor), \"SENDER_NOT_ALLOWED\");\n _isKilled = false;\n }\n\n function setRelativeWeightCap(uint256 relativeWeightCap) external override {\n require(msg.sender == address(_authorizerAdaptor), \"SENDER_NOT_ALLOWED\");\n _setRelativeWeightCap(relativeWeightCap);\n }\n\n function _setRelativeWeightCap(uint256 relativeWeightCap) internal {\n require(relativeWeightCap <= MAX_RELATIVE_WEIGHT_CAP, \"Relative weight cap exceeds allowed absolute maximum\");\n _relativeWeightCap = relativeWeightCap;\n emit RelativeWeightCapChanged(relativeWeightCap);\n }\n\n function getRelativeWeightCap() external view override returns (uint256) {\n return _relativeWeightCap;\n }\n\n function getCappedRelativeWeight(uint256 time) public view override returns (uint256) {\n return Math.min(_gaugeController.gauge_relative_weight(address(this), time), _relativeWeightCap);\n }\n}\n"},"contracts/gauges/StakelessGaugeCheckpointer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\n\nimport \"../admin/GaugeAdder.sol\";\nimport \"./arbitrum/ArbitrumRootGauge.sol\";\n\n/**\n * @title Stakeless Gauge Checkpointer\n * @notice Implements IStakelessGaugeCheckpointer; refer to it for API documentation.\n */\ncontract StakelessGaugeCheckpointer is IStakelessGaugeCheckpointer, ReentrancyGuard, SingletonAuthentication {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n mapping(string => EnumerableSet.AddressSet) private _gauges;\n IAuthorizerAdaptorEntrypoint private immutable _authorizerAdaptorEntrypoint;\n IGaugeAdder private immutable _gaugeAdder;\n IGaugeController private immutable _gaugeController;\n\n constructor(IGaugeAdder gaugeAdder, IAuthorizerAdaptorEntrypoint authorizerAdaptorEntrypoint)\n SingletonAuthentication(authorizerAdaptorEntrypoint.getVault())\n {\n _gaugeAdder = gaugeAdder;\n _authorizerAdaptorEntrypoint = authorizerAdaptorEntrypoint;\n _gaugeController = gaugeAdder.getGaugeController();\n }\n\n modifier withValidGaugeType(string memory gaugeType) {\n require(_gaugeAdder.isValidGaugeType(gaugeType), \"Invalid gauge type\");\n _;\n }\n\n modifier withValidGaugeTypes(string[] memory gaugeTypes) {\n for (uint256 i = 0; i < gaugeTypes.length; ++i) {\n require(_gaugeAdder.isValidGaugeType(gaugeTypes[i]), \"Invalid gauge type\");\n }\n _;\n }\n\n modifier withValidGauge(string memory gaugeType, IStakelessGauge gauge) {\n require(hasGauge(gaugeType, gauge), \"Gauge not added\");\n _;\n }\n\n modifier refundsEth() {\n _;\n _returnLeftoverEthIfAny();\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getGaugeAdder() external view override returns (IGaugeAdder) {\n return _gaugeAdder;\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getGaugeTypes() public view override returns (string[] memory) {\n return _gaugeAdder.getGaugeTypes();\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function addGaugesWithVerifiedType(string memory gaugeType, IStakelessGauge[] calldata gauges)\n external\n override\n withValidGaugeType(gaugeType)\n authenticate\n {\n // This is a permissioned call, so we can assume that the gauges' type matches the given one.\n // Therefore, we indicate `_addGauges` not to verify the gauge type.\n _addGauges(gaugeType, gauges, true);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function addGauges(string memory gaugeType, IStakelessGauge[] calldata gauges)\n external\n override\n withValidGaugeType(gaugeType)\n {\n // Since everyone can call this method, the type needs to be verified in the internal `_addGauges` method.\n _addGauges(gaugeType, gauges, false);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function removeGauges(string memory gaugeType, IStakelessGauge[] calldata gauges)\n external\n override\n withValidGaugeType(gaugeType)\n {\n EnumerableSet.AddressSet storage gaugesForType = _gauges[gaugeType];\n\n for (uint256 i = 0; i < gauges.length; i++) {\n // Gauges added must come from a valid factory and exist in the controller, and they can't be removed from\n // them. Therefore, the only required check at this point is whether the gauge was killed.\n IStakelessGauge gauge = gauges[i];\n require(gauge.is_killed(), \"Gauge was not killed\");\n require(gaugesForType.remove(address(gauge)), \"Gauge was not added to the checkpointer\");\n\n emit IStakelessGaugeCheckpointer.GaugeRemoved(gauge, gaugeType, gaugeType);\n }\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function hasGauge(string memory gaugeType, IStakelessGauge gauge)\n public\n view\n override\n withValidGaugeType(gaugeType)\n returns (bool)\n {\n return _gauges[gaugeType].contains(address(gauge));\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getTotalGauges(string memory gaugeType)\n external\n view\n override\n withValidGaugeType(gaugeType)\n returns (uint256)\n {\n return _gauges[gaugeType].length();\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getGaugeAtIndex(string memory gaugeType, uint256 index)\n external\n view\n override\n withValidGaugeType(gaugeType)\n returns (IStakelessGauge)\n {\n return IStakelessGauge(_gauges[gaugeType].at(index));\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getRoundedDownBlockTimestamp() external view override returns (uint256) {\n return _roundDownBlockTimestamp();\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function checkpointAllGaugesAboveRelativeWeight(uint256 minRelativeWeight)\n external\n payable\n override\n nonReentrant\n refundsEth\n {\n string[] memory gaugeTypes = _gaugeAdder.getGaugeTypes();\n _checkpointGaugesAboveRelativeWeight(gaugeTypes, minRelativeWeight);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function checkpointGaugesOfTypesAboveRelativeWeight(string[] memory gaugeTypes, uint256 minRelativeWeight)\n external\n payable\n override\n nonReentrant\n withValidGaugeTypes(gaugeTypes)\n refundsEth\n {\n _checkpointGaugesAboveRelativeWeight(gaugeTypes, minRelativeWeight);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function checkpointSingleGauge(string memory gaugeType, IStakelessGauge gauge)\n external\n payable\n override\n nonReentrant\n withValidGauge(gaugeType, gauge)\n refundsEth\n {\n _checkpointSingleGauge(gauge);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function checkpointMultipleGaugesOfMatchingType(string memory gaugeType, IStakelessGauge[] memory gauges)\n external\n payable\n override\n nonReentrant\n refundsEth\n {\n uint256 length = gauges.length;\n for (uint256 i = 0; i < length; ++i) {\n // The gauge type is also validated here.\n require(hasGauge(gaugeType, gauges[i]), \"Gauge not added\");\n\n _checkpointSingleGauge(gauges[i]);\n }\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function checkpointMultipleGauges(string[] memory gaugeTypes, IStakelessGauge[] memory gauges)\n external\n payable\n override\n nonReentrant\n refundsEth\n {\n require(gaugeTypes.length == gauges.length, \"Mismatch between gauge types and addresses\");\n\n uint256 length = gauges.length;\n for (uint256 i = 0; i < length; ++i) {\n // The gauge type is also validated here.\n require(hasGauge(gaugeTypes[i], gauges[i]), \"Gauge not added\");\n\n _checkpointSingleGauge(gauges[i]);\n }\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getSingleBridgeCost(string memory gaugeType, IStakelessGauge gauge)\n external\n view\n override\n withValidGauge(gaugeType, gauge)\n returns (uint256)\n {\n return _getSingleBridgeCost(gauge);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getGaugeTypesBridgeCost(string[] memory gaugeTypes, uint256 minRelativeWeight)\n external\n view\n override\n withValidGaugeTypes(gaugeTypes)\n returns (uint256)\n {\n return _getGaugeTypesTotalBridgeCost(gaugeTypes, minRelativeWeight);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getTotalBridgeCost(uint256 minRelativeWeight) external view override returns (uint256) {\n string[] memory gaugeTypes = getGaugeTypes();\n return _getGaugeTypesTotalBridgeCost(gaugeTypes, minRelativeWeight);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function isValidGaugeType(string memory gaugeType) external view override returns (bool) {\n return _gaugeAdder.isValidGaugeType(gaugeType);\n }\n\n function _addGauges(\n string memory gaugeType,\n IStakelessGauge[] calldata gauges,\n bool isGaugeTypeVerified\n ) internal {\n EnumerableSet.AddressSet storage gaugesForType = _gauges[gaugeType];\n\n for (uint256 i = 0; i < gauges.length; i++) {\n IStakelessGauge gauge = gauges[i];\n // Gauges must come from a valid factory to be added to the gauge controller, so gauges that don't pass\n // the valid factory check will be rejected by the controller.\n require(_gaugeController.gauge_exists(address(gauge)), \"Gauge was not added to the GaugeController\");\n require(!gauge.is_killed(), \"Gauge was killed\");\n require(gaugesForType.add(address(gauge)), \"Gauge already added to the checkpointer\");\n\n // To ensure that the gauge effectively corresponds to the given type, we query the gauge factory registered\n // in the gauge adder for the gauge type.\n // However, since gauges may come from older factories from previous adders, we need to be able to override\n // this check. This way we can effectively still add older gauges to the checkpointer via authorized calls.\n require(\n isGaugeTypeVerified || _gaugeAdder.getFactoryForGaugeType(gaugeType).isGaugeFromFactory(address(gauge)),\n \"Gauge does not correspond to the selected type\"\n );\n\n emit IStakelessGaugeCheckpointer.GaugeAdded(gauge, gaugeType, gaugeType);\n }\n }\n\n /**\n * @dev Malicious contracts are ruled out at this stage: gauges shall be validated in external functions before\n * reaching this point.\n */\n function _getSingleBridgeCost(IStakelessGauge gauge) internal view returns (uint256) {\n // Some versions of the stakeless gauges did not implement this interface, so we need to try / catch the call.\n // In case the interface is not present, the cost is 0.\n try gauge.getTotalBridgeCost() returns (uint256 cost) {\n return cost;\n } catch {\n return 0;\n }\n }\n\n function _getGaugeTypeTotalBridgeCost(string memory gaugeType, uint256 minRelativeWeight)\n internal\n view\n returns (uint256 totalCost)\n {\n uint256 currentPeriod = _roundDownBlockTimestamp();\n uint256 gaugeCount = _gauges[gaugeType].length();\n EnumerableSet.AddressSet storage gauges = _gauges[gaugeType];\n\n for (uint256 i = 0; i < gaugeCount; ++i) {\n address gauge = gauges.unchecked_at(i);\n\n // The relative weight reported by the gauge controller is only valid if the gauge is updated (i.e. it\n // does not need a checkpoint in the controller).\n // It might be the case that after the checkpoint the gauge is below the weight threshold, but given\n // that we cannot perform the checkpoint in this view function we consider it within the threshold in that\n // case. It is better to overestimate the gas required for the call given that it is returned at the end\n // anyway.\n bool isGaugeUpdated = _gaugeController.time_weight(gauge) >= currentPeriod;\n if (isGaugeUpdated && _gaugeController.gauge_relative_weight(gauge, currentPeriod) < minRelativeWeight) {\n continue;\n }\n\n uint256 gaugeBridgeCost = _getSingleBridgeCost(IStakelessGauge(gauge));\n // If one gauge is costless, the same should apply for all the gauges of the same type.\n if (gaugeBridgeCost == 0) {\n break;\n }\n\n // Cost per gauge might not be the same if gauges come from different factories, so we add each\n // gauge's bridge cost individually.\n totalCost += gaugeBridgeCost;\n }\n }\n\n function _getGaugeTypesTotalBridgeCost(string[] memory gaugeTypes, uint256 minRelativeWeight)\n internal\n view\n returns (uint256 totalCost)\n {\n for (uint256 i = 0; i < gaugeTypes.length; ++i) {\n string memory gaugeType = gaugeTypes[i];\n totalCost += _getGaugeTypeTotalBridgeCost(gaugeType, minRelativeWeight);\n }\n }\n\n function _checkpointGaugesAboveRelativeWeight(string[] memory gaugeTypes, uint256 minRelativeWeight) internal {\n uint256 currentPeriod = _roundDownBlockTimestamp();\n\n for (uint256 i = 0; i < gaugeTypes.length; ++i) {\n _checkpointGauges(gaugeTypes[i], minRelativeWeight, currentPeriod);\n }\n }\n\n /**\n * @dev Performs checkpoints for all gauges of the given type whose relative weight is at least the specified one.\n * @param gaugeType Type of the gauges to checkpoint.\n * @param minRelativeWeight Threshold to filter out gauges below it.\n * @param currentPeriod Current block time rounded down to the start of the previous week.\n * This method doesn't check whether the caller transferred enough ETH to cover the whole operation.\n */\n function _checkpointGauges(\n string memory gaugeType,\n uint256 minRelativeWeight,\n uint256 currentPeriod\n ) private {\n EnumerableSet.AddressSet storage typeGauges = _gauges[gaugeType];\n\n uint256 totalTypeGauges = typeGauges.length();\n if (totalTypeGauges == 0) {\n // Return early if there's no work to be done.\n return;\n }\n\n // Most bridges are costless, and we can determine this by querying the cost of a single gauge.\n // If the cost of the first gauge in the list is 0, then it's 0 for the rest of them.\n // In that case, there's no need to query the bridge cost for every other gauge.\n // At this point we know there is at least one gauge in the set.\n bool isGaugeTypeCostless = (_getSingleBridgeCost(IStakelessGauge(typeGauges.unchecked_at(0))) == 0);\n\n // Arbitrum gauges need to send ETH when performing the checkpoint to pay for bridge costs. Furthermore,\n // if gauges come from different factories, the cost per gauge might not be the same for all gauges.\n function(IStakelessGauge) internal performCheckpoint = isGaugeTypeCostless\n ? _checkpointCostlessBridgeGauge\n : _checkpointPaidBridgeGauge;\n\n for (uint256 i = 0; i < totalTypeGauges; ++i) {\n address gauge = typeGauges.unchecked_at(i);\n\n // The gauge might need to be checkpointed in the controller to update its relative weight.\n // Otherwise it might be filtered out mistakenly.\n if (_gaugeController.time_weight(gauge) < currentPeriod) {\n _gaugeController.checkpoint_gauge(gauge);\n }\n\n // Skip gauges that are below the threshold.\n if (_gaugeController.gauge_relative_weight(gauge, currentPeriod) < minRelativeWeight) {\n continue;\n }\n\n performCheckpoint(IStakelessGauge(gauge));\n }\n }\n\n /**\n * @dev Calls `checkpoint` on a paid gauge, forwarding ETH to cover bridge costs.\n */\n function _checkpointPaidBridgeGauge(IStakelessGauge gauge) private {\n uint256 checkpointCost = gauge.getTotalBridgeCost();\n\n _authorizerAdaptorEntrypoint.performAction{ value: checkpointCost }(\n address(gauge),\n abi.encodeWithSelector(IStakelessGauge.checkpoint.selector)\n );\n }\n\n /**\n * @dev Calls `checkpoint` on a costless gauge; does not forward any ETH.\n */\n function _checkpointCostlessBridgeGauge(IStakelessGauge gauge) private {\n _authorizerAdaptorEntrypoint.performAction(\n address(gauge),\n abi.encodeWithSelector(IStakelessGauge.checkpoint.selector)\n );\n }\n\n /**\n * @dev Performs checkpoint for any gauge, attempting to get the cost beforehand.\n */\n function _checkpointSingleGauge(IStakelessGauge gauge) internal {\n uint256 checkpointCost = _getSingleBridgeCost(gauge);\n\n _authorizerAdaptorEntrypoint.performAction{ value: checkpointCost }(\n address(gauge),\n abi.encodeWithSelector(IStakelessGauge.checkpoint.selector)\n );\n }\n\n /**\n * @dev Send back any leftover ETH to the caller if there is an existing balance in the contract.\n */\n function _returnLeftoverEthIfAny() private {\n // Most gauge types don't need to send value, and this step can be skipped in those cases.\n uint256 remainingBalance = address(this).balance;\n if (remainingBalance > 0) {\n Address.sendValue(msg.sender, remainingBalance);\n }\n }\n\n /**\n * @dev Rounds the provided timestamp down to the beginning of the previous week (Thurs 00:00 UTC) with respect\n * to the current block timestamp.\n */\n function _roundDownBlockTimestamp() private view returns (uint256) {\n // Division by zero or overflows are impossible here.\n // solhint-disable-next-line not-rely-on-time\n return (block.timestamp / 1 weeks - 1) * 1 weeks;\n }\n}\n"},"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"../StakelessGauge.sol\";\n\ninterface IPolygonZkEVMBridge {\n function bridgeAsset(\n uint32 destinationNetwork,\n address destinationAddress,\n uint256 amount,\n address token,\n bool forceUpdateGlobalExitRoot,\n bytes calldata permitData\n ) external;\n}\n\n/**\n * @notice Root Gauge for the Polygon zkEVM network.\n * @dev Documentation is at https://zkevm.polygon.technology/docs/category/zkevm-bridge.\n */\ncontract PolygonZkEVMRootGauge is StakelessGauge {\n using SafeERC20 for IERC20;\n\n bool private constant _FORCE_UPDATE_GLOBAL_EXIT_ROOT = true;\n uint32 private constant _POLYGON_ZKEVM_NETWORK = 1;\n\n IPolygonZkEVMBridge private immutable _polygonZkEVMBridge;\n\n // This value is kept in storage and not made immutable to allow for this contract to be proxyable\n address private _recipient;\n\n constructor(IMainnetBalancerMinter minter, IPolygonZkEVMBridge polygonZkEVMBridge) StakelessGauge(minter) {\n _polygonZkEVMBridge = polygonZkEVMBridge;\n }\n\n function initialize(address recipient, uint256 relativeWeightCap) external {\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n }\n\n function getRecipient() external view override returns (address) {\n return _recipient;\n }\n\n function getPolygonZkEVMBridge() external view returns (IPolygonZkEVMBridge) {\n return _polygonZkEVMBridge;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n _balToken.safeApprove(address(_polygonZkEVMBridge), mintAmount);\n\n // This will transfer BAL to `_recipient` on the Polygon zkEVM chain\n // Emits a `BridgeEvent`.\n _polygonZkEVMBridge.bridgeAsset(\n _POLYGON_ZKEVM_NETWORK,\n _recipient,\n mintAmount,\n address(_balToken),\n _FORCE_UPDATE_GLOBAL_EXIT_ROOT,\n \"\"\n );\n }\n}\n"},"contracts/gauges/zkevm/PolygonZkEVMRootGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./PolygonZkEVMRootGauge.sol\";\n\ncontract PolygonZkEVMRootGaugeFactory is BaseGaugeFactory {\n constructor(IMainnetBalancerMinter minter, IPolygonZkEVMBridge zkEVMBridge)\n BaseGaugeFactory(address(new PolygonZkEVMRootGauge(minter, zkEVMBridge)))\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Polygon ZkEVM.\n * @dev Care must be taken to ensure that gauges deployed from this factory are suitable before they are added\n * to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @return The address of the deployed gauge\n */\n function create(address recipient, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n PolygonZkEVMRootGauge(gauge).initialize(recipient, relativeWeightCap);\n return gauge;\n }\n}\n"},"contracts/GaugeWorkingBalanceHelper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\";\n\ninterface IVeDelegationProxy is IVeDelegation {\n function getVotingEscrow() external view returns (IERC20);\n}\n\ninterface IGauge {\n function balanceOf(address user) external view returns (uint256);\n\n function totalSupply() external view returns (uint256);\n\n // solhint-disable func-name-mixedcase\n function working_balances(address user) external view returns (uint256);\n\n function working_supply() external view returns (uint256);\n // solhint-enable func-name-mixedcase\n}\n\n/**\n * @notice Get the current and projected `working_balance` (effective veBAL boosted balance) for a user on a gauge.\n * @dev The `working_balance` can range between 40% and 100% of the nominal user balance on a gauge, depending on the\n * veBAL \"voting power\" of the user with respect to the total \"voting power\" supply. This value generally decays over\n * time, but will increase with additional veBAL locking.\n *\n * Also computes the working balance ratios: balance/supply, which is more informative when deciding whether\n * it would be advantageous for the user to checkpoint a gauge.\n */\ncontract GaugeWorkingBalanceHelper {\n using FixedPoint for uint256;\n\n // 40% (minimum balance, with no veBAL)\n uint256 private constant _TOKENLESS_PRODUCTION = 40e16;\n\n IVeDelegationProxy private immutable _veDelegationProxy;\n IERC20 private immutable _veBAL;\n\n // The veBAL user balance always comes from the proxy (on L1 and L2), but versions deployed to some\n // networks require the total supply of veBAL to come from the VotingEscrow instead.\n bool private immutable _readTotalSupplyFromVE;\n\n constructor(IVeDelegationProxy veDelegationProxy, bool readTotalSupplyFromVE) {\n _veDelegationProxy = veDelegationProxy;\n _veBAL = veDelegationProxy.getVotingEscrow();\n\n _readTotalSupplyFromVE = readTotalSupplyFromVE;\n }\n\n /**\n * @dev Returns the VotingEscrowDelegationProxy (as an IVeDelegation, which is exported).\n */\n function getVotingEscrowDelegationProxy() external view returns (IVeDelegation) {\n return _veDelegationProxy;\n }\n\n /**\n * @dev Returns the VotingEscrow contract associated with the proxy.\n */\n function getVotingEscrow() external view returns (IERC20) {\n return _veBAL;\n }\n\n /**\n * @dev Returns whether the total supply will be read from the VotingEscrow contract. If false,\n * it will be read from the delegation proxy instead.\n */\n function readsTotalSupplyFromVE() external view returns (bool) {\n return _readTotalSupplyFromVE;\n }\n\n /**\n * @dev The gauge allocates 60% of the emissions it receives to veBAL holders, which it accomplishes by computing\n * an effective \"working\" balance for each user, starting with 40% of the true balance (i.e., BPT deposited in\n * the gauge), and adding a \"boost\" proportional to that user's share of the total voting power.\n *\n * @param gauge - address of a gauge (L1 or L2).\n * @param user - address of a user.\n * @return current and projected balances.\n */\n function getWorkingBalances(IGauge gauge, address user) public view returns (uint256, uint256) {\n uint256 gaugeUserBalance = gauge.balanceOf(user);\n uint256 projectedWorkingBalance = gaugeUserBalance.mulDown(_TOKENLESS_PRODUCTION);\n IVeDelegationProxy proxy = _veDelegationProxy;\n\n uint256 veTotalSupply = _readTotalSupplyFromVE ? _veBAL.totalSupply() : proxy.totalSupply();\n\n if (veTotalSupply > 0) {\n uint256 veUserBalance = proxy.adjusted_balance_of(user);\n uint256 gaugeTotalSupply = gauge.totalSupply();\n\n projectedWorkingBalance = projectedWorkingBalance.add(\n gaugeTotalSupply.mulDown(veUserBalance).mulDown(_TOKENLESS_PRODUCTION.complement()).divDown(\n veTotalSupply\n )\n );\n\n projectedWorkingBalance = Math.min(gaugeUserBalance, projectedWorkingBalance);\n }\n\n return (gauge.working_balances(user), projectedWorkingBalance);\n }\n\n /**\n * @dev There is also a \"working\" supply, needed to ensure that all the emissions are allocated.\n * Compute and return the balance/supply ratios. This captures the behavior of other users, and more\n * accurately reflects this user's relative position.\n *\n * @param gauge - address of a gauge (L1 or L2).\n * @param user - address of a user.\n * @return ratio of the current `working_balance` of the user to the current `working_supply` of the gauge.\n * @return ratio of the projected `working_balance` of the user (after `user_checkpoint`),\n * to the projected `working_supply` of the gauge.\n */\n function getWorkingBalanceToSupplyRatios(IGauge gauge, address user) external view returns (uint256, uint256) {\n (uint256 currentWorkingBalance, uint256 projectedWorkingBalance) = getWorkingBalances(gauge, user);\n uint256 currentWorkingSupply = gauge.working_supply();\n\n uint256 projectedWorkingSupply = currentWorkingSupply.add(projectedWorkingBalance).sub(currentWorkingBalance);\n\n return (\n currentWorkingBalance.divDown(currentWorkingSupply),\n projectedWorkingBalance.divDown(projectedWorkingSupply)\n );\n }\n}\n"},"contracts/L2BalancerPseudoMinter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\";\n\nimport \"./BalancerMinter.sol\";\n\n/**\n * @dev Distributes bridged BAL tokens in child chains, using the same interface as the mainnet Balancer minter.\n *\n * This contract is analogous to the mainnet minter: it has the same interface and interacts with (L2) gauges in a\n * similar manner, keeping track of how many tokens were already distributed to each gauge and user.\n *\n * The difference with the mainnet minter is that this contract does not have a way of minting BAL directly: the tokens\n * are only minted in mainnet, and then bridged to L2s. Then, this contract accumulates the emissions received by\n * child chain gauges and distributes them to users.\n *\n * Every time the tokens are 'minted' (i.e. distributed) from a gauge to a given user, the pseudo minter will query the\n * child chain gauge for the total amount of tokes that need to be distributed to that user. By keeping track of the\n * amount that it has already distributed for that gauge / user, the pseudo minter can then transfer the difference\n * to the user and update the total transferred amount.\n */\ncontract L2BalancerPseudoMinter is BalancerMinter, SingletonAuthentication {\n event GaugeFactoryAdded(ILiquidityGaugeFactory indexed factory);\n event GaugeFactoryRemoved(ILiquidityGaugeFactory indexed factory);\n\n using SafeMath for uint256;\n using SafeERC20 for IERC20;\n\n mapping(ILiquidityGaugeFactory => bool) private _validFactories;\n\n constructor(IVault vault, IERC20 balancerToken)\n BalancerMinter(balancerToken, \"Balancer Pseudo Minter\", \"1\")\n SingletonAuthentication(vault)\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Adds a given child chain gauge factory to the allowlist.\n * @dev This is a permissioned function.\n * Reverts if the given factory was added beforehand; emits `GaugeFactoryAdded` event upon success.\n */\n function addGaugeFactory(ILiquidityGaugeFactory factory) external authenticate {\n require(!_validFactories[factory], \"FACTORY_ALREADY_ADDED\");\n _validFactories[factory] = true;\n emit GaugeFactoryAdded(factory);\n }\n\n /**\n * @notice Removes a given child chain gauge factory from the allowlist.\n * @dev This is a permissioned function.\n * Reverts if the given factory had not been added beforehand; emits `GaugeFactoryRemoved` event upon success.\n */\n function removeGaugeFactory(ILiquidityGaugeFactory factory) external authenticate {\n require(_validFactories[factory], \"FACTORY_NOT_ADDED\");\n _validFactories[factory] = false;\n emit GaugeFactoryRemoved(factory);\n }\n\n /**\n * @notice Returns true if the given child chain gauge factory is in the allowlist; false otherwise.\n */\n function isValidGaugeFactory(ILiquidityGaugeFactory factory) public view returns (bool) {\n return _validFactories[factory];\n }\n\n // Internal functions\n\n function _mintFor(address gauge, address user) internal override returns (uint256 tokensToMint) {\n tokensToMint = _updateGauge(gauge, user);\n _pseudoMint(user, tokensToMint);\n }\n\n function _mintForMany(address[] calldata gauges, address user) internal override returns (uint256 tokensToMint) {\n uint256 length = gauges.length;\n for (uint256 i = 0; i < length; ++i) {\n tokensToMint = tokensToMint.add(_updateGauge(gauges[i], user));\n }\n _pseudoMint(user, tokensToMint);\n }\n\n /**\n * @dev Checkpoints given gauge and updates the internal accounting with the total tokens that should be transfered\n * to the user since the start.\n *\n * @param gauge Gauge to checkpoint and query for total tokens to be transferred.\n * @param user User to query in the given gauge.\n * @return tokensToMint Amount of tokens to be transferred to the user, calculated as the difference between the\n * total amount of tokens as indicated by the gauge and the tokens that have already been transferred to the user.\n */\n function _updateGauge(address gauge, address user) internal returns (uint256 tokensToMint) {\n // First, we retrieve the factory address registered from the gauge.\n // If the factory address is allowlisted in this contract, we verify that the gauge was actually created by\n // the factory (otherwise it could be just a malicious gauge that claims to be created by an allowed factory).\n IChildChainGauge ccGauge = IChildChainGauge(gauge);\n ILiquidityGaugeFactory factory = ccGauge.factory();\n require(isValidGaugeFactory(factory), \"INVALID_GAUGE_FACTORY\");\n require(factory.isGaugeFromFactory(gauge), \"INVALID_GAUGE\");\n\n ccGauge.user_checkpoint(user);\n uint256 totalMint = ccGauge.integrate_fraction(user);\n tokensToMint = totalMint.sub(minted(user, gauge));\n\n if (tokensToMint > 0) {\n _setMinted(user, gauge, totalMint);\n }\n }\n\n /**\n * @dev Transfers tokens to user if the given amount is not zero.\n */\n function _pseudoMint(address user, uint256 tokensToMint) internal {\n if (tokensToMint > 0) {\n getBalancerToken().safeTransfer(user, tokensToMint);\n }\n }\n}\n"},"contracts/L2LayerZeroBridgeForwarder.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\n/**\n * @notice Forwards calls from LayerZero's system to a custom hook whenever a veBAL balance is updated for a given user\n * in a L2 chain.\n * @dev The delegation contract can be set so that e.g. Child Chain Gauges are updated automatically whenever there is\n * a veBAL balance update.\n */\ncontract L2LayerZeroBridgeForwarder is IL2LayerZeroDelegation, SingletonAuthentication {\n event DelegationImplementationUpdated(IL2LayerZeroDelegation indexed newImplementation);\n\n IL2LayerZeroDelegation private _delegation;\n\n constructor(IVault vault) SingletonAuthentication(vault) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Returns the current delegation implementation contract.\n */\n function getDelegationImplementation() external view returns (IL2LayerZeroDelegation) {\n return _delegation;\n }\n\n /**\n * @notice Hook to be called whenever the veBAL balance of a user is updated.\n */\n function onVeBalBridged(address user) external override {\n if (_delegation != IL2LayerZeroDelegation(0)) {\n _delegation.onVeBalBridged(user);\n }\n }\n\n /**\n * @notice Hook to be called whenever the veBAL supply is updated.\n */\n function onVeBalSupplyUpdate() external override {\n if (_delegation != IL2LayerZeroDelegation(0)) {\n _delegation.onVeBalSupplyUpdate();\n }\n }\n\n /**\n * @notice Sets a new delegation implementation for `onVeBalBridged`.\n */\n function setDelegation(IL2LayerZeroDelegation delegation) external authenticate {\n _delegation = delegation;\n\n emit DelegationImplementationUpdated(delegation);\n }\n}\n"},"contracts/MainnetBalancerMinter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\";\n\nimport \"./BalancerMinter.sol\";\n\ncontract MainnetBalancerMinter is IMainnetBalancerMinter, BalancerMinter {\n using SafeMath for uint256;\n\n IBalancerTokenAdmin private immutable _tokenAdmin;\n IGaugeController private immutable _gaugeController;\n\n constructor(IBalancerTokenAdmin tokenAdmin, IGaugeController gaugeController)\n BalancerMinter(tokenAdmin.getBalancerToken(), \"Balancer Minter\", \"1\")\n {\n _tokenAdmin = tokenAdmin;\n _gaugeController = gaugeController;\n }\n\n /// @inheritdoc ILMGetters\n function getBalancerTokenAdmin() external view override returns (IBalancerTokenAdmin) {\n return _tokenAdmin;\n }\n\n /// @inheritdoc ILMGetters\n function getGaugeController() external view override returns (IGaugeController) {\n return _gaugeController;\n }\n\n // Internal functions\n\n function _mintFor(address gauge, address user) internal override returns (uint256 tokensToMint) {\n tokensToMint = _updateGauge(gauge, user);\n if (tokensToMint > 0) {\n _tokenAdmin.mint(user, tokensToMint);\n }\n }\n\n function _mintForMany(address[] calldata gauges, address user) internal override returns (uint256 tokensToMint) {\n uint256 length = gauges.length;\n for (uint256 i = 0; i < length; ++i) {\n tokensToMint = tokensToMint.add(_updateGauge(gauges[i], user));\n }\n\n if (tokensToMint > 0) {\n _tokenAdmin.mint(user, tokensToMint);\n }\n }\n\n function _updateGauge(address gauge, address user) internal returns (uint256 tokensToMint) {\n require(_gaugeController.gauge_types(gauge) >= 0, \"Gauge does not exist on Controller\");\n\n ILiquidityGauge(gauge).user_checkpoint(user);\n uint256 totalMint = ILiquidityGauge(gauge).integrate_fraction(user);\n tokensToMint = totalMint.sub(minted(user, gauge));\n\n if (tokensToMint > 0) {\n _setMinted(user, gauge, totalMint);\n }\n }\n}\n"},"contracts/NullVotingEscrow.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @title Null VotingEscrow\n * @notice This contract fulfils the role of a `VotingEscrow` contract\n * where no accounts hold a balance for the purposes of gauge boosts.\n * @dev This contract is to be used as the fallback `VotingEscrow` on chains other than Ethereum mainnet.\n * In the situation where boosts are not properly relayed from Ethereum mainnet to a chain and the veBoost\n * implementation is killed, values will be read from here which will have the effect of zeroing out any boosts.\n */\ncontract NullVotingEscrow is IERC20 {\n function totalSupply() external pure override returns (uint256) {\n return 0;\n }\n\n function balanceOf(address) external pure override returns (uint256) {\n return 0;\n }\n\n function allowance(address, address) external pure override returns (uint256) {\n return 0;\n }\n\n function approve(address, uint256) external pure override returns (bool) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function transfer(address, uint256) external pure override returns (bool) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function transferFrom(\n address,\n address,\n uint256\n ) external pure override returns (bool) {\n _revert(Errors.UNIMPLEMENTED);\n }\n}\n"},"contracts/OmniVotingEscrowAdaptor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\n/**\n * @notice Adaptor contract between `VotingEscrowRemapper` and `OmniVotingEscrow`.\n * @dev Provides the remapper a stable interface to forward requests to the omni voting escrow, while allowing to\n * configure optional parameters and even swap the target omni voting escrow contract.\n */\ncontract OmniVotingEscrowAdaptor is\n IOmniVotingEscrowAdaptor,\n IOmniVotingEscrowAdaptorSettings,\n SingletonAuthentication\n{\n IOmniVotingEscrow private _omniVotingEscrow;\n bool private _useZro;\n bytes private _adapterParams;\n address private _zroPaymentAddress;\n\n constructor(IVault vault) SingletonAuthentication(vault) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function getOmniVotingEscrow() public view override returns (IOmniVotingEscrow) {\n return _omniVotingEscrow;\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function getUseZero() external view override returns (bool) {\n return _useZro;\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function getAdapterParams() external view override returns (bytes memory) {\n return _adapterParams;\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function getZeroPaymentAddress() external view override returns (address) {\n return _zroPaymentAddress;\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptor\n function estimateSendUserBalance(uint16 _dstChainId)\n external\n view\n override\n returns (uint256 nativeFee, uint256 zroFee)\n {\n IOmniVotingEscrow omniVotingEscrow = getOmniVotingEscrow();\n require(omniVotingEscrow != IOmniVotingEscrow(0), \"Omni voting escrow not set\");\n\n return omniVotingEscrow.estimateSendUserBalance(_dstChainId, _useZro, _adapterParams);\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptor\n function sendUserBalance(\n address _user,\n uint16 _dstChainId,\n address payable _refundAddress\n ) external payable override {\n IOmniVotingEscrow omniVotingEscrow = getOmniVotingEscrow();\n require(omniVotingEscrow != IOmniVotingEscrow(0), \"Omni voting escrow not set\");\n\n omniVotingEscrow.sendUserBalance{ value: msg.value }(\n _user,\n _dstChainId,\n _refundAddress,\n _zroPaymentAddress,\n _adapterParams\n );\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function setOmniVotingEscrow(IOmniVotingEscrow omniVotingEscrow) external override authenticate {\n _omniVotingEscrow = omniVotingEscrow;\n emit OmniVotingEscrowUpdated(omniVotingEscrow);\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function setUseZero(bool useZro) external override authenticate {\n _useZro = useZro;\n emit UseZeroUpdated(useZro);\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function setAdapterParams(bytes memory adapterParams) external override authenticate {\n _adapterParams = adapterParams;\n emit AdapterParamsUpdated(adapterParams);\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function setZeroPaymentAddress(address paymentAddress) external override authenticate {\n _zroPaymentAddress = paymentAddress;\n emit ZeroPaymentAddressUpdated(paymentAddress);\n }\n}\n"},"contracts/SmartWalletChecker.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\";\n\ncontract SmartWalletChecker is ISmartWalletChecker, SingletonAuthentication {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n event ContractAddressAdded(address contractAddress);\n event ContractAddressRemoved(address contractAddress);\n\n EnumerableSet.AddressSet private _allowlistedAddresses;\n\n constructor(IVault vault, address[] memory initialAllowedAddresses) SingletonAuthentication(vault) {\n uint256 addressesLength = initialAllowedAddresses.length;\n for (uint256 i = 0; i < addressesLength; ++i) {\n _allowlistAddress(initialAllowedAddresses[i]);\n }\n }\n\n function check(address contractAddress) external view override returns (bool) {\n return _allowlistedAddresses.contains(contractAddress);\n }\n\n function getAllowlistedAddress(uint256 index) external view returns (address) {\n return _allowlistedAddresses.at(index);\n }\n\n function getAllowlistedAddressesLength() external view returns (uint256) {\n return _allowlistedAddresses.length();\n }\n\n function allowlistAddress(address contractAddress) external authenticate {\n _allowlistAddress(contractAddress);\n }\n\n function denylistAddress(address contractAddress) external authenticate {\n require(_allowlistedAddresses.remove(contractAddress), \"Address is not allowlisted\");\n emit ContractAddressRemoved(contractAddress);\n }\n\n // Internal functions\n\n function _allowlistAddress(address contractAddress) internal {\n require(_allowlistedAddresses.add(contractAddress), \"Address already allowlisted\");\n emit ContractAddressAdded(contractAddress);\n }\n}\n"},"contracts/test/MockAvalancheRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../gauges/avalanche/AvalancheRootGauge.sol\";\n\n/**\n * @dev This is used by the Avalanche Root Gauge deployment task in the deployments repo, and is referenced there.\n * Do not delete.\n */\ncontract MockAvalancheRootGauge is AvalancheRootGauge {\n constructor(IMainnetBalancerMinter minter, ILayerZeroBALProxy lzBALProxy) AvalancheRootGauge(minter, lzBALProxy) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @dev It would be very difficult to contrive a fork test that set the mintAmount to a precise value,\n * so the bridge limits are best tested with a mock and unit tests.\n * It must be payable to send ETH to pay for gas in the child chain.\n * @param mintAmount Amount to be bridged\n */\n function bridge(uint256 mintAmount) external payable {\n _postMintAction(mintAmount);\n }\n}\n"},"contracts/test/MockBalancerMinter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\";\n\nimport \"../BalancerMinter.sol\";\n\ncontract MockBalancerMinter is BalancerMinter {\n event MintFor(address gauge, address user);\n event MintForMany(address[] gauges, address user);\n\n uint256 private _mintForReturn;\n uint256 private _mintForManyReturn;\n\n constructor(IERC20 token) BalancerMinter(token, \"Balancer Minter\", \"1\") {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function setMockMintFor(uint256 mintForReturn) external {\n _mintForReturn = mintForReturn;\n }\n\n function setMockMintForMany(uint256 mintForManyReturn) external {\n _mintForManyReturn = mintForManyReturn;\n }\n\n function setMinted(\n address user,\n address gauge,\n uint256 value\n ) external {\n return _setMinted(user, gauge, value);\n }\n\n // Internal functions\n\n function _mintFor(address gauge, address user) internal override returns (uint256 tokensToMint) {\n emit MintFor(gauge, user);\n return _mintForReturn;\n }\n\n function _mintForMany(address[] calldata gauges, address user) internal override returns (uint256 tokensToMint) {\n emit MintForMany(gauges, user);\n return _mintForManyReturn;\n }\n}\n"},"contracts/test/MockBalancerTokenAdmin.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\n/**\n * @dev This is an incomplete implementation of the token admin. It provides just enough functionality to be able to\n * instantiate Liquidity and Stakeless gauges.\n */\ncontract MockBalancerTokenAdmin {\n uint256 public constant INITIAL_RATE = (145000 * 1e18) / uint256(1 weeks); // BAL has 18 decimals\n uint256 public constant RATE_REDUCTION_TIME = 365 days;\n uint256 public constant RATE_REDUCTION_COEFFICIENT = 1189207115002721024; // 2 ** (1/4) * 1e18\n uint256 public constant RATE_DENOMINATOR = 1e18;\n\n IVault private _vault;\n IBalancerToken private _balancerToken;\n uint256 private _startEpochTime;\n uint256 private immutable _rate;\n\n constructor(IVault vault, IBalancerToken balancerToken) {\n _vault = vault;\n _balancerToken = balancerToken;\n // solhint-disable-next-line not-rely-on-time\n _startEpochTime = block.timestamp;\n _rate = INITIAL_RATE;\n }\n\n function getVault() external view returns (IVault) {\n return _vault;\n }\n\n function getBalancerToken() external view returns (IBalancerToken) {\n return _balancerToken;\n }\n\n function startEpochTimeWrite() external returns (uint256) {\n return _epochWrite();\n }\n\n // solhint-disable func-name-mixedcase\n\n function future_epoch_time_write() external returns (uint256) {\n return _epochWrite();\n }\n\n function rate() external view returns (uint256) {\n return _rate;\n }\n\n function _epochWrite() internal returns (uint256) {\n _startEpochTime += 1;\n return _startEpochTime;\n }\n\n function mint(address to, uint256 amount) external {\n _balancerToken.mint(to, amount);\n }\n}\n"},"contracts/test/MockBaseRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../gauges/base/BaseRootGauge.sol\";\n\n/**\n * @dev This is used by the Base Root Gauge deployment task in the deployments repo, and is referenced there.\n * Do not delete.\n */\ncontract MockBaseRootGauge is BaseRootGauge {\n constructor(\n IMainnetBalancerMinter minter,\n IL1StandardBridge baseBridge,\n address baseBAL\n ) BaseRootGauge(minter, baseBridge, baseBAL) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @dev It would be very difficult to contrive a fork test that set the mintAmount to a precise value,\n * so the bridge limits are best tested with a mock and unit tests.\n * It must be payable to send ETH to pay for gas in the child chain.\n * @param mintAmount Amount to be bridged\n */\n function bridge(uint256 mintAmount) external payable {\n _postMintAction(mintAmount);\n }\n}\n"},"contracts/test/MockChildChainGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\";\n\n// solhint-disable func-name-mixedcase\ncontract MockChildChainGauge is IChildChainGauge {\n event UserCheckpoint(address user);\n\n using SafeMath for uint256;\n\n // solhint-disable-next-line var-name-mixedcase\n address public lp_token;\n ILiquidityGaugeFactory public override factory;\n string public override version;\n\n uint256 private _checkpointStep;\n mapping(address => uint256) private _integrateFraction;\n\n constructor(string memory _version) {\n version = _version;\n }\n\n function initialize(address pool, string memory _version) external override {\n lp_token = pool;\n factory = ILiquidityGaugeFactory(msg.sender);\n version = _version;\n }\n\n function setMockCheckpointStep(uint256 checkpointStep) external {\n _checkpointStep = checkpointStep;\n }\n\n function setMockFactory(ILiquidityGaugeFactory _factory) external {\n factory = _factory;\n }\n\n function integrate_fraction(address user) external view override returns (uint256) {\n return _integrateFraction[user];\n }\n\n function user_checkpoint(address user) external override returns (bool) {\n _integrateFraction[user] = _integrateFraction[user].add(_checkpointStep);\n emit UserCheckpoint(user);\n return true;\n }\n}\n"},"contracts/test/MockGaugeController.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ncontract MockGaugeController is IGaugeController {\n int128 private _numGaugeTypes;\n mapping(address => bool) private _validGauge;\n mapping(address => int128) private _gaugeType;\n mapping(address => uint256) private _weights;\n uint256 private _gaugeWeightBias;\n\n IAuthorizerAdaptor public override admin;\n // solhint-disable-next-line var-name-mixedcase\n IVotingEscrow public override voting_escrow;\n\n // solhint-disable-next-line func-param-name-mixedcase, var-name-mixedcase\n event NewGauge(address addr, int128 gauge_type, uint256 weight);\n\n constructor(IVotingEscrow votingEscrow, IAuthorizerAdaptor authorizerAdaptor) {\n voting_escrow = votingEscrow;\n admin = authorizerAdaptor;\n }\n\n function n_gauge_types() external view override returns (int128) {\n return _numGaugeTypes;\n }\n\n function gauge_types(address gauge) external view override returns (int128) {\n require(_validGauge[gauge], \"Gauge doesn't exist on controller\");\n return _gaugeType[gauge];\n }\n\n function add_gauge(address gauge, int128 gaugeType) external override {\n require(!_validGauge[gauge], \"Gauge already exists on controller\");\n require(gaugeType >= 0 && gaugeType < _numGaugeTypes, \"Invalid gauge type\");\n _validGauge[gauge] = true;\n emit NewGauge(gauge, gaugeType, 0);\n }\n\n function add_type(string calldata, uint256) external override {\n _numGaugeTypes += 1;\n }\n\n function token() external pure override returns (IERC20) {\n return IERC20(0);\n }\n\n function checkpoint_gauge(address) external override {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function gauge_relative_weight(address gauge, uint256) external view override returns (uint256) {\n return _weights[gauge] + _gaugeWeightBias;\n }\n\n function change_type_weight(int128, uint256) external override {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function gauge_exists(address gauge) external view override returns (bool) {\n return _validGauge[gauge];\n }\n\n function setGaugeWeight(address gauge, uint256 weight) external {\n require(_validGauge[gauge], \"Gauge does not exist on controller\");\n _weights[gauge] = weight;\n }\n\n function setGaugeWeightBias(uint256 bias) external {\n require(bias <= 1e18, \"Bias too high\");\n _gaugeWeightBias = bias;\n }\n\n function time_weight(address) external pure override returns (uint256) {\n return 0;\n }\n}\n"},"contracts/test/MockL2LayerZeroDelegation.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\";\n\ncontract MockL2LayerZeroDelegation is IL2LayerZeroDelegation {\n event OnVeBalBridged(address user);\n event OnVeBalSupplyUpdate();\n\n function onVeBalBridged(address user) external override {\n emit OnVeBalBridged(user);\n }\n\n function onVeBalSupplyUpdate() external override {\n emit OnVeBalSupplyUpdate();\n }\n}\n"},"contracts/test/MockLiquidityGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n// solhint-disable func-name-mixedcase\ncontract MockLiquidityGauge is ILiquidityGauge {\n // solhint-disable-next-line var-name-mixedcase\n address public lp_token;\n bool private _isKilled;\n\n constructor() {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function initialize(address pool, uint256) external {\n lp_token = pool;\n }\n\n function is_killed() external view override returns (bool) {\n return _isKilled;\n }\n\n function killGauge() external override {\n _isKilled = true;\n }\n\n function unkillGauge() external override {\n _isKilled = false;\n }\n\n // Methods below are not implemented; they are present just to comply with ILiquidityGauge.\n // State mutability was set to \"pure\" to avoid compiler warnings.\n\n function integrate_fraction(address) external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function user_checkpoint(address) external pure override returns (bool) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function setRelativeWeightCap(uint256) external pure override {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getRelativeWeightCap() external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getCappedRelativeWeight(uint256) external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n}\n"},"contracts/test/MockLiquidityGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../gauges/BaseGaugeFactory.sol\";\nimport \"./MockLiquidityGauge.sol\";\n\ncontract MockLiquidityGaugeFactory is BaseGaugeFactory {\n constructor(MockLiquidityGauge gaugeImplementation) BaseGaugeFactory(address(gaugeImplementation)) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function create(address pool, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n\n MockLiquidityGauge(gauge).initialize(pool, relativeWeightCap);\n\n return gauge;\n }\n}\n"},"contracts/test/MockOmniVotingEscrow.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol\";\n\ncontract MockOmniVotingEscrow is IOmniVotingEscrow {\n event SendUserBalance(\n address user,\n uint16 chainId,\n address refundAddress,\n address zroPaymentAddress,\n bytes adapterParams,\n uint256 value\n );\n\n // chain ID --> native fee\n mapping(uint16 => uint256) private _nativeFee;\n uint256 private _zroFee;\n\n function estimateSendUserBalance(\n uint16 chainId,\n bool,\n bytes calldata\n ) external view override returns (uint256 nativeFee, uint256 zroFee) {\n return (_nativeFee[chainId], _zroFee);\n }\n\n function sendUserBalance(\n address _user,\n uint16 _dstChainId,\n address payable _refundAddress,\n address _zroPaymentAddress,\n bytes memory _adapterParams\n ) external payable override {\n emit SendUserBalance(_user, _dstChainId, _refundAddress, _zroPaymentAddress, _adapterParams, msg.value);\n }\n\n function setNativeFee(uint256 nativeFee, uint16 chainId) external {\n _nativeFee[chainId] = nativeFee;\n }\n}\n"},"contracts/test/MockRewardTokenDistributor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\";\n\n// solhint-disable func-name-mixedcase, var-name-mixedcase, not-rely-on-time\n\n/**\n * @dev This contract is designed to mock LiquidityGaugeV5's interface for distributing external tokens.\n */\ncontract MockRewardTokenDistributor is IRewardTokenDistributor {\n using SafeERC20 for IERC20;\n\n uint256 private _rewardCount;\n IERC20[8] private _rewardTokens;\n mapping(IERC20 => Reward) private _rewardData;\n\n function reward_tokens(uint256 index) external view override returns (IERC20) {\n return _rewardTokens[index];\n }\n\n function reward_data(IERC20 token) external view override returns (Reward memory) {\n return _rewardData[token];\n }\n\n function add_reward(IERC20 rewardToken, address distributor) external override {\n _rewardTokens[_rewardCount] = rewardToken;\n _rewardData[rewardToken] = Reward({\n token: rewardToken,\n distributor: distributor,\n period_finish: 0,\n rate: 0,\n last_update: block.timestamp,\n integral: 0\n });\n\n _rewardCount += 1;\n require(_rewardCount < 8, \"Too many reward tokens\");\n }\n\n function set_reward_distributor(IERC20 rewardToken, address distributor) external override {\n _rewardData[rewardToken].distributor = distributor;\n }\n\n function deposit_reward_token(IERC20 rewardToken, uint256 amount) external override {\n require(_rewardData[rewardToken].distributor == msg.sender, \"Only callable by reward distributor\");\n rewardToken.safeTransferFrom(msg.sender, address(this), amount);\n\n // We don't care about the rest of the update.\n }\n\n function claim_rewards(address user) external override {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function claimable_reward(address, address) external pure override returns (uint256) {\n return 0;\n }\n\n function claimable_reward_write(address, address) external pure override returns (uint256) {\n return 0;\n }\n}\n"},"contracts/test/MockVeDelegation.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ncontract MockVeDelegation is IVeDelegation {\n uint256 private _adjustedBalance;\n uint256 private _totalSupply;\n\n function adjusted_balance_of(address) external view override returns (uint256) {\n return _adjustedBalance;\n }\n\n function totalSupply() external view override returns (uint256) {\n return _totalSupply;\n }\n}\n"},"contracts/test/MockVotingEscrow.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\";\n\n// solhint-disable var-name-mixedcase\n// solhint-disable func-name-mixedcase\n\n/**\n * @dev Mock voting escrow with setters to manipulate its inner state.\n * Points are represented as mappings just for convenience, while keeping the same API for the public members\n * as the real voting escrow.\n */\ncontract MockVotingEscrow {\n uint256 public epoch;\n // epoch ==> Point\n mapping(uint256 => IVotingEscrow.Point) public point_history;\n // user ==> epoch ==> Point\n mapping(address => mapping(uint256 => IVotingEscrow.Point)) public user_point_history;\n // user ==> epoch\n mapping(address => uint256) public user_point_epoch;\n // user ==> lock's end\n mapping(address => uint256) public locked__end;\n // user ==> balance\n mapping(address => uint256) public balanceOf;\n\n ISmartWalletChecker private _smartWalletChecker;\n\n constructor(ISmartWalletChecker smartWalletChecker) {\n _smartWalletChecker = smartWalletChecker;\n }\n\n function smart_wallet_checker() external view returns (ISmartWalletChecker) {\n return _smartWalletChecker;\n }\n\n function setEpoch(uint256 _epoch) external {\n epoch = _epoch;\n }\n\n function setPointHistory(uint256 _epoch, IVotingEscrow.Point memory point) external {\n point_history[_epoch] = point;\n }\n\n function setUserPointEpoch(address user, uint256 _epoch) external {\n user_point_epoch[user] = _epoch;\n }\n\n function setUserPointHistory(\n address user,\n uint256 _epoch,\n IVotingEscrow.Point memory point\n ) external {\n user_point_history[user][_epoch] = point;\n }\n\n function setLockedEnd(address user, uint256 end) external {\n locked__end[user] = end;\n }\n\n function setBalanceOf(address user, uint256 balance) external {\n balanceOf[user] = balance;\n }\n}\n"},"contracts/test/TestAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\n// This contract maintains the old AccessControl behaviour which is used by BalancerGovernanceToken in production\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it.\n */\nabstract contract TestAccessControl {\n using EnumerableSet for EnumerableSet.AddressSet;\n using Address for address;\n\n struct RoleData {\n EnumerableSet.AddressSet members;\n bytes32 adminRole;\n }\n\n mapping(bytes32 => RoleData) private _roles;\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view returns (bool) {\n return _roles[role].members.contains(account);\n }\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\n return _roles[role].members.length();\n }\n\n // solhint-disable max-line-length\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n // solhint-enable max-line-length\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\n return _roles[role].members.at(index);\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\n return _roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) public virtual {\n require(hasRole(_roles[role].adminRole, msg.sender), \"AccessControl: sender must be an admin to grant\");\n\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) public virtual {\n require(hasRole(_roles[role].adminRole, msg.sender), \"AccessControl: sender must be an admin to revoke\");\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) public virtual {\n require(account == msg.sender, \"AccessControl: can only renounce roles for self\");\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event. Note that unlike {grantRole}, this function doesn't perform any\n * checks on the calling account.\n *\n * [WARNING]\n * ====\n * This function should only be called from the constructor when setting\n * up the initial roles for the system.\n *\n * Using this function in any other way is effectively circumventing the admin\n * system imposed by {AccessControl}.\n * ====\n */\n function _setupRole(bytes32 role, address account) internal virtual {\n _grantRole(role, account);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\n _roles[role].adminRole = adminRole;\n }\n\n function _grantRole(bytes32 role, address account) private {\n if (_roles[role].members.add(account)) {\n emit RoleGranted(role, account, msg.sender);\n }\n }\n\n function _revokeRole(bytes32 role, address account) private {\n if (_roles[role].members.remove(account)) {\n emit RoleRevoked(role, account, msg.sender);\n }\n }\n}\n"},"contracts/test/TestBalancerToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\";\n\nimport \"./TestAccessControl.sol\";\n\ncontract TestBalancerToken is TestAccessControl, ERC20, ERC20Burnable, ERC20Permit {\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n bytes32 public constant SNAPSHOT_ROLE = keccak256(\"SNAPSHOT_ROLE\");\n\n event Snapshot(uint256 id);\n\n constructor(\n address admin,\n string memory name,\n string memory symbol\n ) ERC20(name, symbol) ERC20Permit(name) {\n _setupDecimals(18);\n _setupRole(DEFAULT_ADMIN_ROLE, admin);\n _setupRole(MINTER_ROLE, admin);\n _setupRole(SNAPSHOT_ROLE, admin);\n }\n\n function mint(address recipient, uint256 amount) external {\n require(hasRole(MINTER_ROLE, msg.sender), \"NOT_MINTER\");\n _mint(recipient, amount);\n }\n\n function snapshot() external {\n require(hasRole(SNAPSHOT_ROLE, msg.sender), \"NOT_SNAPSHOTTER\");\n emit Snapshot(0);\n }\n}\n"},"contracts/test/TestFeeDistributor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../fee-distribution/FeeDistributor.sol\";\n\ncontract TestFeeDistributor is FeeDistributor {\n constructor(IVotingEscrow votingEscrow, uint256 startTime) FeeDistributor(votingEscrow, startTime) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function getUserLastEpochCheckpointed(address user) external view returns (uint256) {\n return _userState[user].lastEpochCheckpointed;\n }\n}\n"},"contracts/VotingEscrowDelegationProxy.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\ncontract VotingEscrowDelegationProxy is SingletonAuthentication {\n IERC20 private immutable _votingEscrow;\n IVeDelegation private _delegation;\n\n event DelegationImplementationUpdated(address indexed newImplementation);\n\n constructor(\n IVault vault,\n IERC20 votingEscrow,\n IVeDelegation delegation\n ) SingletonAuthentication(vault) {\n _votingEscrow = votingEscrow;\n _delegation = delegation;\n }\n\n /**\n * @notice Returns the current delegation implementation contract.\n */\n function getDelegationImplementation() external view returns (IVeDelegation) {\n return _delegation;\n }\n\n /**\n * @notice Returns the Voting Escrow (veBAL) contract.\n */\n function getVotingEscrow() external view returns (IERC20) {\n return _votingEscrow;\n }\n\n /**\n * @notice Get the adjusted veBAL balance from the active boost delegation contract\n * @param user The user to query the adjusted veBAL balance of\n * @return veBAL balance\n */\n function adjustedBalanceOf(address user) external view returns (uint256) {\n return _adjustedBalanceOf(user);\n }\n\n /**\n * @notice Get the adjusted veBAL balance from the active boost delegation contract\n * @param user The user to query the adjusted veBAL balance of\n * @return veBAL balance\n */\n // solhint-disable-next-line func-name-mixedcase\n function adjusted_balance_of(address user) external view returns (uint256) {\n return _adjustedBalanceOf(user);\n }\n\n /**\n * @notice Get the current veBAL total supply from the votingEscrow contract.\n * @return The current veBAL total supply.\n */\n function totalSupply() external view returns (uint256) {\n IVeDelegation implementation = _delegation;\n if (implementation == IVeDelegation(0)) {\n return IERC20(_votingEscrow).totalSupply();\n }\n return implementation.totalSupply();\n }\n\n // Internal functions\n\n function _adjustedBalanceOf(address user) internal view returns (uint256) {\n IVeDelegation implementation = _delegation;\n if (implementation == IVeDelegation(0)) {\n return IERC20(_votingEscrow).balanceOf(user);\n }\n return implementation.adjusted_balance_of(user);\n }\n\n // Admin functions\n\n function setDelegation(IVeDelegation delegation) external authenticate {\n // call `adjusted_balance_of` to make sure it works\n delegation.adjusted_balance_of(msg.sender);\n\n _delegation = delegation;\n emit DelegationImplementationUpdated(address(delegation));\n }\n\n function killDelegation() external authenticate {\n _delegation = IVeDelegation(0);\n emit DelegationImplementationUpdated(address(0));\n }\n}\n"},"contracts/VotingEscrowRemapper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\n/**\n * @notice This contract allows veBAL holders on Ethereum to assign their balance to designated addresses on each L2.\n * This is intended for smart contracts that are not deployed to the same address on all networks. EOA's are\n * expected to either use the same address, or manage delegation on L2 networks themselves.\n *\n * @dev For each network (chainId), we maintain a mapping between local (Ethereum) and remote (L2) addresses.\n * This contract remaps balance queries on remote network addresses to their corresponding local addresses.\n * Users able to call this contract can set their own mappings, or delegate this function to another account if they\n * cannot.\n */\ncontract VotingEscrowRemapper is IVotingEscrowRemapper, SingletonAuthentication, ReentrancyGuard {\n IVotingEscrow private immutable _votingEscrow;\n IOmniVotingEscrowAdaptor private _omniVotingEscrowAdaptor;\n mapping(uint16 => mapping(address => address)) private _localToRemoteAddressMap;\n mapping(uint16 => mapping(address => address)) private _remoteToLocalAddressMap;\n\n // Records a mapping from an address to another address which is authorized to manage its remote users.\n mapping(address => address) private _localRemappingManager;\n\n constructor(\n IVault vault,\n IVotingEscrow votingEscrow,\n IOmniVotingEscrowAdaptor omniVotingEscrowAdaptor\n ) SingletonAuthentication(vault) {\n _votingEscrow = votingEscrow;\n _omniVotingEscrowAdaptor = omniVotingEscrowAdaptor;\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getVotingEscrow() public view override returns (IVotingEscrow) {\n return _votingEscrow;\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getOmniVotingEscrowAdaptor() public view override returns (IOmniVotingEscrowAdaptor) {\n return _omniVotingEscrowAdaptor;\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getTotalSupplyPoint() external view override returns (IVotingEscrow.Point memory) {\n IVotingEscrow votingEscrow = getVotingEscrow();\n uint256 totalSupplyEpoch = votingEscrow.epoch();\n return votingEscrow.point_history(totalSupplyEpoch);\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getUserPoint(address user) external view override returns (IVotingEscrow.Point memory) {\n IVotingEscrow votingEscrow = getVotingEscrow();\n uint256 userEpoch = votingEscrow.user_point_epoch(user);\n return votingEscrow.user_point_history(user, userEpoch);\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getLockedEnd(address user) external view override returns (uint256) {\n return getVotingEscrow().locked__end(user);\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getLocalUser(address remoteUser, uint16 chainId) public view override returns (address) {\n return _remoteToLocalAddressMap[chainId][remoteUser];\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getRemoteUser(address localUser, uint16 chainId) public view override returns (address) {\n return _localToRemoteAddressMap[chainId][localUser];\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getRemappingManager(address localUser) public view override returns (address) {\n return _localRemappingManager[localUser];\n }\n\n // Remapping Setters\n\n /// @inheritdoc IVotingEscrowRemapper\n function setNetworkRemapping(\n address localUser,\n address remoteUser,\n uint16 chainId\n ) external payable override nonReentrant {\n _require(msg.sender == localUser || msg.sender == _localRemappingManager[localUser], Errors.SENDER_NOT_ALLOWED);\n require(_isAllowedContract(localUser), \"Only contracts which can hold veBAL can set up a mapping\");\n require(remoteUser != address(0), \"Zero address cannot be used as remote user\");\n IOmniVotingEscrowAdaptor omniVotingEscrowAdaptor = getOmniVotingEscrowAdaptor();\n\n // We keep a 1-to-1 local-remote mapping for each chain.\n // If A --> B (i.e. A in the local chain is remapped to B in the remote chain), to keep the state consistent\n // the user effectively 'owns' both A and B in both chains.\n //\n // This means that whenever a new remapping is created (assuming A --> B previously):\n // - The remote address must not already be in use by another local user (C --> B is forbidden).\n // - The remote address must not be a local address that has already been remapped (C --> A is forbidden).\n // - The local address must not be the target remote address for another local user (B --> C is forbidden).\n //\n // Note that this means that it is possible to frontrun this call to grief a user by taking up their\n // selected remote address before they do so. This is mitigated somewhat by restricting potential attackers to\n // the set of contracts that are allowlisted to hold veBAL (and their remapping managers). Should\n // one of them grief, then Balancer governance can remove them from these allowlists.\n\n // B cannot be remapped to (i.e. be a remote) if a prior A --> B mapping exists.\n // To prevent it, we verify that the reverse mapping of our remote does not exist.\n require(\n _remoteToLocalAddressMap[chainId][remoteUser] == address(0),\n \"Cannot overwrite an existing mapping by another user\"\n );\n\n // A cannot be remapped to (i.e. be a remote) if a prior A --> B mapping exists.\n // To prevent it, we verify that the mapping of our remote does not exist.\n require(\n _localToRemoteAddressMap[chainId][remoteUser] == address(0),\n \"Cannot remap to an address that is in use locally\"\n );\n\n // B cannot be mapped from (i.e. be a local) if a prior A --> B mapping exists.\n // To prevent it, we verify that the reverse mapping of our local does not exist.\n require(\n _remoteToLocalAddressMap[chainId][localUser] == address(0),\n \"Cannot remap to an address that is in use remotely\"\n );\n\n // This is a best-effort check: we should not allow griefing the existing balance of an account,\n // because with this remapping we would overwrite it in the target chain ID.\n require(_votingEscrow.balanceOf(remoteUser) == 0, \"Target remote address has non-zero veBAL balance\");\n\n // Clear out the old remote user to avoid orphaned entries.\n address oldRemoteUser = _localToRemoteAddressMap[chainId][localUser];\n if (oldRemoteUser != address(0)) {\n _remoteToLocalAddressMap[chainId][oldRemoteUser] = address(0);\n emit RemoteAddressMappingCleared(oldRemoteUser, chainId);\n }\n\n // Set up new remapping.\n _remoteToLocalAddressMap[chainId][remoteUser] = localUser;\n _localToRemoteAddressMap[chainId][localUser] = remoteUser;\n\n emit AddressMappingUpdated(localUser, remoteUser, chainId);\n\n // Note: it is important to perform the bridge calls _after_ the mappings are settled, since the\n // omni voting escrow will rely on the correct mappings to bridge the balances.\n (uint256 nativeFee, ) = omniVotingEscrowAdaptor.estimateSendUserBalance(chainId);\n if (oldRemoteUser != address(0)) {\n require(msg.value >= nativeFee * 2, \"Insufficient ETH to bridge user balance\");\n // If there was an old mapping, send balance from (local) oldRemoteUser --> (remote) oldRemoteUser\n // This should clean up the existing bridged balance from localUser --> oldRemoteUser.\n omniVotingEscrowAdaptor.sendUserBalance{ value: nativeFee }(oldRemoteUser, chainId, payable(msg.sender));\n } else {\n require(msg.value >= nativeFee, \"Insufficient ETH to bridge user balance\");\n }\n\n // Bridge balance for new mapping localUser --> remoteUser.\n omniVotingEscrowAdaptor.sendUserBalance{ value: nativeFee }(localUser, chainId, payable(msg.sender));\n\n // Send back any leftover ETH to the caller.\n uint256 remainingBalance = address(this).balance;\n if (remainingBalance > 0) {\n Address.sendValue(msg.sender, remainingBalance);\n }\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function setNetworkRemappingManager(address localUser, address delegate)\n external\n override\n authenticate\n nonReentrant\n {\n require(_isAllowedContract(localUser), \"Only contracts which can hold veBAL may have a delegate\");\n\n _localRemappingManager[localUser] = delegate;\n emit AddressDelegateUpdated(localUser, delegate);\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function clearNetworkRemapping(address localUser, uint16 chainId) external payable override nonReentrant {\n require(localUser != address(0), \"localUser cannot be zero address\");\n require(!_isAllowedContract(localUser) || localUser == msg.sender, \"localUser is still in good standing\");\n IOmniVotingEscrowAdaptor omniVotingEscrowAdaptor = getOmniVotingEscrowAdaptor();\n\n address remoteUser = _localToRemoteAddressMap[chainId][localUser];\n require(remoteUser != address(0), \"Remapping to clear does not exist\");\n\n _remoteToLocalAddressMap[chainId][remoteUser] = address(0);\n _localToRemoteAddressMap[chainId][localUser] = address(0);\n\n emit AddressMappingUpdated(localUser, address(0), chainId);\n emit RemoteAddressMappingCleared(remoteUser, chainId);\n\n // Note: it is important to perform the bridge calls _after_ the mappings are settled, since the\n // omni voting escrow will rely on the correct mappings to bridge the balances.\n // Clean up the balance for the old mapping, and bridge the new (default) one.\n (uint256 nativeFee, ) = omniVotingEscrowAdaptor.estimateSendUserBalance(chainId);\n require(msg.value >= nativeFee * 2, \"Insufficient ETH to bridge user balance\");\n\n omniVotingEscrowAdaptor.sendUserBalance{ value: nativeFee }(localUser, chainId, payable(msg.sender));\n omniVotingEscrowAdaptor.sendUserBalance{ value: nativeFee }(remoteUser, chainId, payable(msg.sender));\n\n // Send back any leftover ETH to the caller.\n uint256 remainingBalance = address(this).balance;\n if (remainingBalance > 0) {\n Address.sendValue(msg.sender, remainingBalance);\n }\n }\n\n // Internal Functions\n\n /**\n * @notice Returns whether `localUser` is a contract which is authorized to hold veBAL.\n * @param localUser - The address to check against the `SmartWalletChecker`.\n */\n function _isAllowedContract(address localUser) private view returns (bool) {\n ISmartWalletChecker smartWalletChecker = getVotingEscrow().smart_wallet_checker();\n return smartWalletChecker.check(localUser);\n }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":9999},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"errors":[{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:34:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1582,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1343},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:42:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1827,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1588},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:34:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1582,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1343},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:42:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1827,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1588},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:34:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1582,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1343},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:42:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1827,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1588},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol:77:5: Warning: Function state mutability can be restricted to pure\n function _getChainId() private view returns (uint256 chainId) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Function state mutability can be restricted to pure","severity":"warning","sourceLocation":{"end":3620,"file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","start":3433},"type":"Warning"}],"sources":{"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol","exportedSymbols":{"IArbitrumFeeProvider":[20]},"id":21,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":20,"linearizedBaseContracts":[20],"name":"IArbitrumFeeProvider","nodeType":"ContractDefinition","nodes":[{"functionSelector":"ac8288c0","id":10,"implemented":false,"kind":"function","modifiers":[],"name":"getArbitrumFees","nodeType":"FunctionDefinition","parameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"782:2:0"},"returnParameters":{"id":9,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":10,"src":"845:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3,"name":"uint256","nodeType":"ElementaryTypeName","src":"845:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":10,"src":"875:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5,"name":"uint256","nodeType":"ElementaryTypeName","src":"875:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":10,"src":"905:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7,"name":"uint256","nodeType":"ElementaryTypeName","src":"905:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"831:109:0"},"scope":20,"src":"758:183:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e9bde604","id":19,"implemented":false,"kind":"function","modifiers":[],"name":"setArbitrumFees","nodeType":"FunctionDefinition","parameters":{"id":17,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":19,"src":"981:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":11,"name":"uint64","nodeType":"ElementaryTypeName","src":"981:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":14,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":19,"src":"1006:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":13,"name":"uint64","nodeType":"ElementaryTypeName","src":"1006:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":16,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":19,"src":"1031:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":15,"name":"uint64","nodeType":"ElementaryTypeName","src":"1031:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"971:90:0"},"returnParameters":{"id":18,"nodeType":"ParameterList","parameters":[],"src":"1070:0:0"},"scope":20,"src":"947:124:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":21,"src":"721:352:0"}],"src":"688:386:0"},"id":0},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","exportedSymbols":{"IAuthorizerAdaptor":[49]},"id":50,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":22,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:1"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":23,"nodeType":"ImportDirective","scope":50,"sourceUnit":2260,"src":"721:55:1","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":24,"nodeType":"ImportDirective","scope":50,"sourceUnit":3052,"src":"777:29:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":25,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":2259,"src":"840:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$2259","typeString":"contract IAuthentication"}},"id":26,"nodeType":"InheritanceSpecifier","src":"840:15:1"}],"contractDependencies":[2259],"contractKind":"interface","fullyImplemented":false,"id":49,"linearizedBaseContracts":[49,2259],"name":"IAuthorizerAdaptor","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":27,"nodeType":"StructuredDocumentation","src":"862:53:1","text":" @notice Returns the Balancer Vault"},"functionSelector":"8d928af8","id":32,"implemented":false,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":28,"nodeType":"ParameterList","parameters":[],"src":"937:2:1"},"returnParameters":{"id":31,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32,"src":"963:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":29,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"963:6:1","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"962:8:1"},"scope":49,"src":"920:51:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":33,"nodeType":"StructuredDocumentation","src":"977:49:1","text":" @notice Returns the Authorizer"},"functionSelector":"aaabadc5","id":38,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":34,"nodeType":"ParameterList","parameters":[],"src":"1053:2:1"},"returnParameters":{"id":37,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":38,"src":"1079:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":35,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"1079:11:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1078:13:1"},"scope":49,"src":"1031:61:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":39,"nodeType":"StructuredDocumentation","src":"1098:331:1","text":" @notice Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\n @param target - Address of the contract to be called\n @param data - Calldata to be sent to the target contract\n @return The bytes encoded return value from the performed function call"},"functionSelector":"4036176a","id":48,"implemented":false,"kind":"function","modifiers":[],"name":"performAction","nodeType":"FunctionDefinition","parameters":{"id":44,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":48,"src":"1457:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40,"name":"address","nodeType":"ElementaryTypeName","src":"1457:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":48,"src":"1473:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":42,"name":"bytes","nodeType":"ElementaryTypeName","src":"1473:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1456:37:1"},"returnParameters":{"id":47,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":48,"src":"1520:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":45,"name":"bytes","nodeType":"ElementaryTypeName","src":"1520:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1519:14:1"},"scope":49,"src":"1434:100:1","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":50,"src":"808:728:1"}],"src":"688:849:1"},"id":1},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","exportedSymbols":{"IAuthorizerAdaptorEntrypoint":[62]},"id":63,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":51,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:2"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","file":"./IAuthorizerAdaptor.sol","id":52,"nodeType":"ImportDirective","scope":63,"sourceUnit":50,"src":"721:34:2","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":54,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"863:18:2","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":55,"nodeType":"InheritanceSpecifier","src":"863:18:2"}],"contractDependencies":[49,2259],"contractKind":"interface","documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"757:63:2","text":" @notice Interface for `AuthorizerAdaptorEntrypoint`."},"fullyImplemented":false,"id":62,"linearizedBaseContracts":[62,49,2259],"name":"IAuthorizerAdaptorEntrypoint","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":56,"nodeType":"StructuredDocumentation","src":"888:57:2","text":" @notice Returns the Authorizer Adaptor"},"functionSelector":"e758d36b","id":61,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizerAdaptor","nodeType":"FunctionDefinition","parameters":{"id":57,"nodeType":"ParameterList","parameters":[],"src":"979:2:2"},"returnParameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":61,"src":"1005:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":58,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1005:18:2","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"1004:20:2"},"scope":62,"src":"950:75:2","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":63,"src":"821:206:2"}],"src":"688:340:2"},"id":2},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","exportedSymbols":{"IBalancerMinter":[197]},"id":198,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":64,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:3"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":65,"nodeType":"ImportDirective","scope":198,"sourceUnit":2448,"src":"721:51:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":66,"nodeType":"StructuredDocumentation","src":"774:89:3","text":" @dev Base minter interface, applicable to Mainnet minter or L2 pseudo minters."},"fullyImplemented":false,"id":197,"linearizedBaseContracts":[197],"name":"IBalancerMinter","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":74,"name":"Minted","nodeType":"EventDefinition","parameters":{"id":73,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":74,"src":"909:25:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67,"name":"address","nodeType":"ElementaryTypeName","src":"909:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":70,"indexed":false,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":74,"src":"936:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69,"name":"address","nodeType":"ElementaryTypeName","src":"936:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":72,"indexed":false,"mutability":"mutable","name":"minted","nodeType":"VariableDeclaration","scope":74,"src":"951:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71,"name":"uint256","nodeType":"ElementaryTypeName","src":"951:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"908:58:3"},"src":"896:71:3"},{"documentation":{"id":75,"nodeType":"StructuredDocumentation","src":"973:79:3","text":" @notice Returns the address of the Balancer Governance Token"},"functionSelector":"c0039699","id":80,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":76,"nodeType":"ParameterList","parameters":[],"src":"1082:2:3"},"returnParameters":{"id":79,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":80,"src":"1108:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":77,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1108:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1107:8:3"},"scope":197,"src":"1057:59:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":81,"nodeType":"StructuredDocumentation","src":"1122:162:3","text":" @notice Mint everything which belongs to `msg.sender` and send to them\n @param gauge `LiquidityGauge` address to get mintable amount from"},"functionSelector":"6a627842","id":88,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":84,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":88,"src":"1303:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82,"name":"address","nodeType":"ElementaryTypeName","src":"1303:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1302:15:3"},"returnParameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":88,"src":"1336:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1335:9:3"},"scope":197,"src":"1289:56:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":89,"nodeType":"StructuredDocumentation","src":"1351:151:3","text":" @notice Mint everything which belongs to `msg.sender` across multiple gauges\n @param gauges List of `LiquidityGauge` addresses"},"functionSelector":"397ada21","id":97,"implemented":false,"kind":"function","modifiers":[],"name":"mintMany","nodeType":"FunctionDefinition","parameters":{"id":93,"nodeType":"ParameterList","parameters":[{"constant":false,"id":92,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":97,"src":"1525:25:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":90,"name":"address","nodeType":"ElementaryTypeName","src":"1525:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":91,"nodeType":"ArrayTypeName","src":"1525:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1524:27:3"},"returnParameters":{"id":96,"nodeType":"ParameterList","parameters":[{"constant":false,"id":95,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":97,"src":"1570:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"1570:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1569:9:3"},"scope":197,"src":"1507:72:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":98,"nodeType":"StructuredDocumentation","src":"1585:256:3","text":" @notice Mint tokens for `user`\n @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n @param gauge `LiquidityGauge` address to get mintable amount from\n @param user Address to mint to"},"functionSelector":"7504a15d","id":107,"implemented":false,"kind":"function","modifiers":[],"name":"mintFor","nodeType":"FunctionDefinition","parameters":{"id":103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":100,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":107,"src":"1863:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":99,"name":"address","nodeType":"ElementaryTypeName","src":"1863:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":102,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":107,"src":"1878:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":101,"name":"address","nodeType":"ElementaryTypeName","src":"1878:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1862:29:3"},"returnParameters":{"id":106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":105,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":107,"src":"1910:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1910:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1909:9:3"},"scope":197,"src":"1846:73:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":108,"nodeType":"StructuredDocumentation","src":"1925:262:3","text":" @notice Mint tokens for `user` across multiple gauges\n @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n @param gauges List of `LiquidityGauge` addresses\n @param user Address to mint to"},"functionSelector":"3b9f7384","id":118,"implemented":false,"kind":"function","modifiers":[],"name":"mintManyFor","nodeType":"FunctionDefinition","parameters":{"id":114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":111,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":118,"src":"2213:25:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":109,"name":"address","nodeType":"ElementaryTypeName","src":"2213:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":110,"nodeType":"ArrayTypeName","src":"2213:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":113,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":118,"src":"2240:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":112,"name":"address","nodeType":"ElementaryTypeName","src":"2240:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2212:41:3"},"returnParameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":118,"src":"2272:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":115,"name":"uint256","nodeType":"ElementaryTypeName","src":"2272:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2271:9:3"},"scope":197,"src":"2192:89:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"2287:84:3","text":" @notice The total number of tokens minted for `user` from `gauge`"},"functionSelector":"8b752bb0","id":128,"implemented":false,"kind":"function","modifiers":[],"name":"minted","nodeType":"FunctionDefinition","parameters":{"id":124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":128,"src":"2392:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"2392:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":123,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":128,"src":"2406:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":122,"name":"address","nodeType":"ElementaryTypeName","src":"2406:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2391:29:3"},"returnParameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":128,"src":"2444:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":125,"name":"uint256","nodeType":"ElementaryTypeName","src":"2444:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2443:9:3"},"scope":197,"src":"2376:77:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"2459:81:3","text":" @notice Whether `minter` is approved to mint tokens for `user`"},"functionSelector":"3c543bc6","id":138,"implemented":false,"kind":"function","modifiers":[],"name":"getMinterApproval","nodeType":"FunctionDefinition","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":138,"src":"2572:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":130,"name":"address","nodeType":"ElementaryTypeName","src":"2572:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":138,"src":"2588:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":132,"name":"address","nodeType":"ElementaryTypeName","src":"2588:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2571:30:3"},"returnParameters":{"id":137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":136,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":138,"src":"2625:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":135,"name":"bool","nodeType":"ElementaryTypeName","src":"2625:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2624:6:3"},"scope":197,"src":"2545:86:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"2637:89:3","text":" @notice Set whether `minter` is approved to mint tokens on your behalf"},"functionSelector":"0de54ba0","id":146,"implemented":false,"kind":"function","modifiers":[],"name":"setMinterApproval","nodeType":"FunctionDefinition","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":146,"src":"2758:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"2758:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":146,"src":"2774:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":142,"name":"bool","nodeType":"ElementaryTypeName","src":"2774:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2757:31:3"},"returnParameters":{"id":145,"nodeType":"ParameterList","parameters":[],"src":"2797:0:3"},"scope":197,"src":"2731:67:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":147,"nodeType":"StructuredDocumentation","src":"2804:145:3","text":" @notice Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing\n them."},"functionSelector":"c6542794","id":164,"implemented":false,"kind":"function","modifiers":[],"name":"setMinterApprovalWithSignature","nodeType":"FunctionDefinition","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":149,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":164,"src":"3003:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":148,"name":"address","nodeType":"ElementaryTypeName","src":"3003:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":151,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":164,"src":"3027:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":150,"name":"bool","nodeType":"ElementaryTypeName","src":"3027:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":153,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":164,"src":"3050:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":152,"name":"address","nodeType":"ElementaryTypeName","src":"3050:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":155,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":164,"src":"3072:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":154,"name":"uint256","nodeType":"ElementaryTypeName","src":"3072:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":157,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":164,"src":"3098:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":156,"name":"uint8","nodeType":"ElementaryTypeName","src":"3098:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":159,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":164,"src":"3115:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":158,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3115:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":164,"src":"3134:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":160,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3134:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2993:156:3"},"returnParameters":{"id":163,"nodeType":"ParameterList","parameters":[],"src":"3158:0:3"},"scope":197,"src":"2954:205:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":165,"nodeType":"StructuredDocumentation","src":"3379:81:3","text":" @notice Whether `minter` is approved to mint tokens for `user`"},"functionSelector":"a0990033","id":174,"implemented":false,"kind":"function","modifiers":[],"name":"allowed_to_mint_for","nodeType":"FunctionDefinition","parameters":{"id":170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":167,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":174,"src":"3494:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":166,"name":"address","nodeType":"ElementaryTypeName","src":"3494:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":169,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":174,"src":"3510:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":168,"name":"address","nodeType":"ElementaryTypeName","src":"3510:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3493:30:3"},"returnParameters":{"id":173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":172,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":174,"src":"3547:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":171,"name":"bool","nodeType":"ElementaryTypeName","src":"3547:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3546:6:3"},"scope":197,"src":"3465:88:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"3559:247:3","text":" @notice Mint everything which belongs to `msg.sender` across multiple gauges\n @dev This function is not recommended as `mintMany()` is more flexible and gas efficient\n @param gauges List of `LiquidityGauge` addresses"},"functionSelector":"a51e1904","id":182,"implemented":false,"kind":"function","modifiers":[],"name":"mint_many","nodeType":"FunctionDefinition","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":179,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":182,"src":"3830:26:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_calldata_ptr","typeString":"address[8]"},"typeName":{"baseType":{"id":176,"name":"address","nodeType":"ElementaryTypeName","src":"3830:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":178,"length":{"hexValue":"38","id":177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3838:1:3","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"ArrayTypeName","src":"3830:10:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_storage_ptr","typeString":"address[8]"}},"visibility":"internal"}],"src":"3829:28:3"},"returnParameters":{"id":181,"nodeType":"ParameterList","parameters":[],"src":"3866:0:3"},"scope":197,"src":"3811:56:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":183,"nodeType":"StructuredDocumentation","src":"3873:256:3","text":" @notice Mint tokens for `user`\n @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n @param gauge `LiquidityGauge` address to get mintable amount from\n @param user Address to mint to"},"functionSelector":"27f18ae3","id":190,"implemented":false,"kind":"function","modifiers":[],"name":"mint_for","nodeType":"FunctionDefinition","parameters":{"id":188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":185,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":190,"src":"4152:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":184,"name":"address","nodeType":"ElementaryTypeName","src":"4152:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":187,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":190,"src":"4167:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":186,"name":"address","nodeType":"ElementaryTypeName","src":"4167:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4151:29:3"},"returnParameters":{"id":189,"nodeType":"ParameterList","parameters":[],"src":"4189:0:3"},"scope":197,"src":"4134:56:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":191,"nodeType":"StructuredDocumentation","src":"4196:88:3","text":" @notice Toggle whether `minter` is approved to mint tokens for `user`"},"functionSelector":"dd289d60","id":196,"implemented":false,"kind":"function","modifiers":[],"name":"toggle_approve_mint","nodeType":"FunctionDefinition","parameters":{"id":194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":193,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":196,"src":"4318:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":192,"name":"address","nodeType":"ElementaryTypeName","src":"4318:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4317:16:3"},"returnParameters":{"id":195,"nodeType":"ParameterList","parameters":[],"src":"4342:0:3"},"scope":197,"src":"4289:54:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":198,"src":"864:3481:3"}],"src":"688:3658:3"},"id":3},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","exportedSymbols":{"IBalancerToken":[274]},"id":275,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":199,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:4"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":200,"nodeType":"ImportDirective","scope":275,"sourceUnit":2448,"src":"721:51:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":201,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"802:6:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":202,"nodeType":"InheritanceSpecifier","src":"802:6:4"}],"contractDependencies":[2447],"contractKind":"interface","fullyImplemented":false,"id":274,"linearizedBaseContracts":[274,2447],"name":"IBalancerToken","nodeType":"ContractDefinition","nodes":[{"functionSelector":"40c10f19","id":209,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":204,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":209,"src":"829:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":203,"name":"address","nodeType":"ElementaryTypeName","src":"829:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":206,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":209,"src":"841:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":205,"name":"uint256","nodeType":"ElementaryTypeName","src":"841:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"828:28:4"},"returnParameters":{"id":208,"nodeType":"ParameterList","parameters":[],"src":"865:0:4"},"scope":274,"src":"815:51:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ca15c873","id":216,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleMemberCount","nodeType":"FunctionDefinition","parameters":{"id":212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":211,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":216,"src":"900:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":210,"name":"bytes32","nodeType":"ElementaryTypeName","src":"900:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"899:14:4"},"returnParameters":{"id":215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":214,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":216,"src":"937:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":213,"name":"uint256","nodeType":"ElementaryTypeName","src":"937:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"936:9:4"},"scope":274,"src":"872:74:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9010d07c","id":225,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleMember","nodeType":"FunctionDefinition","parameters":{"id":221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":218,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":225,"src":"975:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":217,"name":"bytes32","nodeType":"ElementaryTypeName","src":"975:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":220,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":225,"src":"989:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":219,"name":"uint256","nodeType":"ElementaryTypeName","src":"989:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"974:29:4"},"returnParameters":{"id":224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":223,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":225,"src":"1027:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":222,"name":"address","nodeType":"ElementaryTypeName","src":"1027:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1026:9:4"},"scope":274,"src":"952:84:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"91d14854","id":234,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nodeType":"FunctionDefinition","parameters":{"id":230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":227,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":234,"src":"1059:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":226,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1059:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":229,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":234,"src":"1073:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":228,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1058:31:4"},"returnParameters":{"id":233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":232,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":234,"src":"1113:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":231,"name":"bool","nodeType":"ElementaryTypeName","src":"1113:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1112:6:4"},"scope":274,"src":"1042:77:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"248a9ca3","id":241,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nodeType":"FunctionDefinition","parameters":{"id":237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":236,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":241,"src":"1147:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":235,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1147:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1146:14:4"},"returnParameters":{"id":240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":239,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":241,"src":"1184:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":238,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1184:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1183:9:4"},"scope":274,"src":"1125:68:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2f2ff15d","id":248,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nodeType":"FunctionDefinition","parameters":{"id":246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":243,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":248,"src":"1218:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":242,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1218:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":245,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":248,"src":"1232:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":244,"name":"address","nodeType":"ElementaryTypeName","src":"1232:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1217:31:4"},"returnParameters":{"id":247,"nodeType":"ParameterList","parameters":[],"src":"1257:0:4"},"scope":274,"src":"1199:59:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d547741f","id":255,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nodeType":"FunctionDefinition","parameters":{"id":253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":250,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":255,"src":"1284:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":249,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1284:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":252,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":255,"src":"1298:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":251,"name":"address","nodeType":"ElementaryTypeName","src":"1298:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1283:31:4"},"returnParameters":{"id":254,"nodeType":"ParameterList","parameters":[],"src":"1323:0:4"},"scope":274,"src":"1264:60:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a217fddf","id":260,"implemented":false,"kind":"function","modifiers":[],"name":"DEFAULT_ADMIN_ROLE","nodeType":"FunctionDefinition","parameters":{"id":256,"nodeType":"ParameterList","parameters":[],"src":"1410:2:4"},"returnParameters":{"id":259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":260,"src":"1436:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":257,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1436:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1435:9:4"},"scope":274,"src":"1383:62:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d5391393","id":265,"implemented":false,"kind":"function","modifiers":[],"name":"MINTER_ROLE","nodeType":"FunctionDefinition","parameters":{"id":261,"nodeType":"ParameterList","parameters":[],"src":"1524:2:4"},"returnParameters":{"id":264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":263,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":265,"src":"1550:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":262,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1550:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1549:9:4"},"scope":274,"src":"1504:55:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7028e2cd","id":270,"implemented":false,"kind":"function","modifiers":[],"name":"SNAPSHOT_ROLE","nodeType":"FunctionDefinition","parameters":{"id":266,"nodeType":"ParameterList","parameters":[],"src":"1640:2:4"},"returnParameters":{"id":269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":268,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":270,"src":"1666:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":267,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1666:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1665:9:4"},"scope":274,"src":"1618:57:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9711715a","id":273,"implemented":false,"kind":"function","modifiers":[],"name":"snapshot","nodeType":"FunctionDefinition","parameters":{"id":271,"nodeType":"ParameterList","parameters":[],"src":"1698:2:4"},"returnParameters":{"id":272,"nodeType":"ParameterList","parameters":[],"src":"1709:0:4"},"scope":274,"src":"1681:29:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":275,"src":"774:938:4"}],"src":"688:1025:4"},"id":4},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","exportedSymbols":{"IBalancerTokenAdmin":[327]},"id":328,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":276,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:5"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":277,"nodeType":"ImportDirective","scope":328,"sourceUnit":2260,"src":"721:55:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","file":"./IBalancerToken.sol","id":278,"nodeType":"ImportDirective","scope":328,"sourceUnit":275,"src":"778:30:5","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":279,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":2259,"src":"843:15:5","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$2259","typeString":"contract IAuthentication"}},"id":280,"nodeType":"InheritanceSpecifier","src":"843:15:5"}],"contractDependencies":[2259],"contractKind":"interface","fullyImplemented":false,"id":327,"linearizedBaseContracts":[327,2259],"name":"IBalancerTokenAdmin","nodeType":"ContractDefinition","nodes":[{"functionSelector":"4dbac733","id":285,"implemented":false,"kind":"function","modifiers":[],"name":"INITIAL_RATE","nodeType":"FunctionDefinition","parameters":{"id":281,"nodeType":"ParameterList","parameters":[],"src":"929:2:5"},"returnParameters":{"id":284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":283,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":285,"src":"955:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":282,"name":"uint256","nodeType":"ElementaryTypeName","src":"955:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"954:9:5"},"scope":327,"src":"908:56:5","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b87b5616","id":290,"implemented":false,"kind":"function","modifiers":[],"name":"RATE_REDUCTION_TIME","nodeType":"FunctionDefinition","parameters":{"id":286,"nodeType":"ParameterList","parameters":[],"src":"998:2:5"},"returnParameters":{"id":289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":288,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":290,"src":"1024:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":287,"name":"uint256","nodeType":"ElementaryTypeName","src":"1024:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1023:9:5"},"scope":327,"src":"970:63:5","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"21609bbf","id":295,"implemented":false,"kind":"function","modifiers":[],"name":"RATE_REDUCTION_COEFFICIENT","nodeType":"FunctionDefinition","parameters":{"id":291,"nodeType":"ParameterList","parameters":[],"src":"1074:2:5"},"returnParameters":{"id":294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":293,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":295,"src":"1100:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":292,"name":"uint256","nodeType":"ElementaryTypeName","src":"1100:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1099:9:5"},"scope":327,"src":"1039:70:5","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7efad8e0","id":300,"implemented":false,"kind":"function","modifiers":[],"name":"RATE_DENOMINATOR","nodeType":"FunctionDefinition","parameters":{"id":296,"nodeType":"ParameterList","parameters":[],"src":"1140:2:5"},"returnParameters":{"id":299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":298,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":300,"src":"1166:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":297,"name":"uint256","nodeType":"ElementaryTypeName","src":"1166:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1165:9:5"},"scope":327,"src":"1115:60:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":301,"nodeType":"StructuredDocumentation","src":"1224:79:5","text":" @notice Returns the address of the Balancer Governance Token"},"functionSelector":"c0039699","id":306,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":302,"nodeType":"ParameterList","parameters":[],"src":"1333:2:5"},"returnParameters":{"id":305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":304,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":306,"src":"1359:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"},"typeName":{"id":303,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":274,"src":"1359:14:5","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"1358:16:5"},"scope":327,"src":"1308:67:5","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0f15f4c0","id":309,"implemented":false,"kind":"function","modifiers":[],"name":"activate","nodeType":"FunctionDefinition","parameters":{"id":307,"nodeType":"ParameterList","parameters":[],"src":"1398:2:5"},"returnParameters":{"id":308,"nodeType":"ParameterList","parameters":[],"src":"1409:0:5"},"scope":327,"src":"1381:29:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2c4e722e","id":314,"implemented":false,"kind":"function","modifiers":[],"name":"rate","nodeType":"FunctionDefinition","parameters":{"id":310,"nodeType":"ParameterList","parameters":[],"src":"1429:2:5"},"returnParameters":{"id":313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":312,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":314,"src":"1455:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":311,"name":"uint256","nodeType":"ElementaryTypeName","src":"1455:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1454:9:5"},"scope":327,"src":"1416:48:5","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a228bced","id":319,"implemented":false,"kind":"function","modifiers":[],"name":"startEpochTimeWrite","nodeType":"FunctionDefinition","parameters":{"id":315,"nodeType":"ParameterList","parameters":[],"src":"1498:2:5"},"returnParameters":{"id":318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":317,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":319,"src":"1519:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":316,"name":"uint256","nodeType":"ElementaryTypeName","src":"1519:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1518:9:5"},"scope":327,"src":"1470:58:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"40c10f19","id":326,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":321,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":326,"src":"1548:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":320,"name":"address","nodeType":"ElementaryTypeName","src":"1548:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":323,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":326,"src":"1560:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":322,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1547:28:5"},"returnParameters":{"id":325,"nodeType":"ParameterList","parameters":[],"src":"1584:0:5"},"scope":327,"src":"1534:51:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":328,"src":"810:777:5"}],"src":"688:900:5"},"id":5},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","exportedSymbols":{"IChildChainGauge":[364]},"id":365,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":329,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:6"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol","file":"../solidity-utils/helpers/IVersion.sol","id":330,"nodeType":"ImportDirective","scope":365,"sourceUnit":2341,"src":"721:48:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","file":"./ILiquidityGaugeFactory.sol","id":331,"nodeType":"ImportDirective","scope":365,"sourceUnit":942,"src":"770:38:6","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":332,"name":"IVersion","nodeType":"UserDefinedTypeName","referencedDeclaration":2340,"src":"1063:8:6","typeDescriptions":{"typeIdentifier":"t_contract$_IVersion_$2340","typeString":"contract IVersion"}},"id":333,"nodeType":"InheritanceSpecifier","src":"1063:8:6"}],"contractDependencies":[2340],"contractKind":"interface","fullyImplemented":false,"id":364,"linearizedBaseContracts":[364,2340],"name":"IChildChainGauge","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":334,"nodeType":"StructuredDocumentation","src":"1078:159:6","text":" @notice Proxy constructor.\n @param lpToken Pool allowed to stake in this gauge.\n @param version Gauge version string identifier."},"functionSelector":"f399e22e","id":341,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":336,"mutability":"mutable","name":"lpToken","nodeType":"VariableDeclaration","scope":341,"src":"1262:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":335,"name":"address","nodeType":"ElementaryTypeName","src":"1262:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":338,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":341,"src":"1279:21:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":337,"name":"string","nodeType":"ElementaryTypeName","src":"1279:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1261:40:6"},"returnParameters":{"id":340,"nodeType":"ParameterList","parameters":[],"src":"1310:0:6"},"scope":364,"src":"1242:69:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":342,"nodeType":"StructuredDocumentation","src":"1317:201:6","text":" @notice Returns BAL liquidity emissions calculated during checkpoints for the given user.\n @param user User address.\n @return uint256 BAL amount to issue for the address."},"functionSelector":"09400707","id":349,"implemented":false,"kind":"function","modifiers":[],"name":"integrate_fraction","nodeType":"FunctionDefinition","parameters":{"id":345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":344,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":349,"src":"1551:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":343,"name":"address","nodeType":"ElementaryTypeName","src":"1551:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1550:14:6"},"returnParameters":{"id":348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":347,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":349,"src":"1588:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":346,"name":"uint256","nodeType":"ElementaryTypeName","src":"1588:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1587:9:6"},"scope":364,"src":"1523:74:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":350,"nodeType":"StructuredDocumentation","src":"1603:131:6","text":" @notice Records a checkpoint for a given user.\n @param user User address.\n @return bool Always true."},"functionSelector":"4b820093","id":357,"implemented":false,"kind":"function","modifiers":[],"name":"user_checkpoint","nodeType":"FunctionDefinition","parameters":{"id":353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":352,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":357,"src":"1764:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":351,"name":"address","nodeType":"ElementaryTypeName","src":"1764:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1763:14:6"},"returnParameters":{"id":356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":357,"src":"1796:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":354,"name":"bool","nodeType":"ElementaryTypeName","src":"1796:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1795:6:6"},"scope":364,"src":"1739:63:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":358,"nodeType":"StructuredDocumentation","src":"1808:57:6","text":" @notice Returns gauge factory address."},"functionSelector":"c45a0155","id":363,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nodeType":"FunctionDefinition","parameters":{"id":359,"nodeType":"ParameterList","parameters":[],"src":"1886:2:6"},"returnParameters":{"id":362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":361,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":363,"src":"1912:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":360,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"1912:22:6","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"1911:24:6"},"scope":364,"src":"1870:66:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":365,"src":"1033:905:6"}],"src":"688:1251:6"},"id":6},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol","exportedSymbols":{"IChildChainLiquidityGaugeFactory":[434]},"id":435,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":366,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:7"},{"id":367,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:7"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol","file":"./IChildChainStreamer.sol","id":368,"nodeType":"ImportDirective","scope":435,"sourceUnit":463,"src":"755:35:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"./ILiquidityGauge.sol","id":369,"nodeType":"ImportDirective","scope":435,"sourceUnit":929,"src":"791:31:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","file":"./ILiquidityGaugeFactory.sol","id":370,"nodeType":"ImportDirective","scope":435,"sourceUnit":942,"src":"823:38:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol","file":"./IRewardsOnlyGauge.sol","id":371,"nodeType":"ImportDirective","scope":435,"sourceUnit":1206,"src":"862:33:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":372,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"943:22:7","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":373,"nodeType":"InheritanceSpecifier","src":"943:22:7"}],"contractDependencies":[941],"contractKind":"interface","fullyImplemented":false,"id":434,"linearizedBaseContracts":[434,941],"name":"IChildChainLiquidityGaugeFactory","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":381,"name":"RewardsOnlyGaugeCreated","nodeType":"EventDefinition","parameters":{"id":380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":375,"indexed":true,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":381,"src":"1002:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":374,"name":"address","nodeType":"ElementaryTypeName","src":"1002:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":377,"indexed":true,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":381,"src":"1025:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":376,"name":"address","nodeType":"ElementaryTypeName","src":"1025:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":379,"indexed":false,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":381,"src":"1047:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":378,"name":"address","nodeType":"ElementaryTypeName","src":"1047:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1001:63:7"},"src":"972:93:7"},{"documentation":{"id":382,"nodeType":"StructuredDocumentation","src":"1071:96:7","text":" @notice Returns the address of the implementation used for gauge deployments."},"functionSelector":"39312dee","id":387,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeImplementation","nodeType":"FunctionDefinition","parameters":{"id":383,"nodeType":"ParameterList","parameters":[],"src":"1203:2:7"},"returnParameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":385,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":387,"src":"1229:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"},"typeName":{"id":384,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"1229:15:7","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"visibility":"internal"}],"src":"1228:17:7"},"scope":434,"src":"1172:74:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":388,"nodeType":"StructuredDocumentation","src":"1252:99:7","text":" @notice Returns the address of the implementation used for streamer deployments."},"functionSelector":"f9e0a13e","id":393,"implemented":false,"kind":"function","modifiers":[],"name":"getChildChainStreamerImplementation","nodeType":"FunctionDefinition","parameters":{"id":389,"nodeType":"ParameterList","parameters":[],"src":"1400:2:7"},"returnParameters":{"id":392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":391,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":393,"src":"1426:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":390,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"1426:19:7","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"internal"}],"src":"1425:21:7"},"scope":434,"src":"1356:91:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":394,"nodeType":"StructuredDocumentation","src":"1453:80:7","text":" @notice Returns the address of the gauge belonging to `pool`."},"functionSelector":"a8ea6875","id":401,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolGauge","nodeType":"FunctionDefinition","parameters":{"id":397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":396,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":401,"src":"1560:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":395,"name":"address","nodeType":"ElementaryTypeName","src":"1560:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1559:14:7"},"returnParameters":{"id":400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":399,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":401,"src":"1597:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"},"typeName":{"id":398,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"1597:15:7","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"visibility":"internal"}],"src":"1596:17:7"},"scope":434,"src":"1538:76:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":402,"nodeType":"StructuredDocumentation","src":"1620:84:7","text":" @notice Returns the address of the streamer belonging to `gauge`."},"functionSelector":"90b20087","id":409,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeStreamer","nodeType":"FunctionDefinition","parameters":{"id":405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":404,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":409,"src":"1735:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":403,"name":"address","nodeType":"ElementaryTypeName","src":"1735:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1734:15:7"},"returnParameters":{"id":408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":407,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":409,"src":"1773:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":406,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1772:9:7"},"scope":434,"src":"1709:73:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":410,"nodeType":"StructuredDocumentation","src":"1788:82:7","text":" @notice Returns true if `streamer` was created by this factory."},"functionSelector":"cbda9327","id":417,"implemented":false,"kind":"function","modifiers":[],"name":"isStreamerFromFactory","nodeType":"FunctionDefinition","parameters":{"id":413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":412,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":417,"src":"1906:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":411,"name":"address","nodeType":"ElementaryTypeName","src":"1906:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1905:18:7"},"returnParameters":{"id":416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":415,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":417,"src":"1947:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":414,"name":"bool","nodeType":"ElementaryTypeName","src":"1947:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1946:6:7"},"scope":434,"src":"1875:78:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":418,"nodeType":"StructuredDocumentation","src":"1959:81:7","text":" @notice Returns the address of the pool which `gauge` belongs."},"functionSelector":"744a65dd","id":425,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugePool","nodeType":"FunctionDefinition","parameters":{"id":421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":420,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":425,"src":"2067:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":419,"name":"address","nodeType":"ElementaryTypeName","src":"2067:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2066:15:7"},"returnParameters":{"id":424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":423,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":425,"src":"2105:6:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":422,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2105:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2104:8:7"},"scope":434,"src":"2045:68:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":426,"nodeType":"StructuredDocumentation","src":"2119:91:7","text":" @notice Returns the address of the streamer belonging to `pool`'s gauge."},"functionSelector":"8a4ffeb0","id":433,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolStreamer","nodeType":"FunctionDefinition","parameters":{"id":429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":428,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":433,"src":"2240:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":427,"name":"address","nodeType":"ElementaryTypeName","src":"2240:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2239:14:7"},"returnParameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":431,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":433,"src":"2277:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":430,"name":"address","nodeType":"ElementaryTypeName","src":"2277:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2276:9:7"},"scope":434,"src":"2215:71:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":435,"src":"897:1391:7"}],"src":"688:1601:7"},"id":7},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol","exportedSymbols":{"IChildChainStreamer":[462]},"id":463,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":436,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:8"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":437,"nodeType":"ImportDirective","scope":463,"sourceUnit":2448,"src":"721:51:8","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":462,"linearizedBaseContracts":[462],"name":"IChildChainStreamer","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c4d66de8","id":442,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":439,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":442,"src":"1008:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":438,"name":"address","nodeType":"ElementaryTypeName","src":"1008:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1007:15:8"},"returnParameters":{"id":441,"nodeType":"ParameterList","parameters":[],"src":"1031:0:8"},"scope":462,"src":"988:44:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1afe22a6","id":445,"implemented":false,"kind":"function","modifiers":[],"name":"get_reward","nodeType":"FunctionDefinition","parameters":{"id":443,"nodeType":"ParameterList","parameters":[],"src":"1057:2:8"},"returnParameters":{"id":444,"nodeType":"ParameterList","parameters":[],"src":"1068:0:8"},"scope":462,"src":"1038:31:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"54c49fe9","id":452,"implemented":false,"kind":"function","modifiers":[],"name":"reward_tokens","nodeType":"FunctionDefinition","parameters":{"id":448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":452,"src":"1098:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"1098:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1097:15:8"},"returnParameters":{"id":451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":450,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":452,"src":"1136:6:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":449,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1136:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1135:8:8"},"scope":462,"src":"1075:69:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"661ab0b2","id":461,"implemented":false,"kind":"function","modifiers":[],"name":"add_reward","nodeType":"FunctionDefinition","parameters":{"id":459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":454,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":461,"src":"1179:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":453,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1179:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":456,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":461,"src":"1207:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":455,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":458,"mutability":"mutable","name":"duration","nodeType":"VariableDeclaration","scope":461,"src":"1236:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":457,"name":"uint256","nodeType":"ElementaryTypeName","src":"1236:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1169:89:8"},"returnParameters":{"id":460,"nodeType":"ParameterList","parameters":[],"src":"1267:0:8"},"scope":462,"src":"1150:118:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":463,"src":"952:318:8"}],"src":"688:583:8"},"id":8},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol","exportedSymbols":{"IFeeDistributor":[624]},"id":625,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":464,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:9"},{"id":465,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:9"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":466,"nodeType":"ImportDirective","scope":625,"sourceUnit":2448,"src":"755:51:9","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","file":"./IVotingEscrow.sol","id":467,"nodeType":"ImportDirective","scope":625,"sourceUnit":1560,"src":"808:29:9","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"839:490:9","text":" @title Fee Distributor\n @notice Distributes any tokens transferred to the contract (e.g. Protocol fees and any BAL emissions) among veBAL\n holders proportionally based on a snapshot of the week at which the tokens are sent to the FeeDistributor contract.\n @dev Supports distributing arbitrarily many different tokens. In order to start distributing a new token to veBAL\n holders simply transfer the tokens to the `FeeDistributor` contract and then call `checkpointToken`."},"fullyImplemented":false,"id":624,"linearizedBaseContracts":[624],"name":"IFeeDistributor","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":476,"name":"TokenCheckpointed","nodeType":"EventDefinition","parameters":{"id":475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"indexed":false,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":476,"src":"1386:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":469,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1386:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":472,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":476,"src":"1400:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"1400:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":474,"indexed":false,"mutability":"mutable","name":"lastCheckpointTimestamp","nodeType":"VariableDeclaration","scope":476,"src":"1416:31:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":473,"name":"uint256","nodeType":"ElementaryTypeName","src":"1416:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1385:63:9"},"src":"1362:87:9"},{"anonymous":false,"id":486,"name":"TokensClaimed","nodeType":"EventDefinition","parameters":{"id":485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":478,"indexed":false,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":486,"src":"1474:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":477,"name":"address","nodeType":"ElementaryTypeName","src":"1474:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":480,"indexed":false,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":486,"src":"1488:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":479,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1488:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":482,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":486,"src":"1502:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":481,"name":"uint256","nodeType":"ElementaryTypeName","src":"1502:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":484,"indexed":false,"mutability":"mutable","name":"userTokenTimeCursor","nodeType":"VariableDeclaration","scope":486,"src":"1518:27:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":483,"name":"uint256","nodeType":"ElementaryTypeName","src":"1518:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1473:73:9"},"src":"1454:93:9"},{"documentation":{"id":487,"nodeType":"StructuredDocumentation","src":"1553:74:9","text":" @notice Returns the VotingEscrow (veBAL) token contract"},"functionSelector":"08b0308a","id":492,"implemented":false,"kind":"function","modifiers":[],"name":"getVotingEscrow","nodeType":"FunctionDefinition","parameters":{"id":488,"nodeType":"ParameterList","parameters":[],"src":"1656:2:9"},"returnParameters":{"id":491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":490,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":492,"src":"1682:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":489,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"1682:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"src":"1681:15:9"},"scope":624,"src":"1632:65:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":493,"nodeType":"StructuredDocumentation","src":"1703:109:9","text":" @notice Returns the global time cursor representing the most earliest uncheckpointed week."},"functionSelector":"82aa5ad4","id":498,"implemented":false,"kind":"function","modifiers":[],"name":"getTimeCursor","nodeType":"FunctionDefinition","parameters":{"id":494,"nodeType":"ParameterList","parameters":[],"src":"1839:2:9"},"returnParameters":{"id":497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":496,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":498,"src":"1865:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":495,"name":"uint256","nodeType":"ElementaryTypeName","src":"1865:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1864:9:9"},"scope":624,"src":"1817:57:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":499,"nodeType":"StructuredDocumentation","src":"1880:168:9","text":" @notice Returns the user-level time cursor representing the most earliest uncheckpointed week.\n @param user - The address of the user to query."},"functionSelector":"876e69a1","id":506,"implemented":false,"kind":"function","modifiers":[],"name":"getUserTimeCursor","nodeType":"FunctionDefinition","parameters":{"id":502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":501,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":506,"src":"2080:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":500,"name":"address","nodeType":"ElementaryTypeName","src":"2080:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2079:14:9"},"returnParameters":{"id":505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":506,"src":"2117:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"2117:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2116:9:9"},"scope":624,"src":"2053:73:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":507,"nodeType":"StructuredDocumentation","src":"2132:185:9","text":" @notice Returns the token-level time cursor storing the timestamp at up to which tokens have been distributed.\n @param token - The ERC20 token address to query."},"functionSelector":"acbc1428","id":514,"implemented":false,"kind":"function","modifiers":[],"name":"getTokenTimeCursor","nodeType":"FunctionDefinition","parameters":{"id":510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":509,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":514,"src":"2350:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":508,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2350:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2349:14:9"},"returnParameters":{"id":513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":512,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":514,"src":"2387:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":511,"name":"uint256","nodeType":"ElementaryTypeName","src":"2387:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2386:9:9"},"scope":624,"src":"2322:74:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":515,"nodeType":"StructuredDocumentation","src":"2402:236:9","text":" @notice Returns the user-level time cursor storing the timestamp of the latest token distribution claimed.\n @param user - The address of the user to query.\n @param token - The ERC20 token address to query."},"functionSelector":"8050a7ee","id":524,"implemented":false,"kind":"function","modifiers":[],"name":"getUserTokenTimeCursor","nodeType":"FunctionDefinition","parameters":{"id":520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":517,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":524,"src":"2675:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":516,"name":"address","nodeType":"ElementaryTypeName","src":"2675:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":519,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":524,"src":"2689:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":518,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2689:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2674:28:9"},"returnParameters":{"id":523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":522,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":524,"src":"2726:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":521,"name":"uint256","nodeType":"ElementaryTypeName","src":"2726:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2725:9:9"},"scope":624,"src":"2643:92:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":525,"nodeType":"StructuredDocumentation","src":"2741:479:9","text":" @notice Returns the user's cached balance of veBAL as of the provided timestamp.\n @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n This function requires `user` to have been checkpointed past `timestamp` so that their balance is cached.\n @param user - The address of the user of which to read the cached balance of.\n @param timestamp - The timestamp at which to read the `user`'s cached balance at."},"functionSelector":"de681faf","id":534,"implemented":false,"kind":"function","modifiers":[],"name":"getUserBalanceAtTimestamp","nodeType":"FunctionDefinition","parameters":{"id":530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":527,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":534,"src":"3260:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":526,"name":"address","nodeType":"ElementaryTypeName","src":"3260:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":529,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":534,"src":"3274:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":528,"name":"uint256","nodeType":"ElementaryTypeName","src":"3274:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3259:33:9"},"returnParameters":{"id":533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":532,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":534,"src":"3316:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":531,"name":"uint256","nodeType":"ElementaryTypeName","src":"3316:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3315:9:9"},"scope":624,"src":"3225:100:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":535,"nodeType":"StructuredDocumentation","src":"3331:391:9","text":" @notice Returns the cached total supply of veBAL as of the provided timestamp.\n @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n This function requires the contract to have been checkpointed past `timestamp` so that the supply is cached.\n @param timestamp - The timestamp at which to read the cached total supply at."},"functionSelector":"4f3c5090","id":542,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalSupplyAtTimestamp","nodeType":"FunctionDefinition","parameters":{"id":538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":537,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":542,"src":"3762:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":536,"name":"uint256","nodeType":"ElementaryTypeName","src":"3762:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3761:19:9"},"returnParameters":{"id":541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":540,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":542,"src":"3804:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":539,"name":"uint256","nodeType":"ElementaryTypeName","src":"3804:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3803:9:9"},"scope":624,"src":"3727:86:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":543,"nodeType":"StructuredDocumentation","src":"3819:82:9","text":" @notice Returns the FeeDistributor's cached balance of `token`."},"functionSelector":"2308805b","id":550,"implemented":false,"kind":"function","modifiers":[],"name":"getTokenLastBalance","nodeType":"FunctionDefinition","parameters":{"id":546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":545,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":550,"src":"3935:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":544,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3935:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"3934:14:9"},"returnParameters":{"id":549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":548,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":550,"src":"3972:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":547,"name":"uint256","nodeType":"ElementaryTypeName","src":"3972:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3971:9:9"},"scope":624,"src":"3906:75:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":551,"nodeType":"StructuredDocumentation","src":"3987:280:9","text":" @notice Returns the amount of `token` which the FeeDistributor received in the week beginning at `timestamp`.\n @param token - The ERC20 token address to query.\n @param timestamp - The timestamp corresponding to the beginning of the week of interest."},"functionSelector":"d3dc4ca1","id":560,"implemented":false,"kind":"function","modifiers":[],"name":"getTokensDistributedInWeek","nodeType":"FunctionDefinition","parameters":{"id":556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":553,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":560,"src":"4308:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":552,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"4308:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":555,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":560,"src":"4322:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":554,"name":"uint256","nodeType":"ElementaryTypeName","src":"4322:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4307:33:9"},"returnParameters":{"id":559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":558,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":560,"src":"4364:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":557,"name":"uint256","nodeType":"ElementaryTypeName","src":"4364:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4363:9:9"},"scope":624,"src":"4272:101:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":561,"nodeType":"StructuredDocumentation","src":"4398:623:9","text":" @notice Deposits tokens to be distributed in the current week.\n @dev Sending tokens directly to the FeeDistributor instead of using `depositTokens` may result in tokens being\n retroactively distributed to past weeks, or for the distribution to carry over to future weeks.\n If for some reason `depositTokens` cannot be called, in order to ensure that all tokens are correctly distributed\n manually call `checkpointToken` before and after the token transfer.\n @param token - The ERC20 token address to distribute.\n @param amount - The amount of tokens to deposit."},"functionSelector":"338b5dea","id":568,"implemented":false,"kind":"function","modifiers":[],"name":"depositToken","nodeType":"FunctionDefinition","parameters":{"id":566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":563,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":568,"src":"5048:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":562,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"5048:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":565,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":568,"src":"5062:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":564,"name":"uint256","nodeType":"ElementaryTypeName","src":"5062:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5047:30:9"},"returnParameters":{"id":567,"nodeType":"ParameterList","parameters":[],"src":"5086:0:9"},"scope":624,"src":"5026:61:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":569,"nodeType":"StructuredDocumentation","src":"5093:352:9","text":" @notice Deposits tokens to be distributed in the current week.\n @dev A version of `depositToken` which supports depositing multiple `tokens` at once.\n See `depositToken` for more details.\n @param tokens - An array of ERC20 token addresses to distribute.\n @param amounts - An array of token amounts to deposit."},"functionSelector":"7b8d6221","id":578,"implemented":false,"kind":"function","modifiers":[],"name":"depositTokens","nodeType":"FunctionDefinition","parameters":{"id":576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":572,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":578,"src":"5473:24:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":570,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"5473:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":571,"nodeType":"ArrayTypeName","src":"5473:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":575,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":578,"src":"5499:26:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":573,"name":"uint256","nodeType":"ElementaryTypeName","src":"5499:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":574,"nodeType":"ArrayTypeName","src":"5499:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5472:54:9"},"returnParameters":{"id":577,"nodeType":"ParameterList","parameters":[],"src":"5535:0:9"},"scope":624,"src":"5450:86:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":579,"nodeType":"StructuredDocumentation","src":"5564:207:9","text":" @notice Caches the total supply of veBAL at the beginning of each week.\n This function will be called automatically before claiming tokens to ensure the contract is properly updated."},"functionSelector":"c2c4c5c1","id":582,"implemented":false,"kind":"function","modifiers":[],"name":"checkpoint","nodeType":"FunctionDefinition","parameters":{"id":580,"nodeType":"ParameterList","parameters":[],"src":"5795:2:9"},"returnParameters":{"id":581,"nodeType":"ParameterList","parameters":[],"src":"5806:0:9"},"scope":624,"src":"5776:31:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":583,"nodeType":"StructuredDocumentation","src":"5813:274:9","text":" @notice Caches the user's balance of veBAL at the beginning of each week.\n This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n @param user - The address of the user to be checkpointed."},"functionSelector":"14866e08","id":588,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointUser","nodeType":"FunctionDefinition","parameters":{"id":586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":585,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":588,"src":"6116:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":584,"name":"address","nodeType":"ElementaryTypeName","src":"6116:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6115:14:9"},"returnParameters":{"id":587,"nodeType":"ParameterList","parameters":[],"src":"6138:0:9"},"scope":624,"src":"6092:47:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":589,"nodeType":"StructuredDocumentation","src":"6145:509:9","text":" @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n @dev Any `token` balance held by the FeeDistributor above that which is returned by `getTokenLastBalance`\n will be distributed evenly across the time period since `token` was last checkpointed.\n This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n @param token - The ERC20 token address to be checkpointed."},"functionSelector":"3902b9bc","id":594,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointToken","nodeType":"FunctionDefinition","parameters":{"id":592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":591,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":594,"src":"6684:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":590,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"6684:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"6683:14:9"},"returnParameters":{"id":593,"nodeType":"ParameterList","parameters":[],"src":"6706:0:9"},"scope":624,"src":"6659:48:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":595,"nodeType":"StructuredDocumentation","src":"6713:325:9","text":" @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n @dev A version of `checkpointToken` which supports checkpointing multiple tokens.\n See `checkpointToken` for more details.\n @param tokens - An array of ERC20 token addresses to be checkpointed."},"functionSelector":"905d10ac","id":601,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointTokens","nodeType":"FunctionDefinition","parameters":{"id":599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":598,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":601,"src":"7069:24:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":596,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"7069:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":597,"nodeType":"ArrayTypeName","src":"7069:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"7068:26:9"},"returnParameters":{"id":600,"nodeType":"ParameterList","parameters":[],"src":"7103:0:9"},"scope":624,"src":"7043:61:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":602,"nodeType":"StructuredDocumentation","src":"7127:486:9","text":" @notice Claims all pending distributions of the provided token for a user.\n @dev It's not necessary to explicitly checkpoint before calling this function, it will ensure the FeeDistributor\n is up to date before calculating the amount of tokens to be claimed.\n @param user - The user on behalf of which to claim.\n @param token - The ERC20 token address to be claimed.\n @return The amount of `token` sent to `user` as a result of claiming."},"functionSelector":"ca31879d","id":611,"implemented":false,"kind":"function","modifiers":[],"name":"claimToken","nodeType":"FunctionDefinition","parameters":{"id":607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":604,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":611,"src":"7638:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":603,"name":"address","nodeType":"ElementaryTypeName","src":"7638:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":606,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":611,"src":"7652:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":605,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"7652:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"7637:28:9"},"returnParameters":{"id":610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":609,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":611,"src":"7684:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":608,"name":"uint256","nodeType":"ElementaryTypeName","src":"7684:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7683:9:9"},"scope":624,"src":"7618:75:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":612,"nodeType":"StructuredDocumentation","src":"7699:452:9","text":" @notice Claims a number of tokens on behalf of a user.\n @dev A version of `claimToken` which supports claiming multiple `tokens` on behalf of `user`.\n See `claimToken` for more details.\n @param user - The user on behalf of which to claim.\n @param tokens - An array of ERC20 token addresses to be claimed.\n @return An array of the amounts of each token in `tokens` sent to `user` as a result of claiming."},"functionSelector":"88720467","id":623,"implemented":false,"kind":"function","modifiers":[],"name":"claimTokens","nodeType":"FunctionDefinition","parameters":{"id":618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":614,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":623,"src":"8177:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":613,"name":"address","nodeType":"ElementaryTypeName","src":"8177:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":617,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":623,"src":"8191:24:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":615,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"8191:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":616,"nodeType":"ArrayTypeName","src":"8191:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"8176:40:9"},"returnParameters":{"id":622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":621,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":623,"src":"8235:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":619,"name":"uint256","nodeType":"ElementaryTypeName","src":"8235:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":620,"nodeType":"ArrayTypeName","src":"8235:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"8234:18:9"},"scope":624,"src":"8156:97:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":625,"src":"1330:6925:9"}],"src":"688:7568:9"},"id":9},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol","exportedSymbols":{"IGaugeAdder":[739]},"id":740,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":626,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:10"},{"id":627,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:10"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","file":"./IAuthorizerAdaptorEntrypoint.sol","id":628,"nodeType":"ImportDirective","scope":740,"sourceUnit":63,"src":"755:44:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"./IGaugeController.sol","id":629,"nodeType":"ImportDirective","scope":740,"sourceUnit":822,"src":"800:32:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"./ILiquidityGauge.sol","id":630,"nodeType":"ImportDirective","scope":740,"sourceUnit":929,"src":"833:31:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","file":"./ILiquidityGaugeFactory.sol","id":631,"nodeType":"ImportDirective","scope":740,"sourceUnit":942,"src":"865:38:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","file":"./IStakingLiquidityGauge.sol","id":632,"nodeType":"ImportDirective","scope":740,"sourceUnit":1455,"src":"904:38:10","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":633,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":2259,"src":"969:15:10","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$2259","typeString":"contract IAuthentication"}},"id":634,"nodeType":"InheritanceSpecifier","src":"969:15:10"}],"contractDependencies":[2259],"contractKind":"interface","fullyImplemented":false,"id":739,"linearizedBaseContracts":[739,2259],"name":"IGaugeAdder","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IGaugeAdder.GaugeType","id":643,"members":[{"id":635,"name":"LiquidityMiningCommittee","nodeType":"EnumValue","src":"1080:24:10"},{"id":636,"name":"veBAL","nodeType":"EnumValue","src":"1106:5:10"},{"id":637,"name":"Ethereum","nodeType":"EnumValue","src":"1113:8:10"},{"id":638,"name":"Polygon","nodeType":"EnumValue","src":"1123:7:10"},{"id":639,"name":"Arbitrum","nodeType":"EnumValue","src":"1132:8:10"},{"id":640,"name":"Optimism","nodeType":"EnumValue","src":"1142:8:10"},{"id":641,"name":"Gnosis","nodeType":"EnumValue","src":"1152:6:10"},{"id":642,"name":"ZKSync","nodeType":"EnumValue","src":"1160:6:10"}],"name":"GaugeType","nodeType":"EnumDefinition","src":"1063:105:10"},{"anonymous":false,"id":649,"name":"GaugeTypeAdded","nodeType":"EventDefinition","parameters":{"id":648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":645,"indexed":true,"mutability":"mutable","name":"indexedGaugeType","nodeType":"VariableDeclaration","scope":649,"src":"1305:31:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":644,"name":"string","nodeType":"ElementaryTypeName","src":"1305:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":647,"indexed":false,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":649,"src":"1338:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":646,"name":"string","nodeType":"ElementaryTypeName","src":"1338:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1304:51:10"},"src":"1284:72:10"},{"anonymous":false,"id":657,"name":"GaugeFactorySet","nodeType":"EventDefinition","parameters":{"id":656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":651,"indexed":true,"mutability":"mutable","name":"indexedGaugeType","nodeType":"VariableDeclaration","scope":657,"src":"1383:31:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":650,"name":"string","nodeType":"ElementaryTypeName","src":"1383:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":653,"indexed":false,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":657,"src":"1416:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":652,"name":"string","nodeType":"ElementaryTypeName","src":"1416:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":655,"indexed":false,"mutability":"mutable","name":"gaugeFactory","nodeType":"VariableDeclaration","scope":657,"src":"1434:35:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":654,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"1434:22:10","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"1382:88:10"},"src":"1361:110:10"},{"documentation":{"id":658,"nodeType":"StructuredDocumentation","src":"1477:93:10","text":" @notice Returns the address of the Authorizer adaptor entrypoint contract."},"functionSelector":"7afcf0e6","id":663,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizerAdaptorEntrypoint","nodeType":"FunctionDefinition","parameters":{"id":659,"nodeType":"ParameterList","parameters":[],"src":"1614:2:10"},"returnParameters":{"id":662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":661,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":663,"src":"1640:28:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":660,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"1640:28:10","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"internal"}],"src":"1639:30:10"},"scope":739,"src":"1575:95:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":664,"nodeType":"StructuredDocumentation","src":"1676:70:10","text":" @notice Returns the address of the Gauge Controller"},"functionSelector":"58de9ade","id":669,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeController","nodeType":"FunctionDefinition","parameters":{"id":665,"nodeType":"ParameterList","parameters":[],"src":"1778:2:10"},"returnParameters":{"id":668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":667,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":669,"src":"1804:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":666,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1804:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"internal"}],"src":"1803:18:10"},"scope":739,"src":"1751:71:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":670,"nodeType":"StructuredDocumentation","src":"1828:59:10","text":" @notice Returns the list of gauge types."},"functionSelector":"afcb1a86","id":676,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeTypes","nodeType":"FunctionDefinition","parameters":{"id":671,"nodeType":"ParameterList","parameters":[],"src":"1914:2:10"},"returnParameters":{"id":675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":674,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":676,"src":"1940:15:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":672,"name":"string","nodeType":"ElementaryTypeName","src":"1940:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":673,"nodeType":"ArrayTypeName","src":"1940:8:10","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"src":"1939:17:10"},"scope":739,"src":"1892:65:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":677,"nodeType":"StructuredDocumentation","src":"1963:81:10","text":" @notice Returns gauge type name registered at the given index."},"functionSelector":"08ceb030","id":684,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeTypeAtIndex","nodeType":"FunctionDefinition","parameters":{"id":680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":679,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":684,"src":"2078:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":678,"name":"uint256","nodeType":"ElementaryTypeName","src":"2078:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2077:15:10"},"returnParameters":{"id":683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":682,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":684,"src":"2116:13:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":681,"name":"string","nodeType":"ElementaryTypeName","src":"2116:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2115:15:10"},"scope":739,"src":"2049:82:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":685,"nodeType":"StructuredDocumentation","src":"2137:61:10","text":" @notice Returns the number of gauge types."},"functionSelector":"96432aeb","id":690,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeTypesCount","nodeType":"FunctionDefinition","parameters":{"id":686,"nodeType":"ParameterList","parameters":[],"src":"2230:2:10"},"returnParameters":{"id":689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":688,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":690,"src":"2256:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":687,"name":"uint256","nodeType":"ElementaryTypeName","src":"2256:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2255:9:10"},"scope":739,"src":"2203:62:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":691,"nodeType":"StructuredDocumentation","src":"2271:90:10","text":" @notice Returns true if the given gauge type is valid; false otherwise."},"functionSelector":"16e772bc","id":698,"implemented":false,"kind":"function","modifiers":[],"name":"isValidGaugeType","nodeType":"FunctionDefinition","parameters":{"id":694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":693,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":698,"src":"2392:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":692,"name":"string","nodeType":"ElementaryTypeName","src":"2392:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2391:25:10"},"returnParameters":{"id":697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":696,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":698,"src":"2440:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":695,"name":"bool","nodeType":"ElementaryTypeName","src":"2440:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2439:6:10"},"scope":739,"src":"2366:80:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":699,"nodeType":"StructuredDocumentation","src":"2452:74:10","text":" @notice Returns the factory for gauge type `gaugeType`."},"functionSelector":"572cb6a5","id":706,"implemented":false,"kind":"function","modifiers":[],"name":"getFactoryForGaugeType","nodeType":"FunctionDefinition","parameters":{"id":702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":701,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":706,"src":"2563:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":700,"name":"string","nodeType":"ElementaryTypeName","src":"2563:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2562:25:10"},"returnParameters":{"id":705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":704,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":706,"src":"2611:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":703,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"2611:22:10","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"2610:24:10"},"scope":739,"src":"2531:104:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":707,"nodeType":"StructuredDocumentation","src":"2641:248:10","text":" @notice Returns true if `gauge` has been deployed by the factory for the gauge type `gaugeType`.\n Note that if a gauge type's factory changes then this function will start returning false for previously\n valid gauges."},"functionSelector":"a0ade33e","id":716,"implemented":false,"kind":"function","modifiers":[],"name":"isGaugeFromValidFactory","nodeType":"FunctionDefinition","parameters":{"id":712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":709,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":716,"src":"2927:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":708,"name":"address","nodeType":"ElementaryTypeName","src":"2927:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":711,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":716,"src":"2942:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":710,"name":"string","nodeType":"ElementaryTypeName","src":"2942:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2926:40:10"},"returnParameters":{"id":715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":714,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":716,"src":"2990:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":713,"name":"bool","nodeType":"ElementaryTypeName","src":"2990:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2989:6:10"},"scope":739,"src":"2894:102:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":717,"nodeType":"StructuredDocumentation","src":"3002:212:10","text":" @notice Adds a new `gaugeType` corresponding to a new network, which allows setting a factory and adding gauges\n for the type later on.\n @param gaugeType Name of the new gauge type."},"functionSelector":"231856fa","id":722,"implemented":false,"kind":"function","modifiers":[],"name":"addGaugeType","nodeType":"FunctionDefinition","parameters":{"id":720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":719,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":722,"src":"3241:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":718,"name":"string","nodeType":"ElementaryTypeName","src":"3241:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3240:25:10"},"returnParameters":{"id":721,"nodeType":"ParameterList","parameters":[],"src":"3274:0:10"},"scope":739,"src":"3219:56:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":723,"nodeType":"StructuredDocumentation","src":"3281:468:10","text":" @notice Adds a new gauge to the GaugeController for the given `gaugeType` type.\n @dev When adding gauges for L2 networks or sidechains, this must be called with the address of the *root* gauge\n which is deployed on Ethereum. It should *not* be called with the address of the child gauge which is deployed on\n the L2 / sidechain.\n If the gauge added is an Ethereum gauge, it cannot be a gauge for the 80BAL-20WETH pool."},"functionSelector":"5bf71434","id":730,"implemented":false,"kind":"function","modifiers":[],"name":"addGauge","nodeType":"FunctionDefinition","parameters":{"id":728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":725,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":730,"src":"3772:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":724,"name":"address","nodeType":"ElementaryTypeName","src":"3772:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":727,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":730,"src":"3787:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":726,"name":"string","nodeType":"ElementaryTypeName","src":"3787:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3771:40:10"},"returnParameters":{"id":729,"nodeType":"ParameterList","parameters":[],"src":"3820:0:10"},"scope":739,"src":"3754:67:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":731,"nodeType":"StructuredDocumentation","src":"3827:194:10","text":" @notice Sets `factory` as the allowlisted factory contract for gauges with type `gaugeType`.\n @dev This function can either set a new factory or replace an existing one."},"functionSelector":"066edd7a","id":738,"implemented":false,"kind":"function","modifiers":[],"name":"setGaugeFactory","nodeType":"FunctionDefinition","parameters":{"id":736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":733,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":738,"src":"4051:30:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":732,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"4051:22:10","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"},{"constant":false,"id":735,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":738,"src":"4083:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":734,"name":"string","nodeType":"ElementaryTypeName","src":"4083:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4050:57:10"},"returnParameters":{"id":737,"nodeType":"ParameterList","parameters":[],"src":"4116:0:10"},"scope":739,"src":"4026:91:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":740,"src":"944:3175:10"}],"src":"688:3432:10"},"id":10},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","exportedSymbols":{"IGaugeController":[821]},"id":822,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":741,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:11"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":742,"nodeType":"ImportDirective","scope":822,"sourceUnit":2448,"src":"721:51:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","file":"./IAuthorizerAdaptor.sol","id":743,"nodeType":"ImportDirective","scope":822,"sourceUnit":50,"src":"774:34:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","file":"./IVotingEscrow.sol","id":744,"nodeType":"ImportDirective","scope":822,"sourceUnit":1560,"src":"809:29:11","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":821,"linearizedBaseContracts":[821],"name":"IGaugeController","nodeType":"ContractDefinition","nodes":[{"functionSelector":"615e5237","id":749,"implemented":false,"kind":"function","modifiers":[],"name":"checkpoint_gauge","nodeType":"FunctionDefinition","parameters":{"id":747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":746,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":749,"src":"1077:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":745,"name":"address","nodeType":"ElementaryTypeName","src":"1077:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1076:15:11"},"returnParameters":{"id":748,"nodeType":"ParameterList","parameters":[],"src":"1100:0:11"},"scope":821,"src":"1051:50:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d3078c94","id":758,"implemented":false,"kind":"function","modifiers":[],"name":"gauge_relative_weight","nodeType":"FunctionDefinition","parameters":{"id":754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":751,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":758,"src":"1138:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":750,"name":"address","nodeType":"ElementaryTypeName","src":"1138:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":753,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":758,"src":"1153:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":752,"name":"uint256","nodeType":"ElementaryTypeName","src":"1153:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1137:29:11"},"returnParameters":{"id":757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":756,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":758,"src":"1190:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":755,"name":"uint256","nodeType":"ElementaryTypeName","src":"1190:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1189:9:11"},"scope":821,"src":"1107:92:11","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"dfe05031","id":763,"implemented":false,"kind":"function","modifiers":[],"name":"voting_escrow","nodeType":"FunctionDefinition","parameters":{"id":759,"nodeType":"ParameterList","parameters":[],"src":"1227:2:11"},"returnParameters":{"id":762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":761,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":763,"src":"1253:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":760,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"1253:13:11","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"src":"1252:15:11"},"scope":821,"src":"1205:63:11","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fc0c546a","id":768,"implemented":false,"kind":"function","modifiers":[],"name":"token","nodeType":"FunctionDefinition","parameters":{"id":764,"nodeType":"ParameterList","parameters":[],"src":"1288:2:11"},"returnParameters":{"id":767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":766,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":768,"src":"1314:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":765,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1314:6:11","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1313:8:11"},"scope":821,"src":"1274:48:11","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"92d0d232","id":775,"implemented":false,"kind":"function","modifiers":[],"name":"add_type","nodeType":"FunctionDefinition","parameters":{"id":773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":770,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":775,"src":"1346:20:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":769,"name":"string","nodeType":"ElementaryTypeName","src":"1346:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":772,"mutability":"mutable","name":"weight","nodeType":"VariableDeclaration","scope":775,"src":"1368:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":771,"name":"uint256","nodeType":"ElementaryTypeName","src":"1368:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1345:38:11"},"returnParameters":{"id":774,"nodeType":"ParameterList","parameters":[],"src":"1392:0:11"},"scope":821,"src":"1328:65:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"db1ca260","id":782,"implemented":false,"kind":"function","modifiers":[],"name":"change_type_weight","nodeType":"FunctionDefinition","parameters":{"id":780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":777,"mutability":"mutable","name":"typeId","nodeType":"VariableDeclaration","scope":782,"src":"1427:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":776,"name":"int128","nodeType":"ElementaryTypeName","src":"1427:6:11","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":779,"mutability":"mutable","name":"weight","nodeType":"VariableDeclaration","scope":782,"src":"1442:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":778,"name":"uint256","nodeType":"ElementaryTypeName","src":"1442:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1426:31:11"},"returnParameters":{"id":781,"nodeType":"ParameterList","parameters":[],"src":"1466:0:11"},"scope":821,"src":"1399:68:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3a04f900","id":789,"implemented":false,"kind":"function","modifiers":[],"name":"add_gauge","nodeType":"FunctionDefinition","parameters":{"id":787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":784,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":789,"src":"1492:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":783,"name":"address","nodeType":"ElementaryTypeName","src":"1492:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":786,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":789,"src":"1507:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":785,"name":"int128","nodeType":"ElementaryTypeName","src":"1507:6:11","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1491:33:11"},"returnParameters":{"id":788,"nodeType":"ParameterList","parameters":[],"src":"1533:0:11"},"scope":821,"src":"1473:61:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9fba03a1","id":794,"implemented":false,"kind":"function","modifiers":[],"name":"n_gauge_types","nodeType":"FunctionDefinition","parameters":{"id":790,"nodeType":"ParameterList","parameters":[],"src":"1562:2:11"},"returnParameters":{"id":793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":792,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":794,"src":"1588:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":791,"name":"int128","nodeType":"ElementaryTypeName","src":"1588:6:11","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1587:8:11"},"scope":821,"src":"1540:56:11","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"3f9095b7","id":801,"implemented":false,"kind":"function","modifiers":[],"name":"gauge_types","nodeType":"FunctionDefinition","parameters":{"id":797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":796,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":801,"src":"1623:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":795,"name":"address","nodeType":"ElementaryTypeName","src":"1623:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1622:15:11"},"returnParameters":{"id":800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":799,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":801,"src":"1661:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":798,"name":"int128","nodeType":"ElementaryTypeName","src":"1661:6:11","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1660:8:11"},"scope":821,"src":"1602:67:11","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"f851a440","id":806,"implemented":false,"kind":"function","modifiers":[],"name":"admin","nodeType":"FunctionDefinition","parameters":{"id":802,"nodeType":"ParameterList","parameters":[],"src":"1689:2:11"},"returnParameters":{"id":805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":804,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":806,"src":"1715:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":803,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1715:18:11","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"1714:20:11"},"scope":821,"src":"1675:60:11","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"61df1bf9","id":813,"implemented":false,"kind":"function","modifiers":[],"name":"gauge_exists","nodeType":"FunctionDefinition","parameters":{"id":809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":808,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":813,"src":"1763:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":807,"name":"address","nodeType":"ElementaryTypeName","src":"1763:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1762:15:11"},"returnParameters":{"id":812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":813,"src":"1801:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":810,"name":"bool","nodeType":"ElementaryTypeName","src":"1801:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1800:6:11"},"scope":821,"src":"1741:66:11","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a4d7a250","id":820,"implemented":false,"kind":"function","modifiers":[],"name":"time_weight","nodeType":"FunctionDefinition","parameters":{"id":816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":815,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":820,"src":"1834:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":814,"name":"address","nodeType":"ElementaryTypeName","src":"1834:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1833:15:11"},"returnParameters":{"id":819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":818,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":820,"src":"1872:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":817,"name":"uint256","nodeType":"ElementaryTypeName","src":"1872:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1871:9:11"},"scope":821,"src":"1813:68:11","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":822,"src":"1018:865:11"}],"src":"688:1196:11"},"id":11},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol","exportedSymbols":{"IL1StandardBridge":[840]},"id":841,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":823,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:12"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":824,"nodeType":"StructuredDocumentation","src":"721:91:12","text":" @notice Standard token bridging interface, common to Optimism and Base networks."},"fullyImplemented":false,"id":840,"linearizedBaseContracts":[840],"name":"IL1StandardBridge","nodeType":"ContractDefinition","nodes":[{"functionSelector":"838b2520","id":839,"implemented":false,"kind":"function","modifiers":[],"name":"depositERC20To","nodeType":"FunctionDefinition","parameters":{"id":837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":826,"mutability":"mutable","name":"_l1Token","nodeType":"VariableDeclaration","scope":839,"src":"880:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":825,"name":"address","nodeType":"ElementaryTypeName","src":"880:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":828,"mutability":"mutable","name":"_l2Token","nodeType":"VariableDeclaration","scope":839,"src":"906:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":827,"name":"address","nodeType":"ElementaryTypeName","src":"906:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":830,"mutability":"mutable","name":"_to","nodeType":"VariableDeclaration","scope":839,"src":"932:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":829,"name":"address","nodeType":"ElementaryTypeName","src":"932:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":832,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":839,"src":"953:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":831,"name":"uint256","nodeType":"ElementaryTypeName","src":"953:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":834,"mutability":"mutable","name":"_l2Gas","nodeType":"VariableDeclaration","scope":839,"src":"978:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":833,"name":"uint32","nodeType":"ElementaryTypeName","src":"978:6:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":836,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":839,"src":"1001:20:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":835,"name":"bytes","nodeType":"ElementaryTypeName","src":"1001:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"870:157:12"},"returnParameters":{"id":838,"nodeType":"ParameterList","parameters":[],"src":"1036:0:12"},"scope":840,"src":"847:190:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":841,"src":"813:226:12"}],"src":"688:352:12"},"id":12},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol","exportedSymbols":{"IL2LayerZeroDelegation":[854]},"id":855,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":842,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:13"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":843,"nodeType":"StructuredDocumentation","src":"721:117:13","text":" @notice Minimal hook interface to be called whenever the veBAL balance of a user is updated in a L2 chain."},"fullyImplemented":false,"id":854,"linearizedBaseContracts":[854],"name":"IL2LayerZeroDelegation","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":844,"nodeType":"StructuredDocumentation","src":"878:157:13","text":" @notice Called whenever the veBAL balance of a user is updated in a L2 chain.\n @param user The user whose veBAL balance was updated."},"functionSelector":"df130bfe","id":849,"implemented":false,"kind":"function","modifiers":[],"name":"onVeBalBridged","nodeType":"FunctionDefinition","parameters":{"id":847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":846,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":849,"src":"1064:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":845,"name":"address","nodeType":"ElementaryTypeName","src":"1064:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1063:14:13"},"returnParameters":{"id":848,"nodeType":"ParameterList","parameters":[],"src":"1086:0:13"},"scope":854,"src":"1040:47:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":850,"nodeType":"StructuredDocumentation","src":"1093:91:13","text":" @notice Called whenever the total veBAL supply is updated in a L2 chain."},"functionSelector":"96345fb5","id":853,"implemented":false,"kind":"function","modifiers":[],"name":"onVeBalSupplyUpdate","nodeType":"FunctionDefinition","parameters":{"id":851,"nodeType":"ParameterList","parameters":[],"src":"1217:2:13"},"returnParameters":{"id":852,"nodeType":"ParameterList","parameters":[],"src":"1228:0:13"},"scope":854,"src":"1189:40:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":855,"src":"839:392:13"}],"src":"688:544:13"},"id":13},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol","exportedSymbols":{"ILMGetters":[871]},"id":872,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":856,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:14"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","file":"./IBalancerTokenAdmin.sol","id":857,"nodeType":"ImportDirective","scope":872,"sourceUnit":328,"src":"721:35:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"./IGaugeController.sol","id":858,"nodeType":"ImportDirective","scope":872,"sourceUnit":822,"src":"757:32:14","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":871,"linearizedBaseContracts":[871],"name":"ILMGetters","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":859,"nodeType":"StructuredDocumentation","src":"818:83:14","text":" @notice Returns the address of the Balancer Token Admin contract"},"functionSelector":"e6dec36f","id":864,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerTokenAdmin","nodeType":"FunctionDefinition","parameters":{"id":860,"nodeType":"ParameterList","parameters":[],"src":"936:2:14"},"returnParameters":{"id":863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":862,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":864,"src":"962:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"},"typeName":{"id":861,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":327,"src":"962:19:14","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"visibility":"internal"}],"src":"961:21:14"},"scope":871,"src":"906:77:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":865,"nodeType":"StructuredDocumentation","src":"989:70:14","text":" @notice Returns the address of the Gauge Controller"},"functionSelector":"58de9ade","id":870,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeController","nodeType":"FunctionDefinition","parameters":{"id":866,"nodeType":"ParameterList","parameters":[],"src":"1091:2:14"},"returnParameters":{"id":869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":868,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":870,"src":"1117:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":867,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1117:16:14","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"internal"}],"src":"1116:18:14"},"scope":871,"src":"1064:71:14","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":872,"src":"791:346:14"}],"src":"688:450:14"},"id":14},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","exportedSymbols":{"ILiquidityGauge":[928]},"id":929,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":873,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:15"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":928,"linearizedBaseContracts":[928],"name":"ILiquidityGauge","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":877,"name":"RelativeWeightCapChanged","nodeType":"EventDefinition","parameters":{"id":876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":875,"indexed":false,"mutability":"mutable","name":"new_relative_weight_cap","nodeType":"VariableDeclaration","scope":877,"src":"1059:31:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":874,"name":"uint256","nodeType":"ElementaryTypeName","src":"1059:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1058:33:15"},"src":"1028:64:15"},{"documentation":{"id":878,"nodeType":"StructuredDocumentation","src":"1098:201:15","text":" @notice Returns BAL liquidity emissions calculated during checkpoints for the given user.\n @param user User address.\n @return uint256 BAL amount to issue for the address."},"functionSelector":"09400707","id":885,"implemented":false,"kind":"function","modifiers":[],"name":"integrate_fraction","nodeType":"FunctionDefinition","parameters":{"id":881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":880,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":885,"src":"1332:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":879,"name":"address","nodeType":"ElementaryTypeName","src":"1332:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1331:14:15"},"returnParameters":{"id":884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":883,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":885,"src":"1369:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":882,"name":"uint256","nodeType":"ElementaryTypeName","src":"1369:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1368:9:15"},"scope":928,"src":"1304:74:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":886,"nodeType":"StructuredDocumentation","src":"1384:130:15","text":" @notice Record a checkpoint for a given user.\n @param user User address.\n @return bool Always true."},"functionSelector":"4b820093","id":893,"implemented":false,"kind":"function","modifiers":[],"name":"user_checkpoint","nodeType":"FunctionDefinition","parameters":{"id":889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":888,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":893,"src":"1544:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":887,"name":"address","nodeType":"ElementaryTypeName","src":"1544:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1543:14:15"},"returnParameters":{"id":892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":891,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":893,"src":"1576:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":890,"name":"bool","nodeType":"ElementaryTypeName","src":"1576:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1575:6:15"},"scope":928,"src":"1519:63:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":894,"nodeType":"StructuredDocumentation","src":"1588:76:15","text":" @notice Returns true if gauge is killed; false otherwise."},"functionSelector":"9c868ac0","id":899,"implemented":false,"kind":"function","modifiers":[],"name":"is_killed","nodeType":"FunctionDefinition","parameters":{"id":895,"nodeType":"ParameterList","parameters":[],"src":"1687:2:15"},"returnParameters":{"id":898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":897,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":899,"src":"1713:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":896,"name":"bool","nodeType":"ElementaryTypeName","src":"1713:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1712:6:15"},"scope":928,"src":"1669:50:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":900,"nodeType":"StructuredDocumentation","src":"1725:65:15","text":" @notice Kills the gauge so it cannot mint BAL."},"functionSelector":"ab8f0945","id":903,"implemented":false,"kind":"function","modifiers":[],"name":"killGauge","nodeType":"FunctionDefinition","parameters":{"id":901,"nodeType":"ParameterList","parameters":[],"src":"1813:2:15"},"returnParameters":{"id":902,"nodeType":"ParameterList","parameters":[],"src":"1824:0:15"},"scope":928,"src":"1795:30:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":904,"nodeType":"StructuredDocumentation","src":"1831:70:15","text":" @notice Unkills the gauge so it can mint BAL again."},"functionSelector":"d34fb267","id":907,"implemented":false,"kind":"function","modifiers":[],"name":"unkillGauge","nodeType":"FunctionDefinition","parameters":{"id":905,"nodeType":"ParameterList","parameters":[],"src":"1926:2:15"},"returnParameters":{"id":906,"nodeType":"ParameterList","parameters":[],"src":"1937:0:15"},"scope":928,"src":"1906:32:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":908,"nodeType":"StructuredDocumentation","src":"1944:221:15","text":" @notice Sets a new relative weight cap for the gauge.\n The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\n @param relativeWeightCap New relative weight cap."},"functionSelector":"10d3eb04","id":913,"implemented":false,"kind":"function","modifiers":[],"name":"setRelativeWeightCap","nodeType":"FunctionDefinition","parameters":{"id":911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":910,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":913,"src":"2200:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":909,"name":"uint256","nodeType":"ElementaryTypeName","src":"2200:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2199:27:15"},"returnParameters":{"id":912,"nodeType":"ParameterList","parameters":[],"src":"2235:0:15"},"scope":928,"src":"2170:66:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":914,"nodeType":"StructuredDocumentation","src":"2242:70:15","text":" @notice Gets the relative weight cap for the gauge."},"functionSelector":"83f5c39b","id":919,"implemented":false,"kind":"function","modifiers":[],"name":"getRelativeWeightCap","nodeType":"FunctionDefinition","parameters":{"id":915,"nodeType":"ParameterList","parameters":[],"src":"2346:2:15"},"returnParameters":{"id":918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":917,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":919,"src":"2372:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":916,"name":"uint256","nodeType":"ElementaryTypeName","src":"2372:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2371:9:15"},"scope":928,"src":"2317:64:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":920,"nodeType":"StructuredDocumentation","src":"2387:178:15","text":" @notice Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\n @param time Timestamp in the past or present."},"functionSelector":"14e956f5","id":927,"implemented":false,"kind":"function","modifiers":[],"name":"getCappedRelativeWeight","nodeType":"FunctionDefinition","parameters":{"id":923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":922,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":927,"src":"2603:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":921,"name":"uint256","nodeType":"ElementaryTypeName","src":"2603:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2602:14:15"},"returnParameters":{"id":926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":925,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":927,"src":"2640:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":924,"name":"uint256","nodeType":"ElementaryTypeName","src":"2640:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2639:9:15"},"scope":928,"src":"2570:79:15","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":929,"src":"944:1707:15"}],"src":"688:1964:15"},"id":15},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","exportedSymbols":{"ILiquidityGaugeFactory":[941]},"id":942,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":930,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:16"},{"id":931,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:16"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"./ILiquidityGauge.sol","id":932,"nodeType":"ImportDirective","scope":942,"sourceUnit":929,"src":"755:31:16","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":941,"linearizedBaseContracts":[941],"name":"ILiquidityGaugeFactory","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":933,"nodeType":"StructuredDocumentation","src":"827:79:16","text":" @notice Returns true if `gauge` was created by this factory."},"functionSelector":"ce3cc8bd","id":940,"implemented":false,"kind":"function","modifiers":[],"name":"isGaugeFromFactory","nodeType":"FunctionDefinition","parameters":{"id":936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":935,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":940,"src":"939:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":934,"name":"address","nodeType":"ElementaryTypeName","src":"939:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"938:15:16"},"returnParameters":{"id":939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":938,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":940,"src":"977:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":937,"name":"bool","nodeType":"ElementaryTypeName","src":"977:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"976:6:16"},"scope":941,"src":"911:72:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":942,"src":"788:197:16"}],"src":"688:298:16"},"id":16},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol","exportedSymbols":{"IMainnetBalancerMinter":[951]},"id":952,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":943,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:17"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","file":"./IBalancerMinter.sol","id":944,"nodeType":"ImportDirective","scope":952,"sourceUnit":198,"src":"721:31:17","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol","file":"./ILMGetters.sol","id":945,"nodeType":"ImportDirective","scope":952,"sourceUnit":872,"src":"753:26:17","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":947,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":197,"src":"891:15:17","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$197","typeString":"contract IBalancerMinter"}},"id":948,"nodeType":"InheritanceSpecifier","src":"891:15:17"},{"baseName":{"id":949,"name":"ILMGetters","nodeType":"UserDefinedTypeName","referencedDeclaration":871,"src":"908:10:17","typeDescriptions":{"typeIdentifier":"t_contract$_ILMGetters_$871","typeString":"contract ILMGetters"}},"id":950,"nodeType":"InheritanceSpecifier","src":"908:10:17"}],"contractDependencies":[197,871],"contractKind":"interface","documentation":{"id":946,"nodeType":"StructuredDocumentation","src":"781:73:17","text":" @dev Full L1 Balancer minter interface with singleton getters."},"fullyImplemented":false,"id":951,"linearizedBaseContracts":[951,871,197],"name":"IMainnetBalancerMinter","nodeType":"ContractDefinition","nodes":[],"scope":952,"src":"855:120:17"}],"src":"688:288:17"},"id":17},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol","exportedSymbols":{"IOmniVotingEscrow":[981]},"id":982,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":953,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:18"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":954,"nodeType":"StructuredDocumentation","src":"721:162:18","text":" @dev Partial voting escrow bridge interface.\n See https://github.com/LayerZero-Labs/lz_gauges/blob/main/contracts/OmniVotingEscrow.sol for reference."},"fullyImplemented":false,"id":981,"linearizedBaseContracts":[981],"name":"IOmniVotingEscrow","nodeType":"ContractDefinition","nodes":[{"functionSelector":"65d092d0","id":967,"implemented":false,"kind":"function","modifiers":[],"name":"estimateSendUserBalance","nodeType":"FunctionDefinition","parameters":{"id":961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":956,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":967,"src":"960:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":955,"name":"uint16","nodeType":"ElementaryTypeName","src":"960:6:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":958,"mutability":"mutable","name":"_useZro","nodeType":"VariableDeclaration","scope":967,"src":"988:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":957,"name":"bool","nodeType":"ElementaryTypeName","src":"988:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":960,"mutability":"mutable","name":"_adapterParams","nodeType":"VariableDeclaration","scope":967,"src":"1010:29:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":959,"name":"bytes","nodeType":"ElementaryTypeName","src":"1010:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"950:95:18"},"returnParameters":{"id":966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":963,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":967,"src":"1069:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":962,"name":"uint256","nodeType":"ElementaryTypeName","src":"1069:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":965,"mutability":"mutable","name":"zroFee","nodeType":"VariableDeclaration","scope":967,"src":"1088:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":964,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1068:35:18"},"scope":981,"src":"918:186:18","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"4a759489","id":980,"implemented":false,"kind":"function","modifiers":[],"name":"sendUserBalance","nodeType":"FunctionDefinition","parameters":{"id":978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":969,"mutability":"mutable","name":"_user","nodeType":"VariableDeclaration","scope":980,"src":"1144:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":968,"name":"address","nodeType":"ElementaryTypeName","src":"1144:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":971,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":980,"src":"1167:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":970,"name":"uint16","nodeType":"ElementaryTypeName","src":"1167:6:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":973,"mutability":"mutable","name":"_refundAddress","nodeType":"VariableDeclaration","scope":980,"src":"1195:30:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":972,"name":"address","nodeType":"ElementaryTypeName","src":"1195:15:18","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":975,"mutability":"mutable","name":"_zroPaymentAddress","nodeType":"VariableDeclaration","scope":980,"src":"1235:26:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":974,"name":"address","nodeType":"ElementaryTypeName","src":"1235:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":977,"mutability":"mutable","name":"_adapterParams","nodeType":"VariableDeclaration","scope":980,"src":"1271:27:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":976,"name":"bytes","nodeType":"ElementaryTypeName","src":"1271:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1134:170:18"},"returnParameters":{"id":979,"nodeType":"ParameterList","parameters":[],"src":"1321:0:18"},"scope":981,"src":"1110:212:18","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":982,"src":"884:440:18"}],"src":"688:637:18"},"id":18},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol","exportedSymbols":{"IOmniVotingEscrowAdaptor":[1005]},"id":1006,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":983,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:19"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":984,"nodeType":"StructuredDocumentation","src":"721:56:19","text":" @dev Interface for `OmniVotingEscrowAdaptor`."},"fullyImplemented":false,"id":1005,"linearizedBaseContracts":[1005],"name":"IOmniVotingEscrowAdaptor","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"819:342:19","text":" @notice Forwards `estimateSendUserBalance` call to omni voting escrow.\n @dev Reverts if `OmniVotingEscrow` is not set.\n @param _dstChainId - Destination chain ID.\n @return nativeFee - Native fee reported by the omni voting escrow.\n @return zroFee - Layer zero fee reported by the omni voting escrow."},"functionSelector":"ecc4c583","id":994,"implemented":false,"kind":"function","modifiers":[],"name":"estimateSendUserBalance","nodeType":"FunctionDefinition","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":994,"src":"1199:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":986,"name":"uint16","nodeType":"ElementaryTypeName","src":"1199:6:19","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1198:20:19"},"returnParameters":{"id":993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":994,"src":"1242:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"1242:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":992,"mutability":"mutable","name":"zroFee","nodeType":"VariableDeclaration","scope":994,"src":"1261:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":991,"name":"uint256","nodeType":"ElementaryTypeName","src":"1261:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1241:35:19"},"scope":1005,"src":"1166:111:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":995,"nodeType":"StructuredDocumentation","src":"1283:307:19","text":" @notice Forwards `sendUserBalance` call to omni voting escrow.\n @dev Reverts if `OmniVotingEscrow` is not set.\n @param _user - User to bridge the balance from.\n @param _dstChainId - Destination chain ID.\n @param _refundAddress - Address where to return excess ETH."},"functionSelector":"57fb8345","id":1004,"implemented":false,"kind":"function","modifiers":[],"name":"sendUserBalance","nodeType":"FunctionDefinition","parameters":{"id":1002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":997,"mutability":"mutable","name":"_user","nodeType":"VariableDeclaration","scope":1004,"src":"1629:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":996,"name":"address","nodeType":"ElementaryTypeName","src":"1629:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":999,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":1004,"src":"1652:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":998,"name":"uint16","nodeType":"ElementaryTypeName","src":"1652:6:19","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":1001,"mutability":"mutable","name":"_refundAddress","nodeType":"VariableDeclaration","scope":1004,"src":"1680:30:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1000,"name":"address","nodeType":"ElementaryTypeName","src":"1680:15:19","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"1619:97:19"},"returnParameters":{"id":1003,"nodeType":"ParameterList","parameters":[],"src":"1733:0:19"},"scope":1005,"src":"1595:139:19","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":1006,"src":"778:958:19"}],"src":"688:1049:19"},"id":19},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol","exportedSymbols":{"IOmniVotingEscrowAdaptorSettings":[1074]},"id":1075,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1007,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:20"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol","file":"./IOmniVotingEscrow.sol","id":1008,"nodeType":"ImportDirective","scope":1075,"sourceUnit":982,"src":"721:33:20","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1009,"nodeType":"StructuredDocumentation","src":"756:65:20","text":" @dev Interface for `OmniVotingEscrowAdaptor` settings."},"fullyImplemented":false,"id":1074,"linearizedBaseContracts":[1074],"name":"IOmniVotingEscrowAdaptorSettings","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":1013,"name":"OmniVotingEscrowUpdated","nodeType":"EventDefinition","parameters":{"id":1012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1011,"indexed":true,"mutability":"mutable","name":"newOmniVotingEscrow","nodeType":"VariableDeclaration","scope":1013,"src":"901:45:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":1010,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"901:17:20","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"internal"}],"src":"900:47:20"},"src":"871:77:20"},{"anonymous":false,"id":1017,"name":"UseZeroUpdated","nodeType":"EventDefinition","parameters":{"id":1016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1015,"indexed":false,"mutability":"mutable","name":"newUseZero","nodeType":"VariableDeclaration","scope":1017,"src":"974:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1014,"name":"bool","nodeType":"ElementaryTypeName","src":"974:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"973:17:20"},"src":"953:38:20"},{"anonymous":false,"id":1021,"name":"AdapterParamsUpdated","nodeType":"EventDefinition","parameters":{"id":1020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1019,"indexed":false,"mutability":"mutable","name":"newAdapterParams","nodeType":"VariableDeclaration","scope":1021,"src":"1023:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1018,"name":"bytes","nodeType":"ElementaryTypeName","src":"1023:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1022:24:20"},"src":"996:51:20"},{"anonymous":false,"id":1025,"name":"ZeroPaymentAddressUpdated","nodeType":"EventDefinition","parameters":{"id":1024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1023,"indexed":true,"mutability":"mutable","name":"newZeroPaymentAddress","nodeType":"VariableDeclaration","scope":1025,"src":"1084:37:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1022,"name":"address","nodeType":"ElementaryTypeName","src":"1084:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1083:39:20"},"src":"1052:71:20"},{"documentation":{"id":1026,"nodeType":"StructuredDocumentation","src":"1129:125:20","text":" @notice Returns Omni Voting Escrow contract address, which is the gateway to bridge veBAL balances to L2s."},"functionSelector":"550f2f7f","id":1031,"implemented":false,"kind":"function","modifiers":[],"name":"getOmniVotingEscrow","nodeType":"FunctionDefinition","parameters":{"id":1027,"nodeType":"ParameterList","parameters":[],"src":"1287:2:20"},"returnParameters":{"id":1030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1029,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1031,"src":"1313:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":1028,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"1313:17:20","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"internal"}],"src":"1312:19:20"},"scope":1074,"src":"1259:73:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1032,"nodeType":"StructuredDocumentation","src":"1338:89:20","text":" @notice Returns `_useZro` parameter used in `estimateSendUserBalance`."},"functionSelector":"00986fe0","id":1037,"implemented":false,"kind":"function","modifiers":[],"name":"getUseZero","nodeType":"FunctionDefinition","parameters":{"id":1033,"nodeType":"ParameterList","parameters":[],"src":"1451:2:20"},"returnParameters":{"id":1036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1035,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1037,"src":"1477:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1034,"name":"bool","nodeType":"ElementaryTypeName","src":"1477:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1476:6:20"},"scope":1074,"src":"1432:51:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1038,"nodeType":"StructuredDocumentation","src":"1489:118:20","text":" @notice Returns `_adapterParams` parameter used in `estimateSendUserBalance` and `sendUserBalance`."},"functionSelector":"4cfde448","id":1043,"implemented":false,"kind":"function","modifiers":[],"name":"getAdapterParams","nodeType":"FunctionDefinition","parameters":{"id":1039,"nodeType":"ParameterList","parameters":[],"src":"1637:2:20"},"returnParameters":{"id":1042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1041,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1043,"src":"1663:12:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1040,"name":"bytes","nodeType":"ElementaryTypeName","src":"1663:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1662:14:20"},"scope":1074,"src":"1612:65:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1044,"nodeType":"StructuredDocumentation","src":"1683:92:20","text":" @notice Returns `_zroPaymentAddress` parameter used in `sendUserBalance`."},"functionSelector":"0943b7b8","id":1049,"implemented":false,"kind":"function","modifiers":[],"name":"getZeroPaymentAddress","nodeType":"FunctionDefinition","parameters":{"id":1045,"nodeType":"ParameterList","parameters":[],"src":"1810:2:20"},"returnParameters":{"id":1048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1047,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1049,"src":"1836:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1046,"name":"address","nodeType":"ElementaryTypeName","src":"1836:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1835:9:20"},"scope":1074,"src":"1780:65:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1050,"nodeType":"StructuredDocumentation","src":"1851:365:20","text":" @notice Sets omni voting escrow address.\n @dev This step is required before creating any remapping in the `VotingEscrowRemapper`.\n Omni voting escrow is not set in the constructor to avoid circular dependencies.\n Emits `OmniVotingEscrowUpdated` event.\n @param omniVotingEscrow - Address of the omni voting escrow contract."},"functionSelector":"09d401f9","id":1055,"implemented":false,"kind":"function","modifiers":[],"name":"setOmniVotingEscrow","nodeType":"FunctionDefinition","parameters":{"id":1053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1052,"mutability":"mutable","name":"omniVotingEscrow","nodeType":"VariableDeclaration","scope":1055,"src":"2250:34:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":1051,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"2250:17:20","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"internal"}],"src":"2249:36:20"},"returnParameters":{"id":1054,"nodeType":"ParameterList","parameters":[],"src":"2294:0:20"},"scope":1074,"src":"2221:74:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1056,"nodeType":"StructuredDocumentation","src":"2301:146:20","text":" @notice Sets `_useZro` parameter for `estimateSendUserBalance` when forwarding calls.\n @dev Emits `UseZeroUpdated` event."},"functionSelector":"299fd6fc","id":1061,"implemented":false,"kind":"function","modifiers":[],"name":"setUseZero","nodeType":"FunctionDefinition","parameters":{"id":1059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1058,"mutability":"mutable","name":"useZro","nodeType":"VariableDeclaration","scope":1061,"src":"2472:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1057,"name":"bool","nodeType":"ElementaryTypeName","src":"2472:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2471:13:20"},"returnParameters":{"id":1060,"nodeType":"ParameterList","parameters":[],"src":"2493:0:20"},"scope":1074,"src":"2452:42:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1062,"nodeType":"StructuredDocumentation","src":"2500:188:20","text":" @notice Sets `_adapterParams` parameter for `estimateSendUserBalance` and `sendUserBalance` when forwarding\n calls.\n @dev Emits `AdapterParamsUpdated` event."},"functionSelector":"d56b6a4a","id":1067,"implemented":false,"kind":"function","modifiers":[],"name":"setAdapterParams","nodeType":"FunctionDefinition","parameters":{"id":1065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1064,"mutability":"mutable","name":"adapterParams","nodeType":"VariableDeclaration","scope":1067,"src":"2719:26:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1063,"name":"bytes","nodeType":"ElementaryTypeName","src":"2719:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2718:28:20"},"returnParameters":{"id":1066,"nodeType":"ParameterList","parameters":[],"src":"2755:0:20"},"scope":1074,"src":"2693:63:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1068,"nodeType":"StructuredDocumentation","src":"2762:160:20","text":" @notice Sets `_zroPaymentAddress` parameter for `sendUserBalance` when forwarding calls.\n @dev Emits `ZeroPaymentAddressUpdated` event."},"functionSelector":"e241e489","id":1073,"implemented":false,"kind":"function","modifiers":[],"name":"setZeroPaymentAddress","nodeType":"FunctionDefinition","parameters":{"id":1071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1070,"mutability":"mutable","name":"paymentAddress","nodeType":"VariableDeclaration","scope":1073,"src":"2958:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1069,"name":"address","nodeType":"ElementaryTypeName","src":"2958:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2957:24:20"},"returnParameters":{"id":1072,"nodeType":"ParameterList","parameters":[],"src":"2990:0:20"},"scope":1074,"src":"2927:64:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1075,"src":"822:2171:20"}],"src":"688:2306:20"},"id":20},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol","exportedSymbols":{"IOptimismGasLimitProvider":[1087]},"id":1088,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1076,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:21"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1087,"linearizedBaseContracts":[1087],"name":"IOptimismGasLimitProvider","nodeType":"ContractDefinition","nodes":[{"functionSelector":"a0566e72","id":1081,"implemented":false,"kind":"function","modifiers":[],"name":"getOptimismGasLimit","nodeType":"FunctionDefinition","parameters":{"id":1077,"nodeType":"ParameterList","parameters":[],"src":"791:2:21"},"returnParameters":{"id":1080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1079,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":1081,"src":"817:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1078,"name":"uint32","nodeType":"ElementaryTypeName","src":"817:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"816:17:21"},"scope":1087,"src":"763:71:21","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bf5fa772","id":1086,"implemented":false,"kind":"function","modifiers":[],"name":"setOptimismGasLimit","nodeType":"FunctionDefinition","parameters":{"id":1084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1083,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":1086,"src":"869:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1082,"name":"uint32","nodeType":"ElementaryTypeName","src":"869:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"868:17:21"},"returnParameters":{"id":1085,"nodeType":"ParameterList","parameters":[],"src":"894:0:21"},"scope":1087,"src":"840:55:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1088,"src":"721:176:21"}],"src":"688:210:21"},"id":21},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","exportedSymbols":{"IRewardTokenDistributor":[1163]},"id":1164,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1089,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:22"},{"id":1090,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:22"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":1091,"nodeType":"ImportDirective","scope":1164,"sourceUnit":2448,"src":"755:51:22","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1163,"linearizedBaseContracts":[1163],"name":"IRewardTokenDistributor","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IRewardTokenDistributor.Reward","id":1104,"members":[{"constant":false,"id":1093,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":1104,"src":"1070:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1092,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1070:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1095,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":1104,"src":"1092:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1094,"name":"address","nodeType":"ElementaryTypeName","src":"1092:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1097,"mutability":"mutable","name":"period_finish","nodeType":"VariableDeclaration","scope":1104,"src":"1121:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1096,"name":"uint256","nodeType":"ElementaryTypeName","src":"1121:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1099,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":1104,"src":"1152:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1098,"name":"uint256","nodeType":"ElementaryTypeName","src":"1152:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1101,"mutability":"mutable","name":"last_update","nodeType":"VariableDeclaration","scope":1104,"src":"1174:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1100,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1103,"mutability":"mutable","name":"integral","nodeType":"VariableDeclaration","scope":1104,"src":"1203:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1102,"name":"uint256","nodeType":"ElementaryTypeName","src":"1203:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Reward","nodeType":"StructDefinition","scope":1163,"src":"1046:180:22","visibility":"public"},{"functionSelector":"54c49fe9","id":1111,"implemented":false,"kind":"function","modifiers":[],"name":"reward_tokens","nodeType":"FunctionDefinition","parameters":{"id":1107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1106,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":1111,"src":"1255:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1105,"name":"uint256","nodeType":"ElementaryTypeName","src":"1255:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1254:15:22"},"returnParameters":{"id":1110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1109,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1111,"src":"1293:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1108,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1293:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1292:8:22"},"scope":1163,"src":"1232:69:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"48e9c65e","id":1118,"implemented":false,"kind":"function","modifiers":[],"name":"reward_data","nodeType":"FunctionDefinition","parameters":{"id":1114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1113,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":1118,"src":"1328:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1112,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1328:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1327:14:22"},"returnParameters":{"id":1117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1118,"src":"1365:13:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_memory_ptr","typeString":"struct IRewardTokenDistributor.Reward"},"typeName":{"id":1115,"name":"Reward","nodeType":"UserDefinedTypeName","referencedDeclaration":1104,"src":"1365:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage_ptr","typeString":"struct IRewardTokenDistributor.Reward"}},"visibility":"internal"}],"src":"1364:15:22"},"scope":1163,"src":"1307:73:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"84e9bd7e","id":1123,"implemented":false,"kind":"function","modifiers":[],"name":"claim_rewards","nodeType":"FunctionDefinition","parameters":{"id":1121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1120,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1123,"src":"1409:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1119,"name":"address","nodeType":"ElementaryTypeName","src":"1409:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1408:14:22"},"returnParameters":{"id":1122,"nodeType":"ParameterList","parameters":[],"src":"1431:0:22"},"scope":1163,"src":"1386:46:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e8de0d4d","id":1130,"implemented":false,"kind":"function","modifiers":[],"name":"add_reward","nodeType":"FunctionDefinition","parameters":{"id":1128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1125,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":1130,"src":"1458:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1124,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1458:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1127,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":1130,"src":"1478:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1126,"name":"address","nodeType":"ElementaryTypeName","src":"1478:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1457:41:22"},"returnParameters":{"id":1129,"nodeType":"ParameterList","parameters":[],"src":"1507:0:22"},"scope":1163,"src":"1438:70:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"058a3a24","id":1137,"implemented":false,"kind":"function","modifiers":[],"name":"set_reward_distributor","nodeType":"FunctionDefinition","parameters":{"id":1135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1132,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":1137,"src":"1546:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1131,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1546:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1134,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":1137,"src":"1566:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1133,"name":"address","nodeType":"ElementaryTypeName","src":"1566:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1545:41:22"},"returnParameters":{"id":1136,"nodeType":"ParameterList","parameters":[],"src":"1595:0:22"},"scope":1163,"src":"1514:82:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"93f7aa67","id":1144,"implemented":false,"kind":"function","modifiers":[],"name":"deposit_reward_token","nodeType":"FunctionDefinition","parameters":{"id":1142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1139,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":1144,"src":"1632:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1138,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1632:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1141,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1144,"src":"1652:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1140,"name":"uint256","nodeType":"ElementaryTypeName","src":"1652:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1631:36:22"},"returnParameters":{"id":1143,"nodeType":"ParameterList","parameters":[],"src":"1676:0:22"},"scope":1163,"src":"1602:75:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"33fd6f74","id":1153,"implemented":false,"kind":"function","modifiers":[],"name":"claimable_reward","nodeType":"FunctionDefinition","parameters":{"id":1149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1146,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":1153,"src":"1709:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1145,"name":"address","nodeType":"ElementaryTypeName","src":"1709:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1148,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1153,"src":"1730:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1147,"name":"address","nodeType":"ElementaryTypeName","src":"1730:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1708:35:22"},"returnParameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1153,"src":"1767:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"1767:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1766:9:22"},"scope":1163,"src":"1683:93:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"59b7e409","id":1162,"implemented":false,"kind":"function","modifiers":[],"name":"claimable_reward_write","nodeType":"FunctionDefinition","parameters":{"id":1158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1155,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":1162,"src":"1814:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1154,"name":"address","nodeType":"ElementaryTypeName","src":"1814:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1157,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1162,"src":"1835:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1156,"name":"address","nodeType":"ElementaryTypeName","src":"1835:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1813:35:22"},"returnParameters":{"id":1161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1160,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1162,"src":"1867:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1159,"name":"uint256","nodeType":"ElementaryTypeName","src":"1867:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1866:9:22"},"scope":1163,"src":"1782:94:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1164,"src":"1006:872:22"}],"src":"688:1191:22"},"id":22},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol","exportedSymbols":{"IRewardsOnlyGauge":[1205]},"id":1206,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1165,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:23"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol","file":"./IChildChainStreamer.sol","id":1166,"nodeType":"ImportDirective","scope":1206,"sourceUnit":463,"src":"721:35:23","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","file":"./IRewardTokenDistributor.sol","id":1167,"nodeType":"ImportDirective","scope":1206,"sourceUnit":1164,"src":"757:39:23","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1168,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"1007:23:23","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"id":1169,"nodeType":"InheritanceSpecifier","src":"1007:23:23"}],"contractDependencies":[1163],"contractKind":"interface","fullyImplemented":false,"id":1205,"linearizedBaseContracts":[1205,1163],"name":"IRewardsOnlyGauge","nodeType":"ContractDefinition","nodes":[{"functionSelector":"6133f985","id":1178,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":1176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1171,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":1178,"src":"1066:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1170,"name":"address","nodeType":"ElementaryTypeName","src":"1066:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1173,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":1178,"src":"1088:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1172,"name":"address","nodeType":"ElementaryTypeName","src":"1088:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1175,"mutability":"mutable","name":"claimSignature","nodeType":"VariableDeclaration","scope":1178,"src":"1114:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1174,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1114:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1056:86:23"},"returnParameters":{"id":1177,"nodeType":"ParameterList","parameters":[],"src":"1151:0:23"},"scope":1205,"src":"1037:115:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"82c63066","id":1183,"implemented":false,"kind":"function","modifiers":[],"name":"lp_token","nodeType":"FunctionDefinition","parameters":{"id":1179,"nodeType":"ParameterList","parameters":[],"src":"1228:2:23"},"returnParameters":{"id":1182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1181,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1183,"src":"1254:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1180,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1254:6:23","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1253:8:23"},"scope":1205,"src":"1211:51:23","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bf88a6ff","id":1188,"implemented":false,"kind":"function","modifiers":[],"name":"reward_contract","nodeType":"FunctionDefinition","parameters":{"id":1184,"nodeType":"ParameterList","parameters":[],"src":"1292:2:23"},"returnParameters":{"id":1187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1186,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1188,"src":"1318:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":1185,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"1318:19:23","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"internal"}],"src":"1317:21:23"},"scope":1205,"src":"1268:71:23","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"47d2d5d3","id":1199,"implemented":false,"kind":"function","modifiers":[],"name":"set_rewards","nodeType":"FunctionDefinition","parameters":{"id":1197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1190,"mutability":"mutable","name":"childChainStreamer","nodeType":"VariableDeclaration","scope":1199,"src":"1375:26:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1189,"name":"address","nodeType":"ElementaryTypeName","src":"1375:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1192,"mutability":"mutable","name":"claimSig","nodeType":"VariableDeclaration","scope":1199,"src":"1411:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1191,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1411:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1196,"mutability":"mutable","name":"rewardTokens","nodeType":"VariableDeclaration","scope":1199,"src":"1437:32:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_calldata_ptr","typeString":"address[8]"},"typeName":{"baseType":{"id":1193,"name":"address","nodeType":"ElementaryTypeName","src":"1437:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1195,"length":{"hexValue":"38","id":1194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1445:1:23","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"ArrayTypeName","src":"1437:10:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_storage_ptr","typeString":"address[8]"}},"visibility":"internal"}],"src":"1365:110:23"},"returnParameters":{"id":1198,"nodeType":"ParameterList","parameters":[],"src":"1484:0:23"},"scope":1205,"src":"1345:140:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3488bd19","id":1204,"implemented":false,"kind":"function","modifiers":[],"name":"last_claim","nodeType":"FunctionDefinition","parameters":{"id":1200,"nodeType":"ParameterList","parameters":[],"src":"1510:2:23"},"returnParameters":{"id":1203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1202,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1204,"src":"1536:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1201,"name":"uint256","nodeType":"ElementaryTypeName","src":"1536:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1535:9:23"},"scope":1205,"src":"1491:54:23","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1206,"src":"976:571:23"}],"src":"688:860:23"},"id":23},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol","exportedSymbols":{"ISmartWalletChecker":[1215]},"id":1216,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1207,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:24"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1215,"linearizedBaseContracts":[1215],"name":"ISmartWalletChecker","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c23697a8","id":1214,"implemented":false,"kind":"function","modifiers":[],"name":"check","nodeType":"FunctionDefinition","parameters":{"id":1210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1209,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":1214,"src":"772:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1208,"name":"address","nodeType":"ElementaryTypeName","src":"772:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"771:25:24"},"returnParameters":{"id":1213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1212,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1214,"src":"820:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1211,"name":"bool","nodeType":"ElementaryTypeName","src":"820:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"819:6:24"},"scope":1215,"src":"757:69:24","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1216,"src":"721:107:24"}],"src":"688:141:24"},"id":24},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol","exportedSymbols":{"IStakelessGauge":[1239]},"id":1240,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1217,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:25"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"./ILiquidityGauge.sol","id":1218,"nodeType":"ImportDirective","scope":1240,"sourceUnit":929,"src":"721:31:25","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1219,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"783:15:25","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"id":1220,"nodeType":"InheritanceSpecifier","src":"783:15:25"}],"contractDependencies":[928],"contractKind":"interface","fullyImplemented":false,"id":1239,"linearizedBaseContracts":[1239,928],"name":"IStakelessGauge","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1221,"nodeType":"StructuredDocumentation","src":"805:82:25","text":"@dev Performs a checkpoint, computing how much should be minted for the gauge."},"functionSelector":"c2c4c5c1","id":1226,"implemented":false,"kind":"function","modifiers":[],"name":"checkpoint","nodeType":"FunctionDefinition","parameters":{"id":1222,"nodeType":"ParameterList","parameters":[],"src":"911:2:25"},"returnParameters":{"id":1225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1224,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1226,"src":"940:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1223,"name":"bool","nodeType":"ElementaryTypeName","src":"940:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"939:6:25"},"scope":1239,"src":"892:54:25","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1227,"nodeType":"StructuredDocumentation","src":"952:106:25","text":"@dev Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address)."},"functionSelector":"1b88094d","id":1232,"implemented":false,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","parameters":{"id":1228,"nodeType":"ParameterList","parameters":[],"src":"1084:2:25"},"returnParameters":{"id":1231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1230,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1232,"src":"1110:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1229,"name":"address","nodeType":"ElementaryTypeName","src":"1110:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1109:9:25"},"scope":1239,"src":"1063:56:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1233,"nodeType":"StructuredDocumentation","src":"1125:244:25","text":" @dev Returns total ETH bridge cost (post mint action) in wei.\n Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH\n to work; in those cases the cost will be 0."},"functionSelector":"b0245225","id":1238,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":1234,"nodeType":"ParameterList","parameters":[],"src":"1401:2:25"},"returnParameters":{"id":1237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1236,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1238,"src":"1427:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1235,"name":"uint256","nodeType":"ElementaryTypeName","src":"1427:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1426:9:25"},"scope":1239,"src":"1374:62:25","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1240,"src":"754:684:25"}],"src":"688:751:25"},"id":25},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol","exportedSymbols":{"IStakelessGaugeCheckpointer":[1417]},"id":1418,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1241,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:26"},{"id":1242,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:26"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol","file":"./IGaugeAdder.sol","id":1243,"nodeType":"ImportDirective","scope":1418,"sourceUnit":740,"src":"747:27:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol","file":"./IStakelessGauge.sol","id":1244,"nodeType":"ImportDirective","scope":1418,"sourceUnit":1240,"src":"775:31:26","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1245,"nodeType":"StructuredDocumentation","src":"808:323:26","text":" @title Stakeless Gauge Checkpointer interface\n @notice Manages checkpoints for L2 and mainnet stakeless root gauges, allowing to perform mutiple checkpoints in a\n single call.\n @dev Supports gauge types registered in `GaugeAdder`.\n Gauges to be checkpointed need to be added to the controller beforehand."},"fullyImplemented":false,"id":1417,"linearizedBaseContracts":[1417],"name":"IStakelessGaugeCheckpointer","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1246,"nodeType":"StructuredDocumentation","src":"1286:77:26","text":" @notice Emitted when a gauge is added to the checkpointer."},"id":1254,"name":"GaugeAdded","nodeType":"EventDefinition","parameters":{"id":1253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1248,"indexed":true,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":1254,"src":"1385:29:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":1247,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"1385:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"},{"constant":false,"id":1250,"indexed":true,"mutability":"mutable","name":"indexedGaugeType","nodeType":"VariableDeclaration","scope":1254,"src":"1416:31:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1249,"name":"string","nodeType":"ElementaryTypeName","src":"1416:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1252,"indexed":false,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1254,"src":"1449:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1251,"name":"string","nodeType":"ElementaryTypeName","src":"1449:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1384:82:26"},"src":"1368:99:26"},{"anonymous":false,"documentation":{"id":1255,"nodeType":"StructuredDocumentation","src":"1473:81:26","text":" @notice Emitted when a gauge is removed from the checkpointer."},"id":1263,"name":"GaugeRemoved","nodeType":"EventDefinition","parameters":{"id":1262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1257,"indexed":true,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":1263,"src":"1578:29:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":1256,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"1578:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"},{"constant":false,"id":1259,"indexed":true,"mutability":"mutable","name":"indexedGaugeType","nodeType":"VariableDeclaration","scope":1263,"src":"1609:31:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1258,"name":"string","nodeType":"ElementaryTypeName","src":"1609:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1261,"indexed":false,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1263,"src":"1642:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1260,"name":"string","nodeType":"ElementaryTypeName","src":"1642:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1577:82:26"},"src":"1559:101:26"},{"documentation":{"id":1264,"nodeType":"StructuredDocumentation","src":"1666:57:26","text":" @notice Returns `GaugeAdder` contract."},"functionSelector":"7c1fef51","id":1269,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeAdder","nodeType":"FunctionDefinition","parameters":{"id":1265,"nodeType":"ParameterList","parameters":[],"src":"1750:2:26"},"returnParameters":{"id":1268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1267,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1269,"src":"1776:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"},"typeName":{"id":1266,"name":"IGaugeAdder","nodeType":"UserDefinedTypeName","referencedDeclaration":739,"src":"1776:11:26","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"visibility":"internal"}],"src":"1775:13:26"},"scope":1417,"src":"1728:61:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1270,"nodeType":"StructuredDocumentation","src":"1795:77:26","text":" @notice Returns gauge types available in the checkpointer."},"functionSelector":"afcb1a86","id":1276,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeTypes","nodeType":"FunctionDefinition","parameters":{"id":1271,"nodeType":"ParameterList","parameters":[],"src":"1899:2:26"},"returnParameters":{"id":1275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1274,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1276,"src":"1925:15:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":1272,"name":"string","nodeType":"ElementaryTypeName","src":"1925:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":1273,"nodeType":"ArrayTypeName","src":"1925:8:26","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"src":"1924:17:26"},"scope":1417,"src":"1877:65:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1277,"nodeType":"StructuredDocumentation","src":"1948:717:26","text":" @notice Adds an array of gauges from the given type. This is a permissioned function.\n @dev Gauges added will be considered when performing checkpoints.\n The gauges to add should meet the following preconditions:\n - They must exist in the GaugeController, according to GaugeController#gauge_exists.\n - They must not be killed.\n - They must not have been previously added to the checkpointer.\n Unlike `addGauges`, this function can add gauges that were created by factories registered in a deprecated\n `GaugeAdder`, and therefore cannot be validated by the current `GaugeAdder`.\n @param gaugeType Type of the gauge.\n @param gauges Gauges to add."},"functionSelector":"d8dba2ce","id":1285,"implemented":false,"kind":"function","modifiers":[],"name":"addGaugesWithVerifiedType","nodeType":"FunctionDefinition","parameters":{"id":1283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1279,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1285,"src":"2705:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1278,"name":"string","nodeType":"ElementaryTypeName","src":"2705:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1282,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":1285,"src":"2730:33:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":1280,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"2730:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":1281,"nodeType":"ArrayTypeName","src":"2730:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"2704:60:26"},"returnParameters":{"id":1284,"nodeType":"ParameterList","parameters":[],"src":"2773:0:26"},"scope":1417,"src":"2670:104:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1286,"nodeType":"StructuredDocumentation","src":"2780:605:26","text":" @notice Adds an array of gauges from the given type.\n @dev Gauges added will be considered when performing checkpoints.\n The gauges to add should meet the following preconditions:\n - They must have been created in a valid `GaugeFactory`, according to `GaugeAdder#isGaugeFromValidFactory`.\n - They must exist in the `GaugeController`, according to `GaugeController#gauge_exists`.\n - They must not be killed.\n - They must not have been previously added to the checkpointer.\n @param gaugeType Type of the gauge.\n @param gauges Gauges to add."},"functionSelector":"f7178b88","id":1294,"implemented":false,"kind":"function","modifiers":[],"name":"addGauges","nodeType":"FunctionDefinition","parameters":{"id":1292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1288,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1294,"src":"3409:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1287,"name":"string","nodeType":"ElementaryTypeName","src":"3409:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1291,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":1294,"src":"3434:33:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":1289,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"3434:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":1290,"nodeType":"ArrayTypeName","src":"3434:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"3408:60:26"},"returnParameters":{"id":1293,"nodeType":"ParameterList","parameters":[],"src":"3477:0:26"},"scope":1417,"src":"3390:88:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"3484:350:26","text":" @notice Removes an array of gauges from the given type.\n @dev Removed gauges will not be considered when performing checkpoints. To remove gauges:\n - They must be killed.\n - They must have been previously added to the checkpointer.\n @param gaugeType Type of the gauge.\n @param gauges Gauges to remove."},"functionSelector":"73ebd060","id":1303,"implemented":false,"kind":"function","modifiers":[],"name":"removeGauges","nodeType":"FunctionDefinition","parameters":{"id":1301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1297,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1303,"src":"3861:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1296,"name":"string","nodeType":"ElementaryTypeName","src":"3861:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1300,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":1303,"src":"3886:33:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":1298,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"3886:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":1299,"nodeType":"ArrayTypeName","src":"3886:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"3860:60:26"},"returnParameters":{"id":1302,"nodeType":"ParameterList","parameters":[],"src":"3929:0:26"},"scope":1417,"src":"3839:91:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1304,"nodeType":"StructuredDocumentation","src":"3936:184:26","text":" @notice Returns true if the given gauge was added for the given type; false otherwise.\n @param gaugeType Type of the gauge.\n @param gauge Gauge to check."},"functionSelector":"c91be043","id":1313,"implemented":false,"kind":"function","modifiers":[],"name":"hasGauge","nodeType":"FunctionDefinition","parameters":{"id":1309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1306,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1313,"src":"4143:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1305,"name":"string","nodeType":"ElementaryTypeName","src":"4143:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1308,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":1313,"src":"4168:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":1307,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"4168:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"4142:48:26"},"returnParameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1313,"src":"4214:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1310,"name":"bool","nodeType":"ElementaryTypeName","src":"4214:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4213:6:26"},"scope":1417,"src":"4125:95:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1314,"nodeType":"StructuredDocumentation","src":"4226:122:26","text":" @notice Returns the amount of added gauges for a given type.\n @param gaugeType Type of the gauge."},"functionSelector":"4db34d2a","id":1321,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalGauges","nodeType":"FunctionDefinition","parameters":{"id":1317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1316,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1321,"src":"4377:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1315,"name":"string","nodeType":"ElementaryTypeName","src":"4377:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4376:25:26"},"returnParameters":{"id":1320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1319,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1321,"src":"4425:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1318,"name":"uint256","nodeType":"ElementaryTypeName","src":"4425:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4424:9:26"},"scope":1417,"src":"4353:81:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1322,"nodeType":"StructuredDocumentation","src":"4440:279:26","text":" @notice Returns the gauge of a given type at the given index.\n @dev Reverts if the index is greater than or equal to the amount of added gauges for the given type.\n @param gaugeType Type of the gauge.\n @param index - Index of the added gauge."},"functionSelector":"27cb2a3b","id":1331,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeAtIndex","nodeType":"FunctionDefinition","parameters":{"id":1327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1324,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1331,"src":"4749:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1323,"name":"string","nodeType":"ElementaryTypeName","src":"4749:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1326,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":1331,"src":"4774:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1325,"name":"uint256","nodeType":"ElementaryTypeName","src":"4774:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4748:40:26"},"returnParameters":{"id":1330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1329,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1331,"src":"4812:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":1328,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"4812:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"4811:17:26"},"scope":1417,"src":"4724:105:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1332,"nodeType":"StructuredDocumentation","src":"4835:118:26","text":" @notice Returns the timestamp corresponding to the start of the previous week of the current block."},"functionSelector":"46583adf","id":1337,"implemented":false,"kind":"function","modifiers":[],"name":"getRoundedDownBlockTimestamp","nodeType":"FunctionDefinition","parameters":{"id":1333,"nodeType":"ParameterList","parameters":[],"src":"4995:2:26"},"returnParameters":{"id":1336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1335,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1337,"src":"5021:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1334,"name":"uint256","nodeType":"ElementaryTypeName","src":"5021:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5020:9:26"},"scope":1417,"src":"4958:72:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1338,"nodeType":"StructuredDocumentation","src":"5036:372:26","text":" @notice Performs a checkpoint for all added gauges above the given relative weight threshold.\n @dev Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getTotalBridgeCost` to\n determine the required amount of ETH for the execution to succeed.\n @param minRelativeWeight Threshold to filter out gauges below it."},"functionSelector":"804d17dc","id":1343,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointAllGaugesAboveRelativeWeight","nodeType":"FunctionDefinition","parameters":{"id":1341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1340,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":1343,"src":"5461:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1339,"name":"uint256","nodeType":"ElementaryTypeName","src":"5461:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5460:27:26"},"returnParameters":{"id":1342,"nodeType":"ParameterList","parameters":[],"src":"5504:0:26"},"scope":1417,"src":"5413:92:26","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1344,"nodeType":"StructuredDocumentation","src":"5511:506:26","text":" @notice Performs a checkpoint for all added gauges above the given relative weight threshold for the given types.\n @dev Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getGaugeTypesBridgeCost` to\n determine the required amount of ETH for the execution to succeed.\n Reverts if invalid gauge types are given.\n @param gaugeTypes Types of the gauges to checkpoint.\n @param minRelativeWeight Threshold to filter out gauges below it."},"functionSelector":"97510496","id":1352,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointGaugesOfTypesAboveRelativeWeight","nodeType":"FunctionDefinition","parameters":{"id":1350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1347,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":1352,"src":"6074:26:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":1345,"name":"string","nodeType":"ElementaryTypeName","src":"6074:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":1346,"nodeType":"ArrayTypeName","src":"6074:8:26","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":1349,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":1352,"src":"6102:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1348,"name":"uint256","nodeType":"ElementaryTypeName","src":"6102:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6073:55:26"},"returnParameters":{"id":1351,"nodeType":"ParameterList","parameters":[],"src":"6161:0:26"},"scope":1417,"src":"6022:140:26","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1353,"nodeType":"StructuredDocumentation","src":"6168:451:26","text":" @notice Performs a checkpoint for a single added gauge of a given type.\n @dev Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getSingleBridgeCost` to\n determine the required amount of ETH for the execution to succeed.\n Reverts if the gauge was not added to the checkpointer beforehand.\n @param gaugeType Type of the gauge.\n @param gauge Address of the gauge to checkpoint."},"functionSelector":"7d0a6616","id":1360,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointSingleGauge","nodeType":"FunctionDefinition","parameters":{"id":1358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1355,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1360,"src":"6655:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1354,"name":"string","nodeType":"ElementaryTypeName","src":"6655:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1357,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":1360,"src":"6680:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":1356,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"6680:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"6654:48:26"},"returnParameters":{"id":1359,"nodeType":"ParameterList","parameters":[],"src":"6719:0:26"},"scope":1417,"src":"6624:96:26","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1361,"nodeType":"StructuredDocumentation","src":"6726:418:26","text":" @notice Performs a checkpoint for a multiple added gauges of the given types.\n @dev Reverts if the ETH sent in the call is not enough to cover bridge costs.\n Reverts if the gauges were not added to the checkpointer beforehand, or if an invalid gauge type is given.\n @param gaugeType Type of the gauges to be checkpointed.\n @param gauges Addresses of the gauges to checkpoint."},"functionSelector":"43590308","id":1369,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointMultipleGaugesOfMatchingType","nodeType":"FunctionDefinition","parameters":{"id":1367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1363,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1369,"src":"7197:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1362,"name":"string","nodeType":"ElementaryTypeName","src":"7197:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1366,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":1369,"src":"7222:31:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":1364,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"7222:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":1365,"nodeType":"ArrayTypeName","src":"7222:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"7196:58:26"},"returnParameters":{"id":1368,"nodeType":"ParameterList","parameters":[],"src":"7287:0:26"},"scope":1417,"src":"7149:139:26","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1370,"nodeType":"StructuredDocumentation","src":"7294:556:26","text":" @notice Performs a checkpoint for a multiple added gauges of the given types.\n @dev Reverts if the ETH sent in the call is not enough to cover bridge costs.\n Reverts if the gauges were not added to the checkpointer beforehand, or if invalid gauge types are given.\n Reverts if the types array does not have the same length as the gauges array.\n @param gaugeTypes Types of the gauges to be checkpointed, in the same order as the gauges to be checkpointed.\n @param gauges Addresses of the gauges to checkpoint."},"functionSelector":"4a3a1e11","id":1379,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointMultipleGauges","nodeType":"FunctionDefinition","parameters":{"id":1377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1373,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":1379,"src":"7889:26:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":1371,"name":"string","nodeType":"ElementaryTypeName","src":"7889:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":1372,"nodeType":"ArrayTypeName","src":"7889:8:26","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":1376,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":1379,"src":"7917:31:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":1374,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"7917:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":1375,"nodeType":"ArrayTypeName","src":"7917:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"7888:61:26"},"returnParameters":{"id":1378,"nodeType":"ParameterList","parameters":[],"src":"7966:0:26"},"scope":1417,"src":"7855:112:26","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1380,"nodeType":"StructuredDocumentation","src":"7973:373:26","text":" @notice Returns the ETH cost to checkpoint all gauges for a given minimum relative weight.\n @dev A lower minimum relative weight might return higher costs, since more gauges could potentially be included\n in the checkpoint.\n @param minRelativeWeight Minimum relative weight filter: gauges below this value do not add to the bridge cost."},"functionSelector":"27f79107","id":1387,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":1383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1382,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":1387,"src":"8379:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1381,"name":"uint256","nodeType":"ElementaryTypeName","src":"8379:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8378:27:26"},"returnParameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1387,"src":"8429:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"8429:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8428:9:26"},"scope":1417,"src":"8351:87:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1388,"nodeType":"StructuredDocumentation","src":"8444:437:26","text":" @notice Returns the ETH cost to checkpoint all gauges from the given types.\n @dev A lower minimum relative weight might return higher costs, since more gauges could potentially be included\n in the checkpoint. Reverts for invalid gauge types.\n @param gaugeTypes Types of the gauges.\n @param minRelativeWeight Minimum relative weight filter: gauges below this value do not add to the bridge cost."},"functionSelector":"a9a7f87e","id":1398,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeTypesBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":1394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1391,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":1398,"src":"8919:26:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":1389,"name":"string","nodeType":"ElementaryTypeName","src":"8919:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":1390,"nodeType":"ArrayTypeName","src":"8919:8:26","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":1393,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":1398,"src":"8947:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1392,"name":"uint256","nodeType":"ElementaryTypeName","src":"8947:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8918:55:26"},"returnParameters":{"id":1397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1396,"mutability":"mutable","name":"totalCost","nodeType":"VariableDeclaration","scope":1398,"src":"9021:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1395,"name":"uint256","nodeType":"ElementaryTypeName","src":"9021:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9020:19:26"},"scope":1417,"src":"8886:154:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1399,"nodeType":"StructuredDocumentation","src":"9046:306:26","text":" @notice Returns the ETH cost to checkpoint a single given gauge.\n @dev Reverts if the gauge was not added to the checkpointer beforehand, or if the gauge type is invalid.\n @param gaugeType Type of the gauge.\n @param gauge Address of the gauge to check the bridge costs."},"functionSelector":"2adbe5ac","id":1408,"implemented":false,"kind":"function","modifiers":[],"name":"getSingleBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":1404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1401,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1408,"src":"9386:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1400,"name":"string","nodeType":"ElementaryTypeName","src":"9386:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1403,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":1408,"src":"9411:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":1402,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"9411:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"9385:48:26"},"returnParameters":{"id":1407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1406,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1408,"src":"9457:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1405,"name":"uint256","nodeType":"ElementaryTypeName","src":"9457:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9456:9:26"},"scope":1417,"src":"9357:109:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1409,"nodeType":"StructuredDocumentation","src":"9472:80:26","text":" @notice Returns true if gauge type is valid; false otherwise."},"functionSelector":"16e772bc","id":1416,"implemented":false,"kind":"function","modifiers":[],"name":"isValidGaugeType","nodeType":"FunctionDefinition","parameters":{"id":1412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1411,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1416,"src":"9583:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1410,"name":"string","nodeType":"ElementaryTypeName","src":"9583:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9582:25:26"},"returnParameters":{"id":1415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1414,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1416,"src":"9631:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1413,"name":"bool","nodeType":"ElementaryTypeName","src":"9631:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9630:6:26"},"scope":1417,"src":"9557:80:26","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1418,"src":"1132:8507:26"}],"src":"688:8952:26"},"id":26},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","exportedSymbols":{"IStakingLiquidityGauge":[1454]},"id":1455,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1419,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:27"},{"id":1420,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:27"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":1421,"nodeType":"ImportDirective","scope":1455,"sourceUnit":2448,"src":"755:51:27","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"./ILiquidityGauge.sol","id":1422,"nodeType":"ImportDirective","scope":1455,"sourceUnit":929,"src":"808:31:27","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","file":"./IRewardTokenDistributor.sol","id":1423,"nodeType":"ImportDirective","scope":1455,"sourceUnit":1164,"src":"840:39:27","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1424,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"1115:23:27","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"id":1425,"nodeType":"InheritanceSpecifier","src":"1115:23:27"},{"baseName":{"id":1426,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"1140:15:27","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"id":1427,"nodeType":"InheritanceSpecifier","src":"1140:15:27"},{"baseName":{"id":1428,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1157:6:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":1429,"nodeType":"InheritanceSpecifier","src":"1157:6:27"}],"contractDependencies":[928,1163,2447],"contractKind":"interface","fullyImplemented":false,"id":1454,"linearizedBaseContracts":[1454,2447,928,1163],"name":"IStakingLiquidityGauge","nodeType":"ContractDefinition","nodes":[{"functionSelector":"cd6dc687","id":1436,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":1434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1431,"mutability":"mutable","name":"lpToken","nodeType":"VariableDeclaration","scope":1436,"src":"1190:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1430,"name":"address","nodeType":"ElementaryTypeName","src":"1190:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1433,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":1436,"src":"1207:25:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1432,"name":"uint256","nodeType":"ElementaryTypeName","src":"1207:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1189:44:27"},"returnParameters":{"id":1435,"nodeType":"ParameterList","parameters":[],"src":"1242:0:27"},"scope":1454,"src":"1170:73:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"82c63066","id":1441,"implemented":false,"kind":"function","modifiers":[],"name":"lp_token","nodeType":"FunctionDefinition","parameters":{"id":1437,"nodeType":"ParameterList","parameters":[],"src":"1266:2:27"},"returnParameters":{"id":1440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1439,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1441,"src":"1292:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1438,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1292:6:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1291:8:27"},"scope":1454,"src":"1249:51:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6e553f65","id":1448,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":1446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1443,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":1448,"src":"1323:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1442,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1445,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":1448,"src":"1338:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1444,"name":"address","nodeType":"ElementaryTypeName","src":"1338:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1322:34:27"},"returnParameters":{"id":1447,"nodeType":"ParameterList","parameters":[],"src":"1365:0:27"},"scope":1454,"src":"1306:60:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2e1a7d4d","id":1453,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":1451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1450,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":1453,"src":"1390:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1449,"name":"uint256","nodeType":"ElementaryTypeName","src":"1390:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1389:15:27"},"returnParameters":{"id":1452,"nodeType":"ParameterList","parameters":[],"src":"1413:0:27"},"scope":1454,"src":"1372:42:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1455,"src":"1079:337:27"}],"src":"688:729:27"},"id":27},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol","exportedSymbols":{"IVeDelegation":[1469]},"id":1470,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1456,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:28"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1469,"linearizedBaseContracts":[1469],"name":"IVeDelegation","nodeType":"ContractDefinition","nodes":[{"functionSelector":"bbf7408a","id":1463,"implemented":false,"kind":"function","modifiers":[],"name":"adjusted_balance_of","nodeType":"FunctionDefinition","parameters":{"id":1459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1458,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1463,"src":"1011:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1457,"name":"address","nodeType":"ElementaryTypeName","src":"1011:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1010:14:28"},"returnParameters":{"id":1462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1461,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1463,"src":"1048:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1460,"name":"uint256","nodeType":"ElementaryTypeName","src":"1048:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1047:9:28"},"scope":1469,"src":"982:75:28","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"18160ddd","id":1468,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":1464,"nodeType":"ParameterList","parameters":[],"src":"1083:2:28"},"returnParameters":{"id":1467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1466,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1468,"src":"1109:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1465,"name":"uint256","nodeType":"ElementaryTypeName","src":"1109:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1108:9:28"},"scope":1469,"src":"1063:55:28","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1470,"src":"899:221:28"}],"src":"688:433:28"},"id":28},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","exportedSymbols":{"IVotingEscrow":[1559]},"id":1560,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1471,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:29"},{"id":1472,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:29"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","file":"./IAuthorizerAdaptor.sol","id":1473,"nodeType":"ImportDirective","scope":1560,"sourceUnit":50,"src":"755:34:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol","file":"./ISmartWalletChecker.sol","id":1474,"nodeType":"ImportDirective","scope":1560,"sourceUnit":1216,"src":"790:35:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":1475,"nodeType":"ImportDirective","scope":1560,"sourceUnit":2448,"src":"826:51:29","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1476,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1084:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":1477,"nodeType":"InheritanceSpecifier","src":"1084:6:29"}],"contractDependencies":[2447],"contractKind":"interface","fullyImplemented":false,"id":1559,"linearizedBaseContracts":[1559,2447],"name":"IVotingEscrow","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IVotingEscrow.Point","id":1486,"members":[{"constant":false,"id":1479,"mutability":"mutable","name":"bias","nodeType":"VariableDeclaration","scope":1486,"src":"1120:11:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":1478,"name":"int128","nodeType":"ElementaryTypeName","src":"1120:6:29","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":1481,"mutability":"mutable","name":"slope","nodeType":"VariableDeclaration","scope":1486,"src":"1141:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":1480,"name":"int128","nodeType":"ElementaryTypeName","src":"1141:6:29","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":1483,"mutability":"mutable","name":"ts","nodeType":"VariableDeclaration","scope":1486,"src":"1181:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1482,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1485,"mutability":"mutable","name":"blk","nodeType":"VariableDeclaration","scope":1486,"src":"1201:11:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1484,"name":"uint256","nodeType":"ElementaryTypeName","src":"1201:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Point","nodeType":"StructDefinition","scope":1559,"src":"1097:131:29","visibility":"public"},{"functionSelector":"900cf0cf","id":1491,"implemented":false,"kind":"function","modifiers":[],"name":"epoch","nodeType":"FunctionDefinition","parameters":{"id":1487,"nodeType":"ParameterList","parameters":[],"src":"1248:2:29"},"returnParameters":{"id":1490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1489,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1491,"src":"1274:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1488,"name":"uint256","nodeType":"ElementaryTypeName","src":"1274:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1273:9:29"},"scope":1559,"src":"1234:49:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"00fdd58e","id":1500,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":1496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1493,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1500,"src":"1308:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1492,"name":"address","nodeType":"ElementaryTypeName","src":"1308:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1495,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":1500,"src":"1322:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"1322:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1307:33:29"},"returnParameters":{"id":1499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1498,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1500,"src":"1364:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1497,"name":"uint256","nodeType":"ElementaryTypeName","src":"1364:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1363:9:29"},"scope":1559,"src":"1289:84:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bd85b039","id":1507,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":1503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1502,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":1507,"src":"1400:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1501,"name":"uint256","nodeType":"ElementaryTypeName","src":"1400:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1399:19:29"},"returnParameters":{"id":1506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1505,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1507,"src":"1442:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1504,"name":"uint256","nodeType":"ElementaryTypeName","src":"1442:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1441:9:29"},"scope":1559,"src":"1379:72:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"010ae757","id":1514,"implemented":false,"kind":"function","modifiers":[],"name":"user_point_epoch","nodeType":"FunctionDefinition","parameters":{"id":1510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1509,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1514,"src":"1483:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1508,"name":"address","nodeType":"ElementaryTypeName","src":"1483:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1482:14:29"},"returnParameters":{"id":1513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1512,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1514,"src":"1520:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1511,"name":"uint256","nodeType":"ElementaryTypeName","src":"1520:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1519:9:29"},"scope":1559,"src":"1457:72:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d1febfb9","id":1521,"implemented":false,"kind":"function","modifiers":[],"name":"point_history","nodeType":"FunctionDefinition","parameters":{"id":1517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1516,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":1521,"src":"1558:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1515,"name":"uint256","nodeType":"ElementaryTypeName","src":"1558:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1557:19:29"},"returnParameters":{"id":1520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1519,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1521,"src":"1600:12:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":1518,"name":"Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"1600:5:29","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"1599:14:29"},"scope":1559,"src":"1535:79:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"28d09d47","id":1530,"implemented":false,"kind":"function","modifiers":[],"name":"user_point_history","nodeType":"FunctionDefinition","parameters":{"id":1526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1523,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1530,"src":"1648:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1522,"name":"address","nodeType":"ElementaryTypeName","src":"1648:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1525,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":1530,"src":"1662:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1524,"name":"uint256","nodeType":"ElementaryTypeName","src":"1662:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1647:33:29"},"returnParameters":{"id":1529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1528,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1530,"src":"1704:12:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":1527,"name":"Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"1704:5:29","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"1703:14:29"},"scope":1559,"src":"1620:98:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c2c4c5c1","id":1533,"implemented":false,"kind":"function","modifiers":[],"name":"checkpoint","nodeType":"FunctionDefinition","parameters":{"id":1531,"nodeType":"ParameterList","parameters":[],"src":"1743:2:29"},"returnParameters":{"id":1532,"nodeType":"ParameterList","parameters":[],"src":"1754:0:29"},"scope":1559,"src":"1724:31:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f851a440","id":1538,"implemented":false,"kind":"function","modifiers":[],"name":"admin","nodeType":"FunctionDefinition","parameters":{"id":1534,"nodeType":"ParameterList","parameters":[],"src":"1775:2:29"},"returnParameters":{"id":1537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1536,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1538,"src":"1801:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":1535,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1801:18:29","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"1800:20:29"},"scope":1559,"src":"1761:60:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7175d4f7","id":1543,"implemented":false,"kind":"function","modifiers":[],"name":"smart_wallet_checker","nodeType":"FunctionDefinition","parameters":{"id":1539,"nodeType":"ParameterList","parameters":[],"src":"1856:2:29"},"returnParameters":{"id":1542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1541,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1543,"src":"1882:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"},"typeName":{"id":1540,"name":"ISmartWalletChecker","nodeType":"UserDefinedTypeName","referencedDeclaration":1215,"src":"1882:19:29","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"visibility":"internal"}],"src":"1881:21:29"},"scope":1559,"src":"1827:76:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"57f901e2","id":1548,"implemented":false,"kind":"function","modifiers":[],"name":"commit_smart_wallet_checker","nodeType":"FunctionDefinition","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1545,"mutability":"mutable","name":"newSmartWalletChecker","nodeType":"VariableDeclaration","scope":1548,"src":"1946:29:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1544,"name":"address","nodeType":"ElementaryTypeName","src":"1946:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1945:31:29"},"returnParameters":{"id":1547,"nodeType":"ParameterList","parameters":[],"src":"1985:0:29"},"scope":1559,"src":"1909:77:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8e5b490f","id":1551,"implemented":false,"kind":"function","modifiers":[],"name":"apply_smart_wallet_checker","nodeType":"FunctionDefinition","parameters":{"id":1549,"nodeType":"ParameterList","parameters":[],"src":"2027:2:29"},"returnParameters":{"id":1550,"nodeType":"ParameterList","parameters":[],"src":"2038:0:29"},"scope":1559,"src":"1992:47:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"adc63589","id":1558,"implemented":false,"kind":"function","modifiers":[],"name":"locked__end","nodeType":"FunctionDefinition","parameters":{"id":1554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1553,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1558,"src":"2066:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1552,"name":"address","nodeType":"ElementaryTypeName","src":"2066:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2065:14:29"},"returnParameters":{"id":1557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1556,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1558,"src":"2103:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1555,"name":"uint256","nodeType":"ElementaryTypeName","src":"2103:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2102:9:29"},"scope":1559,"src":"2045:67:29","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1560,"src":"1057:1057:29"}],"src":"688:1427:29"},"id":29},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol","exportedSymbols":{"IVotingEscrowRemapper":[1674]},"id":1675,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1561,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"694:23:30"},{"id":1562,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"718:33:30"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol","file":"./IOmniVotingEscrowAdaptor.sol","id":1563,"nodeType":"ImportDirective","scope":1675,"sourceUnit":1006,"src":"753:40:30","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","file":"./IVotingEscrow.sol","id":1564,"nodeType":"ImportDirective","scope":1675,"sourceUnit":1560,"src":"794:29:30","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1565,"nodeType":"StructuredDocumentation","src":"825:675:30","text":" @notice This contract allows veBAL holders on Ethereum to assign their balance to designated addresses on each L2.\n This is intended for smart contracts that are not deployed to the same address on all networks. EOA's are\n expected to either use the same address, or manage delegation on L2 networks themselves.\n @dev For each network (chainId), we maintain a mapping between local (Ethereum) and remote (L2) addresses.\n This contract remaps balance queries on remote network addresses to their corresponding local addresses.\n Users able to call this contract can set their own mappings, or delegate this function to another account if they\n cannot."},"fullyImplemented":false,"id":1674,"linearizedBaseContracts":[1674],"name":"IVotingEscrowRemapper","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":1573,"name":"AddressMappingUpdated","nodeType":"EventDefinition","parameters":{"id":1572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1567,"indexed":true,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":1573,"src":"1567:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1566,"name":"address","nodeType":"ElementaryTypeName","src":"1567:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1569,"indexed":true,"mutability":"mutable","name":"remoteUser","nodeType":"VariableDeclaration","scope":1573,"src":"1594:26:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1568,"name":"address","nodeType":"ElementaryTypeName","src":"1594:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1571,"indexed":true,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":1573,"src":"1622:22:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1570,"name":"uint16","nodeType":"ElementaryTypeName","src":"1622:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1566:79:30"},"src":"1539:107:30"},{"anonymous":false,"id":1579,"name":"RemoteAddressMappingCleared","nodeType":"EventDefinition","parameters":{"id":1578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1575,"indexed":true,"mutability":"mutable","name":"remoteUser","nodeType":"VariableDeclaration","scope":1579,"src":"1685:26:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1574,"name":"address","nodeType":"ElementaryTypeName","src":"1685:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1577,"indexed":true,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":1579,"src":"1713:22:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1576,"name":"uint16","nodeType":"ElementaryTypeName","src":"1713:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1684:52:30"},"src":"1651:86:30"},{"anonymous":false,"id":1585,"name":"AddressDelegateUpdated","nodeType":"EventDefinition","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1581,"indexed":true,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":1585,"src":"1771:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1580,"name":"address","nodeType":"ElementaryTypeName","src":"1771:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1583,"indexed":true,"mutability":"mutable","name":"delegate","nodeType":"VariableDeclaration","scope":1585,"src":"1798:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1582,"name":"address","nodeType":"ElementaryTypeName","src":"1798:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1770:53:30"},"src":"1742:82:30"},{"documentation":{"id":1586,"nodeType":"StructuredDocumentation","src":"1830:66:30","text":" @notice Returns Voting Escrow contract address."},"functionSelector":"08b0308a","id":1591,"implemented":false,"kind":"function","modifiers":[],"name":"getVotingEscrow","nodeType":"FunctionDefinition","parameters":{"id":1587,"nodeType":"ParameterList","parameters":[],"src":"1925:2:30"},"returnParameters":{"id":1590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1589,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1591,"src":"1951:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":1588,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"1951:13:30","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"src":"1950:15:30"},"scope":1674,"src":"1901:65:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"1972:153:30","text":" @notice Returns Omni Voting Escrow Adaptor contract address, which interfaces with the gateway to bridge\n veBAL balances to L2s."},"functionSelector":"5e5543be","id":1597,"implemented":false,"kind":"function","modifiers":[],"name":"getOmniVotingEscrowAdaptor","nodeType":"FunctionDefinition","parameters":{"id":1593,"nodeType":"ParameterList","parameters":[],"src":"2165:2:30"},"returnParameters":{"id":1596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1595,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1597,"src":"2191:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"},"typeName":{"id":1594,"name":"IOmniVotingEscrowAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":1005,"src":"2191:24:30","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"visibility":"internal"}],"src":"2190:26:30"},"scope":1674,"src":"2130:87:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1598,"nodeType":"StructuredDocumentation","src":"2223:325:30","text":" @notice Returns the current total supply of veBAL as a Point.\n @dev We return the total supply as a Point to allow extrapolating this into the future. Note that this\n extrapolation will become invalid when crossing weeks, since we're not taking into account veBAL locks that\n expire then."},"functionSelector":"f6f4a332","id":1603,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalSupplyPoint","nodeType":"FunctionDefinition","parameters":{"id":1599,"nodeType":"ParameterList","parameters":[],"src":"2581:2:30"},"returnParameters":{"id":1602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1601,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1603,"src":"2607:26:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":1600,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"2607:19:30","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"2606:28:30"},"scope":1674,"src":"2553:82:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1604,"nodeType":"StructuredDocumentation","src":"2641:290:30","text":" @notice Returns a user's current veBAL balance as a Point. Note that we don't apply any remappings in this query.\n The returned value is taken directly from the voting escrow.\n @dev We return the balance as a Point to allow extrapolating this into the future."},"functionSelector":"71628bfd","id":1611,"implemented":false,"kind":"function","modifiers":[],"name":"getUserPoint","nodeType":"FunctionDefinition","parameters":{"id":1607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1606,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1611,"src":"2958:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1605,"name":"address","nodeType":"ElementaryTypeName","src":"2958:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2957:14:30"},"returnParameters":{"id":1610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1609,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1611,"src":"2995:26:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":1608,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"2995:19:30","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"2994:28:30"},"scope":1674,"src":"2936:87:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1612,"nodeType":"StructuredDocumentation","src":"3029:142:30","text":" @notice Get timestamp when `user`'s lock finishes.\n @dev The returned value is taken directly from the voting escrow."},"functionSelector":"3e7df7c8","id":1619,"implemented":false,"kind":"function","modifiers":[],"name":"getLockedEnd","nodeType":"FunctionDefinition","parameters":{"id":1615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1614,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1619,"src":"3198:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1613,"name":"address","nodeType":"ElementaryTypeName","src":"3198:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3197:14:30"},"returnParameters":{"id":1618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1617,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1619,"src":"3235:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1616,"name":"uint256","nodeType":"ElementaryTypeName","src":"3235:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3234:9:30"},"scope":1674,"src":"3176:68:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1620,"nodeType":"StructuredDocumentation","src":"3250:351:30","text":" @notice Returns the local user corresponding to an address on a remote chain.\n @dev Returns `address(0)` if the remapping does not exist for the given remote user.\n @param remoteUser - Address of the user on the remote chain corresponding to the local address.\n @param chainId - The chain ID of the remote network."},"functionSelector":"70d1bd17","id":1629,"implemented":false,"kind":"function","modifiers":[],"name":"getLocalUser","nodeType":"FunctionDefinition","parameters":{"id":1625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1622,"mutability":"mutable","name":"remoteUser","nodeType":"VariableDeclaration","scope":1629,"src":"3628:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1621,"name":"address","nodeType":"ElementaryTypeName","src":"3628:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1624,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":1629,"src":"3648:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1623,"name":"uint16","nodeType":"ElementaryTypeName","src":"3648:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"3627:36:30"},"returnParameters":{"id":1628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1627,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1629,"src":"3687:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1626,"name":"address","nodeType":"ElementaryTypeName","src":"3687:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3686:9:30"},"scope":1674,"src":"3606:90:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1630,"nodeType":"StructuredDocumentation","src":"3702:351:30","text":" @notice Returns the remote user corresponding to an address on the local chain.\n @dev Returns `address(0)` if the remapping does not exist for the given local user.\n @param localUser - Address of the user on the local chain corresponding to the remote address.\n @param chainId - The chain ID of the remote network."},"functionSelector":"bda75c38","id":1639,"implemented":false,"kind":"function","modifiers":[],"name":"getRemoteUser","nodeType":"FunctionDefinition","parameters":{"id":1635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1632,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":1639,"src":"4081:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1631,"name":"address","nodeType":"ElementaryTypeName","src":"4081:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1634,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":1639,"src":"4100:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1633,"name":"uint16","nodeType":"ElementaryTypeName","src":"4100:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"4080:35:30"},"returnParameters":{"id":1638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1639,"src":"4139:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4138:9:30"},"scope":1674,"src":"4058:90:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1640,"nodeType":"StructuredDocumentation","src":"4154:183:30","text":" @notice Gets the account that can set a remapping for a given local user.\n @param localUser - Address of the user on the local chain with a remapping manager."},"functionSelector":"ee98b1e7","id":1647,"implemented":false,"kind":"function","modifiers":[],"name":"getRemappingManager","nodeType":"FunctionDefinition","parameters":{"id":1643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1642,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":1647,"src":"4371:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1641,"name":"address","nodeType":"ElementaryTypeName","src":"4371:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4370:19:30"},"returnParameters":{"id":1646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1645,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1647,"src":"4413:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1644,"name":"address","nodeType":"ElementaryTypeName","src":"4413:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4412:9:30"},"scope":1674,"src":"4342:80:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1648,"nodeType":"StructuredDocumentation","src":"4454:619:30","text":" @notice Sets up a mapping from `localUser`'s veBAL balance to `remoteUser` for chain `chainId`.\n @dev In order to set up a remapping on this contract, `localUser` must be a smart contract which has been\n allowlisted to hold veBAL. EOAs are expected to set up any delegation of their veBAL on L2s directly.\n @param localUser - The address of a contract allowlisted on the `SmartWalletChecker`.\n @param remoteUser - The address to receive `localUser`'s balance of veBAL on the remote chain.\n @param chainId - The chain id of the remote chain on which `remoteUser` resides."},"functionSelector":"21861fde","id":1657,"implemented":false,"kind":"function","modifiers":[],"name":"setNetworkRemapping","nodeType":"FunctionDefinition","parameters":{"id":1655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1650,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":1657,"src":"5116:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1649,"name":"address","nodeType":"ElementaryTypeName","src":"5116:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1652,"mutability":"mutable","name":"remoteUser","nodeType":"VariableDeclaration","scope":1657,"src":"5143:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1651,"name":"address","nodeType":"ElementaryTypeName","src":"5143:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1654,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":1657,"src":"5171:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1653,"name":"uint16","nodeType":"ElementaryTypeName","src":"5171:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"5106:85:30"},"returnParameters":{"id":1656,"nodeType":"ParameterList","parameters":[],"src":"5208:0:30"},"scope":1674,"src":"5078:131:30","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1658,"nodeType":"StructuredDocumentation","src":"5215:403:30","text":" @notice Sets an address to manage the mapping for a given local user on their behalf.\n @dev This is intended to handle contracts which cannot interact with this contract directly.\n @param localUser - The address of a contract allowlisted on the `SmartWalletChecker`.\n @param delegate - The address which is allowed to manage remote users to be linked to `localUser`."},"functionSelector":"a9f3f44e","id":1665,"implemented":false,"kind":"function","modifiers":[],"name":"setNetworkRemappingManager","nodeType":"FunctionDefinition","parameters":{"id":1663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1660,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":1665,"src":"5659:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1659,"name":"address","nodeType":"ElementaryTypeName","src":"5659:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1662,"mutability":"mutable","name":"delegate","nodeType":"VariableDeclaration","scope":1665,"src":"5678:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1661,"name":"address","nodeType":"ElementaryTypeName","src":"5678:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5658:37:30"},"returnParameters":{"id":1664,"nodeType":"ParameterList","parameters":[],"src":"5704:0:30"},"scope":1674,"src":"5623:82:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1666,"nodeType":"StructuredDocumentation","src":"5711:526:30","text":" @notice Clears a local user's mapping for a particular network.\n @dev This is intended to discourage and also allow recovery from griefing attacks.\n If griefing occurs then the griefer can be removed from Smart Wallet Checker and have their remappings erased.\n The local user can always clear their own mapping, regardless the state of the Smart Wallet Checker.\n @param localUser - The address of the local user to erase.\n @param chainId - The chain id of the network to erase."},"functionSelector":"76601a18","id":1673,"implemented":false,"kind":"function","modifiers":[],"name":"clearNetworkRemapping","nodeType":"FunctionDefinition","parameters":{"id":1671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1668,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":1673,"src":"6273:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1667,"name":"address","nodeType":"ElementaryTypeName","src":"6273:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1670,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":1673,"src":"6292:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1669,"name":"uint16","nodeType":"ElementaryTypeName","src":"6292:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"6272:35:30"},"returnParameters":{"id":1672,"nodeType":"ParameterList","parameters":[],"src":"6324:0:30"},"scope":1674,"src":"6242:83:30","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":1675,"src":"1501:4826:30"}],"src":"694:5634:30"},"id":30},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","exportedSymbols":{"Errors":[2248],"_require":[1692,1711],"_revert":[1723,1743]},"id":2249,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1676,"literals":["solidity",">=","0.7",".1","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:31"},{"body":{"id":1691,"nodeType":"Block","src":"984:43:31","statements":[{"condition":{"id":1685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"994:10:31","subExpression":{"id":1684,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1679,"src":"995:9:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1690,"nodeType":"IfStatement","src":"990:34:31","trueBody":{"expression":{"arguments":[{"id":1687,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1681,"src":"1014:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1686,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"1006:7:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1006:18:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1689,"nodeType":"ExpressionStatement","src":"1006:18:31"}}]},"documentation":{"id":1677,"nodeType":"StructuredDocumentation","src":"741:184:31","text":" @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n supported.\n Uses the default 'BAL' prefix for the error code"},"id":1692,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_require","nodeType":"FunctionDefinition","parameters":{"id":1682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1679,"mutability":"mutable","name":"condition","nodeType":"VariableDeclaration","scope":1692,"src":"944:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1678,"name":"bool","nodeType":"ElementaryTypeName","src":"944:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1681,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1692,"src":"960:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1680,"name":"uint256","nodeType":"ElementaryTypeName","src":"960:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"943:35:31"},"returnParameters":{"id":1683,"nodeType":"ParameterList","parameters":[],"src":"984:0:31"},"scope":2249,"src":"926:101:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1710,"nodeType":"Block","src":"1249:51:31","statements":[{"condition":{"id":1703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1259:10:31","subExpression":{"id":1702,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1695,"src":"1260:9:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1709,"nodeType":"IfStatement","src":"1255:42:31","trueBody":{"expression":{"arguments":[{"id":1705,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1697,"src":"1279:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1706,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1699,"src":"1290:6:31","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes3","typeString":"bytes3"}],"id":1704,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1743,"src":"1271:7:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_bytes3_$returns$__$","typeString":"function (uint256,bytes3) pure"}},"id":1707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1271:26:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1708,"nodeType":"ExpressionStatement","src":"1271:26:31"}}]},"documentation":{"id":1693,"nodeType":"StructuredDocumentation","src":"1029:132:31","text":" @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n supported."},"id":1711,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_require","nodeType":"FunctionDefinition","parameters":{"id":1700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1695,"mutability":"mutable","name":"condition","nodeType":"VariableDeclaration","scope":1711,"src":"1185:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1694,"name":"bool","nodeType":"ElementaryTypeName","src":"1185:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1711,"src":"1205:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"1205:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1699,"mutability":"mutable","name":"prefix","nodeType":"VariableDeclaration","scope":1711,"src":"1228:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"},"typeName":{"id":1698,"name":"bytes3","nodeType":"ElementaryTypeName","src":"1228:6:31","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}},"visibility":"internal"}],"src":"1179:64:31"},"returnParameters":{"id":1701,"nodeType":"ParameterList","parameters":[],"src":"1249:0:31"},"scope":2249,"src":"1162:138:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1722,"nodeType":"Block","src":"1500:85:31","statements":[{"expression":{"arguments":[{"id":1718,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1714,"src":"1514:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"3078343234313463","id":1719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1525:8:31","typeDescriptions":{"typeIdentifier":"t_rational_4342092_by_1","typeString":"int_const 4342092"},"value":"0x42414c"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_4342092_by_1","typeString":"int_const 4342092"}],"id":1717,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1743,"src":"1506:7:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_bytes3_$returns$__$","typeString":"function (uint256,bytes3) pure"}},"id":1720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1506:28:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1721,"nodeType":"ExpressionStatement","src":"1506:28:31"}]},"documentation":{"id":1712,"nodeType":"StructuredDocumentation","src":"1302:156:31","text":" @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported.\n Uses the default 'BAL' prefix for the error code"},"id":1723,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_revert","nodeType":"FunctionDefinition","parameters":{"id":1715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1714,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1723,"src":"1476:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1713,"name":"uint256","nodeType":"ElementaryTypeName","src":"1476:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1475:19:31"},"returnParameters":{"id":1716,"nodeType":"ParameterList","parameters":[],"src":"1500:0:31"},"scope":2249,"src":"1459:126:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1742,"nodeType":"Block","src":"1748:3322:31","statements":[{"assignments":[1732],"declarations":[{"constant":false,"id":1732,"mutability":"mutable","name":"prefixUint","nodeType":"VariableDeclaration","scope":1742,"src":"1754:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1731,"name":"uint256","nodeType":"ElementaryTypeName","src":"1754:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1740,"initialValue":{"arguments":[{"arguments":[{"id":1737,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1728,"src":"1790:6:31","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes3","typeString":"bytes3"}],"id":1736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1783:6:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":1735,"name":"uint24","nodeType":"ElementaryTypeName","src":"1783:6:31","typeDescriptions":{}}},"id":1738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1783:14:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":1734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1775:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1733,"name":"uint256","nodeType":"ElementaryTypeName","src":"1775:7:31","typeDescriptions":{}}},"id":1739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1775:23:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1754:44:31"},{"AST":{"nodeType":"YulBlock","src":"2587:2481:31","statements":[{"nodeType":"YulVariableDeclaration","src":"2861:42:31","value":{"arguments":[{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2882:9:31"},{"kind":"number","nodeType":"YulLiteral","src":"2893:2:31","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"2878:3:31"},"nodeType":"YulFunctionCall","src":"2878:18:31"},{"kind":"number","nodeType":"YulLiteral","src":"2898:4:31","type":"","value":"0x30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2874:3:31"},"nodeType":"YulFunctionCall","src":"2874:29:31"},"variables":[{"name":"units","nodeType":"YulTypedName","src":"2865:5:31","type":""}]},{"nodeType":"YulAssignment","src":"2913:31:31","value":{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2930:9:31"},{"kind":"number","nodeType":"YulLiteral","src":"2941:2:31","type":"","value":"10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2926:3:31"},"nodeType":"YulFunctionCall","src":"2926:18:31"},"variableNames":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2913:9:31"}]},{"nodeType":"YulVariableDeclaration","src":"2953:43:31","value":{"arguments":[{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2975:9:31"},{"kind":"number","nodeType":"YulLiteral","src":"2986:2:31","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"2971:3:31"},"nodeType":"YulFunctionCall","src":"2971:18:31"},{"kind":"number","nodeType":"YulLiteral","src":"2991:4:31","type":"","value":"0x30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2967:3:31"},"nodeType":"YulFunctionCall","src":"2967:29:31"},"variables":[{"name":"tenths","nodeType":"YulTypedName","src":"2957:6:31","type":""}]},{"nodeType":"YulAssignment","src":"3006:31:31","value":{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"3023:9:31"},{"kind":"number","nodeType":"YulLiteral","src":"3034:2:31","type":"","value":"10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3019:3:31"},"nodeType":"YulFunctionCall","src":"3019:18:31"},"variableNames":[{"name":"errorCode","nodeType":"YulIdentifier","src":"3006:9:31"}]},{"nodeType":"YulVariableDeclaration","src":"3046:45:31","value":{"arguments":[{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"3070:9:31"},{"kind":"number","nodeType":"YulLiteral","src":"3081:2:31","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"3066:3:31"},"nodeType":"YulFunctionCall","src":"3066:18:31"},{"kind":"number","nodeType":"YulLiteral","src":"3086:4:31","type":"","value":"0x30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3062:3:31"},"nodeType":"YulFunctionCall","src":"3062:29:31"},"variables":[{"name":"hundreds","nodeType":"YulTypedName","src":"3050:8:31","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3724:61:31","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3751:2:31","type":"","value":"24"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3759:4:31","type":"","value":"0x23"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3769:1:31","type":"","value":"8"},{"name":"prefixUint","nodeType":"YulIdentifier","src":"3772:10:31"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3765:3:31"},"nodeType":"YulFunctionCall","src":"3765:18:31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3755:3:31"},"nodeType":"YulFunctionCall","src":"3755:29:31"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3747:3:31"},"nodeType":"YulFunctionCall","src":"3747:38:31"},"variables":[{"name":"formattedPrefix","nodeType":"YulTypedName","src":"3728:15:31","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3795:102:31","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3819:3:31","type":"","value":"200"},{"arguments":[{"name":"formattedPrefix","nodeType":"YulIdentifier","src":"3828:15:31"},{"arguments":[{"arguments":[{"name":"units","nodeType":"YulIdentifier","src":"3853:5:31"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3864:1:31","type":"","value":"8"},{"name":"tenths","nodeType":"YulIdentifier","src":"3867:6:31"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3860:3:31"},"nodeType":"YulFunctionCall","src":"3860:14:31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3849:3:31"},"nodeType":"YulFunctionCall","src":"3849:26:31"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3881:2:31","type":"","value":"16"},{"name":"hundreds","nodeType":"YulIdentifier","src":"3885:8:31"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3877:3:31"},"nodeType":"YulFunctionCall","src":"3877:17:31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3845:3:31"},"nodeType":"YulFunctionCall","src":"3845:50:31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3824:3:31"},"nodeType":"YulFunctionCall","src":"3824:72:31"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3815:3:31"},"nodeType":"YulFunctionCall","src":"3815:82:31"},"variables":[{"name":"revertReason","nodeType":"YulTypedName","src":"3799:12:31","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4412:3:31","type":"","value":"0x0"},{"kind":"number","nodeType":"YulLiteral","src":"4417:66:31","type":"","value":"0x08c379a000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4405:6:31"},"nodeType":"YulFunctionCall","src":"4405:79:31"},"nodeType":"YulExpressionStatement","src":"4405:79:31"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4617:4:31","type":"","value":"0x04"},{"kind":"number","nodeType":"YulLiteral","src":"4623:66:31","type":"","value":"0x0000000000000000000000000000000000000000000000000000000000000020"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4610:6:31"},"nodeType":"YulFunctionCall","src":"4610:80:31"},"nodeType":"YulExpressionStatement","src":"4610:80:31"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4759:4:31","type":"","value":"0x24"},{"kind":"number","nodeType":"YulLiteral","src":"4765:1:31","type":"","value":"7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4752:6:31"},"nodeType":"YulFunctionCall","src":"4752:15:31"},"nodeType":"YulExpressionStatement","src":"4752:15:31"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4832:4:31","type":"","value":"0x44"},{"name":"revertReason","nodeType":"YulIdentifier","src":"4838:12:31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4825:6:31"},"nodeType":"YulFunctionCall","src":"4825:26:31"},"nodeType":"YulExpressionStatement","src":"4825:26:31"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5055:1:31","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5058:3:31","type":"","value":"100"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5048:6:31"},"nodeType":"YulFunctionCall","src":"5048:14:31"},"nodeType":"YulExpressionStatement","src":"5048:14:31"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1726,"isOffset":false,"isSlot":false,"src":"2882:9:31","valueSize":1},{"declaration":1726,"isOffset":false,"isSlot":false,"src":"2913:9:31","valueSize":1},{"declaration":1726,"isOffset":false,"isSlot":false,"src":"2930:9:31","valueSize":1},{"declaration":1726,"isOffset":false,"isSlot":false,"src":"2975:9:31","valueSize":1},{"declaration":1726,"isOffset":false,"isSlot":false,"src":"3006:9:31","valueSize":1},{"declaration":1726,"isOffset":false,"isSlot":false,"src":"3023:9:31","valueSize":1},{"declaration":1726,"isOffset":false,"isSlot":false,"src":"3070:9:31","valueSize":1},{"declaration":1732,"isOffset":false,"isSlot":false,"src":"3772:10:31","valueSize":1}],"id":1741,"nodeType":"InlineAssembly","src":"2578:2490:31"}]},"documentation":{"id":1724,"nodeType":"StructuredDocumentation","src":"1587:104:31","text":" @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported."},"id":1743,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_revert","nodeType":"FunctionDefinition","parameters":{"id":1729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1726,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1743,"src":"1709:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1725,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1728,"mutability":"mutable","name":"prefix","nodeType":"VariableDeclaration","scope":1743,"src":"1728:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"},"typeName":{"id":1727,"name":"bytes3","nodeType":"ElementaryTypeName","src":"1728:6:31","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}},"visibility":"internal"}],"src":"1708:34:31"},"returnParameters":{"id":1730,"nodeType":"ParameterList","parameters":[],"src":"1748:0:31"},"scope":2249,"src":"1692:3378:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":2248,"linearizedBaseContracts":[2248],"name":"Errors","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1746,"mutability":"constant","name":"ADD_OVERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"5105:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1744,"name":"uint256","nodeType":"ElementaryTypeName","src":"5105:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":1745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5146:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"constant":true,"id":1749,"mutability":"constant","name":"SUB_OVERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"5153:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1747,"name":"uint256","nodeType":"ElementaryTypeName","src":"5153:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":1748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5194:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":1752,"mutability":"constant","name":"SUB_UNDERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"5201:43:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1750,"name":"uint256","nodeType":"ElementaryTypeName","src":"5201:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":1751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5243:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":1755,"mutability":"constant","name":"MUL_OVERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"5250:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"5250:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":1754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5291:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":true,"id":1758,"mutability":"constant","name":"ZERO_DIVISION","nodeType":"VariableDeclaration","scope":2248,"src":"5298:43:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1756,"name":"uint256","nodeType":"ElementaryTypeName","src":"5298:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"34","id":1757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5340:1:31","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"visibility":"internal"},{"constant":true,"id":1761,"mutability":"constant","name":"DIV_INTERNAL","nodeType":"VariableDeclaration","scope":2248,"src":"5347:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1759,"name":"uint256","nodeType":"ElementaryTypeName","src":"5347:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35","id":1760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5388:1:31","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"internal"},{"constant":true,"id":1764,"mutability":"constant","name":"X_OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":2248,"src":"5395:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1762,"name":"uint256","nodeType":"ElementaryTypeName","src":"5395:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"36","id":1763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5439:1:31","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"visibility":"internal"},{"constant":true,"id":1767,"mutability":"constant","name":"Y_OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":2248,"src":"5446:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1765,"name":"uint256","nodeType":"ElementaryTypeName","src":"5446:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"37","id":1766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5490:1:31","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"visibility":"internal"},{"constant":true,"id":1770,"mutability":"constant","name":"PRODUCT_OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":2248,"src":"5497:51:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1768,"name":"uint256","nodeType":"ElementaryTypeName","src":"5497:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38","id":1769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5547:1:31","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"internal"},{"constant":true,"id":1773,"mutability":"constant","name":"INVALID_EXPONENT","nodeType":"VariableDeclaration","scope":2248,"src":"5554:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1771,"name":"uint256","nodeType":"ElementaryTypeName","src":"5554:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"39","id":1772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5599:1:31","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"visibility":"internal"},{"constant":true,"id":1776,"mutability":"constant","name":"OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":2248,"src":"5620:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"5620:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313030","id":1775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5662:3:31","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"visibility":"internal"},{"constant":true,"id":1779,"mutability":"constant","name":"UNSORTED_ARRAY","nodeType":"VariableDeclaration","scope":2248,"src":"5671:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1777,"name":"uint256","nodeType":"ElementaryTypeName","src":"5671:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313031","id":1778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5714:3:31","typeDescriptions":{"typeIdentifier":"t_rational_101_by_1","typeString":"int_const 101"},"value":"101"},"visibility":"internal"},{"constant":true,"id":1782,"mutability":"constant","name":"UNSORTED_TOKENS","nodeType":"VariableDeclaration","scope":2248,"src":"5723:47:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"5723:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313032","id":1781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5767:3:31","typeDescriptions":{"typeIdentifier":"t_rational_102_by_1","typeString":"int_const 102"},"value":"102"},"visibility":"internal"},{"constant":true,"id":1785,"mutability":"constant","name":"INPUT_LENGTH_MISMATCH","nodeType":"VariableDeclaration","scope":2248,"src":"5776:53:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1783,"name":"uint256","nodeType":"ElementaryTypeName","src":"5776:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313033","id":1784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5826:3:31","typeDescriptions":{"typeIdentifier":"t_rational_103_by_1","typeString":"int_const 103"},"value":"103"},"visibility":"internal"},{"constant":true,"id":1788,"mutability":"constant","name":"ZERO_TOKEN","nodeType":"VariableDeclaration","scope":2248,"src":"5835:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1786,"name":"uint256","nodeType":"ElementaryTypeName","src":"5835:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313034","id":1787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5874:3:31","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},"visibility":"internal"},{"constant":true,"id":1791,"mutability":"constant","name":"INSUFFICIENT_DATA","nodeType":"VariableDeclaration","scope":2248,"src":"5883:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1789,"name":"uint256","nodeType":"ElementaryTypeName","src":"5883:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313035","id":1790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5929:3:31","typeDescriptions":{"typeIdentifier":"t_rational_105_by_1","typeString":"int_const 105"},"value":"105"},"visibility":"internal"},{"constant":true,"id":1794,"mutability":"constant","name":"MIN_TOKENS","nodeType":"VariableDeclaration","scope":2248,"src":"5959:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1792,"name":"uint256","nodeType":"ElementaryTypeName","src":"5959:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323030","id":1793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5998:3:31","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},"visibility":"internal"},{"constant":true,"id":1797,"mutability":"constant","name":"MAX_TOKENS","nodeType":"VariableDeclaration","scope":2248,"src":"6007:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1795,"name":"uint256","nodeType":"ElementaryTypeName","src":"6007:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323031","id":1796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6046:3:31","typeDescriptions":{"typeIdentifier":"t_rational_201_by_1","typeString":"int_const 201"},"value":"201"},"visibility":"internal"},{"constant":true,"id":1800,"mutability":"constant","name":"MAX_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":2248,"src":"6055:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1798,"name":"uint256","nodeType":"ElementaryTypeName","src":"6055:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323032","id":1799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6107:3:31","typeDescriptions":{"typeIdentifier":"t_rational_202_by_1","typeString":"int_const 202"},"value":"202"},"visibility":"internal"},{"constant":true,"id":1803,"mutability":"constant","name":"MIN_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":2248,"src":"6116:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1801,"name":"uint256","nodeType":"ElementaryTypeName","src":"6116:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323033","id":1802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6168:3:31","typeDescriptions":{"typeIdentifier":"t_rational_203_by_1","typeString":"int_const 203"},"value":"203"},"visibility":"internal"},{"constant":true,"id":1806,"mutability":"constant","name":"MINIMUM_BPT","nodeType":"VariableDeclaration","scope":2248,"src":"6177:43:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1804,"name":"uint256","nodeType":"ElementaryTypeName","src":"6177:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323034","id":1805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6217:3:31","typeDescriptions":{"typeIdentifier":"t_rational_204_by_1","typeString":"int_const 204"},"value":"204"},"visibility":"internal"},{"constant":true,"id":1809,"mutability":"constant","name":"CALLER_NOT_VAULT","nodeType":"VariableDeclaration","scope":2248,"src":"6226:48:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1807,"name":"uint256","nodeType":"ElementaryTypeName","src":"6226:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323035","id":1808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6271:3:31","typeDescriptions":{"typeIdentifier":"t_rational_205_by_1","typeString":"int_const 205"},"value":"205"},"visibility":"internal"},{"constant":true,"id":1812,"mutability":"constant","name":"UNINITIALIZED","nodeType":"VariableDeclaration","scope":2248,"src":"6280:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1810,"name":"uint256","nodeType":"ElementaryTypeName","src":"6280:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323036","id":1811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6322:3:31","typeDescriptions":{"typeIdentifier":"t_rational_206_by_1","typeString":"int_const 206"},"value":"206"},"visibility":"internal"},{"constant":true,"id":1815,"mutability":"constant","name":"BPT_IN_MAX_AMOUNT","nodeType":"VariableDeclaration","scope":2248,"src":"6331:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1813,"name":"uint256","nodeType":"ElementaryTypeName","src":"6331:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323037","id":1814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6377:3:31","typeDescriptions":{"typeIdentifier":"t_rational_207_by_1","typeString":"int_const 207"},"value":"207"},"visibility":"internal"},{"constant":true,"id":1818,"mutability":"constant","name":"BPT_OUT_MIN_AMOUNT","nodeType":"VariableDeclaration","scope":2248,"src":"6386:50:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1816,"name":"uint256","nodeType":"ElementaryTypeName","src":"6386:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323038","id":1817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6433:3:31","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},"visibility":"internal"},{"constant":true,"id":1821,"mutability":"constant","name":"EXPIRED_PERMIT","nodeType":"VariableDeclaration","scope":2248,"src":"6442:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1819,"name":"uint256","nodeType":"ElementaryTypeName","src":"6442:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323039","id":1820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6485:3:31","typeDescriptions":{"typeIdentifier":"t_rational_209_by_1","typeString":"int_const 209"},"value":"209"},"visibility":"internal"},{"constant":true,"id":1824,"mutability":"constant","name":"NOT_TWO_TOKENS","nodeType":"VariableDeclaration","scope":2248,"src":"6494:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1822,"name":"uint256","nodeType":"ElementaryTypeName","src":"6494:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323130","id":1823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6537:3:31","typeDescriptions":{"typeIdentifier":"t_rational_210_by_1","typeString":"int_const 210"},"value":"210"},"visibility":"internal"},{"constant":true,"id":1827,"mutability":"constant","name":"DISABLED","nodeType":"VariableDeclaration","scope":2248,"src":"6546:40:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1825,"name":"uint256","nodeType":"ElementaryTypeName","src":"6546:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323131","id":1826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6583:3:31","typeDescriptions":{"typeIdentifier":"t_rational_211_by_1","typeString":"int_const 211"},"value":"211"},"visibility":"internal"},{"constant":true,"id":1830,"mutability":"constant","name":"MIN_AMP","nodeType":"VariableDeclaration","scope":2248,"src":"6606:39:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1828,"name":"uint256","nodeType":"ElementaryTypeName","src":"6606:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333030","id":1829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6642:3:31","typeDescriptions":{"typeIdentifier":"t_rational_300_by_1","typeString":"int_const 300"},"value":"300"},"visibility":"internal"},{"constant":true,"id":1833,"mutability":"constant","name":"MAX_AMP","nodeType":"VariableDeclaration","scope":2248,"src":"6651:39:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1831,"name":"uint256","nodeType":"ElementaryTypeName","src":"6651:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333031","id":1832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6687:3:31","typeDescriptions":{"typeIdentifier":"t_rational_301_by_1","typeString":"int_const 301"},"value":"301"},"visibility":"internal"},{"constant":true,"id":1836,"mutability":"constant","name":"MIN_WEIGHT","nodeType":"VariableDeclaration","scope":2248,"src":"6696:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1834,"name":"uint256","nodeType":"ElementaryTypeName","src":"6696:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333032","id":1835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6735:3:31","typeDescriptions":{"typeIdentifier":"t_rational_302_by_1","typeString":"int_const 302"},"value":"302"},"visibility":"internal"},{"constant":true,"id":1839,"mutability":"constant","name":"MAX_STABLE_TOKENS","nodeType":"VariableDeclaration","scope":2248,"src":"6744:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1837,"name":"uint256","nodeType":"ElementaryTypeName","src":"6744:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333033","id":1838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6790:3:31","typeDescriptions":{"typeIdentifier":"t_rational_303_by_1","typeString":"int_const 303"},"value":"303"},"visibility":"internal"},{"constant":true,"id":1842,"mutability":"constant","name":"MAX_IN_RATIO","nodeType":"VariableDeclaration","scope":2248,"src":"6799:44:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1840,"name":"uint256","nodeType":"ElementaryTypeName","src":"6799:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333034","id":1841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6840:3:31","typeDescriptions":{"typeIdentifier":"t_rational_304_by_1","typeString":"int_const 304"},"value":"304"},"visibility":"internal"},{"constant":true,"id":1845,"mutability":"constant","name":"MAX_OUT_RATIO","nodeType":"VariableDeclaration","scope":2248,"src":"6849:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1843,"name":"uint256","nodeType":"ElementaryTypeName","src":"6849:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333035","id":1844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6891:3:31","typeDescriptions":{"typeIdentifier":"t_rational_305_by_1","typeString":"int_const 305"},"value":"305"},"visibility":"internal"},{"constant":true,"id":1848,"mutability":"constant","name":"MIN_BPT_IN_FOR_TOKEN_OUT","nodeType":"VariableDeclaration","scope":2248,"src":"6900:56:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1846,"name":"uint256","nodeType":"ElementaryTypeName","src":"6900:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333036","id":1847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6953:3:31","typeDescriptions":{"typeIdentifier":"t_rational_306_by_1","typeString":"int_const 306"},"value":"306"},"visibility":"internal"},{"constant":true,"id":1851,"mutability":"constant","name":"MAX_OUT_BPT_FOR_TOKEN_IN","nodeType":"VariableDeclaration","scope":2248,"src":"6962:56:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1849,"name":"uint256","nodeType":"ElementaryTypeName","src":"6962:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333037","id":1850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7015:3:31","typeDescriptions":{"typeIdentifier":"t_rational_307_by_1","typeString":"int_const 307"},"value":"307"},"visibility":"internal"},{"constant":true,"id":1854,"mutability":"constant","name":"NORMALIZED_WEIGHT_INVARIANT","nodeType":"VariableDeclaration","scope":2248,"src":"7024:59:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1852,"name":"uint256","nodeType":"ElementaryTypeName","src":"7024:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333038","id":1853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7080:3:31","typeDescriptions":{"typeIdentifier":"t_rational_308_by_1","typeString":"int_const 308"},"value":"308"},"visibility":"internal"},{"constant":true,"id":1857,"mutability":"constant","name":"INVALID_TOKEN","nodeType":"VariableDeclaration","scope":2248,"src":"7089:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1855,"name":"uint256","nodeType":"ElementaryTypeName","src":"7089:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333039","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7131:3:31","typeDescriptions":{"typeIdentifier":"t_rational_309_by_1","typeString":"int_const 309"},"value":"309"},"visibility":"internal"},{"constant":true,"id":1860,"mutability":"constant","name":"UNHANDLED_JOIN_KIND","nodeType":"VariableDeclaration","scope":2248,"src":"7140:51:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1858,"name":"uint256","nodeType":"ElementaryTypeName","src":"7140:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333130","id":1859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7188:3:31","typeDescriptions":{"typeIdentifier":"t_rational_310_by_1","typeString":"int_const 310"},"value":"310"},"visibility":"internal"},{"constant":true,"id":1863,"mutability":"constant","name":"ZERO_INVARIANT","nodeType":"VariableDeclaration","scope":2248,"src":"7197:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1861,"name":"uint256","nodeType":"ElementaryTypeName","src":"7197:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333131","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7240:3:31","typeDescriptions":{"typeIdentifier":"t_rational_311_by_1","typeString":"int_const 311"},"value":"311"},"visibility":"internal"},{"constant":true,"id":1866,"mutability":"constant","name":"ORACLE_INVALID_SECONDS_QUERY","nodeType":"VariableDeclaration","scope":2248,"src":"7249:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1864,"name":"uint256","nodeType":"ElementaryTypeName","src":"7249:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333132","id":1865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7306:3:31","typeDescriptions":{"typeIdentifier":"t_rational_312_by_1","typeString":"int_const 312"},"value":"312"},"visibility":"internal"},{"constant":true,"id":1869,"mutability":"constant","name":"ORACLE_NOT_INITIALIZED","nodeType":"VariableDeclaration","scope":2248,"src":"7315:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1867,"name":"uint256","nodeType":"ElementaryTypeName","src":"7315:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333133","id":1868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7366:3:31","typeDescriptions":{"typeIdentifier":"t_rational_313_by_1","typeString":"int_const 313"},"value":"313"},"visibility":"internal"},{"constant":true,"id":1872,"mutability":"constant","name":"ORACLE_QUERY_TOO_OLD","nodeType":"VariableDeclaration","scope":2248,"src":"7375:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1870,"name":"uint256","nodeType":"ElementaryTypeName","src":"7375:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333134","id":1871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7424:3:31","typeDescriptions":{"typeIdentifier":"t_rational_314_by_1","typeString":"int_const 314"},"value":"314"},"visibility":"internal"},{"constant":true,"id":1875,"mutability":"constant","name":"ORACLE_INVALID_INDEX","nodeType":"VariableDeclaration","scope":2248,"src":"7433:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1873,"name":"uint256","nodeType":"ElementaryTypeName","src":"7433:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333135","id":1874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7482:3:31","typeDescriptions":{"typeIdentifier":"t_rational_315_by_1","typeString":"int_const 315"},"value":"315"},"visibility":"internal"},{"constant":true,"id":1878,"mutability":"constant","name":"ORACLE_BAD_SECS","nodeType":"VariableDeclaration","scope":2248,"src":"7491:47:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1876,"name":"uint256","nodeType":"ElementaryTypeName","src":"7491:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333136","id":1877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7535:3:31","typeDescriptions":{"typeIdentifier":"t_rational_316_by_1","typeString":"int_const 316"},"value":"316"},"visibility":"internal"},{"constant":true,"id":1881,"mutability":"constant","name":"AMP_END_TIME_TOO_CLOSE","nodeType":"VariableDeclaration","scope":2248,"src":"7544:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1879,"name":"uint256","nodeType":"ElementaryTypeName","src":"7544:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333137","id":1880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7595:3:31","typeDescriptions":{"typeIdentifier":"t_rational_317_by_1","typeString":"int_const 317"},"value":"317"},"visibility":"internal"},{"constant":true,"id":1884,"mutability":"constant","name":"AMP_ONGOING_UPDATE","nodeType":"VariableDeclaration","scope":2248,"src":"7604:50:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1882,"name":"uint256","nodeType":"ElementaryTypeName","src":"7604:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333138","id":1883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7651:3:31","typeDescriptions":{"typeIdentifier":"t_rational_318_by_1","typeString":"int_const 318"},"value":"318"},"visibility":"internal"},{"constant":true,"id":1887,"mutability":"constant","name":"AMP_RATE_TOO_HIGH","nodeType":"VariableDeclaration","scope":2248,"src":"7660:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1885,"name":"uint256","nodeType":"ElementaryTypeName","src":"7660:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333139","id":1886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7706:3:31","typeDescriptions":{"typeIdentifier":"t_rational_319_by_1","typeString":"int_const 319"},"value":"319"},"visibility":"internal"},{"constant":true,"id":1890,"mutability":"constant","name":"AMP_NO_ONGOING_UPDATE","nodeType":"VariableDeclaration","scope":2248,"src":"7715:53:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1888,"name":"uint256","nodeType":"ElementaryTypeName","src":"7715:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333230","id":1889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7765:3:31","typeDescriptions":{"typeIdentifier":"t_rational_320_by_1","typeString":"int_const 320"},"value":"320"},"visibility":"internal"},{"constant":true,"id":1893,"mutability":"constant","name":"STABLE_INVARIANT_DIDNT_CONVERGE","nodeType":"VariableDeclaration","scope":2248,"src":"7774:63:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1891,"name":"uint256","nodeType":"ElementaryTypeName","src":"7774:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333231","id":1892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7834:3:31","typeDescriptions":{"typeIdentifier":"t_rational_321_by_1","typeString":"int_const 321"},"value":"321"},"visibility":"internal"},{"constant":true,"id":1896,"mutability":"constant","name":"STABLE_GET_BALANCE_DIDNT_CONVERGE","nodeType":"VariableDeclaration","scope":2248,"src":"7843:65:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1894,"name":"uint256","nodeType":"ElementaryTypeName","src":"7843:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333232","id":1895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7905:3:31","typeDescriptions":{"typeIdentifier":"t_rational_322_by_1","typeString":"int_const 322"},"value":"322"},"visibility":"internal"},{"constant":true,"id":1899,"mutability":"constant","name":"RELAYER_NOT_CONTRACT","nodeType":"VariableDeclaration","scope":2248,"src":"7914:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1897,"name":"uint256","nodeType":"ElementaryTypeName","src":"7914:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333233","id":1898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7963:3:31","typeDescriptions":{"typeIdentifier":"t_rational_323_by_1","typeString":"int_const 323"},"value":"323"},"visibility":"internal"},{"constant":true,"id":1902,"mutability":"constant","name":"BASE_POOL_RELAYER_NOT_CALLED","nodeType":"VariableDeclaration","scope":2248,"src":"7972:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1900,"name":"uint256","nodeType":"ElementaryTypeName","src":"7972:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333234","id":1901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8029:3:31","typeDescriptions":{"typeIdentifier":"t_rational_324_by_1","typeString":"int_const 324"},"value":"324"},"visibility":"internal"},{"constant":true,"id":1905,"mutability":"constant","name":"REBALANCING_RELAYER_REENTERED","nodeType":"VariableDeclaration","scope":2248,"src":"8038:61:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1903,"name":"uint256","nodeType":"ElementaryTypeName","src":"8038:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333235","id":1904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8096:3:31","typeDescriptions":{"typeIdentifier":"t_rational_325_by_1","typeString":"int_const 325"},"value":"325"},"visibility":"internal"},{"constant":true,"id":1908,"mutability":"constant","name":"GRADUAL_UPDATE_TIME_TRAVEL","nodeType":"VariableDeclaration","scope":2248,"src":"8105:58:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"8105:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333236","id":1907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8160:3:31","typeDescriptions":{"typeIdentifier":"t_rational_326_by_1","typeString":"int_const 326"},"value":"326"},"visibility":"internal"},{"constant":true,"id":1911,"mutability":"constant","name":"SWAPS_DISABLED","nodeType":"VariableDeclaration","scope":2248,"src":"8169:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1909,"name":"uint256","nodeType":"ElementaryTypeName","src":"8169:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333237","id":1910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8212:3:31","typeDescriptions":{"typeIdentifier":"t_rational_327_by_1","typeString":"int_const 327"},"value":"327"},"visibility":"internal"},{"constant":true,"id":1914,"mutability":"constant","name":"CALLER_IS_NOT_LBP_OWNER","nodeType":"VariableDeclaration","scope":2248,"src":"8221:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1912,"name":"uint256","nodeType":"ElementaryTypeName","src":"8221:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333238","id":1913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8273:3:31","typeDescriptions":{"typeIdentifier":"t_rational_328_by_1","typeString":"int_const 328"},"value":"328"},"visibility":"internal"},{"constant":true,"id":1917,"mutability":"constant","name":"PRICE_RATE_OVERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"8282:51:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1915,"name":"uint256","nodeType":"ElementaryTypeName","src":"8282:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333239","id":1916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8330:3:31","typeDescriptions":{"typeIdentifier":"t_rational_329_by_1","typeString":"int_const 329"},"value":"329"},"visibility":"internal"},{"constant":true,"id":1920,"mutability":"constant","name":"INVALID_JOIN_EXIT_KIND_WHILE_SWAPS_DISABLED","nodeType":"VariableDeclaration","scope":2248,"src":"8339:75:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1918,"name":"uint256","nodeType":"ElementaryTypeName","src":"8339:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333330","id":1919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8411:3:31","typeDescriptions":{"typeIdentifier":"t_rational_330_by_1","typeString":"int_const 330"},"value":"330"},"visibility":"internal"},{"constant":true,"id":1923,"mutability":"constant","name":"WEIGHT_CHANGE_TOO_FAST","nodeType":"VariableDeclaration","scope":2248,"src":"8420:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1921,"name":"uint256","nodeType":"ElementaryTypeName","src":"8420:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333331","id":1922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8471:3:31","typeDescriptions":{"typeIdentifier":"t_rational_331_by_1","typeString":"int_const 331"},"value":"331"},"visibility":"internal"},{"constant":true,"id":1926,"mutability":"constant","name":"LOWER_GREATER_THAN_UPPER_TARGET","nodeType":"VariableDeclaration","scope":2248,"src":"8480:63:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1924,"name":"uint256","nodeType":"ElementaryTypeName","src":"8480:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333332","id":1925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8540:3:31","typeDescriptions":{"typeIdentifier":"t_rational_332_by_1","typeString":"int_const 332"},"value":"332"},"visibility":"internal"},{"constant":true,"id":1929,"mutability":"constant","name":"UPPER_TARGET_TOO_HIGH","nodeType":"VariableDeclaration","scope":2248,"src":"8549:53:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1927,"name":"uint256","nodeType":"ElementaryTypeName","src":"8549:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333333","id":1928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8599:3:31","typeDescriptions":{"typeIdentifier":"t_rational_333_by_1","typeString":"int_const 333"},"value":"333"},"visibility":"internal"},{"constant":true,"id":1932,"mutability":"constant","name":"UNHANDLED_BY_LINEAR_POOL","nodeType":"VariableDeclaration","scope":2248,"src":"8608:56:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1930,"name":"uint256","nodeType":"ElementaryTypeName","src":"8608:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333334","id":1931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8661:3:31","typeDescriptions":{"typeIdentifier":"t_rational_334_by_1","typeString":"int_const 334"},"value":"334"},"visibility":"internal"},{"constant":true,"id":1935,"mutability":"constant","name":"OUT_OF_TARGET_RANGE","nodeType":"VariableDeclaration","scope":2248,"src":"8670:51:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1933,"name":"uint256","nodeType":"ElementaryTypeName","src":"8670:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333335","id":1934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8718:3:31","typeDescriptions":{"typeIdentifier":"t_rational_335_by_1","typeString":"int_const 335"},"value":"335"},"visibility":"internal"},{"constant":true,"id":1938,"mutability":"constant","name":"UNHANDLED_EXIT_KIND","nodeType":"VariableDeclaration","scope":2248,"src":"8727:51:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1936,"name":"uint256","nodeType":"ElementaryTypeName","src":"8727:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333336","id":1937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8775:3:31","typeDescriptions":{"typeIdentifier":"t_rational_336_by_1","typeString":"int_const 336"},"value":"336"},"visibility":"internal"},{"constant":true,"id":1941,"mutability":"constant","name":"UNAUTHORIZED_EXIT","nodeType":"VariableDeclaration","scope":2248,"src":"8784:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1939,"name":"uint256","nodeType":"ElementaryTypeName","src":"8784:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333337","id":1940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8830:3:31","typeDescriptions":{"typeIdentifier":"t_rational_337_by_1","typeString":"int_const 337"},"value":"337"},"visibility":"internal"},{"constant":true,"id":1944,"mutability":"constant","name":"MAX_MANAGEMENT_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":2248,"src":"8839:66:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1942,"name":"uint256","nodeType":"ElementaryTypeName","src":"8839:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333338","id":1943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8902:3:31","typeDescriptions":{"typeIdentifier":"t_rational_338_by_1","typeString":"int_const 338"},"value":"338"},"visibility":"internal"},{"constant":true,"id":1947,"mutability":"constant","name":"UNHANDLED_BY_MANAGED_POOL","nodeType":"VariableDeclaration","scope":2248,"src":"8911:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1945,"name":"uint256","nodeType":"ElementaryTypeName","src":"8911:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333339","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8965:3:31","typeDescriptions":{"typeIdentifier":"t_rational_339_by_1","typeString":"int_const 339"},"value":"339"},"visibility":"internal"},{"constant":true,"id":1950,"mutability":"constant","name":"UNHANDLED_BY_PHANTOM_POOL","nodeType":"VariableDeclaration","scope":2248,"src":"8974:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1948,"name":"uint256","nodeType":"ElementaryTypeName","src":"8974:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333430","id":1949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9028:3:31","typeDescriptions":{"typeIdentifier":"t_rational_340_by_1","typeString":"int_const 340"},"value":"340"},"visibility":"internal"},{"constant":true,"id":1953,"mutability":"constant","name":"TOKEN_DOES_NOT_HAVE_RATE_PROVIDER","nodeType":"VariableDeclaration","scope":2248,"src":"9037:65:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1951,"name":"uint256","nodeType":"ElementaryTypeName","src":"9037:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333431","id":1952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9099:3:31","typeDescriptions":{"typeIdentifier":"t_rational_341_by_1","typeString":"int_const 341"},"value":"341"},"visibility":"internal"},{"constant":true,"id":1956,"mutability":"constant","name":"INVALID_INITIALIZATION","nodeType":"VariableDeclaration","scope":2248,"src":"9108:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1954,"name":"uint256","nodeType":"ElementaryTypeName","src":"9108:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333432","id":1955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9159:3:31","typeDescriptions":{"typeIdentifier":"t_rational_342_by_1","typeString":"int_const 342"},"value":"342"},"visibility":"internal"},{"constant":true,"id":1959,"mutability":"constant","name":"OUT_OF_NEW_TARGET_RANGE","nodeType":"VariableDeclaration","scope":2248,"src":"9168:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1957,"name":"uint256","nodeType":"ElementaryTypeName","src":"9168:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333433","id":1958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9220:3:31","typeDescriptions":{"typeIdentifier":"t_rational_343_by_1","typeString":"int_const 343"},"value":"343"},"visibility":"internal"},{"constant":true,"id":1962,"mutability":"constant","name":"FEATURE_DISABLED","nodeType":"VariableDeclaration","scope":2248,"src":"9229:48:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1960,"name":"uint256","nodeType":"ElementaryTypeName","src":"9229:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333434","id":1961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9274:3:31","typeDescriptions":{"typeIdentifier":"t_rational_344_by_1","typeString":"int_const 344"},"value":"344"},"visibility":"internal"},{"constant":true,"id":1965,"mutability":"constant","name":"UNINITIALIZED_POOL_CONTROLLER","nodeType":"VariableDeclaration","scope":2248,"src":"9283:61:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1963,"name":"uint256","nodeType":"ElementaryTypeName","src":"9283:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333435","id":1964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9341:3:31","typeDescriptions":{"typeIdentifier":"t_rational_345_by_1","typeString":"int_const 345"},"value":"345"},"visibility":"internal"},{"constant":true,"id":1968,"mutability":"constant","name":"SET_SWAP_FEE_DURING_FEE_CHANGE","nodeType":"VariableDeclaration","scope":2248,"src":"9350:62:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1966,"name":"uint256","nodeType":"ElementaryTypeName","src":"9350:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333436","id":1967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9409:3:31","typeDescriptions":{"typeIdentifier":"t_rational_346_by_1","typeString":"int_const 346"},"value":"346"},"visibility":"internal"},{"constant":true,"id":1971,"mutability":"constant","name":"SET_SWAP_FEE_PENDING_FEE_CHANGE","nodeType":"VariableDeclaration","scope":2248,"src":"9418:63:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1969,"name":"uint256","nodeType":"ElementaryTypeName","src":"9418:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333437","id":1970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9478:3:31","typeDescriptions":{"typeIdentifier":"t_rational_347_by_1","typeString":"int_const 347"},"value":"347"},"visibility":"internal"},{"constant":true,"id":1974,"mutability":"constant","name":"CHANGE_TOKENS_DURING_WEIGHT_CHANGE","nodeType":"VariableDeclaration","scope":2248,"src":"9487:66:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1972,"name":"uint256","nodeType":"ElementaryTypeName","src":"9487:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333438","id":1973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9550:3:31","typeDescriptions":{"typeIdentifier":"t_rational_348_by_1","typeString":"int_const 348"},"value":"348"},"visibility":"internal"},{"constant":true,"id":1977,"mutability":"constant","name":"CHANGE_TOKENS_PENDING_WEIGHT_CHANGE","nodeType":"VariableDeclaration","scope":2248,"src":"9559:67:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1975,"name":"uint256","nodeType":"ElementaryTypeName","src":"9559:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333439","id":1976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9623:3:31","typeDescriptions":{"typeIdentifier":"t_rational_349_by_1","typeString":"int_const 349"},"value":"349"},"visibility":"internal"},{"constant":true,"id":1980,"mutability":"constant","name":"MAX_WEIGHT","nodeType":"VariableDeclaration","scope":2248,"src":"9632:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1978,"name":"uint256","nodeType":"ElementaryTypeName","src":"9632:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333530","id":1979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9671:3:31","typeDescriptions":{"typeIdentifier":"t_rational_350_by_1","typeString":"int_const 350"},"value":"350"},"visibility":"internal"},{"constant":true,"id":1983,"mutability":"constant","name":"UNAUTHORIZED_JOIN","nodeType":"VariableDeclaration","scope":2248,"src":"9680:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1981,"name":"uint256","nodeType":"ElementaryTypeName","src":"9680:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333531","id":1982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9726:3:31","typeDescriptions":{"typeIdentifier":"t_rational_351_by_1","typeString":"int_const 351"},"value":"351"},"visibility":"internal"},{"constant":true,"id":1986,"mutability":"constant","name":"MAX_MANAGEMENT_AUM_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":2248,"src":"9735:65:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1984,"name":"uint256","nodeType":"ElementaryTypeName","src":"9735:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333532","id":1985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9797:3:31","typeDescriptions":{"typeIdentifier":"t_rational_352_by_1","typeString":"int_const 352"},"value":"352"},"visibility":"internal"},{"constant":true,"id":1989,"mutability":"constant","name":"FRACTIONAL_TARGET","nodeType":"VariableDeclaration","scope":2248,"src":"9806:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1987,"name":"uint256","nodeType":"ElementaryTypeName","src":"9806:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333533","id":1988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9852:3:31","typeDescriptions":{"typeIdentifier":"t_rational_353_by_1","typeString":"int_const 353"},"value":"353"},"visibility":"internal"},{"constant":true,"id":1992,"mutability":"constant","name":"ADD_OR_REMOVE_BPT","nodeType":"VariableDeclaration","scope":2248,"src":"9861:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1990,"name":"uint256","nodeType":"ElementaryTypeName","src":"9861:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333534","id":1991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9907:3:31","typeDescriptions":{"typeIdentifier":"t_rational_354_by_1","typeString":"int_const 354"},"value":"354"},"visibility":"internal"},{"constant":true,"id":1995,"mutability":"constant","name":"INVALID_CIRCUIT_BREAKER_BOUNDS","nodeType":"VariableDeclaration","scope":2248,"src":"9916:62:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1993,"name":"uint256","nodeType":"ElementaryTypeName","src":"9916:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333535","id":1994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9975:3:31","typeDescriptions":{"typeIdentifier":"t_rational_355_by_1","typeString":"int_const 355"},"value":"355"},"visibility":"internal"},{"constant":true,"id":1998,"mutability":"constant","name":"CIRCUIT_BREAKER_TRIPPED","nodeType":"VariableDeclaration","scope":2248,"src":"9984:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1996,"name":"uint256","nodeType":"ElementaryTypeName","src":"9984:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333536","id":1997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10036:3:31","typeDescriptions":{"typeIdentifier":"t_rational_356_by_1","typeString":"int_const 356"},"value":"356"},"visibility":"internal"},{"constant":true,"id":2001,"mutability":"constant","name":"MALICIOUS_QUERY_REVERT","nodeType":"VariableDeclaration","scope":2248,"src":"10045:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1999,"name":"uint256","nodeType":"ElementaryTypeName","src":"10045:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333537","id":2000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10096:3:31","typeDescriptions":{"typeIdentifier":"t_rational_357_by_1","typeString":"int_const 357"},"value":"357"},"visibility":"internal"},{"constant":true,"id":2004,"mutability":"constant","name":"JOINS_EXITS_DISABLED","nodeType":"VariableDeclaration","scope":2248,"src":"10105:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2002,"name":"uint256","nodeType":"ElementaryTypeName","src":"10105:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333538","id":2003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10154:3:31","typeDescriptions":{"typeIdentifier":"t_rational_358_by_1","typeString":"int_const 358"},"value":"358"},"visibility":"internal"},{"constant":true,"id":2007,"mutability":"constant","name":"REENTRANCY","nodeType":"VariableDeclaration","scope":2248,"src":"10175:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2005,"name":"uint256","nodeType":"ElementaryTypeName","src":"10175:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343030","id":2006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10214:3:31","typeDescriptions":{"typeIdentifier":"t_rational_400_by_1","typeString":"int_const 400"},"value":"400"},"visibility":"internal"},{"constant":true,"id":2010,"mutability":"constant","name":"SENDER_NOT_ALLOWED","nodeType":"VariableDeclaration","scope":2248,"src":"10223:50:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2008,"name":"uint256","nodeType":"ElementaryTypeName","src":"10223:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343031","id":2009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10270:3:31","typeDescriptions":{"typeIdentifier":"t_rational_401_by_1","typeString":"int_const 401"},"value":"401"},"visibility":"internal"},{"constant":true,"id":2013,"mutability":"constant","name":"PAUSED","nodeType":"VariableDeclaration","scope":2248,"src":"10279:38:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2011,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343032","id":2012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10314:3:31","typeDescriptions":{"typeIdentifier":"t_rational_402_by_1","typeString":"int_const 402"},"value":"402"},"visibility":"internal"},{"constant":true,"id":2016,"mutability":"constant","name":"PAUSE_WINDOW_EXPIRED","nodeType":"VariableDeclaration","scope":2248,"src":"10323:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2014,"name":"uint256","nodeType":"ElementaryTypeName","src":"10323:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343033","id":2015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10372:3:31","typeDescriptions":{"typeIdentifier":"t_rational_403_by_1","typeString":"int_const 403"},"value":"403"},"visibility":"internal"},{"constant":true,"id":2019,"mutability":"constant","name":"MAX_PAUSE_WINDOW_DURATION","nodeType":"VariableDeclaration","scope":2248,"src":"10381:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2017,"name":"uint256","nodeType":"ElementaryTypeName","src":"10381:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343034","id":2018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10435:3:31","typeDescriptions":{"typeIdentifier":"t_rational_404_by_1","typeString":"int_const 404"},"value":"404"},"visibility":"internal"},{"constant":true,"id":2022,"mutability":"constant","name":"MAX_BUFFER_PERIOD_DURATION","nodeType":"VariableDeclaration","scope":2248,"src":"10444:58:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2020,"name":"uint256","nodeType":"ElementaryTypeName","src":"10444:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343035","id":2021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10499:3:31","typeDescriptions":{"typeIdentifier":"t_rational_405_by_1","typeString":"int_const 405"},"value":"405"},"visibility":"internal"},{"constant":true,"id":2025,"mutability":"constant","name":"INSUFFICIENT_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"10508:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2023,"name":"uint256","nodeType":"ElementaryTypeName","src":"10508:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343036","id":2024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10557:3:31","typeDescriptions":{"typeIdentifier":"t_rational_406_by_1","typeString":"int_const 406"},"value":"406"},"visibility":"internal"},{"constant":true,"id":2028,"mutability":"constant","name":"INSUFFICIENT_ALLOWANCE","nodeType":"VariableDeclaration","scope":2248,"src":"10566:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2026,"name":"uint256","nodeType":"ElementaryTypeName","src":"10566:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343037","id":2027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10617:3:31","typeDescriptions":{"typeIdentifier":"t_rational_407_by_1","typeString":"int_const 407"},"value":"407"},"visibility":"internal"},{"constant":true,"id":2031,"mutability":"constant","name":"ERC20_TRANSFER_FROM_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":2248,"src":"10626:64:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2029,"name":"uint256","nodeType":"ElementaryTypeName","src":"10626:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343038","id":2030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10687:3:31","typeDescriptions":{"typeIdentifier":"t_rational_408_by_1","typeString":"int_const 408"},"value":"408"},"visibility":"internal"},{"constant":true,"id":2034,"mutability":"constant","name":"ERC20_TRANSFER_TO_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":2248,"src":"10696:62:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2032,"name":"uint256","nodeType":"ElementaryTypeName","src":"10696:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343039","id":2033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10755:3:31","typeDescriptions":{"typeIdentifier":"t_rational_409_by_1","typeString":"int_const 409"},"value":"409"},"visibility":"internal"},{"constant":true,"id":2037,"mutability":"constant","name":"ERC20_MINT_TO_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":2248,"src":"10764:58:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2035,"name":"uint256","nodeType":"ElementaryTypeName","src":"10764:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343130","id":2036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10819:3:31","typeDescriptions":{"typeIdentifier":"t_rational_410_by_1","typeString":"int_const 410"},"value":"410"},"visibility":"internal"},{"constant":true,"id":2040,"mutability":"constant","name":"ERC20_BURN_FROM_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":2248,"src":"10828:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2038,"name":"uint256","nodeType":"ElementaryTypeName","src":"10828:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343131","id":2039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10885:3:31","typeDescriptions":{"typeIdentifier":"t_rational_411_by_1","typeString":"int_const 411"},"value":"411"},"visibility":"internal"},{"constant":true,"id":2043,"mutability":"constant","name":"ERC20_APPROVE_FROM_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":2248,"src":"10894:63:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2041,"name":"uint256","nodeType":"ElementaryTypeName","src":"10894:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343132","id":2042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10954:3:31","typeDescriptions":{"typeIdentifier":"t_rational_412_by_1","typeString":"int_const 412"},"value":"412"},"visibility":"internal"},{"constant":true,"id":2046,"mutability":"constant","name":"ERC20_APPROVE_TO_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":2248,"src":"10963:61:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2044,"name":"uint256","nodeType":"ElementaryTypeName","src":"10963:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343133","id":2045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11021:3:31","typeDescriptions":{"typeIdentifier":"t_rational_413_by_1","typeString":"int_const 413"},"value":"413"},"visibility":"internal"},{"constant":true,"id":2049,"mutability":"constant","name":"ERC20_TRANSFER_EXCEEDS_ALLOWANCE","nodeType":"VariableDeclaration","scope":2248,"src":"11030:64:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2047,"name":"uint256","nodeType":"ElementaryTypeName","src":"11030:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343134","id":2048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11091:3:31","typeDescriptions":{"typeIdentifier":"t_rational_414_by_1","typeString":"int_const 414"},"value":"414"},"visibility":"internal"},{"constant":true,"id":2052,"mutability":"constant","name":"ERC20_DECREASED_ALLOWANCE_BELOW_ZERO","nodeType":"VariableDeclaration","scope":2248,"src":"11100:68:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2050,"name":"uint256","nodeType":"ElementaryTypeName","src":"11100:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343135","id":2051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11165:3:31","typeDescriptions":{"typeIdentifier":"t_rational_415_by_1","typeString":"int_const 415"},"value":"415"},"visibility":"internal"},{"constant":true,"id":2055,"mutability":"constant","name":"ERC20_TRANSFER_EXCEEDS_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"11174:62:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2053,"name":"uint256","nodeType":"ElementaryTypeName","src":"11174:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343136","id":2054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11233:3:31","typeDescriptions":{"typeIdentifier":"t_rational_416_by_1","typeString":"int_const 416"},"value":"416"},"visibility":"internal"},{"constant":true,"id":2058,"mutability":"constant","name":"ERC20_BURN_EXCEEDS_ALLOWANCE","nodeType":"VariableDeclaration","scope":2248,"src":"11242:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2056,"name":"uint256","nodeType":"ElementaryTypeName","src":"11242:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343137","id":2057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11299:3:31","typeDescriptions":{"typeIdentifier":"t_rational_417_by_1","typeString":"int_const 417"},"value":"417"},"visibility":"internal"},{"constant":true,"id":2061,"mutability":"constant","name":"SAFE_ERC20_CALL_FAILED","nodeType":"VariableDeclaration","scope":2248,"src":"11308:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2059,"name":"uint256","nodeType":"ElementaryTypeName","src":"11308:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343138","id":2060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11359:3:31","typeDescriptions":{"typeIdentifier":"t_rational_418_by_1","typeString":"int_const 418"},"value":"418"},"visibility":"internal"},{"constant":true,"id":2064,"mutability":"constant","name":"ADDRESS_INSUFFICIENT_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"11368:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2062,"name":"uint256","nodeType":"ElementaryTypeName","src":"11368:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343139","id":2063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11425:3:31","typeDescriptions":{"typeIdentifier":"t_rational_419_by_1","typeString":"int_const 419"},"value":"419"},"visibility":"internal"},{"constant":true,"id":2067,"mutability":"constant","name":"ADDRESS_CANNOT_SEND_VALUE","nodeType":"VariableDeclaration","scope":2248,"src":"11434:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2065,"name":"uint256","nodeType":"ElementaryTypeName","src":"11434:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343230","id":2066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11488:3:31","typeDescriptions":{"typeIdentifier":"t_rational_420_by_1","typeString":"int_const 420"},"value":"420"},"visibility":"internal"},{"constant":true,"id":2070,"mutability":"constant","name":"SAFE_CAST_VALUE_CANT_FIT_INT256","nodeType":"VariableDeclaration","scope":2248,"src":"11497:63:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2068,"name":"uint256","nodeType":"ElementaryTypeName","src":"11497:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343231","id":2069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11557:3:31","typeDescriptions":{"typeIdentifier":"t_rational_421_by_1","typeString":"int_const 421"},"value":"421"},"visibility":"internal"},{"constant":true,"id":2073,"mutability":"constant","name":"GRANT_SENDER_NOT_ADMIN","nodeType":"VariableDeclaration","scope":2248,"src":"11566:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2071,"name":"uint256","nodeType":"ElementaryTypeName","src":"11566:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343232","id":2072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11617:3:31","typeDescriptions":{"typeIdentifier":"t_rational_422_by_1","typeString":"int_const 422"},"value":"422"},"visibility":"internal"},{"constant":true,"id":2076,"mutability":"constant","name":"REVOKE_SENDER_NOT_ADMIN","nodeType":"VariableDeclaration","scope":2248,"src":"11626:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2074,"name":"uint256","nodeType":"ElementaryTypeName","src":"11626:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343233","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11678:3:31","typeDescriptions":{"typeIdentifier":"t_rational_423_by_1","typeString":"int_const 423"},"value":"423"},"visibility":"internal"},{"constant":true,"id":2079,"mutability":"constant","name":"RENOUNCE_SENDER_NOT_ALLOWED","nodeType":"VariableDeclaration","scope":2248,"src":"11687:59:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2077,"name":"uint256","nodeType":"ElementaryTypeName","src":"11687:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343234","id":2078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11743:3:31","typeDescriptions":{"typeIdentifier":"t_rational_424_by_1","typeString":"int_const 424"},"value":"424"},"visibility":"internal"},{"constant":true,"id":2082,"mutability":"constant","name":"BUFFER_PERIOD_EXPIRED","nodeType":"VariableDeclaration","scope":2248,"src":"11752:53:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2080,"name":"uint256","nodeType":"ElementaryTypeName","src":"11752:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343235","id":2081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11802:3:31","typeDescriptions":{"typeIdentifier":"t_rational_425_by_1","typeString":"int_const 425"},"value":"425"},"visibility":"internal"},{"constant":true,"id":2085,"mutability":"constant","name":"CALLER_IS_NOT_OWNER","nodeType":"VariableDeclaration","scope":2248,"src":"11811:51:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2083,"name":"uint256","nodeType":"ElementaryTypeName","src":"11811:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343236","id":2084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11859:3:31","typeDescriptions":{"typeIdentifier":"t_rational_426_by_1","typeString":"int_const 426"},"value":"426"},"visibility":"internal"},{"constant":true,"id":2088,"mutability":"constant","name":"NEW_OWNER_IS_ZERO","nodeType":"VariableDeclaration","scope":2248,"src":"11868:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2086,"name":"uint256","nodeType":"ElementaryTypeName","src":"11868:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343237","id":2087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11914:3:31","typeDescriptions":{"typeIdentifier":"t_rational_427_by_1","typeString":"int_const 427"},"value":"427"},"visibility":"internal"},{"constant":true,"id":2091,"mutability":"constant","name":"CODE_DEPLOYMENT_FAILED","nodeType":"VariableDeclaration","scope":2248,"src":"11923:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2089,"name":"uint256","nodeType":"ElementaryTypeName","src":"11923:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343238","id":2090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11974:3:31","typeDescriptions":{"typeIdentifier":"t_rational_428_by_1","typeString":"int_const 428"},"value":"428"},"visibility":"internal"},{"constant":true,"id":2094,"mutability":"constant","name":"CALL_TO_NON_CONTRACT","nodeType":"VariableDeclaration","scope":2248,"src":"11983:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2092,"name":"uint256","nodeType":"ElementaryTypeName","src":"11983:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343239","id":2093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12032:3:31","typeDescriptions":{"typeIdentifier":"t_rational_429_by_1","typeString":"int_const 429"},"value":"429"},"visibility":"internal"},{"constant":true,"id":2097,"mutability":"constant","name":"LOW_LEVEL_CALL_FAILED","nodeType":"VariableDeclaration","scope":2248,"src":"12041:53:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2095,"name":"uint256","nodeType":"ElementaryTypeName","src":"12041:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343330","id":2096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12091:3:31","typeDescriptions":{"typeIdentifier":"t_rational_430_by_1","typeString":"int_const 430"},"value":"430"},"visibility":"internal"},{"constant":true,"id":2100,"mutability":"constant","name":"NOT_PAUSED","nodeType":"VariableDeclaration","scope":2248,"src":"12100:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2098,"name":"uint256","nodeType":"ElementaryTypeName","src":"12100:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343331","id":2099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12139:3:31","typeDescriptions":{"typeIdentifier":"t_rational_431_by_1","typeString":"int_const 431"},"value":"431"},"visibility":"internal"},{"constant":true,"id":2103,"mutability":"constant","name":"ADDRESS_ALREADY_ALLOWLISTED","nodeType":"VariableDeclaration","scope":2248,"src":"12148:59:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2101,"name":"uint256","nodeType":"ElementaryTypeName","src":"12148:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343332","id":2102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12204:3:31","typeDescriptions":{"typeIdentifier":"t_rational_432_by_1","typeString":"int_const 432"},"value":"432"},"visibility":"internal"},{"constant":true,"id":2106,"mutability":"constant","name":"ADDRESS_NOT_ALLOWLISTED","nodeType":"VariableDeclaration","scope":2248,"src":"12213:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2104,"name":"uint256","nodeType":"ElementaryTypeName","src":"12213:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343333","id":2105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12265:3:31","typeDescriptions":{"typeIdentifier":"t_rational_433_by_1","typeString":"int_const 433"},"value":"433"},"visibility":"internal"},{"constant":true,"id":2109,"mutability":"constant","name":"ERC20_BURN_EXCEEDS_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"12274:58:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"12274:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343334","id":2108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12329:3:31","typeDescriptions":{"typeIdentifier":"t_rational_434_by_1","typeString":"int_const 434"},"value":"434"},"visibility":"internal"},{"constant":true,"id":2112,"mutability":"constant","name":"INVALID_OPERATION","nodeType":"VariableDeclaration","scope":2248,"src":"12338:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2110,"name":"uint256","nodeType":"ElementaryTypeName","src":"12338:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343335","id":2111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12384:3:31","typeDescriptions":{"typeIdentifier":"t_rational_435_by_1","typeString":"int_const 435"},"value":"435"},"visibility":"internal"},{"constant":true,"id":2115,"mutability":"constant","name":"CODEC_OVERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"12393:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2113,"name":"uint256","nodeType":"ElementaryTypeName","src":"12393:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343336","id":2114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12436:3:31","typeDescriptions":{"typeIdentifier":"t_rational_436_by_1","typeString":"int_const 436"},"value":"436"},"visibility":"internal"},{"constant":true,"id":2118,"mutability":"constant","name":"IN_RECOVERY_MODE","nodeType":"VariableDeclaration","scope":2248,"src":"12445:48:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2116,"name":"uint256","nodeType":"ElementaryTypeName","src":"12445:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343337","id":2117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12490:3:31","typeDescriptions":{"typeIdentifier":"t_rational_437_by_1","typeString":"int_const 437"},"value":"437"},"visibility":"internal"},{"constant":true,"id":2121,"mutability":"constant","name":"NOT_IN_RECOVERY_MODE","nodeType":"VariableDeclaration","scope":2248,"src":"12499:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2119,"name":"uint256","nodeType":"ElementaryTypeName","src":"12499:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343338","id":2120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12548:3:31","typeDescriptions":{"typeIdentifier":"t_rational_438_by_1","typeString":"int_const 438"},"value":"438"},"visibility":"internal"},{"constant":true,"id":2124,"mutability":"constant","name":"INDUCED_FAILURE","nodeType":"VariableDeclaration","scope":2248,"src":"12557:47:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2122,"name":"uint256","nodeType":"ElementaryTypeName","src":"12557:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343339","id":2123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12601:3:31","typeDescriptions":{"typeIdentifier":"t_rational_439_by_1","typeString":"int_const 439"},"value":"439"},"visibility":"internal"},{"constant":true,"id":2127,"mutability":"constant","name":"EXPIRED_SIGNATURE","nodeType":"VariableDeclaration","scope":2248,"src":"12610:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2125,"name":"uint256","nodeType":"ElementaryTypeName","src":"12610:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343430","id":2126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12656:3:31","typeDescriptions":{"typeIdentifier":"t_rational_440_by_1","typeString":"int_const 440"},"value":"440"},"visibility":"internal"},{"constant":true,"id":2130,"mutability":"constant","name":"MALFORMED_SIGNATURE","nodeType":"VariableDeclaration","scope":2248,"src":"12665:51:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2128,"name":"uint256","nodeType":"ElementaryTypeName","src":"12665:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343431","id":2129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12713:3:31","typeDescriptions":{"typeIdentifier":"t_rational_441_by_1","typeString":"int_const 441"},"value":"441"},"visibility":"internal"},{"constant":true,"id":2133,"mutability":"constant","name":"SAFE_CAST_VALUE_CANT_FIT_UINT64","nodeType":"VariableDeclaration","scope":2248,"src":"12722:63:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2131,"name":"uint256","nodeType":"ElementaryTypeName","src":"12722:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343432","id":2132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12782:3:31","typeDescriptions":{"typeIdentifier":"t_rational_442_by_1","typeString":"int_const 442"},"value":"442"},"visibility":"internal"},{"constant":true,"id":2136,"mutability":"constant","name":"UNHANDLED_FEE_TYPE","nodeType":"VariableDeclaration","scope":2248,"src":"12791:50:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2134,"name":"uint256","nodeType":"ElementaryTypeName","src":"12791:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343433","id":2135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12838:3:31","typeDescriptions":{"typeIdentifier":"t_rational_443_by_1","typeString":"int_const 443"},"value":"443"},"visibility":"internal"},{"constant":true,"id":2139,"mutability":"constant","name":"BURN_FROM_ZERO","nodeType":"VariableDeclaration","scope":2248,"src":"12847:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"12847:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343434","id":2138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12890:3:31","typeDescriptions":{"typeIdentifier":"t_rational_444_by_1","typeString":"int_const 444"},"value":"444"},"visibility":"internal"},{"constant":true,"id":2142,"mutability":"constant","name":"INVALID_POOL_ID","nodeType":"VariableDeclaration","scope":2248,"src":"12913:47:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2140,"name":"uint256","nodeType":"ElementaryTypeName","src":"12913:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353030","id":2141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12957:3:31","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},"visibility":"internal"},{"constant":true,"id":2145,"mutability":"constant","name":"CALLER_NOT_POOL","nodeType":"VariableDeclaration","scope":2248,"src":"12966:47:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2143,"name":"uint256","nodeType":"ElementaryTypeName","src":"12966:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353031","id":2144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13010:3:31","typeDescriptions":{"typeIdentifier":"t_rational_501_by_1","typeString":"int_const 501"},"value":"501"},"visibility":"internal"},{"constant":true,"id":2148,"mutability":"constant","name":"SENDER_NOT_ASSET_MANAGER","nodeType":"VariableDeclaration","scope":2248,"src":"13019:56:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2146,"name":"uint256","nodeType":"ElementaryTypeName","src":"13019:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353032","id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13072:3:31","typeDescriptions":{"typeIdentifier":"t_rational_502_by_1","typeString":"int_const 502"},"value":"502"},"visibility":"internal"},{"constant":true,"id":2151,"mutability":"constant","name":"USER_DOESNT_ALLOW_RELAYER","nodeType":"VariableDeclaration","scope":2248,"src":"13081:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2149,"name":"uint256","nodeType":"ElementaryTypeName","src":"13081:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353033","id":2150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13135:3:31","typeDescriptions":{"typeIdentifier":"t_rational_503_by_1","typeString":"int_const 503"},"value":"503"},"visibility":"internal"},{"constant":true,"id":2154,"mutability":"constant","name":"INVALID_SIGNATURE","nodeType":"VariableDeclaration","scope":2248,"src":"13144:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2152,"name":"uint256","nodeType":"ElementaryTypeName","src":"13144:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353034","id":2153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13190:3:31","typeDescriptions":{"typeIdentifier":"t_rational_504_by_1","typeString":"int_const 504"},"value":"504"},"visibility":"internal"},{"constant":true,"id":2157,"mutability":"constant","name":"EXIT_BELOW_MIN","nodeType":"VariableDeclaration","scope":2248,"src":"13199:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2155,"name":"uint256","nodeType":"ElementaryTypeName","src":"13199:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353035","id":2156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13242:3:31","typeDescriptions":{"typeIdentifier":"t_rational_505_by_1","typeString":"int_const 505"},"value":"505"},"visibility":"internal"},{"constant":true,"id":2160,"mutability":"constant","name":"JOIN_ABOVE_MAX","nodeType":"VariableDeclaration","scope":2248,"src":"13251:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2158,"name":"uint256","nodeType":"ElementaryTypeName","src":"13251:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353036","id":2159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13294:3:31","typeDescriptions":{"typeIdentifier":"t_rational_506_by_1","typeString":"int_const 506"},"value":"506"},"visibility":"internal"},{"constant":true,"id":2163,"mutability":"constant","name":"SWAP_LIMIT","nodeType":"VariableDeclaration","scope":2248,"src":"13303:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2161,"name":"uint256","nodeType":"ElementaryTypeName","src":"13303:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353037","id":2162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13342:3:31","typeDescriptions":{"typeIdentifier":"t_rational_507_by_1","typeString":"int_const 507"},"value":"507"},"visibility":"internal"},{"constant":true,"id":2166,"mutability":"constant","name":"SWAP_DEADLINE","nodeType":"VariableDeclaration","scope":2248,"src":"13351:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2164,"name":"uint256","nodeType":"ElementaryTypeName","src":"13351:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353038","id":2165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13393:3:31","typeDescriptions":{"typeIdentifier":"t_rational_508_by_1","typeString":"int_const 508"},"value":"508"},"visibility":"internal"},{"constant":true,"id":2169,"mutability":"constant","name":"CANNOT_SWAP_SAME_TOKEN","nodeType":"VariableDeclaration","scope":2248,"src":"13402:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2167,"name":"uint256","nodeType":"ElementaryTypeName","src":"13402:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353039","id":2168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13453:3:31","typeDescriptions":{"typeIdentifier":"t_rational_509_by_1","typeString":"int_const 509"},"value":"509"},"visibility":"internal"},{"constant":true,"id":2172,"mutability":"constant","name":"UNKNOWN_AMOUNT_IN_FIRST_SWAP","nodeType":"VariableDeclaration","scope":2248,"src":"13462:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2170,"name":"uint256","nodeType":"ElementaryTypeName","src":"13462:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353130","id":2171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13519:3:31","typeDescriptions":{"typeIdentifier":"t_rational_510_by_1","typeString":"int_const 510"},"value":"510"},"visibility":"internal"},{"constant":true,"id":2175,"mutability":"constant","name":"MALCONSTRUCTED_MULTIHOP_SWAP","nodeType":"VariableDeclaration","scope":2248,"src":"13528:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"13528:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353131","id":2174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13585:3:31","typeDescriptions":{"typeIdentifier":"t_rational_511_by_1","typeString":"int_const 511"},"value":"511"},"visibility":"internal"},{"constant":true,"id":2178,"mutability":"constant","name":"INTERNAL_BALANCE_OVERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"13594:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2176,"name":"uint256","nodeType":"ElementaryTypeName","src":"13594:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353132","id":2177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13648:3:31","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"512"},"visibility":"internal"},{"constant":true,"id":2181,"mutability":"constant","name":"INSUFFICIENT_INTERNAL_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"13657:61:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2179,"name":"uint256","nodeType":"ElementaryTypeName","src":"13657:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353133","id":2180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13715:3:31","typeDescriptions":{"typeIdentifier":"t_rational_513_by_1","typeString":"int_const 513"},"value":"513"},"visibility":"internal"},{"constant":true,"id":2184,"mutability":"constant","name":"INVALID_ETH_INTERNAL_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"13724:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2182,"name":"uint256","nodeType":"ElementaryTypeName","src":"13724:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353134","id":2183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13781:3:31","typeDescriptions":{"typeIdentifier":"t_rational_514_by_1","typeString":"int_const 514"},"value":"514"},"visibility":"internal"},{"constant":true,"id":2187,"mutability":"constant","name":"INVALID_POST_LOAN_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"13790:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2185,"name":"uint256","nodeType":"ElementaryTypeName","src":"13790:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353135","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13844:3:31","typeDescriptions":{"typeIdentifier":"t_rational_515_by_1","typeString":"int_const 515"},"value":"515"},"visibility":"internal"},{"constant":true,"id":2190,"mutability":"constant","name":"INSUFFICIENT_ETH","nodeType":"VariableDeclaration","scope":2248,"src":"13853:48:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2188,"name":"uint256","nodeType":"ElementaryTypeName","src":"13853:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353136","id":2189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13898:3:31","typeDescriptions":{"typeIdentifier":"t_rational_516_by_1","typeString":"int_const 516"},"value":"516"},"visibility":"internal"},{"constant":true,"id":2193,"mutability":"constant","name":"UNALLOCATED_ETH","nodeType":"VariableDeclaration","scope":2248,"src":"13907:47:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2191,"name":"uint256","nodeType":"ElementaryTypeName","src":"13907:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353137","id":2192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13951:3:31","typeDescriptions":{"typeIdentifier":"t_rational_517_by_1","typeString":"int_const 517"},"value":"517"},"visibility":"internal"},{"constant":true,"id":2196,"mutability":"constant","name":"ETH_TRANSFER","nodeType":"VariableDeclaration","scope":2248,"src":"13960:44:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2194,"name":"uint256","nodeType":"ElementaryTypeName","src":"13960:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353138","id":2195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14001:3:31","typeDescriptions":{"typeIdentifier":"t_rational_518_by_1","typeString":"int_const 518"},"value":"518"},"visibility":"internal"},{"constant":true,"id":2199,"mutability":"constant","name":"CANNOT_USE_ETH_SENTINEL","nodeType":"VariableDeclaration","scope":2248,"src":"14010:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2197,"name":"uint256","nodeType":"ElementaryTypeName","src":"14010:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353139","id":2198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14062:3:31","typeDescriptions":{"typeIdentifier":"t_rational_519_by_1","typeString":"int_const 519"},"value":"519"},"visibility":"internal"},{"constant":true,"id":2202,"mutability":"constant","name":"TOKENS_MISMATCH","nodeType":"VariableDeclaration","scope":2248,"src":"14071:47:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2200,"name":"uint256","nodeType":"ElementaryTypeName","src":"14071:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353230","id":2201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14115:3:31","typeDescriptions":{"typeIdentifier":"t_rational_520_by_1","typeString":"int_const 520"},"value":"520"},"visibility":"internal"},{"constant":true,"id":2205,"mutability":"constant","name":"TOKEN_NOT_REGISTERED","nodeType":"VariableDeclaration","scope":2248,"src":"14124:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2203,"name":"uint256","nodeType":"ElementaryTypeName","src":"14124:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353231","id":2204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14173:3:31","typeDescriptions":{"typeIdentifier":"t_rational_521_by_1","typeString":"int_const 521"},"value":"521"},"visibility":"internal"},{"constant":true,"id":2208,"mutability":"constant","name":"TOKEN_ALREADY_REGISTERED","nodeType":"VariableDeclaration","scope":2248,"src":"14182:56:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2206,"name":"uint256","nodeType":"ElementaryTypeName","src":"14182:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353232","id":2207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14235:3:31","typeDescriptions":{"typeIdentifier":"t_rational_522_by_1","typeString":"int_const 522"},"value":"522"},"visibility":"internal"},{"constant":true,"id":2211,"mutability":"constant","name":"TOKENS_ALREADY_SET","nodeType":"VariableDeclaration","scope":2248,"src":"14244:50:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2209,"name":"uint256","nodeType":"ElementaryTypeName","src":"14244:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353233","id":2210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14291:3:31","typeDescriptions":{"typeIdentifier":"t_rational_523_by_1","typeString":"int_const 523"},"value":"523"},"visibility":"internal"},{"constant":true,"id":2214,"mutability":"constant","name":"TOKENS_LENGTH_MUST_BE_2","nodeType":"VariableDeclaration","scope":2248,"src":"14300:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2212,"name":"uint256","nodeType":"ElementaryTypeName","src":"14300:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353234","id":2213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14352:3:31","typeDescriptions":{"typeIdentifier":"t_rational_524_by_1","typeString":"int_const 524"},"value":"524"},"visibility":"internal"},{"constant":true,"id":2217,"mutability":"constant","name":"NONZERO_TOKEN_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"14361:53:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2215,"name":"uint256","nodeType":"ElementaryTypeName","src":"14361:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353235","id":2216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14411:3:31","typeDescriptions":{"typeIdentifier":"t_rational_525_by_1","typeString":"int_const 525"},"value":"525"},"visibility":"internal"},{"constant":true,"id":2220,"mutability":"constant","name":"BALANCE_TOTAL_OVERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"14420:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2218,"name":"uint256","nodeType":"ElementaryTypeName","src":"14420:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353236","id":2219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14471:3:31","typeDescriptions":{"typeIdentifier":"t_rational_526_by_1","typeString":"int_const 526"},"value":"526"},"visibility":"internal"},{"constant":true,"id":2223,"mutability":"constant","name":"POOL_NO_TOKENS","nodeType":"VariableDeclaration","scope":2248,"src":"14480:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2221,"name":"uint256","nodeType":"ElementaryTypeName","src":"14480:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353237","id":2222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14523:3:31","typeDescriptions":{"typeIdentifier":"t_rational_527_by_1","typeString":"int_const 527"},"value":"527"},"visibility":"internal"},{"constant":true,"id":2226,"mutability":"constant","name":"INSUFFICIENT_FLASH_LOAN_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"14532:63:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"14532:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353238","id":2225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14592:3:31","typeDescriptions":{"typeIdentifier":"t_rational_528_by_1","typeString":"int_const 528"},"value":"528"},"visibility":"internal"},{"constant":true,"id":2229,"mutability":"constant","name":"SWAP_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":2248,"src":"14614:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2227,"name":"uint256","nodeType":"ElementaryTypeName","src":"14614:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363030","id":2228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14671:3:31","typeDescriptions":{"typeIdentifier":"t_rational_600_by_1","typeString":"int_const 600"},"value":"600"},"visibility":"internal"},{"constant":true,"id":2232,"mutability":"constant","name":"FLASH_LOAN_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":2248,"src":"14680:66:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2230,"name":"uint256","nodeType":"ElementaryTypeName","src":"14680:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363031","id":2231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14743:3:31","typeDescriptions":{"typeIdentifier":"t_rational_601_by_1","typeString":"int_const 601"},"value":"601"},"visibility":"internal"},{"constant":true,"id":2235,"mutability":"constant","name":"INSUFFICIENT_FLASH_LOAN_FEE_AMOUNT","nodeType":"VariableDeclaration","scope":2248,"src":"14752:66:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2233,"name":"uint256","nodeType":"ElementaryTypeName","src":"14752:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363032","id":2234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14815:3:31","typeDescriptions":{"typeIdentifier":"t_rational_602_by_1","typeString":"int_const 602"},"value":"602"},"visibility":"internal"},{"constant":true,"id":2238,"mutability":"constant","name":"AUM_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":2248,"src":"14824:59:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2236,"name":"uint256","nodeType":"ElementaryTypeName","src":"14824:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363033","id":2237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14880:3:31","typeDescriptions":{"typeIdentifier":"t_rational_603_by_1","typeString":"int_const 603"},"value":"603"},"visibility":"internal"},{"constant":true,"id":2241,"mutability":"constant","name":"SPLITTER_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":2248,"src":"14909:64:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2239,"name":"uint256","nodeType":"ElementaryTypeName","src":"14909:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"373030","id":2240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14970:3:31","typeDescriptions":{"typeIdentifier":"t_rational_700_by_1","typeString":"int_const 700"},"value":"700"},"visibility":"internal"},{"constant":true,"id":2244,"mutability":"constant","name":"UNIMPLEMENTED","nodeType":"VariableDeclaration","scope":2248,"src":"14992:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2242,"name":"uint256","nodeType":"ElementaryTypeName","src":"14992:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"393938","id":2243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15034:3:31","typeDescriptions":{"typeIdentifier":"t_rational_998_by_1","typeString":"int_const 998"},"value":"998"},"visibility":"internal"},{"constant":true,"id":2247,"mutability":"constant","name":"SHOULD_NOT_HAPPEN","nodeType":"VariableDeclaration","scope":2248,"src":"15043:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2245,"name":"uint256","nodeType":"ElementaryTypeName","src":"15043:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"393939","id":2246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15089:3:31","typeDescriptions":{"typeIdentifier":"t_rational_999_by_1","typeString":"int_const 999"},"value":"999"},"visibility":"internal"}],"scope":2249,"src":"5072:10023:31"}],"src":"688:14408:31"},"id":31},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","exportedSymbols":{"IAuthentication":[2259]},"id":2260,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2250,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:32"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2259,"linearizedBaseContracts":[2259],"name":"IAuthentication","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2251,"nodeType":"StructuredDocumentation","src":"753:116:32","text":" @dev Returns the action identifier associated with the external function described by `selector`."},"functionSelector":"851c1bb3","id":2258,"implemented":false,"kind":"function","modifiers":[],"name":"getActionId","nodeType":"FunctionDefinition","parameters":{"id":2254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2253,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":2258,"src":"895:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2252,"name":"bytes4","nodeType":"ElementaryTypeName","src":"895:6:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"894:17:32"},"returnParameters":{"id":2257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2256,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2258,"src":"935:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2255,"name":"bytes32","nodeType":"ElementaryTypeName","src":"935:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"934:9:32"},"scope":2259,"src":"874:70:32","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2260,"src":"721:225:32"}],"src":"688:259:32"},"id":32},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol","exportedSymbols":{"IOptionalOnlyCaller":[2293]},"id":2294,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2261,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:33"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2262,"nodeType":"StructuredDocumentation","src":"721:178:33","text":" @dev Interface for the OptionalOnlyCaller helper, used to opt in to a caller\n verification for a given address to methods that are otherwise callable by any address."},"fullyImplemented":false,"id":2293,"linearizedBaseContracts":[2293],"name":"IOptionalOnlyCaller","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2263,"nodeType":"StructuredDocumentation","src":"936:72:33","text":" @dev Emitted every time setOnlyCallerCheck is called."},"id":2269,"name":"OnlyCallerOptIn","nodeType":"EventDefinition","parameters":{"id":2268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2265,"indexed":false,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2269,"src":"1035:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"1035:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2267,"indexed":false,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":2269,"src":"1049:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2266,"name":"bool","nodeType":"ElementaryTypeName","src":"1049:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1034:28:33"},"src":"1013:50:33"},{"documentation":{"id":2270,"nodeType":"StructuredDocumentation","src":"1069:164:33","text":" @dev Enables / disables verification mechanism for caller.\n @param enabled - True if caller verification shall be enabled, false otherwise."},"functionSelector":"e811f44b","id":2275,"implemented":false,"kind":"function","modifiers":[],"name":"setOnlyCallerCheck","nodeType":"FunctionDefinition","parameters":{"id":2273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2272,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":2275,"src":"1266:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2271,"name":"bool","nodeType":"ElementaryTypeName","src":"1266:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1265:14:33"},"returnParameters":{"id":2274,"nodeType":"ParameterList","parameters":[],"src":"1288:0:33"},"scope":2293,"src":"1238:51:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"fcaa54ee","id":2284,"implemented":false,"kind":"function","modifiers":[],"name":"setOnlyCallerCheckWithSignature","nodeType":"FunctionDefinition","parameters":{"id":2282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2277,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2284,"src":"1345:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2276,"name":"address","nodeType":"ElementaryTypeName","src":"1345:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2279,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":2284,"src":"1367:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2278,"name":"bool","nodeType":"ElementaryTypeName","src":"1367:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2281,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":2284,"src":"1389:22:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2280,"name":"bytes","nodeType":"ElementaryTypeName","src":"1389:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1335:82:33"},"returnParameters":{"id":2283,"nodeType":"ParameterList","parameters":[],"src":"1426:0:33"},"scope":2293,"src":"1295:132:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2285,"nodeType":"StructuredDocumentation","src":"1433:107:33","text":" @dev Returns true if caller verification is enabled for the given user, false otherwise."},"functionSelector":"a1648aa5","id":2292,"implemented":false,"kind":"function","modifiers":[],"name":"isOnlyCallerEnabled","nodeType":"FunctionDefinition","parameters":{"id":2288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2287,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2292,"src":"1574:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2286,"name":"address","nodeType":"ElementaryTypeName","src":"1574:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1573:14:33"},"returnParameters":{"id":2291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2290,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2292,"src":"1611:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2289,"name":"bool","nodeType":"ElementaryTypeName","src":"1611:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1610:6:33"},"scope":2293,"src":"1545:72:33","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2294,"src":"900:719:33"}],"src":"688:932:33"},"id":33},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","exportedSymbols":{"ISignaturesValidator":[2311]},"id":2312,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2295,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:34"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2296,"nodeType":"StructuredDocumentation","src":"721:95:34","text":" @dev Interface for the SignatureValidator helper, used to support meta-transactions."},"fullyImplemented":false,"id":2311,"linearizedBaseContracts":[2311],"name":"ISignaturesValidator","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2297,"nodeType":"StructuredDocumentation","src":"854:60:34","text":" @dev Returns the EIP712 domain separator."},"functionSelector":"ed24911d","id":2302,"implemented":false,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","parameters":{"id":2298,"nodeType":"ParameterList","parameters":[],"src":"946:2:34"},"returnParameters":{"id":2301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2300,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2302,"src":"972:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2299,"name":"bytes32","nodeType":"ElementaryTypeName","src":"972:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"971:9:34"},"scope":2311,"src":"919:62:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2303,"nodeType":"StructuredDocumentation","src":"987:83:34","text":" @dev Returns the next nonce used by an address to sign messages."},"functionSelector":"90193b7c","id":2310,"implemented":false,"kind":"function","modifiers":[],"name":"getNextNonce","nodeType":"FunctionDefinition","parameters":{"id":2306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2305,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2310,"src":"1097:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2304,"name":"address","nodeType":"ElementaryTypeName","src":"1097:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1096:14:34"},"returnParameters":{"id":2309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2308,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2310,"src":"1134:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2307,"name":"uint256","nodeType":"ElementaryTypeName","src":"1134:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1133:9:34"},"scope":2311,"src":"1075:68:34","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2312,"src":"817:328:34"}],"src":"688:458:34"},"id":34},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol","exportedSymbols":{"ITemporarilyPausable":[2330]},"id":2331,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2313,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:35"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2314,"nodeType":"StructuredDocumentation","src":"721:61:35","text":" @dev Interface for the TemporarilyPausable helper."},"fullyImplemented":false,"id":2330,"linearizedBaseContracts":[2330],"name":"ITemporarilyPausable","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2315,"nodeType":"StructuredDocumentation","src":"820:83:35","text":" @dev Emitted every time the pause state changes by `_setPaused`."},"id":2319,"name":"PausedStateChanged","nodeType":"EventDefinition","parameters":{"id":2318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2317,"indexed":false,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":2319,"src":"933:11:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2316,"name":"bool","nodeType":"ElementaryTypeName","src":"933:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"932:13:35"},"src":"908:38:35"},{"documentation":{"id":2320,"nodeType":"StructuredDocumentation","src":"952:57:35","text":" @dev Returns the current paused state."},"functionSelector":"1c0de051","id":2329,"implemented":false,"kind":"function","modifiers":[],"name":"getPausedState","nodeType":"FunctionDefinition","parameters":{"id":2321,"nodeType":"ParameterList","parameters":[],"src":"1037:2:35"},"returnParameters":{"id":2328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2323,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":2329,"src":"1100:11:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2322,"name":"bool","nodeType":"ElementaryTypeName","src":"1100:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2325,"mutability":"mutable","name":"pauseWindowEndTime","nodeType":"VariableDeclaration","scope":2329,"src":"1125:26:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2324,"name":"uint256","nodeType":"ElementaryTypeName","src":"1125:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2327,"mutability":"mutable","name":"bufferPeriodEndTime","nodeType":"VariableDeclaration","scope":2329,"src":"1165:27:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2326,"name":"uint256","nodeType":"ElementaryTypeName","src":"1165:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1086:116:35"},"scope":2330,"src":"1014:189:35","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2331,"src":"783:422:35"}],"src":"688:518:35"},"id":35},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol","exportedSymbols":{"IVersion":[2340]},"id":2341,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2332,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:36"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2333,"nodeType":"StructuredDocumentation","src":"721:83:36","text":" @notice Simple interface to retrieve the version of a deployed contract."},"fullyImplemented":false,"id":2340,"linearizedBaseContracts":[2340],"name":"IVersion","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2334,"nodeType":"StructuredDocumentation","src":"830:122:36","text":" @dev Returns a JSON representation of the contract version containing name, version number and task ID."},"functionSelector":"54fd4d50","id":2339,"implemented":false,"kind":"function","modifiers":[],"name":"version","nodeType":"FunctionDefinition","parameters":{"id":2335,"nodeType":"ParameterList","parameters":[],"src":"973:2:36"},"returnParameters":{"id":2338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2337,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2339,"src":"999:13:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2336,"name":"string","nodeType":"ElementaryTypeName","src":"999:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"998:15:36"},"scope":2340,"src":"957:57:36","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2341,"src":"805:211:36"}],"src":"688:329:36"},"id":36},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","exportedSymbols":{"IWETH":[2355]},"id":2356,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2342,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:37"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../openzeppelin/IERC20.sol","id":2343,"nodeType":"ImportDirective","scope":2356,"sourceUnit":2448,"src":"721:36:37","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2345,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"929:6:37","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2346,"nodeType":"InheritanceSpecifier","src":"929:6:37"}],"contractDependencies":[2447],"contractKind":"interface","documentation":{"id":2344,"nodeType":"StructuredDocumentation","src":"759:150:37","text":" @dev Interface for WETH9.\n See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol"},"fullyImplemented":false,"id":2355,"linearizedBaseContracts":[2355,2447],"name":"IWETH","nodeType":"ContractDefinition","nodes":[{"functionSelector":"d0e30db0","id":2349,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":2347,"nodeType":"ParameterList","parameters":[],"src":"958:2:37"},"returnParameters":{"id":2348,"nodeType":"ParameterList","parameters":[],"src":"977:0:37"},"scope":2355,"src":"942:36:37","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"2e1a7d4d","id":2354,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":2352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2351,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2354,"src":"1002:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2350,"name":"uint256","nodeType":"ElementaryTypeName","src":"1002:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1001:16:37"},"returnParameters":{"id":2353,"nodeType":"ParameterList","parameters":[],"src":"1026:0:37"},"scope":2355,"src":"984:43:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2356,"src":"910:119:37"}],"src":"688:342:37"},"id":37},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol","exportedSymbols":{"IERC1271":[2369]},"id":2370,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2357,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"92:31:38"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2358,"nodeType":"StructuredDocumentation","src":"125:189:38","text":" @dev Interface of the ERC1271 standard signature validation method for\n contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\n _Available since v4.1._"},"fullyImplemented":false,"id":2369,"linearizedBaseContracts":[2369],"name":"IERC1271","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2359,"nodeType":"StructuredDocumentation","src":"340:220:38","text":" @dev Should return whether the signature provided is valid for the provided data\n @param hash Hash of the data to be signed\n @param signature Signature byte array associated with _data"},"functionSelector":"1626ba7e","id":2368,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nodeType":"FunctionDefinition","parameters":{"id":2364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2361,"mutability":"mutable","name":"hash","nodeType":"VariableDeclaration","scope":2368,"src":"591:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2360,"name":"bytes32","nodeType":"ElementaryTypeName","src":"591:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2363,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":2368,"src":"605:22:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2362,"name":"bytes","nodeType":"ElementaryTypeName","src":"605:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"590:38:38"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2366,"mutability":"mutable","name":"magicValue","nodeType":"VariableDeclaration","scope":2368,"src":"652:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2365,"name":"bytes4","nodeType":"ElementaryTypeName","src":"652:6:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"651:19:38"},"scope":2369,"src":"565:106:38","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2370,"src":"315:358:38"}],"src":"92:582:38"},"id":38},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","exportedSymbols":{"IERC20":[2447]},"id":2448,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2371,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"33:31:39"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2372,"nodeType":"StructuredDocumentation","src":"66:70:39","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":2447,"linearizedBaseContracts":[2447],"name":"IERC20","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2373,"nodeType":"StructuredDocumentation","src":"160:66:39","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":2378,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":2374,"nodeType":"ParameterList","parameters":[],"src":"251:2:39"},"returnParameters":{"id":2377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2376,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2378,"src":"277:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2375,"name":"uint256","nodeType":"ElementaryTypeName","src":"277:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"276:9:39"},"scope":2447,"src":"231:55:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2379,"nodeType":"StructuredDocumentation","src":"292:72:39","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":2386,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":2382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2381,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":2386,"src":"388:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2380,"name":"address","nodeType":"ElementaryTypeName","src":"388:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"387:17:39"},"returnParameters":{"id":2385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2384,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2386,"src":"428:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2383,"name":"uint256","nodeType":"ElementaryTypeName","src":"428:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"427:9:39"},"scope":2447,"src":"369:68:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2387,"nodeType":"StructuredDocumentation","src":"443:209:39","text":" @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":2396,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":2392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2389,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2396,"src":"675:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2388,"name":"address","nodeType":"ElementaryTypeName","src":"675:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2391,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2396,"src":"694:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2390,"name":"uint256","nodeType":"ElementaryTypeName","src":"694:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"674:35:39"},"returnParameters":{"id":2395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2394,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2396,"src":"728:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2393,"name":"bool","nodeType":"ElementaryTypeName","src":"728:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"727:6:39"},"scope":2447,"src":"657:77:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2397,"nodeType":"StructuredDocumentation","src":"740:264:39","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":2406,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":2402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2399,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2406,"src":"1028:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2398,"name":"address","nodeType":"ElementaryTypeName","src":"1028:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2401,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2406,"src":"1043:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2400,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1027:32:39"},"returnParameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2406,"src":"1083:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"1083:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1082:9:39"},"scope":2447,"src":"1009:83:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2407,"nodeType":"StructuredDocumentation","src":"1098:642:39","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":2416,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":2412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2409,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2416,"src":"1762:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2408,"name":"address","nodeType":"ElementaryTypeName","src":"1762:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2411,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2416,"src":"1779:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2410,"name":"uint256","nodeType":"ElementaryTypeName","src":"1779:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1761:33:39"},"returnParameters":{"id":2415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2414,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2416,"src":"1813:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2413,"name":"bool","nodeType":"ElementaryTypeName","src":"1813:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1812:6:39"},"scope":2447,"src":"1745:74:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2417,"nodeType":"StructuredDocumentation","src":"1825:296:39","text":" @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":2428,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":2424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2419,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2428,"src":"2157:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2418,"name":"address","nodeType":"ElementaryTypeName","src":"2157:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2421,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2428,"src":"2181:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2420,"name":"address","nodeType":"ElementaryTypeName","src":"2181:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2423,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2428,"src":"2208:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2422,"name":"uint256","nodeType":"ElementaryTypeName","src":"2208:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2147:81:39"},"returnParameters":{"id":2427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2426,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2428,"src":"2247:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2425,"name":"bool","nodeType":"ElementaryTypeName","src":"2247:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2246:6:39"},"scope":2447,"src":"2126:127:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2429,"nodeType":"StructuredDocumentation","src":"2259:158:39","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"id":2437,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":2436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2431,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2437,"src":"2437:20:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2430,"name":"address","nodeType":"ElementaryTypeName","src":"2437:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2433,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2437,"src":"2459:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2432,"name":"address","nodeType":"ElementaryTypeName","src":"2459:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2435,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2437,"src":"2479:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2434,"name":"uint256","nodeType":"ElementaryTypeName","src":"2479:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2436:57:39"},"src":"2422:72:39"},{"anonymous":false,"documentation":{"id":2438,"nodeType":"StructuredDocumentation","src":"2500:148:39","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"id":2446,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":2445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2440,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2446,"src":"2668:21:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2439,"name":"address","nodeType":"ElementaryTypeName","src":"2668:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2442,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2446,"src":"2691:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2441,"name":"address","nodeType":"ElementaryTypeName","src":"2691:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2444,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2446,"src":"2716:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2443,"name":"uint256","nodeType":"ElementaryTypeName","src":"2716:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:63:39"},"src":"2653:78:39"}],"scope":2448,"src":"137:2596:39"}],"src":"33:2701:39"},"id":39},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","exportedSymbols":{"IERC20Permit":[2483]},"id":2484,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2449,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"33:31:40"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2450,"nodeType":"StructuredDocumentation","src":"66:482:40","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":false,"id":2483,"linearizedBaseContracts":[2483],"name":"IERC20Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2451,"nodeType":"StructuredDocumentation","src":"578:788:40","text":" @dev Sets `value` as the allowance of `spender` over `owner`'s tokens,\n given `owner`'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."},"functionSelector":"d505accf","id":2468,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":2466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2453,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2468,"src":"1396:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2452,"name":"address","nodeType":"ElementaryTypeName","src":"1396:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2455,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2468,"src":"1419:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2454,"name":"address","nodeType":"ElementaryTypeName","src":"1419:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2457,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2468,"src":"1444:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2456,"name":"uint256","nodeType":"ElementaryTypeName","src":"1444:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2459,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2468,"src":"1467:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2458,"name":"uint256","nodeType":"ElementaryTypeName","src":"1467:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2461,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2468,"src":"1493:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2460,"name":"uint8","nodeType":"ElementaryTypeName","src":"1493:5:40","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2463,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2468,"src":"1510:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2462,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1510:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2465,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2468,"src":"1529:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2464,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1529:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1386:158:40"},"returnParameters":{"id":2467,"nodeType":"ParameterList","parameters":[],"src":"1553:0:40"},"scope":2483,"src":"1371:183:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2469,"nodeType":"StructuredDocumentation","src":"1560:294:40","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":2476,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","parameters":{"id":2472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2471,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2476,"src":"1875:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2470,"name":"address","nodeType":"ElementaryTypeName","src":"1875:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1874:15:40"},"returnParameters":{"id":2475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2474,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2476,"src":"1913:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2473,"name":"uint256","nodeType":"ElementaryTypeName","src":"1913:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1912:9:40"},"scope":2483,"src":"1859:63:40","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2477,"nodeType":"StructuredDocumentation","src":"1928:128:40","text":" @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}."},"functionSelector":"3644e515","id":2482,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":2478,"nodeType":"ParameterList","parameters":[],"src":"2139:2:40"},"returnParameters":{"id":2481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2480,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2482,"src":"2165:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2479,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2165:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2164:9:40"},"scope":2483,"src":"2114:60:40","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2484,"src":"549:1627:40"}],"src":"33:2144:40"},"id":40},"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","exportedSymbols":{"IAsset":[2487]},"id":2488,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2485,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:41"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2486,"nodeType":"StructuredDocumentation","src":"721:309:41","text":" @dev This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero\n address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like\n types.\n This concept is unrelated to a Pool's Asset Managers."},"fullyImplemented":true,"id":2487,"linearizedBaseContracts":[2487],"name":"IAsset","nodeType":"ContractDefinition","nodes":[],"scope":2488,"src":"1031:73:41"}],"src":"688:417:41"},"id":41},"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","exportedSymbols":{"IAuthorizer":[2502]},"id":2503,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2489,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:42"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2502,"linearizedBaseContracts":[2502],"name":"IAuthorizer","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2490,"nodeType":"StructuredDocumentation","src":"749:121:42","text":" @dev Returns true if `account` can perform the action described by `actionId` in the contract `where`."},"functionSelector":"9be2a884","id":2501,"implemented":false,"kind":"function","modifiers":[],"name":"canPerform","nodeType":"FunctionDefinition","parameters":{"id":2497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2492,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":2501,"src":"904:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2491,"name":"bytes32","nodeType":"ElementaryTypeName","src":"904:7:42","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2494,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":2501,"src":"930:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2493,"name":"address","nodeType":"ElementaryTypeName","src":"930:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2496,"mutability":"mutable","name":"where","nodeType":"VariableDeclaration","scope":2501,"src":"955:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2495,"name":"address","nodeType":"ElementaryTypeName","src":"955:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"894:80:42"},"returnParameters":{"id":2500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2499,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2501,"src":"998:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2498,"name":"bool","nodeType":"ElementaryTypeName","src":"998:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"997:6:42"},"scope":2502,"src":"875:129:42","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2503,"src":"721:285:42"}],"src":"688:319:42"},"id":42},"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","exportedSymbols":{"IFlashLoanRecipient":[2521]},"id":2522,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2504,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:43"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2505,"nodeType":"ImportDirective","scope":2522,"sourceUnit":2448,"src":"773:51:43","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2521,"linearizedBaseContracts":[2521],"name":"IFlashLoanRecipient","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2506,"nodeType":"StructuredDocumentation","src":"862:496:43","text":" @dev When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient.\n At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this\n call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the\n Vault, or else the entire flash loan will revert.\n `userData` is the same value passed in the `IVault.flashLoan` call."},"functionSelector":"f04f2707","id":2520,"implemented":false,"kind":"function","modifiers":[],"name":"receiveFlashLoan","nodeType":"FunctionDefinition","parameters":{"id":2518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2509,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2520,"src":"1398:22:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2507,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1398:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2508,"nodeType":"ArrayTypeName","src":"1398:8:43","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2512,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":2520,"src":"1430:24:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2510,"name":"uint256","nodeType":"ElementaryTypeName","src":"1430:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2511,"nodeType":"ArrayTypeName","src":"1430:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2515,"mutability":"mutable","name":"feeAmounts","nodeType":"VariableDeclaration","scope":2520,"src":"1464:27:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2513,"name":"uint256","nodeType":"ElementaryTypeName","src":"1464:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2514,"nodeType":"ArrayTypeName","src":"1464:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2520,"src":"1501:21:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2516,"name":"bytes","nodeType":"ElementaryTypeName","src":"1501:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1388:140:43"},"returnParameters":{"id":2519,"nodeType":"ParameterList","parameters":[],"src":"1537:0:43"},"scope":2521,"src":"1363:175:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2522,"src":"826:714:43"}],"src":"688:853:43"},"id":43},"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","exportedSymbols":{"IProtocolFeesCollector":[2586]},"id":2587,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2523,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:44"},{"id":2524,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:44"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2525,"nodeType":"ImportDirective","scope":2587,"sourceUnit":2448,"src":"755:51:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"./IVault.sol","id":2526,"nodeType":"ImportDirective","scope":2587,"sourceUnit":3052,"src":"808:22:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"./IAuthorizer.sol","id":2527,"nodeType":"ImportDirective","scope":2587,"sourceUnit":2503,"src":"831:27:44","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2586,"linearizedBaseContracts":[2586],"name":"IProtocolFeesCollector","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":2531,"name":"SwapFeePercentageChanged","nodeType":"EventDefinition","parameters":{"id":2530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2529,"indexed":false,"mutability":"mutable","name":"newSwapFeePercentage","nodeType":"VariableDeclaration","scope":2531,"src":"930:28:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2528,"name":"uint256","nodeType":"ElementaryTypeName","src":"930:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"929:30:44"},"src":"899:61:44"},{"anonymous":false,"id":2535,"name":"FlashLoanFeePercentageChanged","nodeType":"EventDefinition","parameters":{"id":2534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2533,"indexed":false,"mutability":"mutable","name":"newFlashLoanFeePercentage","nodeType":"VariableDeclaration","scope":2535,"src":"1001:33:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2532,"name":"uint256","nodeType":"ElementaryTypeName","src":"1001:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1000:35:44"},"src":"965:71:44"},{"functionSelector":"6daefab6","id":2546,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawCollectedFees","nodeType":"FunctionDefinition","parameters":{"id":2544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2538,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2546,"src":"1082:24:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2536,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1082:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2537,"nodeType":"ArrayTypeName","src":"1082:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2541,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":2546,"src":"1116:26:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2539,"name":"uint256","nodeType":"ElementaryTypeName","src":"1116:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2540,"nodeType":"ArrayTypeName","src":"1116:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2546,"src":"1152:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2542,"name":"address","nodeType":"ElementaryTypeName","src":"1152:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1072:103:44"},"returnParameters":{"id":2545,"nodeType":"ParameterList","parameters":[],"src":"1184:0:44"},"scope":2586,"src":"1042:143:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"38e9922e","id":2551,"implemented":false,"kind":"function","modifiers":[],"name":"setSwapFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2548,"mutability":"mutable","name":"newSwapFeePercentage","nodeType":"VariableDeclaration","scope":2551,"src":"1221:28:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2547,"name":"uint256","nodeType":"ElementaryTypeName","src":"1221:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1220:30:44"},"returnParameters":{"id":2550,"nodeType":"ParameterList","parameters":[],"src":"1259:0:44"},"scope":2586,"src":"1191:69:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6b6b9f69","id":2556,"implemented":false,"kind":"function","modifiers":[],"name":"setFlashLoanFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2553,"mutability":"mutable","name":"newFlashLoanFeePercentage","nodeType":"VariableDeclaration","scope":2556,"src":"1301:33:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2552,"name":"uint256","nodeType":"ElementaryTypeName","src":"1301:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1300:35:44"},"returnParameters":{"id":2555,"nodeType":"ParameterList","parameters":[],"src":"1344:0:44"},"scope":2586,"src":"1266:79:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"55c67628","id":2561,"implemented":false,"kind":"function","modifiers":[],"name":"getSwapFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2557,"nodeType":"ParameterList","parameters":[],"src":"1380:2:44"},"returnParameters":{"id":2560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2561,"src":"1406:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2558,"name":"uint256","nodeType":"ElementaryTypeName","src":"1406:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1405:9:44"},"scope":2586,"src":"1351:64:44","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d877845c","id":2566,"implemented":false,"kind":"function","modifiers":[],"name":"getFlashLoanFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2562,"nodeType":"ParameterList","parameters":[],"src":"1455:2:44"},"returnParameters":{"id":2565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2564,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2566,"src":"1481:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2563,"name":"uint256","nodeType":"ElementaryTypeName","src":"1481:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1480:9:44"},"scope":2586,"src":"1421:69:44","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e42abf35","id":2575,"implemented":false,"kind":"function","modifiers":[],"name":"getCollectedFeeAmounts","nodeType":"FunctionDefinition","parameters":{"id":2570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2569,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2575,"src":"1528:22:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2567,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1528:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2568,"nodeType":"ArrayTypeName","src":"1528:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1527:24:44"},"returnParameters":{"id":2574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2573,"mutability":"mutable","name":"feeAmounts","nodeType":"VariableDeclaration","scope":2575,"src":"1575:27:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2571,"name":"uint256","nodeType":"ElementaryTypeName","src":"1575:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2572,"nodeType":"ArrayTypeName","src":"1575:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1574:29:44"},"scope":2586,"src":"1496:108:44","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"aaabadc5","id":2580,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":2576,"nodeType":"ParameterList","parameters":[],"src":"1632:2:44"},"returnParameters":{"id":2579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2578,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2580,"src":"1658:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":2577,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"1658:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1657:13:44"},"scope":2586,"src":"1610:61:44","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fbfa77cf","id":2585,"implemented":false,"kind":"function","modifiers":[],"name":"vault","nodeType":"FunctionDefinition","parameters":{"id":2581,"nodeType":"ParameterList","parameters":[],"src":"1691:2:44"},"returnParameters":{"id":2584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2583,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2585,"src":"1717:6:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":2582,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1717:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1716:8:44"},"scope":2586,"src":"1677:48:44","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2587,"src":"860:867:44"}],"src":"688:1040:44"},"id":44},"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","exportedSymbols":{"IVault":[3051]},"id":3052,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2588,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"688:33:45"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2589,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2448,"src":"723:51:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":2590,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2260,"src":"775:55:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","file":"../solidity-utils/helpers/ISignaturesValidator.sol","id":2591,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2312,"src":"831:60:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol","file":"../solidity-utils/helpers/ITemporarilyPausable.sol","id":2592,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2331,"src":"892:60:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"../solidity-utils/misc/IWETH.sol","id":2593,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2356,"src":"953:42:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","file":"./IAsset.sol","id":2594,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2488,"src":"997:22:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"./IAuthorizer.sol","id":2595,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2503,"src":"1020:27:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","file":"./IFlashLoanRecipient.sol","id":2596,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2522,"src":"1048:35:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","file":"./IProtocolFeesCollector.sol","id":2597,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2587,"src":"1084:38:45","symbolAliases":[],"unitAlias":""},{"id":2598,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"1124:31:45"},{"abstract":false,"baseContracts":[{"baseName":{"id":2600,"name":"ISignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":2311,"src":"1349:20:45","typeDescriptions":{"typeIdentifier":"t_contract$_ISignaturesValidator_$2311","typeString":"contract ISignaturesValidator"}},"id":2601,"nodeType":"InheritanceSpecifier","src":"1349:20:45"},{"baseName":{"id":2602,"name":"ITemporarilyPausable","nodeType":"UserDefinedTypeName","referencedDeclaration":2330,"src":"1371:20:45","typeDescriptions":{"typeIdentifier":"t_contract$_ITemporarilyPausable_$2330","typeString":"contract ITemporarilyPausable"}},"id":2603,"nodeType":"InheritanceSpecifier","src":"1371:20:45"},{"baseName":{"id":2604,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":2259,"src":"1393:15:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$2259","typeString":"contract IAuthentication"}},"id":2605,"nodeType":"InheritanceSpecifier","src":"1393:15:45"}],"contractDependencies":[2259,2311,2330],"contractKind":"interface","documentation":{"id":2599,"nodeType":"StructuredDocumentation","src":"1157:171:45","text":" @dev Full external interface for the Vault core contract - no external or public methods exist in the contract that\n don't override one of these declarations."},"fullyImplemented":false,"id":3051,"linearizedBaseContracts":[3051,2259,2330,2311],"name":"IVault","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2606,"nodeType":"StructuredDocumentation","src":"2906:55:45","text":" @dev Returns the Vault's Authorizer."},"functionSelector":"aaabadc5","id":2611,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":2607,"nodeType":"ParameterList","parameters":[],"src":"2988:2:45"},"returnParameters":{"id":2610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2609,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2611,"src":"3014:11:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":2608,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"3014:11:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"3013:13:45"},"scope":3051,"src":"2966:61:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2612,"nodeType":"StructuredDocumentation","src":"3033:175:45","text":" @dev Sets a new Authorizer for the Vault. The caller must be allowed by the current Authorizer to do this.\n Emits an `AuthorizerChanged` event."},"functionSelector":"058a628f","id":2617,"implemented":false,"kind":"function","modifiers":[],"name":"setAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":2615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2614,"mutability":"mutable","name":"newAuthorizer","nodeType":"VariableDeclaration","scope":2617,"src":"3236:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":2613,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"3236:11:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"3235:27:45"},"returnParameters":{"id":2616,"nodeType":"ParameterList","parameters":[],"src":"3271:0:45"},"scope":3051,"src":"3213:59:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2618,"nodeType":"StructuredDocumentation","src":"3278:80:45","text":" @dev Emitted when a new authorizer is set by `setAuthorizer`."},"id":2622,"name":"AuthorizerChanged","nodeType":"EventDefinition","parameters":{"id":2621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2620,"indexed":true,"mutability":"mutable","name":"newAuthorizer","nodeType":"VariableDeclaration","scope":2622,"src":"3387:33:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":2619,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"3387:11:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"3386:35:45"},"src":"3363:59:45"},{"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"4518:99:45","text":" @dev Returns true if `user` has approved `relayer` to act as a relayer for them."},"functionSelector":"fec90d72","id":2632,"implemented":false,"kind":"function","modifiers":[],"name":"hasApprovedRelayer","nodeType":"FunctionDefinition","parameters":{"id":2628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2632,"src":"4650:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"4650:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":2632,"src":"4664:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"4664:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4649:31:45"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2630,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2632,"src":"4704:4:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2629,"name":"bool","nodeType":"ElementaryTypeName","src":"4704:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4703:6:45"},"scope":3051,"src":"4622:88:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2633,"nodeType":"StructuredDocumentation","src":"4716:178:45","text":" @dev Allows `relayer` to act as a relayer for `sender` if `approved` is true, and disallows it otherwise.\n Emits a `RelayerApprovalChanged` event."},"functionSelector":"fa6e671d","id":2642,"implemented":false,"kind":"function","modifiers":[],"name":"setRelayerApproval","nodeType":"FunctionDefinition","parameters":{"id":2640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2635,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2642,"src":"4936:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2634,"name":"address","nodeType":"ElementaryTypeName","src":"4936:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2637,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":2642,"src":"4960:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2636,"name":"address","nodeType":"ElementaryTypeName","src":"4960:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2639,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":2642,"src":"4985:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2638,"name":"bool","nodeType":"ElementaryTypeName","src":"4985:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4926:78:45"},"returnParameters":{"id":2641,"nodeType":"ParameterList","parameters":[],"src":"5013:0:45"},"scope":3051,"src":"4899:115:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2643,"nodeType":"StructuredDocumentation","src":"5020:104:45","text":" @dev Emitted every time a relayer is approved or disapproved by `setRelayerApproval`."},"id":2651,"name":"RelayerApprovalChanged","nodeType":"EventDefinition","parameters":{"id":2650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2645,"indexed":true,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":2651,"src":"5158:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2644,"name":"address","nodeType":"ElementaryTypeName","src":"5158:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2647,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2651,"src":"5183:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2646,"name":"address","nodeType":"ElementaryTypeName","src":"5183:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2649,"indexed":false,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":2651,"src":"5207:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2648,"name":"bool","nodeType":"ElementaryTypeName","src":"5207:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5157:64:45"},"src":"5129:93:45"},{"documentation":{"id":2652,"nodeType":"StructuredDocumentation","src":"5930:78:45","text":" @dev Returns `user`'s Internal Balance for a set of tokens."},"functionSelector":"0f5a6efa","id":2663,"implemented":false,"kind":"function","modifiers":[],"name":"getInternalBalance","nodeType":"FunctionDefinition","parameters":{"id":2658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2654,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2663,"src":"6041:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2653,"name":"address","nodeType":"ElementaryTypeName","src":"6041:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2657,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2663,"src":"6055:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2655,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"6055:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2656,"nodeType":"ArrayTypeName","src":"6055:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"6040:38:45"},"returnParameters":{"id":2662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2661,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2663,"src":"6102:16:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2659,"name":"uint256","nodeType":"ElementaryTypeName","src":"6102:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2660,"nodeType":"ArrayTypeName","src":"6102:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6101:18:45"},"scope":3051,"src":"6013:107:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2664,"nodeType":"StructuredDocumentation","src":"6126:416:45","text":" @dev Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer)\n and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as\n it lets integrators reuse a user's Vault allowance.\n For each operation, if the caller is not `sender`, it must be an authorized relayer for them."},"functionSelector":"0e8e3e84","id":2670,"implemented":false,"kind":"function","modifiers":[],"name":"manageUserBalance","nodeType":"FunctionDefinition","parameters":{"id":2668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2667,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":2670,"src":"6574:26:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$2681_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp[]"},"typeName":{"baseType":{"id":2665,"name":"UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":2681,"src":"6574:13:45","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$2681_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":2666,"nodeType":"ArrayTypeName","src":"6574:15:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$2681_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}},"visibility":"internal"}],"src":"6573:28:45"},"returnParameters":{"id":2669,"nodeType":"ParameterList","parameters":[],"src":"6618:0:45"},"scope":3051,"src":"6547:72:45","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.UserBalanceOp","id":2681,"members":[{"constant":false,"id":2672,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":2681,"src":"6836:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_UserBalanceOpKind_$2686","typeString":"enum IVault.UserBalanceOpKind"},"typeName":{"id":2671,"name":"UserBalanceOpKind","nodeType":"UserDefinedTypeName","referencedDeclaration":2686,"src":"6836:17:45","typeDescriptions":{"typeIdentifier":"t_enum$_UserBalanceOpKind_$2686","typeString":"enum IVault.UserBalanceOpKind"}},"visibility":"internal"},{"constant":false,"id":2674,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":2681,"src":"6868:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"},"typeName":{"id":2673,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2487,"src":"6868:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"}},"visibility":"internal"},{"constant":false,"id":2676,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2681,"src":"6890:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2675,"name":"uint256","nodeType":"ElementaryTypeName","src":"6890:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2678,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2681,"src":"6914:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2677,"name":"address","nodeType":"ElementaryTypeName","src":"6914:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2680,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2681,"src":"6938:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":2679,"name":"address","nodeType":"ElementaryTypeName","src":"6938:15:45","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"name":"UserBalanceOp","nodeType":"StructDefinition","scope":3051,"src":"6805:165:45","visibility":"public"},{"canonicalName":"IVault.UserBalanceOpKind","id":2686,"members":[{"id":2682,"name":"DEPOSIT_INTERNAL","nodeType":"EnumValue","src":"8608:16:45"},{"id":2683,"name":"WITHDRAW_INTERNAL","nodeType":"EnumValue","src":"8626:17:45"},{"id":2684,"name":"TRANSFER_INTERNAL","nodeType":"EnumValue","src":"8645:17:45"},{"id":2685,"name":"TRANSFER_EXTERNAL","nodeType":"EnumValue","src":"8664:17:45"}],"name":"UserBalanceOpKind","nodeType":"EnumDefinition","src":"8583:100:45"},{"anonymous":false,"documentation":{"id":2687,"nodeType":"StructuredDocumentation","src":"8689:317:45","text":" @dev Emitted when a user's Internal Balance changes, either from calls to `manageUserBalance`, or through\n interacting with Pools using Internal Balance.\n Because Internal Balance works exclusively with ERC20 tokens, ETH deposits and withdrawals will use the WETH\n address."},"id":2695,"name":"InternalBalanceChanged","nodeType":"EventDefinition","parameters":{"id":2694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2689,"indexed":true,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2695,"src":"9040:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2688,"name":"address","nodeType":"ElementaryTypeName","src":"9040:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2691,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2695,"src":"9062:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":2690,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"9062:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2693,"indexed":false,"mutability":"mutable","name":"delta","nodeType":"VariableDeclaration","scope":2695,"src":"9084:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2692,"name":"int256","nodeType":"ElementaryTypeName","src":"9084:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9039:58:45"},"src":"9011:87:45"},{"anonymous":false,"documentation":{"id":2696,"nodeType":"StructuredDocumentation","src":"9104:131:45","text":" @dev Emitted when a user's Vault ERC20 allowance is used by the Vault to transfer tokens to an external account."},"id":2706,"name":"ExternalBalanceTransfer","nodeType":"EventDefinition","parameters":{"id":2705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2698,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2706,"src":"9270:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":2697,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"9270:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2700,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2706,"src":"9292:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2699,"name":"address","nodeType":"ElementaryTypeName","src":"9292:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2702,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2706,"src":"9316:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2701,"name":"address","nodeType":"ElementaryTypeName","src":"9316:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2704,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2706,"src":"9335:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2703,"name":"uint256","nodeType":"ElementaryTypeName","src":"9335:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9269:81:45"},"src":"9240:111:45"},{"canonicalName":"IVault.PoolSpecialization","id":2710,"members":[{"id":2707,"name":"GENERAL","nodeType":"EnumValue","src":"10457:7:45"},{"id":2708,"name":"MINIMAL_SWAP_INFO","nodeType":"EnumValue","src":"10466:17:45"},{"id":2709,"name":"TWO_TOKEN","nodeType":"EnumValue","src":"10485:9:45"}],"name":"PoolSpecialization","nodeType":"EnumDefinition","src":"10431:65:45"},{"documentation":{"id":2711,"nodeType":"StructuredDocumentation","src":"10502:702:45","text":" @dev Registers the caller account as a Pool with a given specialization setting. Returns the Pool's ID, which\n is used in all Pool-related functions. Pools cannot be deregistered, nor can the Pool's specialization be\n changed.\n The caller is expected to be a smart contract that implements either `IGeneralPool` or `IMinimalSwapInfoPool`,\n depending on the chosen specialization setting. This contract is known as the Pool's contract.\n Note that the same contract may register itself as multiple Pools with unique Pool IDs, or in other words,\n multiple Pools may share the same contract.\n Emits a `PoolRegistered` event."},"functionSelector":"09b2760f","id":2718,"implemented":false,"kind":"function","modifiers":[],"name":"registerPool","nodeType":"FunctionDefinition","parameters":{"id":2714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2713,"mutability":"mutable","name":"specialization","nodeType":"VariableDeclaration","scope":2718,"src":"11231:33:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$2710","typeString":"enum IVault.PoolSpecialization"},"typeName":{"id":2712,"name":"PoolSpecialization","nodeType":"UserDefinedTypeName","referencedDeclaration":2710,"src":"11231:18:45","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$2710","typeString":"enum IVault.PoolSpecialization"}},"visibility":"internal"}],"src":"11230:35:45"},"returnParameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2718,"src":"11284:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2715,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11284:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11283:9:45"},"scope":3051,"src":"11209:84:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2719,"nodeType":"StructuredDocumentation","src":"11299:84:45","text":" @dev Emitted when a Pool is registered by calling `registerPool`."},"id":2727,"name":"PoolRegistered","nodeType":"EventDefinition","parameters":{"id":2726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2721,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2727,"src":"11409:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2720,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11409:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2723,"indexed":true,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":2727,"src":"11433:27:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2722,"name":"address","nodeType":"ElementaryTypeName","src":"11433:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2725,"indexed":false,"mutability":"mutable","name":"specialization","nodeType":"VariableDeclaration","scope":2727,"src":"11462:33:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$2710","typeString":"enum IVault.PoolSpecialization"},"typeName":{"id":2724,"name":"PoolSpecialization","nodeType":"UserDefinedTypeName","referencedDeclaration":2710,"src":"11462:18:45","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$2710","typeString":"enum IVault.PoolSpecialization"}},"visibility":"internal"}],"src":"11408:88:45"},"src":"11388:109:45"},{"documentation":{"id":2728,"nodeType":"StructuredDocumentation","src":"11503:85:45","text":" @dev Returns a Pool's contract address and specialization setting."},"functionSelector":"f6c00927","id":2737,"implemented":false,"kind":"function","modifiers":[],"name":"getPool","nodeType":"FunctionDefinition","parameters":{"id":2731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2730,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2737,"src":"11610:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2729,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11610:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11609:16:45"},"returnParameters":{"id":2736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2733,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2737,"src":"11649:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2732,"name":"address","nodeType":"ElementaryTypeName","src":"11649:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2735,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2737,"src":"11658:18:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$2710","typeString":"enum IVault.PoolSpecialization"},"typeName":{"id":2734,"name":"PoolSpecialization","nodeType":"UserDefinedTypeName","referencedDeclaration":2710,"src":"11658:18:45","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$2710","typeString":"enum IVault.PoolSpecialization"}},"visibility":"internal"}],"src":"11648:29:45"},"scope":3051,"src":"11593:85:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2738,"nodeType":"StructuredDocumentation","src":"11684:1422:45","text":" @dev Registers `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n Pools can only interact with tokens they have registered. Users join a Pool by transferring registered tokens,\n exit by receiving registered tokens, and can only swap registered tokens.\n Each token can only be registered once. For Pools with the Two Token specialization, `tokens` must have a length\n of two, that is, both tokens must be registered in the same `registerTokens` call, and they must be sorted in\n ascending order.\n The `tokens` and `assetManagers` arrays must have the same length, and each entry in these indicates the Asset\n Manager for the corresponding token. Asset Managers can manage a Pool's tokens via `managePoolBalance`,\n depositing and withdrawing them directly, and can even set their balance to arbitrary amounts. They are therefore\n expected to be highly secured smart contracts with sound design principles, and the decision to register an\n Asset Manager should not be made lightly.\n Pools can choose not to assign an Asset Manager to a given token by passing in the zero address. Once an Asset\n Manager is set, it cannot be changed except by deregistering the associated token and registering again with a\n different Asset Manager.\n Emits a `TokensRegistered` event."},"functionSelector":"66a9c7d2","id":2749,"implemented":false,"kind":"function","modifiers":[],"name":"registerTokens","nodeType":"FunctionDefinition","parameters":{"id":2747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2740,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2749,"src":"13144:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2739,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13144:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2743,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2749,"src":"13168:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2741,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"13168:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2742,"nodeType":"ArrayTypeName","src":"13168:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2746,"mutability":"mutable","name":"assetManagers","nodeType":"VariableDeclaration","scope":2749,"src":"13200:30:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2744,"name":"address","nodeType":"ElementaryTypeName","src":"13200:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2745,"nodeType":"ArrayTypeName","src":"13200:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13134:102:45"},"returnParameters":{"id":2748,"nodeType":"ParameterList","parameters":[],"src":"13245:0:45"},"scope":3051,"src":"13111:135:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2750,"nodeType":"StructuredDocumentation","src":"13252:89:45","text":" @dev Emitted when a Pool registers tokens by calling `registerTokens`."},"id":2760,"name":"TokensRegistered","nodeType":"EventDefinition","parameters":{"id":2759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2752,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2760,"src":"13369:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2751,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13369:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2755,"indexed":false,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2760,"src":"13393:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2753,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"13393:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2754,"nodeType":"ArrayTypeName","src":"13393:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2758,"indexed":false,"mutability":"mutable","name":"assetManagers","nodeType":"VariableDeclaration","scope":2760,"src":"13410:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2756,"name":"address","nodeType":"ElementaryTypeName","src":"13410:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2757,"nodeType":"ArrayTypeName","src":"13410:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13368:66:45"},"src":"13346:89:45"},{"documentation":{"id":2761,"nodeType":"StructuredDocumentation","src":"13441:567:45","text":" @dev Deregisters `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n Only registered tokens (via `registerTokens`) can be deregistered. Additionally, they must have zero total\n balance. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens\n must be deregistered in the same `deregisterTokens` call.\n A deregistered token can be re-registered later on, possibly with a different Asset Manager.\n Emits a `TokensDeregistered` event."},"functionSelector":"7d3aeb96","id":2769,"implemented":false,"kind":"function","modifiers":[],"name":"deregisterTokens","nodeType":"FunctionDefinition","parameters":{"id":2767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2763,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2769,"src":"14039:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2762,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14039:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2766,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2769,"src":"14055:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2764,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"14055:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2765,"nodeType":"ArrayTypeName","src":"14055:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"14038:40:45"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"14087:0:45"},"scope":3051,"src":"14013:75:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2770,"nodeType":"StructuredDocumentation","src":"14094:93:45","text":" @dev Emitted when a Pool deregisters tokens by calling `deregisterTokens`."},"id":2777,"name":"TokensDeregistered","nodeType":"EventDefinition","parameters":{"id":2776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2777,"src":"14217:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2771,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14217:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2775,"indexed":false,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2777,"src":"14241:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2773,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"14241:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2774,"nodeType":"ArrayTypeName","src":"14241:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"14216:41:45"},"src":"14192:66:45"},{"documentation":{"id":2778,"nodeType":"StructuredDocumentation","src":"14264:1043:45","text":" @dev Returns detailed information for a Pool's registered token.\n `cash` is the number of tokens the Vault currently holds for the Pool. `managed` is the number of tokens\n withdrawn and held outside the Vault by the Pool's token Asset Manager. The Pool's total balance for `token`\n equals the sum of `cash` and `managed`.\n Internally, `cash` and `managed` are stored using 112 bits. No action can ever cause a Pool's token `cash`,\n `managed` or `total` balance to be greater than 2^112 - 1.\n `lastChangeBlock` is the number of the block in which `token`'s total balance was last modified (via either a\n join, exit, swap, or Asset Manager update). This value is useful to avoid so-called 'sandwich attacks', for\n example when developing price oracles. A change of zero (e.g. caused by a swap with amount zero) is considered a\n change for this purpose, and will update `lastChangeBlock`.\n `assetManager` is the Pool's token Asset Manager."},"functionSelector":"b05f8e48","id":2793,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolTokenInfo","nodeType":"FunctionDefinition","parameters":{"id":2783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2780,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2793,"src":"15338:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2779,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15338:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2782,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2793,"src":"15354:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":2781,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"15354:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"15337:30:45"},"returnParameters":{"id":2792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2785,"mutability":"mutable","name":"cash","nodeType":"VariableDeclaration","scope":2793,"src":"15428:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2784,"name":"uint256","nodeType":"ElementaryTypeName","src":"15428:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2787,"mutability":"mutable","name":"managed","nodeType":"VariableDeclaration","scope":2793,"src":"15454:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2786,"name":"uint256","nodeType":"ElementaryTypeName","src":"15454:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2789,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":2793,"src":"15483:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2788,"name":"uint256","nodeType":"ElementaryTypeName","src":"15483:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2791,"mutability":"mutable","name":"assetManager","nodeType":"VariableDeclaration","scope":2793,"src":"15520:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2790,"name":"address","nodeType":"ElementaryTypeName","src":"15520:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15414:136:45"},"scope":3051,"src":"15312:239:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2794,"nodeType":"StructuredDocumentation","src":"15557:828:45","text":" @dev Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of\n the tokens' `balances` changed.\n The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all\n Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order.\n If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same\n order as passed to `registerTokens`.\n Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are\n the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo`\n instead."},"functionSelector":"f94d4668","id":2807,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolTokens","nodeType":"FunctionDefinition","parameters":{"id":2797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2796,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2807,"src":"16413:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2795,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16413:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16412:16:45"},"returnParameters":{"id":2806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2800,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2807,"src":"16489:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2798,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"16489:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2799,"nodeType":"ArrayTypeName","src":"16489:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2803,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":2807,"src":"16525:25:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2801,"name":"uint256","nodeType":"ElementaryTypeName","src":"16525:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2802,"nodeType":"ArrayTypeName","src":"16525:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2805,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":2807,"src":"16564:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2804,"name":"uint256","nodeType":"ElementaryTypeName","src":"16564:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16475:122:45"},"scope":3051,"src":"16390:208:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2808,"nodeType":"StructuredDocumentation","src":"16604:2304:45","text":" @dev Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will\n trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized\n Pool shares.\n If the caller is not `sender`, it must be an authorized relayer for them.\n The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount\n to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces\n these maximums.\n If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable\n this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the\n WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent\n back to the caller (not the sender, which is important for relayers).\n `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be\n sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final\n `assets` array might not be sorted. Pools with no registered tokens cannot be joined.\n If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only\n be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be\n withdrawn from Internal Balance: attempting to do so will trigger a revert.\n This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement\n their own custom logic. This typically requires additional information from the user (such as the expected number\n of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed\n directly to the Pool's contract, as is `recipient`.\n Emits a `PoolBalanceChanged` event."},"functionSelector":"b95cac28","id":2819,"implemented":false,"kind":"function","modifiers":[],"name":"joinPool","nodeType":"FunctionDefinition","parameters":{"id":2817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2810,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2819,"src":"18940:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2809,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18940:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2812,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2819,"src":"18964:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2811,"name":"address","nodeType":"ElementaryTypeName","src":"18964:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2814,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2819,"src":"18988:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2813,"name":"address","nodeType":"ElementaryTypeName","src":"18988:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2816,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":2819,"src":"19015:30:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$2830_memory_ptr","typeString":"struct IVault.JoinPoolRequest"},"typeName":{"id":2815,"name":"JoinPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":2830,"src":"19015:15:45","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$2830_storage_ptr","typeString":"struct IVault.JoinPoolRequest"}},"visibility":"internal"}],"src":"18930:121:45"},"returnParameters":{"id":2818,"nodeType":"ParameterList","parameters":[],"src":"19068:0:45"},"scope":3051,"src":"18913:156:45","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.JoinPoolRequest","id":2830,"members":[{"constant":false,"id":2822,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":2830,"src":"19108:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_storage_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":2820,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2487,"src":"19108:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"}},"id":2821,"nodeType":"ArrayTypeName","src":"19108:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":2825,"mutability":"mutable","name":"maxAmountsIn","nodeType":"VariableDeclaration","scope":2830,"src":"19133:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2823,"name":"uint256","nodeType":"ElementaryTypeName","src":"19133:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2824,"nodeType":"ArrayTypeName","src":"19133:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2827,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2830,"src":"19165:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2826,"name":"bytes","nodeType":"ElementaryTypeName","src":"19165:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2829,"mutability":"mutable","name":"fromInternalBalance","nodeType":"VariableDeclaration","scope":2830,"src":"19189:24:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2828,"name":"bool","nodeType":"ElementaryTypeName","src":"19189:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"JoinPoolRequest","nodeType":"StructDefinition","scope":3051,"src":"19075:145:45","visibility":"public"},{"documentation":{"id":2831,"nodeType":"StructuredDocumentation","src":"19226:2489:45","text":" @dev Called by users to exit a Pool, which transfers tokens from the Pool's balance to `recipient`. This will\n trigger custom Pool behavior, which will typically ask for something in return from `sender` - often tokenized\n Pool shares. The amount of tokens that can be withdrawn is limited by the Pool's `cash` balance (see\n `getPoolTokenInfo`).\n If the caller is not `sender`, it must be an authorized relayer for them.\n The `tokens` and `minAmountsOut` arrays must have the same length, and each entry in these indicates the minimum\n token amount to receive for each token contract. The amounts to send are decided by the Pool and not the Vault:\n it just enforces these minimums.\n If exiting a Pool that holds WETH, it is possible to receive ETH directly: the Vault will do the unwrapping. To\n enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead\n of the WETH address. Note that it is not possible to combine ETH and WETH in the same exit.\n `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n interacting with Pools that register and deregister tokens frequently. If receiving ETH however, the array must\n be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the\n final `assets` array might not be sorted. Pools with no registered tokens cannot be exited.\n If `toInternalBalance` is true, the tokens will be deposited to `recipient`'s Internal Balance. Otherwise,\n an ERC20 transfer will be performed. Note that ETH cannot be deposited to Internal Balance: attempting to\n do so will trigger a revert.\n `minAmountsOut` is the minimum amount of tokens the user expects to get out of the Pool, for each token in the\n `tokens` array. This array must match the Pool's registered tokens.\n This causes the Vault to call the `IBasePool.onExitPool` hook on the Pool's contract, where Pools implement\n their own custom logic. This typically requires additional information from the user (such as the expected number\n of Pool shares to return). This can be encoded in the `userData` argument, which is ignored by the Vault and\n passed directly to the Pool's contract.\n Emits a `PoolBalanceChanged` event."},"functionSelector":"8bdb3913","id":2842,"implemented":false,"kind":"function","modifiers":[],"name":"exitPool","nodeType":"FunctionDefinition","parameters":{"id":2840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2833,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2842,"src":"21747:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2832,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21747:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2835,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2842,"src":"21771:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2834,"name":"address","nodeType":"ElementaryTypeName","src":"21771:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2837,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2842,"src":"21795:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"21795:15:45","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":2839,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":2842,"src":"21830:30:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$2853_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":2838,"name":"ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":2853,"src":"21830:15:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$2853_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"src":"21737:129:45"},"returnParameters":{"id":2841,"nodeType":"ParameterList","parameters":[],"src":"21875:0:45"},"scope":3051,"src":"21720:156:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.ExitPoolRequest","id":2853,"members":[{"constant":false,"id":2845,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":2853,"src":"21915:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_storage_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":2843,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2487,"src":"21915:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"}},"id":2844,"nodeType":"ArrayTypeName","src":"21915:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":2848,"mutability":"mutable","name":"minAmountsOut","nodeType":"VariableDeclaration","scope":2853,"src":"21940:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2846,"name":"uint256","nodeType":"ElementaryTypeName","src":"21940:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2847,"nodeType":"ArrayTypeName","src":"21940:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2850,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2853,"src":"21973:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2849,"name":"bytes","nodeType":"ElementaryTypeName","src":"21973:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2852,"mutability":"mutable","name":"toInternalBalance","nodeType":"VariableDeclaration","scope":2853,"src":"21997:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2851,"name":"bool","nodeType":"ElementaryTypeName","src":"21997:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"ExitPoolRequest","nodeType":"StructDefinition","scope":3051,"src":"21882:144:45","visibility":"public"},{"anonymous":false,"documentation":{"id":2854,"nodeType":"StructuredDocumentation","src":"22032:116:45","text":" @dev Emitted when a user joins or exits a Pool by calling `joinPool` or `exitPool`, respectively."},"id":2869,"name":"PoolBalanceChanged","nodeType":"EventDefinition","parameters":{"id":2868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2856,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2869,"src":"22187:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2855,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22187:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2858,"indexed":true,"mutability":"mutable","name":"liquidityProvider","nodeType":"VariableDeclaration","scope":2869,"src":"22219:33:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2857,"name":"address","nodeType":"ElementaryTypeName","src":"22219:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2861,"indexed":false,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2869,"src":"22262:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2859,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"22262:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2860,"nodeType":"ArrayTypeName","src":"22262:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2864,"indexed":false,"mutability":"mutable","name":"deltas","nodeType":"VariableDeclaration","scope":2869,"src":"22287:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":2862,"name":"int256","nodeType":"ElementaryTypeName","src":"22287:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2863,"nodeType":"ArrayTypeName","src":"22287:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"},{"constant":false,"id":2867,"indexed":false,"mutability":"mutable","name":"protocolFeeAmounts","nodeType":"VariableDeclaration","scope":2869,"src":"22312:28:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2865,"name":"uint256","nodeType":"ElementaryTypeName","src":"22312:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2866,"nodeType":"ArrayTypeName","src":"22312:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"22177:169:45"},"src":"22153:194:45"},{"canonicalName":"IVault.PoolBalanceChangeKind","id":2872,"members":[{"id":2870,"name":"JOIN","nodeType":"EnumValue","src":"22382:4:45"},{"id":2871,"name":"EXIT","nodeType":"EnumValue","src":"22388:4:45"}],"name":"PoolBalanceChangeKind","nodeType":"EnumDefinition","src":"22353:41:45"},{"canonicalName":"IVault.SwapKind","id":2875,"members":[{"id":2873,"name":"GIVEN_IN","nodeType":"EnumValue","src":"25995:8:45"},{"id":2874,"name":"GIVEN_OUT","nodeType":"EnumValue","src":"26005:9:45"}],"name":"SwapKind","nodeType":"EnumDefinition","src":"25979:37:45"},{"documentation":{"id":2876,"nodeType":"StructuredDocumentation","src":"26022:587:45","text":" @dev Performs a swap with a single Pool.\n If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens\n taken from the Pool, which must be greater than or equal to `limit`.\n If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens\n sent to the Pool, which must be less than or equal to `limit`.\n Internal Balance usage and the recipient are determined by the `funds` struct.\n Emits a `Swap` event."},"functionSelector":"52bbbe29","id":2889,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":2885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2878,"mutability":"mutable","name":"singleSwap","nodeType":"VariableDeclaration","scope":2889,"src":"26637:28:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$2902_memory_ptr","typeString":"struct IVault.SingleSwap"},"typeName":{"id":2877,"name":"SingleSwap","nodeType":"UserDefinedTypeName","referencedDeclaration":2902,"src":"26637:10:45","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$2902_storage_ptr","typeString":"struct IVault.SingleSwap"}},"visibility":"internal"},{"constant":false,"id":2880,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":2889,"src":"26675:27:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$2957_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":2879,"name":"FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":2957,"src":"26675:14:45","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$2957_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":2882,"mutability":"mutable","name":"limit","nodeType":"VariableDeclaration","scope":2889,"src":"26712:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2881,"name":"uint256","nodeType":"ElementaryTypeName","src":"26712:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2884,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2889,"src":"26735:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2883,"name":"uint256","nodeType":"ElementaryTypeName","src":"26735:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26627:130:45"},"returnParameters":{"id":2888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2887,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2889,"src":"26784:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2886,"name":"uint256","nodeType":"ElementaryTypeName","src":"26784:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26783:9:45"},"scope":3051,"src":"26614:179:45","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.SingleSwap","id":2902,"members":[{"constant":false,"id":2891,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2902,"src":"27377:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2890,"name":"bytes32","nodeType":"ElementaryTypeName","src":"27377:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2893,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":2902,"src":"27401:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$2875","typeString":"enum IVault.SwapKind"},"typeName":{"id":2892,"name":"SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":2875,"src":"27401:8:45","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$2875","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":2895,"mutability":"mutable","name":"assetIn","nodeType":"VariableDeclaration","scope":2902,"src":"27424:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"},"typeName":{"id":2894,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2487,"src":"27424:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"}},"visibility":"internal"},{"constant":false,"id":2897,"mutability":"mutable","name":"assetOut","nodeType":"VariableDeclaration","scope":2902,"src":"27448:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"},"typeName":{"id":2896,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2487,"src":"27448:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"}},"visibility":"internal"},{"constant":false,"id":2899,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2902,"src":"27473:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2898,"name":"uint256","nodeType":"ElementaryTypeName","src":"27473:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2901,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2902,"src":"27497:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2900,"name":"bytes","nodeType":"ElementaryTypeName","src":"27497:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SingleSwap","nodeType":"StructDefinition","scope":3051,"src":"27349:169:45","visibility":"public"},{"documentation":{"id":2903,"nodeType":"StructuredDocumentation","src":"27524:1980:45","text":" @dev Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either\n the amount of tokens sent to or received from the Pool, depending on the `kind` value.\n Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the\n Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at\n the same index in the `assets` array.\n Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a\n Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or\n `amountOut` depending on the swap kind.\n Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out\n of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal\n the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`.\n The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses,\n or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and\n out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to\n or unwrapped from WETH by the Vault.\n Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies\n the minimum or maximum amount of each token the vault is allowed to transfer.\n `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the\n equivalent `swap` call.\n Emits `Swap` events."},"functionSelector":"945bcec9","id":2924,"implemented":false,"kind":"function","modifiers":[],"name":"batchSwap","nodeType":"FunctionDefinition","parameters":{"id":2919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2905,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":2924,"src":"29537:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$2875","typeString":"enum IVault.SwapKind"},"typeName":{"id":2904,"name":"SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":2875,"src":"29537:8:45","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$2875","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":2908,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":2924,"src":"29560:28:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$2935_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":2906,"name":"BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":2935,"src":"29560:13:45","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$2935_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":2907,"nodeType":"ArrayTypeName","src":"29560:15:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$2935_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":2911,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":2924,"src":"29598:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":2909,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2487,"src":"29598:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"}},"id":2910,"nodeType":"ArrayTypeName","src":"29598:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":2913,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":2924,"src":"29630:27:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$2957_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":2912,"name":"FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":2957,"src":"29630:14:45","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$2957_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":2916,"mutability":"mutable","name":"limits","nodeType":"VariableDeclaration","scope":2924,"src":"29667:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":2914,"name":"int256","nodeType":"ElementaryTypeName","src":"29667:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2915,"nodeType":"ArrayTypeName","src":"29667:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"},{"constant":false,"id":2918,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2924,"src":"29699:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2917,"name":"uint256","nodeType":"ElementaryTypeName","src":"29699:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29527:194:45"},"returnParameters":{"id":2923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2922,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2924,"src":"29748:15:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":2920,"name":"int256","nodeType":"ElementaryTypeName","src":"29748:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2921,"nodeType":"ArrayTypeName","src":"29748:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"29747:17:45"},"scope":3051,"src":"29509:256:45","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.BatchSwapStep","id":2935,"members":[{"constant":false,"id":2926,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2935,"src":"30358:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2925,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30358:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2928,"mutability":"mutable","name":"assetInIndex","nodeType":"VariableDeclaration","scope":2935,"src":"30382:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2927,"name":"uint256","nodeType":"ElementaryTypeName","src":"30382:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2930,"mutability":"mutable","name":"assetOutIndex","nodeType":"VariableDeclaration","scope":2935,"src":"30412:21:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2929,"name":"uint256","nodeType":"ElementaryTypeName","src":"30412:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2932,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2935,"src":"30443:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2931,"name":"uint256","nodeType":"ElementaryTypeName","src":"30443:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2934,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2935,"src":"30467:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2933,"name":"bytes","nodeType":"ElementaryTypeName","src":"30467:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BatchSwapStep","nodeType":"StructDefinition","scope":3051,"src":"30327:161:45","visibility":"public"},{"anonymous":false,"documentation":{"id":2936,"nodeType":"StructuredDocumentation","src":"30494:92:45","text":" @dev Emitted for each individual swap performed by `swap` or `batchSwap`."},"id":2948,"name":"Swap","nodeType":"EventDefinition","parameters":{"id":2947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2938,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2948,"src":"30611:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2937,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30611:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2940,"indexed":true,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":2948,"src":"30643:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":2939,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"30643:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2942,"indexed":true,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":2948,"src":"30675:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":2941,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"30675:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2944,"indexed":false,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":2948,"src":"30708:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2943,"name":"uint256","nodeType":"ElementaryTypeName","src":"30708:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2946,"indexed":false,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":2948,"src":"30734:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2945,"name":"uint256","nodeType":"ElementaryTypeName","src":"30734:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30601:156:45"},"src":"30591:167:45"},{"canonicalName":"IVault.FundManagement","id":2957,"members":[{"constant":false,"id":2950,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2957,"src":"31721:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2949,"name":"address","nodeType":"ElementaryTypeName","src":"31721:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2952,"mutability":"mutable","name":"fromInternalBalance","nodeType":"VariableDeclaration","scope":2957,"src":"31745:24:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2951,"name":"bool","nodeType":"ElementaryTypeName","src":"31745:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2954,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2957,"src":"31779:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":2953,"name":"address","nodeType":"ElementaryTypeName","src":"31779:15:45","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":2956,"mutability":"mutable","name":"toInternalBalance","nodeType":"VariableDeclaration","scope":2957,"src":"31814:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2955,"name":"bool","nodeType":"ElementaryTypeName","src":"31814:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"FundManagement","nodeType":"StructDefinition","scope":3051,"src":"31689:154:45","visibility":"public"},{"documentation":{"id":2958,"nodeType":"StructuredDocumentation","src":"31849:1027:45","text":" @dev Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be\n simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result.\n Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH)\n the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it\n receives are the same that an equivalent `batchSwap` call would receive.\n Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct.\n This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens,\n approve them for the Vault, or even know a user's address.\n Note that this function is not 'view' (due to implementation details): the client code must explicitly execute\n eth_call instead of eth_sendTransaction."},"functionSelector":"f84d066e","id":2974,"implemented":false,"kind":"function","modifiers":[],"name":"queryBatchSwap","nodeType":"FunctionDefinition","parameters":{"id":2969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2960,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":2974,"src":"32914:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$2875","typeString":"enum IVault.SwapKind"},"typeName":{"id":2959,"name":"SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":2875,"src":"32914:8:45","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$2875","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":2963,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":2974,"src":"32937:28:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$2935_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":2961,"name":"BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":2935,"src":"32937:13:45","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$2935_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":2962,"nodeType":"ArrayTypeName","src":"32937:15:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$2935_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":2966,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":2974,"src":"32975:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":2964,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2487,"src":"32975:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"}},"id":2965,"nodeType":"ArrayTypeName","src":"32975:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":2968,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":2974,"src":"33007:27:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$2957_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":2967,"name":"FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":2957,"src":"33007:14:45","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$2957_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"32904:136:45"},"returnParameters":{"id":2973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2972,"mutability":"mutable","name":"assetDeltas","nodeType":"VariableDeclaration","scope":2974,"src":"33059:27:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":2970,"name":"int256","nodeType":"ElementaryTypeName","src":"33059:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2971,"nodeType":"ArrayTypeName","src":"33059:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"33058:29:45"},"scope":3051,"src":"32881:207:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2975,"nodeType":"StructuredDocumentation","src":"33114:604:45","text":" @dev Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it,\n and then reverting unless the tokens plus a proportional protocol fee have been returned.\n The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount\n for each token contract. `tokens` must be sorted in ascending order.\n The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the\n `receiveFlashLoan` call.\n Emits `FlashLoan` events."},"functionSelector":"5c38449e","id":2988,"implemented":false,"kind":"function","modifiers":[],"name":"flashLoan","nodeType":"FunctionDefinition","parameters":{"id":2986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2977,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2988,"src":"33751:29:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$2521","typeString":"contract IFlashLoanRecipient"},"typeName":{"id":2976,"name":"IFlashLoanRecipient","nodeType":"UserDefinedTypeName","referencedDeclaration":2521,"src":"33751:19:45","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$2521","typeString":"contract IFlashLoanRecipient"}},"visibility":"internal"},{"constant":false,"id":2980,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2988,"src":"33790:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2978,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"33790:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2979,"nodeType":"ArrayTypeName","src":"33790:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2983,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":2988,"src":"33822:24:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2981,"name":"uint256","nodeType":"ElementaryTypeName","src":"33822:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2982,"nodeType":"ArrayTypeName","src":"33822:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2985,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2988,"src":"33856:21:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2984,"name":"bytes","nodeType":"ElementaryTypeName","src":"33856:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"33741:142:45"},"returnParameters":{"id":2987,"nodeType":"ParameterList","parameters":[],"src":"33892:0:45"},"scope":3051,"src":"33723:170:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2989,"nodeType":"StructuredDocumentation","src":"33899:88:45","text":" @dev Emitted for each individual flash loan performed by `flashLoan`."},"id":2999,"name":"FlashLoan","nodeType":"EventDefinition","parameters":{"id":2998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2991,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2999,"src":"34008:37:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$2521","typeString":"contract IFlashLoanRecipient"},"typeName":{"id":2990,"name":"IFlashLoanRecipient","nodeType":"UserDefinedTypeName","referencedDeclaration":2521,"src":"34008:19:45","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$2521","typeString":"contract IFlashLoanRecipient"}},"visibility":"internal"},{"constant":false,"id":2993,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2999,"src":"34047:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":2992,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"34047:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2995,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2999,"src":"34069:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2994,"name":"uint256","nodeType":"ElementaryTypeName","src":"34069:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2997,"indexed":false,"mutability":"mutable","name":"feeAmount","nodeType":"VariableDeclaration","scope":2999,"src":"34085:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2996,"name":"uint256","nodeType":"ElementaryTypeName","src":"34085:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34007:96:45"},"src":"33992:112:45"},{"documentation":{"id":3000,"nodeType":"StructuredDocumentation","src":"35100:434:45","text":" @dev Performs a set of Pool balance operations, which may be either withdrawals, deposits or updates.\n Pool Balance management features batching, which means a single contract call can be used to perform multiple\n operations of different kinds, with different Pools and tokens, at once.\n For each operation, the caller must be registered as the Asset Manager for `token` in `poolId`."},"functionSelector":"e6c46092","id":3006,"implemented":false,"kind":"function","modifiers":[],"name":"managePoolBalance","nodeType":"FunctionDefinition","parameters":{"id":3004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3003,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":3006,"src":"35566:26:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PoolBalanceOp_$3015_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.PoolBalanceOp[]"},"typeName":{"baseType":{"id":3001,"name":"PoolBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3015,"src":"35566:13:45","typeDescriptions":{"typeIdentifier":"t_struct$_PoolBalanceOp_$3015_storage_ptr","typeString":"struct IVault.PoolBalanceOp"}},"id":3002,"nodeType":"ArrayTypeName","src":"35566:15:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PoolBalanceOp_$3015_storage_$dyn_storage_ptr","typeString":"struct IVault.PoolBalanceOp[]"}},"visibility":"internal"}],"src":"35565:28:45"},"returnParameters":{"id":3005,"nodeType":"ParameterList","parameters":[],"src":"35602:0:45"},"scope":3051,"src":"35539:64:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.PoolBalanceOp","id":3015,"members":[{"constant":false,"id":3008,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3015,"src":"35640:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolBalanceOpKind_$3019","typeString":"enum IVault.PoolBalanceOpKind"},"typeName":{"id":3007,"name":"PoolBalanceOpKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3019,"src":"35640:17:45","typeDescriptions":{"typeIdentifier":"t_enum$_PoolBalanceOpKind_$3019","typeString":"enum IVault.PoolBalanceOpKind"}},"visibility":"internal"},{"constant":false,"id":3010,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3015,"src":"35672:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3009,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35672:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3012,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3015,"src":"35696:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":3011,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"35696:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3014,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3015,"src":"35718:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3013,"name":"uint256","nodeType":"ElementaryTypeName","src":"35718:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"PoolBalanceOp","nodeType":"StructDefinition","scope":3051,"src":"35609:130:45","visibility":"public"},{"canonicalName":"IVault.PoolBalanceOpKind","id":3019,"members":[{"id":3016,"name":"WITHDRAW","nodeType":"EnumValue","src":"36261:8:45"},{"id":3017,"name":"DEPOSIT","nodeType":"EnumValue","src":"36271:7:45"},{"id":3018,"name":"UPDATE","nodeType":"EnumValue","src":"36280:6:45"}],"name":"PoolBalanceOpKind","nodeType":"EnumDefinition","src":"36236:52:45"},{"anonymous":false,"documentation":{"id":3020,"nodeType":"StructuredDocumentation","src":"36294:109:45","text":" @dev Emitted when a Pool's token Asset Manager alters its balance via `managePoolBalance`."},"id":3032,"name":"PoolBalanceManaged","nodeType":"EventDefinition","parameters":{"id":3031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3022,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3032,"src":"36442:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3021,"name":"bytes32","nodeType":"ElementaryTypeName","src":"36442:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3024,"indexed":true,"mutability":"mutable","name":"assetManager","nodeType":"VariableDeclaration","scope":3032,"src":"36474:28:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3023,"name":"address","nodeType":"ElementaryTypeName","src":"36474:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3026,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3032,"src":"36512:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":3025,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"36512:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3028,"indexed":false,"mutability":"mutable","name":"cashDelta","nodeType":"VariableDeclaration","scope":3032,"src":"36542:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3027,"name":"int256","nodeType":"ElementaryTypeName","src":"36542:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3030,"indexed":false,"mutability":"mutable","name":"managedDelta","nodeType":"VariableDeclaration","scope":3032,"src":"36568:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3029,"name":"int256","nodeType":"ElementaryTypeName","src":"36568:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"36432:161:45"},"src":"36408:186:45"},{"documentation":{"id":3033,"nodeType":"StructuredDocumentation","src":"37471:64:45","text":" @dev Returns the current protocol fee module."},"functionSelector":"d2946c2b","id":3038,"implemented":false,"kind":"function","modifiers":[],"name":"getProtocolFeesCollector","nodeType":"FunctionDefinition","parameters":{"id":3034,"nodeType":"ParameterList","parameters":[],"src":"37573:2:45"},"returnParameters":{"id":3037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3036,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3038,"src":"37599:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2586","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":3035,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":2586,"src":"37599:22:45","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2586","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"src":"37598:24:45"},"scope":3051,"src":"37540:83:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3039,"nodeType":"StructuredDocumentation","src":"37629:635:45","text":" @dev Safety mechanism to pause most Vault operations in the event of an emergency - typically detection of an\n error in some part of the system.\n The Vault can only be paused during an initial time period, after which pausing is forever disabled.\n While the contract is paused, the following features are disabled:\n - depositing and transferring internal balance\n - transferring external balance (using the Vault's allowance)\n - swaps\n - joining Pools\n - Asset Manager interactions\n Internal Balance can still be withdrawn, and Pools exited."},"functionSelector":"16c38b3c","id":3044,"implemented":false,"kind":"function","modifiers":[],"name":"setPaused","nodeType":"FunctionDefinition","parameters":{"id":3042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3041,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":3044,"src":"38288:11:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3040,"name":"bool","nodeType":"ElementaryTypeName","src":"38288:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38287:13:45"},"returnParameters":{"id":3043,"nodeType":"ParameterList","parameters":[],"src":"38309:0:45"},"scope":3051,"src":"38269:41:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3045,"nodeType":"StructuredDocumentation","src":"38316:58:45","text":" @dev Returns the Vault's WETH instance."},"functionSelector":"ad5c4648","id":3050,"implemented":false,"kind":"function","modifiers":[],"name":"WETH","nodeType":"FunctionDefinition","parameters":{"id":3046,"nodeType":"ParameterList","parameters":[],"src":"38392:2:45"},"returnParameters":{"id":3049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3048,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3050,"src":"38418:5:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2355","typeString":"contract IWETH"},"typeName":{"id":3047,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2355,"src":"38418:5:45","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2355","typeString":"contract IWETH"}},"visibility":"internal"}],"src":"38417:7:45"},"scope":3051,"src":"38379:46:45","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3052,"src":"1329:37155:45"}],"src":"688:37797:45"},"id":45},"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","exportedSymbols":{"Authentication":[3128]},"id":3129,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3053,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:46"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3054,"nodeType":"ImportDirective","scope":3129,"sourceUnit":2249,"src":"713:90:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","id":3055,"nodeType":"ImportDirective","scope":3129,"sourceUnit":2260,"src":"804:91:46","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3057,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":2259,"src":"1327:15:46","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$2259","typeString":"contract IAuthentication"}},"id":3058,"nodeType":"InheritanceSpecifier","src":"1327:15:46"}],"contractDependencies":[2259],"contractKind":"contract","documentation":{"id":3056,"nodeType":"StructuredDocumentation","src":"897:393:46","text":" @dev Building block for performing access control on external functions.\n This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied\n to external functions to only make them callable by authorized accounts.\n Derived contracts must implement the `_canPerform` function, which holds the actual access control logic."},"fullyImplemented":false,"id":3128,"linearizedBaseContracts":[3128,2259],"name":"Authentication","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3060,"mutability":"immutable","name":"_actionIdDisambiguator","nodeType":"VariableDeclaration","scope":3128,"src":"1349:48:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3059,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1349:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":3070,"nodeType":"Block","src":"2039:63:46","statements":[{"expression":{"id":3068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3066,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3060,"src":"2049:22:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3067,"name":"actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"2074:21:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2049:46:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3069,"nodeType":"ExpressionStatement","src":"2049:46:46"}]},"documentation":{"id":3061,"nodeType":"StructuredDocumentation","src":"1404:587:46","text":" @dev The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in\n multi contract systems.\n There are two main uses for it:\n - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers\n unique. The contract's own address is a good option.\n - if the contract belongs to a family that shares action identifiers for the same functions, an identifier\n shared by the entire family (and no other contract) should be used instead."},"id":3071,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3063,"mutability":"mutable","name":"actionIdDisambiguator","nodeType":"VariableDeclaration","scope":3071,"src":"2008:29:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3062,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2008:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2007:31:46"},"returnParameters":{"id":3065,"nodeType":"ParameterList","parameters":[],"src":"2039:0:46"},"scope":3128,"src":"1996:106:46","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3078,"nodeType":"Block","src":"2266:49:46","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3074,"name":"_authenticateCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3101,"src":"2276:19:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2276:21:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3076,"nodeType":"ExpressionStatement","src":"2276:21:46"},{"id":3077,"nodeType":"PlaceholderStatement","src":"2307:1:46"}]},"documentation":{"id":3072,"nodeType":"StructuredDocumentation","src":"2108:129:46","text":" @dev Reverts unless the caller is allowed to call this function. Should only be applied to external functions."},"id":3079,"name":"authenticate","nodeType":"ModifierDefinition","parameters":{"id":3073,"nodeType":"ParameterList","parameters":[],"src":"2263:2:46"},"src":"2242:73:46","virtual":false,"visibility":"internal"},{"body":{"id":3100,"nodeType":"Block","src":"2465:136:46","statements":[{"assignments":[3084],"declarations":[{"constant":false,"id":3084,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":3100,"src":"2475:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3083,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2475:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3089,"initialValue":{"arguments":[{"expression":{"id":3086,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2506:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sig","nodeType":"MemberAccess","src":"2506:7:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":3085,"name":"getActionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3118,"src":"2494:11:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (bytes4) view returns (bytes32)"}},"id":3088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2494:20:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2475:39:46"},{"expression":{"arguments":[{"arguments":[{"id":3092,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3084,"src":"2545:8:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3093,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2555:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2555:10:46","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":3091,"name":"_canPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3127,"src":"2533:11:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":3095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2533:33:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3096,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2568:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SENDER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":2010,"src":"2568:25:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3090,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2524:8:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2524:70:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3099,"nodeType":"ExpressionStatement","src":"2524:70:46"}]},"documentation":{"id":3080,"nodeType":"StructuredDocumentation","src":"2321:94:46","text":" @dev Reverts unless the caller is allowed to call the entry point function."},"id":3101,"implemented":true,"kind":"function","modifiers":[],"name":"_authenticateCaller","nodeType":"FunctionDefinition","parameters":{"id":3081,"nodeType":"ParameterList","parameters":[],"src":"2448:2:46"},"returnParameters":{"id":3082,"nodeType":"ParameterList","parameters":[],"src":"2465:0:46"},"scope":3128,"src":"2420:181:46","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[2258],"body":{"id":3117,"nodeType":"Block","src":"2684:353:46","statements":[{"expression":{"arguments":[{"arguments":[{"id":3112,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3060,"src":"2996:22:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3113,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3103,"src":"3020:8:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":3110,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2979:3:46","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3111,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2979:16:46","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2979:50:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3109,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2969:9:46","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2969:61:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3108,"id":3116,"nodeType":"Return","src":"2962:68:46"}]},"functionSelector":"851c1bb3","id":3118,"implemented":true,"kind":"function","modifiers":[],"name":"getActionId","nodeType":"FunctionDefinition","overrides":{"id":3105,"nodeType":"OverrideSpecifier","overrides":[],"src":"2657:8:46"},"parameters":{"id":3104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3103,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":3118,"src":"2628:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3102,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2628:6:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2627:17:46"},"returnParameters":{"id":3108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3107,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3118,"src":"2675:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3106,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2675:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2674:9:46"},"scope":3128,"src":"2607:430:46","stateMutability":"view","virtual":false,"visibility":"public"},{"id":3127,"implemented":false,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","parameters":{"id":3123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3120,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":3127,"src":"3064:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3119,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3064:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3122,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3127,"src":"3082:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3121,"name":"address","nodeType":"ElementaryTypeName","src":"3082:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3063:32:46"},"returnParameters":{"id":3126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3125,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3127,"src":"3127:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3124,"name":"bool","nodeType":"ElementaryTypeName","src":"3127:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3126:6:46"},"scope":3128,"src":"3043:90:46","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":3129,"src":"1291:1844:46"}],"src":"688:2448:46"},"id":46},"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","exportedSymbols":{"EOASignaturesValidator":[3308]},"id":3309,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3130,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:47"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3131,"nodeType":"ImportDirective","scope":3309,"sourceUnit":2249,"src":"713:90:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","id":3132,"nodeType":"ImportDirective","scope":3309,"sourceUnit":2312,"src":"804:96:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","file":"../openzeppelin/EIP712.sol","id":3133,"nodeType":"ImportDirective","scope":3309,"sourceUnit":6022,"src":"902:36:47","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3135,"name":"ISignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":2311,"src":"1045:20:47","typeDescriptions":{"typeIdentifier":"t_contract$_ISignaturesValidator_$2311","typeString":"contract ISignaturesValidator"}},"id":3136,"nodeType":"InheritanceSpecifier","src":"1045:20:47"},{"baseName":{"id":3137,"name":"EIP712","nodeType":"UserDefinedTypeName","referencedDeclaration":6021,"src":"1067:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$6021","typeString":"contract EIP712"}},"id":3138,"nodeType":"InheritanceSpecifier","src":"1067:6:47"}],"contractDependencies":[2311,6021],"contractKind":"contract","documentation":{"id":3134,"nodeType":"StructuredDocumentation","src":"940:60:47","text":" @dev Utility for signing Solidity function calls."},"fullyImplemented":false,"id":3308,"linearizedBaseContracts":[3308,6021,2311],"name":"EOASignaturesValidator","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3142,"mutability":"mutable","name":"_nextNonce","nodeType":"VariableDeclaration","scope":3308,"src":"1130:47:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":3141,"keyType":{"id":3139,"name":"address","nodeType":"ElementaryTypeName","src":"1138:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1130:27:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":3140,"name":"uint256","nodeType":"ElementaryTypeName","src":"1149:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"baseFunctions":[2302],"body":{"id":3151,"nodeType":"Block","src":"1253:44:47","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3148,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5994,"src":"1270:18:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":3149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1270:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3147,"id":3150,"nodeType":"Return","src":"1263:27:47"}]},"functionSelector":"ed24911d","id":3152,"implemented":true,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","overrides":{"id":3144,"nodeType":"OverrideSpecifier","overrides":[],"src":"1226:8:47"},"parameters":{"id":3143,"nodeType":"ParameterList","parameters":[],"src":"1211:2:47"},"returnParameters":{"id":3147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3146,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3152,"src":"1244:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3145,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1244:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1243:9:47"},"scope":3308,"src":"1184:113:47","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2310],"body":{"id":3164,"nodeType":"Block","src":"1381:43:47","statements":[{"expression":{"baseExpression":{"id":3160,"name":"_nextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3142,"src":"1398:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3162,"indexExpression":{"id":3161,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3154,"src":"1409:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1398:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3159,"id":3163,"nodeType":"Return","src":"1391:26:47"}]},"functionSelector":"90193b7c","id":3165,"implemented":true,"kind":"function","modifiers":[],"name":"getNextNonce","nodeType":"FunctionDefinition","overrides":{"id":3156,"nodeType":"OverrideSpecifier","overrides":[],"src":"1354:8:47"},"parameters":{"id":3155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3154,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3165,"src":"1325:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3153,"name":"address","nodeType":"ElementaryTypeName","src":"1325:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1324:17:47"},"returnParameters":{"id":3159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3158,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3165,"src":"1372:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3157,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1371:9:47"},"scope":3308,"src":"1303:121:47","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":3188,"nodeType":"Block","src":"1588:107:47","statements":[{"expression":{"arguments":[{"id":3177,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3167,"src":"1627:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3178,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3169,"src":"1636:10:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3179,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3171,"src":"1648:9:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"arguments":[{"id":3182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1664:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3181,"name":"uint256","nodeType":"ElementaryTypeName","src":"1664:7:47","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3180,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1659:4:47","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1659:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1659:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3185,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3173,"src":"1678:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3176,"name":"_ensureValidSignature","nodeType":"Identifier","overloadedDeclarations":[3189,3233],"referencedDeclaration":3233,"src":"1605:21:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,bytes32,bytes memory,uint256,uint256)"}},"id":3186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1605:83:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":3175,"id":3187,"nodeType":"Return","src":"1598:90:47"}]},"id":3189,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureValidSignature","nodeType":"FunctionDefinition","parameters":{"id":3174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3167,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3189,"src":"1470:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3166,"name":"address","nodeType":"ElementaryTypeName","src":"1470:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3169,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":3189,"src":"1495:18:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3168,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1495:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3171,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3189,"src":"1523:22:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3170,"name":"bytes","nodeType":"ElementaryTypeName","src":"1523:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3173,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":3189,"src":"1555:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3172,"name":"uint256","nodeType":"ElementaryTypeName","src":"1555:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1460:118:47"},"returnParameters":{"id":3175,"nodeType":"ParameterList","parameters":[],"src":"1588:0:47"},"scope":3308,"src":"1430:265:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3232,"nodeType":"Block","src":"1885:1030:47","statements":[{"assignments":[3203],"declarations":[{"constant":false,"id":3203,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":3232,"src":"1895:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3202,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1895:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3207,"initialValue":{"arguments":[{"id":3205,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3193,"src":"1929:10:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3204,"name":"_hashTypedDataV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6013,"src":"1912:16:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":3206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1912:28:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1895:45:47"},{"expression":{"arguments":[{"arguments":[{"id":3210,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3191,"src":"1977:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3211,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3203,"src":"1986:6:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3212,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3195,"src":"1994:9:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3209,"name":"_isValidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"1959:17:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes32,bytes memory) view returns (bool)"}},"id":3213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1959:45:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3214,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3199,"src":"2006:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3208,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1950:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1950:66:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3216,"nodeType":"ExpressionStatement","src":"1950:66:47"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3218,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3197,"src":"2496:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":3219,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2508:5:47","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"2508:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2496:27:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3222,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2525:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"EXPIRED_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":2127,"src":"2525:24:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3217,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2487:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2487:63:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3225,"nodeType":"ExpressionStatement","src":"2487:63:47"},{"expression":{"id":3230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3226,"name":"_nextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3142,"src":"2884:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3228,"indexExpression":{"id":3227,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3191,"src":"2895:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2884:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2907:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2884:24:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3231,"nodeType":"ExpressionStatement","src":"2884:24:47"}]},"id":3233,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureValidSignature","nodeType":"FunctionDefinition","parameters":{"id":3200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3191,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3233,"src":"1741:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3190,"name":"address","nodeType":"ElementaryTypeName","src":"1741:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3193,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":3233,"src":"1766:18:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3192,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1766:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3195,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3233,"src":"1794:22:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3194,"name":"bytes","nodeType":"ElementaryTypeName","src":"1794:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3197,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3233,"src":"1826:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3196,"name":"uint256","nodeType":"ElementaryTypeName","src":"1826:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3199,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":3233,"src":"1852:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3198,"name":"uint256","nodeType":"ElementaryTypeName","src":"1852:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1731:144:47"},"returnParameters":{"id":3201,"nodeType":"ParameterList","parameters":[],"src":"1885:0:47"},"scope":3308,"src":"1701:1214:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3284,"nodeType":"Block","src":"3072:725:47","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3245,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3239,"src":"3091:9:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3091:16:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":3247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3111:2:47","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"3091:22:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3249,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"3115:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MALFORMED_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":2130,"src":"3115:26:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3244,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"3082:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3082:60:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3252,"nodeType":"ExpressionStatement","src":"3082:60:47"},{"assignments":[3254],"declarations":[{"constant":false,"id":3254,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":3284,"src":"3153:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3253,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3153:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3255,"nodeType":"VariableDeclarationStatement","src":"3153:9:47"},{"assignments":[3257],"declarations":[{"constant":false,"id":3257,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":3284,"src":"3172:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3256,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3172:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3258,"nodeType":"VariableDeclarationStatement","src":"3172:9:47"},{"assignments":[3260],"declarations":[{"constant":false,"id":3260,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":3284,"src":"3191:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3259,"name":"uint8","nodeType":"ElementaryTypeName","src":"3191:5:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3261,"nodeType":"VariableDeclarationStatement","src":"3191:7:47"},{"AST":{"nodeType":"YulBlock","src":"3387:155:47","statements":[{"nodeType":"YulAssignment","src":"3401:32:47","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3416:9:47"},{"kind":"number","nodeType":"YulLiteral","src":"3427:4:47","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3412:3:47"},"nodeType":"YulFunctionCall","src":"3412:20:47"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3406:5:47"},"nodeType":"YulFunctionCall","src":"3406:27:47"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"3401:1:47"}]},{"nodeType":"YulAssignment","src":"3446:32:47","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3461:9:47"},{"kind":"number","nodeType":"YulLiteral","src":"3472:4:47","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3457:3:47"},"nodeType":"YulFunctionCall","src":"3457:20:47"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3451:5:47"},"nodeType":"YulFunctionCall","src":"3451:27:47"},"variableNames":[{"name":"s","nodeType":"YulIdentifier","src":"3446:1:47"}]},{"nodeType":"YulAssignment","src":"3491:41:47","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3501:1:47","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3514:9:47"},{"kind":"number","nodeType":"YulLiteral","src":"3525:4:47","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3510:3:47"},"nodeType":"YulFunctionCall","src":"3510:20:47"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3504:5:47"},"nodeType":"YulFunctionCall","src":"3504:27:47"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"3496:4:47"},"nodeType":"YulFunctionCall","src":"3496:36:47"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"3491:1:47"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3254,"isOffset":false,"isSlot":false,"src":"3401:1:47","valueSize":1},{"declaration":3257,"isOffset":false,"isSlot":false,"src":"3446:1:47","valueSize":1},{"declaration":3239,"isOffset":false,"isSlot":false,"src":"3416:9:47","valueSize":1},{"declaration":3239,"isOffset":false,"isSlot":false,"src":"3461:9:47","valueSize":1},{"declaration":3239,"isOffset":false,"isSlot":false,"src":"3514:9:47","valueSize":1},{"declaration":3260,"isOffset":false,"isSlot":false,"src":"3491:1:47","valueSize":1}],"id":3262,"nodeType":"InlineAssembly","src":"3378:164:47"},{"assignments":[3264],"declarations":[{"constant":false,"id":3264,"mutability":"mutable","name":"recoveredAddress","nodeType":"VariableDeclaration","scope":3284,"src":"3552:24:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3263,"name":"address","nodeType":"ElementaryTypeName","src":"3552:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3271,"initialValue":{"arguments":[{"id":3266,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"3589:6:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3267,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"3597:1:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3268,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3254,"src":"3600:1:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3269,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3257,"src":"3603:1:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3265,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"3579:9:47","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":3270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3579:26:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3552:53:47"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3272,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"3728:16:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3756:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3748:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3273,"name":"address","nodeType":"ElementaryTypeName","src":"3748:7:47","typeDescriptions":{}}},"id":3276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3748:10:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3728:30:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3278,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"3762:16:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3279,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"3782:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3762:27:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3728:61:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3282,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3727:63:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3243,"id":3283,"nodeType":"Return","src":"3720:70:47"}]},"id":3285,"implemented":true,"kind":"function","modifiers":[],"name":"_isValidSignature","nodeType":"FunctionDefinition","parameters":{"id":3240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3235,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3285,"src":"2957:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3234,"name":"address","nodeType":"ElementaryTypeName","src":"2957:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3237,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":3285,"src":"2982:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2982:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3239,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3285,"src":"3006:22:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3238,"name":"bytes","nodeType":"ElementaryTypeName","src":"3006:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2947:87:47"},"returnParameters":{"id":3243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3242,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3285,"src":"3066:4:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3241,"name":"bool","nodeType":"ElementaryTypeName","src":"3066:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3065:6:47"},"scope":3308,"src":"2921:876:47","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3306,"nodeType":"Block","src":"3928:294:47","statements":[{"assignments":[3297],"declarations":[{"constant":false,"id":3297,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3306,"src":"3938:22:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3296,"name":"bytes","nodeType":"ElementaryTypeName","src":"3938:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3302,"initialValue":{"arguments":[{"hexValue":"3635","id":3300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3973:2:47","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"}],"id":3299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3963:9:47","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3298,"name":"bytes","nodeType":"ElementaryTypeName","src":"3967:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3963:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3938:38:47"},{"AST":{"nodeType":"YulBlock","src":"4051:138:47","statements":[{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4076:9:47"},{"kind":"number","nodeType":"YulLiteral","src":"4087:2:47","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4072:3:47"},"nodeType":"YulFunctionCall","src":"4072:18:47"},{"name":"r","nodeType":"YulIdentifier","src":"4092:1:47"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4065:6:47"},"nodeType":"YulFunctionCall","src":"4065:29:47"},"nodeType":"YulExpressionStatement","src":"4065:29:47"},{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4118:9:47"},{"kind":"number","nodeType":"YulLiteral","src":"4129:2:47","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4114:3:47"},"nodeType":"YulFunctionCall","src":"4114:18:47"},{"name":"s","nodeType":"YulIdentifier","src":"4134:1:47"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4107:6:47"},"nodeType":"YulFunctionCall","src":"4107:29:47"},"nodeType":"YulExpressionStatement","src":"4107:29:47"},{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4161:9:47"},{"kind":"number","nodeType":"YulLiteral","src":"4172:2:47","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4157:3:47"},"nodeType":"YulFunctionCall","src":"4157:18:47"},{"name":"v","nodeType":"YulIdentifier","src":"4177:1:47"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"4149:7:47"},"nodeType":"YulFunctionCall","src":"4149:30:47"},"nodeType":"YulExpressionStatement","src":"4149:30:47"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3289,"isOffset":false,"isSlot":false,"src":"4092:1:47","valueSize":1},{"declaration":3291,"isOffset":false,"isSlot":false,"src":"4134:1:47","valueSize":1},{"declaration":3297,"isOffset":false,"isSlot":false,"src":"4076:9:47","valueSize":1},{"declaration":3297,"isOffset":false,"isSlot":false,"src":"4118:9:47","valueSize":1},{"declaration":3297,"isOffset":false,"isSlot":false,"src":"4161:9:47","valueSize":1},{"declaration":3287,"isOffset":false,"isSlot":false,"src":"4177:1:47","valueSize":1}],"id":3303,"nodeType":"InlineAssembly","src":"4042:147:47"},{"expression":{"id":3304,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3297,"src":"4206:9:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3295,"id":3305,"nodeType":"Return","src":"4199:16:47"}]},"id":3307,"implemented":true,"kind":"function","modifiers":[],"name":"_toArraySignature","nodeType":"FunctionDefinition","parameters":{"id":3292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3287,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":3307,"src":"3839:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3286,"name":"uint8","nodeType":"ElementaryTypeName","src":"3839:5:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3289,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":3307,"src":"3856:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3288,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3856:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3291,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":3307,"src":"3875:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3290,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3875:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3829:61:47"},"returnParameters":{"id":3295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3294,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3307,"src":"3914:12:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3293,"name":"bytes","nodeType":"ElementaryTypeName","src":"3914:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3913:14:47"},"scope":3308,"src":"3803:419:47","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3309,"src":"1001:3223:47"}],"src":"688:3537:47"},"id":47},"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","exportedSymbols":{"InputHelpers":[3420]},"id":3421,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3310,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:48"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":3311,"nodeType":"ImportDirective","scope":3421,"sourceUnit":2448,"src":"713:87:48","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3312,"nodeType":"ImportDirective","scope":3421,"sourceUnit":2249,"src":"801:90:48","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":3420,"linearizedBaseContracts":[3420],"name":"InputHelpers","nodeType":"ContractDefinition","nodes":[{"body":{"id":3327,"nodeType":"Block","src":"988:63:48","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3320,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3314,"src":"1007:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3321,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3316,"src":"1012:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1007:6:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3323,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1015:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INPUT_LENGTH_MISMATCH","nodeType":"MemberAccess","referencedDeclaration":1785,"src":"1015:28:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3319,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"998:8:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"998:46:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3326,"nodeType":"ExpressionStatement","src":"998:46:48"}]},"id":3328,"implemented":true,"kind":"function","modifiers":[],"name":"ensureInputLengthMatch","nodeType":"FunctionDefinition","parameters":{"id":3317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3314,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3328,"src":"952:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3313,"name":"uint256","nodeType":"ElementaryTypeName","src":"952:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3316,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3328,"src":"963:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3315,"name":"uint256","nodeType":"ElementaryTypeName","src":"963:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"951:22:48"},"returnParameters":{"id":3318,"nodeType":"ParameterList","parameters":[],"src":"988:0:48"},"scope":3420,"src":"920:131:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3349,"nodeType":"Block","src":"1166:73:48","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3338,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3330,"src":"1185:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3332,"src":"1190:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1185:6:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3341,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3332,"src":"1195:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3342,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3334,"src":"1200:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1195:6:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1185:16:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3345,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1203:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INPUT_LENGTH_MISMATCH","nodeType":"MemberAccess","referencedDeclaration":1785,"src":"1203:28:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3337,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1176:8:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1176:56:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3348,"nodeType":"ExpressionStatement","src":"1176:56:48"}]},"id":3350,"implemented":true,"kind":"function","modifiers":[],"name":"ensureInputLengthMatch","nodeType":"FunctionDefinition","parameters":{"id":3335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3330,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3350,"src":"1098:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3329,"name":"uint256","nodeType":"ElementaryTypeName","src":"1098:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3332,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3350,"src":"1117:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3331,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3334,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":3350,"src":"1136:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3333,"name":"uint256","nodeType":"ElementaryTypeName","src":"1136:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1088:63:48"},"returnParameters":{"id":3336,"nodeType":"ParameterList","parameters":[],"src":"1166:0:48"},"scope":3420,"src":"1057:182:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3367,"nodeType":"Block","src":"1311:208:48","statements":[{"assignments":[3360],"declarations":[{"constant":false,"id":3360,"mutability":"mutable","name":"addressArray","nodeType":"VariableDeclaration","scope":3367,"src":"1321:29:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3358,"name":"address","nodeType":"ElementaryTypeName","src":"1321:7:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3359,"nodeType":"ArrayTypeName","src":"1321:9:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":3361,"nodeType":"VariableDeclarationStatement","src":"1321:29:48"},{"AST":{"nodeType":"YulBlock","src":"1425:45:48","statements":[{"nodeType":"YulAssignment","src":"1439:21:48","value":{"name":"array","nodeType":"YulIdentifier","src":"1455:5:48"},"variableNames":[{"name":"addressArray","nodeType":"YulIdentifier","src":"1439:12:48"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3360,"isOffset":false,"isSlot":false,"src":"1439:12:48","valueSize":1},{"declaration":3353,"isOffset":false,"isSlot":false,"src":"1455:5:48","valueSize":1}],"id":3362,"nodeType":"InlineAssembly","src":"1416:54:48"},{"expression":{"arguments":[{"id":3364,"name":"addressArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3360,"src":"1499:12:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":3363,"name":"ensureArrayIsSorted","nodeType":"Identifier","overloadedDeclarations":[3368,3419],"referencedDeclaration":3419,"src":"1479:19:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory) pure"}},"id":3365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1479:33:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3366,"nodeType":"ExpressionStatement","src":"1479:33:48"}]},"id":3368,"implemented":true,"kind":"function","modifiers":[],"name":"ensureArrayIsSorted","nodeType":"FunctionDefinition","parameters":{"id":3354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3353,"mutability":"mutable","name":"array","nodeType":"VariableDeclaration","scope":3368,"src":"1274:21:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3351,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1274:6:48","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":3352,"nodeType":"ArrayTypeName","src":"1274:8:48","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1273:23:48"},"returnParameters":{"id":3355,"nodeType":"ParameterList","parameters":[],"src":"1311:0:48"},"scope":3420,"src":"1245:274:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3418,"nodeType":"Block","src":"1592:307:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3374,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"1606:5:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1606:12:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":3376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1621:1:48","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1606:16:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3380,"nodeType":"IfStatement","src":"1602:53:48","trueBody":{"id":3379,"nodeType":"Block","src":"1624:31:48","statements":[{"functionReturnParameters":3373,"id":3378,"nodeType":"Return","src":"1638:7:48"}]}},{"assignments":[3382],"declarations":[{"constant":false,"id":3382,"mutability":"mutable","name":"previous","nodeType":"VariableDeclaration","scope":3418,"src":"1665:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3381,"name":"address","nodeType":"ElementaryTypeName","src":"1665:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3386,"initialValue":{"baseExpression":{"id":3383,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"1684:5:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3385,"indexExpression":{"hexValue":"30","id":3384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1690:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1684:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1665:27:48"},{"body":{"id":3416,"nodeType":"Block","src":"1745:148:48","statements":[{"assignments":[3399],"declarations":[{"constant":false,"id":3399,"mutability":"mutable","name":"current","nodeType":"VariableDeclaration","scope":3416,"src":"1759:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3398,"name":"address","nodeType":"ElementaryTypeName","src":"1759:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3403,"initialValue":{"baseExpression":{"id":3400,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"1777:5:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3402,"indexExpression":{"id":3401,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3388,"src":"1783:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1777:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1759:26:48"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3405,"name":"previous","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"1808:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3406,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"1819:7:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1808:18:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3408,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1828:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNSORTED_ARRAY","nodeType":"MemberAccess","referencedDeclaration":1779,"src":"1828:21:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3404,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1799:8:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1799:51:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3411,"nodeType":"ExpressionStatement","src":"1799:51:48"},{"expression":{"id":3414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3412,"name":"previous","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"1864:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3413,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"1875:7:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1864:18:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3415,"nodeType":"ExpressionStatement","src":"1864:18:48"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3391,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3388,"src":"1722:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3392,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"1726:5:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1726:12:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1722:16:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3417,"initializationExpression":{"assignments":[3388],"declarations":[{"constant":false,"id":3388,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":3417,"src":"1707:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3387,"name":"uint256","nodeType":"ElementaryTypeName","src":"1707:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3390,"initialValue":{"hexValue":"31","id":3389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1719:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"1707:13:48"},"loopExpression":{"expression":{"id":3396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1740:3:48","subExpression":{"id":3395,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3388,"src":"1742:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3397,"nodeType":"ExpressionStatement","src":"1740:3:48"},"nodeType":"ForStatement","src":"1702:191:48"}]},"id":3419,"implemented":true,"kind":"function","modifiers":[],"name":"ensureArrayIsSorted","nodeType":"FunctionDefinition","parameters":{"id":3372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3371,"mutability":"mutable","name":"array","nodeType":"VariableDeclaration","scope":3419,"src":"1554:22:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3369,"name":"address","nodeType":"ElementaryTypeName","src":"1554:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3370,"nodeType":"ArrayTypeName","src":"1554:9:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1553:24:48"},"returnParameters":{"id":3373,"nodeType":"ParameterList","parameters":[],"src":"1592:0:48"},"scope":3420,"src":"1525:374:48","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3421,"src":"893:1008:48"}],"src":"688:1214:48"},"id":48},"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol","exportedSymbols":{"OptionalOnlyCaller":[3553]},"id":3554,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3422,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:49"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol","id":3423,"nodeType":"ImportDirective","scope":3554,"sourceUnit":2294,"src":"713:95:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3424,"nodeType":"ImportDirective","scope":3554,"sourceUnit":2249,"src":"809:90:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol","file":"./SignaturesValidator.sol","id":3425,"nodeType":"ImportDirective","scope":3554,"sourceUnit":3604,"src":"901:35:49","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3426,"name":"IOptionalOnlyCaller","nodeType":"UserDefinedTypeName","referencedDeclaration":2293,"src":"978:19:49","typeDescriptions":{"typeIdentifier":"t_contract$_IOptionalOnlyCaller_$2293","typeString":"contract IOptionalOnlyCaller"}},"id":3427,"nodeType":"InheritanceSpecifier","src":"978:19:49"},{"baseName":{"id":3428,"name":"SignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":3603,"src":"999:19:49","typeDescriptions":{"typeIdentifier":"t_contract$_SignaturesValidator_$3603","typeString":"contract SignaturesValidator"}},"id":3429,"nodeType":"InheritanceSpecifier","src":"999:19:49"}],"contractDependencies":[2293,2311,3308,3603,6021],"contractKind":"contract","fullyImplemented":false,"id":3553,"linearizedBaseContracts":[3553,3603,3308,6021,2311,2293],"name":"OptionalOnlyCaller","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3433,"mutability":"mutable","name":"_isOnlyCallerEnabled","nodeType":"VariableDeclaration","scope":3553,"src":"1025:53:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":3432,"keyType":{"id":3430,"name":"address","nodeType":"ElementaryTypeName","src":"1033:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1025:24:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":3431,"name":"bool","nodeType":"ElementaryTypeName","src":"1044:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"constant":true,"id":3438,"mutability":"constant","name":"_SET_ONLY_CALLER_CHECK_TYPEHASH","nodeType":"VariableDeclaration","scope":3553,"src":"1085:145:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3434,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1085:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5365744f6e6c7943616c6c6572436865636b286164647265737320757365722c626f6f6c20656e61626c65642c75696e74323536206e6f6e636529","id":3436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1163:61:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_bd291ffccec065968fe20c5f8debdad73ab50837733f357eeae8814178015a90","typeString":"literal_string \"SetOnlyCallerCheck(address user,bool enabled,uint256 nonce)\""},"value":"SetOnlyCallerCheck(address user,bool enabled,uint256 nonce)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_bd291ffccec065968fe20c5f8debdad73ab50837733f357eeae8814178015a90","typeString":"literal_string \"SetOnlyCallerCheck(address user,bool enabled,uint256 nonce)\""}],"id":3435,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1144:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1144:86:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":3448,"nodeType":"Block","src":"1498:47:49","statements":[{"expression":{"arguments":[{"id":3444,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3441,"src":"1522:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3443,"name":"_verifyCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"1508:13:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":3445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1508:19:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3446,"nodeType":"ExpressionStatement","src":"1508:19:49"},{"id":3447,"nodeType":"PlaceholderStatement","src":"1537:1:49"}]},"documentation":{"id":3439,"nodeType":"StructuredDocumentation","src":"1237:214:49","text":" @dev Reverts if the verification mechanism is enabled and the given address is not the caller.\n @param user - Address to validate as the only allowed caller, if the verification is enabled."},"id":3449,"name":"optionalOnlyCaller","nodeType":"ModifierDefinition","parameters":{"id":3442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3441,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3449,"src":"1484:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3440,"name":"address","nodeType":"ElementaryTypeName","src":"1484:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1483:14:49"},"src":"1456:89:49","virtual":false,"visibility":"internal"},{"baseFunctions":[2275],"body":{"id":3461,"nodeType":"Block","src":"1611:57:49","statements":[{"expression":{"arguments":[{"expression":{"id":3456,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1641:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1641:10:49","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":3458,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3451,"src":"1653:7:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3455,"name":"_setOnlyCallerCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3519,"src":"1621:19:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":3459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1621:40:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3460,"nodeType":"ExpressionStatement","src":"1621:40:49"}]},"functionSelector":"e811f44b","id":3462,"implemented":true,"kind":"function","modifiers":[],"name":"setOnlyCallerCheck","nodeType":"FunctionDefinition","overrides":{"id":3453,"nodeType":"OverrideSpecifier","overrides":[],"src":"1602:8:49"},"parameters":{"id":3452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3451,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":3462,"src":"1579:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3450,"name":"bool","nodeType":"ElementaryTypeName","src":"1579:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1578:14:49"},"returnParameters":{"id":3454,"nodeType":"ParameterList","parameters":[],"src":"1611:0:49"},"scope":3553,"src":"1551:117:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2284],"body":{"id":3499,"nodeType":"Block","src":"1815:257:49","statements":[{"assignments":[3473],"declarations":[{"constant":false,"id":3473,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":3499,"src":"1825:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3472,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1825:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3485,"initialValue":{"arguments":[{"arguments":[{"id":3477,"name":"_SET_ONLY_CALLER_CHECK_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3438,"src":"1867:31:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3478,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"1900:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3479,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3466,"src":"1906:7:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":3481,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"1928:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3480,"name":"getNextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"1915:12:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1915:18:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3475,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1856:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1856:10:49","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1856:78:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3474,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1846:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1846:89:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1825:110:49"},{"expression":{"arguments":[{"id":3487,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"1967:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3488,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3473,"src":"1973:10:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3489,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3468,"src":"1985:9:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":3490,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1996:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":2154,"src":"1996:24:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3486,"name":"_ensureValidSignature","nodeType":"Identifier","overloadedDeclarations":[3189,3233],"referencedDeclaration":3189,"src":"1945:21:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes32,bytes memory,uint256)"}},"id":3492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1945:76:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3493,"nodeType":"ExpressionStatement","src":"1945:76:49"},{"expression":{"arguments":[{"id":3495,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"2051:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3496,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3466,"src":"2057:7:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3494,"name":"_setOnlyCallerCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3519,"src":"2031:19:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":3497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2031:34:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3498,"nodeType":"ExpressionStatement","src":"2031:34:49"}]},"functionSelector":"fcaa54ee","id":3500,"implemented":true,"kind":"function","modifiers":[],"name":"setOnlyCallerCheckWithSignature","nodeType":"FunctionDefinition","overrides":{"id":3470,"nodeType":"OverrideSpecifier","overrides":[],"src":"1806:8:49"},"parameters":{"id":3469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3464,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3500,"src":"1724:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3463,"name":"address","nodeType":"ElementaryTypeName","src":"1724:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3466,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":3500,"src":"1746:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3465,"name":"bool","nodeType":"ElementaryTypeName","src":"1746:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3468,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3500,"src":"1768:22:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3467,"name":"bytes","nodeType":"ElementaryTypeName","src":"1768:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1714:82:49"},"returnParameters":{"id":3471,"nodeType":"ParameterList","parameters":[],"src":"1815:0:49"},"scope":3553,"src":"1674:398:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3518,"nodeType":"Block","src":"2143:98:49","statements":[{"expression":{"id":3511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3507,"name":"_isOnlyCallerEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3433,"src":"2153:20:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3509,"indexExpression":{"id":3508,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3502,"src":"2174:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2153:26:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3510,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"2182:7:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2153:36:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3512,"nodeType":"ExpressionStatement","src":"2153:36:49"},{"eventCall":{"arguments":[{"id":3514,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3502,"src":"2220:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3515,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"2226:7:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3513,"name":"OnlyCallerOptIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2269,"src":"2204:15:49","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":3516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2204:30:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3517,"nodeType":"EmitStatement","src":"2199:35:49"}]},"id":3519,"implemented":true,"kind":"function","modifiers":[],"name":"_setOnlyCallerCheck","nodeType":"FunctionDefinition","parameters":{"id":3505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3502,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3519,"src":"2107:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3501,"name":"address","nodeType":"ElementaryTypeName","src":"2107:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3504,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":3519,"src":"2121:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3503,"name":"bool","nodeType":"ElementaryTypeName","src":"2121:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2106:28:49"},"returnParameters":{"id":3506,"nodeType":"ParameterList","parameters":[],"src":"2143:0:49"},"scope":3553,"src":"2078:163:49","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[2292],"body":{"id":3531,"nodeType":"Block","src":"2328:50:49","statements":[{"expression":{"baseExpression":{"id":3527,"name":"_isOnlyCallerEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3433,"src":"2345:20:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3529,"indexExpression":{"id":3528,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"2366:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2345:26:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3526,"id":3530,"nodeType":"Return","src":"2338:33:49"}]},"functionSelector":"a1648aa5","id":3532,"implemented":true,"kind":"function","modifiers":[],"name":"isOnlyCallerEnabled","nodeType":"FunctionDefinition","overrides":{"id":3523,"nodeType":"OverrideSpecifier","overrides":[],"src":"2304:8:49"},"parameters":{"id":3522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3521,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3532,"src":"2276:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3520,"name":"address","nodeType":"ElementaryTypeName","src":"2276:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2275:14:49"},"returnParameters":{"id":3526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3525,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3532,"src":"2322:4:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3524,"name":"bool","nodeType":"ElementaryTypeName","src":"2322:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2321:6:49"},"scope":3553,"src":"2247:131:49","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3551,"nodeType":"Block","src":"2434:128:49","statements":[{"condition":{"baseExpression":{"id":3537,"name":"_isOnlyCallerEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3433,"src":"2448:20:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3539,"indexExpression":{"id":3538,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"2469:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2448:26:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3550,"nodeType":"IfStatement","src":"2444:112:49","trueBody":{"id":3549,"nodeType":"Block","src":"2476:80:49","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3541,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2499:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2499:10:49","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3543,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"2513:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2499:18:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3545,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2519:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SENDER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":2010,"src":"2519:25:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3540,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2490:8:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2490:55:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3548,"nodeType":"ExpressionStatement","src":"2490:55:49"}]}}]},"id":3552,"implemented":true,"kind":"function","modifiers":[],"name":"_verifyCaller","nodeType":"FunctionDefinition","parameters":{"id":3535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3534,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3552,"src":"2407:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3533,"name":"address","nodeType":"ElementaryTypeName","src":"2407:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2406:14:49"},"returnParameters":{"id":3536,"nodeType":"ParameterList","parameters":[],"src":"2434:0:49"},"scope":3553,"src":"2384:178:49","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":3554,"src":"938:1626:49"}],"src":"688:1877:49"},"id":49},"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol","exportedSymbols":{"SignaturesValidator":[3603]},"id":3604,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3555,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:50"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol","id":3556,"nodeType":"ImportDirective","scope":3604,"sourceUnit":2370,"src":"713:89:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","file":"./EOASignaturesValidator.sol","id":3557,"nodeType":"ImportDirective","scope":3604,"sourceUnit":3309,"src":"804:38:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"../openzeppelin/Address.sol","id":3558,"nodeType":"ImportDirective","scope":3604,"sourceUnit":5851,"src":"843:37:50","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3560,"name":"EOASignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":3308,"src":"984:22:50","typeDescriptions":{"typeIdentifier":"t_contract$_EOASignaturesValidator_$3308","typeString":"contract EOASignaturesValidator"}},"id":3561,"nodeType":"InheritanceSpecifier","src":"984:22:50"}],"contractDependencies":[2311,3308,6021],"contractKind":"contract","documentation":{"id":3559,"nodeType":"StructuredDocumentation","src":"882:60:50","text":" @dev Utility for signing Solidity function calls."},"fullyImplemented":false,"id":3603,"linearizedBaseContracts":[3603,3308,6021,2311],"name":"SignaturesValidator","nodeType":"ContractDefinition","nodes":[{"id":3564,"libraryName":{"id":3562,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":5850,"src":"1019:7:50","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$5850","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1013:26:50","typeName":{"id":3563,"name":"address","nodeType":"ElementaryTypeName","src":"1031:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"baseFunctions":[3285],"body":{"id":3601,"nodeType":"Block","src":"1205:254:50","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3576,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"1219:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":5704,"src":"1219:18:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":3578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1219:20:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3599,"nodeType":"Block","src":"1370:83:50","statements":[{"expression":{"arguments":[{"id":3594,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"1415:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3595,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"1424:6:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3596,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3570,"src":"1432:9:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3592,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1391:5:50","typeDescriptions":{"typeIdentifier":"t_super$_SignaturesValidator_$3603","typeString":"contract super SignaturesValidator"}},"id":3593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_isValidSignature","nodeType":"MemberAccess","referencedDeclaration":3285,"src":"1391:23:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes32,bytes memory) view returns (bool)"}},"id":3597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1391:51:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3575,"id":3598,"nodeType":"Return","src":"1384:58:50"}]},"id":3600,"nodeType":"IfStatement","src":"1215:238:50","trueBody":{"id":3591,"nodeType":"Block","src":"1241:123:50","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3583,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"1297:6:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3584,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3570,"src":"1305:9:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":3580,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"1271:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3579,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2369,"src":"1262:8:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$2369_$","typeString":"type(contract IERC1271)"}},"id":3581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1262:17:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1271_$2369","typeString":"contract IERC1271"}},"id":3582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":2368,"src":"1262:34:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (bytes32,bytes memory) view external returns (bytes4)"}},"id":3585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1262:53:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":3586,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2369,"src":"1319:8:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$2369_$","typeString":"type(contract IERC1271)"}},"id":3587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":2368,"src":"1319:25:50","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function IERC1271.isValidSignature(bytes32,bytes memory) view returns (bytes4)"}},"id":3588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1319:34:50","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1262:91:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3575,"id":3590,"nodeType":"Return","src":"1255:98:50"}]}}]},"id":3602,"implemented":true,"kind":"function","modifiers":[],"name":"_isValidSignature","nodeType":"FunctionDefinition","overrides":{"id":3572,"nodeType":"OverrideSpecifier","overrides":[],"src":"1181:8:50"},"parameters":{"id":3571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3566,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3602,"src":"1081:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3565,"name":"address","nodeType":"ElementaryTypeName","src":"1081:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3568,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":3602,"src":"1106:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3567,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1106:7:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3570,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3602,"src":"1130:22:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3569,"name":"bytes","nodeType":"ElementaryTypeName","src":"1130:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1071:87:50"},"returnParameters":{"id":3575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3574,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3602,"src":"1199:4:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3573,"name":"bool","nodeType":"ElementaryTypeName","src":"1199:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1198:6:50"},"scope":3603,"src":"1045:414:50","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":3604,"src":"943:518:50"}],"src":"688:774:50"},"id":50},"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","exportedSymbols":{"SingletonAuthentication":[3697]},"id":3698,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3605,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:51"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":3606,"nodeType":"ImportDirective","scope":3698,"sourceUnit":3052,"src":"713:65:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","file":"./Authentication.sol","id":3607,"nodeType":"ImportDirective","scope":3698,"sourceUnit":3129,"src":"780:30:51","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3608,"name":"Authentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3128,"src":"857:14:51","typeDescriptions":{"typeIdentifier":"t_contract$_Authentication_$3128","typeString":"contract Authentication"}},"id":3609,"nodeType":"InheritanceSpecifier","src":"857:14:51"}],"contractDependencies":[2259,3128],"contractKind":"contract","fullyImplemented":true,"id":3697,"linearizedBaseContracts":[3697,3128,2259],"name":"SingletonAuthentication","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3611,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":3697,"src":"878:31:51","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":3610,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"878:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"private"},{"body":{"id":3632,"nodeType":"Block","src":"1063:31:51","statements":[{"expression":{"id":3630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3628,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3611,"src":"1073:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3629,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3613,"src":"1082:5:51","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"src":"1073:14:51","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"id":3631,"nodeType":"ExpressionStatement","src":"1073:14:51"}]},"id":3633,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":3622,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1054:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}],"id":3621,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1046:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3620,"name":"address","nodeType":"ElementaryTypeName","src":"1046:7:51","typeDescriptions":{}}},"id":3623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1046:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1038:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3618,"name":"uint256","nodeType":"ElementaryTypeName","src":"1038:7:51","typeDescriptions":{}}},"id":3624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1038:22:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1030:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3616,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1030:7:51","typeDescriptions":{}}},"id":3625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1030:31:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3626,"modifierName":{"id":3615,"name":"Authentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3128,"src":"1015:14:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Authentication_$3128_$","typeString":"type(contract Authentication)"}},"nodeType":"ModifierInvocation","src":"1015:47:51"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3613,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":3633,"src":"1001:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":3612,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1001:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1000:14:51"},"returnParameters":{"id":3627,"nodeType":"ParameterList","parameters":[],"src":"1063:0:51"},"scope":3697,"src":"989:105:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3641,"nodeType":"Block","src":"1207:30:51","statements":[{"expression":{"id":3639,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3611,"src":"1224:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"functionReturnParameters":3638,"id":3640,"nodeType":"Return","src":"1217:13:51"}]},"documentation":{"id":3634,"nodeType":"StructuredDocumentation","src":"1100:53:51","text":" @notice Returns the Balancer Vault"},"functionSelector":"8d928af8","id":3642,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":3635,"nodeType":"ParameterList","parameters":[],"src":"1175:2:51"},"returnParameters":{"id":3638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3637,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3642,"src":"1199:6:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":3636,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1199:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1198:8:51"},"scope":3697,"src":"1158:79:51","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":3653,"nodeType":"Block","src":"1356:50:51","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3648,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3642,"src":"1373:8:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view returns (contract IVault)"}},"id":3649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1373:10:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"id":3650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAuthorizer","nodeType":"MemberAccess","referencedDeclaration":2611,"src":"1373:24:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizer_$2502_$","typeString":"function () view external returns (contract IAuthorizer)"}},"id":3651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1373:26:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"functionReturnParameters":3647,"id":3652,"nodeType":"Return","src":"1366:33:51"}]},"documentation":{"id":3643,"nodeType":"StructuredDocumentation","src":"1243:49:51","text":" @notice Returns the Authorizer"},"functionSelector":"aaabadc5","id":3654,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":3644,"nodeType":"ParameterList","parameters":[],"src":"1319:2:51"},"returnParameters":{"id":3647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3646,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3654,"src":"1343:11:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":3645,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"1343:11:51","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1342:13:51"},"scope":3697,"src":"1297:109:51","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[3127],"body":{"id":3675,"nodeType":"Block","src":"1506:84:51","statements":[{"expression":{"arguments":[{"id":3667,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3656,"src":"1550:8:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3668,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3658,"src":"1560:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3671,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1577:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}],"id":3670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1569:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3669,"name":"address","nodeType":"ElementaryTypeName","src":"1569:7:51","typeDescriptions":{}}},"id":3672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1569:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3664,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"1523:13:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$2502_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":3665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1523:15:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"id":3666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":2501,"src":"1523:26:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":3673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1523:60:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3663,"id":3674,"nodeType":"Return","src":"1516:67:51"}]},"id":3676,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","overrides":{"id":3660,"nodeType":"OverrideSpecifier","overrides":[],"src":"1482:8:51"},"parameters":{"id":3659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3656,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":3676,"src":"1433:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3655,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1433:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3658,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3676,"src":"1451:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3657,"name":"address","nodeType":"ElementaryTypeName","src":"1451:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1432:35:51"},"returnParameters":{"id":3663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3662,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3676,"src":"1500:4:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3661,"name":"bool","nodeType":"ElementaryTypeName","src":"1500:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1499:6:51"},"scope":3697,"src":"1412:178:51","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3695,"nodeType":"Block","src":"1726:76:51","statements":[{"expression":{"arguments":[{"id":3690,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3678,"src":"1770:8:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3691,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3680,"src":"1780:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3692,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3682,"src":"1789:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3687,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"1743:13:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$2502_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":3688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1743:15:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"id":3689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":2501,"src":"1743:26:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":3693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1743:52:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3686,"id":3694,"nodeType":"Return","src":"1736:59:51"}]},"id":3696,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","parameters":{"id":3683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3678,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":3696,"src":"1626:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3677,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1626:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3680,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3696,"src":"1652:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3679,"name":"address","nodeType":"ElementaryTypeName","src":"1652:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3682,"mutability":"mutable","name":"where","nodeType":"VariableDeclaration","scope":3696,"src":"1677:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3681,"name":"address","nodeType":"ElementaryTypeName","src":"1677:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1616:80:51"},"returnParameters":{"id":3686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3685,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3696,"src":"1720:4:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3684,"name":"bool","nodeType":"ElementaryTypeName","src":"1720:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1719:6:51"},"scope":3697,"src":"1596:206:51","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":3698,"src":"812:992:51"}],"src":"688:1117:51"},"id":51},"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol","exportedSymbols":{"Version":[3736]},"id":3737,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3699,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:52"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol","id":3700,"nodeType":"ImportDirective","scope":3737,"sourceUnit":2341,"src":"713:84:52","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3702,"name":"IVersion","nodeType":"UserDefinedTypeName","referencedDeclaration":2340,"src":"904:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IVersion_$2340","typeString":"contract IVersion"}},"id":3703,"nodeType":"InheritanceSpecifier","src":"904:8:52"}],"contractDependencies":[2340],"contractKind":"contract","documentation":{"id":3701,"nodeType":"StructuredDocumentation","src":"799:84:52","text":" @notice Retrieves a contract's version set at creation time from storage."},"fullyImplemented":true,"id":3736,"linearizedBaseContracts":[3736,2340],"name":"Version","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3705,"mutability":"mutable","name":"_version","nodeType":"VariableDeclaration","scope":3736,"src":"919:23:52","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":3704,"name":"string","nodeType":"ElementaryTypeName","src":"919:6:52","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":3714,"nodeType":"Block","src":"984:37:52","statements":[{"expression":{"arguments":[{"id":3711,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3707,"src":"1006:7:52","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3710,"name":"_setVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3735,"src":"994:11:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":3712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"994:20:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3713,"nodeType":"ExpressionStatement","src":"994:20:52"}]},"id":3715,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3707,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":3715,"src":"961:21:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3706,"name":"string","nodeType":"ElementaryTypeName","src":"961:6:52","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"960:23:52"},"returnParameters":{"id":3709,"nodeType":"ParameterList","parameters":[],"src":"984:0:52"},"scope":3736,"src":"949:72:52","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2339],"body":{"id":3723,"nodeType":"Block","src":"1093:32:52","statements":[{"expression":{"id":3721,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3705,"src":"1110:8:52","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":3720,"id":3722,"nodeType":"Return","src":"1103:15:52"}]},"functionSelector":"54fd4d50","id":3724,"implemented":true,"kind":"function","modifiers":[],"name":"version","nodeType":"FunctionDefinition","overrides":{"id":3717,"nodeType":"OverrideSpecifier","overrides":[],"src":"1060:8:52"},"parameters":{"id":3716,"nodeType":"ParameterList","parameters":[],"src":"1043:2:52"},"returnParameters":{"id":3720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3719,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3724,"src":"1078:13:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3718,"name":"string","nodeType":"ElementaryTypeName","src":"1078:6:52","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1077:15:52"},"scope":3736,"src":"1027:98:52","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3734,"nodeType":"Block","src":"1280:38:52","statements":[{"expression":{"id":3732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3730,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3705,"src":"1290:8:52","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3731,"name":"newVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3727,"src":"1301:10:52","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1290:21:52","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3733,"nodeType":"ExpressionStatement","src":"1290:21:52"}]},"documentation":{"id":3725,"nodeType":"StructuredDocumentation","src":"1131:88:52","text":" @dev Internal setter that allows this contract to be used in proxies."},"id":3735,"implemented":true,"kind":"function","modifiers":[],"name":"_setVersion","nodeType":"FunctionDefinition","parameters":{"id":3728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3727,"mutability":"mutable","name":"newVersion","nodeType":"VariableDeclaration","scope":3735,"src":"1245:24:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3726,"name":"string","nodeType":"ElementaryTypeName","src":"1245:6:52","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1244:26:52"},"returnParameters":{"id":3729,"nodeType":"ParameterList","parameters":[],"src":"1280:0:52"},"scope":3736,"src":"1224:94:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":3737,"src":"884:436:52"}],"src":"688:633:52"},"id":52},"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","exportedSymbols":{"FixedPoint":[4114]},"id":4115,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3738,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:53"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3739,"nodeType":"ImportDirective","scope":4115,"sourceUnit":2249,"src":"713:90:53","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol","file":"./LogExpMath.sol","id":3740,"nodeType":"ImportDirective","scope":4115,"sourceUnit":5413,"src":"805:26:53","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":4114,"linearizedBaseContracts":[4114],"name":"FixedPoint","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":3743,"mutability":"constant","name":"ONE","nodeType":"VariableDeclaration","scope":4114,"src":"956:36:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3741,"name":"uint256","nodeType":"ElementaryTypeName","src":"956:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":3742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"988:4:53","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":3748,"mutability":"constant","name":"TWO","nodeType":"VariableDeclaration","scope":4114,"src":"1019:39:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3744,"name":"uint256","nodeType":"ElementaryTypeName","src":"1019:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1051:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3746,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"1055:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1051:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":3753,"mutability":"constant","name":"FOUR","nodeType":"VariableDeclaration","scope":4114,"src":"1064:40:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3749,"name":"uint256","nodeType":"ElementaryTypeName","src":"1064:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"34","id":3750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1097:1:53","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3751,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"1101:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1097:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":3756,"mutability":"constant","name":"MAX_POW_RELATIVE_ERROR","nodeType":"VariableDeclaration","scope":4114,"src":"1110:56:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3754,"name":"uint256","nodeType":"ElementaryTypeName","src":"1110:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130303030","id":3755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1161:5:53","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"visibility":"internal"},{"constant":true,"id":3759,"mutability":"constant","name":"MIN_POW_BASE_FREE_EXPONENT","nodeType":"VariableDeclaration","scope":4114,"src":"1275:61:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3757,"name":"uint256","nodeType":"ElementaryTypeName","src":"1275:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"302e37653138","id":3758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1330:6:53","typeDescriptions":{"typeIdentifier":"t_rational_700000000000000000_by_1","typeString":"int_const 700000000000000000"},"value":"0.7e18"},"visibility":"internal"},{"body":{"id":3784,"nodeType":"Block","src":"1410:172:53","statements":[{"assignments":[3769],"declarations":[{"constant":false,"id":3769,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":3784,"src":"1493:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3768,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3773,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3770,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"1505:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3771,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3763,"src":"1509:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1505:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1493:17:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3775,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3769,"src":"1529:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3776,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"1534:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1529:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3778,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1537:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1746,"src":"1537:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3774,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1520:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1520:37:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3781,"nodeType":"ExpressionStatement","src":"1520:37:53"},{"expression":{"id":3782,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3769,"src":"1574:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3767,"id":3783,"nodeType":"Return","src":"1567:8:53"}]},"id":3785,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":3764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3761,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3785,"src":"1356:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3760,"name":"uint256","nodeType":"ElementaryTypeName","src":"1356:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3763,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3785,"src":"1367:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3762,"name":"uint256","nodeType":"ElementaryTypeName","src":"1367:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1355:22:53"},"returnParameters":{"id":3767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3766,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3785,"src":"1401:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3765,"name":"uint256","nodeType":"ElementaryTypeName","src":"1401:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1400:9:53"},"scope":4114,"src":"1343:239:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3810,"nodeType":"Block","src":"1655:172:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3795,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3789,"src":"1747:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3787,"src":"1752:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1747:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3798,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1755:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1749,"src":"1755:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3794,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1738:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1738:37:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3801,"nodeType":"ExpressionStatement","src":"1738:37:53"},{"assignments":[3803],"declarations":[{"constant":false,"id":3803,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":3810,"src":"1785:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3802,"name":"uint256","nodeType":"ElementaryTypeName","src":"1785:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3807,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3804,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3787,"src":"1797:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3805,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3789,"src":"1801:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1797:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1785:17:53"},{"expression":{"id":3808,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3803,"src":"1819:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3793,"id":3809,"nodeType":"Return","src":"1812:8:53"}]},"id":3811,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":3790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3787,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3811,"src":"1601:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3786,"name":"uint256","nodeType":"ElementaryTypeName","src":"1601:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3789,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3811,"src":"1612:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3788,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1600:22:53"},"returnParameters":{"id":3793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3792,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3811,"src":"1646:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3791,"name":"uint256","nodeType":"ElementaryTypeName","src":"1646:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1645:9:53"},"scope":4114,"src":"1588:239:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3844,"nodeType":"Block","src":"1904:138:53","statements":[{"assignments":[3821],"declarations":[{"constant":false,"id":3821,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":3844,"src":"1914:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3820,"name":"uint256","nodeType":"ElementaryTypeName","src":"1914:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3825,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3822,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"1932:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3823,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3815,"src":"1936:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1932:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1914:23:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3827,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"1956:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1961:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1956:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3830,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3821,"src":"1966:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3831,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"1976:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1966:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3833,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3815,"src":"1981:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1966:16:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1956:26:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3836,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1984:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MUL_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1755,"src":"1984:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3826,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1947:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1947:57:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3839,"nodeType":"ExpressionStatement","src":"1947:57:53"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3840,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3821,"src":"2022:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3841,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"2032:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2022:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3819,"id":3843,"nodeType":"Return","src":"2015:20:53"}]},"id":3845,"implemented":true,"kind":"function","modifiers":[],"name":"mulDown","nodeType":"FunctionDefinition","parameters":{"id":3816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3813,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3845,"src":"1850:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3812,"name":"uint256","nodeType":"ElementaryTypeName","src":"1850:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3815,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3845,"src":"1861:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3814,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1849:22:53"},"returnParameters":{"id":3819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3818,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3845,"src":"1895:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3817,"name":"uint256","nodeType":"ElementaryTypeName","src":"1895:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1894:9:53"},"scope":4114,"src":"1833:209:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3875,"nodeType":"Block","src":"2124:638:53","statements":[{"assignments":[3855],"declarations":[{"constant":false,"id":3855,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":3875,"src":"2134:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3854,"name":"uint256","nodeType":"ElementaryTypeName","src":"2134:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3859,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3856,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"2152:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3857,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3849,"src":"2156:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2152:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2134:23:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3861,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"2176:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2181:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2176:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3864,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3855,"src":"2186:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3865,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"2196:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2186:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3867,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3849,"src":"2201:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2186:16:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2176:26:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3870,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2204:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MUL_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1755,"src":"2204:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3860,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2167:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2167:57:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3873,"nodeType":"ExpressionStatement","src":"2167:57:53"},{"AST":{"nodeType":"YulBlock","src":"2659:97:53","statements":[{"nodeType":"YulAssignment","src":"2673:73:53","value":{"arguments":[{"arguments":[{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"2701:7:53"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2694:6:53"},"nodeType":"YulFunctionCall","src":"2694:15:53"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2687:6:53"},"nodeType":"YulFunctionCall","src":"2687:23:53"},{"arguments":[{"arguments":[{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"2724:7:53"},{"kind":"number","nodeType":"YulLiteral","src":"2733:1:53","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2720:3:53"},"nodeType":"YulFunctionCall","src":"2720:15:53"},{"name":"ONE","nodeType":"YulIdentifier","src":"2737:3:53"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2716:3:53"},"nodeType":"YulFunctionCall","src":"2716:25:53"},{"kind":"number","nodeType":"YulLiteral","src":"2743:1:53","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2712:3:53"},"nodeType":"YulFunctionCall","src":"2712:33:53"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2683:3:53"},"nodeType":"YulFunctionCall","src":"2683:63:53"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2673:6:53"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3743,"isOffset":false,"isSlot":false,"src":"2737:3:53","valueSize":1},{"declaration":3855,"isOffset":false,"isSlot":false,"src":"2701:7:53","valueSize":1},{"declaration":3855,"isOffset":false,"isSlot":false,"src":"2724:7:53","valueSize":1},{"declaration":3852,"isOffset":false,"isSlot":false,"src":"2673:6:53","valueSize":1}],"id":3874,"nodeType":"InlineAssembly","src":"2650:106:53"}]},"id":3876,"implemented":true,"kind":"function","modifiers":[],"name":"mulUp","nodeType":"FunctionDefinition","parameters":{"id":3850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3847,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3876,"src":"2063:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3846,"name":"uint256","nodeType":"ElementaryTypeName","src":"2063:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3849,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3876,"src":"2074:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3848,"name":"uint256","nodeType":"ElementaryTypeName","src":"2074:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2062:22:53"},"returnParameters":{"id":3853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3852,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":3876,"src":"2108:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3851,"name":"uint256","nodeType":"ElementaryTypeName","src":"2108:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2107:16:53"},"scope":4114,"src":"2048:714:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3917,"nodeType":"Block","src":"2839:211:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3886,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3880,"src":"2858:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2863:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2858:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3889,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2866:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1758,"src":"2866:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3885,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2849:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2849:38:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3892,"nodeType":"ExpressionStatement","src":"2849:38:53"},{"assignments":[3894],"declarations":[{"constant":false,"id":3894,"mutability":"mutable","name":"aInflated","nodeType":"VariableDeclaration","scope":3917,"src":"2898:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3893,"name":"uint256","nodeType":"ElementaryTypeName","src":"2898:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3898,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3895,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3878,"src":"2918:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3896,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"2922:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2918:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2898:27:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3900,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3878,"src":"2944:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2949:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2944:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3903,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3894,"src":"2954:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3904,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3878,"src":"2966:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2954:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3906,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"2971:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2954:20:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2944:30:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3909,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2976:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DIV_INTERNAL","nodeType":"MemberAccess","referencedDeclaration":1761,"src":"2976:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3899,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2935:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2935:61:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3912,"nodeType":"ExpressionStatement","src":"2935:61:53"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3913,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3894,"src":"3030:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3914,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3880,"src":"3042:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3030:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3884,"id":3916,"nodeType":"Return","src":"3023:20:53"}]},"id":3918,"implemented":true,"kind":"function","modifiers":[],"name":"divDown","nodeType":"FunctionDefinition","parameters":{"id":3881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3878,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3918,"src":"2785:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3877,"name":"uint256","nodeType":"ElementaryTypeName","src":"2785:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3880,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3918,"src":"2796:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3879,"name":"uint256","nodeType":"ElementaryTypeName","src":"2796:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2784:22:53"},"returnParameters":{"id":3884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3883,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3918,"src":"2830:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3882,"name":"uint256","nodeType":"ElementaryTypeName","src":"2830:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2829:9:53"},"scope":4114,"src":"2768:282:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3956,"nodeType":"Block","src":"3132:703:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3928,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3922,"src":"3151:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3156:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3151:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3931,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"3159:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1758,"src":"3159:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3927,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"3142:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3142:38:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3934,"nodeType":"ExpressionStatement","src":"3142:38:53"},{"assignments":[3936],"declarations":[{"constant":false,"id":3936,"mutability":"mutable","name":"aInflated","nodeType":"VariableDeclaration","scope":3956,"src":"3191:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3935,"name":"uint256","nodeType":"ElementaryTypeName","src":"3191:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3940,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3937,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3920,"src":"3211:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3938,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"3215:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3211:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3191:27:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3942,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3920,"src":"3237:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3242:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3237:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3945,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3936,"src":"3247:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3946,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3920,"src":"3259:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3247:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3948,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"3264:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3247:20:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3237:30:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3951,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"3269:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DIV_INTERNAL","nodeType":"MemberAccess","referencedDeclaration":1761,"src":"3269:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3941,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"3228:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3228:61:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3954,"nodeType":"ExpressionStatement","src":"3228:61:53"},{"AST":{"nodeType":"YulBlock","src":"3730:99:53","statements":[{"nodeType":"YulAssignment","src":"3744:75:53","value":{"arguments":[{"arguments":[{"arguments":[{"name":"aInflated","nodeType":"YulIdentifier","src":"3772:9:53"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3765:6:53"},"nodeType":"YulFunctionCall","src":"3765:17:53"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3758:6:53"},"nodeType":"YulFunctionCall","src":"3758:25:53"},{"arguments":[{"arguments":[{"arguments":[{"name":"aInflated","nodeType":"YulIdentifier","src":"3797:9:53"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:53","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3793:3:53"},"nodeType":"YulFunctionCall","src":"3793:17:53"},{"name":"b","nodeType":"YulIdentifier","src":"3812:1:53"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3789:3:53"},"nodeType":"YulFunctionCall","src":"3789:25:53"},{"kind":"number","nodeType":"YulLiteral","src":"3816:1:53","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3785:3:53"},"nodeType":"YulFunctionCall","src":"3785:33:53"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3754:3:53"},"nodeType":"YulFunctionCall","src":"3754:65:53"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"3744:6:53"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3936,"isOffset":false,"isSlot":false,"src":"3772:9:53","valueSize":1},{"declaration":3936,"isOffset":false,"isSlot":false,"src":"3797:9:53","valueSize":1},{"declaration":3922,"isOffset":false,"isSlot":false,"src":"3812:1:53","valueSize":1},{"declaration":3925,"isOffset":false,"isSlot":false,"src":"3744:6:53","valueSize":1}],"id":3955,"nodeType":"InlineAssembly","src":"3721:108:53"}]},"id":3957,"implemented":true,"kind":"function","modifiers":[],"name":"divUp","nodeType":"FunctionDefinition","parameters":{"id":3923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3920,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3957,"src":"3071:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3919,"name":"uint256","nodeType":"ElementaryTypeName","src":"3071:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3922,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3957,"src":"3082:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3921,"name":"uint256","nodeType":"ElementaryTypeName","src":"3082:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3070:22:53"},"returnParameters":{"id":3926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3925,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":3957,"src":"3116:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3924,"name":"uint256","nodeType":"ElementaryTypeName","src":"3116:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3115:16:53"},"scope":4114,"src":"3056:779:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4033,"nodeType":"Block","src":"4138:681:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3967,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"4306:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3968,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"4311:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4306:8:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3973,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"4359:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3974,"name":"TWO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3748,"src":"4364:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4359:8:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3982,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"4424:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3983,"name":"FOUR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3753,"src":"4429:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4424:9:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4029,"nodeType":"Block","src":"4540:273:53","statements":[{"assignments":[3999],"declarations":[{"constant":false,"id":3999,"mutability":"mutable","name":"raw","nodeType":"VariableDeclaration","scope":4029,"src":"4554:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3998,"name":"uint256","nodeType":"ElementaryTypeName","src":"4554:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4005,"initialValue":{"arguments":[{"id":4002,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"4583:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4003,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"4586:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4000,"name":"LogExpMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5412,"src":"4568:10:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LogExpMath_$5412_$","typeString":"type(library LogExpMath)"}},"id":4001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pow","nodeType":"MemberAccess","referencedDeclaration":4356,"src":"4568:14:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4568:20:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4554:34:53"},{"assignments":[4007],"declarations":[{"constant":false,"id":4007,"mutability":"mutable","name":"maxError","nodeType":"VariableDeclaration","scope":4029,"src":"4602:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4006,"name":"uint256","nodeType":"ElementaryTypeName","src":"4602:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4015,"initialValue":{"arguments":[{"arguments":[{"id":4010,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"4631:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4011,"name":"MAX_POW_RELATIVE_ERROR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3756,"src":"4636:22:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4009,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"4625:5:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4625:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":4013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4661:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":4008,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"4621:3:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4621:42:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4602:61:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4016,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"4682:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4017,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4007,"src":"4688:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4682:14:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4027,"nodeType":"Block","src":"4745:58:53","statements":[{"expression":{"arguments":[{"id":4023,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"4774:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4024,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4007,"src":"4779:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4022,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3811,"src":"4770:3:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4770:18:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3966,"id":4026,"nodeType":"Return","src":"4763:25:53"}]},"id":4028,"nodeType":"IfStatement","src":"4678:125:53","trueBody":{"id":4021,"nodeType":"Block","src":"4698:41:53","statements":[{"expression":{"hexValue":"30","id":4019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4723:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3966,"id":4020,"nodeType":"Return","src":"4716:8:53"}]}}]},"id":4030,"nodeType":"IfStatement","src":"4420:393:53","trueBody":{"id":3997,"nodeType":"Block","src":"4435:99:53","statements":[{"assignments":[3986],"declarations":[{"constant":false,"id":3986,"mutability":"mutable","name":"square","nodeType":"VariableDeclaration","scope":3997,"src":"4449:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3985,"name":"uint256","nodeType":"ElementaryTypeName","src":"4449:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3991,"initialValue":{"arguments":[{"id":3988,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"4474:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3989,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"4477:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3987,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3845,"src":"4466:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4466:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4449:30:53"},{"expression":{"arguments":[{"id":3993,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"4508:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3994,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"4516:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3992,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3845,"src":"4500:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4500:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3966,"id":3996,"nodeType":"Return","src":"4493:30:53"}]}},"id":4031,"nodeType":"IfStatement","src":"4355:458:53","trueBody":{"id":3981,"nodeType":"Block","src":"4369:45:53","statements":[{"expression":{"arguments":[{"id":3977,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"4398:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3978,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"4401:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3976,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3845,"src":"4390:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4390:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3966,"id":3980,"nodeType":"Return","src":"4383:20:53"}]}},"id":4032,"nodeType":"IfStatement","src":"4302:511:53","trueBody":{"id":3972,"nodeType":"Block","src":"4316:33:53","statements":[{"expression":{"id":3970,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"4337:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3966,"id":3971,"nodeType":"Return","src":"4330:8:53"}]}}]},"documentation":{"id":3958,"nodeType":"StructuredDocumentation","src":"3841:221:53","text":" @dev Returns x^y, assuming both are fixed point numbers, rounding down. The result is guaranteed to not be above\n the true value (that is, the error function expected - actual is always positive)."},"id":4034,"implemented":true,"kind":"function","modifiers":[],"name":"powDown","nodeType":"FunctionDefinition","parameters":{"id":3963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3960,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4034,"src":"4084:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3959,"name":"uint256","nodeType":"ElementaryTypeName","src":"4084:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3962,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4034,"src":"4095:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3961,"name":"uint256","nodeType":"ElementaryTypeName","src":"4095:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4083:22:53"},"returnParameters":{"id":3966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3965,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4034,"src":"4129:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3964,"name":"uint256","nodeType":"ElementaryTypeName","src":"4129:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4128:9:53"},"scope":4114,"src":"4067:752:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4102,"nodeType":"Block","src":"5118:576:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4044,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"5286:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4045,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"5291:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5286:8:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4050,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"5339:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4051,"name":"TWO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3748,"src":"5344:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5339:8:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4059,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"5402:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4060,"name":"FOUR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3753,"src":"5407:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5402:9:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4098,"nodeType":"Block","src":"5514:174:53","statements":[{"assignments":[4076],"declarations":[{"constant":false,"id":4076,"mutability":"mutable","name":"raw","nodeType":"VariableDeclaration","scope":4098,"src":"5528:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4075,"name":"uint256","nodeType":"ElementaryTypeName","src":"5528:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4082,"initialValue":{"arguments":[{"id":4079,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"5557:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4080,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"5560:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4077,"name":"LogExpMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5412,"src":"5542:10:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LogExpMath_$5412_$","typeString":"type(library LogExpMath)"}},"id":4078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pow","nodeType":"MemberAccess","referencedDeclaration":4356,"src":"5542:14:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5542:20:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5528:34:53"},{"assignments":[4084],"declarations":[{"constant":false,"id":4084,"mutability":"mutable","name":"maxError","nodeType":"VariableDeclaration","scope":4098,"src":"5576:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4083,"name":"uint256","nodeType":"ElementaryTypeName","src":"5576:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4092,"initialValue":{"arguments":[{"arguments":[{"id":4087,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4076,"src":"5605:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4088,"name":"MAX_POW_RELATIVE_ERROR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3756,"src":"5610:22:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4086,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"5599:5:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5599:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":4090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5635:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":4085,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"5595:3:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5595:42:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5576:61:53"},{"expression":{"arguments":[{"id":4094,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4076,"src":"5663:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4095,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4084,"src":"5668:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4093,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"5659:3:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5659:18:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4043,"id":4097,"nodeType":"Return","src":"5652:25:53"}]},"id":4099,"nodeType":"IfStatement","src":"5398:290:53","trueBody":{"id":4074,"nodeType":"Block","src":"5413:95:53","statements":[{"assignments":[4063],"declarations":[{"constant":false,"id":4063,"mutability":"mutable","name":"square","nodeType":"VariableDeclaration","scope":4074,"src":"5427:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4062,"name":"uint256","nodeType":"ElementaryTypeName","src":"5427:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4068,"initialValue":{"arguments":[{"id":4065,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"5450:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4066,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"5453:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4064,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"5444:5:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5444:11:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5427:28:53"},{"expression":{"arguments":[{"id":4070,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4063,"src":"5482:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4071,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4063,"src":"5490:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4069,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"5476:5:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5476:21:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4043,"id":4073,"nodeType":"Return","src":"5469:28:53"}]}},"id":4100,"nodeType":"IfStatement","src":"5335:353:53","trueBody":{"id":4058,"nodeType":"Block","src":"5349:43:53","statements":[{"expression":{"arguments":[{"id":4054,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"5376:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4055,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"5379:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4053,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"5370:5:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5370:11:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4043,"id":4057,"nodeType":"Return","src":"5363:18:53"}]}},"id":4101,"nodeType":"IfStatement","src":"5282:406:53","trueBody":{"id":4049,"nodeType":"Block","src":"5296:33:53","statements":[{"expression":{"id":4047,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"5317:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4043,"id":4048,"nodeType":"Return","src":"5310:8:53"}]}}]},"documentation":{"id":4035,"nodeType":"StructuredDocumentation","src":"4825:219:53","text":" @dev Returns x^y, assuming both are fixed point numbers, rounding up. The result is guaranteed to not be below\n the true value (that is, the error function expected - actual is always negative)."},"id":4103,"implemented":true,"kind":"function","modifiers":[],"name":"powUp","nodeType":"FunctionDefinition","parameters":{"id":4040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4037,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4103,"src":"5064:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4036,"name":"uint256","nodeType":"ElementaryTypeName","src":"5064:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4039,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4103,"src":"5075:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4038,"name":"uint256","nodeType":"ElementaryTypeName","src":"5075:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5063:22:53"},"returnParameters":{"id":4043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4042,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4103,"src":"5109:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4041,"name":"uint256","nodeType":"ElementaryTypeName","src":"5109:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5108:9:53"},"scope":4114,"src":"5049:645:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4112,"nodeType":"Block","src":"6047:160:53","statements":[{"AST":{"nodeType":"YulBlock","src":"6139:62:53","statements":[{"nodeType":"YulAssignment","src":"6153:38:53","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6170:1:53"},{"name":"ONE","nodeType":"YulIdentifier","src":"6173:3:53"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6167:2:53"},"nodeType":"YulFunctionCall","src":"6167:10:53"},{"arguments":[{"name":"ONE","nodeType":"YulIdentifier","src":"6183:3:53"},{"name":"x","nodeType":"YulIdentifier","src":"6188:1:53"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6179:3:53"},"nodeType":"YulFunctionCall","src":"6179:11:53"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6163:3:53"},"nodeType":"YulFunctionCall","src":"6163:28:53"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"6153:6:53"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3743,"isOffset":false,"isSlot":false,"src":"6173:3:53","valueSize":1},{"declaration":3743,"isOffset":false,"isSlot":false,"src":"6183:3:53","valueSize":1},{"declaration":4109,"isOffset":false,"isSlot":false,"src":"6153:6:53","valueSize":1},{"declaration":4106,"isOffset":false,"isSlot":false,"src":"6170:1:53","valueSize":1},{"declaration":4106,"isOffset":false,"isSlot":false,"src":"6188:1:53","valueSize":1}],"id":4111,"nodeType":"InlineAssembly","src":"6130:71:53"}]},"documentation":{"id":4104,"nodeType":"StructuredDocumentation","src":"5700:272:53","text":" @dev Returns the complement of a value (1 - x), capped to 0 if x is larger than 1.\n Useful when computing the complement for values with some level of relative error, as it strips this error and\n prevents intermediate negative values."},"id":4113,"implemented":true,"kind":"function","modifiers":[],"name":"complement","nodeType":"FunctionDefinition","parameters":{"id":4107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4106,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4113,"src":"5997:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4105,"name":"uint256","nodeType":"ElementaryTypeName","src":"5997:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5996:11:53"},"returnParameters":{"id":4110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4109,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":4113,"src":"6031:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4108,"name":"uint256","nodeType":"ElementaryTypeName","src":"6031:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6030:16:53"},"scope":4114,"src":"5977:230:53","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4115,"src":"888:5321:53"}],"src":"688:5522:53"},"id":53},"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol","exportedSymbols":{"LogExpMath":[5412]},"id":5413,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4116,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"1094:23:54"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":4117,"nodeType":"ImportDirective","scope":5413,"sourceUnit":2249,"src":"1119:90:54","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4118,"nodeType":"StructuredDocumentation","src":"1234:446:54","text":" @dev Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument).\n Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural\n exponentiation and logarithm (where the base is Euler's number).\n @author Fernando Martinelli - @fernandomartinelli\n @author Sergio Yuhjtman - @sergioyuhjtman\n @author Daniel Fernandez - @dmf7z"},"fullyImplemented":true,"id":5412,"linearizedBaseContracts":[5412],"name":"LogExpMath","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":4121,"mutability":"constant","name":"ONE_18","nodeType":"VariableDeclaration","scope":5412,"src":"1961:29:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4119,"name":"int256","nodeType":"ElementaryTypeName","src":"1961:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653138","id":4120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1986:4:54","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":4124,"mutability":"constant","name":"ONE_20","nodeType":"VariableDeclaration","scope":5412,"src":"2151:29:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4122,"name":"int256","nodeType":"ElementaryTypeName","src":"2151:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653230","id":4123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2176:4:54","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000_by_1","typeString":"int_const 100000000000000000000"},"value":"1e20"},"visibility":"internal"},{"constant":true,"id":4127,"mutability":"constant","name":"ONE_36","nodeType":"VariableDeclaration","scope":5412,"src":"2186:29:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4125,"name":"int256","nodeType":"ElementaryTypeName","src":"2186:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653336","id":4126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2211:4:54","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(29 digits omitted)...0000"},"value":"1e36"},"visibility":"internal"},{"constant":true,"id":4130,"mutability":"constant","name":"MAX_NATURAL_EXPONENT","nodeType":"VariableDeclaration","scope":5412,"src":"2732:45:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4128,"name":"int256","nodeType":"ElementaryTypeName","src":"2732:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313330653138","id":4129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2771:6:54","typeDescriptions":{"typeIdentifier":"t_rational_130000000000000000000_by_1","typeString":"int_const 130000000000000000000"},"value":"130e18"},"visibility":"internal"},{"constant":true,"id":4134,"mutability":"constant","name":"MIN_NATURAL_EXPONENT","nodeType":"VariableDeclaration","scope":5412,"src":"2783:45:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4131,"name":"int256","nodeType":"ElementaryTypeName","src":"2783:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"id":4133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2822:6:54","subExpression":{"hexValue":"3431653138","id":4132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2823:5:54","typeDescriptions":{"typeIdentifier":"t_rational_41000000000000000000_by_1","typeString":"int_const 41000000000000000000"},"value":"41e18"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_41000000000000000000_by_1","typeString":"int_const -41000000000000000000"}},"visibility":"internal"},{"constant":true,"id":4139,"mutability":"constant","name":"LN_36_LOWER_BOUND","nodeType":"VariableDeclaration","scope":5412,"src":"2979:49:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4135,"name":"int256","nodeType":"ElementaryTypeName","src":"2979:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4136,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"3015:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31653137","id":4137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3024:4:54","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000_by_1","typeString":"int_const 100000000000000000"},"value":"1e17"},"src":"3015:13:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":true,"id":4144,"mutability":"constant","name":"LN_36_UPPER_BOUND","nodeType":"VariableDeclaration","scope":5412,"src":"3034:49:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4140,"name":"int256","nodeType":"ElementaryTypeName","src":"3034:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4141,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"3070:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31653137","id":4142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3079:4:54","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000_by_1","typeString":"int_const 100000000000000000"},"value":"1e17"},"src":"3070:13:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":true,"id":4154,"mutability":"constant","name":"MILD_EXPONENT_BOUND","nodeType":"VariableDeclaration","scope":5412,"src":"3090:63:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4145,"name":"uint256","nodeType":"ElementaryTypeName","src":"3090:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_28948022309329048855892746252171976963317496166410141009864396001978282409984_by_1","typeString":"int_const 2894...(69 digits omitted)...9984"},"id":4148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3129:1:54","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323534","id":4147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3132:3:54","typeDescriptions":{"typeIdentifier":"t_rational_254_by_1","typeString":"int_const 254"},"value":"254"},"src":"3129:6:54","typeDescriptions":{"typeIdentifier":"t_rational_28948022309329048855892746252171976963317496166410141009864396001978282409984_by_1","typeString":"int_const 2894...(69 digits omitted)...9984"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":4151,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"3146:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3138:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4149,"name":"uint256","nodeType":"ElementaryTypeName","src":"3138:7:54","typeDescriptions":{}}},"id":4152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3138:15:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3129:24:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":4157,"mutability":"constant","name":"x0","nodeType":"VariableDeclaration","scope":5412,"src":"3188:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4155,"name":"int256","nodeType":"ElementaryTypeName","src":"3188:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313238303030303030303030303030303030303030","id":4156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3209:21:54","typeDescriptions":{"typeIdentifier":"t_rational_128000000000000000000_by_1","typeString":"int_const 128000000000000000000"},"value":"128000000000000000000"},"visibility":"internal"},{"constant":true,"id":4160,"mutability":"constant","name":"a0","nodeType":"VariableDeclaration","scope":5412,"src":"3244:77:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4158,"name":"int256","nodeType":"ElementaryTypeName","src":"3244:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3338383737303834303539393435393530393232323030303030303030303030303030303030303030303030303030303030303030303030","id":4159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3265:56:54","typeDescriptions":{"typeIdentifier":"t_rational_38877084059945950922200000000000000000000000000000000000_by_1","typeString":"int_const 3887...(48 digits omitted)...0000"},"value":"38877084059945950922200000000000000000000000000000000000"},"visibility":"internal"},{"constant":true,"id":4163,"mutability":"constant","name":"x1","nodeType":"VariableDeclaration","scope":5412,"src":"3352:41:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4161,"name":"int256","nodeType":"ElementaryTypeName","src":"3352:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3634303030303030303030303030303030303030","id":4162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3373:20:54","typeDescriptions":{"typeIdentifier":"t_rational_64000000000000000000_by_1","typeString":"int_const 64000000000000000000"},"value":"64000000000000000000"},"visibility":"internal"},{"constant":true,"id":4166,"mutability":"constant","name":"a1","nodeType":"VariableDeclaration","scope":5412,"src":"3407:49:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4164,"name":"int256","nodeType":"ElementaryTypeName","src":"3407:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"36323335313439303830383131363136383832393130303030303030","id":4165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3428:28:54","typeDescriptions":{"typeIdentifier":"t_rational_6235149080811616882910000000_by_1","typeString":"int_const 6235149080811616882910000000"},"value":"6235149080811616882910000000"},"visibility":"internal"},{"constant":true,"id":4169,"mutability":"constant","name":"x2","nodeType":"VariableDeclaration","scope":5412,"src":"3516:43:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4167,"name":"int256","nodeType":"ElementaryTypeName","src":"3516:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"33323030303030303030303030303030303030303030","id":4168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3537:22:54","typeDescriptions":{"typeIdentifier":"t_rational_3200000000000000000000_by_1","typeString":"int_const 3200000000000000000000"},"value":"3200000000000000000000"},"visibility":"internal"},{"constant":true,"id":4172,"mutability":"constant","name":"a2","nodeType":"VariableDeclaration","scope":5412,"src":"3573:55:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4170,"name":"int256","nodeType":"ElementaryTypeName","src":"3573:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"37383936323936303138323638303639353136313030303030303030303030303030","id":4171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3594:34:54","typeDescriptions":{"typeIdentifier":"t_rational_7896296018268069516100000000000000_by_1","typeString":"int_const 7896...(26 digits omitted)...0000"},"value":"7896296018268069516100000000000000"},"visibility":"internal"},{"constant":true,"id":4175,"mutability":"constant","name":"x3","nodeType":"VariableDeclaration","scope":5412,"src":"3645:43:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4173,"name":"int256","nodeType":"ElementaryTypeName","src":"3645:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31363030303030303030303030303030303030303030","id":4174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3666:22:54","typeDescriptions":{"typeIdentifier":"t_rational_1600000000000000000000_by_1","typeString":"int_const 1600000000000000000000"},"value":"1600000000000000000000"},"visibility":"internal"},{"constant":true,"id":4178,"mutability":"constant","name":"a3","nodeType":"VariableDeclaration","scope":5412,"src":"3702:48:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4176,"name":"int256","nodeType":"ElementaryTypeName","src":"3702:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"383838363131303532303530373837323633363736303030303030","id":4177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3723:27:54","typeDescriptions":{"typeIdentifier":"t_rational_888611052050787263676000000_by_1","typeString":"int_const 888611052050787263676000000"},"value":"888611052050787263676000000"},"visibility":"internal"},{"constant":true,"id":4181,"mutability":"constant","name":"x4","nodeType":"VariableDeclaration","scope":5412,"src":"3767:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4179,"name":"int256","nodeType":"ElementaryTypeName","src":"3767:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"383030303030303030303030303030303030303030","id":4180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3788:21:54","typeDescriptions":{"typeIdentifier":"t_rational_800000000000000000000_by_1","typeString":"int_const 800000000000000000000"},"value":"800000000000000000000"},"visibility":"internal"},{"constant":true,"id":4184,"mutability":"constant","name":"a4","nodeType":"VariableDeclaration","scope":5412,"src":"3823:45:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4182,"name":"int256","nodeType":"ElementaryTypeName","src":"3823:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323938303935373938373034313732383237343734303030","id":4183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3844:24:54","typeDescriptions":{"typeIdentifier":"t_rational_298095798704172827474000_by_1","typeString":"int_const 298095798704172827474000"},"value":"298095798704172827474000"},"visibility":"internal"},{"constant":true,"id":4187,"mutability":"constant","name":"x5","nodeType":"VariableDeclaration","scope":5412,"src":"3885:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4185,"name":"int256","nodeType":"ElementaryTypeName","src":"3885:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"343030303030303030303030303030303030303030","id":4186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3906:21:54","typeDescriptions":{"typeIdentifier":"t_rational_400000000000000000000_by_1","typeString":"int_const 400000000000000000000"},"value":"400000000000000000000"},"visibility":"internal"},{"constant":true,"id":4190,"mutability":"constant","name":"a5","nodeType":"VariableDeclaration","scope":5412,"src":"3941:43:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4188,"name":"int256","nodeType":"ElementaryTypeName","src":"3941:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"35343539383135303033333134343233393037383130","id":4189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3962:22:54","typeDescriptions":{"typeIdentifier":"t_rational_5459815003314423907810_by_1","typeString":"int_const 5459815003314423907810"},"value":"5459815003314423907810"},"visibility":"internal"},{"constant":true,"id":4193,"mutability":"constant","name":"x6","nodeType":"VariableDeclaration","scope":5412,"src":"4001:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4191,"name":"int256","nodeType":"ElementaryTypeName","src":"4001:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323030303030303030303030303030303030303030","id":4192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4022:21:54","typeDescriptions":{"typeIdentifier":"t_rational_200000000000000000000_by_1","typeString":"int_const 200000000000000000000"},"value":"200000000000000000000"},"visibility":"internal"},{"constant":true,"id":4196,"mutability":"constant","name":"a6","nodeType":"VariableDeclaration","scope":5412,"src":"4057:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4194,"name":"int256","nodeType":"ElementaryTypeName","src":"4057:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"373338393035363039383933303635303232373233","id":4195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4078:21:54","typeDescriptions":{"typeIdentifier":"t_rational_738905609893065022723_by_1","typeString":"int_const 738905609893065022723"},"value":"738905609893065022723"},"visibility":"internal"},{"constant":true,"id":4199,"mutability":"constant","name":"x7","nodeType":"VariableDeclaration","scope":5412,"src":"4116:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4197,"name":"int256","nodeType":"ElementaryTypeName","src":"4116:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313030303030303030303030303030303030303030","id":4198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4137:21:54","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000_by_1","typeString":"int_const 100000000000000000000"},"value":"100000000000000000000"},"visibility":"internal"},{"constant":true,"id":4202,"mutability":"constant","name":"a7","nodeType":"VariableDeclaration","scope":5412,"src":"4172:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4200,"name":"int256","nodeType":"ElementaryTypeName","src":"4172:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323731383238313832383435393034353233353336","id":4201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4193:21:54","typeDescriptions":{"typeIdentifier":"t_rational_271828182845904523536_by_1","typeString":"int_const 271828182845904523536"},"value":"271828182845904523536"},"visibility":"internal"},{"constant":true,"id":4205,"mutability":"constant","name":"x8","nodeType":"VariableDeclaration","scope":5412,"src":"4231:41:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4203,"name":"int256","nodeType":"ElementaryTypeName","src":"4231:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3530303030303030303030303030303030303030","id":4204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4252:20:54","typeDescriptions":{"typeIdentifier":"t_rational_50000000000000000000_by_1","typeString":"int_const 50000000000000000000"},"value":"50000000000000000000"},"visibility":"internal"},{"constant":true,"id":4208,"mutability":"constant","name":"a8","nodeType":"VariableDeclaration","scope":5412,"src":"4287:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4206,"name":"int256","nodeType":"ElementaryTypeName","src":"4287:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313634383732313237303730303132383134363835","id":4207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:21:54","typeDescriptions":{"typeIdentifier":"t_rational_164872127070012814685_by_1","typeString":"int_const 164872127070012814685"},"value":"164872127070012814685"},"visibility":"internal"},{"constant":true,"id":4211,"mutability":"constant","name":"x9","nodeType":"VariableDeclaration","scope":5412,"src":"4346:41:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4209,"name":"int256","nodeType":"ElementaryTypeName","src":"4346:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3235303030303030303030303030303030303030","id":4210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4367:20:54","typeDescriptions":{"typeIdentifier":"t_rational_25000000000000000000_by_1","typeString":"int_const 25000000000000000000"},"value":"25000000000000000000"},"visibility":"internal"},{"constant":true,"id":4214,"mutability":"constant","name":"a9","nodeType":"VariableDeclaration","scope":5412,"src":"4402:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4212,"name":"int256","nodeType":"ElementaryTypeName","src":"4402:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313238343032353431363638373734313438343037","id":4213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4423:21:54","typeDescriptions":{"typeIdentifier":"t_rational_128402541668774148407_by_1","typeString":"int_const 128402541668774148407"},"value":"128402541668774148407"},"visibility":"internal"},{"constant":true,"id":4217,"mutability":"constant","name":"x10","nodeType":"VariableDeclaration","scope":5412,"src":"4461:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4215,"name":"int256","nodeType":"ElementaryTypeName","src":"4461:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3132353030303030303030303030303030303030","id":4216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4483:20:54","typeDescriptions":{"typeIdentifier":"t_rational_12500000000000000000_by_1","typeString":"int_const 12500000000000000000"},"value":"12500000000000000000"},"visibility":"internal"},{"constant":true,"id":4220,"mutability":"constant","name":"a10","nodeType":"VariableDeclaration","scope":5412,"src":"4518:43:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4218,"name":"int256","nodeType":"ElementaryTypeName","src":"4518:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313133333134383435333036363832363331363833","id":4219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4540:21:54","typeDescriptions":{"typeIdentifier":"t_rational_113314845306682631683_by_1","typeString":"int_const 113314845306682631683"},"value":"113314845306682631683"},"visibility":"internal"},{"constant":true,"id":4223,"mutability":"constant","name":"x11","nodeType":"VariableDeclaration","scope":5412,"src":"4579:41:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4221,"name":"int256","nodeType":"ElementaryTypeName","src":"4579:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"36323530303030303030303030303030303030","id":4222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4601:19:54","typeDescriptions":{"typeIdentifier":"t_rational_6250000000000000000_by_1","typeString":"int_const 6250000000000000000"},"value":"6250000000000000000"},"visibility":"internal"},{"constant":true,"id":4226,"mutability":"constant","name":"a11","nodeType":"VariableDeclaration","scope":5412,"src":"4635:43:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4224,"name":"int256","nodeType":"ElementaryTypeName","src":"4635:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313036343439343435383931373835393432393536","id":4225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4657:21:54","typeDescriptions":{"typeIdentifier":"t_rational_106449445891785942956_by_1","typeString":"int_const 106449445891785942956"},"value":"106449445891785942956"},"visibility":"internal"},{"body":{"id":4355,"nodeType":"Block","src":"4983:2128:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4236,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"4997:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5002:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4997:6:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4245,"nodeType":"IfStatement","src":"4993:131:54","trueBody":{"id":4244,"nodeType":"Block","src":"5005:119:54","statements":[{"expression":{"arguments":[{"id":4241,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"5106:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5098:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4239,"name":"uint256","nodeType":"ElementaryTypeName","src":"5098:7:54","typeDescriptions":{}}},"id":4242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5098:15:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4235,"id":4243,"nodeType":"Return","src":"5091:22:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4246,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"5138:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5143:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5138:6:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4252,"nodeType":"IfStatement","src":"5134:45:54","trueBody":{"id":4251,"nodeType":"Block","src":"5146:33:54","statements":[{"expression":{"hexValue":"30","id":4249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5167:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4235,"id":4250,"nodeType":"Return","src":"5160:8:54"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4254,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"5558:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":4255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5563:3:54","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"5558:8:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5570:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5558:13:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4259,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"5573:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":4260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"X_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1764,"src":"5573:22:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4253,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"5549:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5549:47:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4262,"nodeType":"ExpressionStatement","src":"5549:47:54"},{"assignments":[4264],"declarations":[{"constant":false,"id":4264,"mutability":"mutable","name":"x_int256","nodeType":"VariableDeclaration","scope":4355,"src":"5606:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4263,"name":"int256","nodeType":"ElementaryTypeName","src":"5606:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4269,"initialValue":{"arguments":[{"id":4267,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"5631:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5624:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4265,"name":"int256","nodeType":"ElementaryTypeName","src":"5624:6:54","typeDescriptions":{}}},"id":4268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5624:9:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5606:27:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4271,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"5996:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4272,"name":"MILD_EXPONENT_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4154,"src":"6000:19:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5996:23:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4274,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"6021:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":4275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Y_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1767,"src":"6021:22:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4270,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"5987:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5987:57:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4277,"nodeType":"ExpressionStatement","src":"5987:57:54"},{"assignments":[4279],"declarations":[{"constant":false,"id":4279,"mutability":"mutable","name":"y_int256","nodeType":"VariableDeclaration","scope":4355,"src":"6054:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4278,"name":"int256","nodeType":"ElementaryTypeName","src":"6054:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4284,"initialValue":{"arguments":[{"id":4282,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"6079:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6072:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4280,"name":"int256","nodeType":"ElementaryTypeName","src":"6072:6:54","typeDescriptions":{}}},"id":4283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6072:9:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6054:27:54"},{"assignments":[4286],"declarations":[{"constant":false,"id":4286,"mutability":"mutable","name":"logx_times_y","nodeType":"VariableDeclaration","scope":4355,"src":"6092:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4285,"name":"int256","nodeType":"ElementaryTypeName","src":"6092:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4287,"nodeType":"VariableDeclarationStatement","src":"6092:19:54"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4288,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"6125:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4289,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4264,"src":"6145:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6125:28:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4291,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4264,"src":"6157:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4292,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4144,"src":"6168:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6157:28:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6125:60:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4330,"nodeType":"Block","src":"6741:64:54","statements":[{"expression":{"id":4328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4322,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4286,"src":"6755:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4324,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4264,"src":"6774:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4323,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5257,"src":"6770:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6770:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4326,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"6786:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6770:24:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6755:39:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4329,"nodeType":"ExpressionStatement","src":"6755:39:54"}]},"id":4331,"nodeType":"IfStatement","src":"6121:684:54","trueBody":{"id":4321,"nodeType":"Block","src":"6187:548:54","statements":[{"assignments":[4296],"declarations":[{"constant":false,"id":4296,"mutability":"mutable","name":"ln_36_x","nodeType":"VariableDeclaration","scope":4321,"src":"6201:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4295,"name":"int256","nodeType":"ElementaryTypeName","src":"6201:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4300,"initialValue":{"arguments":[{"id":4298,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4264,"src":"6225:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4297,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5411,"src":"6218:6:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6218:16:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6201:33:54"},{"expression":{"id":4319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4301,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4286,"src":"6635:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4302,"name":"ln_36_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4296,"src":"6652:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4303,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"6662:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6652:16:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4305,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6651:18:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4306,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"6672:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6651:29:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4308,"name":"ln_36_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4296,"src":"6685:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":4309,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"6695:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6685:16:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4311,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6684:18:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4312,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"6705:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6684:29:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4314,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6683:31:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4315,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"6717:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6683:40:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6651:72:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4318,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6650:74:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6635:89:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4320,"nodeType":"ExpressionStatement","src":"6635:89:54"}]}},{"expression":{"id":4334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4332,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4286,"src":"6814:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":4333,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"6830:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6814:22:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4335,"nodeType":"ExpressionStatement","src":"6814:22:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4337,"name":"MIN_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4134,"src":"6932:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4338,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4286,"src":"6956:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6932:36:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4340,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4286,"src":"6972:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4341,"name":"MAX_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4130,"src":"6988:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6972:36:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6932:76:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4344,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"7022:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":4345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PRODUCT_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1770,"src":"7022:28:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4336,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"6910:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6910:150:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4347,"nodeType":"ExpressionStatement","src":"6910:150:54"},{"expression":{"arguments":[{"arguments":[{"id":4351,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4286,"src":"7090:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4350,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4783,"src":"7086:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7086:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7078:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4348,"name":"uint256","nodeType":"ElementaryTypeName","src":"7078:7:54","typeDescriptions":{}}},"id":4353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7078:26:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4235,"id":4354,"nodeType":"Return","src":"7071:33:54"}]},"documentation":{"id":4227,"nodeType":"StructuredDocumentation","src":"4697:214:54","text":" @dev Exponentiation (x^y) with unsigned 18 decimal fixed point base and exponent.\n Reverts if ln(x) * y is smaller than `MIN_NATURAL_EXPONENT`, or larger than `MAX_NATURAL_EXPONENT`."},"id":4356,"implemented":true,"kind":"function","modifiers":[],"name":"pow","nodeType":"FunctionDefinition","parameters":{"id":4232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4229,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4356,"src":"4929:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4228,"name":"uint256","nodeType":"ElementaryTypeName","src":"4929:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4231,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4356,"src":"4940:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4230,"name":"uint256","nodeType":"ElementaryTypeName","src":"4940:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4928:22:54"},"returnParameters":{"id":4235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4234,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4356,"src":"4974:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4233,"name":"uint256","nodeType":"ElementaryTypeName","src":"4974:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4973:9:54"},"scope":5412,"src":"4916:2195:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4782,"nodeType":"Block","src":"7379:5325:54","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4365,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"7398:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4366,"name":"MIN_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4134,"src":"7403:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7398:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4368,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"7427:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4369,"name":"MAX_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4130,"src":"7432:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7427:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7398:54:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4372,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"7454:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":4373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_EXPONENT","nodeType":"MemberAccess","referencedDeclaration":1773,"src":"7454:23:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4364,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"7389:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7389:89:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4375,"nodeType":"ExpressionStatement","src":"7389:89:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4376,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"7493:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":4377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7497:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7493:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4391,"nodeType":"IfStatement","src":"7489:353:54","trueBody":{"id":4390,"nodeType":"Block","src":"7500:342:54","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4379,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"7804:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4380,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"7813:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7804:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4382,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7803:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":4385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7827:2:54","subExpression":{"id":4384,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"7828:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4383,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4783,"src":"7823:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7823:7:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7803:27:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4388,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7802:29:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4363,"id":4389,"nodeType":"Return","src":"7795:36:54"}]}},{"assignments":[4393],"declarations":[{"constant":false,"id":4393,"mutability":"mutable","name":"firstAN","nodeType":"VariableDeclaration","scope":4782,"src":"9143:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4392,"name":"int256","nodeType":"ElementaryTypeName","src":"9143:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4394,"nodeType":"VariableDeclarationStatement","src":"9143:14:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4395,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9171:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4396,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4157,"src":"9176:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9171:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4407,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9248:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4408,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4163,"src":"9253:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9248:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4423,"nodeType":"Block","src":"9321:66:54","statements":[{"expression":{"id":4421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4419,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"9335:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":4420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9345:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9335:11:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4422,"nodeType":"ExpressionStatement","src":"9335:11:54"}]},"id":4424,"nodeType":"IfStatement","src":"9244:143:54","trueBody":{"id":4418,"nodeType":"Block","src":"9257:58:54","statements":[{"expression":{"id":4412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4410,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9271:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4411,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4163,"src":"9276:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9271:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4413,"nodeType":"ExpressionStatement","src":"9271:7:54"},{"expression":{"id":4416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4414,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"9292:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4415,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4166,"src":"9302:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9292:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4417,"nodeType":"ExpressionStatement","src":"9292:12:54"}]}},"id":4425,"nodeType":"IfStatement","src":"9167:220:54","trueBody":{"id":4406,"nodeType":"Block","src":"9180:58:54","statements":[{"expression":{"id":4400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4398,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9194:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4399,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4157,"src":"9199:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9194:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4401,"nodeType":"ExpressionStatement","src":"9194:7:54"},{"expression":{"id":4404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4402,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"9215:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4403,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4160,"src":"9225:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9215:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4405,"nodeType":"ExpressionStatement","src":"9215:12:54"}]}},{"expression":{"id":4428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4426,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9537:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":4427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9542:3:54","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"9537:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4429,"nodeType":"ExpressionStatement","src":"9537:8:54"},{"assignments":[4431],"declarations":[{"constant":false,"id":4431,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":4782,"src":"9758:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4430,"name":"int256","nodeType":"ElementaryTypeName","src":"9758:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4433,"initialValue":{"id":4432,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"9775:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"9758:23:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4434,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9796:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4435,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4169,"src":"9801:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9796:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4451,"nodeType":"IfStatement","src":"9792:92:54","trueBody":{"id":4450,"nodeType":"Block","src":"9805:79:54","statements":[{"expression":{"id":4439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4437,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9819:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4438,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4169,"src":"9824:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9819:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4440,"nodeType":"ExpressionStatement","src":"9819:7:54"},{"expression":{"id":4448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4441,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"9840:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4442,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"9851:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4443,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"9861:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9851:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4445,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9850:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4446,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"9867:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9850:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9840:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4449,"nodeType":"ExpressionStatement","src":"9840:33:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4452,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9897:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4453,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4175,"src":"9902:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9897:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4469,"nodeType":"IfStatement","src":"9893:92:54","trueBody":{"id":4468,"nodeType":"Block","src":"9906:79:54","statements":[{"expression":{"id":4457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4455,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9920:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4456,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4175,"src":"9925:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9920:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4458,"nodeType":"ExpressionStatement","src":"9920:7:54"},{"expression":{"id":4466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4459,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"9941:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4460,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"9952:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4461,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"9962:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9952:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4463,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9951:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4464,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"9968:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9951:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9941:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4467,"nodeType":"ExpressionStatement","src":"9941:33:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4470,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9998:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4471,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4181,"src":"10003:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9998:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4487,"nodeType":"IfStatement","src":"9994:92:54","trueBody":{"id":4486,"nodeType":"Block","src":"10007:79:54","statements":[{"expression":{"id":4475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4473,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10021:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4474,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4181,"src":"10026:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10021:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4476,"nodeType":"ExpressionStatement","src":"10021:7:54"},{"expression":{"id":4484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4477,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10042:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4478,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10053:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4479,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"10063:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10053:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4481,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10052:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4482,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"10069:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10052:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10042:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4485,"nodeType":"ExpressionStatement","src":"10042:33:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4488,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10099:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4489,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4187,"src":"10104:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10099:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4505,"nodeType":"IfStatement","src":"10095:92:54","trueBody":{"id":4504,"nodeType":"Block","src":"10108:79:54","statements":[{"expression":{"id":4493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4491,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10122:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4492,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4187,"src":"10127:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10122:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4494,"nodeType":"ExpressionStatement","src":"10122:7:54"},{"expression":{"id":4502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4495,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10143:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4496,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10154:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4497,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4190,"src":"10164:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10154:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4499,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10153:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4500,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"10170:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10153:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10143:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4503,"nodeType":"ExpressionStatement","src":"10143:33:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4506,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10200:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4507,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4193,"src":"10205:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10200:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4523,"nodeType":"IfStatement","src":"10196:92:54","trueBody":{"id":4522,"nodeType":"Block","src":"10209:79:54","statements":[{"expression":{"id":4511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4509,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10223:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4510,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4193,"src":"10228:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10223:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4512,"nodeType":"ExpressionStatement","src":"10223:7:54"},{"expression":{"id":4520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4513,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10244:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4514,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10255:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4515,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4196,"src":"10265:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10255:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4517,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10254:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4518,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"10271:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10254:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10244:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4521,"nodeType":"ExpressionStatement","src":"10244:33:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4524,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10301:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4525,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4199,"src":"10306:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10301:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4541,"nodeType":"IfStatement","src":"10297:92:54","trueBody":{"id":4540,"nodeType":"Block","src":"10310:79:54","statements":[{"expression":{"id":4529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4527,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10324:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4528,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4199,"src":"10329:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10324:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4530,"nodeType":"ExpressionStatement","src":"10324:7:54"},{"expression":{"id":4538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4531,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10345:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4532,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10356:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4533,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"10366:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10356:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4535,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10355:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4536,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"10372:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10355:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10345:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4539,"nodeType":"ExpressionStatement","src":"10345:33:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4542,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10402:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4543,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"10407:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10402:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4559,"nodeType":"IfStatement","src":"10398:92:54","trueBody":{"id":4558,"nodeType":"Block","src":"10411:79:54","statements":[{"expression":{"id":4547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4545,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10425:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4546,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"10430:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10425:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4548,"nodeType":"ExpressionStatement","src":"10425:7:54"},{"expression":{"id":4556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4549,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10446:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4550,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10457:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4551,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"10467:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10457:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4553,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10456:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4554,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"10473:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10456:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10446:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4557,"nodeType":"ExpressionStatement","src":"10446:33:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4560,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10503:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4561,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4211,"src":"10508:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10503:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4577,"nodeType":"IfStatement","src":"10499:92:54","trueBody":{"id":4576,"nodeType":"Block","src":"10512:79:54","statements":[{"expression":{"id":4565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4563,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10526:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4564,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4211,"src":"10531:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10526:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4566,"nodeType":"ExpressionStatement","src":"10526:7:54"},{"expression":{"id":4574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4567,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10547:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4568,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10558:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4569,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"10568:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10558:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4571,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10557:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4572,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"10574:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10557:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10547:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4575,"nodeType":"ExpressionStatement","src":"10547:33:54"}]}},{"assignments":[4579],"declarations":[{"constant":false,"id":4579,"mutability":"mutable","name":"seriesSum","nodeType":"VariableDeclaration","scope":4782,"src":"10895:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4578,"name":"int256","nodeType":"ElementaryTypeName","src":"10895:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4581,"initialValue":{"id":4580,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"10914:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"10895:25:54"},{"assignments":[4583],"declarations":[{"constant":false,"id":4583,"mutability":"mutable","name":"term","nodeType":"VariableDeclaration","scope":4782,"src":"10985:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4582,"name":"int256","nodeType":"ElementaryTypeName","src":"10985:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4584,"nodeType":"VariableDeclarationStatement","src":"10985:11:54"},{"expression":{"id":4587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4585,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11105:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4586,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11112:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11105:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4588,"nodeType":"ExpressionStatement","src":"11105:8:54"},{"expression":{"id":4591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4589,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11123:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4590,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11136:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11123:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4592,"nodeType":"ExpressionStatement","src":"11123:17:54"},{"expression":{"id":4603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4593,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11377:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4594,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11386:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4595,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11393:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11386:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4597,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11385:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4598,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11398:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11385:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4600,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11384:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":4601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11408:1:54","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11384:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11377:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4604,"nodeType":"ExpressionStatement","src":"11377:32:54"},{"expression":{"id":4607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4605,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11419:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4606,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11432:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11419:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4608,"nodeType":"ExpressionStatement","src":"11419:17:54"},{"expression":{"id":4619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4609,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11447:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4610,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11456:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4611,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11463:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11456:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4613,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11455:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4614,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11468:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11455:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4616,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11454:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":4617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11478:1:54","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"11454:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11447:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4620,"nodeType":"ExpressionStatement","src":"11447:32:54"},{"expression":{"id":4623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4621,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11489:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4622,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11502:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11489:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4624,"nodeType":"ExpressionStatement","src":"11489:17:54"},{"expression":{"id":4635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4625,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11517:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4626,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11526:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4627,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11533:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11526:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4629,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11525:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4630,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11538:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11525:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4632,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11524:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"34","id":4633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11548:1:54","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11524:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11517:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4636,"nodeType":"ExpressionStatement","src":"11517:32:54"},{"expression":{"id":4639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4637,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11559:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4638,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11572:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11559:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4640,"nodeType":"ExpressionStatement","src":"11559:17:54"},{"expression":{"id":4651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4641,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11587:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4642,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11596:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4643,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11603:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11596:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4645,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11595:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4646,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11608:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11595:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4648,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11594:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":4649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11618:1:54","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"11594:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11587:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4652,"nodeType":"ExpressionStatement","src":"11587:32:54"},{"expression":{"id":4655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4653,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11629:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4654,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11642:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11629:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4656,"nodeType":"ExpressionStatement","src":"11629:17:54"},{"expression":{"id":4667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4657,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11657:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4658,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11666:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4659,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11673:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11666:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4661,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11665:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4662,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11678:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11665:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4664,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11664:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"36","id":4665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11688:1:54","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"11664:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11657:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4668,"nodeType":"ExpressionStatement","src":"11657:32:54"},{"expression":{"id":4671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4669,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11699:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4670,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11712:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11699:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4672,"nodeType":"ExpressionStatement","src":"11699:17:54"},{"expression":{"id":4683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4673,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11727:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4674,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11736:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4675,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11743:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11736:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4677,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11735:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4678,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11748:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11735:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4680,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11734:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":4681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11758:1:54","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"11734:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11727:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4684,"nodeType":"ExpressionStatement","src":"11727:32:54"},{"expression":{"id":4687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4685,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11769:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4686,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11782:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11769:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4688,"nodeType":"ExpressionStatement","src":"11769:17:54"},{"expression":{"id":4699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4689,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11797:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4690,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11806:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4691,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11813:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11806:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11805:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4694,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11818:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11805:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4696,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11804:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"38","id":4697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11828:1:54","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11804:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11797:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4700,"nodeType":"ExpressionStatement","src":"11797:32:54"},{"expression":{"id":4703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4701,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11839:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4702,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11852:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11839:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4704,"nodeType":"ExpressionStatement","src":"11839:17:54"},{"expression":{"id":4715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4705,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11867:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4706,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11876:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4707,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11883:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11876:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4709,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11875:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4710,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11888:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11875:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4712,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11874:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":4713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11898:1:54","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"11874:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11867:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4716,"nodeType":"ExpressionStatement","src":"11867:32:54"},{"expression":{"id":4719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4717,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11909:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4718,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11922:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11909:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4720,"nodeType":"ExpressionStatement","src":"11909:17:54"},{"expression":{"id":4731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4721,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11937:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4722,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11946:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4723,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11953:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11946:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4725,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11945:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4726,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11958:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11945:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4728,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11944:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":4729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11968:2:54","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"11944:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11937:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4732,"nodeType":"ExpressionStatement","src":"11937:33:54"},{"expression":{"id":4735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4733,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11980:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4734,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11993:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11980:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4736,"nodeType":"ExpressionStatement","src":"11980:17:54"},{"expression":{"id":4747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4737,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"12008:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4738,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"12017:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4739,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"12024:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12017:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4741,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12016:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4742,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"12029:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12016:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4744,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12015:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":4745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12039:2:54","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"12015:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12008:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4748,"nodeType":"ExpressionStatement","src":"12008:33:54"},{"expression":{"id":4751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4749,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"12051:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4750,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"12064:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12051:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4752,"nodeType":"ExpressionStatement","src":"12051:17:54"},{"expression":{"id":4763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4753,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"12079:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4754,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"12088:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4755,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"12095:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12088:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12087:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4758,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"12100:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12087:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4760,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12086:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3132","id":4761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12110:2:54","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"src":"12086:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12079:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4764,"nodeType":"ExpressionStatement","src":"12079:33:54"},{"expression":{"id":4767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4765,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"12122:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4766,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"12135:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12122:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4768,"nodeType":"ExpressionStatement","src":"12122:17:54"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4769,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"12650:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4770,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"12660:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12650:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4772,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12649:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4773,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"12673:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12649:30:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4775,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12648:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4776,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"12683:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12648:42:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4778,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12647:44:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":4779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12694:3:54","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"12647:50:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4363,"id":4781,"nodeType":"Return","src":"12640:57:54"}]},"documentation":{"id":4357,"nodeType":"StructuredDocumentation","src":"7117:203:54","text":" @dev Natural exponentiation (e^x) with signed 18 decimal fixed point exponent.\n Reverts if `x` is smaller than MIN_NATURAL_EXPONENT, or larger than `MAX_NATURAL_EXPONENT`."},"id":4783,"implemented":true,"kind":"function","modifiers":[],"name":"exp","nodeType":"FunctionDefinition","parameters":{"id":4360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4359,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4783,"src":"7338:8:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4358,"name":"int256","nodeType":"ElementaryTypeName","src":"7338:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7337:10:54"},"returnParameters":{"id":4363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4362,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4783,"src":"7371:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4361,"name":"int256","nodeType":"ElementaryTypeName","src":"7371:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7370:8:54"},"scope":5412,"src":"7325:5379:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4854,"nodeType":"Block","src":"12888:753:54","statements":[{"assignments":[4794],"declarations":[{"constant":false,"id":4794,"mutability":"mutable","name":"logBase","nodeType":"VariableDeclaration","scope":4854,"src":"13118:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4793,"name":"int256","nodeType":"ElementaryTypeName","src":"13118:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4795,"nodeType":"VariableDeclarationStatement","src":"13118:14:54"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4796,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"13146:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4797,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"13166:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13146:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4799,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"13174:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4800,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4144,"src":"13181:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13174:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13146:52:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4818,"nodeType":"Block","src":"13253:53:54","statements":[{"expression":{"id":4816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4810,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4794,"src":"13267:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4812,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"13281:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4811,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5257,"src":"13277:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13277:9:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4814,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"13289:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13277:18:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13267:28:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4817,"nodeType":"ExpressionStatement","src":"13267:28:54"}]},"id":4819,"nodeType":"IfStatement","src":"13142:164:54","trueBody":{"id":4809,"nodeType":"Block","src":"13200:47:54","statements":[{"expression":{"id":4807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4803,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4794,"src":"13214:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4805,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"13231:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4804,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5411,"src":"13224:6:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13224:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13214:22:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4808,"nodeType":"ExpressionStatement","src":"13214:22:54"}]}},{"assignments":[4821],"declarations":[{"constant":false,"id":4821,"mutability":"mutable","name":"logArg","nodeType":"VariableDeclaration","scope":4854,"src":"13316:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4820,"name":"int256","nodeType":"ElementaryTypeName","src":"13316:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4822,"nodeType":"VariableDeclarationStatement","src":"13316:13:54"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4823,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"13343:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4824,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4786,"src":"13363:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13343:23:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4826,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4786,"src":"13370:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4827,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4144,"src":"13376:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13370:23:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13343:50:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4845,"nodeType":"Block","src":"13446:51:54","statements":[{"expression":{"id":4843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4837,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4821,"src":"13460:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4839,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4786,"src":"13473:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4838,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5257,"src":"13469:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13469:8:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4841,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"13480:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13469:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13460:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4844,"nodeType":"ExpressionStatement","src":"13460:26:54"}]},"id":4846,"nodeType":"IfStatement","src":"13339:158:54","trueBody":{"id":4836,"nodeType":"Block","src":"13395:45:54","statements":[{"expression":{"id":4834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4830,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4821,"src":"13409:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4832,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4786,"src":"13425:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4831,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5411,"src":"13418:6:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13418:11:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13409:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4835,"nodeType":"ExpressionStatement","src":"13409:20:54"}]}},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4847,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4821,"src":"13608:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4848,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"13617:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13608:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4850,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13607:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4851,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4794,"src":"13627:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13607:27:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4792,"id":4853,"nodeType":"Return","src":"13600:34:54"}]},"documentation":{"id":4784,"nodeType":"StructuredDocumentation","src":"12710:104:54","text":" @dev Logarithm (log(arg, base), with signed 18 decimal fixed point base and argument."},"id":4855,"implemented":true,"kind":"function","modifiers":[],"name":"log","nodeType":"FunctionDefinition","parameters":{"id":4789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4786,"mutability":"mutable","name":"arg","nodeType":"VariableDeclaration","scope":4855,"src":"12832:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4785,"name":"int256","nodeType":"ElementaryTypeName","src":"12832:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4788,"mutability":"mutable","name":"base","nodeType":"VariableDeclaration","scope":4855,"src":"12844:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4787,"name":"int256","nodeType":"ElementaryTypeName","src":"12844:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"12831:25:54"},"returnParameters":{"id":4792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4791,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4855,"src":"12880:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4790,"name":"int256","nodeType":"ElementaryTypeName","src":"12880:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"12879:8:54"},"scope":5412,"src":"12819:822:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4891,"nodeType":"Block","src":"13799:292:54","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4864,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4858,"src":"13901:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13905:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13901:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4867,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"13908:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":4868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1776,"src":"13908:20:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4863,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"13892:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13892:37:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4870,"nodeType":"ExpressionStatement","src":"13892:37:54"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4871,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"13943:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4872,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4858,"src":"13963:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13943:21:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4874,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4858,"src":"13968:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4875,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4144,"src":"13972:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13968:21:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13943:46:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4889,"nodeType":"Block","src":"14047:38:54","statements":[{"expression":{"arguments":[{"id":4886,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4858,"src":"14072:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4885,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5257,"src":"14068:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14068:6:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4862,"id":4888,"nodeType":"Return","src":"14061:13:54"}]},"id":4890,"nodeType":"IfStatement","src":"13939:146:54","trueBody":{"id":4884,"nodeType":"Block","src":"13991:50:54","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4879,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4858,"src":"14019:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4878,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5411,"src":"14012:6:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14012:9:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4881,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"14024:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14012:18:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4862,"id":4883,"nodeType":"Return","src":"14005:25:54"}]}}]},"documentation":{"id":4856,"nodeType":"StructuredDocumentation","src":"13647:94:54","text":" @dev Natural logarithm (ln(a)) with signed 18 decimal fixed point argument."},"id":4892,"implemented":true,"kind":"function","modifiers":[],"name":"ln","nodeType":"FunctionDefinition","parameters":{"id":4859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4858,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":4892,"src":"13758:8:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4857,"name":"int256","nodeType":"ElementaryTypeName","src":"13758:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"13757:10:54"},"returnParameters":{"id":4862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4861,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4892,"src":"13791:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4860,"name":"int256","nodeType":"ElementaryTypeName","src":"13791:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"13790:8:54"},"scope":5412,"src":"13746:345:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5256,"nodeType":"Block","src":"14258:4906:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4900,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"14272:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4901,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"14276:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14272:10:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4915,"nodeType":"IfStatement","src":"14268:382:54","trueBody":{"id":4914,"nodeType":"Block","src":"14284:366:54","statements":[{"expression":{"components":[{"id":4911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14611:27:54","subExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4904,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"14617:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4905,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"14626:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14617:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4907,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"14616:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4908,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"14636:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14616:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4903,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5257,"src":"14612:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14612:26:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4912,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14610:29:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4899,"id":4913,"nodeType":"Return","src":"14603:36:54"}]}},{"assignments":[4917],"declarations":[{"constant":false,"id":4917,"mutability":"mutable","name":"sum","nodeType":"VariableDeclaration","scope":5256,"src":"15975:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4916,"name":"int256","nodeType":"ElementaryTypeName","src":"15975:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4919,"initialValue":{"hexValue":"30","id":4918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15988:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15975:14:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4920,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16003:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4921,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4160,"src":"16008:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4922,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"16013:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16008:11:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16003:16:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4934,"nodeType":"IfStatement","src":"15999:114:54","trueBody":{"id":4933,"nodeType":"Block","src":"16021:92:54","statements":[{"expression":{"id":4927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4925,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16035:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":4926,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4160,"src":"16040:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16035:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4928,"nodeType":"ExpressionStatement","src":"16035:7:54"},{"expression":{"id":4931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4929,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16093:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4930,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4157,"src":"16100:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16093:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4932,"nodeType":"ExpressionStatement","src":"16093:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4935,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16127:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4936,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4166,"src":"16132:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4937,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"16137:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16132:11:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16127:16:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4949,"nodeType":"IfStatement","src":"16123:114:54","trueBody":{"id":4948,"nodeType":"Block","src":"16145:92:54","statements":[{"expression":{"id":4942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4940,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16159:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":4941,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4166,"src":"16164:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16159:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4943,"nodeType":"ExpressionStatement","src":"16159:7:54"},{"expression":{"id":4946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4944,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16217:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4945,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4163,"src":"16224:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16217:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4947,"nodeType":"ExpressionStatement","src":"16217:9:54"}]}},{"expression":{"id":4952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4950,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16368:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":4951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16375:3:54","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"16368:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4953,"nodeType":"ExpressionStatement","src":"16368:10:54"},{"expression":{"id":4956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4954,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16388:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":4955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16393:3:54","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"16388:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4957,"nodeType":"ExpressionStatement","src":"16388:8:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4958,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16523:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4959,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"16528:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16523:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4975,"nodeType":"IfStatement","src":"16519:82:54","trueBody":{"id":4974,"nodeType":"Block","src":"16532:69:54","statements":[{"expression":{"id":4968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4961,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16546:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4962,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16551:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4963,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"16555:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16551:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4965,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16550:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4966,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"16565:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16550:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16546:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4969,"nodeType":"ExpressionStatement","src":"16546:21:54"},{"expression":{"id":4972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4970,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16581:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4971,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4169,"src":"16588:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16581:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4973,"nodeType":"ExpressionStatement","src":"16581:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4976,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16615:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4977,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"16620:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16615:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4993,"nodeType":"IfStatement","src":"16611:82:54","trueBody":{"id":4992,"nodeType":"Block","src":"16624:69:54","statements":[{"expression":{"id":4986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4979,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16638:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4980,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16643:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4981,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"16647:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16643:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4983,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16642:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4984,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"16657:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16642:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16638:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4987,"nodeType":"ExpressionStatement","src":"16638:21:54"},{"expression":{"id":4990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4988,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16673:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4989,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4175,"src":"16680:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16673:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4991,"nodeType":"ExpressionStatement","src":"16673:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4994,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16707:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4995,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"16712:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16707:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5011,"nodeType":"IfStatement","src":"16703:82:54","trueBody":{"id":5010,"nodeType":"Block","src":"16716:69:54","statements":[{"expression":{"id":5004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4997,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16730:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4998,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16735:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4999,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"16739:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16735:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5001,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16734:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5002,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"16749:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16734:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16730:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5005,"nodeType":"ExpressionStatement","src":"16730:21:54"},{"expression":{"id":5008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5006,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16765:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5007,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4181,"src":"16772:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16765:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5009,"nodeType":"ExpressionStatement","src":"16765:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5012,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16799:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5013,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4190,"src":"16804:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16799:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5029,"nodeType":"IfStatement","src":"16795:82:54","trueBody":{"id":5028,"nodeType":"Block","src":"16808:69:54","statements":[{"expression":{"id":5022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5015,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16822:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5016,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16827:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5017,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"16831:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16827:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5019,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16826:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5020,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4190,"src":"16841:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16826:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16822:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5023,"nodeType":"ExpressionStatement","src":"16822:21:54"},{"expression":{"id":5026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5024,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16857:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5025,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4187,"src":"16864:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16857:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5027,"nodeType":"ExpressionStatement","src":"16857:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5030,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16891:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5031,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4196,"src":"16896:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16891:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5047,"nodeType":"IfStatement","src":"16887:82:54","trueBody":{"id":5046,"nodeType":"Block","src":"16900:69:54","statements":[{"expression":{"id":5040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5033,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16914:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5034,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16919:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5035,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"16923:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16919:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5037,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16918:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5038,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4196,"src":"16933:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16918:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16914:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5041,"nodeType":"ExpressionStatement","src":"16914:21:54"},{"expression":{"id":5044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5042,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16949:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5043,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4193,"src":"16956:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16949:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5045,"nodeType":"ExpressionStatement","src":"16949:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5048,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16983:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5049,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"16988:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16983:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5065,"nodeType":"IfStatement","src":"16979:82:54","trueBody":{"id":5064,"nodeType":"Block","src":"16992:69:54","statements":[{"expression":{"id":5058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5051,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17006:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5052,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17011:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5053,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17015:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17011:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5055,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17010:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5056,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"17025:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17010:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17006:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5059,"nodeType":"ExpressionStatement","src":"17006:21:54"},{"expression":{"id":5062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5060,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"17041:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5061,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4199,"src":"17048:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17041:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5063,"nodeType":"ExpressionStatement","src":"17041:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5066,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17075:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5067,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"17080:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17075:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5083,"nodeType":"IfStatement","src":"17071:82:54","trueBody":{"id":5082,"nodeType":"Block","src":"17084:69:54","statements":[{"expression":{"id":5076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5069,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17098:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5070,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17103:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5071,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17107:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17103:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5073,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17102:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5074,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"17117:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17102:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17098:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5077,"nodeType":"ExpressionStatement","src":"17098:21:54"},{"expression":{"id":5080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5078,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"17133:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5079,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"17140:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17133:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5081,"nodeType":"ExpressionStatement","src":"17133:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5084,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17167:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5085,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"17172:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17167:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5101,"nodeType":"IfStatement","src":"17163:82:54","trueBody":{"id":5100,"nodeType":"Block","src":"17176:69:54","statements":[{"expression":{"id":5094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5087,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17190:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5088,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17195:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5089,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17199:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17195:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5091,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17194:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5092,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"17209:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17194:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17190:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5095,"nodeType":"ExpressionStatement","src":"17190:21:54"},{"expression":{"id":5098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5096,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"17225:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5097,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4211,"src":"17232:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17225:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5099,"nodeType":"ExpressionStatement","src":"17225:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5102,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17259:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5103,"name":"a10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4220,"src":"17264:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17259:8:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5119,"nodeType":"IfStatement","src":"17255:85:54","trueBody":{"id":5118,"nodeType":"Block","src":"17269:71:54","statements":[{"expression":{"id":5112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5105,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17283:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5106,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17288:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5107,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17292:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17288:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5109,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17287:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5110,"name":"a10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4220,"src":"17302:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17287:18:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17283:22:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5113,"nodeType":"ExpressionStatement","src":"17283:22:54"},{"expression":{"id":5116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5114,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"17319:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5115,"name":"x10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4217,"src":"17326:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17319:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5117,"nodeType":"ExpressionStatement","src":"17319:10:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5120,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17354:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5121,"name":"a11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4226,"src":"17359:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17354:8:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5137,"nodeType":"IfStatement","src":"17350:85:54","trueBody":{"id":5136,"nodeType":"Block","src":"17364:71:54","statements":[{"expression":{"id":5130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5123,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17378:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5124,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17383:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5125,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17387:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17383:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5127,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17382:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5128,"name":"a11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4226,"src":"17397:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17382:18:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17378:22:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5131,"nodeType":"ExpressionStatement","src":"17378:22:54"},{"expression":{"id":5134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5132,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"17414:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5133,"name":"x11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4223,"src":"17421:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17414:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5135,"nodeType":"ExpressionStatement","src":"17414:10:54"}]}},{"assignments":[5139],"declarations":[{"constant":false,"id":5139,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":5256,"src":"17937:8:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5138,"name":"int256","nodeType":"ElementaryTypeName","src":"17937:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5152,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5140,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17950:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5141,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17954:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17950:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17949:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5144,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17964:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17949:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5146,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17948:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5147,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17975:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5148,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17979:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17975:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5150,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17974:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17948:38:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"17937:49:54"},{"assignments":[5154],"declarations":[{"constant":false,"id":5154,"mutability":"mutable","name":"z_squared","nodeType":"VariableDeclaration","scope":5256,"src":"17996:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5153,"name":"int256","nodeType":"ElementaryTypeName","src":"17996:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5161,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5155,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5139,"src":"18016:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5156,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5139,"src":"18020:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18016:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5158,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18015:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5159,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"18025:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18015:16:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"17996:35:54"},{"assignments":[5163],"declarations":[{"constant":false,"id":5163,"mutability":"mutable","name":"num","nodeType":"VariableDeclaration","scope":5256,"src":"18112:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5162,"name":"int256","nodeType":"ElementaryTypeName","src":"18112:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5165,"initialValue":{"id":5164,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5139,"src":"18125:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"18112:14:54"},{"assignments":[5167],"declarations":[{"constant":false,"id":5167,"mutability":"mutable","name":"seriesSum","nodeType":"VariableDeclaration","scope":5256,"src":"18240:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5166,"name":"int256","nodeType":"ElementaryTypeName","src":"18240:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5169,"initialValue":{"id":5168,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18259:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"18240:22:54"},{"expression":{"id":5177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5170,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18333:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5171,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18340:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5172,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5154,"src":"18346:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18340:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5174,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18339:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5175,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"18359:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18339:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18333:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5178,"nodeType":"ExpressionStatement","src":"18333:32:54"},{"expression":{"id":5183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5179,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"18375:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5180,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18388:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":5181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18394:1:54","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"18388:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18375:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5184,"nodeType":"ExpressionStatement","src":"18375:20:54"},{"expression":{"id":5192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5185,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18406:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5186,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18413:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5187,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5154,"src":"18419:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18413:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18412:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5190,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"18432:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18412:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18406:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5193,"nodeType":"ExpressionStatement","src":"18406:32:54"},{"expression":{"id":5198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5194,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"18448:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5195,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18461:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":5196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18467:1:54","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"18461:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18448:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5199,"nodeType":"ExpressionStatement","src":"18448:20:54"},{"expression":{"id":5207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5200,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18479:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5201,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18486:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5202,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5154,"src":"18492:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18486:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5204,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18485:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5205,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"18505:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18485:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18479:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5208,"nodeType":"ExpressionStatement","src":"18479:32:54"},{"expression":{"id":5213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5209,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"18521:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5210,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18534:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":5211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18540:1:54","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"18534:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18521:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5214,"nodeType":"ExpressionStatement","src":"18521:20:54"},{"expression":{"id":5222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5215,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18552:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5216,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18559:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5217,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5154,"src":"18565:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18559:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5219,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18558:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5220,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"18578:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18558:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18552:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5223,"nodeType":"ExpressionStatement","src":"18552:32:54"},{"expression":{"id":5228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5224,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"18594:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5225,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18607:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":5226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18613:1:54","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"18607:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18594:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5229,"nodeType":"ExpressionStatement","src":"18594:20:54"},{"expression":{"id":5237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5230,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18625:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5231,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18632:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5232,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5154,"src":"18638:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18632:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5234,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18631:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5235,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"18651:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18631:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18625:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5238,"nodeType":"ExpressionStatement","src":"18625:32:54"},{"expression":{"id":5243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5239,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"18667:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5240,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18680:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":5241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18686:2:54","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"18680:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18667:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5244,"nodeType":"ExpressionStatement","src":"18667:21:54"},{"expression":{"id":5247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5245,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"18847:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"32","id":5246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18860:1:54","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"18847:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5248,"nodeType":"ExpressionStatement","src":"18847:14:54"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5249,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"19135:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5250,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"19141:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19135:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5252,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19134:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":5253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19154:3:54","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"19134:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4899,"id":5255,"nodeType":"Return","src":"19127:30:54"}]},"documentation":{"id":4893,"nodeType":"StructuredDocumentation","src":"14097:103:54","text":" @dev Internal natural logarithm (ln(a)) with signed 18 decimal fixed point argument."},"id":5257,"implemented":true,"kind":"function","modifiers":[],"name":"_ln","nodeType":"FunctionDefinition","parameters":{"id":4896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4895,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5257,"src":"14218:8:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4894,"name":"int256","nodeType":"ElementaryTypeName","src":"14218:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"14217:10:54"},"returnParameters":{"id":4899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4898,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5257,"src":"14250:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4897,"name":"int256","nodeType":"ElementaryTypeName","src":"14250:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"14249:8:54"},"scope":5412,"src":"14205:4959:54","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":5410,"nodeType":"Block","src":"19486:1658:54","statements":[{"expression":{"id":5267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5265,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5260,"src":"19700:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"id":5266,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"19705:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19700:11:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5268,"nodeType":"ExpressionStatement","src":"19700:11:54"},{"assignments":[5270],"declarations":[{"constant":false,"id":5270,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":5410,"src":"20072:8:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5269,"name":"int256","nodeType":"ElementaryTypeName","src":"20072:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5283,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5271,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5260,"src":"20085:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5272,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20089:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20085:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5274,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20084:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5275,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20099:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20084:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5277,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20083:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5278,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5260,"src":"20110:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5279,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20114:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20110:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5281,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20109:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20083:38:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20072:49:54"},{"assignments":[5285],"declarations":[{"constant":false,"id":5285,"mutability":"mutable","name":"z_squared","nodeType":"VariableDeclaration","scope":5410,"src":"20131:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5284,"name":"int256","nodeType":"ElementaryTypeName","src":"20131:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5292,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5286,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5270,"src":"20151:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5287,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5270,"src":"20155:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20151:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5289,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20150:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5290,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20160:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20150:16:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20131:35:54"},{"assignments":[5294],"declarations":[{"constant":false,"id":5294,"mutability":"mutable","name":"num","nodeType":"VariableDeclaration","scope":5410,"src":"20247:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5293,"name":"int256","nodeType":"ElementaryTypeName","src":"20247:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5296,"initialValue":{"id":5295,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5270,"src":"20260:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20247:14:54"},{"assignments":[5298],"declarations":[{"constant":false,"id":5298,"mutability":"mutable","name":"seriesSum","nodeType":"VariableDeclaration","scope":5410,"src":"20375:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5297,"name":"int256","nodeType":"ElementaryTypeName","src":"20375:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5300,"initialValue":{"id":5299,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20394:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20375:22:54"},{"expression":{"id":5308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5301,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20468:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5302,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20475:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5303,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"20481:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20475:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5305,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20474:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5306,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20494:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20474:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20468:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5309,"nodeType":"ExpressionStatement","src":"20468:32:54"},{"expression":{"id":5314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5310,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"20510:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5311,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20523:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":5312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20529:1:54","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"20523:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20510:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5315,"nodeType":"ExpressionStatement","src":"20510:20:54"},{"expression":{"id":5323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5316,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20541:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5317,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20548:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5318,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"20554:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20548:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5320,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20547:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5321,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20567:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20547:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20541:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5324,"nodeType":"ExpressionStatement","src":"20541:32:54"},{"expression":{"id":5329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5325,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"20583:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5326,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20596:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":5327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20602:1:54","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"20596:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20583:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5330,"nodeType":"ExpressionStatement","src":"20583:20:54"},{"expression":{"id":5338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5331,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20614:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5332,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20621:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5333,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"20627:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20621:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5335,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20620:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5336,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20640:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20620:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20614:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5339,"nodeType":"ExpressionStatement","src":"20614:32:54"},{"expression":{"id":5344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5340,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"20656:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5341,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20669:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":5342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20675:1:54","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"20669:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20656:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5345,"nodeType":"ExpressionStatement","src":"20656:20:54"},{"expression":{"id":5353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5346,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20687:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5347,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20694:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5348,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"20700:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20694:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5350,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20693:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5351,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20713:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20693:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20687:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5354,"nodeType":"ExpressionStatement","src":"20687:32:54"},{"expression":{"id":5359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5355,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"20729:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5356,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20742:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":5357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20748:1:54","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"20742:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20729:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5360,"nodeType":"ExpressionStatement","src":"20729:20:54"},{"expression":{"id":5368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5361,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20760:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5362,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20767:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5363,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"20773:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20767:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5365,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20766:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5366,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20786:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20766:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20760:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5369,"nodeType":"ExpressionStatement","src":"20760:32:54"},{"expression":{"id":5374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5370,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"20802:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5371,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20815:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":5372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20821:2:54","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"20815:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20802:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5375,"nodeType":"ExpressionStatement","src":"20802:21:54"},{"expression":{"id":5383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5376,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20834:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5377,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20841:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5378,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"20847:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20841:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5380,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20840:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5381,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20860:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20840:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20834:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5384,"nodeType":"ExpressionStatement","src":"20834:32:54"},{"expression":{"id":5389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5385,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"20876:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5386,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20889:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3133","id":5387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20895:2:54","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"13"},"src":"20889:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20876:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5390,"nodeType":"ExpressionStatement","src":"20876:21:54"},{"expression":{"id":5398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5391,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20908:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5392,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20915:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5393,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"20921:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20915:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5395,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20914:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5396,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20934:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20914:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20908:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5399,"nodeType":"ExpressionStatement","src":"20908:32:54"},{"expression":{"id":5404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5400,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"20950:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5401,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20963:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3135","id":5402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20969:2:54","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"20963:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20950:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5405,"nodeType":"ExpressionStatement","src":"20950:21:54"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5406,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"21124:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":5407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21136:1:54","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"21124:13:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5264,"id":5409,"nodeType":"Return","src":"21117:20:54"}]},"documentation":{"id":5258,"nodeType":"StructuredDocumentation","src":"19170:255:54","text":" @dev Intrnal high precision (36 decimal places) natural logarithm (ln(x)) with signed 18 decimal fixed point argument,\n for x close to one.\n Should only be used if x is between LN_36_LOWER_BOUND and LN_36_UPPER_BOUND."},"id":5411,"implemented":true,"kind":"function","modifiers":[],"name":"_ln_36","nodeType":"FunctionDefinition","parameters":{"id":5261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5260,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":5411,"src":"19446:8:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5259,"name":"int256","nodeType":"ElementaryTypeName","src":"19446:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19445:10:54"},"returnParameters":{"id":5264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5263,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5411,"src":"19478:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5262,"name":"int256","nodeType":"ElementaryTypeName","src":"19478:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19477:8:54"},"scope":5412,"src":"19430:1714:54","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":5413,"src":"1681:19465:54"}],"src":"1094:20053:54"},"id":54},"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","exportedSymbols":{"Math":[5683]},"id":5684,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5414,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:55"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":5415,"nodeType":"ImportDirective","scope":5684,"sourceUnit":2249,"src":"58:90:55","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5416,"nodeType":"StructuredDocumentation","src":"150:139:55","text":" @dev Wrappers over Solidity's arithmetic operations with added overflow checks.\n Adapted from OpenZeppelin's SafeMath library."},"fullyImplemented":true,"id":5683,"linearizedBaseContracts":[5683],"name":"Math","nodeType":"ContractDefinition","nodes":[{"body":{"id":5425,"nodeType":"Block","src":"490:188:55","statements":[{"AST":{"nodeType":"YulBlock","src":"588:84:55","statements":[{"nodeType":"YulVariableDeclaration","src":"602:20:55","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"615:3:55","type":"","value":"255"},{"name":"a","nodeType":"YulIdentifier","src":"620:1:55"}],"functionName":{"name":"sar","nodeType":"YulIdentifier","src":"611:3:55"},"nodeType":"YulFunctionCall","src":"611:11:55"},"variables":[{"name":"s","nodeType":"YulTypedName","src":"606:1:55","type":""}]},{"nodeType":"YulAssignment","src":"635:27:55","value":{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"653:1:55"},{"name":"s","nodeType":"YulIdentifier","src":"656:1:55"}],"functionName":{"name":"xor","nodeType":"YulIdentifier","src":"649:3:55"},"nodeType":"YulFunctionCall","src":"649:9:55"},{"name":"s","nodeType":"YulIdentifier","src":"660:1:55"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"645:3:55"},"nodeType":"YulFunctionCall","src":"645:17:55"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"635:6:55"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5419,"isOffset":false,"isSlot":false,"src":"620:1:55","valueSize":1},{"declaration":5419,"isOffset":false,"isSlot":false,"src":"653:1:55","valueSize":1},{"declaration":5422,"isOffset":false,"isSlot":false,"src":"635:6:55","valueSize":1}],"id":5424,"nodeType":"InlineAssembly","src":"579:93:55"}]},"documentation":{"id":5417,"nodeType":"StructuredDocumentation","src":"352:71:55","text":" @dev Returns the absolute value of a signed integer."},"id":5426,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nodeType":"FunctionDefinition","parameters":{"id":5420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5419,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5426,"src":"441:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5418,"name":"int256","nodeType":"ElementaryTypeName","src":"441:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"440:10:55"},"returnParameters":{"id":5423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5422,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":5426,"src":"474:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5421,"name":"uint256","nodeType":"ElementaryTypeName","src":"474:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"473:16:55"},"scope":5683,"src":"428:250:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5452,"nodeType":"Block","src":"861:99:55","statements":[{"assignments":[5437],"declarations":[{"constant":false,"id":5437,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5452,"src":"871:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5436,"name":"uint256","nodeType":"ElementaryTypeName","src":"871:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5441,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5438,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5429,"src":"883:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5439,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5431,"src":"887:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"883:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"871:17:55"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5443,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5437,"src":"907:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5444,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5429,"src":"912:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"907:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5446,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"915:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1746,"src":"915:19:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5442,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"898:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"898:37:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5449,"nodeType":"ExpressionStatement","src":"898:37:55"},{"expression":{"id":5450,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5437,"src":"952:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5435,"id":5451,"nodeType":"Return","src":"945:8:55"}]},"documentation":{"id":5427,"nodeType":"StructuredDocumentation","src":"684:105:55","text":" @dev Returns the addition of two unsigned integers of 256 bits, reverting on overflow."},"id":5453,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":5432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5429,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5453,"src":"807:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5428,"name":"uint256","nodeType":"ElementaryTypeName","src":"807:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5431,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5453,"src":"818:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5430,"name":"uint256","nodeType":"ElementaryTypeName","src":"818:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"806:22:55"},"returnParameters":{"id":5435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5434,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5453,"src":"852:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5433,"name":"uint256","nodeType":"ElementaryTypeName","src":"852:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"851:9:55"},"scope":5683,"src":"794:166:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5493,"nodeType":"Block","src":"1126:130:55","statements":[{"assignments":[5464],"declarations":[{"constant":false,"id":5464,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5493,"src":"1136:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5463,"name":"int256","nodeType":"ElementaryTypeName","src":"1136:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5468,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5465,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5456,"src":"1147:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5466,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5458,"src":"1151:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1147:5:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1136:16:55"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5470,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5458,"src":"1172:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":5471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1177:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1172:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5473,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5464,"src":"1182:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5474,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5456,"src":"1187:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1182:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1172:16:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5477,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1171:18:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5478,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5458,"src":"1194:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":5479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1198:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1194:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5481,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5464,"src":"1203:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5482,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5456,"src":"1207:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1203:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1194:14:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5485,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1193:16:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1171:38:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5487,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1211:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1746,"src":"1211:19:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5469,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1162:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1162:69:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5490,"nodeType":"ExpressionStatement","src":"1162:69:55"},{"expression":{"id":5491,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5464,"src":"1248:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5462,"id":5492,"nodeType":"Return","src":"1241:8:55"}]},"documentation":{"id":5454,"nodeType":"StructuredDocumentation","src":"966:91:55","text":" @dev Returns the addition of two signed integers, reverting on overflow."},"id":5494,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":5459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5456,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5494,"src":"1075:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5455,"name":"int256","nodeType":"ElementaryTypeName","src":"1075:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5458,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5494,"src":"1085:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5457,"name":"int256","nodeType":"ElementaryTypeName","src":"1085:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1074:20:55"},"returnParameters":{"id":5462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5461,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5494,"src":"1118:6:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5460,"name":"int256","nodeType":"ElementaryTypeName","src":"1118:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1117:8:55"},"scope":5683,"src":"1062:194:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5520,"nodeType":"Block","src":"1442:99:55","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5505,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5499,"src":"1461:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5506,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5497,"src":"1466:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1461:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5508,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1469:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1749,"src":"1469:19:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5504,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1452:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1452:37:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5511,"nodeType":"ExpressionStatement","src":"1452:37:55"},{"assignments":[5513],"declarations":[{"constant":false,"id":5513,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5520,"src":"1499:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5512,"name":"uint256","nodeType":"ElementaryTypeName","src":"1499:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5517,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5514,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5497,"src":"1511:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5515,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5499,"src":"1515:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1511:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1499:17:55"},{"expression":{"id":5518,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5513,"src":"1533:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5503,"id":5519,"nodeType":"Return","src":"1526:8:55"}]},"documentation":{"id":5495,"nodeType":"StructuredDocumentation","src":"1262:108:55","text":" @dev Returns the subtraction of two unsigned integers of 256 bits, reverting on overflow."},"id":5521,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":5500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5497,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5521,"src":"1388:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5496,"name":"uint256","nodeType":"ElementaryTypeName","src":"1388:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5499,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5521,"src":"1399:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5498,"name":"uint256","nodeType":"ElementaryTypeName","src":"1399:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1387:22:55"},"returnParameters":{"id":5503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5502,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5521,"src":"1433:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5501,"name":"uint256","nodeType":"ElementaryTypeName","src":"1433:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1432:9:55"},"scope":5683,"src":"1375:166:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5561,"nodeType":"Block","src":"1710:130:55","statements":[{"assignments":[5532],"declarations":[{"constant":false,"id":5532,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5561,"src":"1720:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5531,"name":"int256","nodeType":"ElementaryTypeName","src":"1720:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5536,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5533,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5524,"src":"1731:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5534,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5526,"src":"1735:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1731:5:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1720:16:55"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5538,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5526,"src":"1756:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":5539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1761:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1756:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5541,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5532,"src":"1766:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5542,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5524,"src":"1771:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1766:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1756:16:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5545,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1755:18:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5546,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5526,"src":"1778:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":5547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1782:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1778:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5549,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5532,"src":"1787:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5550,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5524,"src":"1791:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1787:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1778:14:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5553,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1777:16:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1755:38:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5555,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1795:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1749,"src":"1795:19:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5537,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1746:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1746:69:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5558,"nodeType":"ExpressionStatement","src":"1746:69:55"},{"expression":{"id":5559,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5532,"src":"1832:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5530,"id":5560,"nodeType":"Return","src":"1825:8:55"}]},"documentation":{"id":5522,"nodeType":"StructuredDocumentation","src":"1547:94:55","text":" @dev Returns the subtraction of two signed integers, reverting on overflow."},"id":5562,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":5527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5524,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5562,"src":"1659:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5523,"name":"int256","nodeType":"ElementaryTypeName","src":"1659:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5526,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5562,"src":"1669:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5525,"name":"int256","nodeType":"ElementaryTypeName","src":"1669:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1658:20:55"},"returnParameters":{"id":5530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5529,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5562,"src":"1702:6:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5528,"name":"int256","nodeType":"ElementaryTypeName","src":"1702:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1701:8:55"},"scope":5683,"src":"1646:194:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5573,"nodeType":"Block","src":"1996:154:55","statements":[{"AST":{"nodeType":"YulBlock","src":"2078:66:55","statements":[{"nodeType":"YulAssignment","src":"2092:42:55","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2106:1:55"},{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2117:1:55"},{"name":"b","nodeType":"YulIdentifier","src":"2120:1:55"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2113:3:55"},"nodeType":"YulFunctionCall","src":"2113:9:55"},{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2127:1:55"},{"name":"b","nodeType":"YulIdentifier","src":"2130:1:55"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2124:2:55"},"nodeType":"YulFunctionCall","src":"2124:8:55"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2109:3:55"},"nodeType":"YulFunctionCall","src":"2109:24:55"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2102:3:55"},"nodeType":"YulFunctionCall","src":"2102:32:55"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2092:6:55"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5565,"isOffset":false,"isSlot":false,"src":"2106:1:55","valueSize":1},{"declaration":5565,"isOffset":false,"isSlot":false,"src":"2117:1:55","valueSize":1},{"declaration":5565,"isOffset":false,"isSlot":false,"src":"2127:1:55","valueSize":1},{"declaration":5567,"isOffset":false,"isSlot":false,"src":"2120:1:55","valueSize":1},{"declaration":5567,"isOffset":false,"isSlot":false,"src":"2130:1:55","valueSize":1},{"declaration":5570,"isOffset":false,"isSlot":false,"src":"2092:6:55","valueSize":1}],"id":5572,"nodeType":"InlineAssembly","src":"2069:75:55"}]},"documentation":{"id":5563,"nodeType":"StructuredDocumentation","src":"1846:71:55","text":" @dev Returns the largest of two numbers of 256 bits."},"id":5574,"implemented":true,"kind":"function","modifiers":[],"name":"max","nodeType":"FunctionDefinition","parameters":{"id":5568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5565,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5574,"src":"1935:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5564,"name":"uint256","nodeType":"ElementaryTypeName","src":"1935:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5567,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5574,"src":"1946:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5566,"name":"uint256","nodeType":"ElementaryTypeName","src":"1946:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1934:22:55"},"returnParameters":{"id":5571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5570,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":5574,"src":"1980:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5569,"name":"uint256","nodeType":"ElementaryTypeName","src":"1980:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1979:16:55"},"scope":5683,"src":"1922:228:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5585,"nodeType":"Block","src":"2307:143:55","statements":[{"AST":{"nodeType":"YulBlock","src":"2378:66:55","statements":[{"nodeType":"YulAssignment","src":"2392:42:55","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2406:1:55"},{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2417:1:55"},{"name":"b","nodeType":"YulIdentifier","src":"2420:1:55"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2413:3:55"},"nodeType":"YulFunctionCall","src":"2413:9:55"},{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2427:1:55"},{"name":"b","nodeType":"YulIdentifier","src":"2430:1:55"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2424:2:55"},"nodeType":"YulFunctionCall","src":"2424:8:55"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2409:3:55"},"nodeType":"YulFunctionCall","src":"2409:24:55"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2402:3:55"},"nodeType":"YulFunctionCall","src":"2402:32:55"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2392:6:55"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5577,"isOffset":false,"isSlot":false,"src":"2406:1:55","valueSize":1},{"declaration":5577,"isOffset":false,"isSlot":false,"src":"2417:1:55","valueSize":1},{"declaration":5577,"isOffset":false,"isSlot":false,"src":"2427:1:55","valueSize":1},{"declaration":5579,"isOffset":false,"isSlot":false,"src":"2420:1:55","valueSize":1},{"declaration":5579,"isOffset":false,"isSlot":false,"src":"2430:1:55","valueSize":1},{"declaration":5582,"isOffset":false,"isSlot":false,"src":"2392:6:55","valueSize":1}],"id":5584,"nodeType":"InlineAssembly","src":"2369:75:55"}]},"documentation":{"id":5575,"nodeType":"StructuredDocumentation","src":"2156:72:55","text":" @dev Returns the smallest of two numbers of 256 bits."},"id":5586,"implemented":true,"kind":"function","modifiers":[],"name":"min","nodeType":"FunctionDefinition","parameters":{"id":5580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5577,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5586,"src":"2246:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5576,"name":"uint256","nodeType":"ElementaryTypeName","src":"2246:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5579,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5586,"src":"2257:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5578,"name":"uint256","nodeType":"ElementaryTypeName","src":"2257:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2245:22:55"},"returnParameters":{"id":5583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5582,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":5586,"src":"2291:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5581,"name":"uint256","nodeType":"ElementaryTypeName","src":"2291:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:16:55"},"scope":5683,"src":"2233:217:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5617,"nodeType":"Block","src":"2523:113:55","statements":[{"assignments":[5596],"declarations":[{"constant":false,"id":5596,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5617,"src":"2533:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5595,"name":"uint256","nodeType":"ElementaryTypeName","src":"2533:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5600,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5597,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5588,"src":"2545:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5598,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5590,"src":"2549:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2545:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2533:17:55"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5602,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5588,"src":"2569:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2574:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2569:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5605,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5596,"src":"2579:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5606,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5588,"src":"2583:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2579:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5608,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5590,"src":"2588:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2579:10:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2569:20:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5611,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2591:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MUL_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1755,"src":"2591:19:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5601,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2560:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2560:51:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5614,"nodeType":"ExpressionStatement","src":"2560:51:55"},{"expression":{"id":5615,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5596,"src":"2628:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5594,"id":5616,"nodeType":"Return","src":"2621:8:55"}]},"id":5618,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":5591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5588,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5618,"src":"2469:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5587,"name":"uint256","nodeType":"ElementaryTypeName","src":"2469:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5590,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5618,"src":"2480:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5589,"name":"uint256","nodeType":"ElementaryTypeName","src":"2480:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2468:22:55"},"returnParameters":{"id":5594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5593,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5618,"src":"2514:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5592,"name":"uint256","nodeType":"ElementaryTypeName","src":"2514:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2513:9:55"},"scope":5683,"src":"2456:180:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5640,"nodeType":"Block","src":"2753:61:55","statements":[{"expression":{"condition":{"id":5629,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5624,"src":"2770:7:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":5635,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5620,"src":"2802:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5636,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5622,"src":"2805:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5634,"name":"divDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5663,"src":"2794:7:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2794:13:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2770:37:55","trueExpression":{"arguments":[{"id":5631,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5620,"src":"2786:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5632,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5622,"src":"2789:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5630,"name":"divUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5682,"src":"2780:5:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2780:11:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5628,"id":5639,"nodeType":"Return","src":"2763:44:55"}]},"id":5641,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":5625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5620,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5641,"src":"2664:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5619,"name":"uint256","nodeType":"ElementaryTypeName","src":"2664:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5622,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5641,"src":"2683:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5621,"name":"uint256","nodeType":"ElementaryTypeName","src":"2683:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5624,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":5641,"src":"2702:12:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5623,"name":"bool","nodeType":"ElementaryTypeName","src":"2702:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2654:66:55"},"returnParameters":{"id":5628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5627,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5641,"src":"2744:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5626,"name":"uint256","nodeType":"ElementaryTypeName","src":"2744:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2743:9:55"},"scope":5683,"src":"2642:172:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5662,"nodeType":"Block","src":"2891:77:55","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5651,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5645,"src":"2910:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2915:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2910:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5654,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2918:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1758,"src":"2918:20:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5650,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2901:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2901:38:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5657,"nodeType":"ExpressionStatement","src":"2901:38:55"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5658,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5643,"src":"2956:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5659,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5645,"src":"2960:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2956:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5649,"id":5661,"nodeType":"Return","src":"2949:12:55"}]},"id":5663,"implemented":true,"kind":"function","modifiers":[],"name":"divDown","nodeType":"FunctionDefinition","parameters":{"id":5646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5643,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5663,"src":"2837:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5642,"name":"uint256","nodeType":"ElementaryTypeName","src":"2837:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5645,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5663,"src":"2848:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5644,"name":"uint256","nodeType":"ElementaryTypeName","src":"2848:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2836:22:55"},"returnParameters":{"id":5649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5648,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5663,"src":"2882:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5647,"name":"uint256","nodeType":"ElementaryTypeName","src":"2882:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2881:9:55"},"scope":5683,"src":"2820:148:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5681,"nodeType":"Block","src":"3050:233:55","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5673,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"3069:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3074:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3069:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5676,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"3077:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1758,"src":"3077:20:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5672,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"3060:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3060:38:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5679,"nodeType":"ExpressionStatement","src":"3060:38:55"},{"AST":{"nodeType":"YulBlock","src":"3194:83:55","statements":[{"nodeType":"YulAssignment","src":"3208:59:55","value":{"arguments":[{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"3236:1:55"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3229:6:55"},"nodeType":"YulFunctionCall","src":"3229:9:55"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3222:6:55"},"nodeType":"YulFunctionCall","src":"3222:17:55"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3245:1:55","type":"","value":"1"},{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"3256:1:55"},{"kind":"number","nodeType":"YulLiteral","src":"3259:1:55","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3252:3:55"},"nodeType":"YulFunctionCall","src":"3252:9:55"},{"name":"b","nodeType":"YulIdentifier","src":"3263:1:55"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3248:3:55"},"nodeType":"YulFunctionCall","src":"3248:17:55"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3241:3:55"},"nodeType":"YulFunctionCall","src":"3241:25:55"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3218:3:55"},"nodeType":"YulFunctionCall","src":"3218:49:55"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"3208:6:55"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5665,"isOffset":false,"isSlot":false,"src":"3236:1:55","valueSize":1},{"declaration":5665,"isOffset":false,"isSlot":false,"src":"3256:1:55","valueSize":1},{"declaration":5667,"isOffset":false,"isSlot":false,"src":"3263:1:55","valueSize":1},{"declaration":5670,"isOffset":false,"isSlot":false,"src":"3208:6:55","valueSize":1}],"id":5680,"nodeType":"InlineAssembly","src":"3185:92:55"}]},"id":5682,"implemented":true,"kind":"function","modifiers":[],"name":"divUp","nodeType":"FunctionDefinition","parameters":{"id":5668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5665,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5682,"src":"2989:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5664,"name":"uint256","nodeType":"ElementaryTypeName","src":"2989:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5667,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5682,"src":"3000:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5666,"name":"uint256","nodeType":"ElementaryTypeName","src":"3000:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2988:22:55"},"returnParameters":{"id":5671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5670,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":5682,"src":"3034:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5669,"name":"uint256","nodeType":"ElementaryTypeName","src":"3034:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3033:16:55"},"scope":5683,"src":"2974:309:55","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5684,"src":"290:2995:55"}],"src":"33:3253:55"},"id":55},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","exportedSymbols":{"Address":[5850]},"id":5851,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5685,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"254:23:56"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":5686,"nodeType":"ImportDirective","scope":5851,"sourceUnit":2249,"src":"279:90:56","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5687,"nodeType":"StructuredDocumentation","src":"371:67:56","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":5850,"linearizedBaseContracts":[5850],"name":"Address","nodeType":"ContractDefinition","nodes":[{"body":{"id":5703,"nodeType":"Block","src":"1097:367:56","statements":[{"assignments":[5696],"declarations":[{"constant":false,"id":5696,"mutability":"mutable","name":"size","nodeType":"VariableDeclaration","scope":5703,"src":"1294:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5695,"name":"uint256","nodeType":"ElementaryTypeName","src":"1294:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5697,"nodeType":"VariableDeclarationStatement","src":"1294:12:56"},{"AST":{"nodeType":"YulBlock","src":"1381:52:56","statements":[{"nodeType":"YulAssignment","src":"1395:28:56","value":{"arguments":[{"name":"account","nodeType":"YulIdentifier","src":"1415:7:56"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"1403:11:56"},"nodeType":"YulFunctionCall","src":"1403:20:56"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1395:4:56"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5690,"isOffset":false,"isSlot":false,"src":"1415:7:56","valueSize":1},{"declaration":5696,"isOffset":false,"isSlot":false,"src":"1395:4:56","valueSize":1}],"id":5698,"nodeType":"InlineAssembly","src":"1372:61:56"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5699,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5696,"src":"1449:4:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1456:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1449:8:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5694,"id":5702,"nodeType":"Return","src":"1442:15:56"}]},"documentation":{"id":5688,"nodeType":"StructuredDocumentation","src":"461:565:56","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="},"id":5704,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nodeType":"FunctionDefinition","parameters":{"id":5691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5690,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":5704,"src":"1051:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5689,"name":"address","nodeType":"ElementaryTypeName","src":"1051:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1050:17:56"},"returnParameters":{"id":5694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5693,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5704,"src":"1091:4:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5692,"name":"bool","nodeType":"ElementaryTypeName","src":"1091:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1090:6:56"},"scope":5850,"src":"1031:433:56","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5739,"nodeType":"Block","src":"2492:298:56","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5715,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2519:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$5850","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$5850","typeString":"library Address"}],"id":5714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2511:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5713,"name":"address","nodeType":"ElementaryTypeName","src":"2511:7:56","typeDescriptions":{}}},"id":5716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2511:13:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2511:21:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5718,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5709,"src":"2536:6:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2511:31:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5720,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2544:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADDRESS_INSUFFICIENT_BALANCE","nodeType":"MemberAccess","referencedDeclaration":2064,"src":"2544:35:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5712,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2502:8:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2502:78:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5723,"nodeType":"ExpressionStatement","src":"2502:78:56"},{"assignments":[5725,null],"declarations":[{"constant":false,"id":5725,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":5739,"src":"2669:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5724,"name":"bool","nodeType":"ElementaryTypeName","src":"2669:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":5732,"initialValue":{"arguments":[{"hexValue":"","id":5730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2719:2:56","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":5726,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"2687:9:56","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":5727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2687:14:56","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":5728,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5709,"src":"2710:6:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2687:31:56","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2687:35:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2668:54:56"},{"expression":{"arguments":[{"id":5734,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5725,"src":"2741:7:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5735,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2750:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADDRESS_CANNOT_SEND_VALUE","nodeType":"MemberAccess","referencedDeclaration":2067,"src":"2750:32:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5733,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2732:8:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2732:51:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5738,"nodeType":"ExpressionStatement","src":"2732:51:56"}]},"documentation":{"id":5705,"nodeType":"StructuredDocumentation","src":"1510:906:56","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":5740,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nodeType":"FunctionDefinition","parameters":{"id":5710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5707,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":5740,"src":"2440:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":5706,"name":"address","nodeType":"ElementaryTypeName","src":"2440:15:56","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":5709,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":5740,"src":"2467:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5708,"name":"uint256","nodeType":"ElementaryTypeName","src":"2467:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2439:43:56"},"returnParameters":{"id":5711,"nodeType":"ParameterList","parameters":[],"src":"2492:0:56"},"scope":5850,"src":"2421:369:56","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5764,"nodeType":"Block","src":"3583:189:56","statements":[{"assignments":[5751,5753],"declarations":[{"constant":false,"id":5751,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":5764,"src":"3653:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5750,"name":"bool","nodeType":"ElementaryTypeName","src":"3653:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5753,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":5764,"src":"3667:23:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5752,"name":"bytes","nodeType":"ElementaryTypeName","src":"3667:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5758,"initialValue":{"arguments":[{"id":5756,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5745,"src":"3706:4:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5754,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5743,"src":"3694:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"3694:11:56","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3694:17:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3652:59:56"},{"expression":{"arguments":[{"id":5760,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5751,"src":"3745:7:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5761,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5753,"src":"3754:10:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5759,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5849,"src":"3728:16:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory) pure returns (bytes memory)"}},"id":5762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3728:37:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5749,"id":5763,"nodeType":"Return","src":"3721:44:56"}]},"documentation":{"id":5741,"nodeType":"StructuredDocumentation","src":"2796:693:56","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":5765,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nodeType":"FunctionDefinition","parameters":{"id":5746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5743,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":5765,"src":"3516:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5742,"name":"address","nodeType":"ElementaryTypeName","src":"3516:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5745,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5765,"src":"3532:17:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5744,"name":"bytes","nodeType":"ElementaryTypeName","src":"3532:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3515:35:56"},"returnParameters":{"id":5749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5748,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5765,"src":"3569:12:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5747,"name":"bytes","nodeType":"ElementaryTypeName","src":"3569:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3568:14:56"},"scope":5850,"src":"3494:278:56","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5793,"nodeType":"Block","src":"4155:205:56","statements":[{"assignments":[5778,5780],"declarations":[{"constant":false,"id":5778,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":5793,"src":"4225:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5777,"name":"bool","nodeType":"ElementaryTypeName","src":"4225:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5780,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":5793,"src":"4239:23:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5779,"name":"bytes","nodeType":"ElementaryTypeName","src":"4239:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5787,"initialValue":{"arguments":[{"id":5785,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5770,"src":"4294:4:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5781,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5768,"src":"4266:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"4266:11:56","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":5783,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5772,"src":"4286:5:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4266:27:56","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4266:33:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4224:75:56"},{"expression":{"arguments":[{"id":5789,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5778,"src":"4333:7:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5790,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5780,"src":"4342:10:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5788,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5849,"src":"4316:16:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory) pure returns (bytes memory)"}},"id":5791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4316:37:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5776,"id":5792,"nodeType":"Return","src":"4309:44:56"}]},"documentation":{"id":5766,"nodeType":"StructuredDocumentation","src":"3817:190:56","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but passing some native ETH as msg.value to the call.\n _Available since v3.4._"},"id":5794,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nodeType":"FunctionDefinition","parameters":{"id":5773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5768,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":5794,"src":"4052:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5767,"name":"address","nodeType":"ElementaryTypeName","src":"4052:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5770,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5794,"src":"4076:17:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5769,"name":"bytes","nodeType":"ElementaryTypeName","src":"4076:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5772,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":5794,"src":"4103:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5771,"name":"uint256","nodeType":"ElementaryTypeName","src":"4103:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4042:80:56"},"returnParameters":{"id":5776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5775,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5794,"src":"4141:12:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5774,"name":"bytes","nodeType":"ElementaryTypeName","src":"4141:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4140:14:56"},"scope":5850,"src":"4012:348:56","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5818,"nodeType":"Block","src":"4636:197:56","statements":[{"assignments":[5805,5807],"declarations":[{"constant":false,"id":5805,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":5818,"src":"4706:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5804,"name":"bool","nodeType":"ElementaryTypeName","src":"4706:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5807,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":5818,"src":"4720:23:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5806,"name":"bytes","nodeType":"ElementaryTypeName","src":"4720:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5812,"initialValue":{"arguments":[{"id":5810,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5799,"src":"4767:4:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5808,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5797,"src":"4747:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"4747:19:56","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":5811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4747:25:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4705:67:56"},{"expression":{"arguments":[{"id":5814,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5805,"src":"4806:7:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5815,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5807,"src":"4815:10:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5813,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5849,"src":"4789:16:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory) pure returns (bytes memory)"}},"id":5816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4789:37:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5803,"id":5817,"nodeType":"Return","src":"4782:44:56"}]},"documentation":{"id":5795,"nodeType":"StructuredDocumentation","src":"4366:168:56","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":5819,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nodeType":"FunctionDefinition","parameters":{"id":5800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5797,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":5819,"src":"4569:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5796,"name":"address","nodeType":"ElementaryTypeName","src":"4569:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5799,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5819,"src":"4585:17:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5798,"name":"bytes","nodeType":"ElementaryTypeName","src":"4585:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4568:35:56"},"returnParameters":{"id":5803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5802,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5819,"src":"4622:12:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5801,"name":"bytes","nodeType":"ElementaryTypeName","src":"4622:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4621:14:56"},"scope":5850,"src":"4539:294:56","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5848,"nodeType":"Block","src":"5159:612:56","statements":[{"condition":{"id":5829,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5822,"src":"5173:7:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5846,"nodeType":"Block","src":"5230:535:56","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5833,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5824,"src":"5314:10:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5314:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5334:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5314:21:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5844,"nodeType":"Block","src":"5685:70:56","statements":[{"expression":{"arguments":[{"expression":{"id":5840,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"5711:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LOW_LEVEL_CALL_FAILED","nodeType":"MemberAccess","referencedDeclaration":2097,"src":"5711:28:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5839,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"5703:7:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":5842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5703:37:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5843,"nodeType":"ExpressionStatement","src":"5703:37:56"}]},"id":5845,"nodeType":"IfStatement","src":"5310:445:56","trueBody":{"id":5838,"nodeType":"Block","src":"5337:342:56","statements":[{"AST":{"nodeType":"YulBlock","src":"5520:145:56","statements":[{"nodeType":"YulVariableDeclaration","src":"5542:40:56","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"5571:10:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5565:5:56"},"nodeType":"YulFunctionCall","src":"5565:17:56"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"5546:15:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5614:2:56","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"5618:10:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5610:3:56"},"nodeType":"YulFunctionCall","src":"5610:19:56"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"5631:15:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5603:6:56"},"nodeType":"YulFunctionCall","src":"5603:44:56"},"nodeType":"YulExpressionStatement","src":"5603:44:56"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5824,"isOffset":false,"isSlot":false,"src":"5571:10:56","valueSize":1},{"declaration":5824,"isOffset":false,"isSlot":false,"src":"5618:10:56","valueSize":1}],"id":5837,"nodeType":"InlineAssembly","src":"5511:154:56"}]}}]},"id":5847,"nodeType":"IfStatement","src":"5169:596:56","trueBody":{"id":5832,"nodeType":"Block","src":"5182:42:56","statements":[{"expression":{"id":5830,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5824,"src":"5203:10:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5828,"id":5831,"nodeType":"Return","src":"5196:17:56"}]}}]},"documentation":{"id":5820,"nodeType":"StructuredDocumentation","src":"4839:213:56","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling up the\n revert reason or using the one provided.\n _Available since v4.3._"},"id":5849,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nodeType":"FunctionDefinition","parameters":{"id":5825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5822,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":5849,"src":"5083:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5821,"name":"bool","nodeType":"ElementaryTypeName","src":"5083:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5824,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":5849,"src":"5097:23:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5823,"name":"bytes","nodeType":"ElementaryTypeName","src":"5097:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5082:39:56"},"returnParameters":{"id":5828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5827,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5849,"src":"5145:12:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5826,"name":"bytes","nodeType":"ElementaryTypeName","src":"5145:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5144:14:56"},"scope":5850,"src":"5057:714:56","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5851,"src":"439:5334:56"}],"src":"254:5520:56"},"id":56},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol","exportedSymbols":{"Clones":[5930]},"id":5931,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5852,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"85:23:57"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5853,"nodeType":"StructuredDocumentation","src":"110:629:57","text":" @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n deploying minimal proxy contracts, also known as \"clones\".\n > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n deterministic method.\n _Available since v3.4._"},"fullyImplemented":true,"id":5930,"linearizedBaseContracts":[5930],"name":"Clones","nodeType":"ContractDefinition","nodes":[{"body":{"id":5872,"nodeType":"Block","src":"1076:440:57","statements":[{"AST":{"nodeType":"YulBlock","src":"1095:348:57","statements":[{"nodeType":"YulVariableDeclaration","src":"1109:22:57","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1126:4:57","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1120:5:57"},"nodeType":"YulFunctionCall","src":"1120:11:57"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"1113:3:57","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1151:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"1156:66:57","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1144:6:57"},"nodeType":"YulFunctionCall","src":"1144:79:57"},"nodeType":"YulExpressionStatement","src":"1144:79:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1247:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"1252:4:57","type":"","value":"0x14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1243:3:57"},"nodeType":"YulFunctionCall","src":"1243:14:57"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1263:4:57","type":"","value":"0x60"},{"name":"implementation","nodeType":"YulIdentifier","src":"1269:14:57"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1259:3:57"},"nodeType":"YulFunctionCall","src":"1259:25:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1236:6:57"},"nodeType":"YulFunctionCall","src":"1236:49:57"},"nodeType":"YulExpressionStatement","src":"1236:49:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1309:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"1314:4:57","type":"","value":"0x28"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1305:3:57"},"nodeType":"YulFunctionCall","src":"1305:14:57"},{"kind":"number","nodeType":"YulLiteral","src":"1321:66:57","type":"","value":"0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1298:6:57"},"nodeType":"YulFunctionCall","src":"1298:90:57"},"nodeType":"YulExpressionStatement","src":"1298:90:57"},{"nodeType":"YulAssignment","src":"1401:32:57","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1420:1:57","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"1423:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"1428:4:57","type":"","value":"0x37"}],"functionName":{"name":"create","nodeType":"YulIdentifier","src":"1413:6:57"},"nodeType":"YulFunctionCall","src":"1413:20:57"},"variableNames":[{"name":"instance","nodeType":"YulIdentifier","src":"1401:8:57"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5856,"isOffset":false,"isSlot":false,"src":"1269:14:57","valueSize":1},{"declaration":5859,"isOffset":false,"isSlot":false,"src":"1401:8:57","valueSize":1}],"id":5861,"nodeType":"InlineAssembly","src":"1086:357:57"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5863,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5859,"src":"1460:8:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1480:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1472:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5864,"name":"address","nodeType":"ElementaryTypeName","src":"1472:7:57","typeDescriptions":{}}},"id":5867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1472:10:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1460:22:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a20637265617465206661696c6564","id":5869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1484:24:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""},"value":"ERC1167: create failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""}],"id":5862,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1452:7:57","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1452:57:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5871,"nodeType":"ExpressionStatement","src":"1452:57:57"}]},"documentation":{"id":5854,"nodeType":"StructuredDocumentation","src":"804:192:57","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create opcode, which should never revert."},"id":5873,"implemented":true,"kind":"function","modifiers":[],"name":"clone","nodeType":"FunctionDefinition","parameters":{"id":5857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5856,"mutability":"mutable","name":"implementation","nodeType":"VariableDeclaration","scope":5873,"src":"1016:22:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5855,"name":"address","nodeType":"ElementaryTypeName","src":"1016:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1015:24:57"},"returnParameters":{"id":5860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5859,"mutability":"mutable","name":"instance","nodeType":"VariableDeclaration","scope":5873,"src":"1058:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5858,"name":"address","nodeType":"ElementaryTypeName","src":"1058:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1057:18:57"},"scope":5930,"src":"1001:515:57","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5894,"nodeType":"Block","src":"1993:448:57","statements":[{"AST":{"nodeType":"YulBlock","src":"2012:355:57","statements":[{"nodeType":"YulVariableDeclaration","src":"2026:22:57","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2043:4:57","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2037:5:57"},"nodeType":"YulFunctionCall","src":"2037:11:57"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"2030:3:57","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2068:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"2073:66:57","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2061:6:57"},"nodeType":"YulFunctionCall","src":"2061:79:57"},"nodeType":"YulExpressionStatement","src":"2061:79:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2164:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"2169:4:57","type":"","value":"0x14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2160:3:57"},"nodeType":"YulFunctionCall","src":"2160:14:57"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2180:4:57","type":"","value":"0x60"},{"name":"implementation","nodeType":"YulIdentifier","src":"2186:14:57"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2176:3:57"},"nodeType":"YulFunctionCall","src":"2176:25:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2153:6:57"},"nodeType":"YulFunctionCall","src":"2153:49:57"},"nodeType":"YulExpressionStatement","src":"2153:49:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2226:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"2231:4:57","type":"","value":"0x28"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2222:3:57"},"nodeType":"YulFunctionCall","src":"2222:14:57"},{"kind":"number","nodeType":"YulLiteral","src":"2238:66:57","type":"","value":"0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2215:6:57"},"nodeType":"YulFunctionCall","src":"2215:90:57"},"nodeType":"YulExpressionStatement","src":"2215:90:57"},{"nodeType":"YulAssignment","src":"2318:39:57","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2338:1:57","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2341:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"2346:4:57","type":"","value":"0x37"},{"name":"salt","nodeType":"YulIdentifier","src":"2352:4:57"}],"functionName":{"name":"create2","nodeType":"YulIdentifier","src":"2330:7:57"},"nodeType":"YulFunctionCall","src":"2330:27:57"},"variableNames":[{"name":"instance","nodeType":"YulIdentifier","src":"2318:8:57"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5876,"isOffset":false,"isSlot":false,"src":"2186:14:57","valueSize":1},{"declaration":5881,"isOffset":false,"isSlot":false,"src":"2318:8:57","valueSize":1},{"declaration":5878,"isOffset":false,"isSlot":false,"src":"2352:4:57","valueSize":1}],"id":5883,"nodeType":"InlineAssembly","src":"2003:364:57"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5885,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5881,"src":"2384:8:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2404:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2396:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5886,"name":"address","nodeType":"ElementaryTypeName","src":"2396:7:57","typeDescriptions":{}}},"id":5889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2396:10:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2384:22:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a2063726561746532206661696c6564","id":5891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2408:25:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""},"value":"ERC1167: create2 failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""}],"id":5884,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2376:7:57","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2376:58:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5893,"nodeType":"ExpressionStatement","src":"2376:58:57"}]},"documentation":{"id":5874,"nodeType":"StructuredDocumentation","src":"1522:364:57","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create2 opcode and a `salt` to deterministically deploy\n the clone. Using the same `implementation` and `salt` multiple time will revert, since\n the clones cannot be deployed twice at the same address."},"id":5895,"implemented":true,"kind":"function","modifiers":[],"name":"cloneDeterministic","nodeType":"FunctionDefinition","parameters":{"id":5879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5876,"mutability":"mutable","name":"implementation","nodeType":"VariableDeclaration","scope":5895,"src":"1919:22:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5875,"name":"address","nodeType":"ElementaryTypeName","src":"1919:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5878,"mutability":"mutable","name":"salt","nodeType":"VariableDeclaration","scope":5895,"src":"1943:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5877,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1943:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1918:38:57"},"returnParameters":{"id":5882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5881,"mutability":"mutable","name":"instance","nodeType":"VariableDeclaration","scope":5895,"src":"1975:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5880,"name":"address","nodeType":"ElementaryTypeName","src":"1975:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1974:18:57"},"scope":5930,"src":"1891:550:57","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5908,"nodeType":"Block","src":"2716:539:57","statements":[{"AST":{"nodeType":"YulBlock","src":"2735:514:57","statements":[{"nodeType":"YulVariableDeclaration","src":"2749:22:57","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2766:4:57","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2760:5:57"},"nodeType":"YulFunctionCall","src":"2760:11:57"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"2753:3:57","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2791:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"2796:66:57","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2784:6:57"},"nodeType":"YulFunctionCall","src":"2784:79:57"},"nodeType":"YulExpressionStatement","src":"2784:79:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2887:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"2892:4:57","type":"","value":"0x14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2883:3:57"},"nodeType":"YulFunctionCall","src":"2883:14:57"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2903:4:57","type":"","value":"0x60"},{"name":"implementation","nodeType":"YulIdentifier","src":"2909:14:57"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2899:3:57"},"nodeType":"YulFunctionCall","src":"2899:25:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2876:6:57"},"nodeType":"YulFunctionCall","src":"2876:49:57"},"nodeType":"YulExpressionStatement","src":"2876:49:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2949:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"2954:4:57","type":"","value":"0x28"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2945:3:57"},"nodeType":"YulFunctionCall","src":"2945:14:57"},{"kind":"number","nodeType":"YulLiteral","src":"2961:66:57","type":"","value":"0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2938:6:57"},"nodeType":"YulFunctionCall","src":"2938:90:57"},"nodeType":"YulExpressionStatement","src":"2938:90:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3052:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"3057:4:57","type":"","value":"0x38"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3048:3:57"},"nodeType":"YulFunctionCall","src":"3048:14:57"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3068:4:57","type":"","value":"0x60"},{"name":"deployer","nodeType":"YulIdentifier","src":"3074:8:57"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3064:3:57"},"nodeType":"YulFunctionCall","src":"3064:19:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3041:6:57"},"nodeType":"YulFunctionCall","src":"3041:43:57"},"nodeType":"YulExpressionStatement","src":"3041:43:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3108:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"3113:4:57","type":"","value":"0x4c"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3104:3:57"},"nodeType":"YulFunctionCall","src":"3104:14:57"},{"name":"salt","nodeType":"YulIdentifier","src":"3120:4:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3097:6:57"},"nodeType":"YulFunctionCall","src":"3097:28:57"},"nodeType":"YulExpressionStatement","src":"3097:28:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3149:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"3154:4:57","type":"","value":"0x6c"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3145:3:57"},"nodeType":"YulFunctionCall","src":"3145:14:57"},{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3171:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"3176:4:57","type":"","value":"0x37"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3161:9:57"},"nodeType":"YulFunctionCall","src":"3161:20:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3138:6:57"},"nodeType":"YulFunctionCall","src":"3138:44:57"},"nodeType":"YulExpressionStatement","src":"3138:44:57"},{"nodeType":"YulAssignment","src":"3195:44:57","value":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3222:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"3227:4:57","type":"","value":"0x37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3218:3:57"},"nodeType":"YulFunctionCall","src":"3218:14:57"},{"kind":"number","nodeType":"YulLiteral","src":"3234:4:57","type":"","value":"0x55"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3208:9:57"},"nodeType":"YulFunctionCall","src":"3208:31:57"},"variableNames":[{"name":"predicted","nodeType":"YulIdentifier","src":"3195:9:57"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5902,"isOffset":false,"isSlot":false,"src":"3074:8:57","valueSize":1},{"declaration":5898,"isOffset":false,"isSlot":false,"src":"2909:14:57","valueSize":1},{"declaration":5905,"isOffset":false,"isSlot":false,"src":"3195:9:57","valueSize":1},{"declaration":5900,"isOffset":false,"isSlot":false,"src":"3120:4:57","valueSize":1}],"id":5907,"nodeType":"InlineAssembly","src":"2726:523:57"}]},"documentation":{"id":5896,"nodeType":"StructuredDocumentation","src":"2447:99:57","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":5909,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nodeType":"FunctionDefinition","parameters":{"id":5903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5898,"mutability":"mutable","name":"implementation","nodeType":"VariableDeclaration","scope":5909,"src":"2597:22:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5897,"name":"address","nodeType":"ElementaryTypeName","src":"2597:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5900,"mutability":"mutable","name":"salt","nodeType":"VariableDeclaration","scope":5909,"src":"2629:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5899,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2629:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5902,"mutability":"mutable","name":"deployer","nodeType":"VariableDeclaration","scope":5909,"src":"2651:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5901,"name":"address","nodeType":"ElementaryTypeName","src":"2651:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2587:86:57"},"returnParameters":{"id":5906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5905,"mutability":"mutable","name":"predicted","nodeType":"VariableDeclaration","scope":5909,"src":"2697:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5904,"name":"address","nodeType":"ElementaryTypeName","src":"2697:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2696:19:57"},"scope":5930,"src":"2551:704:57","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5928,"nodeType":"Block","src":"3510:88:57","statements":[{"expression":{"arguments":[{"id":5920,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"3555:14:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5921,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5914,"src":"3571:4:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":5924,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3585:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_Clones_$5930","typeString":"library Clones"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Clones_$5930","typeString":"library Clones"}],"id":5923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3577:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5922,"name":"address","nodeType":"ElementaryTypeName","src":"3577:7:57","typeDescriptions":{}}},"id":5925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3577:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5919,"name":"predictDeterministicAddress","nodeType":"Identifier","overloadedDeclarations":[5909,5929],"referencedDeclaration":5909,"src":"3527:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (address,bytes32,address) pure returns (address)"}},"id":5926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3527:64:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5918,"id":5927,"nodeType":"Return","src":"3520:71:57"}]},"documentation":{"id":5910,"nodeType":"StructuredDocumentation","src":"3261:99:57","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":5929,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nodeType":"FunctionDefinition","parameters":{"id":5915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5912,"mutability":"mutable","name":"implementation","nodeType":"VariableDeclaration","scope":5929,"src":"3402:22:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5911,"name":"address","nodeType":"ElementaryTypeName","src":"3402:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5914,"mutability":"mutable","name":"salt","nodeType":"VariableDeclaration","scope":5929,"src":"3426:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5913,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3426:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3401:38:57"},"returnParameters":{"id":5918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5917,"mutability":"mutable","name":"predicted","nodeType":"VariableDeclaration","scope":5929,"src":"3487:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5916,"name":"address","nodeType":"ElementaryTypeName","src":"3487:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3486:19:57"},"scope":5930,"src":"3365:233:57","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":5931,"src":"740:2860:57"}],"src":"85:3516:57"},"id":57},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","exportedSymbols":{"EIP712":[6021]},"id":6022,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5932,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:58"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":5933,"nodeType":"StructuredDocumentation","src":"58:1142:58","text":" @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n they need in their contracts using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n _Available since v3.4._"},"fullyImplemented":true,"id":6021,"linearizedBaseContracts":[6021],"name":"EIP712","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":5935,"mutability":"immutable","name":"_HASHED_NAME","nodeType":"VariableDeclaration","scope":6021,"src":"1277:38:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5934,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1277:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":5937,"mutability":"immutable","name":"_HASHED_VERSION","nodeType":"VariableDeclaration","scope":6021,"src":"1321:41:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5936,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1321:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":5939,"mutability":"immutable","name":"_TYPE_HASH","nodeType":"VariableDeclaration","scope":6021,"src":"1368:36:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5938,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1368:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":5971,"nodeType":"Block","src":"2075:225:58","statements":[{"expression":{"id":5954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5947,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5935,"src":"2085:12:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":5951,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5942,"src":"2116:4:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2110:5:58","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5949,"name":"bytes","nodeType":"ElementaryTypeName","src":"2110:5:58","typeDescriptions":{}}},"id":5952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2110:11:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5948,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2100:9:58","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2100:22:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2085:37:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5955,"nodeType":"ExpressionStatement","src":"2085:37:58"},{"expression":{"id":5963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5956,"name":"_HASHED_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5937,"src":"2132:15:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":5960,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5944,"src":"2166:7:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5959,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2160:5:58","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5958,"name":"bytes","nodeType":"ElementaryTypeName","src":"2160:5:58","typeDescriptions":{}}},"id":5961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2160:14:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5957,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2150:9:58","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2150:25:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2132:43:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5964,"nodeType":"ExpressionStatement","src":"2132:43:58"},{"expression":{"id":5969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5965,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5939,"src":"2185:10:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":5967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2208:84:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":5966,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2198:9:58","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2198:95:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2185:108:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5970,"nodeType":"ExpressionStatement","src":"2185:108:58"}]},"documentation":{"id":5940,"nodeType":"StructuredDocumentation","src":"1456:559:58","text":" @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]."},"id":5972,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":5945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5942,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":5972,"src":"2032:18:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5941,"name":"string","nodeType":"ElementaryTypeName","src":"2032:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5944,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":5972,"src":"2052:21:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5943,"name":"string","nodeType":"ElementaryTypeName","src":"2052:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2031:43:58"},"returnParameters":{"id":5946,"nodeType":"ParameterList","parameters":[],"src":"2075:0:58"},"scope":6021,"src":"2020:280:58","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5993,"nodeType":"Block","src":"2456:118:58","statements":[{"expression":{"arguments":[{"arguments":[{"id":5981,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5939,"src":"2494:10:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5982,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5935,"src":"2506:12:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5983,"name":"_HASHED_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5937,"src":"2520:15:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":5984,"name":"_getChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6020,"src":"2537:11:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2537:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":5988,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2560:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$6021","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$6021","typeString":"contract EIP712"}],"id":5987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2552:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5986,"name":"address","nodeType":"ElementaryTypeName","src":"2552:7:58","typeDescriptions":{}}},"id":5989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2552:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5979,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2483:3:58","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5980,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2483:10:58","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2483:83:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5978,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2473:9:58","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2473:94:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5977,"id":5992,"nodeType":"Return","src":"2466:101:58"}]},"documentation":{"id":5973,"nodeType":"StructuredDocumentation","src":"2306:75:58","text":" @dev Returns the domain separator for the current chain."},"id":5994,"implemented":true,"kind":"function","modifiers":[],"name":"_domainSeparatorV4","nodeType":"FunctionDefinition","parameters":{"id":5974,"nodeType":"ParameterList","parameters":[],"src":"2413:2:58"},"returnParameters":{"id":5977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5976,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5994,"src":"2447:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5975,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2447:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2446:9:58"},"scope":6021,"src":"2386:188:58","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":6012,"nodeType":"Block","src":"3285:97:58","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1901","id":6005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3329:10:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},"value":"\u0019\u0001"},{"arguments":[],"expression":{"argumentTypes":[],"id":6006,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5994,"src":"3341:18:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":6007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3341:20:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6008,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5997,"src":"3363:10:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":6003,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3312:3:58","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3312:16:58","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3312:62:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6002,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3302:9:58","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3302:73:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6001,"id":6011,"nodeType":"Return","src":"3295:80:58"}]},"documentation":{"id":5995,"nodeType":"StructuredDocumentation","src":"2580:614:58","text":" @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n keccak256(\"Mail(address to,string contents)\"),\n mailTo,\n keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```"},"id":6013,"implemented":true,"kind":"function","modifiers":[],"name":"_hashTypedDataV4","nodeType":"FunctionDefinition","parameters":{"id":5998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5997,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":6013,"src":"3225:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5996,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3225:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3224:20:58"},"returnParameters":{"id":6001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6000,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6013,"src":"3276:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5999,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3276:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3275:9:58"},"scope":6021,"src":"3199:183:58","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":6019,"nodeType":"Block","src":"3495:125:58","statements":[{"AST":{"nodeType":"YulBlock","src":"3570:44:58","statements":[{"nodeType":"YulAssignment","src":"3584:20:58","value":{"arguments":[],"functionName":{"name":"chainid","nodeType":"YulIdentifier","src":"3595:7:58"},"nodeType":"YulFunctionCall","src":"3595:9:58"},"variableNames":[{"name":"chainId","nodeType":"YulIdentifier","src":"3584:7:58"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":6016,"isOffset":false,"isSlot":false,"src":"3584:7:58","valueSize":1}],"id":6018,"nodeType":"InlineAssembly","src":"3561:53:58"}]},"id":6020,"implemented":true,"kind":"function","modifiers":[],"name":"_getChainId","nodeType":"FunctionDefinition","parameters":{"id":6014,"nodeType":"ParameterList","parameters":[],"src":"3453:2:58"},"returnParameters":{"id":6017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6016,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":6020,"src":"3478:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6015,"name":"uint256","nodeType":"ElementaryTypeName","src":"3478:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3477:17:58"},"scope":6021,"src":"3433:187:58","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":6022,"src":"1201:2421:58"}],"src":"33:3590:58"},"id":58},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","exportedSymbols":{"ERC20":[6512]},"id":6513,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6023,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:59"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":6024,"nodeType":"ImportDirective","scope":6513,"sourceUnit":2249,"src":"58:90:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":6025,"nodeType":"ImportDirective","scope":6513,"sourceUnit":2448,"src":"149:87:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"./SafeMath.sol","id":6026,"nodeType":"ImportDirective","scope":6513,"sourceUnit":7420,"src":"238:24:59","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6028,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1445:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":6029,"nodeType":"InheritanceSpecifier","src":"1445:6:59"}],"contractDependencies":[2447],"contractKind":"contract","documentation":{"id":6027,"nodeType":"StructuredDocumentation","src":"264:1162:59","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."},"fullyImplemented":true,"id":6512,"linearizedBaseContracts":[6512,2447],"name":"ERC20","nodeType":"ContractDefinition","nodes":[{"id":6032,"libraryName":{"id":6030,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7419,"src":"1464:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7419","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"1458:27:59","typeName":{"id":6031,"name":"uint256","nodeType":"ElementaryTypeName","src":"1477:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":6036,"mutability":"mutable","name":"_balances","nodeType":"VariableDeclaration","scope":6512,"src":"1491:45:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":6035,"keyType":{"id":6033,"name":"address","nodeType":"ElementaryTypeName","src":"1499:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1491:27:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":6034,"name":"uint256","nodeType":"ElementaryTypeName","src":"1510:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":6042,"mutability":"mutable","name":"_allowances","nodeType":"VariableDeclaration","scope":6512,"src":"1543:67:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":6041,"keyType":{"id":6037,"name":"address","nodeType":"ElementaryTypeName","src":"1551:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1543:47:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":6040,"keyType":{"id":6038,"name":"address","nodeType":"ElementaryTypeName","src":"1570:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1562:27:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":6039,"name":"uint256","nodeType":"ElementaryTypeName","src":"1581:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":6044,"mutability":"mutable","name":"_totalSupply","nodeType":"VariableDeclaration","scope":6512,"src":"1617:28:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6043,"name":"uint256","nodeType":"ElementaryTypeName","src":"1617:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":6046,"mutability":"mutable","name":"_name","nodeType":"VariableDeclaration","scope":6512,"src":"1652:20:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":6045,"name":"string","nodeType":"ElementaryTypeName","src":"1652:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":6048,"mutability":"mutable","name":"_symbol","nodeType":"VariableDeclaration","scope":6512,"src":"1678:22:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":6047,"name":"string","nodeType":"ElementaryTypeName","src":"1678:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":6050,"mutability":"mutable","name":"_decimals","nodeType":"VariableDeclaration","scope":6512,"src":"1706:23:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6049,"name":"uint8","nodeType":"ElementaryTypeName","src":"1706:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"body":{"id":6070,"nodeType":"Block","src":"2108:81:59","statements":[{"expression":{"id":6060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6058,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6046,"src":"2118:5:59","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6059,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"2126:5:59","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2118:13:59","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":6061,"nodeType":"ExpressionStatement","src":"2118:13:59"},{"expression":{"id":6064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6062,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6048,"src":"2141:7:59","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6063,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"2151:7:59","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2141:17:59","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":6065,"nodeType":"ExpressionStatement","src":"2141:17:59"},{"expression":{"id":6068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6066,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"2168:9:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3138","id":6067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2180:2:59","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"2168:14:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":6069,"nodeType":"ExpressionStatement","src":"2168:14:59"}]},"documentation":{"id":6051,"nodeType":"StructuredDocumentation","src":"1736:311:59","text":" @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n a default value of 18.\n To select a different value for {decimals}, use {_setupDecimals}.\n All three of these values are immutable: they can only be set once during\n construction."},"id":6071,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":6056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6053,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":6071,"src":"2064:19:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6052,"name":"string","nodeType":"ElementaryTypeName","src":"2064:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":6055,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":6071,"src":"2085:21:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6054,"name":"string","nodeType":"ElementaryTypeName","src":"2085:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2063:44:59"},"returnParameters":{"id":6057,"nodeType":"ParameterList","parameters":[],"src":"2108:0:59"},"scope":6512,"src":"2052:137:59","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":6079,"nodeType":"Block","src":"2306:29:59","statements":[{"expression":{"id":6077,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6046,"src":"2323:5:59","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":6076,"id":6078,"nodeType":"Return","src":"2316:12:59"}]},"documentation":{"id":6072,"nodeType":"StructuredDocumentation","src":"2195:54:59","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":6080,"implemented":true,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":6073,"nodeType":"ParameterList","parameters":[],"src":"2267:2:59"},"returnParameters":{"id":6076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6075,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6080,"src":"2291:13:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6074,"name":"string","nodeType":"ElementaryTypeName","src":"2291:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2290:15:59"},"scope":6512,"src":"2254:81:59","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":6088,"nodeType":"Block","src":"2502:31:59","statements":[{"expression":{"id":6086,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6048,"src":"2519:7:59","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":6085,"id":6087,"nodeType":"Return","src":"2512:14:59"}]},"documentation":{"id":6081,"nodeType":"StructuredDocumentation","src":"2341:102:59","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":6089,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":6082,"nodeType":"ParameterList","parameters":[],"src":"2463:2:59"},"returnParameters":{"id":6085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6084,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6089,"src":"2487:13:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6083,"name":"string","nodeType":"ElementaryTypeName","src":"2487:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2486:15:59"},"scope":6512,"src":"2448:85:59","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":6097,"nodeType":"Block","src":"3204:33:59","statements":[{"expression":{"id":6095,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"3221:9:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":6094,"id":6096,"nodeType":"Return","src":"3214:16:59"}]},"documentation":{"id":6090,"nodeType":"StructuredDocumentation","src":"2539:612:59","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":6098,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":6091,"nodeType":"ParameterList","parameters":[],"src":"3173:2:59"},"returnParameters":{"id":6094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6093,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6098,"src":"3197:5:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6092,"name":"uint8","nodeType":"ElementaryTypeName","src":"3197:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3196:7:59"},"scope":6512,"src":"3156:81:59","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2378],"body":{"id":6107,"nodeType":"Block","src":"3570:36:59","statements":[{"expression":{"id":6105,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6044,"src":"3587:12:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6104,"id":6106,"nodeType":"Return","src":"3580:19:59"}]},"documentation":{"id":6099,"nodeType":"StructuredDocumentation","src":"3243:252:59","text":" @dev See {IERC20-totalSupply}. The total supply should only be read using this function\n Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n storage values)."},"functionSelector":"18160ddd","id":6108,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":6101,"nodeType":"OverrideSpecifier","overrides":[],"src":"3543:8:59"},"parameters":{"id":6100,"nodeType":"ParameterList","parameters":[],"src":"3520:2:59"},"returnParameters":{"id":6104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6103,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6108,"src":"3561:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6102,"name":"uint256","nodeType":"ElementaryTypeName","src":"3561:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3560:9:59"},"scope":6512,"src":"3500:106:59","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":6118,"nodeType":"Block","src":"3927:37:59","statements":[{"expression":{"id":6116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6114,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6044,"src":"3937:12:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6115,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6111,"src":"3952:5:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3937:20:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6117,"nodeType":"ExpressionStatement","src":"3937:20:59"}]},"documentation":{"id":6109,"nodeType":"StructuredDocumentation","src":"3612:253:59","text":" @dev Sets a new value for the total supply. It should only be set using this function.\n * Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n storage values)."},"id":6119,"implemented":true,"kind":"function","modifiers":[],"name":"_setTotalSupply","nodeType":"FunctionDefinition","parameters":{"id":6112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6111,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6119,"src":"3895:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6110,"name":"uint256","nodeType":"ElementaryTypeName","src":"3895:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3894:15:59"},"returnParameters":{"id":6113,"nodeType":"ParameterList","parameters":[],"src":"3927:0:59"},"scope":6512,"src":"3870:94:59","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[2386],"body":{"id":6132,"nodeType":"Block","src":"4097:42:59","statements":[{"expression":{"baseExpression":{"id":6128,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"4114:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6130,"indexExpression":{"id":6129,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6122,"src":"4124:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4114:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6127,"id":6131,"nodeType":"Return","src":"4107:25:59"}]},"documentation":{"id":6120,"nodeType":"StructuredDocumentation","src":"3970:47:59","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":6133,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":{"id":6124,"nodeType":"OverrideSpecifier","overrides":[],"src":"4070:8:59"},"parameters":{"id":6123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6122,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":6133,"src":"4041:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6121,"name":"address","nodeType":"ElementaryTypeName","src":"4041:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4040:17:59"},"returnParameters":{"id":6127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6126,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6133,"src":"4088:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6125,"name":"uint256","nodeType":"ElementaryTypeName","src":"4088:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4087:9:59"},"scope":6512,"src":"4022:117:59","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2396],"body":{"id":6153,"nodeType":"Block","src":"4434:78:59","statements":[{"expression":{"arguments":[{"expression":{"id":6145,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4454:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4454:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6147,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6136,"src":"4466:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6148,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6138,"src":"4477:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6144,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6359,"src":"4444:9:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4444:40:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6150,"nodeType":"ExpressionStatement","src":"4444:40:59"},{"expression":{"hexValue":"74727565","id":6151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4501:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6143,"id":6152,"nodeType":"Return","src":"4494:11:59"}]},"documentation":{"id":6134,"nodeType":"StructuredDocumentation","src":"4145:192:59","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`."},"functionSelector":"a9059cbb","id":6154,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":{"id":6140,"nodeType":"OverrideSpecifier","overrides":[],"src":"4410:8:59"},"parameters":{"id":6139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6136,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6154,"src":"4360:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6135,"name":"address","nodeType":"ElementaryTypeName","src":"4360:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6138,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6154,"src":"4379:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6137,"name":"uint256","nodeType":"ElementaryTypeName","src":"4379:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4359:35:59"},"returnParameters":{"id":6143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6142,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6154,"src":"4428:4:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6141,"name":"bool","nodeType":"ElementaryTypeName","src":"4428:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4427:6:59"},"scope":6512,"src":"4342:170:59","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2406],"body":{"id":6171,"nodeType":"Block","src":"4668:51:59","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":6165,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"4685:11:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6167,"indexExpression":{"id":6166,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6157,"src":"4697:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4685:18:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6169,"indexExpression":{"id":6168,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6159,"src":"4704:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4685:27:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6164,"id":6170,"nodeType":"Return","src":"4678:34:59"}]},"documentation":{"id":6155,"nodeType":"StructuredDocumentation","src":"4518:47:59","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":6172,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","overrides":{"id":6161,"nodeType":"OverrideSpecifier","overrides":[],"src":"4641:8:59"},"parameters":{"id":6160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6157,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6172,"src":"4589:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6156,"name":"address","nodeType":"ElementaryTypeName","src":"4589:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6159,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6172,"src":"4604:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6158,"name":"address","nodeType":"ElementaryTypeName","src":"4604:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4588:32:59"},"returnParameters":{"id":6164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6163,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6172,"src":"4659:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6162,"name":"uint256","nodeType":"ElementaryTypeName","src":"4659:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4658:9:59"},"scope":6512,"src":"4570:149:59","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2416],"body":{"id":6192,"nodeType":"Block","src":"4946:75:59","statements":[{"expression":{"arguments":[{"expression":{"id":6184,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4965:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4965:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6186,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6175,"src":"4977:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6187,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6177,"src":"4986:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6183,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6489,"src":"4956:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4956:37:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6189,"nodeType":"ExpressionStatement","src":"4956:37:59"},{"expression":{"hexValue":"74727565","id":6190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5010:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6182,"id":6191,"nodeType":"Return","src":"5003:11:59"}]},"documentation":{"id":6173,"nodeType":"StructuredDocumentation","src":"4725:127:59","text":" @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":6193,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":6179,"nodeType":"OverrideSpecifier","overrides":[],"src":"4922:8:59"},"parameters":{"id":6178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6175,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6193,"src":"4874:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6174,"name":"address","nodeType":"ElementaryTypeName","src":"4874:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6177,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6193,"src":"4891:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6176,"name":"uint256","nodeType":"ElementaryTypeName","src":"4891:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4873:33:59"},"returnParameters":{"id":6182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6181,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6193,"src":"4940:4:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6180,"name":"bool","nodeType":"ElementaryTypeName","src":"4940:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4939:6:59"},"scope":6512,"src":"4857:164:59","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2428],"body":{"id":6231,"nodeType":"Block","src":"5630:244:59","statements":[{"expression":{"arguments":[{"id":6207,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6196,"src":"5650:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6208,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6198,"src":"5658:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6209,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6200,"src":"5669:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6206,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6359,"src":"5640:9:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5640:36:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6211,"nodeType":"ExpressionStatement","src":"5640:36:59"},{"expression":{"arguments":[{"id":6213,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6196,"src":"5708:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6214,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5728:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5728:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":6223,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6200,"src":"5788:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6224,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"5796:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_EXCEEDS_ALLOWANCE","nodeType":"MemberAccess","referencedDeclaration":2049,"src":"5796:39:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":6216,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"5752:11:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6218,"indexExpression":{"id":6217,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6196,"src":"5764:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5752:19:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6221,"indexExpression":{"expression":{"id":6219,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5772:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5772:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5752:31:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7418,"src":"5752:35:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5752:84:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6212,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6489,"src":"5686:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5686:160:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6228,"nodeType":"ExpressionStatement","src":"5686:160:59"},{"expression":{"hexValue":"74727565","id":6229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5863:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6205,"id":6230,"nodeType":"Return","src":"5856:11:59"}]},"documentation":{"id":6194,"nodeType":"StructuredDocumentation","src":"5027:456:59","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`."},"functionSelector":"23b872dd","id":6232,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":6202,"nodeType":"OverrideSpecifier","overrides":[],"src":"5606:8:59"},"parameters":{"id":6201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6196,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":6232,"src":"5519:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6195,"name":"address","nodeType":"ElementaryTypeName","src":"5519:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6198,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6232,"src":"5543:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6197,"name":"address","nodeType":"ElementaryTypeName","src":"5543:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6200,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6232,"src":"5570:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6199,"name":"uint256","nodeType":"ElementaryTypeName","src":"5570:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5509:81:59"},"returnParameters":{"id":6205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6204,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6232,"src":"5624:4:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6203,"name":"bool","nodeType":"ElementaryTypeName","src":"5624:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5623:6:59"},"scope":6512,"src":"5488:386:59","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6259,"nodeType":"Block","src":"6363:117:59","statements":[{"expression":{"arguments":[{"expression":{"id":6243,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6382:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6382:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6245,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6235,"src":"6394:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6253,"name":"addedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6237,"src":"6440:10:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":6246,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"6403:11:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6249,"indexExpression":{"expression":{"id":6247,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6415:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6415:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6403:23:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6251,"indexExpression":{"id":6250,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6235,"src":"6427:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6403:32:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7372,"src":"6403:36:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6403:48:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6242,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6489,"src":"6373:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6373:79:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6256,"nodeType":"ExpressionStatement","src":"6373:79:59"},{"expression":{"hexValue":"74727565","id":6257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6469:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6241,"id":6258,"nodeType":"Return","src":"6462:11:59"}]},"documentation":{"id":6233,"nodeType":"StructuredDocumentation","src":"5880:384:59","text":" @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"39509351","id":6260,"implemented":true,"kind":"function","modifiers":[],"name":"increaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":6238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6235,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6260,"src":"6296:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6234,"name":"address","nodeType":"ElementaryTypeName","src":"6296:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6237,"mutability":"mutable","name":"addedValue","nodeType":"VariableDeclaration","scope":6260,"src":"6313:18:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6236,"name":"uint256","nodeType":"ElementaryTypeName","src":"6313:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6295:37:59"},"returnParameters":{"id":6241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6240,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6260,"src":"6357:4:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6239,"name":"bool","nodeType":"ElementaryTypeName","src":"6357:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6356:6:59"},"scope":6512,"src":"6269:211:59","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6289,"nodeType":"Block","src":"7066:213:59","statements":[{"expression":{"arguments":[{"expression":{"id":6271,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7098:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7098:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6273,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6263,"src":"7122:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6281,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6265,"src":"7180:15:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6282,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"7197:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_DECREASED_ALLOWANCE_BELOW_ZERO","nodeType":"MemberAccess","referencedDeclaration":2052,"src":"7197:43:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":6274,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"7143:11:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6277,"indexExpression":{"expression":{"id":6275,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7155:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7155:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7143:23:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6279,"indexExpression":{"id":6278,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6263,"src":"7167:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7143:32:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7418,"src":"7143:36:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7143:98:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6270,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6489,"src":"7076:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7076:175:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6286,"nodeType":"ExpressionStatement","src":"7076:175:59"},{"expression":{"hexValue":"74727565","id":6287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7268:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6269,"id":6288,"nodeType":"Return","src":"7261:11:59"}]},"documentation":{"id":6261,"nodeType":"StructuredDocumentation","src":"6486:476:59","text":" @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."},"functionSelector":"a457c2d7","id":6290,"implemented":true,"kind":"function","modifiers":[],"name":"decreaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":6266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6263,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6290,"src":"6994:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6262,"name":"address","nodeType":"ElementaryTypeName","src":"6994:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6265,"mutability":"mutable","name":"subtractedValue","nodeType":"VariableDeclaration","scope":6290,"src":"7011:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6264,"name":"uint256","nodeType":"ElementaryTypeName","src":"7011:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6993:42:59"},"returnParameters":{"id":6269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6268,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6290,"src":"7060:4:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6267,"name":"bool","nodeType":"ElementaryTypeName","src":"7060:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7059:6:59"},"scope":6512,"src":"6967:312:59","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6358,"nodeType":"Block","src":"7870:442:59","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6301,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"7889:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7907:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7899:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6302,"name":"address","nodeType":"ElementaryTypeName","src":"7899:7:59","typeDescriptions":{}}},"id":6305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7899:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7889:20:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6307,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"7911:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_FROM_ZERO_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":2031,"src":"7911:39:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6300,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"7880:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7880:71:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6310,"nodeType":"ExpressionStatement","src":"7880:71:59"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6312,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6295,"src":"7970:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7991:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7983:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6313,"name":"address","nodeType":"ElementaryTypeName","src":"7983:7:59","typeDescriptions":{}}},"id":6316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7983:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7970:23:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6318,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"7995:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_TO_ZERO_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":2034,"src":"7995:37:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6311,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"7961:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7961:72:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6321,"nodeType":"ExpressionStatement","src":"7961:72:59"},{"expression":{"arguments":[{"id":6323,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"8065:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6324,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6295,"src":"8073:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6325,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6297,"src":"8084:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6322,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6511,"src":"8044:20:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8044:47:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6327,"nodeType":"ExpressionStatement","src":"8044:47:59"},{"expression":{"id":6339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6328,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"8102:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6330,"indexExpression":{"id":6329,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"8112:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8102:17:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6335,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6297,"src":"8144:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6336,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"8152:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_EXCEEDS_BALANCE","nodeType":"MemberAccess","referencedDeclaration":2055,"src":"8152:37:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6331,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"8122:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6333,"indexExpression":{"id":6332,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"8132:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8122:17:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7418,"src":"8122:21:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8122:68:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8102:88:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6340,"nodeType":"ExpressionStatement","src":"8102:88:59"},{"expression":{"id":6350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6341,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"8200:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6343,"indexExpression":{"id":6342,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6295,"src":"8210:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8200:20:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6348,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6297,"src":"8248:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6344,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"8223:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6346,"indexExpression":{"id":6345,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6295,"src":"8233:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8223:20:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7372,"src":"8223:24:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8223:32:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8200:55:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6351,"nodeType":"ExpressionStatement","src":"8200:55:59"},{"eventCall":{"arguments":[{"id":6353,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"8279:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6354,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6295,"src":"8287:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6355,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6297,"src":"8298:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6352,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"8270:8:59","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8270:35:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6357,"nodeType":"EmitStatement","src":"8265:40:59"}]},"documentation":{"id":6291,"nodeType":"StructuredDocumentation","src":"7285:463:59","text":" @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`."},"id":6359,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nodeType":"FunctionDefinition","parameters":{"id":6298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6293,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":6359,"src":"7781:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6292,"name":"address","nodeType":"ElementaryTypeName","src":"7781:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6295,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6359,"src":"7805:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6294,"name":"address","nodeType":"ElementaryTypeName","src":"7805:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6297,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6359,"src":"7832:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6296,"name":"uint256","nodeType":"ElementaryTypeName","src":"7832:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7771:81:59"},"returnParameters":{"id":6299,"nodeType":"ParameterList","parameters":[],"src":"7870:0:59"},"scope":6512,"src":"7753:559:59","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6404,"nodeType":"Block","src":"8648:232:59","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":6370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8687:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6369,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8679:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6368,"name":"address","nodeType":"ElementaryTypeName","src":"8679:7:59","typeDescriptions":{}}},"id":6371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8679:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6372,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6362,"src":"8691:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6373,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"8700:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6367,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6511,"src":"8658:20:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8658:49:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6375,"nodeType":"ExpressionStatement","src":"8658:49:59"},{"expression":{"arguments":[{"arguments":[{"id":6380,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"8752:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6377,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6108,"src":"8734:11:59","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":6378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8734:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7372,"src":"8734:17:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8734:25:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6376,"name":"_setTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"8718:15:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":6382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8718:42:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6383,"nodeType":"ExpressionStatement","src":"8718:42:59"},{"expression":{"id":6393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6384,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"8770:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6386,"indexExpression":{"id":6385,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6362,"src":"8780:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8770:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6391,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"8814:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6387,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"8791:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6389,"indexExpression":{"id":6388,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6362,"src":"8801:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8791:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7372,"src":"8791:22:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8791:30:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8770:51:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6394,"nodeType":"ExpressionStatement","src":"8770:51:59"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":6398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8853:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8845:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6396,"name":"address","nodeType":"ElementaryTypeName","src":"8845:7:59","typeDescriptions":{}}},"id":6399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8845:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6400,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6362,"src":"8857:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6401,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"8866:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6395,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"8836:8:59","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8836:37:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6403,"nodeType":"EmitStatement","src":"8831:42:59"}]},"documentation":{"id":6360,"nodeType":"StructuredDocumentation","src":"8318:260:59","text":"@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `to` cannot be the zero address."},"id":6405,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nodeType":"FunctionDefinition","parameters":{"id":6365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6362,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":6405,"src":"8598:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6361,"name":"address","nodeType":"ElementaryTypeName","src":"8598:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6364,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6405,"src":"8615:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6363,"name":"uint256","nodeType":"ElementaryTypeName","src":"8615:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8597:33:59"},"returnParameters":{"id":6366,"nodeType":"ParameterList","parameters":[],"src":"8648:0:59"},"scope":6512,"src":"8583:297:59","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6463,"nodeType":"Block","src":"9265:346:59","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6414,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"9284:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9303:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9295:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6415,"name":"address","nodeType":"ElementaryTypeName","src":"9295:7:59","typeDescriptions":{}}},"id":6418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9295:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"9284:21:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6420,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"9307:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_BURN_FROM_ZERO_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":2040,"src":"9307:35:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6413,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"9275:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9275:68:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6423,"nodeType":"ExpressionStatement","src":"9275:68:59"},{"expression":{"arguments":[{"id":6425,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"9375:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9392:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6427,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9384:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6426,"name":"address","nodeType":"ElementaryTypeName","src":"9384:7:59","typeDescriptions":{}}},"id":6429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9384:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6430,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"9396:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6424,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6511,"src":"9354:20:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9354:49:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6432,"nodeType":"ExpressionStatement","src":"9354:49:59"},{"expression":{"id":6444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6433,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"9414:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6435,"indexExpression":{"id":6434,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"9424:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9414:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6440,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"9458:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6441,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"9466:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_BURN_EXCEEDS_BALANCE","nodeType":"MemberAccess","referencedDeclaration":2109,"src":"9466:33:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6436,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"9435:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6438,"indexExpression":{"id":6437,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"9445:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9435:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7418,"src":"9435:22:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9435:65:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9414:86:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6445,"nodeType":"ExpressionStatement","src":"9414:86:59"},{"expression":{"arguments":[{"arguments":[{"id":6450,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"9544:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6447,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6108,"src":"9526:11:59","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":6448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9526:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7390,"src":"9526:17:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9526:25:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6446,"name":"_setTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"9510:15:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":6452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9510:42:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6453,"nodeType":"ExpressionStatement","src":"9510:42:59"},{"eventCall":{"arguments":[{"id":6455,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"9576:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9593:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9585:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6456,"name":"address","nodeType":"ElementaryTypeName","src":"9585:7:59","typeDescriptions":{}}},"id":6459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9585:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6460,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"9597:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6454,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"9567:8:59","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9567:37:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6462,"nodeType":"EmitStatement","src":"9562:42:59"}]},"documentation":{"id":6406,"nodeType":"StructuredDocumentation","src":"8886:309:59","text":" @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."},"id":6464,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nodeType":"FunctionDefinition","parameters":{"id":6411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6408,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":6464,"src":"9215:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6407,"name":"address","nodeType":"ElementaryTypeName","src":"9215:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6410,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6464,"src":"9232:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6409,"name":"uint256","nodeType":"ElementaryTypeName","src":"9232:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9214:33:59"},"returnParameters":{"id":6412,"nodeType":"ParameterList","parameters":[],"src":"9265:0:59"},"scope":6512,"src":"9200:411:59","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6488,"nodeType":"Block","src":"10147:100:59","statements":[{"expression":{"id":6480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6474,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"10157:11:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6477,"indexExpression":{"id":6475,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6467,"src":"10169:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10157:18:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6478,"indexExpression":{"id":6476,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6469,"src":"10176:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10157:27:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6479,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6471,"src":"10187:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10157:36:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6481,"nodeType":"ExpressionStatement","src":"10157:36:59"},{"eventCall":{"arguments":[{"id":6483,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6467,"src":"10217:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6484,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6469,"src":"10224:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6485,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6471,"src":"10233:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6482,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2446,"src":"10208:8:59","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10208:32:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6487,"nodeType":"EmitStatement","src":"10203:37:59"}]},"documentation":{"id":6465,"nodeType":"StructuredDocumentation","src":"9617:412:59","text":" @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."},"id":6489,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nodeType":"FunctionDefinition","parameters":{"id":6472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6467,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6489,"src":"10061:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6466,"name":"address","nodeType":"ElementaryTypeName","src":"10061:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6469,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6489,"src":"10084:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6468,"name":"address","nodeType":"ElementaryTypeName","src":"10084:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6471,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6489,"src":"10109:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6470,"name":"uint256","nodeType":"ElementaryTypeName","src":"10109:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10051:78:59"},"returnParameters":{"id":6473,"nodeType":"ParameterList","parameters":[],"src":"10147:0:59"},"scope":6512,"src":"10034:213:59","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6499,"nodeType":"Block","src":"10620:38:59","statements":[{"expression":{"id":6497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6495,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"10630:9:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6496,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6492,"src":"10642:9:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10630:21:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":6498,"nodeType":"ExpressionStatement","src":"10630:21:59"}]},"documentation":{"id":6490,"nodeType":"StructuredDocumentation","src":"10253:312:59","text":" @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does."},"id":6500,"implemented":true,"kind":"function","modifiers":[],"name":"_setupDecimals","nodeType":"FunctionDefinition","parameters":{"id":6493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6492,"mutability":"mutable","name":"decimals_","nodeType":"VariableDeclaration","scope":6500,"src":"10594:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6491,"name":"uint8","nodeType":"ElementaryTypeName","src":"10594:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"10593:17:59"},"returnParameters":{"id":6494,"nodeType":"ParameterList","parameters":[],"src":"10620:0:59"},"scope":6512,"src":"10570:88:59","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6510,"nodeType":"Block","src":"11364:64:59","statements":[]},"documentation":{"id":6501,"nodeType":"StructuredDocumentation","src":"10664:576:59","text":" @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":6511,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nodeType":"FunctionDefinition","parameters":{"id":6508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6503,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":6511,"src":"11284:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6502,"name":"address","nodeType":"ElementaryTypeName","src":"11284:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6505,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6511,"src":"11306:10:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6504,"name":"address","nodeType":"ElementaryTypeName","src":"11306:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6507,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6511,"src":"11326:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6506,"name":"uint256","nodeType":"ElementaryTypeName","src":"11326:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11274:72:59"},"returnParameters":{"id":6509,"nodeType":"ParameterList","parameters":[],"src":"11364:0:59"},"scope":6512,"src":"11245:183:59","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":6513,"src":"1427:10003:59"}],"src":"33:11398:59"},"id":59},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol","exportedSymbols":{"ERC20Burnable":[6569]},"id":6570,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6514,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:60"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"./ERC20.sol","id":6515,"nodeType":"ImportDirective","scope":6570,"sourceUnit":6513,"src":"58:21:60","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":6517,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":6512,"src":"325:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$6512","typeString":"contract ERC20"}},"id":6518,"nodeType":"InheritanceSpecifier","src":"325:5:60"}],"contractDependencies":[2447,6512],"contractKind":"contract","documentation":{"id":6516,"nodeType":"StructuredDocumentation","src":"81:208:60","text":" @dev Extension of {ERC20} that allows token holders to destroy both their own\n tokens and those that they have an allowance for, in a way that can be\n recognized off-chain (via event analysis)."},"fullyImplemented":false,"id":6569,"linearizedBaseContracts":[6569,6512,2447],"name":"ERC20Burnable","nodeType":"ContractDefinition","nodes":[{"id":6521,"libraryName":{"id":6519,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7419,"src":"343:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7419","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"337:27:60","typeName":{"id":6520,"name":"uint256","nodeType":"ElementaryTypeName","src":"356:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"body":{"id":6533,"nodeType":"Block","src":"518:42:60","statements":[{"expression":{"arguments":[{"expression":{"id":6528,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"534:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"534:10:60","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6530,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6524,"src":"546:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6527,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6464,"src":"528:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"528:25:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6532,"nodeType":"ExpressionStatement","src":"528:25:60"}]},"documentation":{"id":6522,"nodeType":"StructuredDocumentation","src":"370:98:60","text":" @dev Destroys `amount` tokens from the caller.\n See {ERC20-_burn}."},"functionSelector":"42966c68","id":6534,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":6525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6524,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6534,"src":"487:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6523,"name":"uint256","nodeType":"ElementaryTypeName","src":"487:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"486:16:60"},"returnParameters":{"id":6526,"nodeType":"ParameterList","parameters":[],"src":"518:0:60"},"scope":6569,"src":"473:87:60","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6567,"nodeType":"Block","src":"932:217:60","statements":[{"assignments":[6543],"declarations":[{"constant":false,"id":6543,"mutability":"mutable","name":"decreasedAllowance","nodeType":"VariableDeclaration","scope":6567,"src":"942:26:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6542,"name":"uint256","nodeType":"ElementaryTypeName","src":"942:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6554,"initialValue":{"arguments":[{"id":6550,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6539,"src":"1006:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6551,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1014:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_BURN_EXCEEDS_ALLOWANCE","nodeType":"MemberAccess","referencedDeclaration":2058,"src":"1014:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6545,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6537,"src":"981:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6546,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"990:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"990:10:60","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":6544,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6172,"src":"971:9:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":6548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"971:30:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7418,"src":"971:34:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"971:79:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"942:108:60"},{"expression":{"arguments":[{"id":6556,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6537,"src":"1070:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6557,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1079:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1079:10:60","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6559,"name":"decreasedAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6543,"src":"1091:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6555,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6489,"src":"1061:8:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1061:49:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6561,"nodeType":"ExpressionStatement","src":"1061:49:60"},{"expression":{"arguments":[{"id":6563,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6537,"src":"1126:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6564,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6539,"src":"1135:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6562,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6464,"src":"1120:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1120:22:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6566,"nodeType":"ExpressionStatement","src":"1120:22:60"}]},"documentation":{"id":6535,"nodeType":"StructuredDocumentation","src":"566:295:60","text":" @dev Destroys `amount` tokens from `account`, deducting from the caller's\n allowance.\n See {ERC20-_burn} and {ERC20-allowance}.\n Requirements:\n - the caller must have allowance for ``accounts``'s tokens of at least\n `amount`."},"functionSelector":"79cc6790","id":6568,"implemented":true,"kind":"function","modifiers":[],"name":"burnFrom","nodeType":"FunctionDefinition","parameters":{"id":6540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6537,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":6568,"src":"884:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6536,"name":"address","nodeType":"ElementaryTypeName","src":"884:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6539,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6568,"src":"901:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6538,"name":"uint256","nodeType":"ElementaryTypeName","src":"901:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"883:33:60"},"returnParameters":{"id":6541,"nodeType":"ParameterList","parameters":[],"src":"932:0:60"},"scope":6569,"src":"866:283:60","stateMutability":"nonpayable","virtual":true,"visibility":"public"}],"scope":6570,"src":"290:861:60"}],"src":"33:1119:60"},"id":60},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol","exportedSymbols":{"ERC20Permit":[6678]},"id":6679,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6571,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:61"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","id":6572,"nodeType":"ImportDirective","scope":6679,"sourceUnit":2484,"src":"58:93:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"./ERC20.sol","id":6573,"nodeType":"ImportDirective","scope":6679,"sourceUnit":6513,"src":"153:21:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","file":"../helpers/EOASignaturesValidator.sol","id":6574,"nodeType":"ImportDirective","scope":6679,"sourceUnit":3309,"src":"175:47:61","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":6576,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":6512,"src":"775:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$6512","typeString":"contract ERC20"}},"id":6577,"nodeType":"InheritanceSpecifier","src":"775:5:61"},{"baseName":{"id":6578,"name":"IERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":2483,"src":"782:12:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$2483","typeString":"contract IERC20Permit"}},"id":6579,"nodeType":"InheritanceSpecifier","src":"782:12:61"},{"baseName":{"id":6580,"name":"EOASignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":3308,"src":"796:22:61","typeDescriptions":{"typeIdentifier":"t_contract$_EOASignaturesValidator_$3308","typeString":"contract EOASignaturesValidator"}},"id":6581,"nodeType":"InheritanceSpecifier","src":"796:22:61"}],"contractDependencies":[2311,2447,2483,3308,6021,6512],"contractKind":"contract","documentation":{"id":6575,"nodeType":"StructuredDocumentation","src":"224:517:61","text":" @dev Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all.\n _Available since v3.4._"},"fullyImplemented":false,"id":6678,"linearizedBaseContracts":[6678,3308,6021,2311,2483,6512,2447],"name":"ERC20Permit","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":6586,"mutability":"constant","name":"_PERMIT_TYPEHASH","nodeType":"VariableDeclaration","scope":6678,"src":"877:153:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6582,"name":"bytes32","nodeType":"ElementaryTypeName","src":"877:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529","id":6584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"940:84:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""},"value":"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""}],"id":6583,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"921:9:61","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"921:109:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":6596,"nodeType":"Block","src":"1312:64:61","statements":[]},"documentation":{"id":6587,"nodeType":"StructuredDocumentation","src":"1037:220:61","text":" @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n It's a good idea to use the same `name` that is defined as the ERC20 token name."},"id":6597,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":6592,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6589,"src":"1301:4:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"31","id":6593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1307:3:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":6594,"modifierName":{"id":6591,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"1294:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP712_$6021_$","typeString":"type(contract EIP712)"}},"nodeType":"ModifierInvocation","src":"1294:17:61"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":6590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6589,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":6597,"src":"1274:18:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6588,"name":"string","nodeType":"ElementaryTypeName","src":"1274:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1273:20:61"},"returnParameters":{"id":6595,"nodeType":"ParameterList","parameters":[],"src":"1312:0:61"},"scope":6678,"src":"1262:114:61","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2468],"body":{"id":6651,"nodeType":"Block","src":"1635:310:61","statements":[{"assignments":[6617],"declarations":[{"constant":false,"id":6617,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":6651,"src":"1645:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6616,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1645:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6631,"initialValue":{"arguments":[{"arguments":[{"id":6621,"name":"_PERMIT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6586,"src":"1700:16:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6622,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"1718:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6623,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6602,"src":"1725:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6624,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6604,"src":"1734:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":6626,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"1754:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6625,"name":"getNextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"1741:12:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":6627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1741:19:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6628,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6606,"src":"1762:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6619,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1689:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1689:10:61","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1689:82:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6618,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1666:9:61","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1666:115:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1645:136:61"},{"expression":{"arguments":[{"id":6633,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"1814:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6634,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6617,"src":"1821:10:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":6636,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6608,"src":"1851:1:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":6637,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6610,"src":"1854:1:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6638,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6612,"src":"1857:1:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6635,"name":"_toArraySignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3307,"src":"1833:17:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint8,bytes32,bytes32) pure returns (bytes memory)"}},"id":6639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1833:26:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6640,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6606,"src":"1861:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6641,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1871:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":2154,"src":"1871:24:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6632,"name":"_ensureValidSignature","nodeType":"Identifier","overloadedDeclarations":[3189,3233],"referencedDeclaration":3233,"src":"1792:21:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,bytes32,bytes memory,uint256,uint256)"}},"id":6643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1792:104:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6644,"nodeType":"ExpressionStatement","src":"1792:104:61"},{"expression":{"arguments":[{"id":6646,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"1916:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6647,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6602,"src":"1923:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6648,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6604,"src":"1932:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6645,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6489,"src":"1907:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1907:31:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6650,"nodeType":"ExpressionStatement","src":"1907:31:61"}]},"documentation":{"id":6598,"nodeType":"StructuredDocumentation","src":"1382:50:61","text":" @dev See {IERC20Permit-permit}."},"functionSelector":"d505accf","id":6652,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","overrides":{"id":6614,"nodeType":"OverrideSpecifier","overrides":[],"src":"1626:8:61"},"parameters":{"id":6613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6600,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6652,"src":"1462:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6599,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6602,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6652,"src":"1485:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6601,"name":"address","nodeType":"ElementaryTypeName","src":"1485:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6604,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6652,"src":"1510:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6603,"name":"uint256","nodeType":"ElementaryTypeName","src":"1510:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6606,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":6652,"src":"1533:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6605,"name":"uint256","nodeType":"ElementaryTypeName","src":"1533:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6608,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":6652,"src":"1559:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6607,"name":"uint8","nodeType":"ElementaryTypeName","src":"1559:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6610,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":6652,"src":"1576:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6609,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1576:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6612,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":6652,"src":"1595:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6611,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1595:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1452:158:61"},"returnParameters":{"id":6615,"nodeType":"ParameterList","parameters":[],"src":"1635:0:61"},"scope":6678,"src":"1437:508:61","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2476],"body":{"id":6665,"nodeType":"Block","src":"2076:43:61","statements":[{"expression":{"arguments":[{"id":6662,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6655,"src":"2106:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6661,"name":"getNextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"2093:12:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":6663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2093:19:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6660,"id":6664,"nodeType":"Return","src":"2086:26:61"}]},"documentation":{"id":6653,"nodeType":"StructuredDocumentation","src":"1951:50:61","text":" @dev See {IERC20Permit-nonces}."},"functionSelector":"7ecebe00","id":6666,"implemented":true,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","overrides":{"id":6657,"nodeType":"OverrideSpecifier","overrides":[],"src":"2049:8:61"},"parameters":{"id":6656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6655,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6666,"src":"2022:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6654,"name":"address","nodeType":"ElementaryTypeName","src":"2022:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2021:15:61"},"returnParameters":{"id":6660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6659,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6666,"src":"2067:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6658,"name":"uint256","nodeType":"ElementaryTypeName","src":"2067:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2066:9:61"},"scope":6678,"src":"2006:113:61","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2482],"body":{"id":6676,"nodeType":"Block","src":"2312:44:61","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6673,"name":"getDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3152,"src":"2329:18:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":6674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2329:20:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6672,"id":6675,"nodeType":"Return","src":"2322:27:61"}]},"documentation":{"id":6667,"nodeType":"StructuredDocumentation","src":"2125:60:61","text":" @dev See {IERC20Permit-DOMAIN_SEPARATOR}."},"functionSelector":"3644e515","id":6677,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","overrides":{"id":6669,"nodeType":"OverrideSpecifier","overrides":[],"src":"2285:8:61"},"parameters":{"id":6668,"nodeType":"ParameterList","parameters":[],"src":"2268:2:61"},"returnParameters":{"id":6672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6671,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6677,"src":"2303:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6670,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2303:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2302:9:61"},"scope":6678,"src":"2243:113:61","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6679,"src":"742:1616:61"}],"src":"33:2326:61"},"id":61},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","exportedSymbols":{"EnumerableSet":[7131]},"id":7132,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6680,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"406:23:62"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":6681,"nodeType":"ImportDirective","scope":7132,"sourceUnit":2249,"src":"431:90:62","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":6682,"nodeType":"StructuredDocumentation","src":"523:686:62","text":" @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n // Add the library methods\n using EnumerableSet for EnumerableSet.AddressSet;\n // Declare a set state variable\n EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported."},"fullyImplemented":true,"id":7131,"linearizedBaseContracts":[7131],"name":"EnumerableSet","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableSet.AddressSet","id":6690,"members":[{"constant":false,"id":6685,"mutability":"mutable","name":"_values","nodeType":"VariableDeclaration","scope":6690,"src":"1503:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":6683,"name":"address","nodeType":"ElementaryTypeName","src":"1503:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6684,"nodeType":"ArrayTypeName","src":"1503:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":6689,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":6690,"src":"1653:36:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":6688,"keyType":{"id":6686,"name":"address","nodeType":"ElementaryTypeName","src":"1661:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1653:27:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":6687,"name":"uint256","nodeType":"ElementaryTypeName","src":"1672:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"AddressSet","nodeType":"StructDefinition","scope":7131,"src":"1442:254:62","visibility":"public"},{"body":{"id":6730,"nodeType":"Block","src":"1927:334:62","statements":[{"condition":{"id":6704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1941:21:62","subExpression":{"arguments":[{"id":6701,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6693,"src":"1951:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},{"id":6702,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6695,"src":"1956:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6700,"name":"contains","nodeType":"Identifier","overloadedDeclarations":[6834,7058],"referencedDeclaration":6834,"src":"1942:8:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"}},"id":6703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1942:20:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6728,"nodeType":"Block","src":"2218:37:62","statements":[{"expression":{"hexValue":"66616c7365","id":6726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2239:5:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6699,"id":6727,"nodeType":"Return","src":"2232:12:62"}]},"id":6729,"nodeType":"IfStatement","src":"1937:318:62","trueBody":{"id":6725,"nodeType":"Block","src":"1964:248:62","statements":[{"expression":{"arguments":[{"id":6710,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6695,"src":"1995:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":6705,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6693,"src":"1978:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6708,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"1978:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"1978:16:62","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":6711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1978:23:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6712,"nodeType":"ExpressionStatement","src":"1978:23:62"},{"expression":{"id":6721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6713,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6693,"src":"2136:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6716,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6689,"src":"2136:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6717,"indexExpression":{"id":6715,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6695,"src":"2149:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2136:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":6718,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6693,"src":"2158:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6719,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"2158:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2158:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2136:40:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6722,"nodeType":"ExpressionStatement","src":"2136:40:62"},{"expression":{"hexValue":"74727565","id":6723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2197:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6699,"id":6724,"nodeType":"Return","src":"2190:11:62"}]}}]},"documentation":{"id":6691,"nodeType":"StructuredDocumentation","src":"1702:144:62","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, if it was not already present."},"id":6731,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":6696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6693,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6731,"src":"1864:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6692,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1864:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6695,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6731,"src":"1888:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6694,"name":"address","nodeType":"ElementaryTypeName","src":"1888:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1863:39:62"},"returnParameters":{"id":6699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6698,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6731,"src":"1921:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6697,"name":"bool","nodeType":"ElementaryTypeName","src":"1921:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1920:6:62"},"scope":7131,"src":"1851:410:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6815,"nodeType":"Block","src":"2508:1388:62","statements":[{"assignments":[6742],"declarations":[{"constant":false,"id":6742,"mutability":"mutable","name":"valueIndex","nodeType":"VariableDeclaration","scope":6815,"src":"2618:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6741,"name":"uint256","nodeType":"ElementaryTypeName","src":"2618:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6747,"initialValue":{"baseExpression":{"expression":{"id":6743,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"2639:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6744,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6689,"src":"2639:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6746,"indexExpression":{"id":6745,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6736,"src":"2652:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2639:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2618:40:62"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6748,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6742,"src":"2673:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2687:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2673:15:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6813,"nodeType":"Block","src":"3853:37:62","statements":[{"expression":{"hexValue":"66616c7365","id":6811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3874:5:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6740,"id":6812,"nodeType":"Return","src":"3867:12:62"}]},"id":6814,"nodeType":"IfStatement","src":"2669:1221:62","trueBody":{"id":6810,"nodeType":"Block","src":"2690:1157:62","statements":[{"assignments":[6752],"declarations":[{"constant":false,"id":6752,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":6810,"src":"3042:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6751,"name":"uint256","nodeType":"ElementaryTypeName","src":"3042:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6756,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6753,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6742,"src":"3066:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3079:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3066:14:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3042:38:62"},{"assignments":[6758],"declarations":[{"constant":false,"id":6758,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":6810,"src":"3094:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6757,"name":"uint256","nodeType":"ElementaryTypeName","src":"3094:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6764,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":6759,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"3114:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"3114:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3114:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3135:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3114:22:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3094:42:62"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6765,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6752,"src":"3236:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6766,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6758,"src":"3253:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3236:26:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6794,"nodeType":"IfStatement","src":"3232:389:62","trueBody":{"id":6793,"nodeType":"Block","src":"3264:357:62","statements":[{"assignments":[6769],"declarations":[{"constant":false,"id":6769,"mutability":"mutable","name":"lastValue","nodeType":"VariableDeclaration","scope":6793,"src":"3282:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6768,"name":"address","nodeType":"ElementaryTypeName","src":"3282:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6774,"initialValue":{"baseExpression":{"expression":{"id":6770,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"3302:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6771,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"3302:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6773,"indexExpression":{"id":6772,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6758,"src":"3314:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3302:22:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3282:42:62"},{"expression":{"id":6781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6775,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"3424:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"3424:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6779,"indexExpression":{"id":6777,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6752,"src":"3436:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3424:26:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6780,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6769,"src":"3453:9:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3424:38:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6782,"nodeType":"ExpressionStatement","src":"3424:38:62"},{"expression":{"id":6791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6783,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"3536:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6786,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6689,"src":"3536:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6787,"indexExpression":{"id":6785,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6769,"src":"3549:9:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3536:23:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6788,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6752,"src":"3562:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3578:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3562:17:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3536:43:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6792,"nodeType":"ExpressionStatement","src":"3536:43:62"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":6795,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"3699:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"3699:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"3699:15:62","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":6800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3699:17:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6801,"nodeType":"ExpressionStatement","src":"3699:17:62"},{"expression":{"id":6806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"3784:26:62","subExpression":{"baseExpression":{"expression":{"id":6802,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"3791:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6689,"src":"3791:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6805,"indexExpression":{"id":6804,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6736,"src":"3804:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3791:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6807,"nodeType":"ExpressionStatement","src":"3784:26:62"},{"expression":{"hexValue":"74727565","id":6808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3832:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6740,"id":6809,"nodeType":"Return","src":"3825:11:62"}]}}]},"documentation":{"id":6732,"nodeType":"StructuredDocumentation","src":"2267:157:62","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":6816,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":6737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6734,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6816,"src":"2445:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6733,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"2445:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6736,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6816,"src":"2469:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6735,"name":"address","nodeType":"ElementaryTypeName","src":"2469:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2444:39:62"},"returnParameters":{"id":6740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6739,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6816,"src":"2502:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6738,"name":"bool","nodeType":"ElementaryTypeName","src":"2502:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2501:6:62"},"scope":7131,"src":"2429:1467:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6833,"nodeType":"Block","src":"4063:48:62","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":6826,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6819,"src":"4080:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6689,"src":"4080:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6829,"indexExpression":{"id":6828,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"4093:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4080:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4103:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4080:24:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6825,"id":6832,"nodeType":"Return","src":"4073:31:62"}]},"documentation":{"id":6817,"nodeType":"StructuredDocumentation","src":"3902:70:62","text":" @dev Returns true if the value is in the set. O(1)."},"id":6834,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":6822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6819,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6834,"src":"3995:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6818,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"3995:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6821,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6834,"src":"4019:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6820,"name":"address","nodeType":"ElementaryTypeName","src":"4019:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3994:39:62"},"returnParameters":{"id":6825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6824,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6834,"src":"4057:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6823,"name":"bool","nodeType":"ElementaryTypeName","src":"4057:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4056:6:62"},"scope":7131,"src":"3977:134:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6846,"nodeType":"Block","src":"4264:42:62","statements":[{"expression":{"expression":{"expression":{"id":6842,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6837,"src":"4281:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6843,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"4281:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4281:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6841,"id":6845,"nodeType":"Return","src":"4274:25:62"}]},"documentation":{"id":6835,"nodeType":"StructuredDocumentation","src":"4117:70:62","text":" @dev Returns the number of values on the set. O(1)."},"id":6847,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":6838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6837,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6847,"src":"4208:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6836,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"4208:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"4207:24:62"},"returnParameters":{"id":6841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6840,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6847,"src":"4255:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6839,"name":"uint256","nodeType":"ElementaryTypeName","src":"4255:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4254:9:62"},"scope":7131,"src":"4192:114:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6872,"nodeType":"Block","src":"4731:116:62","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":6858,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6850,"src":"4750:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6859,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"4750:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4750:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6861,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6852,"src":"4771:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4750:26:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6863,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"4778:6:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1776,"src":"4778:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6857,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"4741:8:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4741:58:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6866,"nodeType":"ExpressionStatement","src":"4741:58:62"},{"expression":{"arguments":[{"id":6868,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6850,"src":"4829:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},{"id":6869,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6852,"src":"4834:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6867,"name":"unchecked_at","nodeType":"Identifier","overloadedDeclarations":[6889,7113],"referencedDeclaration":6889,"src":"4816:12:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":6870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4816:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6856,"id":6871,"nodeType":"Return","src":"4809:31:62"}]},"documentation":{"id":6848,"nodeType":"StructuredDocumentation","src":"4312:331:62","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":6873,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":6853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6850,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6873,"src":"4660:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6849,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"4660:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6852,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":6873,"src":"4684:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6851,"name":"uint256","nodeType":"ElementaryTypeName","src":"4684:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4659:39:62"},"returnParameters":{"id":6856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6855,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6873,"src":"4722:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6854,"name":"address","nodeType":"ElementaryTypeName","src":"4722:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4721:9:62"},"scope":7131,"src":"4648:199:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6888,"nodeType":"Block","src":"5305:42:62","statements":[{"expression":{"baseExpression":{"expression":{"id":6883,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6876,"src":"5322:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6884,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"5322:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6886,"indexExpression":{"id":6885,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6878,"src":"5334:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5322:18:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6882,"id":6887,"nodeType":"Return","src":"5315:25:62"}]},"documentation":{"id":6874,"nodeType":"StructuredDocumentation","src":"4853:301:62","text":" @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n than {length}). O(1).\n This function performs one less storage read than {at}, but should only be used when `index` is known to be\n within bounds."},"id":6889,"implemented":true,"kind":"function","modifiers":[],"name":"unchecked_at","nodeType":"FunctionDefinition","parameters":{"id":6879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6876,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6889,"src":"5234:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6875,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"5234:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6878,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":6889,"src":"5258:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6877,"name":"uint256","nodeType":"ElementaryTypeName","src":"5258:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5233:39:62"},"returnParameters":{"id":6882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6881,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6889,"src":"5296:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6880,"name":"address","nodeType":"ElementaryTypeName","src":"5296:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5295:9:62"},"scope":7131,"src":"5212:135:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6905,"nodeType":"Block","src":"5444:47:62","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":6898,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6891,"src":"5461:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6899,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6689,"src":"5461:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6901,"indexExpression":{"id":6900,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6893,"src":"5474:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5461:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5483:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5461:23:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6897,"id":6904,"nodeType":"Return","src":"5454:30:62"}]},"id":6906,"implemented":true,"kind":"function","modifiers":[],"name":"rawIndexOf","nodeType":"FunctionDefinition","parameters":{"id":6894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6891,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6906,"src":"5373:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6890,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"5373:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6893,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6906,"src":"5397:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6892,"name":"address","nodeType":"ElementaryTypeName","src":"5397:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5372:39:62"},"returnParameters":{"id":6897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6896,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6906,"src":"5435:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6895,"name":"uint256","nodeType":"ElementaryTypeName","src":"5435:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5434:9:62"},"scope":7131,"src":"5353:138:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.Bytes32Set","id":6914,"members":[{"constant":false,"id":6909,"mutability":"mutable","name":"_values","nodeType":"VariableDeclaration","scope":6914,"src":"5558:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6907,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5558:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6908,"nodeType":"ArrayTypeName","src":"5558:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":6913,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":6914,"src":"5708:36:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":6912,"keyType":{"id":6910,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5716:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"5708:27:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueType":{"id":6911,"name":"uint256","nodeType":"ElementaryTypeName","src":"5727:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Bytes32Set","nodeType":"StructDefinition","scope":7131,"src":"5497:254:62","visibility":"public"},{"body":{"id":6954,"nodeType":"Block","src":"5997:334:62","statements":[{"condition":{"id":6928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6011:21:62","subExpression":{"arguments":[{"id":6925,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"6021:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},{"id":6926,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6919,"src":"6026:5:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6924,"name":"contains","nodeType":"Identifier","overloadedDeclarations":[6834,7058],"referencedDeclaration":7058,"src":"6012:8:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Bytes32Set_$6914_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) view returns (bool)"}},"id":6927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6012:20:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6952,"nodeType":"Block","src":"6288:37:62","statements":[{"expression":{"hexValue":"66616c7365","id":6950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6309:5:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6923,"id":6951,"nodeType":"Return","src":"6302:12:62"}]},"id":6953,"nodeType":"IfStatement","src":"6007:318:62","trueBody":{"id":6949,"nodeType":"Block","src":"6034:248:62","statements":[{"expression":{"arguments":[{"id":6934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6919,"src":"6065:5:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":6929,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"6048:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6932,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"6048:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"6048:16:62","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":6935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6048:23:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6936,"nodeType":"ExpressionStatement","src":"6048:23:62"},{"expression":{"id":6945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6937,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"6206:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6940,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6913,"src":"6206:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6941,"indexExpression":{"id":6939,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6919,"src":"6219:5:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6206:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":6942,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"6228:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"6228:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6228:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6206:40:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6946,"nodeType":"ExpressionStatement","src":"6206:40:62"},{"expression":{"hexValue":"74727565","id":6947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6267:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6923,"id":6948,"nodeType":"Return","src":"6260:11:62"}]}}]},"documentation":{"id":6915,"nodeType":"StructuredDocumentation","src":"5757:159:62","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":6955,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":6920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6917,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6955,"src":"5934:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":6916,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6914,"src":"5934:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6919,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6955,"src":"5958:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6918,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5958:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5933:39:62"},"returnParameters":{"id":6923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6922,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6955,"src":"5991:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6921,"name":"bool","nodeType":"ElementaryTypeName","src":"5991:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5990:6:62"},"scope":7131,"src":"5921:410:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7039,"nodeType":"Block","src":"6571:1388:62","statements":[{"assignments":[6966],"declarations":[{"constant":false,"id":6966,"mutability":"mutable","name":"valueIndex","nodeType":"VariableDeclaration","scope":7039,"src":"6681:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6965,"name":"uint256","nodeType":"ElementaryTypeName","src":"6681:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6971,"initialValue":{"baseExpression":{"expression":{"id":6967,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"6702:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6968,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6913,"src":"6702:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6970,"indexExpression":{"id":6969,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6960,"src":"6715:5:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6702:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6681:40:62"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6972,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6966,"src":"6736:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6750:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6736:15:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7037,"nodeType":"Block","src":"7916:37:62","statements":[{"expression":{"hexValue":"66616c7365","id":7035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7937:5:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6964,"id":7036,"nodeType":"Return","src":"7930:12:62"}]},"id":7038,"nodeType":"IfStatement","src":"6732:1221:62","trueBody":{"id":7034,"nodeType":"Block","src":"6753:1157:62","statements":[{"assignments":[6976],"declarations":[{"constant":false,"id":6976,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":7034,"src":"7105:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6975,"name":"uint256","nodeType":"ElementaryTypeName","src":"7105:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6980,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6977,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6966,"src":"7129:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7142:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7129:14:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7105:38:62"},{"assignments":[6982],"declarations":[{"constant":false,"id":6982,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":7034,"src":"7157:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6981,"name":"uint256","nodeType":"ElementaryTypeName","src":"7157:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6988,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":6983,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"7177:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6984,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"7177:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7177:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7198:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7177:22:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7157:42:62"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6989,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6976,"src":"7299:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6990,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6982,"src":"7316:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7299:26:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7018,"nodeType":"IfStatement","src":"7295:389:62","trueBody":{"id":7017,"nodeType":"Block","src":"7327:357:62","statements":[{"assignments":[6993],"declarations":[{"constant":false,"id":6993,"mutability":"mutable","name":"lastValue","nodeType":"VariableDeclaration","scope":7017,"src":"7345:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6992,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7345:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6998,"initialValue":{"baseExpression":{"expression":{"id":6994,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"7365:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6995,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"7365:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6997,"indexExpression":{"id":6996,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6982,"src":"7377:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7365:22:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7345:42:62"},{"expression":{"id":7005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6999,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"7487:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7002,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"7487:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7003,"indexExpression":{"id":7001,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6976,"src":"7499:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7487:26:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7004,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6993,"src":"7516:9:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7487:38:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7006,"nodeType":"ExpressionStatement","src":"7487:38:62"},{"expression":{"id":7015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7007,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"7599:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7010,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6913,"src":"7599:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7011,"indexExpression":{"id":7009,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6993,"src":"7612:9:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7599:23:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7012,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6976,"src":"7625:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7641:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7625:17:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7599:43:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7016,"nodeType":"ExpressionStatement","src":"7599:43:62"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7019,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"7762:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7022,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"7762:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"7762:15:62","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7762:17:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7025,"nodeType":"ExpressionStatement","src":"7762:17:62"},{"expression":{"id":7030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"7847:26:62","subExpression":{"baseExpression":{"expression":{"id":7026,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"7854:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7027,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6913,"src":"7854:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7029,"indexExpression":{"id":7028,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6960,"src":"7867:5:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7854:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7031,"nodeType":"ExpressionStatement","src":"7847:26:62"},{"expression":{"hexValue":"74727565","id":7032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7895:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6964,"id":7033,"nodeType":"Return","src":"7888:11:62"}]}}]},"documentation":{"id":6956,"nodeType":"StructuredDocumentation","src":"6337:150:62","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was present."},"id":7040,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":6961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6958,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7040,"src":"6508:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":6957,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6914,"src":"6508:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6960,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7040,"src":"6532:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6959,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6532:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6507:39:62"},"returnParameters":{"id":6964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6963,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7040,"src":"6565:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6962,"name":"bool","nodeType":"ElementaryTypeName","src":"6565:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6564:6:62"},"scope":7131,"src":"6492:1467:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7057,"nodeType":"Block","src":"8126:48:62","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":7050,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7043,"src":"8143:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7051,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6913,"src":"8143:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7053,"indexExpression":{"id":7052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7045,"src":"8156:5:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8143:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8166:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8143:24:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7049,"id":7056,"nodeType":"Return","src":"8136:31:62"}]},"documentation":{"id":7041,"nodeType":"StructuredDocumentation","src":"7965:70:62","text":" @dev Returns true if the value is in the set. O(1)."},"id":7058,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":7046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7043,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7058,"src":"8058:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7042,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6914,"src":"8058:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7045,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7058,"src":"8082:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7044,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8082:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8057:39:62"},"returnParameters":{"id":7049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7048,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7058,"src":"8120:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7047,"name":"bool","nodeType":"ElementaryTypeName","src":"8120:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8119:6:62"},"scope":7131,"src":"8040:134:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7070,"nodeType":"Block","src":"8327:42:62","statements":[{"expression":{"expression":{"expression":{"id":7066,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7061,"src":"8344:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"8344:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8344:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7065,"id":7069,"nodeType":"Return","src":"8337:25:62"}]},"documentation":{"id":7059,"nodeType":"StructuredDocumentation","src":"8180:70:62","text":" @dev Returns the number of values on the set. O(1)."},"id":7071,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":7062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7061,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7071,"src":"8271:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7060,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6914,"src":"8271:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"}],"src":"8270:24:62"},"returnParameters":{"id":7065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7064,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7071,"src":"8318:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7063,"name":"uint256","nodeType":"ElementaryTypeName","src":"8318:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8317:9:62"},"scope":7131,"src":"8255:114:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7096,"nodeType":"Block","src":"8794:116:62","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7082,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7074,"src":"8813:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"8813:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8813:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7085,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7076,"src":"8834:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8813:26:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7087,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"8841:6:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":7088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1776,"src":"8841:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7081,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"8804:8:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8804:58:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7090,"nodeType":"ExpressionStatement","src":"8804:58:62"},{"expression":{"arguments":[{"id":7092,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7074,"src":"8892:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},{"id":7093,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7076,"src":"8897:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7091,"name":"unchecked_at","nodeType":"Identifier","overloadedDeclarations":[6889,7113],"referencedDeclaration":7113,"src":"8879:12:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Bytes32Set_$6914_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Bytes32Set storage pointer,uint256) view returns (bytes32)"}},"id":7094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8879:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7080,"id":7095,"nodeType":"Return","src":"8872:31:62"}]},"documentation":{"id":7072,"nodeType":"StructuredDocumentation","src":"8375:331:62","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":7097,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":7077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7074,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7097,"src":"8723:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7073,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6914,"src":"8723:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7076,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":7097,"src":"8747:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7075,"name":"uint256","nodeType":"ElementaryTypeName","src":"8747:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8722:39:62"},"returnParameters":{"id":7080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7079,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7097,"src":"8785:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7078,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8785:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8784:9:62"},"scope":7131,"src":"8711:199:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7112,"nodeType":"Block","src":"9368:42:62","statements":[{"expression":{"baseExpression":{"expression":{"id":7107,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"9385:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7108,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"9385:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7110,"indexExpression":{"id":7109,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7102,"src":"9397:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9385:18:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7106,"id":7111,"nodeType":"Return","src":"9378:25:62"}]},"documentation":{"id":7098,"nodeType":"StructuredDocumentation","src":"8916:301:62","text":" @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n than {length}). O(1).\n This function performs one less storage read than {at}, but should only be used when `index` is known to be\n within bounds."},"id":7113,"implemented":true,"kind":"function","modifiers":[],"name":"unchecked_at","nodeType":"FunctionDefinition","parameters":{"id":7103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7100,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7113,"src":"9297:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7099,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6914,"src":"9297:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7102,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":7113,"src":"9321:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7101,"name":"uint256","nodeType":"ElementaryTypeName","src":"9321:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9296:39:62"},"returnParameters":{"id":7106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7105,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7113,"src":"9359:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7104,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9359:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9358:9:62"},"scope":7131,"src":"9275:135:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7129,"nodeType":"Block","src":"9507:47:62","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":7122,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"9524:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7123,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6913,"src":"9524:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7125,"indexExpression":{"id":7124,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7117,"src":"9537:5:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9524:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9546:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9524:23:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7121,"id":7128,"nodeType":"Return","src":"9517:30:62"}]},"id":7130,"implemented":true,"kind":"function","modifiers":[],"name":"rawIndexOf","nodeType":"FunctionDefinition","parameters":{"id":7118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7115,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7130,"src":"9436:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7114,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6914,"src":"9436:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7117,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7130,"src":"9460:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7116,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9460:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9435:39:62"},"returnParameters":{"id":7121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7120,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7130,"src":"9498:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7119,"name":"uint256","nodeType":"ElementaryTypeName","src":"9498:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9497:9:62"},"scope":7131,"src":"9416:138:62","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":7132,"src":"1210:8346:62"}],"src":"406:9151:62"},"id":62},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","exportedSymbols":{"ReentrancyGuard":[7187]},"id":7188,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7133,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"374:23:63"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7134,"nodeType":"ImportDirective","scope":7188,"sourceUnit":2249,"src":"399:90:63","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":7135,"nodeType":"StructuredDocumentation","src":"491:750:63","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."},"fullyImplemented":true,"id":7187,"linearizedBaseContracts":[7187],"name":"ReentrancyGuard","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":7138,"mutability":"constant","name":"_NOT_ENTERED","nodeType":"VariableDeclaration","scope":7187,"src":"2030:41:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7136,"name":"uint256","nodeType":"ElementaryTypeName","src":"2030:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":7137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2070:1:63","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":7141,"mutability":"constant","name":"_ENTERED","nodeType":"VariableDeclaration","scope":7187,"src":"2077:37:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7139,"name":"uint256","nodeType":"ElementaryTypeName","src":"2077:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":7140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2113:1:63","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"constant":false,"id":7143,"mutability":"mutable","name":"_status","nodeType":"VariableDeclaration","scope":7187,"src":"2121:23:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7142,"name":"uint256","nodeType":"ElementaryTypeName","src":"2121:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":7150,"nodeType":"Block","src":"2165:39:63","statements":[{"expression":{"id":7148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7146,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"2175:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7147,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7138,"src":"2185:12:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2175:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7149,"nodeType":"ExpressionStatement","src":"2175:22:63"}]},"id":7151,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7144,"nodeType":"ParameterList","parameters":[],"src":"2162:2:63"},"returnParameters":{"id":7145,"nodeType":"ParameterList","parameters":[],"src":"2165:0:63"},"scope":7187,"src":"2151:53:63","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7161,"nodeType":"Block","src":"2603:77:63","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7154,"name":"_enterNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7178,"src":"2613:18:63","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2613:20:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7156,"nodeType":"ExpressionStatement","src":"2613:20:63"},{"id":7157,"nodeType":"PlaceholderStatement","src":"2643:1:63"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7158,"name":"_exitNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7186,"src":"2654:17:63","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2654:19:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7160,"nodeType":"ExpressionStatement","src":"2654:19:63"}]},"documentation":{"id":7152,"nodeType":"StructuredDocumentation","src":"2210:364:63","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and make it call a\n `private` function that does the actual work."},"id":7162,"name":"nonReentrant","nodeType":"ModifierDefinition","parameters":{"id":7153,"nodeType":"ParameterList","parameters":[],"src":"2600:2:63"},"src":"2579:101:63","virtual":false,"visibility":"internal"},{"body":{"id":7177,"nodeType":"Block","src":"2724:233:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7166,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"2818:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7167,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"2829:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2818:19:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7169,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2839:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":7170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"REENTRANCY","nodeType":"MemberAccess","referencedDeclaration":2007,"src":"2839:17:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7165,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2809:8:63","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2809:48:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7172,"nodeType":"ExpressionStatement","src":"2809:48:63"},{"expression":{"id":7175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7173,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"2932:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7174,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"2942:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2932:18:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7176,"nodeType":"ExpressionStatement","src":"2932:18:63"}]},"id":7178,"implemented":true,"kind":"function","modifiers":[],"name":"_enterNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":7163,"nodeType":"ParameterList","parameters":[],"src":"2713:2:63"},"returnParameters":{"id":7164,"nodeType":"ParameterList","parameters":[],"src":"2724:0:63"},"scope":7187,"src":"2686:271:63","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":7185,"nodeType":"Block","src":"3000:171:63","statements":[{"expression":{"id":7183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7181,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"3142:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7182,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7138,"src":"3152:12:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3142:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7184,"nodeType":"ExpressionStatement","src":"3142:22:63"}]},"id":7186,"implemented":true,"kind":"function","modifiers":[],"name":"_exitNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":7179,"nodeType":"ParameterList","parameters":[],"src":"2989:2:63"},"returnParameters":{"id":7180,"nodeType":"ParameterList","parameters":[],"src":"3000:0:63"},"scope":7187,"src":"2963:208:63","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":7188,"src":"1242:1931:63"}],"src":"374:2800:63"},"id":63},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","exportedSymbols":{"SafeERC20":[7341]},"id":7342,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7189,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"313:23:64"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7190,"nodeType":"ImportDirective","scope":7342,"sourceUnit":2249,"src":"338:90:64","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":7191,"nodeType":"ImportDirective","scope":7342,"sourceUnit":2448,"src":"429:87:64","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7192,"nodeType":"StructuredDocumentation","src":"518:457:64","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":7341,"linearizedBaseContracts":[7341],"name":"SafeERC20","nodeType":"ContractDefinition","nodes":[{"body":{"id":7250,"nodeType":"Block","src":"1102:406:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7201,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7198,"src":"1218:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1227:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1218:10:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":7208,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1256:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}],"id":7207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1248:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7206,"name":"address","nodeType":"ElementaryTypeName","src":"1248:7:64","typeDescriptions":{}}},"id":7209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1248:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7212,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7196,"src":"1271:2:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1263:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7210,"name":"address","nodeType":"ElementaryTypeName","src":"1263:7:64","typeDescriptions":{}}},"id":7213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1263:11:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7204,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"1232:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":7205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2406,"src":"1232:15:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":7214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1232:43:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1279:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1232:48:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1218:62:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7234,"nodeType":"IfStatement","src":"1214:183:64","trueBody":{"id":7233,"nodeType":"Block","src":"1282:115:64","statements":[{"expression":{"arguments":[{"arguments":[{"id":7221,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"1324:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":7220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1316:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7219,"name":"address","nodeType":"ElementaryTypeName","src":"1316:7:64","typeDescriptions":{}}},"id":7222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1316:14:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":7225,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"1355:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":7226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2416,"src":"1355:13:64","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":7227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1355:22:64","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":7228,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7196,"src":"1379:2:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":7229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1383:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":7223,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1332:3:64","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1332:22:64","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":7230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1332:53:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7218,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7340,"src":"1296:19:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":7231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1296:90:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7232,"nodeType":"ExpressionStatement","src":"1296:90:64"}]}},{"expression":{"arguments":[{"arguments":[{"id":7238,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"1435:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":7237,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1427:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7236,"name":"address","nodeType":"ElementaryTypeName","src":"1427:7:64","typeDescriptions":{}}},"id":7239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1427:14:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":7242,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"1466:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":7243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2416,"src":"1466:13:64","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":7244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1466:22:64","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":7245,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7196,"src":"1490:2:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7246,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7198,"src":"1494:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7240,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1443:3:64","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1443:22:64","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":7247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1443:57:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7235,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7340,"src":"1407:19:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":7248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1407:94:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7249,"nodeType":"ExpressionStatement","src":"1407:94:64"}]},"id":7251,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nodeType":"FunctionDefinition","parameters":{"id":7199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7194,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7251,"src":"1031:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":7193,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1031:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":7196,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":7251,"src":"1053:10:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7195,"name":"address","nodeType":"ElementaryTypeName","src":"1053:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7198,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7251,"src":"1073:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7197,"name":"uint256","nodeType":"ElementaryTypeName","src":"1073:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1021:71:64"},"returnParameters":{"id":7200,"nodeType":"ParameterList","parameters":[],"src":"1102:0:64"},"scope":7341,"src":"1001:507:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7275,"nodeType":"Block","src":"1616:112:64","statements":[{"expression":{"arguments":[{"arguments":[{"id":7263,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7253,"src":"1654:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":7262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1646:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7261,"name":"address","nodeType":"ElementaryTypeName","src":"1646:7:64","typeDescriptions":{}}},"id":7264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1646:14:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":7267,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7253,"src":"1685:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":7268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2396,"src":"1685:14:64","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":7269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1685:23:64","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":7270,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7255,"src":"1710:2:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7271,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7257,"src":"1714:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7265,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1662:3:64","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1662:22:64","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":7272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1662:58:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7260,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7340,"src":"1626:19:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":7273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1626:95:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7274,"nodeType":"ExpressionStatement","src":"1626:95:64"}]},"id":7276,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":7258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7253,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7276,"src":"1545:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":7252,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1545:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":7255,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":7276,"src":"1567:10:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7254,"name":"address","nodeType":"ElementaryTypeName","src":"1567:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7257,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7276,"src":"1587:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7256,"name":"uint256","nodeType":"ElementaryTypeName","src":"1587:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1535:71:64"},"returnParameters":{"id":7259,"nodeType":"ParameterList","parameters":[],"src":"1616:0:64"},"scope":7341,"src":"1514:214:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7303,"nodeType":"Block","src":"1862:122:64","statements":[{"expression":{"arguments":[{"arguments":[{"id":7290,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7278,"src":"1900:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":7289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1892:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7288,"name":"address","nodeType":"ElementaryTypeName","src":"1892:7:64","typeDescriptions":{}}},"id":7291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1892:14:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":7294,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7278,"src":"1931:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":7295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2428,"src":"1931:18:64","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":7296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1931:27:64","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":7297,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7280,"src":"1960:4:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"1966:2:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7299,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7284,"src":"1970:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7292,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1908:3:64","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1908:22:64","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":7300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1908:68:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7287,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7340,"src":"1872:19:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":7301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1872:105:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7302,"nodeType":"ExpressionStatement","src":"1872:105:64"}]},"id":7304,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":7285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7278,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7304,"src":"1769:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":7277,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1769:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":7280,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":7304,"src":"1791:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7279,"name":"address","nodeType":"ElementaryTypeName","src":"1791:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7282,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":7304,"src":"1813:10:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7281,"name":"address","nodeType":"ElementaryTypeName","src":"1813:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7284,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7304,"src":"1833:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7283,"name":"uint256","nodeType":"ElementaryTypeName","src":"1833:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1759:93:64"},"returnParameters":{"id":7286,"nodeType":"ParameterList","parameters":[],"src":"1862:0:64"},"scope":7341,"src":"1734:250:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7339,"nodeType":"Block","src":"2395:843:64","statements":[{"assignments":[7313,7315],"declarations":[{"constant":false,"id":7313,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":7339,"src":"2626:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7312,"name":"bool","nodeType":"ElementaryTypeName","src":"2626:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7315,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":7339,"src":"2640:23:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7314,"name":"bytes","nodeType":"ElementaryTypeName","src":"2640:5:64","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7320,"initialValue":{"arguments":[{"id":7318,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7309,"src":"2678:4:64","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7316,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7307,"src":"2667:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2667:10:64","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":7319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2667:16:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2625:58:64"},{"AST":{"nodeType":"YulBlock","src":"2848:156:64","statements":[{"body":{"nodeType":"YulBlock","src":"2880:114:64","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2913:1:64","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2916:1:64","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"2919:14:64"},"nodeType":"YulFunctionCall","src":"2919:16:64"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"2898:14:64"},"nodeType":"YulFunctionCall","src":"2898:38:64"},"nodeType":"YulExpressionStatement","src":"2898:38:64"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2960:1:64","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"2963:14:64"},"nodeType":"YulFunctionCall","src":"2963:16:64"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2953:6:64"},"nodeType":"YulFunctionCall","src":"2953:27:64"},"nodeType":"YulExpressionStatement","src":"2953:27:64"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"2868:7:64"},{"kind":"number","nodeType":"YulLiteral","src":"2877:1:64","type":"","value":"0"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2865:2:64"},"nodeType":"YulFunctionCall","src":"2865:14:64"},"nodeType":"YulIf","src":"2862:2:64"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7313,"isOffset":false,"isSlot":false,"src":"2868:7:64","valueSize":1}],"id":7321,"nodeType":"InlineAssembly","src":"2839:165:64"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7323,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7315,"src":"3143:10:64","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3143:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3164:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3143:22:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":7329,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7315,"src":"3180:10:64","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":7331,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3193:4:64","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":7330,"name":"bool","nodeType":"ElementaryTypeName","src":"3193:4:64","typeDescriptions":{}}}],"id":7332,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3192:6:64","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":7327,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3169:3:64","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"3169:10:64","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":7333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3169:30:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3143:56:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7335,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"3201:6:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":7336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SAFE_ERC20_CALL_FAILED","nodeType":"MemberAccess","referencedDeclaration":2061,"src":"3201:29:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7322,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"3134:8:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3134:97:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7338,"nodeType":"ExpressionStatement","src":"3134:97:64"}]},"documentation":{"id":7305,"nodeType":"StructuredDocumentation","src":"1990:329:64","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n WARNING: `token` is assumed to be a contract: calls to EOAs will *not* revert."},"id":7340,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nodeType":"FunctionDefinition","parameters":{"id":7310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7307,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7340,"src":"2353:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7306,"name":"address","nodeType":"ElementaryTypeName","src":"2353:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7309,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":7340,"src":"2368:17:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7308,"name":"bytes","nodeType":"ElementaryTypeName","src":"2368:5:64","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2352:34:64"},"returnParameters":{"id":7311,"nodeType":"ParameterList","parameters":[],"src":"2395:0:64"},"scope":7341,"src":"2324:914:64","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":7342,"src":"976:2264:64"}],"src":"313:2928:64"},"id":64},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","exportedSymbols":{"SafeMath":[7419]},"id":7420,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7343,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:65"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7344,"nodeType":"ImportDirective","scope":7420,"sourceUnit":2249,"src":"58:90:65","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7345,"nodeType":"StructuredDocumentation","src":"150:563:65","text":" @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"id":7419,"linearizedBaseContracts":[7419],"name":"SafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":7371,"nodeType":"Block","src":"1033:100:65","statements":[{"assignments":[7356],"declarations":[{"constant":false,"id":7356,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":7371,"src":"1043:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7355,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7360,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7357,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7348,"src":"1055:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7358,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7350,"src":"1059:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1055:5:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1043:17:65"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7362,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7356,"src":"1079:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7363,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7348,"src":"1084:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1079:6:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7365,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1087:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":7366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1746,"src":"1087:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7361,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1070:8:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1070:37:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7368,"nodeType":"ExpressionStatement","src":"1070:37:65"},{"expression":{"id":7369,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7356,"src":"1125:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7354,"id":7370,"nodeType":"Return","src":"1118:8:65"}]},"documentation":{"id":7346,"nodeType":"StructuredDocumentation","src":"737:224:65","text":" @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."},"id":7372,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":7351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7348,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7372,"src":"979:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7347,"name":"uint256","nodeType":"ElementaryTypeName","src":"979:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7350,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7372,"src":"990:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7349,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"978:22:65"},"returnParameters":{"id":7354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7353,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7372,"src":"1024:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7352,"name":"uint256","nodeType":"ElementaryTypeName","src":"1024:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1023:9:65"},"scope":7419,"src":"966:167:65","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7389,"nodeType":"Block","src":"1471:54:65","statements":[{"expression":{"arguments":[{"id":7383,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7375,"src":"1492:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7384,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7377,"src":"1495:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7385,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1498:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":7386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1749,"src":"1498:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7382,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[7390,7418],"referencedDeclaration":7418,"src":"1488:3:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1488:30:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7381,"id":7388,"nodeType":"Return","src":"1481:37:65"}]},"documentation":{"id":7373,"nodeType":"StructuredDocumentation","src":"1139:260:65","text":" @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":7390,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":7378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7375,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7390,"src":"1417:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7374,"name":"uint256","nodeType":"ElementaryTypeName","src":"1417:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7377,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7390,"src":"1428:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7376,"name":"uint256","nodeType":"ElementaryTypeName","src":"1428:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1416:22:65"},"returnParameters":{"id":7381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7380,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7390,"src":"1462:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7379,"name":"uint256","nodeType":"ElementaryTypeName","src":"1462:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1461:9:65"},"scope":7419,"src":"1404:121:65","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7417,"nodeType":"Block","src":"1932:90:65","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7403,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7395,"src":"1951:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":7404,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7393,"src":"1956:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1951:6:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":7406,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7397,"src":"1959:9:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7402,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1942:8:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1942:27:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7408,"nodeType":"ExpressionStatement","src":"1942:27:65"},{"assignments":[7410],"declarations":[{"constant":false,"id":7410,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":7417,"src":"1979:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7409,"name":"uint256","nodeType":"ElementaryTypeName","src":"1979:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7414,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7411,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7393,"src":"1991:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7412,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7395,"src":"1995:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1991:5:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1979:17:65"},{"expression":{"id":7415,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7410,"src":"2014:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7401,"id":7416,"nodeType":"Return","src":"2007:8:65"}]},"documentation":{"id":7391,"nodeType":"StructuredDocumentation","src":"1531:280:65","text":" @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":7418,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":7398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7393,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7418,"src":"1838:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7392,"name":"uint256","nodeType":"ElementaryTypeName","src":"1838:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7395,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7418,"src":"1857:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7394,"name":"uint256","nodeType":"ElementaryTypeName","src":"1857:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7397,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":7418,"src":"1876:17:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7396,"name":"uint256","nodeType":"ElementaryTypeName","src":"1876:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1828:71:65"},"returnParameters":{"id":7401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7400,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7418,"src":"1923:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7399,"name":"uint256","nodeType":"ElementaryTypeName","src":"1923:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1922:9:65"},"scope":7419,"src":"1816:206:65","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7420,"src":"714:1310:65"}],"src":"33:1992:65"},"id":65},"contracts/BalancerMinter.sol":{"ast":{"absolutePath":"contracts/BalancerMinter.sol","exportedSymbols":{"BalancerMinter":[7866]},"id":7867,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7421,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:66"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","id":7422,"nodeType":"ImportDirective","scope":7867,"sourceUnit":198,"src":"713:85:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":7423,"nodeType":"ImportDirective","scope":7867,"sourceUnit":7188,"src":"800:85:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","id":7424,"nodeType":"ImportDirective","scope":7867,"sourceUnit":7420,"src":"886:78:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","id":7425,"nodeType":"ImportDirective","scope":7867,"sourceUnit":6022,"src":"965:76:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","id":7426,"nodeType":"ImportDirective","scope":7867,"sourceUnit":3309,"src":"1042:87:66","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":7427,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":197,"src":"1167:15:66","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$197","typeString":"contract IBalancerMinter"}},"id":7428,"nodeType":"InheritanceSpecifier","src":"1167:15:66"},{"baseName":{"id":7429,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"1184:15:66","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":7430,"nodeType":"InheritanceSpecifier","src":"1184:15:66"},{"baseName":{"id":7431,"name":"EOASignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":3308,"src":"1201:22:66","typeDescriptions":{"typeIdentifier":"t_contract$_EOASignaturesValidator_$3308","typeString":"contract EOASignaturesValidator"}},"id":7432,"nodeType":"InheritanceSpecifier","src":"1201:22:66"}],"contractDependencies":[197,2311,3308,6021,7187],"contractKind":"contract","fullyImplemented":false,"id":7866,"linearizedBaseContracts":[7866,3308,6021,2311,7187,197],"name":"BalancerMinter","nodeType":"ContractDefinition","nodes":[{"id":7435,"libraryName":{"id":7433,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7419,"src":"1236:8:66","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7419","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"1230:27:66","typeName":{"id":7434,"name":"uint256","nodeType":"ElementaryTypeName","src":"1249:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":7437,"mutability":"immutable","name":"_token","nodeType":"VariableDeclaration","scope":7866,"src":"1263:31:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":7436,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1263:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"private"},{"constant":false,"id":7443,"mutability":"mutable","name":"_minted","nodeType":"VariableDeclaration","scope":7866,"src":"1331:63:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":7442,"keyType":{"id":7438,"name":"address","nodeType":"ElementaryTypeName","src":"1339:7:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1331:47:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":7441,"keyType":{"id":7439,"name":"address","nodeType":"ElementaryTypeName","src":"1358:7:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1350:27:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":7440,"name":"uint256","nodeType":"ElementaryTypeName","src":"1369:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":7449,"mutability":"mutable","name":"_allowedMinter","nodeType":"VariableDeclaration","scope":7866,"src":"1435:67:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":7448,"keyType":{"id":7444,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1435:44:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":7447,"keyType":{"id":7445,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1454:24:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":7446,"name":"bool","nodeType":"ElementaryTypeName","src":"1473:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"constant":true,"id":7454,"mutability":"constant","name":"_SET_MINTER_APPROVAL_TYPEHASH","nodeType":"VariableDeclaration","scope":7866,"src":"1561:162:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7450,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1561:7:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5365744d696e746572417070726f76616c2861646472657373206d696e7465722c626f6f6c20617070726f76616c2c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529","id":7452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1637:80:66","typeDescriptions":{"typeIdentifier":"t_stringliteral_c87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd815380","typeString":"literal_string \"SetMinterApproval(address minter,bool approval,uint256 nonce,uint256 deadline)\""},"value":"SetMinterApproval(address minter,bool approval,uint256 nonce,uint256 deadline)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd815380","typeString":"literal_string \"SetMinterApproval(address minter,bool approval,uint256 nonce,uint256 deadline)\""}],"id":7451,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1618:9:66","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1618:105:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"anonymous":false,"id":7462,"name":"MinterApprovalSet","nodeType":"EventDefinition","parameters":{"id":7461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7456,"indexed":true,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7462,"src":"1754:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7455,"name":"address","nodeType":"ElementaryTypeName","src":"1754:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7458,"indexed":true,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":7462,"src":"1776:22:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7457,"name":"address","nodeType":"ElementaryTypeName","src":"1776:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7460,"indexed":false,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":7462,"src":"1800:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7459,"name":"bool","nodeType":"ElementaryTypeName","src":"1800:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1753:61:66"},"src":"1730:85:66"},{"body":{"id":7479,"nodeType":"Block","src":"1942:31:66","statements":[{"expression":{"id":7477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7475,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7437,"src":"1952:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7476,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7464,"src":"1961:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"1952:14:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":7478,"nodeType":"ExpressionStatement","src":"1952:14:66"}]},"id":7480,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7471,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7466,"src":"1927:4:66","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7472,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7468,"src":"1933:7:66","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":7473,"modifierName":{"id":7470,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"1920:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP712_$6021_$","typeString":"type(contract EIP712)"}},"nodeType":"ModifierInvocation","src":"1920:21:66"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7464,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7480,"src":"1842:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":7463,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1842:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":7466,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":7480,"src":"1864:18:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7465,"name":"string","nodeType":"ElementaryTypeName","src":"1864:6:66","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7468,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":7480,"src":"1892:21:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7467,"name":"string","nodeType":"ElementaryTypeName","src":"1892:6:66","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1832:87:66"},"returnParameters":{"id":7474,"nodeType":"ParameterList","parameters":[],"src":"1942:0:66"},"scope":7866,"src":"1821:152:66","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[80],"body":{"id":7489,"nodeType":"Block","src":"2081:30:66","statements":[{"expression":{"id":7487,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7437,"src":"2098:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"functionReturnParameters":7486,"id":7488,"nodeType":"Return","src":"2091:13:66"}]},"documentation":{"id":7481,"nodeType":"StructuredDocumentation","src":"1979:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"c0039699","id":7490,"implemented":true,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","overrides":{"id":7483,"nodeType":"OverrideSpecifier","overrides":[],"src":"2055:8:66"},"parameters":{"id":7482,"nodeType":"ParameterList","parameters":[],"src":"2040:2:66"},"returnParameters":{"id":7486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7485,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7490,"src":"2073:6:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":7484,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2073:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2072:8:66"},"scope":7866,"src":"2015:96:66","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[88],"body":{"id":7507,"nodeType":"Block","src":"2231:51:66","statements":[{"expression":{"arguments":[{"id":7502,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7493,"src":"2257:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7503,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2264:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2264:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":7501,"name":"_mintFor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7750,"src":"2248:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":7505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2248:27:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7500,"id":7506,"nodeType":"Return","src":"2241:34:66"}]},"documentation":{"id":7491,"nodeType":"StructuredDocumentation","src":"2117:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"6a627842","id":7508,"implemented":true,"kind":"function","modifiers":[{"id":7497,"modifierName":{"id":7496,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"2200:12:66","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2200:12:66"}],"name":"mint","nodeType":"FunctionDefinition","overrides":{"id":7495,"nodeType":"OverrideSpecifier","overrides":[],"src":"2191:8:66"},"parameters":{"id":7494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7493,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":7508,"src":"2167:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7492,"name":"address","nodeType":"ElementaryTypeName","src":"2167:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2166:15:66"},"returnParameters":{"id":7500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7499,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7508,"src":"2222:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7498,"name":"uint256","nodeType":"ElementaryTypeName","src":"2222:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2221:9:66"},"scope":7866,"src":"2153:129:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[97],"body":{"id":7526,"nodeType":"Block","src":"2418:56:66","statements":[{"expression":{"arguments":[{"id":7521,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7512,"src":"2448:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"expression":{"id":7522,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2456:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2456:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":7520,"name":"_mintForMany","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7760,"src":"2435:12:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_calldata_ptr_$_t_address_$returns$_t_uint256_$","typeString":"function (address[] calldata,address) returns (uint256)"}},"id":7524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2435:32:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7519,"id":7525,"nodeType":"Return","src":"2428:39:66"}]},"documentation":{"id":7509,"nodeType":"StructuredDocumentation","src":"2288:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"397ada21","id":7527,"implemented":true,"kind":"function","modifiers":[{"id":7516,"modifierName":{"id":7515,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"2387:12:66","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2387:12:66"}],"name":"mintMany","nodeType":"FunctionDefinition","overrides":{"id":7514,"nodeType":"OverrideSpecifier","overrides":[],"src":"2378:8:66"},"parameters":{"id":7513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7512,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":7527,"src":"2342:25:66","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7510,"name":"address","nodeType":"ElementaryTypeName","src":"2342:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7511,"nodeType":"ArrayTypeName","src":"2342:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2341:27:66"},"returnParameters":{"id":7519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7518,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7527,"src":"2409:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7517,"name":"uint256","nodeType":"ElementaryTypeName","src":"2409:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2408:9:66"},"scope":7866,"src":"2324:150:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[107],"body":{"id":7555,"nodeType":"Block","src":"2611:135:66","statements":[{"expression":{"arguments":[{"baseExpression":{"baseExpression":{"id":7541,"name":"_allowedMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"2629:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7544,"indexExpression":{"expression":{"id":7542,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2644:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2644:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2629:26:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7546,"indexExpression":{"id":7545,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7532,"src":"2656:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2629:32:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572","id":7547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2663:37:66","typeDescriptions":{"typeIdentifier":"t_stringliteral_869d236cd21bde9ea7f9c1cef8a678cb12f22a7cdfb332a971891dd8f23ae5f8","typeString":"literal_string \"Caller not allowed to mint for user\""},"value":"Caller not allowed to mint for user"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_869d236cd21bde9ea7f9c1cef8a678cb12f22a7cdfb332a971891dd8f23ae5f8","typeString":"literal_string \"Caller not allowed to mint for user\""}],"id":7540,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2621:7:66","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2621:80:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7549,"nodeType":"ExpressionStatement","src":"2621:80:66"},{"expression":{"arguments":[{"id":7551,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7530,"src":"2727:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7552,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7532,"src":"2734:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7550,"name":"_mintFor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7750,"src":"2718:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":7553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2718:21:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7539,"id":7554,"nodeType":"Return","src":"2711:28:66"}]},"documentation":{"id":7528,"nodeType":"StructuredDocumentation","src":"2480:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"7504a15d","id":7556,"implemented":true,"kind":"function","modifiers":[{"id":7536,"modifierName":{"id":7535,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"2580:12:66","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2580:12:66"}],"name":"mintFor","nodeType":"FunctionDefinition","overrides":{"id":7534,"nodeType":"OverrideSpecifier","overrides":[],"src":"2571:8:66"},"parameters":{"id":7533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7530,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":7556,"src":"2533:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7529,"name":"address","nodeType":"ElementaryTypeName","src":"2533:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7532,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7556,"src":"2548:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7531,"name":"address","nodeType":"ElementaryTypeName","src":"2548:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2532:29:66"},"returnParameters":{"id":7539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7538,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7556,"src":"2602:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7537,"name":"uint256","nodeType":"ElementaryTypeName","src":"2602:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2601:9:66"},"scope":7866,"src":"2516:230:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[118],"body":{"id":7585,"nodeType":"Block","src":"2899:140:66","statements":[{"expression":{"arguments":[{"baseExpression":{"baseExpression":{"id":7571,"name":"_allowedMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"2917:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7574,"indexExpression":{"expression":{"id":7572,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2932:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2932:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2917:26:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7576,"indexExpression":{"id":7575,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7562,"src":"2944:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2917:32:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572","id":7577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2951:37:66","typeDescriptions":{"typeIdentifier":"t_stringliteral_869d236cd21bde9ea7f9c1cef8a678cb12f22a7cdfb332a971891dd8f23ae5f8","typeString":"literal_string \"Caller not allowed to mint for user\""},"value":"Caller not allowed to mint for user"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_869d236cd21bde9ea7f9c1cef8a678cb12f22a7cdfb332a971891dd8f23ae5f8","typeString":"literal_string \"Caller not allowed to mint for user\""}],"id":7570,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2909:7:66","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2909:80:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7579,"nodeType":"ExpressionStatement","src":"2909:80:66"},{"expression":{"arguments":[{"id":7581,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7560,"src":"3019:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":7582,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7562,"src":"3027:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7580,"name":"_mintForMany","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7760,"src":"3006:12:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_calldata_ptr_$_t_address_$returns$_t_uint256_$","typeString":"function (address[] calldata,address) returns (uint256)"}},"id":7583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3006:26:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7569,"id":7584,"nodeType":"Return","src":"2999:33:66"}]},"documentation":{"id":7557,"nodeType":"StructuredDocumentation","src":"2752:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"3b9f7384","id":7586,"implemented":true,"kind":"function","modifiers":[{"id":7566,"modifierName":{"id":7565,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"2868:12:66","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2868:12:66"}],"name":"mintManyFor","nodeType":"FunctionDefinition","overrides":{"id":7564,"nodeType":"OverrideSpecifier","overrides":[],"src":"2859:8:66"},"parameters":{"id":7563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7560,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":7586,"src":"2809:25:66","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7558,"name":"address","nodeType":"ElementaryTypeName","src":"2809:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7559,"nodeType":"ArrayTypeName","src":"2809:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":7562,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7586,"src":"2836:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7561,"name":"address","nodeType":"ElementaryTypeName","src":"2836:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2808:41:66"},"returnParameters":{"id":7569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7568,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7586,"src":"2890:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7567,"name":"uint256","nodeType":"ElementaryTypeName","src":"2890:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2889:9:66"},"scope":7866,"src":"2788:251:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[128],"body":{"id":7603,"nodeType":"Block","src":"3165:44:66","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":7597,"name":"_minted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7443,"src":"3182:7:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7599,"indexExpression":{"id":7598,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7589,"src":"3190:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3182:13:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7601,"indexExpression":{"id":7600,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7591,"src":"3196:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3182:20:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7596,"id":7602,"nodeType":"Return","src":"3175:27:66"}]},"documentation":{"id":7587,"nodeType":"StructuredDocumentation","src":"3045:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"8b752bb0","id":7604,"implemented":true,"kind":"function","modifiers":[],"name":"minted","nodeType":"FunctionDefinition","overrides":{"id":7593,"nodeType":"OverrideSpecifier","overrides":[],"src":"3138:8:66"},"parameters":{"id":7592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7589,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7604,"src":"3097:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7588,"name":"address","nodeType":"ElementaryTypeName","src":"3097:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7591,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":7604,"src":"3111:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7590,"name":"address","nodeType":"ElementaryTypeName","src":"3111:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3096:29:66"},"returnParameters":{"id":7596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7595,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7604,"src":"3156:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7594,"name":"uint256","nodeType":"ElementaryTypeName","src":"3156:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3155:9:66"},"scope":7866,"src":"3081:128:66","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[138],"body":{"id":7621,"nodeType":"Block","src":"3346:52:66","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":7615,"name":"_allowedMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"3363:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7617,"indexExpression":{"id":7616,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"3378:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3363:22:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7619,"indexExpression":{"id":7618,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7609,"src":"3386:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3363:28:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7614,"id":7620,"nodeType":"Return","src":"3356:35:66"}]},"documentation":{"id":7605,"nodeType":"StructuredDocumentation","src":"3215:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"3c543bc6","id":7622,"implemented":true,"kind":"function","modifiers":[],"name":"getMinterApproval","nodeType":"FunctionDefinition","overrides":{"id":7611,"nodeType":"OverrideSpecifier","overrides":[],"src":"3322:8:66"},"parameters":{"id":7610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7607,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":7622,"src":"3278:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7606,"name":"address","nodeType":"ElementaryTypeName","src":"3278:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7609,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7622,"src":"3294:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7608,"name":"address","nodeType":"ElementaryTypeName","src":"3294:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3277:30:66"},"returnParameters":{"id":7614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7613,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7622,"src":"3340:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7612,"name":"bool","nodeType":"ElementaryTypeName","src":"3340:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3339:6:66"},"scope":7866,"src":"3251:147:66","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[146],"body":{"id":7638,"nodeType":"Block","src":"3514:65:66","statements":[{"expression":{"arguments":[{"id":7632,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7625,"src":"3543:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7633,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3551:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3551:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7635,"name":"approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7627,"src":"3563:8:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7631,"name":"_setMinterApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7717,"src":"3524:18:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":7636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3524:48:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7637,"nodeType":"ExpressionStatement","src":"3524:48:66"}]},"documentation":{"id":7623,"nodeType":"StructuredDocumentation","src":"3404:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"0de54ba0","id":7639,"implemented":true,"kind":"function","modifiers":[],"name":"setMinterApproval","nodeType":"FunctionDefinition","overrides":{"id":7629,"nodeType":"OverrideSpecifier","overrides":[],"src":"3505:8:66"},"parameters":{"id":7628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7625,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":7639,"src":"3467:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7624,"name":"address","nodeType":"ElementaryTypeName","src":"3467:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7627,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":7639,"src":"3483:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7626,"name":"bool","nodeType":"ElementaryTypeName","src":"3483:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3466:31:66"},"returnParameters":{"id":7630,"nodeType":"ParameterList","parameters":[],"src":"3514:0:66"},"scope":7866,"src":"3440:139:66","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[164],"body":{"id":7692,"nodeType":"Block","src":"3835:327:66","statements":[{"assignments":[7659],"declarations":[{"constant":false,"id":7659,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":7692,"src":"3845:18:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7658,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3845:7:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7672,"initialValue":{"arguments":[{"arguments":[{"id":7663,"name":"_SET_MINTER_APPROVAL_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7454,"src":"3900:29:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7664,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7642,"src":"3931:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7665,"name":"approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7644,"src":"3939:8:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":7667,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7646,"src":"3962:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7666,"name":"getNextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"3949:12:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3949:18:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7669,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7648,"src":"3969:8:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7661,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3889:3:66","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"3889:10:66","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3889:89:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7660,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3866:9:66","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3866:122:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3845:143:66"},{"expression":{"arguments":[{"id":7674,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7646,"src":"4021:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7675,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7659,"src":"4027:10:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":7677,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7650,"src":"4057:1:66","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":7678,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"4060:1:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7679,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7654,"src":"4063:1:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7676,"name":"_toArraySignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3307,"src":"4039:17:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint8,bytes32,bytes32) pure returns (bytes memory)"}},"id":7680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4039:26:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7681,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7648,"src":"4067:8:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7682,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"4077:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":7683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":2154,"src":"4077:24:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7673,"name":"_ensureValidSignature","nodeType":"Identifier","overloadedDeclarations":[3189,3233],"referencedDeclaration":3233,"src":"3999:21:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,bytes32,bytes memory,uint256,uint256)"}},"id":7684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3999:103:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7685,"nodeType":"ExpressionStatement","src":"3999:103:66"},{"expression":{"arguments":[{"id":7687,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7642,"src":"4132:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7688,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7646,"src":"4140:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7689,"name":"approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7644,"src":"4146:8:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7686,"name":"_setMinterApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7717,"src":"4113:18:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":7690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4113:42:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7691,"nodeType":"ExpressionStatement","src":"4113:42:66"}]},"documentation":{"id":7640,"nodeType":"StructuredDocumentation","src":"3585:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"c6542794","id":7693,"implemented":true,"kind":"function","modifiers":[],"name":"setMinterApprovalWithSignature","nodeType":"FunctionDefinition","overrides":{"id":7656,"nodeType":"OverrideSpecifier","overrides":[],"src":"3826:8:66"},"parameters":{"id":7655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7642,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":7693,"src":"3670:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7641,"name":"address","nodeType":"ElementaryTypeName","src":"3670:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7644,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":7693,"src":"3694:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7643,"name":"bool","nodeType":"ElementaryTypeName","src":"3694:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7646,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7693,"src":"3717:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7645,"name":"address","nodeType":"ElementaryTypeName","src":"3717:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7648,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":7693,"src":"3739:16:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7647,"name":"uint256","nodeType":"ElementaryTypeName","src":"3739:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7650,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":7693,"src":"3765:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7649,"name":"uint8","nodeType":"ElementaryTypeName","src":"3765:5:66","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7652,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":7693,"src":"3782:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7651,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3782:7:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7654,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":7693,"src":"3801:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7653,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3801:7:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3660:156:66"},"returnParameters":{"id":7657,"nodeType":"ParameterList","parameters":[],"src":"3835:0:66"},"scope":7866,"src":"3621:541:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":7716,"nodeType":"Block","src":"4279:112:66","statements":[{"expression":{"id":7708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7702,"name":"_allowedMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"4289:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7705,"indexExpression":{"id":7703,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7695,"src":"4304:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4289:22:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7706,"indexExpression":{"id":7704,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7697,"src":"4312:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4289:28:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7707,"name":"approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7699,"src":"4320:8:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4289:39:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7709,"nodeType":"ExpressionStatement","src":"4289:39:66"},{"eventCall":{"arguments":[{"id":7711,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7697,"src":"4361:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7712,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7695,"src":"4367:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7713,"name":"approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7699,"src":"4375:8:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7710,"name":"MinterApprovalSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7462,"src":"4343:17:66","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":7714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4343:41:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7715,"nodeType":"EmitStatement","src":"4338:46:66"}]},"id":7717,"implemented":true,"kind":"function","modifiers":[],"name":"_setMinterApproval","nodeType":"FunctionDefinition","parameters":{"id":7700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7695,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":7717,"src":"4205:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7694,"name":"address","nodeType":"ElementaryTypeName","src":"4205:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7697,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7717,"src":"4229:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7696,"name":"address","nodeType":"ElementaryTypeName","src":"4229:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7699,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":7717,"src":"4251:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7698,"name":"bool","nodeType":"ElementaryTypeName","src":"4251:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4195:75:66"},"returnParameters":{"id":7701,"nodeType":"ParameterList","parameters":[],"src":"4279:0:66"},"scope":7866,"src":"4168:223:66","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":7740,"nodeType":"Block","src":"4527:86:66","statements":[{"expression":{"id":7732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7726,"name":"_minted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7443,"src":"4537:7:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7729,"indexExpression":{"id":7727,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"4545:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4537:13:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7730,"indexExpression":{"id":7728,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7721,"src":"4551:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4537:20:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7731,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7723,"src":"4560:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4537:28:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7733,"nodeType":"ExpressionStatement","src":"4537:28:66"},{"eventCall":{"arguments":[{"id":7735,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"4587:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7736,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7721,"src":"4593:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7737,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7723,"src":"4600:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7734,"name":"Minted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74,"src":"4580:6:66","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4580:26:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7739,"nodeType":"EmitStatement","src":"4575:31:66"}]},"id":7741,"implemented":true,"kind":"function","modifiers":[],"name":"_setMinted","nodeType":"FunctionDefinition","parameters":{"id":7724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7719,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7741,"src":"4453:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7718,"name":"address","nodeType":"ElementaryTypeName","src":"4453:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7721,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":7741,"src":"4475:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7720,"name":"address","nodeType":"ElementaryTypeName","src":"4475:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7723,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7741,"src":"4498:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7722,"name":"uint256","nodeType":"ElementaryTypeName","src":"4498:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4443:74:66"},"returnParameters":{"id":7725,"nodeType":"ParameterList","parameters":[],"src":"4527:0:66"},"scope":7866,"src":"4424:189:66","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":7750,"implemented":false,"kind":"function","modifiers":[],"name":"_mintFor","nodeType":"FunctionDefinition","parameters":{"id":7746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7743,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":7750,"src":"4637:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7742,"name":"address","nodeType":"ElementaryTypeName","src":"4637:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7745,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7750,"src":"4652:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7744,"name":"address","nodeType":"ElementaryTypeName","src":"4652:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4636:29:66"},"returnParameters":{"id":7749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7748,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":7750,"src":"4692:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7747,"name":"uint256","nodeType":"ElementaryTypeName","src":"4692:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4691:22:66"},"scope":7866,"src":"4619:95:66","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":7760,"implemented":false,"kind":"function","modifiers":[],"name":"_mintForMany","nodeType":"FunctionDefinition","parameters":{"id":7756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7753,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":7760,"src":"4742:25:66","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7751,"name":"address","nodeType":"ElementaryTypeName","src":"4742:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7752,"nodeType":"ArrayTypeName","src":"4742:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":7755,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7760,"src":"4769:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7754,"name":"address","nodeType":"ElementaryTypeName","src":"4769:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4741:41:66"},"returnParameters":{"id":7759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7758,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":7760,"src":"4809:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7757,"name":"uint256","nodeType":"ElementaryTypeName","src":"4809:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4808:22:66"},"scope":7866,"src":"4720:111:66","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[174],"body":{"id":7777,"nodeType":"Block","src":"5184:52:66","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":7771,"name":"_allowedMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"5201:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7773,"indexExpression":{"id":7772,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7763,"src":"5216:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5201:22:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7775,"indexExpression":{"id":7774,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7765,"src":"5224:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5201:28:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7770,"id":7776,"nodeType":"Return","src":"5194:35:66"}]},"documentation":{"id":7761,"nodeType":"StructuredDocumentation","src":"5051:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"a0990033","id":7778,"implemented":true,"kind":"function","modifiers":[],"name":"allowed_to_mint_for","nodeType":"FunctionDefinition","overrides":{"id":7767,"nodeType":"OverrideSpecifier","overrides":[],"src":"5160:8:66"},"parameters":{"id":7766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7763,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":7778,"src":"5116:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7762,"name":"address","nodeType":"ElementaryTypeName","src":"5116:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7765,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7778,"src":"5132:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7764,"name":"address","nodeType":"ElementaryTypeName","src":"5132:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5115:30:66"},"returnParameters":{"id":7770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7769,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7778,"src":"5178:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7768,"name":"bool","nodeType":"ElementaryTypeName","src":"5178:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5177:6:66"},"scope":7866,"src":"5087:149:66","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[182],"body":{"id":7820,"nodeType":"Block","src":"5356:184:66","statements":[{"body":{"id":7818,"nodeType":"Block","src":"5398:136:66","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":7799,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7783,"src":"5416:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_calldata_ptr","typeString":"address[8] calldata"}},"id":7801,"indexExpression":{"id":7800,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7790,"src":"5423:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5416:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5437:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5429:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7802,"name":"address","nodeType":"ElementaryTypeName","src":"5429:7:66","typeDescriptions":{}}},"id":7805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5429:10:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"5416:23:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7809,"nodeType":"IfStatement","src":"5412:67:66","trueBody":{"id":7808,"nodeType":"Block","src":"5441:38:66","statements":[{"id":7807,"nodeType":"Break","src":"5459:5:66"}]}},{"expression":{"arguments":[{"baseExpression":{"id":7811,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7783,"src":"5501:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_calldata_ptr","typeString":"address[8] calldata"}},"id":7813,"indexExpression":{"id":7812,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7790,"src":"5508:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5501:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7814,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5512:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5512:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":7810,"name":"_mintFor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7750,"src":"5492:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":7816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5492:31:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7817,"nodeType":"ExpressionStatement","src":"5492:31:66"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7793,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7790,"src":"5386:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"38","id":7794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5390:1:66","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"5386:5:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7819,"initializationExpression":{"assignments":[7790],"declarations":[{"constant":false,"id":7790,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":7819,"src":"5371:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7789,"name":"uint256","nodeType":"ElementaryTypeName","src":"5371:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7792,"initialValue":{"hexValue":"30","id":7791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5383:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5371:13:66"},"loopExpression":{"expression":{"id":7797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5393:3:66","subExpression":{"id":7796,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7790,"src":"5395:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7798,"nodeType":"ExpressionStatement","src":"5393:3:66"},"nodeType":"ForStatement","src":"5366:168:66"}]},"documentation":{"id":7779,"nodeType":"StructuredDocumentation","src":"5242:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"a51e1904","id":7821,"implemented":true,"kind":"function","modifiers":[{"id":7787,"modifierName":{"id":7786,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"5343:12:66","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"5343:12:66"}],"name":"mint_many","nodeType":"FunctionDefinition","overrides":{"id":7785,"nodeType":"OverrideSpecifier","overrides":[],"src":"5334:8:66"},"parameters":{"id":7784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7783,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":7821,"src":"5297:26:66","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_calldata_ptr","typeString":"address[8]"},"typeName":{"baseType":{"id":7780,"name":"address","nodeType":"ElementaryTypeName","src":"5297:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7782,"length":{"hexValue":"38","id":7781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5305:1:66","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"ArrayTypeName","src":"5297:10:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_storage_ptr","typeString":"address[8]"}},"visibility":"internal"}],"src":"5296:28:66"},"returnParameters":{"id":7788,"nodeType":"ParameterList","parameters":[],"src":"5356:0:66"},"scope":7866,"src":"5278:262:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[190],"body":{"id":7845,"nodeType":"Block","src":"5660:100:66","statements":[{"condition":{"baseExpression":{"baseExpression":{"id":7832,"name":"_allowedMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"5674:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7835,"indexExpression":{"expression":{"id":7833,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5689:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5689:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5674:26:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7837,"indexExpression":{"id":7836,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7826,"src":"5701:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5674:32:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7844,"nodeType":"IfStatement","src":"5670:84:66","trueBody":{"id":7843,"nodeType":"Block","src":"5708:46:66","statements":[{"expression":{"arguments":[{"id":7839,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7824,"src":"5731:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7840,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7826,"src":"5738:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7838,"name":"_mintFor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7750,"src":"5722:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":7841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5722:21:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7842,"nodeType":"ExpressionStatement","src":"5722:21:66"}]}}]},"documentation":{"id":7822,"nodeType":"StructuredDocumentation","src":"5546:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"27f18ae3","id":7846,"implemented":true,"kind":"function","modifiers":[{"id":7830,"modifierName":{"id":7829,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"5647:12:66","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"5647:12:66"}],"name":"mint_for","nodeType":"FunctionDefinition","overrides":{"id":7828,"nodeType":"OverrideSpecifier","overrides":[],"src":"5638:8:66"},"parameters":{"id":7827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7824,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":7846,"src":"5600:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7823,"name":"address","nodeType":"ElementaryTypeName","src":"5600:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7826,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7846,"src":"5615:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7825,"name":"address","nodeType":"ElementaryTypeName","src":"5615:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5599:29:66"},"returnParameters":{"id":7831,"nodeType":"ParameterList","parameters":[],"src":"5660:0:66"},"scope":7866,"src":"5582:178:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[196],"body":{"id":7864,"nodeType":"Block","src":"5865:79:66","statements":[{"expression":{"arguments":[{"id":7854,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7849,"src":"5893:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5901:35:66","subExpression":{"baseExpression":{"baseExpression":{"id":7855,"name":"_allowedMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"5902:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7857,"indexExpression":{"id":7856,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7849,"src":"5917:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5902:22:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7860,"indexExpression":{"expression":{"id":7858,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5925:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5925:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5902:34:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7853,"name":"setMinterApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"5875:17:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":7862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5875:62:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7863,"nodeType":"ExpressionStatement","src":"5875:62:66"}]},"documentation":{"id":7847,"nodeType":"StructuredDocumentation","src":"5766:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"dd289d60","id":7865,"implemented":true,"kind":"function","modifiers":[],"name":"toggle_approve_mint","nodeType":"FunctionDefinition","overrides":{"id":7851,"nodeType":"OverrideSpecifier","overrides":[],"src":"5856:8:66"},"parameters":{"id":7850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7849,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":7865,"src":"5831:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7848,"name":"address","nodeType":"ElementaryTypeName","src":"5831:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5830:16:66"},"returnParameters":{"id":7852,"nodeType":"ParameterList","parameters":[],"src":"5865:0:66"},"scope":7866,"src":"5802:142:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7867,"src":"1131:4815:66"}],"src":"688:5259:66"},"id":66},"contracts/BalancerTokenAdmin.sol":{"ast":{"absolutePath":"contracts/BalancerTokenAdmin.sol","exportedSymbols":{"BalancerTokenAdmin":[8750]},"id":8751,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7868,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:67"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","id":7869,"nodeType":"ImportDirective","scope":8751,"sourceUnit":328,"src":"713:89:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":7870,"nodeType":"ImportDirective","scope":8751,"sourceUnit":3698,"src":"804:88:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":7871,"nodeType":"ImportDirective","scope":8751,"sourceUnit":7188,"src":"893:85:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","id":7872,"nodeType":"ImportDirective","scope":8751,"sourceUnit":3129,"src":"979:79:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","id":7873,"nodeType":"ImportDirective","scope":8751,"sourceUnit":5684,"src":"1059:66:67","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7875,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":327,"src":"1941:19:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":7876,"nodeType":"InheritanceSpecifier","src":"1941:19:67"},{"baseName":{"id":7877,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1962:23:67","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":7878,"nodeType":"InheritanceSpecifier","src":"1962:23:67"},{"baseName":{"id":7879,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"1987:15:67","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":7880,"nodeType":"InheritanceSpecifier","src":"1987:15:67"}],"contractDependencies":[327,2259,3128,3697,7187],"contractKind":"contract","documentation":{"id":7874,"nodeType":"StructuredDocumentation","src":"1164:745:67","text":" @title Balancer Token Admin\n @notice This contract holds all admin powers over the BAL token passing through calls\n while delegating access control to the Balancer Authorizer\n In addition, calls to the mint function must respect the inflation schedule as defined in this contract.\n As this contract is the only way to mint BAL tokens this ensures that the maximum allowed supply is enforced\n @dev This contract exists as a consequence of the gauge systems needing to know a fixed inflation schedule\n in order to know how much BAL a gauge is allowed to mint. As this does not exist within the BAL token itself\n it is defined here, we must then wrap the token's minting functionality in order for this to be meaningful."},"fullyImplemented":true,"id":8750,"linearizedBaseContracts":[8750,7187,3697,3128,327,2259],"name":"BalancerTokenAdmin","nodeType":"ContractDefinition","nodes":[{"id":7883,"libraryName":{"id":7881,"name":"Math","nodeType":"UserDefinedTypeName","referencedDeclaration":5683,"src":"2015:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_Math_$5683","typeString":"library Math"}},"nodeType":"UsingForDirective","src":"2009:23:67","typeName":{"id":7882,"name":"uint256","nodeType":"ElementaryTypeName","src":"2024:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"baseFunctions":[285],"constant":true,"functionSelector":"4dbac733","id":7895,"mutability":"constant","name":"INITIAL_RATE","nodeType":"VariableDeclaration","overrides":{"id":7885,"nodeType":"OverrideSpecifier","overrides":[],"src":"2114:8:67"},"scope":8750,"src":"2090:82:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7884,"name":"uint256","nodeType":"ElementaryTypeName","src":"2090:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7894,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_145000000000000000000000_by_1","typeString":"int_const 145000000000000000000000"},"id":7888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"313435303030","id":7886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2139:6:67","typeDescriptions":{"typeIdentifier":"t_rational_145000_by_1","typeString":"int_const 145000"},"value":"145000"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31653138","id":7887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2148:4:67","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"2139:13:67","typeDescriptions":{"typeIdentifier":"t_rational_145000000000000000000000_by_1","typeString":"int_const 145000000000000000000000"}}],"id":7889,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2138:15:67","typeDescriptions":{"typeIdentifier":"t_rational_145000000000000000000000_by_1","typeString":"int_const 145000000000000000000000"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"hexValue":"31","id":7892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2164:7:67","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"}],"id":7891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2156:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7890,"name":"uint256","nodeType":"ElementaryTypeName","src":"2156:7:67","typeDescriptions":{}}},"id":7893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2156:16:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2138:34:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"baseFunctions":[290],"constant":true,"functionSelector":"b87b5616","id":7899,"mutability":"constant","name":"RATE_REDUCTION_TIME","nodeType":"VariableDeclaration","overrides":{"id":7897,"nodeType":"OverrideSpecifier","overrides":[],"src":"2225:8:67"},"scope":8750,"src":"2201:63:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7896,"name":"uint256","nodeType":"ElementaryTypeName","src":"2201:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333635","id":7898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2256:8:67","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"value":"365"},"visibility":"public"},{"baseFunctions":[295],"constant":true,"functionSelector":"21609bbf","id":7903,"mutability":"constant","name":"RATE_REDUCTION_COEFFICIENT","nodeType":"VariableDeclaration","overrides":{"id":7901,"nodeType":"OverrideSpecifier","overrides":[],"src":"2294:8:67"},"scope":8750,"src":"2270:81:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7900,"name":"uint256","nodeType":"ElementaryTypeName","src":"2270:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31313839323037313135303032373231303234","id":7902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2332:19:67","typeDescriptions":{"typeIdentifier":"t_rational_1189207115002721024_by_1","typeString":"int_const 1189207115002721024"},"value":"1189207115002721024"},"visibility":"public"},{"baseFunctions":[300],"constant":true,"functionSelector":"7efad8e0","id":7907,"mutability":"constant","name":"RATE_DENOMINATOR","nodeType":"VariableDeclaration","overrides":{"id":7905,"nodeType":"OverrideSpecifier","overrides":[],"src":"2402:8:67"},"scope":8750,"src":"2378:56:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7904,"name":"uint256","nodeType":"ElementaryTypeName","src":"2378:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":7906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2430:4:67","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"public"},{"constant":false,"id":7909,"mutability":"immutable","name":"_balancerToken","nodeType":"VariableDeclaration","scope":8750,"src":"2441:47:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"},"typeName":{"id":7908,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":274,"src":"2441:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"visibility":"private"},{"anonymous":false,"id":7915,"name":"MiningParametersUpdated","nodeType":"EventDefinition","parameters":{"id":7914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7911,"indexed":false,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":7915,"src":"2525:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7910,"name":"uint256","nodeType":"ElementaryTypeName","src":"2525:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7913,"indexed":false,"mutability":"mutable","name":"supply","nodeType":"VariableDeclaration","scope":7915,"src":"2539:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7912,"name":"uint256","nodeType":"ElementaryTypeName","src":"2539:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2524:30:67"},"src":"2495:60:67"},{"constant":false,"id":7917,"mutability":"mutable","name":"_miningEpoch","nodeType":"VariableDeclaration","scope":8750,"src":"2585:28:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7916,"name":"uint256","nodeType":"ElementaryTypeName","src":"2585:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":7924,"mutability":"mutable","name":"_startEpochTime","nodeType":"VariableDeclaration","scope":8750,"src":"2619:51:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7918,"name":"uint256","nodeType":"ElementaryTypeName","src":"2619:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"expression":{"arguments":[{"id":7921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2658:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7920,"name":"uint256","nodeType":"ElementaryTypeName","src":"2658:7:67","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":7919,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2653:4:67","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2653:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":7923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2653:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":7926,"mutability":"mutable","name":"_startEpochSupply","nodeType":"VariableDeclaration","scope":8750,"src":"2727:33:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7925,"name":"uint256","nodeType":"ElementaryTypeName","src":"2727:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":7928,"mutability":"mutable","name":"_rate","nodeType":"VariableDeclaration","scope":8750,"src":"2766:21:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7927,"name":"uint256","nodeType":"ElementaryTypeName","src":"2766:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":7942,"nodeType":"Block","src":"2881:47:67","statements":[{"expression":{"id":7940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7938,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"2891:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7939,"name":"balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7932,"src":"2908:13:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"src":"2891:30:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":7941,"nodeType":"ExpressionStatement","src":"2891:30:67"}]},"id":7943,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7935,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7930,"src":"2874:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":7936,"modifierName":{"id":7934,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"2850:23:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"2850:30:67"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7930,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":7943,"src":"2806:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":7929,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"2806:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":7932,"mutability":"mutable","name":"balancerToken","nodeType":"VariableDeclaration","scope":7943,"src":"2820:28:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"},"typeName":{"id":7931,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":274,"src":"2820:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"2805:44:67"},"returnParameters":{"id":7937,"nodeType":"ParameterList","parameters":[],"src":"2881:0:67"},"scope":8750,"src":"2794:134:67","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[306],"body":{"id":7952,"nodeType":"Block","src":"3066:38:67","statements":[{"expression":{"id":7950,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"3083:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"functionReturnParameters":7949,"id":7951,"nodeType":"Return","src":"3076:21:67"}]},"documentation":{"id":7944,"nodeType":"StructuredDocumentation","src":"2934:51:67","text":" @dev Returns the Balancer token."},"functionSelector":"c0039699","id":7953,"implemented":true,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","overrides":{"id":7946,"nodeType":"OverrideSpecifier","overrides":[],"src":"3032:8:67"},"parameters":{"id":7945,"nodeType":"ParameterList","parameters":[],"src":"3015:2:67"},"returnParameters":{"id":7949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7948,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7953,"src":"3050:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"},"typeName":{"id":7947,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":274,"src":"3050:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"3049:16:67"},"scope":8750,"src":"2990:114:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[309],"body":{"id":8226,"nodeType":"Block","src":"3355:4400:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7963,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"3373:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":7966,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3397:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7965,"name":"uint256","nodeType":"ElementaryTypeName","src":"3397:7:67","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":7964,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3392:4:67","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3392:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":7968,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3392:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3373:36:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c726561647920616374697661746564","id":7970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3411:19:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_cdcd4ef51fd197cf19d4213a99a19cd758a08ca51239ef37a021f665bc97841e","typeString":"literal_string \"Already activated\""},"value":"Already activated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cdcd4ef51fd197cf19d4213a99a19cd758a08ca51239ef37a021f665bc97841e","typeString":"literal_string \"Already activated\""}],"id":7962,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3365:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3365:66:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7972,"nodeType":"ExpressionStatement","src":"3365:66:67"},{"assignments":[7974],"declarations":[{"constant":false,"id":7974,"mutability":"mutable","name":"minterRole","nodeType":"VariableDeclaration","scope":8226,"src":"4023:18:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7973,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4023:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7978,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7975,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4044:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":7976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MINTER_ROLE","nodeType":"MemberAccess","referencedDeclaration":265,"src":"4044:26:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":7977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4044:28:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4023:49:67"},{"assignments":[7980],"declarations":[{"constant":false,"id":7980,"mutability":"mutable","name":"snapshotRole","nodeType":"VariableDeclaration","scope":8226,"src":"4082:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7979,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4082:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7984,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7981,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4105:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":7982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SNAPSHOT_ROLE","nodeType":"MemberAccess","referencedDeclaration":270,"src":"4105:28:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":7983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4105:30:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4082:53:67"},{"assignments":[7986],"declarations":[{"constant":false,"id":7986,"mutability":"mutable","name":"adminRole","nodeType":"VariableDeclaration","scope":8226,"src":"4145:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7985,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4145:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7990,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7987,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4165:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":7988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DEFAULT_ADMIN_ROLE","nodeType":"MemberAccess","referencedDeclaration":260,"src":"4165:33:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":7989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4165:35:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4145:55:67"},{"expression":{"arguments":[{"arguments":[{"id":7994,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"4242:9:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":7997,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4261:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}],"id":7996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4253:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7995,"name":"address","nodeType":"ElementaryTypeName","src":"4253:7:67","typeDescriptions":{}}},"id":7998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4253:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7992,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4219:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":7993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":234,"src":"4219:22:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view external returns (bool)"}},"id":7999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4219:48:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c616e636572546f6b656e41646d696e206973206e6f7420616e2061646d696e","id":8000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4269:36:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_041402b6e20bb7a683dccf11746dc5b9eff1e50f094152dd5aa3796bf8e81f02","typeString":"literal_string \"BalancerTokenAdmin is not an admin\""},"value":"BalancerTokenAdmin is not an admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_041402b6e20bb7a683dccf11746dc5b9eff1e50f094152dd5aa3796bf8e81f02","typeString":"literal_string \"BalancerTokenAdmin is not an admin\""}],"id":7991,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4211:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4211:95:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8002,"nodeType":"ExpressionStatement","src":"4211:95:67"},{"assignments":[8004],"declarations":[{"constant":false,"id":8004,"mutability":"mutable","name":"numberOfMinters","nodeType":"VariableDeclaration","scope":8226,"src":"4418:23:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8003,"name":"uint256","nodeType":"ElementaryTypeName","src":"4418:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8009,"initialValue":{"arguments":[{"id":8007,"name":"minterRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"4478:10:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8005,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4444:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMemberCount","nodeType":"MemberAccess","referencedDeclaration":216,"src":"4444:33:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view external returns (uint256)"}},"id":8008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4444:45:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4418:71:67"},{"body":{"id":8035,"nodeType":"Block","src":"4545:144:67","statements":[{"assignments":[8021],"declarations":[{"constant":false,"id":8021,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":8035,"src":"4559:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8020,"name":"address","nodeType":"ElementaryTypeName","src":"4559:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8027,"initialValue":{"arguments":[{"id":8024,"name":"minterRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"4605:10:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":8025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4617:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":8022,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4576:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMember","nodeType":"MemberAccess","referencedDeclaration":225,"src":"4576:28:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_address_$","typeString":"function (bytes32,uint256) view external returns (address)"}},"id":8026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4576:43:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4559:60:67"},{"expression":{"arguments":[{"id":8031,"name":"minterRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"4659:10:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8032,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8021,"src":"4671:6:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8028,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4633:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revokeRole","nodeType":"MemberAccess","referencedDeclaration":255,"src":"4633:25:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) external"}},"id":8033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4633:45:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8034,"nodeType":"ExpressionStatement","src":"4633:45:67"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8014,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8011,"src":"4519:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8015,"name":"numberOfMinters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8004,"src":"4523:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4519:19:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8036,"initializationExpression":{"assignments":[8011],"declarations":[{"constant":false,"id":8011,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":8036,"src":"4504:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8010,"name":"uint256","nodeType":"ElementaryTypeName","src":"4504:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8013,"initialValue":{"hexValue":"30","id":8012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4516:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4504:13:67"},"loopExpression":{"expression":{"id":8018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4540:3:67","subExpression":{"id":8017,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8011,"src":"4542:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8019,"nodeType":"ExpressionStatement","src":"4540:3:67"},"nodeType":"ForStatement","src":"4499:190:67"},{"expression":{"arguments":[{"id":8040,"name":"minterRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"4787:10:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":8043,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4807:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}],"id":8042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4799:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8041,"name":"address","nodeType":"ElementaryTypeName","src":"4799:7:67","typeDescriptions":{}}},"id":8044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4799:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8037,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4762:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"grantRole","nodeType":"MemberAccess","referencedDeclaration":248,"src":"4762:24:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) external"}},"id":8045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4762:51:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8046,"nodeType":"ExpressionStatement","src":"4762:51:67"},{"assignments":[8048],"declarations":[{"constant":false,"id":8048,"mutability":"mutable","name":"numberOfSnapshotters","nodeType":"VariableDeclaration","scope":8226,"src":"5139:28:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8047,"name":"uint256","nodeType":"ElementaryTypeName","src":"5139:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8053,"initialValue":{"arguments":[{"id":8051,"name":"snapshotRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"5204:12:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8049,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"5170:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMemberCount","nodeType":"MemberAccess","referencedDeclaration":216,"src":"5170:33:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view external returns (uint256)"}},"id":8052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5170:47:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5139:78:67"},{"body":{"id":8079,"nodeType":"Block","src":"5278:158:67","statements":[{"assignments":[8065],"declarations":[{"constant":false,"id":8065,"mutability":"mutable","name":"snapshotter","nodeType":"VariableDeclaration","scope":8079,"src":"5292:19:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8064,"name":"address","nodeType":"ElementaryTypeName","src":"5292:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8071,"initialValue":{"arguments":[{"id":8068,"name":"snapshotRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"5343:12:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":8069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5357:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":8066,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"5314:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMember","nodeType":"MemberAccess","referencedDeclaration":225,"src":"5314:28:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_address_$","typeString":"function (bytes32,uint256) view external returns (address)"}},"id":8070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5314:45:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5292:67:67"},{"expression":{"arguments":[{"id":8075,"name":"snapshotRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"5399:12:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8076,"name":"snapshotter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"5413:11:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8072,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"5373:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revokeRole","nodeType":"MemberAccess","referencedDeclaration":255,"src":"5373:25:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) external"}},"id":8077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5373:52:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8078,"nodeType":"ExpressionStatement","src":"5373:52:67"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8058,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8055,"src":"5247:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8059,"name":"numberOfSnapshotters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8048,"src":"5251:20:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5247:24:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8080,"initializationExpression":{"assignments":[8055],"declarations":[{"constant":false,"id":8055,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":8080,"src":"5232:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8054,"name":"uint256","nodeType":"ElementaryTypeName","src":"5232:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8057,"initialValue":{"hexValue":"30","id":8056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5244:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5232:13:67"},"loopExpression":{"expression":{"id":8062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5273:3:67","subExpression":{"id":8061,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8055,"src":"5275:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8063,"nodeType":"ExpressionStatement","src":"5273:3:67"},"nodeType":"ForStatement","src":"5227:209:67"},{"expression":{"arguments":[{"id":8084,"name":"snapshotRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"5539:12:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":8087,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5561:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}],"id":8086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5553:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8085,"name":"address","nodeType":"ElementaryTypeName","src":"5553:7:67","typeDescriptions":{}}},"id":8088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5553:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8081,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"5514:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"grantRole","nodeType":"MemberAccess","referencedDeclaration":248,"src":"5514:24:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) external"}},"id":8089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5514:53:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8090,"nodeType":"ExpressionStatement","src":"5514:53:67"},{"assignments":[8092],"declarations":[{"constant":false,"id":8092,"mutability":"mutable","name":"numberOfAdmins","nodeType":"VariableDeclaration","scope":8226,"src":"6016:22:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8091,"name":"uint256","nodeType":"ElementaryTypeName","src":"6016:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8097,"initialValue":{"arguments":[{"id":8095,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"6075:9:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8093,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"6041:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMemberCount","nodeType":"MemberAccess","referencedDeclaration":216,"src":"6041:33:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view external returns (uint256)"}},"id":8096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6041:44:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6016:69:67"},{"assignments":[8099],"declarations":[{"constant":false,"id":8099,"mutability":"mutable","name":"skipSelf","nodeType":"VariableDeclaration","scope":8226,"src":"6095:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8098,"name":"uint256","nodeType":"ElementaryTypeName","src":"6095:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8101,"initialValue":{"hexValue":"30","id":8100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6114:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6095:20:67"},{"body":{"id":8140,"nodeType":"Block","src":"6170:369:67","statements":[{"assignments":[8113],"declarations":[{"constant":false,"id":8113,"mutability":"mutable","name":"admin","nodeType":"VariableDeclaration","scope":8140,"src":"6184:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8112,"name":"address","nodeType":"ElementaryTypeName","src":"6184:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8119,"initialValue":{"arguments":[{"id":8116,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"6229:9:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8117,"name":"skipSelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8099,"src":"6240:8:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8114,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"6200:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMember","nodeType":"MemberAccess","referencedDeclaration":225,"src":"6200:28:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_address_$","typeString":"function (bytes32,uint256) view external returns (address)"}},"id":8118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6200:49:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6184:65:67"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8120,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8113,"src":"6267:5:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":8123,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6284:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}],"id":8122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6276:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8121,"name":"address","nodeType":"ElementaryTypeName","src":"6276:7:67","typeDescriptions":{}}},"id":8124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6276:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6267:22:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8138,"nodeType":"Block","src":"6373:156:67","statements":[{"expression":{"id":8136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8134,"name":"skipSelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8099,"src":"6502:8:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":8135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6513:1:67","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6502:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8137,"nodeType":"ExpressionStatement","src":"6502:12:67"}]},"id":8139,"nodeType":"IfStatement","src":"6263:266:67","trueBody":{"id":8133,"nodeType":"Block","src":"6291:76:67","statements":[{"expression":{"arguments":[{"id":8129,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"6335:9:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8130,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8113,"src":"6346:5:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8126,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"6309:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revokeRole","nodeType":"MemberAccess","referencedDeclaration":255,"src":"6309:25:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) external"}},"id":8131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6309:43:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8132,"nodeType":"ExpressionStatement","src":"6309:43:67"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8106,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8103,"src":"6145:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8107,"name":"numberOfAdmins","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8092,"src":"6149:14:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6145:18:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8141,"initializationExpression":{"assignments":[8103],"declarations":[{"constant":false,"id":8103,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":8141,"src":"6130:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8102,"name":"uint256","nodeType":"ElementaryTypeName","src":"6130:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8105,"initialValue":{"hexValue":"30","id":8104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6142:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6130:13:67"},"loopExpression":{"expression":{"id":8110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6165:3:67","subExpression":{"id":8109,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8103,"src":"6167:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8111,"nodeType":"ExpressionStatement","src":"6165:3:67"},"nodeType":"ForStatement","src":"6125:414:67"},{"expression":{"arguments":[{"id":8145,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"6804:9:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":8148,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6823:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}],"id":8147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6815:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8146,"name":"address","nodeType":"ElementaryTypeName","src":"6815:7:67","typeDescriptions":{}}},"id":8149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6815:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8142,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"6778:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revokeRole","nodeType":"MemberAccess","referencedDeclaration":255,"src":"6778:25:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) external"}},"id":8150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6778:51:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8151,"nodeType":"ExpressionStatement","src":"6778:51:67"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8155,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"6974:9:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8153,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"6940:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMemberCount","nodeType":"MemberAccess","referencedDeclaration":216,"src":"6940:33:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view external returns (uint256)"}},"id":8156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6940:44:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6988:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6940:49:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573732065786973747320776974682061646d696e20726967687473","id":8159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6991:34:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_3f235a40b57f25d15d9b967b66dbf39d7f483b796f8666c9cefe2d5767373bf3","typeString":"literal_string \"Address exists with admin rights\""},"value":"Address exists with admin rights"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3f235a40b57f25d15d9b967b66dbf39d7f483b796f8666c9cefe2d5767373bf3","typeString":"literal_string \"Address exists with admin rights\""}],"id":8152,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6932:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6932:94:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8161,"nodeType":"ExpressionStatement","src":"6932:94:67"},{"expression":{"arguments":[{"arguments":[{"id":8165,"name":"minterRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"7067:10:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":8168,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7087:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}],"id":8167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7079:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8166,"name":"address","nodeType":"ElementaryTypeName","src":"7079:7:67","typeDescriptions":{}}},"id":8169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7079:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8163,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"7044:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":234,"src":"7044:22:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view external returns (bool)"}},"id":8170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7044:49:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c616e636572546f6b656e41646d696e206973206e6f742061206d696e746572","id":8171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7095:36:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_9cf72961a7d9bee3709a9fa53a9b06bccc18a6f1c53b96e6e89146419627528a","typeString":"literal_string \"BalancerTokenAdmin is not a minter\""},"value":"BalancerTokenAdmin is not a minter"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9cf72961a7d9bee3709a9fa53a9b06bccc18a6f1c53b96e6e89146419627528a","typeString":"literal_string \"BalancerTokenAdmin is not a minter\""}],"id":8162,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7036:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7036:96:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8173,"nodeType":"ExpressionStatement","src":"7036:96:67"},{"expression":{"arguments":[{"arguments":[{"id":8177,"name":"snapshotRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"7173:12:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":8180,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7195:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}],"id":8179,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7187:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8178,"name":"address","nodeType":"ElementaryTypeName","src":"7187:7:67","typeDescriptions":{}}},"id":8181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7187:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8175,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"7150:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":234,"src":"7150:22:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view external returns (bool)"}},"id":8182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7150:51:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c616e636572546f6b656e41646d696e206973206e6f74206120736e617073686f74746572","id":8183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7203:41:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c5048828a24fe125ddad0473d0150f23a136ec6842d506ae40ba096068a181d","typeString":"literal_string \"BalancerTokenAdmin is not a snapshotter\""},"value":"BalancerTokenAdmin is not a snapshotter"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c5048828a24fe125ddad0473d0150f23a136ec6842d506ae40ba096068a181d","typeString":"literal_string \"BalancerTokenAdmin is not a snapshotter\""}],"id":8174,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7142:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7142:103:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8185,"nodeType":"ExpressionStatement","src":"7142:103:67"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8189,"name":"minterRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"7297:10:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8187,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"7263:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMemberCount","nodeType":"MemberAccess","referencedDeclaration":216,"src":"7263:33:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view external returns (uint256)"}},"id":8190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7263:45:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":8191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7312:1:67","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7263:50:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d756c7469706c65206d696e74657273206578697374","id":8193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7315:24:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_a034aa147e9776621b2f4b902be55588ee2551c86a9932e53aec923bf6380041","typeString":"literal_string \"Multiple minters exist\""},"value":"Multiple minters exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a034aa147e9776621b2f4b902be55588ee2551c86a9932e53aec923bf6380041","typeString":"literal_string \"Multiple minters exist\""}],"id":8186,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7255:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7255:85:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8195,"nodeType":"ExpressionStatement","src":"7255:85:67"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8199,"name":"snapshotRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"7392:12:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8197,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"7358:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMemberCount","nodeType":"MemberAccess","referencedDeclaration":216,"src":"7358:33:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view external returns (uint256)"}},"id":8200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7358:47:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":8201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7409:1:67","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7358:52:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d756c7469706c6520736e617073686f7474657273206578697374","id":8203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7412:29:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_13501c8caa6bdd6d160e083562c1edc001ea5b234fcb0f1a3fb97b6e55c1ee2a","typeString":"literal_string \"Multiple snapshotters exist\""},"value":"Multiple snapshotters exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_13501c8caa6bdd6d160e083562c1edc001ea5b234fcb0f1a3fb97b6e55c1ee2a","typeString":"literal_string \"Multiple snapshotters exist\""}],"id":8196,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7350:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7350:92:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8205,"nodeType":"ExpressionStatement","src":"7350:92:67"},{"expression":{"id":8210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8206,"name":"_startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"7556:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8207,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"7576:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":2378,"src":"7576:26:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7576:28:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7556:48:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8211,"nodeType":"ExpressionStatement","src":"7556:48:67"},{"expression":{"id":8215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8212,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"7614:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8213,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7632:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"7632:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7614:33:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8216,"nodeType":"ExpressionStatement","src":"7614:33:67"},{"expression":{"id":8219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8217,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"7657:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8218,"name":"INITIAL_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7895,"src":"7665:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7657:20:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8220,"nodeType":"ExpressionStatement","src":"7657:20:67"},{"eventCall":{"arguments":[{"id":8222,"name":"INITIAL_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7895,"src":"7716:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8223,"name":"_startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"7730:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8221,"name":"MiningParametersUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7915,"src":"7692:23:67","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":8224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7692:56:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8225,"nodeType":"EmitStatement","src":"7687:61:67"}]},"documentation":{"id":7954,"nodeType":"StructuredDocumentation","src":"3110:176:67","text":" @notice Initiate BAL token inflation schedule\n @dev Reverts if contract does not have sole minting powers over BAL (and no other minters can be added)."},"functionSelector":"0f15f4c0","id":8227,"implemented":true,"kind":"function","modifiers":[{"id":7958,"modifierName":{"id":7957,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"3329:12:67","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3329:12:67"},{"id":7960,"modifierName":{"id":7959,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3342:12:67","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3342:12:67"}],"name":"activate","nodeType":"FunctionDefinition","overrides":{"id":7956,"nodeType":"OverrideSpecifier","overrides":[],"src":"3320:8:67"},"parameters":{"id":7955,"nodeType":"ParameterList","parameters":[],"src":"3308:2:67"},"returnParameters":{"id":7961,"nodeType":"ParameterList","parameters":[],"src":"3355:0:67"},"scope":8750,"src":"3291:4464:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[326],"body":{"id":8270,"nodeType":"Block","src":"8006:456:67","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8238,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"8138:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"8138:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":8242,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"8177:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8240,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"8157:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"8157:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8157:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8138:59:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8249,"nodeType":"IfStatement","src":"8134:115:67","trueBody":{"id":8248,"nodeType":"Block","src":"8199:50:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8245,"name":"_updateMiningParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"8213:23:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8213:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8247,"nodeType":"ExpressionStatement","src":"8213:25:67"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8255,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8232,"src":"8313:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8251,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"8280:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":2378,"src":"8280:26:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8280:28:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"8280:32:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8280:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8257,"name":"_availableSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8424,"src":"8324:16:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8324:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8280:62:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d696e7420616d6f756e7420657863656564732072656d61696e696e6720617661696c61626c6520737570706c79","id":8260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8356:48:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_6eb66c64386679ae0ee88bc9cc3bd4fecbeb1a16cc70f65f78e8c0472437ba6d","typeString":"literal_string \"Mint amount exceeds remaining available supply\""},"value":"Mint amount exceeds remaining available supply"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6eb66c64386679ae0ee88bc9cc3bd4fecbeb1a16cc70f65f78e8c0472437ba6d","typeString":"literal_string \"Mint amount exceeds remaining available supply\""}],"id":8250,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8259:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8259:155:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8262,"nodeType":"ExpressionStatement","src":"8259:155:67"},{"expression":{"arguments":[{"id":8266,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8230,"src":"8444:2:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8267,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8232,"src":"8448:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8263,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"8424:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":209,"src":"8424:19:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":8268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8424:31:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8269,"nodeType":"ExpressionStatement","src":"8424:31:67"}]},"documentation":{"id":8228,"nodeType":"StructuredDocumentation","src":"7761:167:67","text":" @notice Mint BAL tokens subject to the defined inflation schedule\n @dev Callable only by addresses defined in the Balancer Authorizer contract"},"functionSelector":"40c10f19","id":8271,"implemented":true,"kind":"function","modifiers":[{"id":8236,"modifierName":{"id":8235,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"7993:12:67","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"7993:12:67"}],"name":"mint","nodeType":"FunctionDefinition","overrides":{"id":8234,"nodeType":"OverrideSpecifier","overrides":[],"src":"7984:8:67"},"parameters":{"id":8233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8230,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":8271,"src":"7947:10:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8229,"name":"address","nodeType":"ElementaryTypeName","src":"7947:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8232,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8271,"src":"7959:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8231,"name":"uint256","nodeType":"ElementaryTypeName","src":"7959:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7946:28:67"},"returnParameters":{"id":8237,"nodeType":"ParameterList","parameters":[],"src":"8006:0:67"},"scope":8750,"src":"7933:529:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8282,"nodeType":"Block","src":"8665:42:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8277,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"8675:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"snapshot","nodeType":"MemberAccess","referencedDeclaration":273,"src":"8675:23:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":8280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8675:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8281,"nodeType":"ExpressionStatement","src":"8675:25:67"}]},"documentation":{"id":8272,"nodeType":"StructuredDocumentation","src":"8468:150:67","text":" @notice Perform a snapshot of BAL token balances\n @dev Callable only by addresses defined in the Balancer Authorizer contract"},"functionSelector":"9711715a","id":8283,"implemented":true,"kind":"function","modifiers":[{"id":8275,"modifierName":{"id":8274,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"8652:12:67","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"8652:12:67"}],"name":"snapshot","nodeType":"FunctionDefinition","parameters":{"id":8273,"nodeType":"ParameterList","parameters":[],"src":"8640:2:67"},"returnParameters":{"id":8276,"nodeType":"ParameterList","parameters":[],"src":"8665:0:67"},"scope":8750,"src":"8623:84:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8291,"nodeType":"Block","src":"8836:36:67","statements":[{"expression":{"id":8289,"name":"_miningEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7917,"src":"8853:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8288,"id":8290,"nodeType":"Return","src":"8846:19:67"}]},"documentation":{"id":8284,"nodeType":"StructuredDocumentation","src":"8713:60:67","text":" @notice Returns the current epoch number."},"functionSelector":"087905c9","id":8292,"implemented":true,"kind":"function","modifiers":[],"name":"getMiningEpoch","nodeType":"FunctionDefinition","parameters":{"id":8285,"nodeType":"ParameterList","parameters":[],"src":"8801:2:67"},"returnParameters":{"id":8288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8287,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8292,"src":"8827:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8827:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8826:9:67"},"scope":8750,"src":"8778:94:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8300,"nodeType":"Block","src":"9020:39:67","statements":[{"expression":{"id":8298,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"9037:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8297,"id":8299,"nodeType":"Return","src":"9030:22:67"}]},"documentation":{"id":8293,"nodeType":"StructuredDocumentation","src":"8878:76:67","text":" @notice Returns the start timestamp of the current epoch."},"functionSelector":"4d2fa413","id":8301,"implemented":true,"kind":"function","modifiers":[],"name":"getStartEpochTime","nodeType":"FunctionDefinition","parameters":{"id":8294,"nodeType":"ParameterList","parameters":[],"src":"8985:2:67"},"returnParameters":{"id":8297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8296,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8301,"src":"9011:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8295,"name":"uint256","nodeType":"ElementaryTypeName","src":"9011:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9010:9:67"},"scope":8750,"src":"8959:100:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8312,"nodeType":"Block","src":"9205:64:67","statements":[{"expression":{"arguments":[{"id":8309,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"9242:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8307,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"9222:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"9222:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9222:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8306,"id":8311,"nodeType":"Return","src":"9215:47:67"}]},"documentation":{"id":8302,"nodeType":"StructuredDocumentation","src":"9065:73:67","text":" @notice Returns the start timestamp of the next epoch."},"functionSelector":"0dfbdce4","id":8313,"implemented":true,"kind":"function","modifiers":[],"name":"getFutureEpochTime","nodeType":"FunctionDefinition","parameters":{"id":8303,"nodeType":"ParameterList","parameters":[],"src":"9170:2:67"},"returnParameters":{"id":8306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8305,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8313,"src":"9196:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8304,"name":"uint256","nodeType":"ElementaryTypeName","src":"9196:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9195:9:67"},"scope":8750,"src":"9143:126:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8321,"nodeType":"Block","src":"9437:41:67","statements":[{"expression":{"id":8319,"name":"_startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"9454:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8318,"id":8320,"nodeType":"Return","src":"9447:24:67"}]},"documentation":{"id":8314,"nodeType":"StructuredDocumentation","src":"9275:94:67","text":" @notice Returns the available supply at the beginning of the current epoch."},"functionSelector":"55f74176","id":8322,"implemented":true,"kind":"function","modifiers":[],"name":"getStartEpochSupply","nodeType":"FunctionDefinition","parameters":{"id":8315,"nodeType":"ParameterList","parameters":[],"src":"9402:2:67"},"returnParameters":{"id":8318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8317,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8322,"src":"9428:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8316,"name":"uint256","nodeType":"ElementaryTypeName","src":"9428:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9427:9:67"},"scope":8750,"src":"9374:104:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8330,"nodeType":"Block","src":"9628:29:67","statements":[{"expression":{"id":8328,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"9645:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8327,"id":8329,"nodeType":"Return","src":"9638:12:67"}]},"documentation":{"id":8323,"nodeType":"StructuredDocumentation","src":"9484:79:67","text":" @notice Returns the current inflation rate of BAL per second"},"functionSelector":"819df2c4","id":8331,"implemented":true,"kind":"function","modifiers":[],"name":"getInflationRate","nodeType":"FunctionDefinition","parameters":{"id":8324,"nodeType":"ParameterList","parameters":[],"src":"9593:2:67"},"returnParameters":{"id":8327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8326,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8331,"src":"9619:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8325,"name":"uint256","nodeType":"ElementaryTypeName","src":"9619:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9618:9:67"},"scope":8750,"src":"9568:89:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8340,"nodeType":"Block","src":"9827:42:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8337,"name":"_availableSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8424,"src":"9844:16:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9844:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8336,"id":8339,"nodeType":"Return","src":"9837:25:67"}]},"documentation":{"id":8332,"nodeType":"StructuredDocumentation","src":"9663:97:67","text":" @notice Maximum allowable number of tokens in existence (claimed or unclaimed)"},"functionSelector":"c167d1cd","id":8341,"implemented":true,"kind":"function","modifiers":[],"name":"getAvailableSupply","nodeType":"FunctionDefinition","parameters":{"id":8333,"nodeType":"ParameterList","parameters":[],"src":"9792:2:67"},"returnParameters":{"id":8336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8335,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8341,"src":"9818:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8334,"name":"uint256","nodeType":"ElementaryTypeName","src":"9818:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9817:9:67"},"scope":8750,"src":"9765:104:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[319],"body":{"id":8351,"nodeType":"Block","src":"10115:46:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8348,"name":"_startEpochTimeWrite","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8451,"src":"10132:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":8349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10132:22:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8347,"id":8350,"nodeType":"Return","src":"10125:29:67"}]},"documentation":{"id":8342,"nodeType":"StructuredDocumentation","src":"9875:168:67","text":" @notice Get timestamp of the current mining epoch start while simultaneously updating mining parameters\n @return Timestamp of the current epoch"},"functionSelector":"a228bced","id":8352,"implemented":true,"kind":"function","modifiers":[],"name":"startEpochTimeWrite","nodeType":"FunctionDefinition","overrides":{"id":8344,"nodeType":"OverrideSpecifier","overrides":[],"src":"10088:8:67"},"parameters":{"id":8343,"nodeType":"ParameterList","parameters":[],"src":"10076:2:67"},"returnParameters":{"id":8347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8346,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8352,"src":"10106:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8345,"name":"uint256","nodeType":"ElementaryTypeName","src":"10106:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10105:9:67"},"scope":8750,"src":"10048:113:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8364,"nodeType":"Block","src":"10393:71:67","statements":[{"expression":{"arguments":[{"id":8361,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"10437:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8358,"name":"_startEpochTimeWrite","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8451,"src":"10410:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":8359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10410:22:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"10410:26:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10410:47:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8357,"id":8363,"nodeType":"Return","src":"10403:54:67"}]},"documentation":{"id":8353,"nodeType":"StructuredDocumentation","src":"10167:162:67","text":" @notice Get timestamp of the next mining epoch start while simultaneously updating mining parameters\n @return Timestamp of the next epoch"},"functionSelector":"277dbafb","id":8365,"implemented":true,"kind":"function","modifiers":[],"name":"futureEpochTimeWrite","nodeType":"FunctionDefinition","parameters":{"id":8354,"nodeType":"ParameterList","parameters":[],"src":"10363:2:67"},"returnParameters":{"id":8357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8356,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8365,"src":"10384:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8355,"name":"uint256","nodeType":"ElementaryTypeName","src":"10384:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10383:9:67"},"scope":8750,"src":"10334:130:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8383,"nodeType":"Block","src":"10737:150:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8370,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"10755:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"10755:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":8374,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"10794:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8372,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"10774:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"10774:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10774:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10755:59:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45706f636820686173206e6f742066696e697368656420796574","id":8377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10816:28:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_844f8669d9677550455a55a9e49a7c619dce5f058c358110abeab9cb013df878","typeString":"literal_string \"Epoch has not finished yet\""},"value":"Epoch has not finished yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_844f8669d9677550455a55a9e49a7c619dce5f058c358110abeab9cb013df878","typeString":"literal_string \"Epoch has not finished yet\""}],"id":8369,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10747:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10747:98:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8379,"nodeType":"ExpressionStatement","src":"10747:98:67"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8380,"name":"_updateMiningParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"10855:23:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10855:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8382,"nodeType":"ExpressionStatement","src":"10855:25:67"}]},"documentation":{"id":8366,"nodeType":"StructuredDocumentation","src":"10470:219:67","text":" @notice Update mining rate and supply at the start of the epoch\n @dev Callable by any address, but only once per epoch\n Total supply becomes slightly larger if this function is called late"},"functionSelector":"cb626ae2","id":8384,"implemented":true,"kind":"function","modifiers":[],"name":"updateMiningParameters","nodeType":"FunctionDefinition","parameters":{"id":8367,"nodeType":"ParameterList","parameters":[],"src":"10725:2:67"},"returnParameters":{"id":8368,"nodeType":"ParameterList","parameters":[],"src":"10737:0:67"},"scope":8750,"src":"10694:193:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8399,"nodeType":"Block","src":"11250:56:67","statements":[{"expression":{"arguments":[{"id":8395,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8387,"src":"11288:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8396,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8389,"src":"11295:3:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8394,"name":"_mintableInTimeframe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"11267:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"}},"id":8397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11267:32:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8393,"id":8398,"nodeType":"Return","src":"11260:39:67"}]},"documentation":{"id":8385,"nodeType":"StructuredDocumentation","src":"10893:263:67","text":" @notice How much supply is mintable from start timestamp till end timestamp\n @param start Start of the time interval (timestamp)\n @param end End of the time interval (timestamp)\n @return Tokens mintable from `start` till `end`"},"functionSelector":"c3b03fa8","id":8400,"implemented":true,"kind":"function","modifiers":[],"name":"mintableInTimeframe","nodeType":"FunctionDefinition","parameters":{"id":8390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8387,"mutability":"mutable","name":"start","nodeType":"VariableDeclaration","scope":8400,"src":"11190:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8386,"name":"uint256","nodeType":"ElementaryTypeName","src":"11190:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8389,"mutability":"mutable","name":"end","nodeType":"VariableDeclaration","scope":8400,"src":"11205:11:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8388,"name":"uint256","nodeType":"ElementaryTypeName","src":"11205:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11189:28:67"},"returnParameters":{"id":8393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8392,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8400,"src":"11241:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8391,"name":"uint256","nodeType":"ElementaryTypeName","src":"11241:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11240:9:67"},"scope":8750,"src":"11161:145:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8423,"nodeType":"Block","src":"11501:167:67","statements":[{"assignments":[8407],"declarations":[{"constant":false,"id":8407,"mutability":"mutable","name":"newSupplyFromCurrentEpoch","nodeType":"VariableDeclaration","scope":8423,"src":"11511:33:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8406,"name":"uint256","nodeType":"ElementaryTypeName","src":"11511:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8417,"initialValue":{"arguments":[{"id":8415,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"11590:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"arguments":[{"id":8411,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"11568:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":8408,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"11548:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"11548:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":5521,"src":"11548:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11548:36:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8413,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11547:38:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":5618,"src":"11547:42:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11547:49:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11511:85:67"},{"expression":{"arguments":[{"id":8420,"name":"newSupplyFromCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8407,"src":"11635:25:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8418,"name":"_startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"11613:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"11613:21:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11613:48:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8405,"id":8422,"nodeType":"Return","src":"11606:55:67"}]},"documentation":{"id":8401,"nodeType":"StructuredDocumentation","src":"11339:97:67","text":" @notice Maximum allowable number of tokens in existence (claimed or unclaimed)"},"id":8424,"implemented":true,"kind":"function","modifiers":[],"name":"_availableSupply","nodeType":"FunctionDefinition","parameters":{"id":8402,"nodeType":"ParameterList","parameters":[],"src":"11466:2:67"},"returnParameters":{"id":8405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8404,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8424,"src":"11492:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8403,"name":"uint256","nodeType":"ElementaryTypeName","src":"11492:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11491:9:67"},"scope":8750,"src":"11441:227:67","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8450,"nodeType":"Block","src":"11906:247:67","statements":[{"assignments":[8431],"declarations":[{"constant":false,"id":8431,"mutability":"mutable","name":"startEpochTime","nodeType":"VariableDeclaration","scope":8450,"src":"11916:22:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8430,"name":"uint256","nodeType":"ElementaryTypeName","src":"11916:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8433,"initialValue":{"id":8432,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"11941:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11916:40:67"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8434,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"11970:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"11970:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":8438,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"12008:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8436,"name":"startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8431,"src":"11989:14:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"11989:18:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11989:39:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11970:58:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8447,"nodeType":"IfStatement","src":"11966:150:67","trueBody":{"id":8446,"nodeType":"Block","src":"12030:86:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8441,"name":"_updateMiningParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"12044:23:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12044:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8443,"nodeType":"ExpressionStatement","src":"12044:25:67"},{"expression":{"id":8444,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"12090:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8429,"id":8445,"nodeType":"Return","src":"12083:22:67"}]}},{"expression":{"id":8448,"name":"startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8431,"src":"12132:14:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8429,"id":8449,"nodeType":"Return","src":"12125:21:67"}]},"documentation":{"id":8425,"nodeType":"StructuredDocumentation","src":"11674:168:67","text":" @notice Get timestamp of the current mining epoch start while simultaneously updating mining parameters\n @return Timestamp of the current epoch"},"id":8451,"implemented":true,"kind":"function","modifiers":[],"name":"_startEpochTimeWrite","nodeType":"FunctionDefinition","parameters":{"id":8426,"nodeType":"ParameterList","parameters":[],"src":"11876:2:67"},"returnParameters":{"id":8429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8428,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8451,"src":"11897:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8427,"name":"uint256","nodeType":"ElementaryTypeName","src":"11897:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11896:9:67"},"scope":8750,"src":"11847:306:67","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8505,"nodeType":"Block","src":"12203:503:67","statements":[{"assignments":[8455],"declarations":[{"constant":false,"id":8455,"mutability":"mutable","name":"inflationRate","nodeType":"VariableDeclaration","scope":8505,"src":"12213:21:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8454,"name":"uint256","nodeType":"ElementaryTypeName","src":"12213:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8457,"initialValue":{"id":8456,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"12237:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12213:29:67"},{"assignments":[8459],"declarations":[{"constant":false,"id":8459,"mutability":"mutable","name":"startEpochSupply","nodeType":"VariableDeclaration","scope":8505,"src":"12252:24:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8458,"name":"uint256","nodeType":"ElementaryTypeName","src":"12252:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8467,"initialValue":{"arguments":[{"arguments":[{"id":8464,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"12319:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8462,"name":"inflationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8455,"src":"12301:13:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":5618,"src":"12301:17:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12301:38:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8460,"name":"_startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"12279:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"12279:21:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12279:61:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12252:88:67"},{"expression":{"id":8476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8468,"name":"inflationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8455,"src":"12350:13:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8474,"name":"RATE_REDUCTION_COEFFICIENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"12410:26:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8471,"name":"RATE_DENOMINATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7907,"src":"12384:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8469,"name":"inflationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8455,"src":"12366:13:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":5618,"src":"12366:17:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12366:35:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":5663,"src":"12366:43:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12366:71:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12350:87:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8477,"nodeType":"ExpressionStatement","src":"12350:87:67"},{"expression":{"id":8483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8478,"name":"_miningEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7917,"src":"12448:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"31","id":8481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12480:1:67","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"id":8479,"name":"_miningEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7917,"src":"12463:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"12463:16:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12463:19:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12448:34:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8484,"nodeType":"ExpressionStatement","src":"12448:34:67"},{"expression":{"id":8490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8485,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"12492:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8488,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"12530:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8486,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"12510:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"12510:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12510:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12492:58:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8491,"nodeType":"ExpressionStatement","src":"12492:58:67"},{"expression":{"id":8494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8492,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"12560:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8493,"name":"inflationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8455,"src":"12568:13:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12560:21:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8495,"nodeType":"ExpressionStatement","src":"12560:21:67"},{"expression":{"id":8498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8496,"name":"_startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"12591:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8497,"name":"startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8459,"src":"12611:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12591:36:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8499,"nodeType":"ExpressionStatement","src":"12591:36:67"},{"eventCall":{"arguments":[{"id":8501,"name":"inflationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8455,"src":"12667:13:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8502,"name":"startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8459,"src":"12682:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8500,"name":"MiningParametersUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7915,"src":"12643:23:67","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":8503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12643:56:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8504,"nodeType":"EmitStatement","src":"12638:61:67"}]},"id":8506,"implemented":true,"kind":"function","modifiers":[],"name":"_updateMiningParameters","nodeType":"FunctionDefinition","parameters":{"id":8452,"nodeType":"ParameterList","parameters":[],"src":"12191:2:67"},"returnParameters":{"id":8453,"nodeType":"ParameterList","parameters":[],"src":"12203:0:67"},"scope":8750,"src":"12159:547:67","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8672,"nodeType":"Block","src":"13070:1859:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8517,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8509,"src":"13088:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8518,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8511,"src":"13097:3:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13088:12:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7374617274203e20656e64","id":8520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13102:13:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_145e9e17082b02be25129749b7eb1462bd7e8d2ab4c8a5c3e371c8ac1d5ebece","typeString":"literal_string \"start > end\""},"value":"start > end"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_145e9e17082b02be25129749b7eb1462bd7e8d2ab4c8a5c3e371c8ac1d5ebece","typeString":"literal_string \"start > end\""}],"id":8516,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13080:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13080:36:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8522,"nodeType":"ExpressionStatement","src":"13080:36:67"},{"assignments":[8524],"declarations":[{"constant":false,"id":8524,"mutability":"mutable","name":"currentEpochTime","nodeType":"VariableDeclaration","scope":8672,"src":"13127:24:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8523,"name":"uint256","nodeType":"ElementaryTypeName","src":"13127:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8526,"initialValue":{"id":8525,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"13154:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13127:42:67"},{"assignments":[8528],"declarations":[{"constant":false,"id":8528,"mutability":"mutable","name":"currentRate","nodeType":"VariableDeclaration","scope":8672,"src":"13179:19:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8527,"name":"uint256","nodeType":"ElementaryTypeName","src":"13179:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8530,"initialValue":{"id":8529,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"13201:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13179:27:67"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8531,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8511,"src":"13387:3:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":8534,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"13414:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8532,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"13393:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"13393:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13393:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13387:47:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8555,"nodeType":"IfStatement","src":"13383:235:67","trueBody":{"id":8554,"nodeType":"Block","src":"13436:182:67","statements":[{"expression":{"id":8542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8537,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"13450:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8540,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"13490:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8538,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"13469:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"13469:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13469:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13450:60:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8543,"nodeType":"ExpressionStatement","src":"13450:60:67"},{"expression":{"id":8552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8544,"name":"currentRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"13524:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8550,"name":"RATE_REDUCTION_COEFFICIENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"13580:26:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8547,"name":"RATE_DENOMINATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7907,"src":"13554:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8545,"name":"currentRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"13538:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":5618,"src":"13538:15:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13538:33:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":5663,"src":"13538:41:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13538:69:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13524:83:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8553,"nodeType":"ExpressionStatement","src":"13524:83:67"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8557,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8511,"src":"13636:3:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":8560,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"13664:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8558,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"13643:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"13643:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13643:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13636:48:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f6f2066617220696e20667574757265","id":8563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13686:19:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_0e2e944db403ece7bc686f46309fd621c067b0b782b5eabb2e86ddafce8e984b","typeString":"literal_string \"too far in future\""},"value":"too far in future"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0e2e944db403ece7bc686f46309fd621c067b0b782b5eabb2e86ddafce8e984b","typeString":"literal_string \"too far in future\""}],"id":8556,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13628:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13628:78:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8565,"nodeType":"ExpressionStatement","src":"13628:78:67"},{"assignments":[8567],"declarations":[{"constant":false,"id":8567,"mutability":"mutable","name":"toMint","nodeType":"VariableDeclaration","scope":8672,"src":"13717:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8566,"name":"uint256","nodeType":"ElementaryTypeName","src":"13717:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8569,"initialValue":{"hexValue":"30","id":8568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13734:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13717:18:67"},{"body":{"id":8668,"nodeType":"Block","src":"13791:1108:67","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8580,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8511,"src":"13809:3:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8581,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"13816:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13809:23:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8644,"nodeType":"IfStatement","src":"13805:789:67","trueBody":{"id":8643,"nodeType":"Block","src":"13834:760:67","statements":[{"assignments":[8584],"declarations":[{"constant":false,"id":8584,"mutability":"mutable","name":"currentEnd","nodeType":"VariableDeclaration","scope":8643,"src":"13852:18:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8583,"name":"uint256","nodeType":"ElementaryTypeName","src":"13852:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8586,"initialValue":{"id":8585,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8511,"src":"13873:3:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13852:24:67"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8587,"name":"currentEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8584,"src":"13898:10:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":8590,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"13932:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8588,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"13911:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"13911:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13911:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13898:54:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8601,"nodeType":"IfStatement","src":"13894:155:67","trueBody":{"id":8600,"nodeType":"Block","src":"13954:95:67","statements":[{"expression":{"id":8598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8593,"name":"currentEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8584,"src":"13976:10:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8596,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"14010:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8594,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"13989:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"13989:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13989:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13976:54:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8599,"nodeType":"ExpressionStatement","src":"13976:54:67"}]}},{"assignments":[8603],"declarations":[{"constant":false,"id":8603,"mutability":"mutable","name":"currentStart","nodeType":"VariableDeclaration","scope":8643,"src":"14067:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8602,"name":"uint256","nodeType":"ElementaryTypeName","src":"14067:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8605,"initialValue":{"id":8604,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8509,"src":"14090:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14067:28:67"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8606,"name":"currentStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8603,"src":"14117:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":8609,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"14154:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8607,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"14133:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"14133:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14133:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14117:57:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8614,"name":"currentStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8603,"src":"14295:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8615,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"14310:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14295:31:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8622,"nodeType":"IfStatement","src":"14291:109:67","trueBody":{"id":8621,"nodeType":"Block","src":"14328:72:67","statements":[{"expression":{"id":8619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8617,"name":"currentStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8603,"src":"14350:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8618,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"14365:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14350:31:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8620,"nodeType":"ExpressionStatement","src":"14350:31:67"}]}},"id":8623,"nodeType":"IfStatement","src":"14113:287:67","trueBody":{"id":8613,"nodeType":"Block","src":"14176:109:67","statements":[{"id":8612,"nodeType":"Break","src":"14261:5:67"}]}},{"expression":{"id":8635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8624,"name":"toMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8567,"src":"14418:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":8631,"name":"currentStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8603,"src":"14469:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8629,"name":"currentEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8584,"src":"14454:10:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":5521,"src":"14454:14:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14454:28:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8627,"name":"currentRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"14438:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":5618,"src":"14438:15:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14438:45:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8625,"name":"toMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8567,"src":"14427:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"14427:10:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14427:57:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14418:66:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8636,"nodeType":"ExpressionStatement","src":"14418:66:67"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8637,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8509,"src":"14507:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8638,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"14516:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14507:25:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8642,"nodeType":"IfStatement","src":"14503:77:67","trueBody":{"id":8641,"nodeType":"Block","src":"14534:46:67","statements":[{"id":8640,"nodeType":"Break","src":"14556:5:67"}]}}]}},{"expression":{"id":8650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8645,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"14608:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8648,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"14648:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8646,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"14627:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":5521,"src":"14627:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14627:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14608:60:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8651,"nodeType":"ExpressionStatement","src":"14608:60:67"},{"expression":{"id":8660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8652,"name":"currentRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"14756:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8658,"name":"RATE_DENOMINATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7907,"src":"14822:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8655,"name":"RATE_REDUCTION_COEFFICIENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"14786:26:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8653,"name":"currentRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"14770:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":5618,"src":"14770:15:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14770:43:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":5663,"src":"14770:51:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14770:69:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14756:83:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8661,"nodeType":"ExpressionStatement","src":"14756:83:67"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8663,"name":"currentRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"14860:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8664,"name":"INITIAL_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7895,"src":"14875:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14860:27:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8662,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"14853:6:67","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14853:35:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8667,"nodeType":"ExpressionStatement","src":"14853:35:67"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8574,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8571,"src":"13769:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"393939","id":8575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13777:3:67","typeDescriptions":{"typeIdentifier":"t_rational_999_by_1","typeString":"int_const 999"},"value":"999"},"src":"13769:11:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8669,"initializationExpression":{"assignments":[8571],"declarations":[{"constant":false,"id":8571,"mutability":"mutable","name":"epoch","nodeType":"VariableDeclaration","scope":8669,"src":"13750:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8570,"name":"uint256","nodeType":"ElementaryTypeName","src":"13750:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8573,"initialValue":{"hexValue":"30","id":8572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13766:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13750:17:67"},"loopExpression":{"expression":{"id":8578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"13782:7:67","subExpression":{"id":8577,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8571,"src":"13784:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8579,"nodeType":"ExpressionStatement","src":"13782:7:67"},"nodeType":"ForStatement","src":"13745:1154:67"},{"expression":{"id":8670,"name":"toMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8567,"src":"14916:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8515,"id":8671,"nodeType":"Return","src":"14909:13:67"}]},"documentation":{"id":8507,"nodeType":"StructuredDocumentation","src":"12712:263:67","text":" @notice How much supply is mintable from start timestamp till end timestamp\n @param start Start of the time interval (timestamp)\n @param end End of the time interval (timestamp)\n @return Tokens mintable from `start` till `end`"},"id":8673,"implemented":true,"kind":"function","modifiers":[],"name":"_mintableInTimeframe","nodeType":"FunctionDefinition","parameters":{"id":8512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8509,"mutability":"mutable","name":"start","nodeType":"VariableDeclaration","scope":8673,"src":"13010:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8508,"name":"uint256","nodeType":"ElementaryTypeName","src":"13010:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8511,"mutability":"mutable","name":"end","nodeType":"VariableDeclaration","scope":8673,"src":"13025:11:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8510,"name":"uint256","nodeType":"ElementaryTypeName","src":"13025:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13009:28:67"},"returnParameters":{"id":8515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8514,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8673,"src":"13061:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8513,"name":"uint256","nodeType":"ElementaryTypeName","src":"13061:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13060:9:67"},"scope":8750,"src":"12980:1949:67","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[314],"body":{"id":8681,"nodeType":"Block","src":"15201:29:67","statements":[{"expression":{"id":8679,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"15218:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8678,"id":8680,"nodeType":"Return","src":"15211:12:67"}]},"functionSelector":"2c4e722e","id":8682,"implemented":true,"kind":"function","modifiers":[],"name":"rate","nodeType":"FunctionDefinition","overrides":{"id":8675,"nodeType":"OverrideSpecifier","overrides":[],"src":"15174:8:67"},"parameters":{"id":8674,"nodeType":"ParameterList","parameters":[],"src":"15157:2:67"},"returnParameters":{"id":8678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8677,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8682,"src":"15192:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8676,"name":"uint256","nodeType":"ElementaryTypeName","src":"15192:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15191:9:67"},"scope":8750,"src":"15144:86:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8690,"nodeType":"Block","src":"15296:42:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8687,"name":"_availableSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8424,"src":"15313:16:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15313:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8686,"id":8689,"nodeType":"Return","src":"15306:25:67"}]},"functionSelector":"24f92a25","id":8691,"implemented":true,"kind":"function","modifiers":[],"name":"available_supply","nodeType":"FunctionDefinition","parameters":{"id":8683,"nodeType":"ParameterList","parameters":[],"src":"15261:2:67"},"returnParameters":{"id":8686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8685,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8691,"src":"15287:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8684,"name":"uint256","nodeType":"ElementaryTypeName","src":"15287:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15286:9:67"},"scope":8750,"src":"15236:102:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8700,"nodeType":"Block","src":"15578:46:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8697,"name":"_startEpochTimeWrite","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8451,"src":"15595:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":8698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15595:22:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8696,"id":8699,"nodeType":"Return","src":"15588:29:67"}]},"documentation":{"id":8692,"nodeType":"StructuredDocumentation","src":"15344:168:67","text":" @notice Get timestamp of the current mining epoch start while simultaneously updating mining parameters\n @return Timestamp of the current epoch"},"functionSelector":"adc4cf43","id":8701,"implemented":true,"kind":"function","modifiers":[],"name":"start_epoch_time_write","nodeType":"FunctionDefinition","parameters":{"id":8693,"nodeType":"ParameterList","parameters":[],"src":"15548:2:67"},"returnParameters":{"id":8696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8695,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8701,"src":"15569:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8694,"name":"uint256","nodeType":"ElementaryTypeName","src":"15569:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15568:9:67"},"scope":8750,"src":"15517:107:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8713,"nodeType":"Block","src":"15859:71:67","statements":[{"expression":{"arguments":[{"id":8710,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"15903:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8707,"name":"_startEpochTimeWrite","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8451,"src":"15876:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":8708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15876:22:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"15876:26:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15876:47:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8706,"id":8712,"nodeType":"Return","src":"15869:54:67"}]},"documentation":{"id":8702,"nodeType":"StructuredDocumentation","src":"15630:162:67","text":" @notice Get timestamp of the next mining epoch start while simultaneously updating mining parameters\n @return Timestamp of the next epoch"},"functionSelector":"b26b238e","id":8714,"implemented":true,"kind":"function","modifiers":[],"name":"future_epoch_time_write","nodeType":"FunctionDefinition","parameters":{"id":8703,"nodeType":"ParameterList","parameters":[],"src":"15829:2:67"},"returnParameters":{"id":8706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8705,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8714,"src":"15850:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8704,"name":"uint256","nodeType":"ElementaryTypeName","src":"15850:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15849:9:67"},"scope":8750,"src":"15797:133:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8732,"nodeType":"Block","src":"16205:150:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8719,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16223:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"16223:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":8723,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"16262:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8721,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"16242:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"16242:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16242:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16223:59:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45706f636820686173206e6f742066696e697368656420796574","id":8726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16284:28:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_844f8669d9677550455a55a9e49a7c619dce5f058c358110abeab9cb013df878","typeString":"literal_string \"Epoch has not finished yet\""},"value":"Epoch has not finished yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_844f8669d9677550455a55a9e49a7c619dce5f058c358110abeab9cb013df878","typeString":"literal_string \"Epoch has not finished yet\""}],"id":8718,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16215:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16215:98:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8728,"nodeType":"ExpressionStatement","src":"16215:98:67"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8729,"name":"_updateMiningParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"16323:23:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16323:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8731,"nodeType":"ExpressionStatement","src":"16323:25:67"}]},"documentation":{"id":8715,"nodeType":"StructuredDocumentation","src":"15936:219:67","text":" @notice Update mining rate and supply at the start of the epoch\n @dev Callable by any address, but only once per epoch\n Total supply becomes slightly larger if this function is called late"},"functionSelector":"d43b40fa","id":8733,"implemented":true,"kind":"function","modifiers":[],"name":"update_mining_parameters","nodeType":"FunctionDefinition","parameters":{"id":8716,"nodeType":"ParameterList","parameters":[],"src":"16193:2:67"},"returnParameters":{"id":8717,"nodeType":"ParameterList","parameters":[],"src":"16205:0:67"},"scope":8750,"src":"16160:195:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8748,"nodeType":"Block","src":"16720:56:67","statements":[{"expression":{"arguments":[{"id":8744,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8736,"src":"16758:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8745,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8738,"src":"16765:3:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8743,"name":"_mintableInTimeframe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"16737:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"}},"id":8746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16737:32:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8742,"id":8747,"nodeType":"Return","src":"16730:39:67"}]},"documentation":{"id":8734,"nodeType":"StructuredDocumentation","src":"16361:263:67","text":" @notice How much supply is mintable from start timestamp till end timestamp\n @param start Start of the time interval (timestamp)\n @param end End of the time interval (timestamp)\n @return Tokens mintable from `start` till `end`"},"functionSelector":"d725a9ca","id":8749,"implemented":true,"kind":"function","modifiers":[],"name":"mintable_in_timeframe","nodeType":"FunctionDefinition","parameters":{"id":8739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8736,"mutability":"mutable","name":"start","nodeType":"VariableDeclaration","scope":8749,"src":"16660:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8735,"name":"uint256","nodeType":"ElementaryTypeName","src":"16660:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8738,"mutability":"mutable","name":"end","nodeType":"VariableDeclaration","scope":8749,"src":"16675:11:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8737,"name":"uint256","nodeType":"ElementaryTypeName","src":"16675:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16659:28:67"},"returnParameters":{"id":8742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8741,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8749,"src":"16711:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8740,"name":"uint256","nodeType":"ElementaryTypeName","src":"16711:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16710:9:67"},"scope":8750,"src":"16629:147:67","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8751,"src":"1910:14868:67"}],"src":"688:16091:67"},"id":67},"contracts/GaugeWorkingBalanceHelper.sol":{"ast":{"absolutePath":"contracts/GaugeWorkingBalanceHelper.sol","exportedSymbols":{"GaugeWorkingBalanceHelper":[8993],"IGauge":[8789],"IVeDelegationProxy":[8764]},"id":8994,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8752,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:68"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":8753,"nodeType":"ImportDirective","scope":8994,"sourceUnit":2448,"src":"713:87:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol","id":8754,"nodeType":"ImportDirective","scope":8994,"sourceUnit":1470,"src":"801:83:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":8755,"nodeType":"ImportDirective","scope":8994,"sourceUnit":4115,"src":"886:72:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","id":8756,"nodeType":"ImportDirective","scope":8994,"sourceUnit":5684,"src":"959:66:68","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8757,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"1059:13:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":8758,"nodeType":"InheritanceSpecifier","src":"1059:13:68"}],"contractDependencies":[1469],"contractKind":"interface","fullyImplemented":false,"id":8764,"linearizedBaseContracts":[8764,1469],"name":"IVeDelegationProxy","nodeType":"ContractDefinition","nodes":[{"functionSelector":"08b0308a","id":8763,"implemented":false,"kind":"function","modifiers":[],"name":"getVotingEscrow","nodeType":"FunctionDefinition","parameters":{"id":8759,"nodeType":"ParameterList","parameters":[],"src":"1103:2:68"},"returnParameters":{"id":8762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8761,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8763,"src":"1129:6:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":8760,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1129:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1128:8:68"},"scope":8764,"src":"1079:58:68","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8994,"src":"1027:112:68"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":8789,"linearizedBaseContracts":[8789],"name":"IGauge","nodeType":"ContractDefinition","nodes":[{"functionSelector":"70a08231","id":8771,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":8767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8766,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":8771,"src":"1183:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8765,"name":"address","nodeType":"ElementaryTypeName","src":"1183:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1182:14:68"},"returnParameters":{"id":8770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8769,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8771,"src":"1220:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8768,"name":"uint256","nodeType":"ElementaryTypeName","src":"1220:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1219:9:68"},"scope":8789,"src":"1164:65:68","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"18160ddd","id":8776,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":8772,"nodeType":"ParameterList","parameters":[],"src":"1255:2:68"},"returnParameters":{"id":8775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8774,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8776,"src":"1281:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8773,"name":"uint256","nodeType":"ElementaryTypeName","src":"1281:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1280:9:68"},"scope":8789,"src":"1235:55:68","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"13ecb1ca","id":8783,"implemented":false,"kind":"function","modifiers":[],"name":"working_balances","nodeType":"FunctionDefinition","parameters":{"id":8779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8778,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":8783,"src":"1365:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8777,"name":"address","nodeType":"ElementaryTypeName","src":"1365:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1364:14:68"},"returnParameters":{"id":8782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8781,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8783,"src":"1402:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8780,"name":"uint256","nodeType":"ElementaryTypeName","src":"1402:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1401:9:68"},"scope":8789,"src":"1339:72:68","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"17e28089","id":8788,"implemented":false,"kind":"function","modifiers":[],"name":"working_supply","nodeType":"FunctionDefinition","parameters":{"id":8784,"nodeType":"ParameterList","parameters":[],"src":"1440:2:68"},"returnParameters":{"id":8787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8786,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8788,"src":"1466:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8785,"name":"uint256","nodeType":"ElementaryTypeName","src":"1466:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1465:9:68"},"scope":8789,"src":"1417:58:68","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8994,"src":"1141:378:68"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":8790,"nodeType":"StructuredDocumentation","src":"1521:593:68","text":" @notice Get the current and projected `working_balance` (effective veBAL boosted balance) for a user on a gauge.\n @dev The `working_balance` can range between 40% and 100% of the nominal user balance on a gauge, depending on the\n veBAL \"voting power\" of the user with respect to the total \"voting power\" supply. This value generally decays over\n time, but will increase with additional veBAL locking.\n Also computes the working balance ratios: balance/supply, which is more informative when deciding whether\n it would be advantageous for the user to checkpoint a gauge."},"fullyImplemented":true,"id":8993,"linearizedBaseContracts":[8993],"name":"GaugeWorkingBalanceHelper","nodeType":"ContractDefinition","nodes":[{"id":8793,"libraryName":{"id":8791,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":4114,"src":"2162:10:68","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$4114","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"2156:29:68","typeName":{"id":8792,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":8796,"mutability":"constant","name":"_TOKENLESS_PRODUCTION","nodeType":"VariableDeclaration","scope":8993,"src":"2235:54:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8794,"name":"uint256","nodeType":"ElementaryTypeName","src":"2235:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3430653136","id":8795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2284:5:68","typeDescriptions":{"typeIdentifier":"t_rational_400000000000000000_by_1","typeString":"int_const 400000000000000000"},"value":"40e16"},"visibility":"private"},{"constant":false,"id":8798,"mutability":"immutable","name":"_veDelegationProxy","nodeType":"VariableDeclaration","scope":8993,"src":"2296:55:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"},"typeName":{"id":8797,"name":"IVeDelegationProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":8764,"src":"2296:18:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"visibility":"private"},{"constant":false,"id":8800,"mutability":"immutable","name":"_veBAL","nodeType":"VariableDeclaration","scope":8993,"src":"2357:31:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":8799,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2357:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"private"},{"constant":false,"id":8802,"mutability":"immutable","name":"_readTotalSupplyFromVE","nodeType":"VariableDeclaration","scope":8993,"src":"2588:45:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8801,"name":"bool","nodeType":"ElementaryTypeName","src":"2588:4:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"body":{"id":8823,"nodeType":"Block","src":"2718:166:68","statements":[{"expression":{"id":8811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8809,"name":"_veDelegationProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8798,"src":"2728:18:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8810,"name":"veDelegationProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8804,"src":"2749:17:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"src":"2728:38:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"id":8812,"nodeType":"ExpressionStatement","src":"2728:38:68"},{"expression":{"id":8817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8813,"name":"_veBAL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8800,"src":"2776:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8814,"name":"veDelegationProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8804,"src":"2785:17:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"id":8815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getVotingEscrow","nodeType":"MemberAccess","referencedDeclaration":8763,"src":"2785:33:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2447_$","typeString":"function () view external returns (contract IERC20)"}},"id":8816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2785:35:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"2776:44:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":8818,"nodeType":"ExpressionStatement","src":"2776:44:68"},{"expression":{"id":8821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8819,"name":"_readTotalSupplyFromVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8802,"src":"2831:22:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8820,"name":"readTotalSupplyFromVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8806,"src":"2856:21:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2831:46:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8822,"nodeType":"ExpressionStatement","src":"2831:46:68"}]},"id":8824,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8804,"mutability":"mutable","name":"veDelegationProxy","nodeType":"VariableDeclaration","scope":8824,"src":"2652:36:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"},"typeName":{"id":8803,"name":"IVeDelegationProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":8764,"src":"2652:18:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"visibility":"internal"},{"constant":false,"id":8806,"mutability":"mutable","name":"readTotalSupplyFromVE","nodeType":"VariableDeclaration","scope":8824,"src":"2690:26:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8805,"name":"bool","nodeType":"ElementaryTypeName","src":"2690:4:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2651:66:68"},"returnParameters":{"id":8808,"nodeType":"ParameterList","parameters":[],"src":"2718:0:68"},"scope":8993,"src":"2640:244:68","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8832,"nodeType":"Block","src":"3080:42:68","statements":[{"expression":{"id":8830,"name":"_veDelegationProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8798,"src":"3097:18:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"functionReturnParameters":8829,"id":8831,"nodeType":"Return","src":"3090:25:68"}]},"documentation":{"id":8825,"nodeType":"StructuredDocumentation","src":"2890:105:68","text":" @dev Returns the VotingEscrowDelegationProxy (as an IVeDelegation, which is exported)."},"functionSelector":"5f6e28f6","id":8833,"implemented":true,"kind":"function","modifiers":[],"name":"getVotingEscrowDelegationProxy","nodeType":"FunctionDefinition","parameters":{"id":8826,"nodeType":"ParameterList","parameters":[],"src":"3039:2:68"},"returnParameters":{"id":8829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8828,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8833,"src":"3065:13:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"typeName":{"id":8827,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"3065:13:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"visibility":"internal"}],"src":"3064:15:68"},"scope":8993,"src":"3000:122:68","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8841,"nodeType":"Block","src":"3275:30:68","statements":[{"expression":{"id":8839,"name":"_veBAL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8800,"src":"3292:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"functionReturnParameters":8838,"id":8840,"nodeType":"Return","src":"3285:13:68"}]},"documentation":{"id":8834,"nodeType":"StructuredDocumentation","src":"3128:84:68","text":" @dev Returns the VotingEscrow contract associated with the proxy."},"functionSelector":"08b0308a","id":8842,"implemented":true,"kind":"function","modifiers":[],"name":"getVotingEscrow","nodeType":"FunctionDefinition","parameters":{"id":8835,"nodeType":"ParameterList","parameters":[],"src":"3241:2:68"},"returnParameters":{"id":8838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8837,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8842,"src":"3267:6:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":8836,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3267:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"3266:8:68"},"scope":8993,"src":"3217:88:68","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8850,"nodeType":"Block","src":"3548:46:68","statements":[{"expression":{"id":8848,"name":"_readTotalSupplyFromVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8802,"src":"3565:22:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8847,"id":8849,"nodeType":"Return","src":"3558:29:68"}]},"documentation":{"id":8843,"nodeType":"StructuredDocumentation","src":"3311:169:68","text":" @dev Returns whether the total supply will be read from the VotingEscrow contract. If false,\n it will be read from the delegation proxy instead."},"functionSelector":"daf02aff","id":8851,"implemented":true,"kind":"function","modifiers":[],"name":"readsTotalSupplyFromVE","nodeType":"FunctionDefinition","parameters":{"id":8844,"nodeType":"ParameterList","parameters":[],"src":"3516:2:68"},"returnParameters":{"id":8847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8846,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8851,"src":"3542:4:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8845,"name":"bool","nodeType":"ElementaryTypeName","src":"3542:4:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3541:6:68"},"scope":8993,"src":"3485:109:68","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8943,"nodeType":"Block","src":"4192:895:68","statements":[{"assignments":[8864],"declarations":[{"constant":false,"id":8864,"mutability":"mutable","name":"gaugeUserBalance","nodeType":"VariableDeclaration","scope":8943,"src":"4202:24:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8863,"name":"uint256","nodeType":"ElementaryTypeName","src":"4202:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8869,"initialValue":{"arguments":[{"id":8867,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8856,"src":"4245:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8865,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8854,"src":"4229:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"}},"id":8866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8771,"src":"4229:15:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4229:21:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4202:48:68"},{"assignments":[8871],"declarations":[{"constant":false,"id":8871,"mutability":"mutable","name":"projectedWorkingBalance","nodeType":"VariableDeclaration","scope":8943,"src":"4260:31:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8870,"name":"uint256","nodeType":"ElementaryTypeName","src":"4260:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8876,"initialValue":{"arguments":[{"id":8874,"name":"_TOKENLESS_PRODUCTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8796,"src":"4319:21:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8872,"name":"gaugeUserBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8864,"src":"4294:16:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":3845,"src":"4294:24:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4294:47:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4260:81:68"},{"assignments":[8878],"declarations":[{"constant":false,"id":8878,"mutability":"mutable","name":"proxy","nodeType":"VariableDeclaration","scope":8943,"src":"4351:24:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"},"typeName":{"id":8877,"name":"IVeDelegationProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":8764,"src":"4351:18:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"visibility":"internal"}],"id":8880,"initialValue":{"id":8879,"name":"_veDelegationProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8798,"src":"4378:18:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"nodeType":"VariableDeclarationStatement","src":"4351:45:68"},{"assignments":[8882],"declarations":[{"constant":false,"id":8882,"mutability":"mutable","name":"veTotalSupply","nodeType":"VariableDeclaration","scope":8943,"src":"4407:21:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8881,"name":"uint256","nodeType":"ElementaryTypeName","src":"4407:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8891,"initialValue":{"condition":{"id":8883,"name":"_readTotalSupplyFromVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8802,"src":"4431:22:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8887,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8878,"src":"4479:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"id":8888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":1468,"src":"4479:17:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4479:19:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4431:67:68","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8884,"name":"_veBAL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8800,"src":"4456:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":8885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":2378,"src":"4456:18:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4456:20:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4407:91:68"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8892,"name":"veTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8882,"src":"4513:13:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4529:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4513:17:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8935,"nodeType":"IfStatement","src":"4509:499:68","trueBody":{"id":8934,"nodeType":"Block","src":"4532:476:68","statements":[{"assignments":[8896],"declarations":[{"constant":false,"id":8896,"mutability":"mutable","name":"veUserBalance","nodeType":"VariableDeclaration","scope":8934,"src":"4546:21:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8895,"name":"uint256","nodeType":"ElementaryTypeName","src":"4546:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8901,"initialValue":{"arguments":[{"id":8899,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8856,"src":"4596:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8897,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8878,"src":"4570:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"id":8898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"adjusted_balance_of","nodeType":"MemberAccess","referencedDeclaration":1463,"src":"4570:25:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4570:31:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4546:55:68"},{"assignments":[8903],"declarations":[{"constant":false,"id":8903,"mutability":"mutable","name":"gaugeTotalSupply","nodeType":"VariableDeclaration","scope":8934,"src":"4615:24:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8902,"name":"uint256","nodeType":"ElementaryTypeName","src":"4615:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8907,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8904,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8854,"src":"4642:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"}},"id":8905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":8776,"src":"4642:17:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4642:19:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4615:46:68"},{"expression":{"id":8924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8908,"name":"projectedWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8871,"src":"4676:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":8921,"name":"veTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8882,"src":"4860:13:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8916,"name":"_TOKENLESS_PRODUCTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8796,"src":"4795:21:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"complement","nodeType":"MemberAccess","referencedDeclaration":4113,"src":"4795:32:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":8918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4795:34:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8913,"name":"veUserBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8896,"src":"4772:13:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8911,"name":"gaugeTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8903,"src":"4747:16:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":3845,"src":"4747:24:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4747:39:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":3845,"src":"4747:47:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4747:83:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":3918,"src":"4747:91:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4747:144:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8909,"name":"projectedWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8871,"src":"4702:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":3785,"src":"4702:27:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4702:203:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4676:229:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8925,"nodeType":"ExpressionStatement","src":"4676:229:68"},{"expression":{"id":8932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8926,"name":"projectedWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8871,"src":"4920:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8929,"name":"gaugeUserBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8864,"src":"4955:16:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8930,"name":"projectedWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8871,"src":"4973:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8927,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"4946:4:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5683_$","typeString":"type(library Math)"}},"id":8928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"min","nodeType":"MemberAccess","referencedDeclaration":5586,"src":"4946:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4946:51:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4920:77:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8933,"nodeType":"ExpressionStatement","src":"4920:77:68"}]}},{"expression":{"components":[{"arguments":[{"id":8938,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8856,"src":"5049:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8936,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8854,"src":"5026:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"}},"id":8937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"working_balances","nodeType":"MemberAccess","referencedDeclaration":8783,"src":"5026:22:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5026:28:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8940,"name":"projectedWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8871,"src":"5056:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8941,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5025:55:68","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":8862,"id":8942,"nodeType":"Return","src":"5018:62:68"}]},"documentation":{"id":8852,"nodeType":"StructuredDocumentation","src":"3600:492:68","text":" @dev The gauge allocates 60% of the emissions it receives to veBAL holders, which it accomplishes by computing\n an effective \"working\" balance for each user, starting with 40% of the true balance (i.e., BPT deposited in\n the gauge), and adding a \"boost\" proportional to that user's share of the total voting power.\n @param gauge - address of a gauge (L1 or L2).\n @param user - address of a user.\n @return current and projected balances."},"functionSelector":"fd655c84","id":8944,"implemented":true,"kind":"function","modifiers":[],"name":"getWorkingBalances","nodeType":"FunctionDefinition","parameters":{"id":8857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8854,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":8944,"src":"4125:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"},"typeName":{"id":8853,"name":"IGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":8789,"src":"4125:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"}},"visibility":"internal"},{"constant":false,"id":8856,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":8944,"src":"4139:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8855,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4124:28:68"},"returnParameters":{"id":8862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8859,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8944,"src":"4174:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8858,"name":"uint256","nodeType":"ElementaryTypeName","src":"4174:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8861,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8944,"src":"4183:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8860,"name":"uint256","nodeType":"ElementaryTypeName","src":"4183:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4173:18:68"},"scope":8993,"src":"4097:990:68","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":8991,"nodeType":"Block","src":"5853:460:68","statements":[{"assignments":[8957,8959],"declarations":[{"constant":false,"id":8957,"mutability":"mutable","name":"currentWorkingBalance","nodeType":"VariableDeclaration","scope":8991,"src":"5864:29:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8956,"name":"uint256","nodeType":"ElementaryTypeName","src":"5864:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8959,"mutability":"mutable","name":"projectedWorkingBalance","nodeType":"VariableDeclaration","scope":8991,"src":"5895:31:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8958,"name":"uint256","nodeType":"ElementaryTypeName","src":"5895:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8964,"initialValue":{"arguments":[{"id":8961,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8947,"src":"5949:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"}},{"id":8962,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8949,"src":"5956:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8960,"name":"getWorkingBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8944,"src":"5930:18:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IGauge_$8789_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract IGauge,address) view returns (uint256,uint256)"}},"id":8963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5930:31:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5863:98:68"},{"assignments":[8966],"declarations":[{"constant":false,"id":8966,"mutability":"mutable","name":"currentWorkingSupply","nodeType":"VariableDeclaration","scope":8991,"src":"5971:28:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8965,"name":"uint256","nodeType":"ElementaryTypeName","src":"5971:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8970,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8967,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8947,"src":"6002:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"}},"id":8968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"working_supply","nodeType":"MemberAccess","referencedDeclaration":8788,"src":"6002:20:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6002:22:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5971:53:68"},{"assignments":[8972],"declarations":[{"constant":false,"id":8972,"mutability":"mutable","name":"projectedWorkingSupply","nodeType":"VariableDeclaration","scope":8991,"src":"6035:30:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8971,"name":"uint256","nodeType":"ElementaryTypeName","src":"6035:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8980,"initialValue":{"arguments":[{"id":8978,"name":"currentWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"6122:21:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8975,"name":"projectedWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8959,"src":"6093:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8973,"name":"currentWorkingSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8966,"src":"6068:20:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":3785,"src":"6068:24:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6068:49:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":3811,"src":"6068:53:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6068:76:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6035:109:68"},{"expression":{"components":[{"arguments":[{"id":8983,"name":"currentWorkingSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8966,"src":"6206:20:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8981,"name":"currentWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"6176:21:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":3918,"src":"6176:29:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6176:51:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":8987,"name":"projectedWorkingSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8972,"src":"6273:22:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8985,"name":"projectedWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8959,"src":"6241:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":3918,"src":"6241:31:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6241:55:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8989,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6162:144:68","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":8955,"id":8990,"nodeType":"Return","src":"6155:151:68"}]},"documentation":{"id":8945,"nodeType":"StructuredDocumentation","src":"5093:645:68","text":" @dev There is also a \"working\" supply, needed to ensure that all the emissions are allocated.\n Compute and return the balance/supply ratios. This captures the behavior of other users, and more\n accurately reflects this user's relative position.\n @param gauge - address of a gauge (L1 or L2).\n @param user - address of a user.\n @return ratio of the current `working_balance` of the user to the current `working_supply` of the gauge.\n @return ratio of the projected `working_balance` of the user (after `user_checkpoint`),\n to the projected `working_supply` of the gauge."},"functionSelector":"ce5a7e7d","id":8992,"implemented":true,"kind":"function","modifiers":[],"name":"getWorkingBalanceToSupplyRatios","nodeType":"FunctionDefinition","parameters":{"id":8950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8947,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":8992,"src":"5784:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"},"typeName":{"id":8946,"name":"IGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":8789,"src":"5784:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"}},"visibility":"internal"},{"constant":false,"id":8949,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":8992,"src":"5798:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8948,"name":"address","nodeType":"ElementaryTypeName","src":"5798:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5783:28:68"},"returnParameters":{"id":8955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8952,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8992,"src":"5835:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8951,"name":"uint256","nodeType":"ElementaryTypeName","src":"5835:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8954,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8992,"src":"5844:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8953,"name":"uint256","nodeType":"ElementaryTypeName","src":"5844:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5834:18:68"},"scope":8993,"src":"5743:570:68","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8994,"src":"2115:4200:68"}],"src":"688:5628:68"},"id":68},"contracts/L2BalancerPseudoMinter.sol":{"ast":{"absolutePath":"contracts/L2BalancerPseudoMinter.sol","exportedSymbols":{"L2BalancerPseudoMinter":[9268]},"id":9269,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8995,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:69"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","id":8996,"nodeType":"ImportDirective","scope":9269,"sourceUnit":365,"src":"713:86:69","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":8997,"nodeType":"ImportDirective","scope":9269,"sourceUnit":3698,"src":"800:88:69","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":8998,"nodeType":"ImportDirective","scope":9269,"sourceUnit":7342,"src":"889:79:69","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","id":8999,"nodeType":"ImportDirective","scope":9269,"sourceUnit":7420,"src":"969:78:69","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/BalancerMinter.sol","file":"./BalancerMinter.sol","id":9000,"nodeType":"ImportDirective","scope":9269,"sourceUnit":7867,"src":"1049:30:69","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9002,"name":"BalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":7866,"src":"2158:14:69","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerMinter_$7866","typeString":"contract BalancerMinter"}},"id":9003,"nodeType":"InheritanceSpecifier","src":"2158:14:69"},{"baseName":{"id":9004,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"2174:23:69","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":9005,"nodeType":"InheritanceSpecifier","src":"2174:23:69"}],"contractDependencies":[197,2259,2311,3128,3308,3697,6021,7187,7866],"contractKind":"contract","documentation":{"id":9001,"nodeType":"StructuredDocumentation","src":"1081:1041:69","text":" @dev Distributes bridged BAL tokens in child chains, using the same interface as the mainnet Balancer minter.\n This contract is analogous to the mainnet minter: it has the same interface and interacts with (L2) gauges in a\n similar manner, keeping track of how many tokens were already distributed to each gauge and user.\n The difference with the mainnet minter is that this contract does not have a way of minting BAL directly: the tokens\n are only minted in mainnet, and then bridged to L2s. Then, this contract accumulates the emissions received by\n child chain gauges and distributes them to users.\n Every time the tokens are 'minted' (i.e. distributed) from a gauge to a given user, the pseudo minter will query the\n child chain gauge for the total amount of tokes that need to be distributed to that user. By keeping track of the\n amount that it has already distributed for that gauge / user, the pseudo minter can then transfer the difference\n to the user and update the total transferred amount."},"fullyImplemented":true,"id":9268,"linearizedBaseContracts":[9268,3697,3128,2259,7866,3308,6021,2311,7187,197],"name":"L2BalancerPseudoMinter","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":9009,"name":"GaugeFactoryAdded","nodeType":"EventDefinition","parameters":{"id":9008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9007,"indexed":true,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":9009,"src":"2228:38:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":9006,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"2228:22:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"2227:40:69"},"src":"2204:64:69"},{"anonymous":false,"id":9013,"name":"GaugeFactoryRemoved","nodeType":"EventDefinition","parameters":{"id":9012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9011,"indexed":true,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":9013,"src":"2299:38:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":9010,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"2299:22:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"2298:40:69"},"src":"2273:66:69"},{"id":9016,"libraryName":{"id":9014,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7419,"src":"2351:8:69","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7419","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"2345:27:69","typeName":{"id":9015,"name":"uint256","nodeType":"ElementaryTypeName","src":"2364:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":9019,"libraryName":{"id":9017,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"2383:9:69","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"2377:27:69","typeName":{"id":9018,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2397:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":false,"id":9023,"mutability":"mutable","name":"_validFactories","nodeType":"VariableDeclaration","scope":9268,"src":"2410:63:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_ILiquidityGaugeFactory_$941_$_t_bool_$","typeString":"mapping(contract ILiquidityGaugeFactory => bool)"},"typeName":{"id":9022,"keyType":{"id":9020,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"2418:22:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"Mapping","src":"2410:39:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_ILiquidityGaugeFactory_$941_$_t_bool_$","typeString":"mapping(contract ILiquidityGaugeFactory => bool)"},"valueType":{"id":9021,"name":"bool","nodeType":"ElementaryTypeName","src":"2444:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"body":{"id":9038,"nodeType":"Block","src":"2640:64:69","statements":[]},"id":9039,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9030,"name":"balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9027,"src":"2551:13:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"42616c616e6365722050736575646f204d696e746572","id":9031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2566:24:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_1965f4106f0d109d8ada9b73c09a81423f2d74a0079e1021cd207a4cc8f1d6c6","typeString":"literal_string \"Balancer Pseudo Minter\""},"value":"Balancer Pseudo Minter"},{"hexValue":"31","id":9032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2592:3:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":9033,"modifierName":{"id":9029,"name":"BalancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7866,"src":"2536:14:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalancerMinter_$7866_$","typeString":"type(contract BalancerMinter)"}},"nodeType":"ModifierInvocation","src":"2536:60:69"},{"arguments":[{"id":9035,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9025,"src":"2629:5:69","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":9036,"modifierName":{"id":9034,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"2605:23:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"2605:30:69"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9025,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9039,"src":"2492:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":9024,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"2492:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":9027,"mutability":"mutable","name":"balancerToken","nodeType":"VariableDeclaration","scope":9039,"src":"2506:20:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":9026,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2506:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2491:36:69"},"returnParameters":{"id":9037,"nodeType":"ParameterList","parameters":[],"src":"2640:0:69"},"scope":9268,"src":"2480:224:69","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9065,"nodeType":"Block","src":"3026:158:69","statements":[{"expression":{"arguments":[{"id":9051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3044:25:69","subExpression":{"baseExpression":{"id":9048,"name":"_validFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"3045:15:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_ILiquidityGaugeFactory_$941_$_t_bool_$","typeString":"mapping(contract ILiquidityGaugeFactory => bool)"}},"id":9050,"indexExpression":{"id":9049,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9042,"src":"3061:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3045:24:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"464143544f52595f414c52454144595f4144444544","id":9052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3071:23:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_6fc4746c8fbd00897008ee5106de2d9a40374504a6a257657ba9deb3987d8dd7","typeString":"literal_string \"FACTORY_ALREADY_ADDED\""},"value":"FACTORY_ALREADY_ADDED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6fc4746c8fbd00897008ee5106de2d9a40374504a6a257657ba9deb3987d8dd7","typeString":"literal_string \"FACTORY_ALREADY_ADDED\""}],"id":9047,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3036:7:69","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3036:59:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9054,"nodeType":"ExpressionStatement","src":"3036:59:69"},{"expression":{"id":9059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9055,"name":"_validFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"3105:15:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_ILiquidityGaugeFactory_$941_$_t_bool_$","typeString":"mapping(contract ILiquidityGaugeFactory => bool)"}},"id":9057,"indexExpression":{"id":9056,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9042,"src":"3121:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3105:24:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":9058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3132:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3105:31:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9060,"nodeType":"ExpressionStatement","src":"3105:31:69"},{"eventCall":{"arguments":[{"id":9062,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9042,"src":"3169:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}],"id":9061,"name":"GaugeFactoryAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9009,"src":"3151:17:69","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_ILiquidityGaugeFactory_$941_$returns$__$","typeString":"function (contract ILiquidityGaugeFactory)"}},"id":9063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3151:26:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9064,"nodeType":"EmitStatement","src":"3146:31:69"}]},"documentation":{"id":9040,"nodeType":"StructuredDocumentation","src":"2710:232:69","text":" @notice Adds a given child chain gauge factory to the allowlist.\n @dev This is a permissioned function.\n Reverts if the given factory was added beforehand; emits `GaugeFactoryAdded` event upon success."},"functionSelector":"38f12152","id":9066,"implemented":true,"kind":"function","modifiers":[{"id":9045,"modifierName":{"id":9044,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3013:12:69","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3013:12:69"}],"name":"addGaugeFactory","nodeType":"FunctionDefinition","parameters":{"id":9043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9042,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":9066,"src":"2972:30:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":9041,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"2972:22:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"2971:32:69"},"returnParameters":{"id":9046,"nodeType":"ParameterList","parameters":[],"src":"3026:0:69"},"scope":9268,"src":"2947:237:69","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9091,"nodeType":"Block","src":"3525:156:69","statements":[{"expression":{"arguments":[{"baseExpression":{"id":9075,"name":"_validFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"3543:15:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_ILiquidityGaugeFactory_$941_$_t_bool_$","typeString":"mapping(contract ILiquidityGaugeFactory => bool)"}},"id":9077,"indexExpression":{"id":9076,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9069,"src":"3559:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3543:24:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"464143544f52595f4e4f545f4144444544","id":9078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3569:19:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_87bbfdddaac01277311ab3dfd0b4d8fce03cd7657e0647e9be800db076c1ba82","typeString":"literal_string \"FACTORY_NOT_ADDED\""},"value":"FACTORY_NOT_ADDED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_87bbfdddaac01277311ab3dfd0b4d8fce03cd7657e0647e9be800db076c1ba82","typeString":"literal_string \"FACTORY_NOT_ADDED\""}],"id":9074,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3535:7:69","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3535:54:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9080,"nodeType":"ExpressionStatement","src":"3535:54:69"},{"expression":{"id":9085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9081,"name":"_validFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"3599:15:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_ILiquidityGaugeFactory_$941_$_t_bool_$","typeString":"mapping(contract ILiquidityGaugeFactory => bool)"}},"id":9083,"indexExpression":{"id":9082,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9069,"src":"3615:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3599:24:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":9084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3626:5:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3599:32:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9086,"nodeType":"ExpressionStatement","src":"3599:32:69"},{"eventCall":{"arguments":[{"id":9088,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9069,"src":"3666:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}],"id":9087,"name":"GaugeFactoryRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9013,"src":"3646:19:69","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_ILiquidityGaugeFactory_$941_$returns$__$","typeString":"function (contract ILiquidityGaugeFactory)"}},"id":9089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3646:28:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9090,"nodeType":"EmitStatement","src":"3641:33:69"}]},"documentation":{"id":9067,"nodeType":"StructuredDocumentation","src":"3190:248:69","text":" @notice Removes a given child chain gauge factory from the allowlist.\n @dev This is a permissioned function.\n Reverts if the given factory had not been added beforehand; emits `GaugeFactoryRemoved` event upon success."},"functionSelector":"7a60e63a","id":9092,"implemented":true,"kind":"function","modifiers":[{"id":9072,"modifierName":{"id":9071,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3512:12:69","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3512:12:69"}],"name":"removeGaugeFactory","nodeType":"FunctionDefinition","parameters":{"id":9070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9069,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":9092,"src":"3471:30:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":9068,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"3471:22:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"3470:32:69"},"returnParameters":{"id":9073,"nodeType":"ParameterList","parameters":[],"src":"3525:0:69"},"scope":9268,"src":"3443:238:69","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9104,"nodeType":"Block","src":"3896:48:69","statements":[{"expression":{"baseExpression":{"id":9100,"name":"_validFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"3913:15:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_ILiquidityGaugeFactory_$941_$_t_bool_$","typeString":"mapping(contract ILiquidityGaugeFactory => bool)"}},"id":9102,"indexExpression":{"id":9101,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9095,"src":"3929:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3913:24:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9099,"id":9103,"nodeType":"Return","src":"3906:31:69"}]},"documentation":{"id":9093,"nodeType":"StructuredDocumentation","src":"3687:116:69","text":" @notice Returns true if the given child chain gauge factory is in the allowlist; false otherwise."},"functionSelector":"6c71e920","id":9105,"implemented":true,"kind":"function","modifiers":[],"name":"isValidGaugeFactory","nodeType":"FunctionDefinition","parameters":{"id":9096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9095,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":9105,"src":"3837:30:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":9094,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"3837:22:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"3836:32:69"},"returnParameters":{"id":9099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9098,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9105,"src":"3890:4:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9097,"name":"bool","nodeType":"ElementaryTypeName","src":"3890:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3889:6:69"},"scope":9268,"src":"3808:136:69","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[7750],"body":{"id":9127,"nodeType":"Block","src":"4073:98:69","statements":[{"expression":{"id":9120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9115,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9113,"src":"4083:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9117,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9107,"src":"4111:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9118,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9109,"src":"4118:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9116,"name":"_updateGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9246,"src":"4098:12:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":9119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4098:25:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4083:40:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9121,"nodeType":"ExpressionStatement","src":"4083:40:69"},{"expression":{"arguments":[{"id":9123,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9109,"src":"4145:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9124,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9113,"src":"4151:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9122,"name":"_pseudoMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9267,"src":"4133:11:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4133:31:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9126,"nodeType":"ExpressionStatement","src":"4133:31:69"}]},"id":9128,"implemented":true,"kind":"function","modifiers":[],"name":"_mintFor","nodeType":"FunctionDefinition","overrides":{"id":9111,"nodeType":"OverrideSpecifier","overrides":[],"src":"4033:8:69"},"parameters":{"id":9110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9107,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":9128,"src":"3995:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9106,"name":"address","nodeType":"ElementaryTypeName","src":"3995:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9109,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9128,"src":"4010:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9108,"name":"address","nodeType":"ElementaryTypeName","src":"4010:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3994:29:69"},"returnParameters":{"id":9114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9113,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":9128,"src":"4051:20:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9112,"name":"uint256","nodeType":"ElementaryTypeName","src":"4051:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4050:22:69"},"scope":9268,"src":"3977:194:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[7760],"body":{"id":9173,"nodeType":"Block","src":"4289:221:69","statements":[{"assignments":[9140],"declarations":[{"constant":false,"id":9140,"mutability":"mutable","name":"length","nodeType":"VariableDeclaration","scope":9173,"src":"4299:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9139,"name":"uint256","nodeType":"ElementaryTypeName","src":"4299:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9143,"initialValue":{"expression":{"id":9141,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9131,"src":"4316:6:69","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":9142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4316:13:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4299:30:69"},{"body":{"id":9166,"nodeType":"Block","src":"4376:87:69","statements":[{"expression":{"id":9164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9154,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"4390:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"baseExpression":{"id":9158,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9131,"src":"4435:6:69","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":9160,"indexExpression":{"id":9159,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9145,"src":"4442:1:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4435:9:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9161,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9133,"src":"4446:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9157,"name":"_updateGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9246,"src":"4422:12:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":9162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4422:29:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9155,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"4405:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7372,"src":"4405:16:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4405:47:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4390:62:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9165,"nodeType":"ExpressionStatement","src":"4390:62:69"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9148,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9145,"src":"4359:1:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9149,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9140,"src":"4363:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4359:10:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9167,"initializationExpression":{"assignments":[9145],"declarations":[{"constant":false,"id":9145,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9167,"src":"4344:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9144,"name":"uint256","nodeType":"ElementaryTypeName","src":"4344:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9147,"initialValue":{"hexValue":"30","id":9146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4356:1:69","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4344:13:69"},"loopExpression":{"expression":{"id":9152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4371:3:69","subExpression":{"id":9151,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9145,"src":"4373:1:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9153,"nodeType":"ExpressionStatement","src":"4371:3:69"},"nodeType":"ForStatement","src":"4339:124:69"},{"expression":{"arguments":[{"id":9169,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9133,"src":"4484:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9170,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"4490:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9168,"name":"_pseudoMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9267,"src":"4472:11:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4472:31:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9172,"nodeType":"ExpressionStatement","src":"4472:31:69"}]},"id":9174,"implemented":true,"kind":"function","modifiers":[],"name":"_mintForMany","nodeType":"FunctionDefinition","overrides":{"id":9135,"nodeType":"OverrideSpecifier","overrides":[],"src":"4249:8:69"},"parameters":{"id":9134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9131,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":9174,"src":"4199:25:69","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9129,"name":"address","nodeType":"ElementaryTypeName","src":"4199:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9130,"nodeType":"ArrayTypeName","src":"4199:9:69","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":9133,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9174,"src":"4226:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9132,"name":"address","nodeType":"ElementaryTypeName","src":"4226:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4198:41:69"},"returnParameters":{"id":9138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9137,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":9174,"src":"4267:20:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9136,"name":"uint256","nodeType":"ElementaryTypeName","src":"4267:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4266:22:69"},"scope":9268,"src":"4177:333:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9245,"nodeType":"Block","src":"5161:832:69","statements":[{"assignments":[9185],"declarations":[{"constant":false,"id":9185,"mutability":"mutable","name":"ccGauge","nodeType":"VariableDeclaration","scope":9245,"src":"5483:24:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"},"typeName":{"id":9184,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"5483:16:69","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"visibility":"internal"}],"id":9189,"initialValue":{"arguments":[{"id":9187,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"5527:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9186,"name":"IChildChainGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"5510:16:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChildChainGauge_$364_$","typeString":"type(contract IChildChainGauge)"}},"id":9188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5510:23:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"nodeType":"VariableDeclarationStatement","src":"5483:50:69"},{"assignments":[9191],"declarations":[{"constant":false,"id":9191,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":9245,"src":"5543:30:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":9190,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"5543:22:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"id":9195,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9192,"name":"ccGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9185,"src":"5576:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":9193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"factory","nodeType":"MemberAccess","referencedDeclaration":363,"src":"5576:15:69","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"function () view external returns (contract ILiquidityGaugeFactory)"}},"id":9194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5576:17:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"VariableDeclarationStatement","src":"5543:50:69"},{"expression":{"arguments":[{"arguments":[{"id":9198,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9191,"src":"5631:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}],"id":9197,"name":"isValidGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9105,"src":"5611:19:69","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ILiquidityGaugeFactory_$941_$returns$_t_bool_$","typeString":"function (contract ILiquidityGaugeFactory) view returns (bool)"}},"id":9199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5611:28:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e56414c49445f47415547455f464143544f5259","id":9200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5641:23:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_07bbd958e90df01ec1c65e98f624ae2f0fdc1d67c7d103281f1b9c914b079bc6","typeString":"literal_string \"INVALID_GAUGE_FACTORY\""},"value":"INVALID_GAUGE_FACTORY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_07bbd958e90df01ec1c65e98f624ae2f0fdc1d67c7d103281f1b9c914b079bc6","typeString":"literal_string \"INVALID_GAUGE_FACTORY\""}],"id":9196,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5603:7:69","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5603:62:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9202,"nodeType":"ExpressionStatement","src":"5603:62:69"},{"expression":{"arguments":[{"arguments":[{"id":9206,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"5710:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9204,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9191,"src":"5683:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":9205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isGaugeFromFactory","nodeType":"MemberAccess","referencedDeclaration":940,"src":"5683:26:69","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":9207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5683:33:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e56414c49445f4741554745","id":9208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5718:15:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_cd305b91aba4ac32ddc3d4f875685119e6dab56c1f4c65c4f95ee917efc6044c","typeString":"literal_string \"INVALID_GAUGE\""},"value":"INVALID_GAUGE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cd305b91aba4ac32ddc3d4f875685119e6dab56c1f4c65c4f95ee917efc6044c","typeString":"literal_string \"INVALID_GAUGE\""}],"id":9203,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5675:7:69","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5675:59:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9210,"nodeType":"ExpressionStatement","src":"5675:59:69"},{"expression":{"arguments":[{"id":9214,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9179,"src":"5769:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9211,"name":"ccGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9185,"src":"5745:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":9213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_checkpoint","nodeType":"MemberAccess","referencedDeclaration":357,"src":"5745:23:69","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) external returns (bool)"}},"id":9215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5745:29:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9216,"nodeType":"ExpressionStatement","src":"5745:29:69"},{"assignments":[9218],"declarations":[{"constant":false,"id":9218,"mutability":"mutable","name":"totalMint","nodeType":"VariableDeclaration","scope":9245,"src":"5784:17:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9217,"name":"uint256","nodeType":"ElementaryTypeName","src":"5784:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9223,"initialValue":{"arguments":[{"id":9221,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9179,"src":"5831:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9219,"name":"ccGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9185,"src":"5804:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":9220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"integrate_fraction","nodeType":"MemberAccess","referencedDeclaration":349,"src":"5804:26:69","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":9222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5804:32:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5784:52:69"},{"expression":{"id":9232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9224,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9182,"src":"5846:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":9228,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9179,"src":"5882:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9229,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"5888:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9227,"name":"minted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7604,"src":"5875:6:69","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":9230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5875:19:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9225,"name":"totalMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9218,"src":"5861:9:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7390,"src":"5861:13:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5861:34:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5846:49:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9233,"nodeType":"ExpressionStatement","src":"5846:49:69"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9234,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9182,"src":"5910:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5925:1:69","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5910:16:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9244,"nodeType":"IfStatement","src":"5906:81:69","trueBody":{"id":9243,"nodeType":"Block","src":"5928:59:69","statements":[{"expression":{"arguments":[{"id":9238,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9179,"src":"5953:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9239,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"5959:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9240,"name":"totalMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9218,"src":"5966:9:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9237,"name":"_setMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7741,"src":"5942:10:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5942:34:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9242,"nodeType":"ExpressionStatement","src":"5942:34:69"}]}}]},"documentation":{"id":9175,"nodeType":"StructuredDocumentation","src":"4516:549:69","text":" @dev Checkpoints given gauge and updates the internal accounting with the total tokens that should be transfered\n to the user since the start.\n @param gauge Gauge to checkpoint and query for total tokens to be transferred.\n @param user User to query in the given gauge.\n @return tokensToMint Amount of tokens to be transferred to the user, calculated as the difference between the\n total amount of tokens as indicated by the gauge and the tokens that have already been transferred to the user."},"id":9246,"implemented":true,"kind":"function","modifiers":[],"name":"_updateGauge","nodeType":"FunctionDefinition","parameters":{"id":9180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9177,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":9246,"src":"5092:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9176,"name":"address","nodeType":"ElementaryTypeName","src":"5092:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9179,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9246,"src":"5107:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9178,"name":"address","nodeType":"ElementaryTypeName","src":"5107:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5091:29:69"},"returnParameters":{"id":9183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9182,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":9246,"src":"5139:20:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9181,"name":"uint256","nodeType":"ElementaryTypeName","src":"5139:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5138:22:69"},"scope":9268,"src":"5070:923:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9266,"nodeType":"Block","src":"6151:114:69","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9254,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9251,"src":"6165:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6180:1:69","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6165:16:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9265,"nodeType":"IfStatement","src":"6161:98:69","trueBody":{"id":9264,"nodeType":"Block","src":"6183:76:69","statements":[{"expression":{"arguments":[{"id":9260,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9249,"src":"6229:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9261,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9251,"src":"6235:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9257,"name":"getBalancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7490,"src":"6197:16:69","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IERC20_$2447_$","typeString":"function () view returns (contract IERC20)"}},"id":9258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6197:18:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":9259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7276,"src":"6197:31:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":9262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6197:51:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9263,"nodeType":"ExpressionStatement","src":"6197:51:69"}]}}]},"documentation":{"id":9247,"nodeType":"StructuredDocumentation","src":"5999:81:69","text":" @dev Transfers tokens to user if the given amount is not zero."},"id":9267,"implemented":true,"kind":"function","modifiers":[],"name":"_pseudoMint","nodeType":"FunctionDefinition","parameters":{"id":9252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9249,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9267,"src":"6106:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9248,"name":"address","nodeType":"ElementaryTypeName","src":"6106:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9251,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":9267,"src":"6120:20:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9250,"name":"uint256","nodeType":"ElementaryTypeName","src":"6120:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6105:36:69"},"returnParameters":{"id":9253,"nodeType":"ParameterList","parameters":[],"src":"6151:0:69"},"scope":9268,"src":"6085:180:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":9269,"src":"2123:4144:69"}],"src":"688:5580:69"},"id":69},"contracts/L2LayerZeroBridgeForwarder.sol":{"ast":{"absolutePath":"contracts/L2LayerZeroBridgeForwarder.sol","exportedSymbols":{"L2LayerZeroBridgeForwarder":[9359]},"id":9360,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9270,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:70"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":9271,"nodeType":"ImportDirective","scope":9360,"sourceUnit":3052,"src":"713:65:70","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol","id":9272,"nodeType":"ImportDirective","scope":9360,"sourceUnit":855,"src":"779:92:70","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":9273,"nodeType":"ImportDirective","scope":9360,"sourceUnit":3698,"src":"873:88:70","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9275,"name":"IL2LayerZeroDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":854,"src":"1294:22:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"id":9276,"nodeType":"InheritanceSpecifier","src":"1294:22:70"},{"baseName":{"id":9277,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1318:23:70","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":9278,"nodeType":"InheritanceSpecifier","src":"1318:23:70"}],"contractDependencies":[854,2259,3128,3697],"contractKind":"contract","documentation":{"id":9274,"nodeType":"StructuredDocumentation","src":"963:291:70","text":" @notice Forwards calls from LayerZero's system to a custom hook whenever a veBAL balance is updated for a given user\n in a L2 chain.\n @dev The delegation contract can be set so that e.g. Child Chain Gauges are updated automatically whenever there is\n a veBAL balance update."},"fullyImplemented":true,"id":9359,"linearizedBaseContracts":[9359,3697,3128,2259,854],"name":"L2LayerZeroBridgeForwarder","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":9282,"name":"DelegationImplementationUpdated","nodeType":"EventDefinition","parameters":{"id":9281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9280,"indexed":true,"mutability":"mutable","name":"newImplementation","nodeType":"VariableDeclaration","scope":9282,"src":"1386:48:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"},"typeName":{"id":9279,"name":"IL2LayerZeroDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":854,"src":"1386:22:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"visibility":"internal"}],"src":"1385:50:70"},"src":"1348:88:70"},{"constant":false,"id":9284,"mutability":"mutable","name":"_delegation","nodeType":"VariableDeclaration","scope":9359,"src":"1442:42:70","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"},"typeName":{"id":9283,"name":"IL2LayerZeroDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":854,"src":"1442:22:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"visibility":"private"},{"body":{"id":9292,"nodeType":"Block","src":"1548:64:70","statements":[]},"id":9293,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9289,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9286,"src":"1541:5:70","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":9290,"modifierName":{"id":9288,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1517:23:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1517:30:70"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9286,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9293,"src":"1503:12:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":9285,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1503:6:70","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1502:14:70"},"returnParameters":{"id":9291,"nodeType":"ParameterList","parameters":[],"src":"1548:0:70"},"scope":9359,"src":"1491:121:70","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9301,"nodeType":"Block","src":"1791:35:70","statements":[{"expression":{"id":9299,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9284,"src":"1808:11:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"functionReturnParameters":9298,"id":9300,"nodeType":"Return","src":"1801:18:70"}]},"documentation":{"id":9294,"nodeType":"StructuredDocumentation","src":"1618:82:70","text":" @notice Returns the current delegation implementation contract."},"functionSelector":"63408a90","id":9302,"implemented":true,"kind":"function","modifiers":[],"name":"getDelegationImplementation","nodeType":"FunctionDefinition","parameters":{"id":9295,"nodeType":"ParameterList","parameters":[],"src":"1741:2:70"},"returnParameters":{"id":9298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9297,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9302,"src":"1767:22:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"},"typeName":{"id":9296,"name":"IL2LayerZeroDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":854,"src":"1767:22:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"visibility":"internal"}],"src":"1766:24:70"},"scope":9359,"src":"1705:121:70","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[849],"body":{"id":9322,"nodeType":"Block","src":"1986:119:70","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"},"id":9313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9309,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9284,"src":"2000:11:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":9311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2038:1:70","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9310,"name":"IL2LayerZeroDelegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"2015:22:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IL2LayerZeroDelegation_$854_$","typeString":"type(contract IL2LayerZeroDelegation)"}},"id":9312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2015:25:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"src":"2000:40:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9321,"nodeType":"IfStatement","src":"1996:103:70","trueBody":{"id":9320,"nodeType":"Block","src":"2042:57:70","statements":[{"expression":{"arguments":[{"id":9317,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9305,"src":"2083:4:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9314,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9284,"src":"2056:11:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"id":9316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onVeBalBridged","nodeType":"MemberAccess","referencedDeclaration":849,"src":"2056:26:70","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":9318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2056:32:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9319,"nodeType":"ExpressionStatement","src":"2056:32:70"}]}}]},"documentation":{"id":9303,"nodeType":"StructuredDocumentation","src":"1832:93:70","text":" @notice Hook to be called whenever the veBAL balance of a user is updated."},"functionSelector":"df130bfe","id":9323,"implemented":true,"kind":"function","modifiers":[],"name":"onVeBalBridged","nodeType":"FunctionDefinition","overrides":{"id":9307,"nodeType":"OverrideSpecifier","overrides":[],"src":"1977:8:70"},"parameters":{"id":9306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9305,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9323,"src":"1954:12:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9304,"name":"address","nodeType":"ElementaryTypeName","src":"1954:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1953:14:70"},"returnParameters":{"id":9308,"nodeType":"ParameterList","parameters":[],"src":"1986:0:70"},"scope":9359,"src":"1930:175:70","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[853],"body":{"id":9340,"nodeType":"Block","src":"2247:120:70","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"},"id":9332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9328,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9284,"src":"2261:11:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":9330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2299:1:70","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9329,"name":"IL2LayerZeroDelegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"2276:22:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IL2LayerZeroDelegation_$854_$","typeString":"type(contract IL2LayerZeroDelegation)"}},"id":9331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2276:25:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"src":"2261:40:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9339,"nodeType":"IfStatement","src":"2257:104:70","trueBody":{"id":9338,"nodeType":"Block","src":"2303:58:70","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9333,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9284,"src":"2317:11:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"id":9335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onVeBalSupplyUpdate","nodeType":"MemberAccess","referencedDeclaration":853,"src":"2317:31:70","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":9336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2317:33:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9337,"nodeType":"ExpressionStatement","src":"2317:33:70"}]}}]},"documentation":{"id":9324,"nodeType":"StructuredDocumentation","src":"2111:82:70","text":" @notice Hook to be called whenever the veBAL supply is updated."},"functionSelector":"96345fb5","id":9341,"implemented":true,"kind":"function","modifiers":[],"name":"onVeBalSupplyUpdate","nodeType":"FunctionDefinition","overrides":{"id":9326,"nodeType":"OverrideSpecifier","overrides":[],"src":"2238:8:70"},"parameters":{"id":9325,"nodeType":"ParameterList","parameters":[],"src":"2226:2:70"},"returnParameters":{"id":9327,"nodeType":"ParameterList","parameters":[],"src":"2247:0:70"},"scope":9359,"src":"2198:169:70","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9357,"nodeType":"Block","src":"2543:100:70","statements":[{"expression":{"id":9351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9349,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9284,"src":"2553:11:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9350,"name":"delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9344,"src":"2567:10:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"src":"2553:24:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"id":9352,"nodeType":"ExpressionStatement","src":"2553:24:70"},{"eventCall":{"arguments":[{"id":9354,"name":"delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9344,"src":"2625:10:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}],"id":9353,"name":"DelegationImplementationUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9282,"src":"2593:31:70","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IL2LayerZeroDelegation_$854_$returns$__$","typeString":"function (contract IL2LayerZeroDelegation)"}},"id":9355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2593:43:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9356,"nodeType":"EmitStatement","src":"2588:48:70"}]},"documentation":{"id":9342,"nodeType":"StructuredDocumentation","src":"2373:85:70","text":" @notice Sets a new delegation implementation for `onVeBalBridged`."},"functionSelector":"e6b3e704","id":9358,"implemented":true,"kind":"function","modifiers":[{"id":9347,"modifierName":{"id":9346,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"2530:12:70","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2530:12:70"}],"name":"setDelegation","nodeType":"FunctionDefinition","parameters":{"id":9345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9344,"mutability":"mutable","name":"delegation","nodeType":"VariableDeclaration","scope":9358,"src":"2486:33:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"},"typeName":{"id":9343,"name":"IL2LayerZeroDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":854,"src":"2486:22:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"visibility":"internal"}],"src":"2485:35:70"},"returnParameters":{"id":9348,"nodeType":"ParameterList","parameters":[],"src":"2543:0:70"},"scope":9359,"src":"2463:180:70","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9360,"src":"1255:1390:70"}],"src":"688:1958:70"},"id":70},"contracts/MainnetBalancerMinter.sol":{"ast":{"absolutePath":"contracts/MainnetBalancerMinter.sol","exportedSymbols":{"MainnetBalancerMinter":[9562]},"id":9563,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9361,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:71"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","id":9362,"nodeType":"ImportDirective","scope":9563,"sourceUnit":328,"src":"713:89:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","id":9363,"nodeType":"ImportDirective","scope":9563,"sourceUnit":822,"src":"803:86:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","id":9364,"nodeType":"ImportDirective","scope":9563,"sourceUnit":929,"src":"890:85:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol","id":9365,"nodeType":"ImportDirective","scope":9563,"sourceUnit":952,"src":"976:92:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","id":9366,"nodeType":"ImportDirective","scope":9563,"sourceUnit":7420,"src":"1069:78:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/BalancerMinter.sol","file":"./BalancerMinter.sol","id":9367,"nodeType":"ImportDirective","scope":9563,"sourceUnit":7867,"src":"1149:30:71","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9368,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1215:22:71","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"id":9369,"nodeType":"InheritanceSpecifier","src":"1215:22:71"},{"baseName":{"id":9370,"name":"BalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":7866,"src":"1239:14:71","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerMinter_$7866","typeString":"contract BalancerMinter"}},"id":9371,"nodeType":"InheritanceSpecifier","src":"1239:14:71"}],"contractDependencies":[197,871,951,2311,3308,6021,7187,7866],"contractKind":"contract","fullyImplemented":true,"id":9562,"linearizedBaseContracts":[9562,7866,3308,6021,2311,7187,951,871,197],"name":"MainnetBalancerMinter","nodeType":"ContractDefinition","nodes":[{"id":9374,"libraryName":{"id":9372,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7419,"src":"1266:8:71","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7419","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"1260:27:71","typeName":{"id":9373,"name":"uint256","nodeType":"ElementaryTypeName","src":"1279:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":9376,"mutability":"immutable","name":"_tokenAdmin","nodeType":"VariableDeclaration","scope":9562,"src":"1293:49:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"},"typeName":{"id":9375,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":327,"src":"1293:19:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"visibility":"private"},{"constant":false,"id":9378,"mutability":"immutable","name":"_gaugeController","nodeType":"VariableDeclaration","scope":9562,"src":"1348:51:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":9377,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1348:16:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"private"},{"body":{"id":9400,"nodeType":"Block","src":"1566:85:71","statements":[{"expression":{"id":9394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9392,"name":"_tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"1576:11:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9393,"name":"tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9380,"src":"1590:10:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"src":"1576:24:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":9395,"nodeType":"ExpressionStatement","src":"1576:24:71"},{"expression":{"id":9398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9396,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9378,"src":"1610:16:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9397,"name":"gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9382,"src":"1629:15:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"src":"1610:34:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":9399,"nodeType":"ExpressionStatement","src":"1610:34:71"}]},"id":9401,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9385,"name":"tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9380,"src":"1507:10:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":9386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getBalancerToken","nodeType":"MemberAccess","referencedDeclaration":306,"src":"1507:27:71","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IBalancerToken_$274_$","typeString":"function () view external returns (contract IBalancerToken)"}},"id":9387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1507:29:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},{"hexValue":"42616c616e636572204d696e746572","id":9388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1538:17:71","typeDescriptions":{"typeIdentifier":"t_stringliteral_63c05625ac5a06c4bd34bf8f76d2a8cb0f02c3d329e03eae3da16e084ba60ddc","typeString":"literal_string \"Balancer Minter\""},"value":"Balancer Minter"},{"hexValue":"31","id":9389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1557:3:71","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":9390,"modifierName":{"id":9384,"name":"BalancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7866,"src":"1492:14:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalancerMinter_$7866_$","typeString":"type(contract BalancerMinter)"}},"nodeType":"ModifierInvocation","src":"1492:69:71"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9380,"mutability":"mutable","name":"tokenAdmin","nodeType":"VariableDeclaration","scope":9401,"src":"1418:30:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"},"typeName":{"id":9379,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":327,"src":"1418:19:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"visibility":"internal"},{"constant":false,"id":9382,"mutability":"mutable","name":"gaugeController","nodeType":"VariableDeclaration","scope":9401,"src":"1450:32:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":9381,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1450:16:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"internal"}],"src":"1417:66:71"},"returnParameters":{"id":9391,"nodeType":"ParameterList","parameters":[],"src":"1566:0:71"},"scope":9562,"src":"1406:245:71","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[864],"body":{"id":9410,"nodeType":"Block","src":"1774:35:71","statements":[{"expression":{"id":9408,"name":"_tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"1791:11:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"functionReturnParameters":9407,"id":9409,"nodeType":"Return","src":"1784:18:71"}]},"documentation":{"id":9402,"nodeType":"StructuredDocumentation","src":"1657:26:71","text":"@inheritdoc ILMGetters"},"functionSelector":"e6dec36f","id":9411,"implemented":true,"kind":"function","modifiers":[],"name":"getBalancerTokenAdmin","nodeType":"FunctionDefinition","overrides":{"id":9404,"nodeType":"OverrideSpecifier","overrides":[],"src":"1735:8:71"},"parameters":{"id":9403,"nodeType":"ParameterList","parameters":[],"src":"1718:2:71"},"returnParameters":{"id":9407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9406,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9411,"src":"1753:19:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"},"typeName":{"id":9405,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":327,"src":"1753:19:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"visibility":"internal"}],"src":"1752:21:71"},"scope":9562,"src":"1688:121:71","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[870],"body":{"id":9420,"nodeType":"Block","src":"1926:40:71","statements":[{"expression":{"id":9418,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9378,"src":"1943:16:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"functionReturnParameters":9417,"id":9419,"nodeType":"Return","src":"1936:23:71"}]},"documentation":{"id":9412,"nodeType":"StructuredDocumentation","src":"1815:26:71","text":"@inheritdoc ILMGetters"},"functionSelector":"58de9ade","id":9421,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeController","nodeType":"FunctionDefinition","overrides":{"id":9414,"nodeType":"OverrideSpecifier","overrides":[],"src":"1890:8:71"},"parameters":{"id":9413,"nodeType":"ParameterList","parameters":[],"src":"1873:2:71"},"returnParameters":{"id":9417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9416,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9421,"src":"1908:16:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":9415,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1908:16:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"internal"}],"src":"1907:18:71"},"scope":9562,"src":"1846:120:71","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[7750],"body":{"id":9450,"nodeType":"Block","src":"2095:149:71","statements":[{"expression":{"id":9436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9431,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9429,"src":"2105:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9433,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9423,"src":"2133:5:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9434,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9425,"src":"2140:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9432,"name":"_updateGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9561,"src":"2120:12:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":9435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2120:25:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2105:40:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9437,"nodeType":"ExpressionStatement","src":"2105:40:71"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9438,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9429,"src":"2159:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2174:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2159:16:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9449,"nodeType":"IfStatement","src":"2155:83:71","trueBody":{"id":9448,"nodeType":"Block","src":"2177:61:71","statements":[{"expression":{"arguments":[{"id":9444,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9425,"src":"2208:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9445,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9429,"src":"2214:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9441,"name":"_tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"2191:11:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":9443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":326,"src":"2191:16:71","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":9446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2191:36:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9447,"nodeType":"ExpressionStatement","src":"2191:36:71"}]}}]},"id":9451,"implemented":true,"kind":"function","modifiers":[],"name":"_mintFor","nodeType":"FunctionDefinition","overrides":{"id":9427,"nodeType":"OverrideSpecifier","overrides":[],"src":"2055:8:71"},"parameters":{"id":9426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9423,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":9451,"src":"2017:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9422,"name":"address","nodeType":"ElementaryTypeName","src":"2017:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9425,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9451,"src":"2032:12:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9424,"name":"address","nodeType":"ElementaryTypeName","src":"2032:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2016:29:71"},"returnParameters":{"id":9430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9429,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":9451,"src":"2073:20:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9428,"name":"uint256","nodeType":"ElementaryTypeName","src":"2073:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2072:22:71"},"scope":9562,"src":"1999:245:71","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[7760],"body":{"id":9503,"nodeType":"Block","src":"2362:273:71","statements":[{"assignments":[9463],"declarations":[{"constant":false,"id":9463,"mutability":"mutable","name":"length","nodeType":"VariableDeclaration","scope":9503,"src":"2372:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9462,"name":"uint256","nodeType":"ElementaryTypeName","src":"2372:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9466,"initialValue":{"expression":{"id":9464,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9454,"src":"2389:6:71","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":9465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2389:13:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2372:30:71"},{"body":{"id":9489,"nodeType":"Block","src":"2449:87:71","statements":[{"expression":{"id":9487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9477,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9460,"src":"2463:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"baseExpression":{"id":9481,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9454,"src":"2508:6:71","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":9483,"indexExpression":{"id":9482,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9468,"src":"2515:1:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2508:9:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9484,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9456,"src":"2519:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9480,"name":"_updateGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9561,"src":"2495:12:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":9485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2495:29:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9478,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9460,"src":"2478:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7372,"src":"2478:16:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2478:47:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2463:62:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9488,"nodeType":"ExpressionStatement","src":"2463:62:71"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9471,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9468,"src":"2432:1:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9472,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9463,"src":"2436:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2432:10:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9490,"initializationExpression":{"assignments":[9468],"declarations":[{"constant":false,"id":9468,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9490,"src":"2417:9:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9467,"name":"uint256","nodeType":"ElementaryTypeName","src":"2417:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9470,"initialValue":{"hexValue":"30","id":9469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2429:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2417:13:71"},"loopExpression":{"expression":{"id":9475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2444:3:71","subExpression":{"id":9474,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9468,"src":"2446:1:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9476,"nodeType":"ExpressionStatement","src":"2444:3:71"},"nodeType":"ForStatement","src":"2412:124:71"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9491,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9460,"src":"2550:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2565:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2550:16:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9502,"nodeType":"IfStatement","src":"2546:83:71","trueBody":{"id":9501,"nodeType":"Block","src":"2568:61:71","statements":[{"expression":{"arguments":[{"id":9497,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9456,"src":"2599:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9498,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9460,"src":"2605:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9494,"name":"_tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"2582:11:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":9496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":326,"src":"2582:16:71","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":9499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2582:36:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9500,"nodeType":"ExpressionStatement","src":"2582:36:71"}]}}]},"id":9504,"implemented":true,"kind":"function","modifiers":[],"name":"_mintForMany","nodeType":"FunctionDefinition","overrides":{"id":9458,"nodeType":"OverrideSpecifier","overrides":[],"src":"2322:8:71"},"parameters":{"id":9457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9454,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":9504,"src":"2272:25:71","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9452,"name":"address","nodeType":"ElementaryTypeName","src":"2272:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9453,"nodeType":"ArrayTypeName","src":"2272:9:71","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":9456,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9504,"src":"2299:12:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9455,"name":"address","nodeType":"ElementaryTypeName","src":"2299:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2271:41:71"},"returnParameters":{"id":9461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9460,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":9504,"src":"2340:20:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9459,"name":"uint256","nodeType":"ElementaryTypeName","src":"2340:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2339:22:71"},"scope":9562,"src":"2250:385:71","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9560,"nodeType":"Block","src":"2732:386:71","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":9519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9516,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9506,"src":"2779:5:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9514,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9378,"src":"2750:16:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":9515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gauge_types","nodeType":"MemberAccess","referencedDeclaration":801,"src":"2750:28:71","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_int128_$","typeString":"function (address) view external returns (int128)"}},"id":9517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2750:35:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":9518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2789:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2750:40:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520646f6573206e6f74206578697374206f6e20436f6e74726f6c6c6572","id":9520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2792:36:71","typeDescriptions":{"typeIdentifier":"t_stringliteral_e44889d5b2f7492cbae17d1caabb9cae7b136932b333dfd4635f726a9e80f227","typeString":"literal_string \"Gauge does not exist on Controller\""},"value":"Gauge does not exist on Controller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e44889d5b2f7492cbae17d1caabb9cae7b136932b333dfd4635f726a9e80f227","typeString":"literal_string \"Gauge does not exist on Controller\""}],"id":9513,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2742:7:71","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2742:87:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9522,"nodeType":"ExpressionStatement","src":"2742:87:71"},{"expression":{"arguments":[{"id":9527,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9508,"src":"2879:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":9524,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9506,"src":"2856:5:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9523,"name":"ILiquidityGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"2840:15:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILiquidityGauge_$928_$","typeString":"type(contract ILiquidityGauge)"}},"id":9525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2840:22:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"id":9526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_checkpoint","nodeType":"MemberAccess","referencedDeclaration":893,"src":"2840:38:71","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) external returns (bool)"}},"id":9528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2840:44:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9529,"nodeType":"ExpressionStatement","src":"2840:44:71"},{"assignments":[9531],"declarations":[{"constant":false,"id":9531,"mutability":"mutable","name":"totalMint","nodeType":"VariableDeclaration","scope":9560,"src":"2894:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9530,"name":"uint256","nodeType":"ElementaryTypeName","src":"2894:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9538,"initialValue":{"arguments":[{"id":9536,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9508,"src":"2956:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":9533,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9506,"src":"2930:5:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9532,"name":"ILiquidityGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"2914:15:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILiquidityGauge_$928_$","typeString":"type(contract ILiquidityGauge)"}},"id":9534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2914:22:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"id":9535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"integrate_fraction","nodeType":"MemberAccess","referencedDeclaration":885,"src":"2914:41:71","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":9537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2914:47:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2894:67:71"},{"expression":{"id":9547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9539,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9511,"src":"2971:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":9543,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9508,"src":"3007:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9544,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9506,"src":"3013:5:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9542,"name":"minted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7604,"src":"3000:6:71","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":9545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3000:19:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9540,"name":"totalMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9531,"src":"2986:9:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7390,"src":"2986:13:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2986:34:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2971:49:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9548,"nodeType":"ExpressionStatement","src":"2971:49:71"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9549,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9511,"src":"3035:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3050:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3035:16:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9559,"nodeType":"IfStatement","src":"3031:81:71","trueBody":{"id":9558,"nodeType":"Block","src":"3053:59:71","statements":[{"expression":{"arguments":[{"id":9553,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9508,"src":"3078:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9554,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9506,"src":"3084:5:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9555,"name":"totalMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9531,"src":"3091:9:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9552,"name":"_setMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7741,"src":"3067:10:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3067:34:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9557,"nodeType":"ExpressionStatement","src":"3067:34:71"}]}}]},"id":9561,"implemented":true,"kind":"function","modifiers":[],"name":"_updateGauge","nodeType":"FunctionDefinition","parameters":{"id":9509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9506,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":9561,"src":"2663:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9505,"name":"address","nodeType":"ElementaryTypeName","src":"2663:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9508,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9561,"src":"2678:12:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9507,"name":"address","nodeType":"ElementaryTypeName","src":"2678:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2662:29:71"},"returnParameters":{"id":9512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9511,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":9561,"src":"2710:20:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9510,"name":"uint256","nodeType":"ElementaryTypeName","src":"2710:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2709:22:71"},"scope":9562,"src":"2641:477:71","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":9563,"src":"1181:1939:71"}],"src":"688:2433:71"},"id":71},"contracts/NullVotingEscrow.sol":{"ast":{"absolutePath":"contracts/NullVotingEscrow.sol","exportedSymbols":{"NullVotingEscrow":[9653]},"id":9654,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9564,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:72"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":9565,"nodeType":"ImportDirective","scope":9654,"sourceUnit":2448,"src":"713:87:72","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":9566,"nodeType":"ImportDirective","scope":9654,"sourceUnit":2249,"src":"801:90:72","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9568,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1425:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":9569,"nodeType":"InheritanceSpecifier","src":"1425:6:72"}],"contractDependencies":[2447],"contractKind":"contract","documentation":{"id":9567,"nodeType":"StructuredDocumentation","src":"893:502:72","text":" @title Null VotingEscrow\n @notice This contract fulfils the role of a `VotingEscrow` contract\n where no accounts hold a balance for the purposes of gauge boosts.\n @dev This contract is to be used as the fallback `VotingEscrow` on chains other than Ethereum mainnet.\n In the situation where boosts are not properly relayed from Ethereum mainnet to a chain and the veBoost\n implementation is killed, values will be read from here which will have the effect of zeroing out any boosts."},"fullyImplemented":true,"id":9653,"linearizedBaseContracts":[9653,2447],"name":"NullVotingEscrow","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[2378],"body":{"id":9577,"nodeType":"Block","src":"1502:25:72","statements":[{"expression":{"hexValue":"30","id":9575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1519:1:72","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":9574,"id":9576,"nodeType":"Return","src":"1512:8:72"}]},"functionSelector":"18160ddd","id":9578,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":9571,"nodeType":"OverrideSpecifier","overrides":[],"src":"1475:8:72"},"parameters":{"id":9570,"nodeType":"ParameterList","parameters":[],"src":"1458:2:72"},"returnParameters":{"id":9574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9573,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9578,"src":"1493:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9572,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1492:9:72"},"scope":9653,"src":"1438:89:72","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2386],"body":{"id":9588,"nodeType":"Block","src":"1602:25:72","statements":[{"expression":{"hexValue":"30","id":9586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1619:1:72","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":9585,"id":9587,"nodeType":"Return","src":"1612:8:72"}]},"functionSelector":"70a08231","id":9589,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":{"id":9582,"nodeType":"OverrideSpecifier","overrides":[],"src":"1575:8:72"},"parameters":{"id":9581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9580,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9589,"src":"1552:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9579,"name":"address","nodeType":"ElementaryTypeName","src":"1552:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1551:9:72"},"returnParameters":{"id":9585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9584,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9589,"src":"1593:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9583,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1592:9:72"},"scope":9653,"src":"1533:94:72","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2406],"body":{"id":9601,"nodeType":"Block","src":"1711:25:72","statements":[{"expression":{"hexValue":"30","id":9599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1728:1:72","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":9598,"id":9600,"nodeType":"Return","src":"1721:8:72"}]},"functionSelector":"dd62ed3e","id":9602,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","overrides":{"id":9595,"nodeType":"OverrideSpecifier","overrides":[],"src":"1684:8:72"},"parameters":{"id":9594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9591,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9602,"src":"1652:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9590,"name":"address","nodeType":"ElementaryTypeName","src":"1652:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9593,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9602,"src":"1661:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9592,"name":"address","nodeType":"ElementaryTypeName","src":"1661:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1651:18:72"},"returnParameters":{"id":9598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9597,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9602,"src":"1702:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9596,"name":"uint256","nodeType":"ElementaryTypeName","src":"1702:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1701:9:72"},"scope":9653,"src":"1633:103:72","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2416],"body":{"id":9617,"nodeType":"Block","src":"1815:46:72","statements":[{"expression":{"arguments":[{"expression":{"id":9613,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1833:6:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":9614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"1833:20:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9612,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"1825:7:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1825:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9616,"nodeType":"ExpressionStatement","src":"1825:29:72"}]},"functionSelector":"095ea7b3","id":9618,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":9608,"nodeType":"OverrideSpecifier","overrides":[],"src":"1791:8:72"},"parameters":{"id":9607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9604,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9618,"src":"1759:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9603,"name":"address","nodeType":"ElementaryTypeName","src":"1759:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9606,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9618,"src":"1768:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9605,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1758:18:72"},"returnParameters":{"id":9611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9610,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9618,"src":"1809:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9609,"name":"bool","nodeType":"ElementaryTypeName","src":"1809:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1808:6:72"},"scope":9653,"src":"1742:119:72","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2396],"body":{"id":9633,"nodeType":"Block","src":"1941:46:72","statements":[{"expression":{"arguments":[{"expression":{"id":9629,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1959:6:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":9630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"1959:20:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9628,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"1951:7:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1951:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9632,"nodeType":"ExpressionStatement","src":"1951:29:72"}]},"functionSelector":"a9059cbb","id":9634,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":{"id":9624,"nodeType":"OverrideSpecifier","overrides":[],"src":"1917:8:72"},"parameters":{"id":9623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9620,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9634,"src":"1885:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9619,"name":"address","nodeType":"ElementaryTypeName","src":"1885:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9622,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9634,"src":"1894:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9621,"name":"uint256","nodeType":"ElementaryTypeName","src":"1894:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1884:18:72"},"returnParameters":{"id":9627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9626,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9634,"src":"1935:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9625,"name":"bool","nodeType":"ElementaryTypeName","src":"1935:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1934:6:72"},"scope":9653,"src":"1867:120:72","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2428],"body":{"id":9651,"nodeType":"Block","src":"2110:46:72","statements":[{"expression":{"arguments":[{"expression":{"id":9647,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2128:6:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":9648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"2128:20:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9646,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"2120:7:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2120:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9650,"nodeType":"ExpressionStatement","src":"2120:29:72"}]},"functionSelector":"23b872dd","id":9652,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":9642,"nodeType":"OverrideSpecifier","overrides":[],"src":"2086:8:72"},"parameters":{"id":9641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9636,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9652,"src":"2024:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9635,"name":"address","nodeType":"ElementaryTypeName","src":"2024:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9638,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9652,"src":"2041:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9637,"name":"address","nodeType":"ElementaryTypeName","src":"2041:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9640,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9652,"src":"2058:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9639,"name":"uint256","nodeType":"ElementaryTypeName","src":"2058:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2014:57:72"},"returnParameters":{"id":9645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9644,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9652,"src":"2104:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9643,"name":"bool","nodeType":"ElementaryTypeName","src":"2104:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2103:6:72"},"scope":9653,"src":"1993:163:72","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":9654,"src":"1396:762:72"}],"src":"688:1471:72"},"id":72},"contracts/OmniVotingEscrowAdaptor.sol":{"ast":{"absolutePath":"contracts/OmniVotingEscrowAdaptor.sol","exportedSymbols":{"OmniVotingEscrowAdaptor":[9868]},"id":9869,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9655,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:73"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol","id":9656,"nodeType":"ImportDirective","scope":9869,"sourceUnit":982,"src":"713:87:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol","id":9657,"nodeType":"ImportDirective","scope":9869,"sourceUnit":1006,"src":"801:94:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol","id":9658,"nodeType":"ImportDirective","scope":9869,"sourceUnit":1075,"src":"896:102:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":9659,"nodeType":"ImportDirective","scope":9869,"sourceUnit":3698,"src":"1000:88:73","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9661,"name":"IOmniVotingEscrowAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":1005,"src":"1422:24:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":9662,"nodeType":"InheritanceSpecifier","src":"1422:24:73"},{"baseName":{"id":9663,"name":"IOmniVotingEscrowAdaptorSettings","nodeType":"UserDefinedTypeName","referencedDeclaration":1074,"src":"1452:32:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptorSettings_$1074","typeString":"contract IOmniVotingEscrowAdaptorSettings"}},"id":9664,"nodeType":"InheritanceSpecifier","src":"1452:32:73"},{"baseName":{"id":9665,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1490:23:73","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":9666,"nodeType":"InheritanceSpecifier","src":"1490:23:73"}],"contractDependencies":[1005,1074,2259,3128,3697],"contractKind":"contract","documentation":{"id":9660,"nodeType":"StructuredDocumentation","src":"1090:291:73","text":" @notice Adaptor contract between `VotingEscrowRemapper` and `OmniVotingEscrow`.\n @dev Provides the remapper a stable interface to forward requests to the omni voting escrow, while allowing to\n configure optional parameters and even swap the target omni voting escrow contract."},"fullyImplemented":true,"id":9868,"linearizedBaseContracts":[9868,3697,3128,2259,1074,1005],"name":"OmniVotingEscrowAdaptor","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":9668,"mutability":"mutable","name":"_omniVotingEscrow","nodeType":"VariableDeclaration","scope":9868,"src":"1520:43:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":9667,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"1520:17:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"private"},{"constant":false,"id":9670,"mutability":"mutable","name":"_useZro","nodeType":"VariableDeclaration","scope":9868,"src":"1569:20:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9669,"name":"bool","nodeType":"ElementaryTypeName","src":"1569:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"constant":false,"id":9672,"mutability":"mutable","name":"_adapterParams","nodeType":"VariableDeclaration","scope":9868,"src":"1595:28:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes"},"typeName":{"id":9671,"name":"bytes","nodeType":"ElementaryTypeName","src":"1595:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"private"},{"constant":false,"id":9674,"mutability":"mutable","name":"_zroPaymentAddress","nodeType":"VariableDeclaration","scope":9868,"src":"1629:34:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9673,"name":"address","nodeType":"ElementaryTypeName","src":"1629:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":9682,"nodeType":"Block","src":"1727:64:73","statements":[]},"id":9683,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9679,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9676,"src":"1720:5:73","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":9680,"modifierName":{"id":9678,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1696:23:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1696:30:73"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9676,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9683,"src":"1682:12:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":9675,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1682:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1681:14:73"},"returnParameters":{"id":9681,"nodeType":"ParameterList","parameters":[],"src":"1727:0:73"},"scope":9868,"src":"1670:121:73","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1031],"body":{"id":9692,"nodeType":"Block","src":"1930:41:73","statements":[{"expression":{"id":9690,"name":"_omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9668,"src":"1947:17:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"functionReturnParameters":9689,"id":9691,"nodeType":"Return","src":"1940:24:73"}]},"documentation":{"id":9684,"nodeType":"StructuredDocumentation","src":"1797:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"550f2f7f","id":9693,"implemented":true,"kind":"function","modifiers":[],"name":"getOmniVotingEscrow","nodeType":"FunctionDefinition","overrides":{"id":9686,"nodeType":"OverrideSpecifier","overrides":[],"src":"1893:8:73"},"parameters":{"id":9685,"nodeType":"ParameterList","parameters":[],"src":"1878:2:73"},"returnParameters":{"id":9689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9688,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9693,"src":"1911:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":9687,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"1911:17:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"internal"}],"src":"1910:19:73"},"scope":9868,"src":"1850:121:73","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1037],"body":{"id":9702,"nodeType":"Block","src":"2090:31:73","statements":[{"expression":{"id":9700,"name":"_useZro","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9670,"src":"2107:7:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9699,"id":9701,"nodeType":"Return","src":"2100:14:73"}]},"documentation":{"id":9694,"nodeType":"StructuredDocumentation","src":"1977:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"00986fe0","id":9703,"implemented":true,"kind":"function","modifiers":[],"name":"getUseZero","nodeType":"FunctionDefinition","overrides":{"id":9696,"nodeType":"OverrideSpecifier","overrides":[],"src":"2066:8:73"},"parameters":{"id":9695,"nodeType":"ParameterList","parameters":[],"src":"2049:2:73"},"returnParameters":{"id":9699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9698,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9703,"src":"2084:4:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9697,"name":"bool","nodeType":"ElementaryTypeName","src":"2084:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2083:6:73"},"scope":9868,"src":"2030:91:73","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1043],"body":{"id":9712,"nodeType":"Block","src":"2254:38:73","statements":[{"expression":{"id":9710,"name":"_adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9672,"src":"2271:14:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"functionReturnParameters":9709,"id":9711,"nodeType":"Return","src":"2264:21:73"}]},"documentation":{"id":9704,"nodeType":"StructuredDocumentation","src":"2127:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"4cfde448","id":9713,"implemented":true,"kind":"function","modifiers":[],"name":"getAdapterParams","nodeType":"FunctionDefinition","overrides":{"id":9706,"nodeType":"OverrideSpecifier","overrides":[],"src":"2222:8:73"},"parameters":{"id":9705,"nodeType":"ParameterList","parameters":[],"src":"2205:2:73"},"returnParameters":{"id":9709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9708,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9713,"src":"2240:12:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9707,"name":"bytes","nodeType":"ElementaryTypeName","src":"2240:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2239:14:73"},"scope":9868,"src":"2180:112:73","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1049],"body":{"id":9722,"nodeType":"Block","src":"2425:42:73","statements":[{"expression":{"id":9720,"name":"_zroPaymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9674,"src":"2442:18:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":9719,"id":9721,"nodeType":"Return","src":"2435:25:73"}]},"documentation":{"id":9714,"nodeType":"StructuredDocumentation","src":"2298:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"0943b7b8","id":9723,"implemented":true,"kind":"function","modifiers":[],"name":"getZeroPaymentAddress","nodeType":"FunctionDefinition","overrides":{"id":9716,"nodeType":"OverrideSpecifier","overrides":[],"src":"2398:8:73"},"parameters":{"id":9715,"nodeType":"ParameterList","parameters":[],"src":"2381:2:73"},"returnParameters":{"id":9719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9718,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9723,"src":"2416:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9717,"name":"address","nodeType":"ElementaryTypeName","src":"2416:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2415:9:73"},"scope":9868,"src":"2351:116:73","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[994],"body":{"id":9755,"nodeType":"Block","src":"2674:260:73","statements":[{"assignments":[9735],"declarations":[{"constant":false,"id":9735,"mutability":"mutable","name":"omniVotingEscrow","nodeType":"VariableDeclaration","scope":9755,"src":"2684:34:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":9734,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"2684:17:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"internal"}],"id":9738,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":9736,"name":"getOmniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9693,"src":"2721:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IOmniVotingEscrow_$981_$","typeString":"function () view returns (contract IOmniVotingEscrow)"}},"id":9737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2721:21:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"nodeType":"VariableDeclarationStatement","src":"2684:58:73"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"id":9744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9740,"name":"omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9735,"src":"2760:16:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":9742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2798:1:73","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9741,"name":"IOmniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":981,"src":"2780:17:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOmniVotingEscrow_$981_$","typeString":"type(contract IOmniVotingEscrow)"}},"id":9743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2780:20:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"src":"2760:40:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6d6e6920766f74696e6720657363726f77206e6f7420736574","id":9745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2802:28:73","typeDescriptions":{"typeIdentifier":"t_stringliteral_12fa1b1107549cc58552e2d8648e0204a3bab22e5c93daab05ba3cffbc55b1b6","typeString":"literal_string \"Omni voting escrow not set\""},"value":"Omni voting escrow not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12fa1b1107549cc58552e2d8648e0204a3bab22e5c93daab05ba3cffbc55b1b6","typeString":"literal_string \"Omni voting escrow not set\""}],"id":9739,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2752:7:73","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2752:79:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9747,"nodeType":"ExpressionStatement","src":"2752:79:73"},{"expression":{"arguments":[{"id":9750,"name":"_dstChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9726,"src":"2890:11:73","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9751,"name":"_useZro","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9670,"src":"2903:7:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9752,"name":"_adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9672,"src":"2912:14:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}],"expression":{"id":9748,"name":"omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9735,"src":"2849:16:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"id":9749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"estimateSendUserBalance","nodeType":"MemberAccess","referencedDeclaration":967,"src":"2849:40:73","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint16_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint16,bool,bytes memory) view external returns (uint256,uint256)"}},"id":9753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2849:78:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":9733,"id":9754,"nodeType":"Return","src":"2842:85:73"}]},"documentation":{"id":9724,"nodeType":"StructuredDocumentation","src":"2473:40:73","text":"@inheritdoc IOmniVotingEscrowAdaptor"},"functionSelector":"ecc4c583","id":9756,"implemented":true,"kind":"function","modifiers":[],"name":"estimateSendUserBalance","nodeType":"FunctionDefinition","overrides":{"id":9728,"nodeType":"OverrideSpecifier","overrides":[],"src":"2609:8:73"},"parameters":{"id":9727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9726,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":9756,"src":"2551:18:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9725,"name":"uint16","nodeType":"ElementaryTypeName","src":"2551:6:73","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"2550:20:73"},"returnParameters":{"id":9733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9730,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":9756,"src":"2635:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9729,"name":"uint256","nodeType":"ElementaryTypeName","src":"2635:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9732,"mutability":"mutable","name":"zroFee","nodeType":"VariableDeclaration","scope":9756,"src":"2654:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9731,"name":"uint256","nodeType":"ElementaryTypeName","src":"2654:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2634:35:73"},"scope":9868,"src":"2518:416:73","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1004],"body":{"id":9794,"nodeType":"Block","src":"3133:369:73","statements":[{"assignments":[9768],"declarations":[{"constant":false,"id":9768,"mutability":"mutable","name":"omniVotingEscrow","nodeType":"VariableDeclaration","scope":9794,"src":"3143:34:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":9767,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"3143:17:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"internal"}],"id":9771,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":9769,"name":"getOmniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9693,"src":"3180:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IOmniVotingEscrow_$981_$","typeString":"function () view returns (contract IOmniVotingEscrow)"}},"id":9770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3180:21:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"nodeType":"VariableDeclarationStatement","src":"3143:58:73"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"id":9777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9773,"name":"omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9768,"src":"3219:16:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":9775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3257:1:73","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9774,"name":"IOmniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":981,"src":"3239:17:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOmniVotingEscrow_$981_$","typeString":"type(contract IOmniVotingEscrow)"}},"id":9776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3239:20:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"src":"3219:40:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6d6e6920766f74696e6720657363726f77206e6f7420736574","id":9778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3261:28:73","typeDescriptions":{"typeIdentifier":"t_stringliteral_12fa1b1107549cc58552e2d8648e0204a3bab22e5c93daab05ba3cffbc55b1b6","typeString":"literal_string \"Omni voting escrow not set\""},"value":"Omni voting escrow not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12fa1b1107549cc58552e2d8648e0204a3bab22e5c93daab05ba3cffbc55b1b6","typeString":"literal_string \"Omni voting escrow not set\""}],"id":9772,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3211:7:73","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3211:79:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9780,"nodeType":"ExpressionStatement","src":"3211:79:73"},{"expression":{"arguments":[{"id":9787,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9759,"src":"3367:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9788,"name":"_dstChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9761,"src":"3386:11:73","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9789,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9763,"src":"3411:14:73","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":9790,"name":"_zroPaymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9674,"src":"3439:18:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9791,"name":"_adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9672,"src":"3471:14:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}],"expression":{"id":9781,"name":"omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9768,"src":"3301:16:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"id":9783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendUserBalance","nodeType":"MemberAccess","referencedDeclaration":980,"src":"3301:32:73","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint16,address payable,address,bytes memory) payable external"}},"id":9786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":9784,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3342:3:73","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"3342:9:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3301:52:73","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$_t_address_$_t_bytes_memory_ptr_$returns$__$value","typeString":"function (address,uint16,address payable,address,bytes memory) payable external"}},"id":9792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3301:194:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9793,"nodeType":"ExpressionStatement","src":"3301:194:73"}]},"documentation":{"id":9757,"nodeType":"StructuredDocumentation","src":"2940:40:73","text":"@inheritdoc IOmniVotingEscrowAdaptor"},"functionSelector":"57fb8345","id":9795,"implemented":true,"kind":"function","modifiers":[],"name":"sendUserBalance","nodeType":"FunctionDefinition","overrides":{"id":9765,"nodeType":"OverrideSpecifier","overrides":[],"src":"3124:8:73"},"parameters":{"id":9764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9759,"mutability":"mutable","name":"_user","nodeType":"VariableDeclaration","scope":9795,"src":"3019:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9758,"name":"address","nodeType":"ElementaryTypeName","src":"3019:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9761,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":9795,"src":"3042:18:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9760,"name":"uint16","nodeType":"ElementaryTypeName","src":"3042:6:73","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":9763,"mutability":"mutable","name":"_refundAddress","nodeType":"VariableDeclaration","scope":9795,"src":"3070:30:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":9762,"name":"address","nodeType":"ElementaryTypeName","src":"3070:15:73","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"3009:97:73"},"returnParameters":{"id":9766,"nodeType":"ParameterList","parameters":[],"src":"3133:0:73"},"scope":9868,"src":"2985:517:73","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1055],"body":{"id":9812,"nodeType":"Block","src":"3657:109:73","statements":[{"expression":{"id":9806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9804,"name":"_omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9668,"src":"3667:17:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9805,"name":"omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9798,"src":"3687:16:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"src":"3667:36:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"id":9807,"nodeType":"ExpressionStatement","src":"3667:36:73"},{"eventCall":{"arguments":[{"id":9809,"name":"omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9798,"src":"3742:16:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}],"id":9808,"name":"OmniVotingEscrowUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1013,"src":"3718:23:73","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IOmniVotingEscrow_$981_$returns$__$","typeString":"function (contract IOmniVotingEscrow)"}},"id":9810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3718:41:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9811,"nodeType":"EmitStatement","src":"3713:46:73"}]},"documentation":{"id":9796,"nodeType":"StructuredDocumentation","src":"3508:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"09d401f9","id":9813,"implemented":true,"kind":"function","modifiers":[{"id":9802,"modifierName":{"id":9801,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3644:12:73","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3644:12:73"}],"name":"setOmniVotingEscrow","nodeType":"FunctionDefinition","overrides":{"id":9800,"nodeType":"OverrideSpecifier","overrides":[],"src":"3635:8:73"},"parameters":{"id":9799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9798,"mutability":"mutable","name":"omniVotingEscrow","nodeType":"VariableDeclaration","scope":9813,"src":"3590:34:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":9797,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"3590:17:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"internal"}],"src":"3589:36:73"},"returnParameters":{"id":9803,"nodeType":"ParameterList","parameters":[],"src":"3657:0:73"},"scope":9868,"src":"3561:205:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1061],"body":{"id":9830,"nodeType":"Block","src":"3889:70:73","statements":[{"expression":{"id":9824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9822,"name":"_useZro","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9670,"src":"3899:7:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9823,"name":"useZro","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"3909:6:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3899:16:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9825,"nodeType":"ExpressionStatement","src":"3899:16:73"},{"eventCall":{"arguments":[{"id":9827,"name":"useZro","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"3945:6:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9826,"name":"UseZeroUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"3930:14:73","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":9828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3930:22:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9829,"nodeType":"EmitStatement","src":"3925:27:73"}]},"documentation":{"id":9814,"nodeType":"StructuredDocumentation","src":"3772:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"299fd6fc","id":9831,"implemented":true,"kind":"function","modifiers":[{"id":9820,"modifierName":{"id":9819,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3876:12:73","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3876:12:73"}],"name":"setUseZero","nodeType":"FunctionDefinition","overrides":{"id":9818,"nodeType":"OverrideSpecifier","overrides":[],"src":"3867:8:73"},"parameters":{"id":9817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9816,"mutability":"mutable","name":"useZro","nodeType":"VariableDeclaration","scope":9831,"src":"3845:11:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9815,"name":"bool","nodeType":"ElementaryTypeName","src":"3845:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3844:13:73"},"returnParameters":{"id":9821,"nodeType":"ParameterList","parameters":[],"src":"3889:0:73"},"scope":9868,"src":"3825:134:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1067],"body":{"id":9848,"nodeType":"Block","src":"4103:97:73","statements":[{"expression":{"id":9842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9840,"name":"_adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9672,"src":"4113:14:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9841,"name":"adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9834,"src":"4130:13:73","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4113:30:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":9843,"nodeType":"ExpressionStatement","src":"4113:30:73"},{"eventCall":{"arguments":[{"id":9845,"name":"adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9834,"src":"4179:13:73","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9844,"name":"AdapterParamsUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1021,"src":"4158:20:73","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":9846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4158:35:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9847,"nodeType":"EmitStatement","src":"4153:40:73"}]},"documentation":{"id":9832,"nodeType":"StructuredDocumentation","src":"3965:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"d56b6a4a","id":9849,"implemented":true,"kind":"function","modifiers":[{"id":9838,"modifierName":{"id":9837,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"4090:12:73","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4090:12:73"}],"name":"setAdapterParams","nodeType":"FunctionDefinition","overrides":{"id":9836,"nodeType":"OverrideSpecifier","overrides":[],"src":"4081:8:73"},"parameters":{"id":9835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9834,"mutability":"mutable","name":"adapterParams","nodeType":"VariableDeclaration","scope":9849,"src":"4044:26:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9833,"name":"bytes","nodeType":"ElementaryTypeName","src":"4044:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4043:28:73"},"returnParameters":{"id":9839,"nodeType":"ParameterList","parameters":[],"src":"4103:0:73"},"scope":9868,"src":"4018:182:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1073],"body":{"id":9866,"nodeType":"Block","src":"4345:108:73","statements":[{"expression":{"id":9860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9858,"name":"_zroPaymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9674,"src":"4355:18:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9859,"name":"paymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9852,"src":"4376:14:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4355:35:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9861,"nodeType":"ExpressionStatement","src":"4355:35:73"},{"eventCall":{"arguments":[{"id":9863,"name":"paymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9852,"src":"4431:14:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9862,"name":"ZeroPaymentAddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"4405:25:73","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4405:41:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9865,"nodeType":"EmitStatement","src":"4400:46:73"}]},"documentation":{"id":9850,"nodeType":"StructuredDocumentation","src":"4206:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"e241e489","id":9867,"implemented":true,"kind":"function","modifiers":[{"id":9856,"modifierName":{"id":9855,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"4332:12:73","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4332:12:73"}],"name":"setZeroPaymentAddress","nodeType":"FunctionDefinition","overrides":{"id":9854,"nodeType":"OverrideSpecifier","overrides":[],"src":"4323:8:73"},"parameters":{"id":9853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9852,"mutability":"mutable","name":"paymentAddress","nodeType":"VariableDeclaration","scope":9867,"src":"4290:22:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9851,"name":"address","nodeType":"ElementaryTypeName","src":"4290:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4289:24:73"},"returnParameters":{"id":9857,"nodeType":"ParameterList","parameters":[],"src":"4345:0:73"},"scope":9868,"src":"4259:194:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9869,"src":"1382:3073:73"}],"src":"688:3768:73"},"id":73},"contracts/SmartWalletChecker.sol":{"ast":{"absolutePath":"contracts/SmartWalletChecker.sol","exportedSymbols":{"SmartWalletChecker":[10014]},"id":10015,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9870,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:74"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol","id":9871,"nodeType":"ImportDirective","scope":10015,"sourceUnit":1216,"src":"713:89:74","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":9872,"nodeType":"ImportDirective","scope":10015,"sourceUnit":3052,"src":"803:65:74","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":9873,"nodeType":"ImportDirective","scope":10015,"sourceUnit":3698,"src":"870:88:74","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","id":9874,"nodeType":"ImportDirective","scope":10015,"sourceUnit":7132,"src":"959:83:74","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9875,"name":"ISmartWalletChecker","nodeType":"UserDefinedTypeName","referencedDeclaration":1215,"src":"1075:19:74","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"id":9876,"nodeType":"InheritanceSpecifier","src":"1075:19:74"},{"baseName":{"id":9877,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1096:23:74","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":9878,"nodeType":"InheritanceSpecifier","src":"1096:23:74"}],"contractDependencies":[1215,2259,3128,3697],"contractKind":"contract","fullyImplemented":true,"id":10014,"linearizedBaseContracts":[10014,3697,3128,2259,1215],"name":"SmartWalletChecker","nodeType":"ContractDefinition","nodes":[{"id":9881,"libraryName":{"id":9879,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7131,"src":"1132:13:74","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$7131","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"1126:49:74","typeName":{"id":9880,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1150:24:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"anonymous":false,"id":9885,"name":"ContractAddressAdded","nodeType":"EventDefinition","parameters":{"id":9884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9883,"indexed":false,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":9885,"src":"1208:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9882,"name":"address","nodeType":"ElementaryTypeName","src":"1208:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1207:25:74"},"src":"1181:52:74"},{"anonymous":false,"id":9889,"name":"ContractAddressRemoved","nodeType":"EventDefinition","parameters":{"id":9888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9887,"indexed":false,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":9889,"src":"1267:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9886,"name":"address","nodeType":"ElementaryTypeName","src":"1267:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1266:25:74"},"src":"1238:54:74"},{"constant":false,"id":9891,"mutability":"mutable","name":"_allowlistedAddresses","nodeType":"VariableDeclaration","scope":10014,"src":"1298:54:74","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":9890,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1298:24:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"private"},{"body":{"id":9925,"nodeType":"Block","src":"1458:198:74","statements":[{"assignments":[9903],"declarations":[{"constant":false,"id":9903,"mutability":"mutable","name":"addressesLength","nodeType":"VariableDeclaration","scope":9925,"src":"1468:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9902,"name":"uint256","nodeType":"ElementaryTypeName","src":"1468:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9906,"initialValue":{"expression":{"id":9904,"name":"initialAllowedAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9896,"src":"1494:23:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1494:30:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1468:56:74"},{"body":{"id":9923,"nodeType":"Block","src":"1580:70:74","statements":[{"expression":{"arguments":[{"baseExpression":{"id":9918,"name":"initialAllowedAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9896,"src":"1612:23:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9920,"indexExpression":{"id":9919,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9908,"src":"1636:1:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1612:26:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9917,"name":"_allowlistAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10013,"src":"1594:17:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1594:45:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9922,"nodeType":"ExpressionStatement","src":"1594:45:74"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9911,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9908,"src":"1554:1:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9912,"name":"addressesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9903,"src":"1558:15:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1554:19:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9924,"initializationExpression":{"assignments":[9908],"declarations":[{"constant":false,"id":9908,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9924,"src":"1539:9:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9907,"name":"uint256","nodeType":"ElementaryTypeName","src":"1539:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9910,"initialValue":{"hexValue":"30","id":9909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1551:1:74","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1539:13:74"},"loopExpression":{"expression":{"id":9915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1575:3:74","subExpression":{"id":9914,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9908,"src":"1577:1:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9916,"nodeType":"ExpressionStatement","src":"1575:3:74"},"nodeType":"ForStatement","src":"1534:116:74"}]},"id":9926,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9899,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9893,"src":"1451:5:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":9900,"modifierName":{"id":9898,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1427:23:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1427:30:74"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9893,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9926,"src":"1371:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":9892,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1371:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":9896,"mutability":"mutable","name":"initialAllowedAddresses","nodeType":"VariableDeclaration","scope":9926,"src":"1385:40:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9894,"name":"address","nodeType":"ElementaryTypeName","src":"1385:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9895,"nodeType":"ArrayTypeName","src":"1385:9:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1370:56:74"},"returnParameters":{"id":9901,"nodeType":"ParameterList","parameters":[],"src":"1458:0:74"},"scope":10014,"src":"1359:297:74","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1214],"body":{"id":9939,"nodeType":"Block","src":"1740:71:74","statements":[{"expression":{"arguments":[{"id":9936,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9928,"src":"1788:15:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9934,"name":"_allowlistedAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"1757:21:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9935,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":6834,"src":"1757:30:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"}},"id":9937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1757:47:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9933,"id":9938,"nodeType":"Return","src":"1750:54:74"}]},"functionSelector":"c23697a8","id":9940,"implemented":true,"kind":"function","modifiers":[],"name":"check","nodeType":"FunctionDefinition","overrides":{"id":9930,"nodeType":"OverrideSpecifier","overrides":[],"src":"1716:8:74"},"parameters":{"id":9929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9928,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":9940,"src":"1677:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9927,"name":"address","nodeType":"ElementaryTypeName","src":"1677:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1676:25:74"},"returnParameters":{"id":9933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9932,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9940,"src":"1734:4:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9931,"name":"bool","nodeType":"ElementaryTypeName","src":"1734:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1733:6:74"},"scope":10014,"src":"1662:149:74","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9952,"nodeType":"Block","src":"1895:55:74","statements":[{"expression":{"arguments":[{"id":9949,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9942,"src":"1937:5:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9947,"name":"_allowlistedAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"1912:21:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9948,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":6873,"src":"1912:24:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":9950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1912:31:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":9946,"id":9951,"nodeType":"Return","src":"1905:38:74"}]},"functionSelector":"2ee7ca64","id":9953,"implemented":true,"kind":"function","modifiers":[],"name":"getAllowlistedAddress","nodeType":"FunctionDefinition","parameters":{"id":9943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9942,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":9953,"src":"1848:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9941,"name":"uint256","nodeType":"ElementaryTypeName","src":"1848:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1847:15:74"},"returnParameters":{"id":9946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9945,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9953,"src":"1886:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9944,"name":"address","nodeType":"ElementaryTypeName","src":"1886:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1885:9:74"},"scope":10014,"src":"1817:133:74","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9962,"nodeType":"Block","src":"2029:54:74","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9958,"name":"_allowlistedAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"2046:21:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6847,"src":"2046:28:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":9960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2046:30:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9957,"id":9961,"nodeType":"Return","src":"2039:37:74"}]},"functionSelector":"c7abf7e2","id":9963,"implemented":true,"kind":"function","modifiers":[],"name":"getAllowlistedAddressesLength","nodeType":"FunctionDefinition","parameters":{"id":9954,"nodeType":"ParameterList","parameters":[],"src":"1994:2:74"},"returnParameters":{"id":9957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9956,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9963,"src":"2020:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9955,"name":"uint256","nodeType":"ElementaryTypeName","src":"2020:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2019:9:74"},"scope":10014,"src":"1956:127:74","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9974,"nodeType":"Block","src":"2162:51:74","statements":[{"expression":{"arguments":[{"id":9971,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9965,"src":"2190:15:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9970,"name":"_allowlistAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10013,"src":"2172:17:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2172:34:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9973,"nodeType":"ExpressionStatement","src":"2172:34:74"}]},"functionSelector":"f191aad0","id":9975,"implemented":true,"kind":"function","modifiers":[{"id":9968,"modifierName":{"id":9967,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"2149:12:74","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2149:12:74"}],"name":"allowlistAddress","nodeType":"FunctionDefinition","parameters":{"id":9966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9965,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":9975,"src":"2115:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9964,"name":"address","nodeType":"ElementaryTypeName","src":"2115:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2114:25:74"},"returnParameters":{"id":9969,"nodeType":"ParameterList","parameters":[],"src":"2162:0:74"},"scope":10014,"src":"2089:124:74","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9994,"nodeType":"Block","src":"2291:155:74","statements":[{"expression":{"arguments":[{"arguments":[{"id":9985,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9977,"src":"2338:15:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9983,"name":"_allowlistedAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"2309:21:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9984,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":6816,"src":"2309:28:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":9986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2309:45:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"41646472657373206973206e6f7420616c6c6f776c6973746564","id":9987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2356:28:74","typeDescriptions":{"typeIdentifier":"t_stringliteral_7225e4630e045b69ee32e4a65259148df21c7176dba39d73b744e663aedbed9f","typeString":"literal_string \"Address is not allowlisted\""},"value":"Address is not allowlisted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7225e4630e045b69ee32e4a65259148df21c7176dba39d73b744e663aedbed9f","typeString":"literal_string \"Address is not allowlisted\""}],"id":9982,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2301:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2301:84:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9989,"nodeType":"ExpressionStatement","src":"2301:84:74"},{"eventCall":{"arguments":[{"id":9991,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9977,"src":"2423:15:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9990,"name":"ContractAddressRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9889,"src":"2400:22:74","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2400:39:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9993,"nodeType":"EmitStatement","src":"2395:44:74"}]},"functionSelector":"a5ee4e71","id":9995,"implemented":true,"kind":"function","modifiers":[{"id":9980,"modifierName":{"id":9979,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"2278:12:74","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2278:12:74"}],"name":"denylistAddress","nodeType":"FunctionDefinition","parameters":{"id":9978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9977,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":9995,"src":"2244:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9976,"name":"address","nodeType":"ElementaryTypeName","src":"2244:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2243:25:74"},"returnParameters":{"id":9981,"nodeType":"ParameterList","parameters":[],"src":"2291:0:74"},"scope":10014,"src":"2219:227:74","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10012,"nodeType":"Block","src":"2540:151:74","statements":[{"expression":{"arguments":[{"arguments":[{"id":10003,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9997,"src":"2584:15:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10001,"name":"_allowlistedAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"2558:21:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":10002,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":6731,"src":"2558:25:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":10004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2558:42:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4164647265737320616c726561647920616c6c6f776c6973746564","id":10005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2602:29:74","typeDescriptions":{"typeIdentifier":"t_stringliteral_1ca8a1012c666cd160975f0b6c016234f4aa97efbe3db06b1302c23e5d5e37d0","typeString":"literal_string \"Address already allowlisted\""},"value":"Address already allowlisted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1ca8a1012c666cd160975f0b6c016234f4aa97efbe3db06b1302c23e5d5e37d0","typeString":"literal_string \"Address already allowlisted\""}],"id":10000,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2550:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2550:82:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10007,"nodeType":"ExpressionStatement","src":"2550:82:74"},{"eventCall":{"arguments":[{"id":10009,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9997,"src":"2668:15:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10008,"name":"ContractAddressAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9885,"src":"2647:20:74","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2647:37:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10011,"nodeType":"EmitStatement","src":"2642:42:74"}]},"id":10013,"implemented":true,"kind":"function","modifiers":[],"name":"_allowlistAddress","nodeType":"FunctionDefinition","parameters":{"id":9998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9997,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":10013,"src":"2506:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9996,"name":"address","nodeType":"ElementaryTypeName","src":"2506:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2505:25:74"},"returnParameters":{"id":9999,"nodeType":"ParameterList","parameters":[],"src":"2540:0:74"},"scope":10014,"src":"2479:212:74","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":10015,"src":"1044:1649:74"}],"src":"688:2006:74"},"id":74},"contracts/VotingEscrowDelegationProxy.sol":{"ast":{"absolutePath":"contracts/VotingEscrowDelegationProxy.sol","exportedSymbols":{"VotingEscrowDelegationProxy":[10199]},"id":10200,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10016,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:75"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol","id":10017,"nodeType":"ImportDirective","scope":10200,"sourceUnit":1470,"src":"713:83:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":10018,"nodeType":"ImportDirective","scope":10200,"sourceUnit":3052,"src":"797:65:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":10019,"nodeType":"ImportDirective","scope":10200,"sourceUnit":3698,"src":"864:88:75","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10020,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"994:23:75","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":10021,"nodeType":"InheritanceSpecifier","src":"994:23:75"}],"contractDependencies":[2259,3128,3697],"contractKind":"contract","fullyImplemented":true,"id":10199,"linearizedBaseContracts":[10199,3697,3128,2259],"name":"VotingEscrowDelegationProxy","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":10023,"mutability":"immutable","name":"_votingEscrow","nodeType":"VariableDeclaration","scope":10199,"src":"1024:38:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":10022,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1024:6:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"private"},{"constant":false,"id":10025,"mutability":"mutable","name":"_delegation","nodeType":"VariableDeclaration","scope":10199,"src":"1068:33:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"typeName":{"id":10024,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"1068:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"visibility":"private"},{"anonymous":false,"id":10029,"name":"DelegationImplementationUpdated","nodeType":"EventDefinition","parameters":{"id":10028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10027,"indexed":true,"mutability":"mutable","name":"newImplementation","nodeType":"VariableDeclaration","scope":10029,"src":"1146:33:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10026,"name":"address","nodeType":"ElementaryTypeName","src":"1146:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1145:35:75"},"src":"1108:73:75"},{"body":{"id":10049,"nodeType":"Block","src":"1321:79:75","statements":[{"expression":{"id":10043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10041,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10023,"src":"1331:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10042,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10033,"src":"1347:12:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"1331:28:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":10044,"nodeType":"ExpressionStatement","src":"1331:28:75"},{"expression":{"id":10047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10045,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"1369:11:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10046,"name":"delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10035,"src":"1383:10:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"src":"1369:24:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":10048,"nodeType":"ExpressionStatement","src":"1369:24:75"}]},"id":10050,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10038,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10031,"src":"1314:5:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":10039,"modifierName":{"id":10037,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1290:23:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1290:30:75"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":10036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10031,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":10050,"src":"1208:12:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":10030,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1208:6:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":10033,"mutability":"mutable","name":"votingEscrow","nodeType":"VariableDeclaration","scope":10050,"src":"1230:19:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":10032,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1230:6:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":10035,"mutability":"mutable","name":"delegation","nodeType":"VariableDeclaration","scope":10050,"src":"1259:24:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"typeName":{"id":10034,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"1259:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"visibility":"internal"}],"src":"1198:91:75"},"returnParameters":{"id":10040,"nodeType":"ParameterList","parameters":[],"src":"1321:0:75"},"scope":10199,"src":"1187:213:75","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":10058,"nodeType":"Block","src":"1570:35:75","statements":[{"expression":{"id":10056,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"1587:11:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"functionReturnParameters":10055,"id":10057,"nodeType":"Return","src":"1580:18:75"}]},"documentation":{"id":10051,"nodeType":"StructuredDocumentation","src":"1406:82:75","text":" @notice Returns the current delegation implementation contract."},"functionSelector":"63408a90","id":10059,"implemented":true,"kind":"function","modifiers":[],"name":"getDelegationImplementation","nodeType":"FunctionDefinition","parameters":{"id":10052,"nodeType":"ParameterList","parameters":[],"src":"1529:2:75"},"returnParameters":{"id":10055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10054,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10059,"src":"1555:13:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"typeName":{"id":10053,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"1555:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"visibility":"internal"}],"src":"1554:15:75"},"scope":10199,"src":"1493:112:75","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10067,"nodeType":"Block","src":"1744:37:75","statements":[{"expression":{"id":10065,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10023,"src":"1761:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"functionReturnParameters":10064,"id":10066,"nodeType":"Return","src":"1754:20:75"}]},"documentation":{"id":10060,"nodeType":"StructuredDocumentation","src":"1611:70:75","text":" @notice Returns the Voting Escrow (veBAL) contract."},"functionSelector":"08b0308a","id":10068,"implemented":true,"kind":"function","modifiers":[],"name":"getVotingEscrow","nodeType":"FunctionDefinition","parameters":{"id":10061,"nodeType":"ParameterList","parameters":[],"src":"1710:2:75"},"returnParameters":{"id":10064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10063,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10068,"src":"1736:6:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":10062,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1736:6:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1735:8:75"},"scope":10199,"src":"1686:95:75","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10080,"nodeType":"Block","src":"2060:48:75","statements":[{"expression":{"arguments":[{"id":10077,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10071,"src":"2096:4:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10076,"name":"_adjustedBalanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10153,"src":"2077:18:75","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":10078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2077:24:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10075,"id":10079,"nodeType":"Return","src":"2070:31:75"}]},"documentation":{"id":10069,"nodeType":"StructuredDocumentation","src":"1787:195:75","text":" @notice Get the adjusted veBAL balance from the active boost delegation contract\n @param user The user to query the adjusted veBAL balance of\n @return veBAL balance"},"functionSelector":"25798418","id":10081,"implemented":true,"kind":"function","modifiers":[],"name":"adjustedBalanceOf","nodeType":"FunctionDefinition","parameters":{"id":10072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10071,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":10081,"src":"2014:12:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10070,"name":"address","nodeType":"ElementaryTypeName","src":"2014:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2013:14:75"},"returnParameters":{"id":10075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10074,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10081,"src":"2051:7:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10073,"name":"uint256","nodeType":"ElementaryTypeName","src":"2051:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2050:9:75"},"scope":10199,"src":"1987:121:75","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10093,"nodeType":"Block","src":"2442:48:75","statements":[{"expression":{"arguments":[{"id":10090,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10084,"src":"2478:4:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10089,"name":"_adjustedBalanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10153,"src":"2459:18:75","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":10091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2459:24:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10088,"id":10092,"nodeType":"Return","src":"2452:31:75"}]},"documentation":{"id":10082,"nodeType":"StructuredDocumentation","src":"2114:195:75","text":" @notice Get the adjusted veBAL balance from the active boost delegation contract\n @param user The user to query the adjusted veBAL balance of\n @return veBAL balance"},"functionSelector":"bbf7408a","id":10094,"implemented":true,"kind":"function","modifiers":[],"name":"adjusted_balance_of","nodeType":"FunctionDefinition","parameters":{"id":10085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10084,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":10094,"src":"2396:12:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10083,"name":"address","nodeType":"ElementaryTypeName","src":"2396:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2395:14:75"},"returnParameters":{"id":10088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10087,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10094,"src":"2433:7:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10086,"name":"uint256","nodeType":"ElementaryTypeName","src":"2433:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2432:9:75"},"scope":10199,"src":"2367:123:75","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10121,"nodeType":"Block","src":"2696:220:75","statements":[{"assignments":[10101],"declarations":[{"constant":false,"id":10101,"mutability":"mutable","name":"implementation","nodeType":"VariableDeclaration","scope":10121,"src":"2706:28:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"typeName":{"id":10100,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"2706:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"visibility":"internal"}],"id":10103,"initialValue":{"id":10102,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"2737:11:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"nodeType":"VariableDeclarationStatement","src":"2706:42:75"},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"id":10108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10104,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10101,"src":"2762:14:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2794:1:75","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10105,"name":"IVeDelegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1469,"src":"2780:13:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVeDelegation_$1469_$","typeString":"type(contract IVeDelegation)"}},"id":10107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2780:16:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"src":"2762:34:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10116,"nodeType":"IfStatement","src":"2758:107:75","trueBody":{"id":10115,"nodeType":"Block","src":"2798:67:75","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10110,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10023,"src":"2826:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":10109,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2447,"src":"2819:6:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2447_$","typeString":"type(contract IERC20)"}},"id":10111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2819:21:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":10112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":2378,"src":"2819:33:75","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":10113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2819:35:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10099,"id":10114,"nodeType":"Return","src":"2812:42:75"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10117,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10101,"src":"2881:14:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":10118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":1468,"src":"2881:26:75","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":10119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2881:28:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10099,"id":10120,"nodeType":"Return","src":"2874:35:75"}]},"documentation":{"id":10095,"nodeType":"StructuredDocumentation","src":"2496:140:75","text":" @notice Get the current veBAL total supply from the votingEscrow contract.\n @return The current veBAL total supply."},"functionSelector":"18160ddd","id":10122,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":10096,"nodeType":"ParameterList","parameters":[],"src":"2661:2:75"},"returnParameters":{"id":10099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10098,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10122,"src":"2687:7:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10097,"name":"uint256","nodeType":"ElementaryTypeName","src":"2687:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2686:9:75"},"scope":10199,"src":"2641:275:75","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10152,"nodeType":"Block","src":"3023:234:75","statements":[{"assignments":[10130],"declarations":[{"constant":false,"id":10130,"mutability":"mutable","name":"implementation","nodeType":"VariableDeclaration","scope":10152,"src":"3033:28:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"typeName":{"id":10129,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"3033:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"visibility":"internal"}],"id":10132,"initialValue":{"id":10131,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"3064:11:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"nodeType":"VariableDeclarationStatement","src":"3033:42:75"},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"id":10137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10133,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10130,"src":"3089:14:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3121:1:75","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10134,"name":"IVeDelegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1469,"src":"3107:13:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVeDelegation_$1469_$","typeString":"type(contract IVeDelegation)"}},"id":10136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3107:16:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"src":"3089:34:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10146,"nodeType":"IfStatement","src":"3085:109:75","trueBody":{"id":10145,"nodeType":"Block","src":"3125:69:75","statements":[{"expression":{"arguments":[{"id":10142,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"3178:4:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":10139,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10023,"src":"3153:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":10138,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2447,"src":"3146:6:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2447_$","typeString":"type(contract IERC20)"}},"id":10140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3146:21:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":10141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2386,"src":"3146:31:75","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3146:37:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10128,"id":10144,"nodeType":"Return","src":"3139:44:75"}]}},{"expression":{"arguments":[{"id":10149,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"3245:4:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10147,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10130,"src":"3210:14:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":10148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"adjusted_balance_of","nodeType":"MemberAccess","referencedDeclaration":1463,"src":"3210:34:75","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3210:40:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10128,"id":10151,"nodeType":"Return","src":"3203:47:75"}]},"id":10153,"implemented":true,"kind":"function","modifiers":[],"name":"_adjustedBalanceOf","nodeType":"FunctionDefinition","parameters":{"id":10125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10124,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":10153,"src":"2977:12:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10123,"name":"address","nodeType":"ElementaryTypeName","src":"2977:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2976:14:75"},"returnParameters":{"id":10128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10127,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10153,"src":"3014:7:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10126,"name":"uint256","nodeType":"ElementaryTypeName","src":"3014:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3013:9:75"},"scope":10199,"src":"2949:308:75","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10178,"nodeType":"Block","src":"3358:221:75","statements":[{"expression":{"arguments":[{"expression":{"id":10163,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3459:3:75","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3459:10:75","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":10160,"name":"delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10155,"src":"3428:10:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":10162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"adjusted_balance_of","nodeType":"MemberAccess","referencedDeclaration":1463,"src":"3428:30:75","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3428:42:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10166,"nodeType":"ExpressionStatement","src":"3428:42:75"},{"expression":{"id":10169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10167,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"3481:11:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10168,"name":"delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10155,"src":"3495:10:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"src":"3481:24:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":10170,"nodeType":"ExpressionStatement","src":"3481:24:75"},{"eventCall":{"arguments":[{"arguments":[{"id":10174,"name":"delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10155,"src":"3560:10:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}],"id":10173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3552:7:75","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10172,"name":"address","nodeType":"ElementaryTypeName","src":"3552:7:75","typeDescriptions":{}}},"id":10175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3552:19:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10171,"name":"DelegationImplementationUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10029,"src":"3520:31:75","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3520:52:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10177,"nodeType":"EmitStatement","src":"3515:57:75"}]},"functionSelector":"e6b3e704","id":10179,"implemented":true,"kind":"function","modifiers":[{"id":10158,"modifierName":{"id":10157,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3345:12:75","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3345:12:75"}],"name":"setDelegation","nodeType":"FunctionDefinition","parameters":{"id":10156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10155,"mutability":"mutable","name":"delegation","nodeType":"VariableDeclaration","scope":10179,"src":"3310:24:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"typeName":{"id":10154,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"3310:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"visibility":"internal"}],"src":"3309:26:75"},"returnParameters":{"id":10159,"nodeType":"ParameterList","parameters":[],"src":"3358:0:75"},"scope":10199,"src":"3287:292:75","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10197,"nodeType":"Block","src":"3633:105:75","statements":[{"expression":{"id":10188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10184,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"3643:11:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":10186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3671:1:75","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10185,"name":"IVeDelegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1469,"src":"3657:13:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVeDelegation_$1469_$","typeString":"type(contract IVeDelegation)"}},"id":10187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3657:16:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"src":"3643:30:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":10189,"nodeType":"ExpressionStatement","src":"3643:30:75"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":10193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3728:1:75","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3720:7:75","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10191,"name":"address","nodeType":"ElementaryTypeName","src":"3720:7:75","typeDescriptions":{}}},"id":10194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3720:10:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10190,"name":"DelegationImplementationUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10029,"src":"3688:31:75","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3688:43:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10196,"nodeType":"EmitStatement","src":"3683:48:75"}]},"functionSelector":"6448a3ab","id":10198,"implemented":true,"kind":"function","modifiers":[{"id":10182,"modifierName":{"id":10181,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3620:12:75","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3620:12:75"}],"name":"killDelegation","nodeType":"FunctionDefinition","parameters":{"id":10180,"nodeType":"ParameterList","parameters":[],"src":"3608:2:75"},"returnParameters":{"id":10183,"nodeType":"ParameterList","parameters":[],"src":"3633:0:75"},"scope":10199,"src":"3585:153:75","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10200,"src":"954:2786:75"}],"src":"688:3053:75"},"id":75},"contracts/VotingEscrowRemapper.sol":{"ast":{"absolutePath":"contracts/VotingEscrowRemapper.sol","exportedSymbols":{"VotingEscrowRemapper":[10848]},"id":10849,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10201,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:76"},{"id":10202,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:76"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol","id":10203,"nodeType":"ImportDirective","scope":10849,"sourceUnit":1006,"src":"747:94:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol","id":10204,"nodeType":"ImportDirective","scope":10849,"sourceUnit":1675,"src":"842:91:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":10205,"nodeType":"ImportDirective","scope":10849,"sourceUnit":5851,"src":"935:77:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":10206,"nodeType":"ImportDirective","scope":10849,"sourceUnit":7188,"src":"1013:85:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":10207,"nodeType":"ImportDirective","scope":10849,"sourceUnit":3698,"src":"1099:88:76","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10209,"name":"IVotingEscrowRemapper","nodeType":"UserDefinedTypeName","referencedDeclaration":1674,"src":"1898:21:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrowRemapper_$1674","typeString":"contract IVotingEscrowRemapper"}},"id":10210,"nodeType":"InheritanceSpecifier","src":"1898:21:76"},{"baseName":{"id":10211,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1921:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":10212,"nodeType":"InheritanceSpecifier","src":"1921:23:76"},{"baseName":{"id":10213,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"1946:15:76","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":10214,"nodeType":"InheritanceSpecifier","src":"1946:15:76"}],"contractDependencies":[1674,2259,3128,3697,7187],"contractKind":"contract","documentation":{"id":10208,"nodeType":"StructuredDocumentation","src":"1189:675:76","text":" @notice This contract allows veBAL holders on Ethereum to assign their balance to designated addresses on each L2.\n This is intended for smart contracts that are not deployed to the same address on all networks. EOA's are\n expected to either use the same address, or manage delegation on L2 networks themselves.\n @dev For each network (chainId), we maintain a mapping between local (Ethereum) and remote (L2) addresses.\n This contract remaps balance queries on remote network addresses to their corresponding local addresses.\n Users able to call this contract can set their own mappings, or delegate this function to another account if they\n cannot."},"fullyImplemented":true,"id":10848,"linearizedBaseContracts":[10848,7187,3697,3128,2259,1674],"name":"VotingEscrowRemapper","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":10216,"mutability":"immutable","name":"_votingEscrow","nodeType":"VariableDeclaration","scope":10848,"src":"1968:45:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":10215,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"1968:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"private"},{"constant":false,"id":10218,"mutability":"mutable","name":"_omniVotingEscrowAdaptor","nodeType":"VariableDeclaration","scope":10848,"src":"2019:57:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"},"typeName":{"id":10217,"name":"IOmniVotingEscrowAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":1005,"src":"2019:24:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"visibility":"private"},{"constant":false,"id":10224,"mutability":"mutable","name":"_localToRemoteAddressMap","nodeType":"VariableDeclaration","scope":10848,"src":"2082:79:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"},"typeName":{"id":10223,"keyType":{"id":10219,"name":"uint16","nodeType":"ElementaryTypeName","src":"2090:6:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Mapping","src":"2082:46:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"},"valueType":{"id":10222,"keyType":{"id":10220,"name":"address","nodeType":"ElementaryTypeName","src":"2108:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2100:27:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":10221,"name":"address","nodeType":"ElementaryTypeName","src":"2119:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}}},"visibility":"private"},{"constant":false,"id":10230,"mutability":"mutable","name":"_remoteToLocalAddressMap","nodeType":"VariableDeclaration","scope":10848,"src":"2167:79:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"},"typeName":{"id":10229,"keyType":{"id":10225,"name":"uint16","nodeType":"ElementaryTypeName","src":"2175:6:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Mapping","src":"2167:46:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"},"valueType":{"id":10228,"keyType":{"id":10226,"name":"address","nodeType":"ElementaryTypeName","src":"2193:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2185:27:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":10227,"name":"address","nodeType":"ElementaryTypeName","src":"2204:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}}},"visibility":"private"},{"constant":false,"id":10234,"mutability":"mutable","name":"_localRemappingManager","nodeType":"VariableDeclaration","scope":10848,"src":"2361:58:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":10233,"keyType":{"id":10231,"name":"address","nodeType":"ElementaryTypeName","src":"2369:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2361:27:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":10232,"name":"address","nodeType":"ElementaryTypeName","src":"2380:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"body":{"id":10254,"nodeType":"Block","src":"2591:105:76","statements":[{"expression":{"id":10248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10246,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10216,"src":"2601:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10247,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10238,"src":"2617:12:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"src":"2601:28:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10249,"nodeType":"ExpressionStatement","src":"2601:28:76"},{"expression":{"id":10252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10250,"name":"_omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10218,"src":"2639:24:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10251,"name":"omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10240,"src":"2666:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"src":"2639:50:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":10253,"nodeType":"ExpressionStatement","src":"2639:50:76"}]},"id":10255,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10243,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10236,"src":"2584:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":10244,"modifierName":{"id":10242,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"2560:23:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"2560:30:76"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":10241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10236,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":10255,"src":"2447:12:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":10235,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"2447:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":10238,"mutability":"mutable","name":"votingEscrow","nodeType":"VariableDeclaration","scope":10255,"src":"2469:26:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":10237,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"2469:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"},{"constant":false,"id":10240,"mutability":"mutable","name":"omniVotingEscrowAdaptor","nodeType":"VariableDeclaration","scope":10255,"src":"2505:48:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"},"typeName":{"id":10239,"name":"IOmniVotingEscrowAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":1005,"src":"2505:24:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"visibility":"internal"}],"src":"2437:122:76"},"returnParameters":{"id":10245,"nodeType":"ParameterList","parameters":[],"src":"2591:0:76"},"scope":10848,"src":"2426:270:76","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1591],"body":{"id":10264,"nodeType":"Block","src":"2816:37:76","statements":[{"expression":{"id":10262,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10216,"src":"2833:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"functionReturnParameters":10261,"id":10263,"nodeType":"Return","src":"2826:20:76"}]},"documentation":{"id":10256,"nodeType":"StructuredDocumentation","src":"2702:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"08b0308a","id":10265,"implemented":true,"kind":"function","modifiers":[],"name":"getVotingEscrow","nodeType":"FunctionDefinition","overrides":{"id":10258,"nodeType":"OverrideSpecifier","overrides":[],"src":"2783:8:76"},"parameters":{"id":10257,"nodeType":"ParameterList","parameters":[],"src":"2768:2:76"},"returnParameters":{"id":10261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10260,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10265,"src":"2801:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":10259,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"2801:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"src":"2800:15:76"},"scope":10848,"src":"2744:109:76","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1597],"body":{"id":10274,"nodeType":"Block","src":"2995:48:76","statements":[{"expression":{"id":10272,"name":"_omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10218,"src":"3012:24:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"functionReturnParameters":10271,"id":10273,"nodeType":"Return","src":"3005:31:76"}]},"documentation":{"id":10266,"nodeType":"StructuredDocumentation","src":"2859:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"5e5543be","id":10275,"implemented":true,"kind":"function","modifiers":[],"name":"getOmniVotingEscrowAdaptor","nodeType":"FunctionDefinition","overrides":{"id":10268,"nodeType":"OverrideSpecifier","overrides":[],"src":"2951:8:76"},"parameters":{"id":10267,"nodeType":"ParameterList","parameters":[],"src":"2936:2:76"},"returnParameters":{"id":10271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10270,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10275,"src":"2969:24:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"},"typeName":{"id":10269,"name":"IOmniVotingEscrowAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":1005,"src":"2969:24:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"visibility":"internal"}],"src":"2968:26:76"},"scope":10848,"src":"2901:142:76","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1603],"body":{"id":10298,"nodeType":"Block","src":"3182:181:76","statements":[{"assignments":[10283],"declarations":[{"constant":false,"id":10283,"mutability":"mutable","name":"votingEscrow","nodeType":"VariableDeclaration","scope":10298,"src":"3192:26:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":10282,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"3192:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"id":10286,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10284,"name":"getVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10265,"src":"3221:15:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVotingEscrow_$1559_$","typeString":"function () view returns (contract IVotingEscrow)"}},"id":10285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3221:17:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"nodeType":"VariableDeclarationStatement","src":"3192:46:76"},{"assignments":[10288],"declarations":[{"constant":false,"id":10288,"mutability":"mutable","name":"totalSupplyEpoch","nodeType":"VariableDeclaration","scope":10298,"src":"3248:24:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10287,"name":"uint256","nodeType":"ElementaryTypeName","src":"3248:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10292,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10289,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10283,"src":"3275:12:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"epoch","nodeType":"MemberAccess","referencedDeclaration":1491,"src":"3275:18:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":10291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3275:20:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3248:47:76"},{"expression":{"arguments":[{"id":10295,"name":"totalSupplyEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10288,"src":"3339:16:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10293,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10283,"src":"3312:12:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"point_history","nodeType":"MemberAccess","referencedDeclaration":1521,"src":"3312:26:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_struct$_Point_$1486_memory_ptr_$","typeString":"function (uint256) view external returns (struct IVotingEscrow.Point memory)"}},"id":10296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3312:44:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"functionReturnParameters":10281,"id":10297,"nodeType":"Return","src":"3305:51:76"}]},"documentation":{"id":10276,"nodeType":"StructuredDocumentation","src":"3049:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"f6f4a332","id":10299,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalSupplyPoint","nodeType":"FunctionDefinition","overrides":{"id":10278,"nodeType":"OverrideSpecifier","overrides":[],"src":"3136:8:76"},"parameters":{"id":10277,"nodeType":"ParameterList","parameters":[],"src":"3119:2:76"},"returnParameters":{"id":10281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10280,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10299,"src":"3154:26:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":10279,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"3154:19:76","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"3153:28:76"},"scope":10848,"src":"3091:272:76","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1611],"body":{"id":10326,"nodeType":"Block","src":"3507:193:76","statements":[{"assignments":[10309],"declarations":[{"constant":false,"id":10309,"mutability":"mutable","name":"votingEscrow","nodeType":"VariableDeclaration","scope":10326,"src":"3517:26:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":10308,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"3517:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"id":10312,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10310,"name":"getVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10265,"src":"3546:15:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVotingEscrow_$1559_$","typeString":"function () view returns (contract IVotingEscrow)"}},"id":10311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3546:17:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"nodeType":"VariableDeclarationStatement","src":"3517:46:76"},{"assignments":[10314],"declarations":[{"constant":false,"id":10314,"mutability":"mutable","name":"userEpoch","nodeType":"VariableDeclaration","scope":10326,"src":"3573:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10313,"name":"uint256","nodeType":"ElementaryTypeName","src":"3573:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10319,"initialValue":{"arguments":[{"id":10317,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10302,"src":"3623:4:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10315,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10309,"src":"3593:12:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_point_epoch","nodeType":"MemberAccess","referencedDeclaration":1514,"src":"3593:29:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3593:35:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3573:55:76"},{"expression":{"arguments":[{"id":10322,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10302,"src":"3677:4:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10323,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10314,"src":"3683:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10320,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10309,"src":"3645:12:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_point_history","nodeType":"MemberAccess","referencedDeclaration":1530,"src":"3645:31:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_struct$_Point_$1486_memory_ptr_$","typeString":"function (address,uint256) view external returns (struct IVotingEscrow.Point memory)"}},"id":10324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3645:48:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"functionReturnParameters":10307,"id":10325,"nodeType":"Return","src":"3638:55:76"}]},"documentation":{"id":10300,"nodeType":"StructuredDocumentation","src":"3369:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"71628bfd","id":10327,"implemented":true,"kind":"function","modifiers":[],"name":"getUserPoint","nodeType":"FunctionDefinition","overrides":{"id":10304,"nodeType":"OverrideSpecifier","overrides":[],"src":"3461:8:76"},"parameters":{"id":10303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10302,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":10327,"src":"3433:12:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10301,"name":"address","nodeType":"ElementaryTypeName","src":"3433:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3432:14:76"},"returnParameters":{"id":10307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10306,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10327,"src":"3479:26:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":10305,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"3479:19:76","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"3478:28:76"},"scope":10848,"src":"3411:289:76","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1619],"body":{"id":10342,"nodeType":"Block","src":"3825:59:76","statements":[{"expression":{"arguments":[{"id":10339,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10330,"src":"3872:4:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10336,"name":"getVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10265,"src":"3842:15:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVotingEscrow_$1559_$","typeString":"function () view returns (contract IVotingEscrow)"}},"id":10337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3842:17:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"locked__end","nodeType":"MemberAccess","referencedDeclaration":1558,"src":"3842:29:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3842:35:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10335,"id":10341,"nodeType":"Return","src":"3835:42:76"}]},"documentation":{"id":10328,"nodeType":"StructuredDocumentation","src":"3706:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"3e7df7c8","id":10343,"implemented":true,"kind":"function","modifiers":[],"name":"getLockedEnd","nodeType":"FunctionDefinition","overrides":{"id":10332,"nodeType":"OverrideSpecifier","overrides":[],"src":"3798:8:76"},"parameters":{"id":10331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10330,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":10343,"src":"3770:12:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10329,"name":"address","nodeType":"ElementaryTypeName","src":"3770:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3769:14:76"},"returnParameters":{"id":10335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10334,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10343,"src":"3816:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10333,"name":"uint256","nodeType":"ElementaryTypeName","src":"3816:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3815:9:76"},"scope":10848,"src":"3748:136:76","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1629],"body":{"id":10360,"nodeType":"Block","src":"4029:69:76","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":10354,"name":"_remoteToLocalAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10230,"src":"4046:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10356,"indexExpression":{"id":10355,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10348,"src":"4071:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4046:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10358,"indexExpression":{"id":10357,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10346,"src":"4080:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4046:45:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10353,"id":10359,"nodeType":"Return","src":"4039:52:76"}]},"documentation":{"id":10344,"nodeType":"StructuredDocumentation","src":"3890:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"70d1bd17","id":10361,"implemented":true,"kind":"function","modifiers":[],"name":"getLocalUser","nodeType":"FunctionDefinition","overrides":{"id":10350,"nodeType":"OverrideSpecifier","overrides":[],"src":"4002:8:76"},"parameters":{"id":10349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10346,"mutability":"mutable","name":"remoteUser","nodeType":"VariableDeclaration","scope":10361,"src":"3954:18:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10345,"name":"address","nodeType":"ElementaryTypeName","src":"3954:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10348,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":10361,"src":"3974:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":10347,"name":"uint16","nodeType":"ElementaryTypeName","src":"3974:6:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"3953:36:76"},"returnParameters":{"id":10353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10352,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10361,"src":"4020:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10351,"name":"address","nodeType":"ElementaryTypeName","src":"4020:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4019:9:76"},"scope":10848,"src":"3932:166:76","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1639],"body":{"id":10378,"nodeType":"Block","src":"4243:68:76","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":10372,"name":"_localToRemoteAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10224,"src":"4260:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10374,"indexExpression":{"id":10373,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10366,"src":"4285:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4260:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10376,"indexExpression":{"id":10375,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10364,"src":"4294:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4260:44:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10371,"id":10377,"nodeType":"Return","src":"4253:51:76"}]},"documentation":{"id":10362,"nodeType":"StructuredDocumentation","src":"4104:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"bda75c38","id":10379,"implemented":true,"kind":"function","modifiers":[],"name":"getRemoteUser","nodeType":"FunctionDefinition","overrides":{"id":10368,"nodeType":"OverrideSpecifier","overrides":[],"src":"4216:8:76"},"parameters":{"id":10367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10364,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":10379,"src":"4169:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10363,"name":"address","nodeType":"ElementaryTypeName","src":"4169:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10366,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":10379,"src":"4188:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":10365,"name":"uint16","nodeType":"ElementaryTypeName","src":"4188:6:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"4168:35:76"},"returnParameters":{"id":10371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10370,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10379,"src":"4234:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10369,"name":"address","nodeType":"ElementaryTypeName","src":"4234:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4233:9:76"},"scope":10848,"src":"4146:165:76","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1647],"body":{"id":10392,"nodeType":"Block","src":"4446:57:76","statements":[{"expression":{"baseExpression":{"id":10388,"name":"_localRemappingManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10234,"src":"4463:22:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10390,"indexExpression":{"id":10389,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10382,"src":"4486:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4463:33:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10387,"id":10391,"nodeType":"Return","src":"4456:40:76"}]},"documentation":{"id":10380,"nodeType":"StructuredDocumentation","src":"4317:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"ee98b1e7","id":10393,"implemented":true,"kind":"function","modifiers":[],"name":"getRemappingManager","nodeType":"FunctionDefinition","overrides":{"id":10384,"nodeType":"OverrideSpecifier","overrides":[],"src":"4419:8:76"},"parameters":{"id":10383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10382,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":10393,"src":"4388:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10381,"name":"address","nodeType":"ElementaryTypeName","src":"4388:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4387:19:76"},"returnParameters":{"id":10387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10386,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10393,"src":"4437:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10385,"name":"address","nodeType":"ElementaryTypeName","src":"4437:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4436:9:76"},"scope":10848,"src":"4359:144:76","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1657],"body":{"id":10633,"nodeType":"Block","src":"4730:4720:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10407,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4749:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4749:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10409,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"4763:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4749:23:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10411,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4776:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4776:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"baseExpression":{"id":10413,"name":"_localRemappingManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10234,"src":"4790:22:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10415,"indexExpression":{"id":10414,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"4813:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4790:33:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4776:47:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4749:74:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":10418,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"4825:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":10419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SENDER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":2010,"src":"4825:25:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10406,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"4740:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":10420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4740:111:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10421,"nodeType":"ExpressionStatement","src":"4740:111:76"},{"expression":{"arguments":[{"arguments":[{"id":10424,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"4888:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10423,"name":"_isAllowedContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10847,"src":"4869:18:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":10425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4869:29:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c7920636f6e7472616374732077686963682063616e20686f6c6420766542414c2063616e207365742075702061206d617070696e67","id":10426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4900:58:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_ba2c9f3e30c78109763eec02c8d9ead4d34f91b032f7190aee7d1e5f94ec7a75","typeString":"literal_string \"Only contracts which can hold veBAL can set up a mapping\""},"value":"Only contracts which can hold veBAL can set up a mapping"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ba2c9f3e30c78109763eec02c8d9ead4d34f91b032f7190aee7d1e5f94ec7a75","typeString":"literal_string \"Only contracts which can hold veBAL can set up a mapping\""}],"id":10422,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4861:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4861:98:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10428,"nodeType":"ExpressionStatement","src":"4861:98:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10430,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"4977:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4999:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4991:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10431,"name":"address","nodeType":"ElementaryTypeName","src":"4991:7:76","typeDescriptions":{}}},"id":10434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4991:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4977:24:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5a65726f20616464726573732063616e6e6f7420626520757365642061732072656d6f74652075736572","id":10436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5003:44:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_bcca65c2aa909a27de1fc1144ea314596d8dd2103bf860bb53c5362ef10f09c3","typeString":"literal_string \"Zero address cannot be used as remote user\""},"value":"Zero address cannot be used as remote user"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bcca65c2aa909a27de1fc1144ea314596d8dd2103bf860bb53c5362ef10f09c3","typeString":"literal_string \"Zero address cannot be used as remote user\""}],"id":10429,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4969:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4969:79:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10438,"nodeType":"ExpressionStatement","src":"4969:79:76"},{"assignments":[10440],"declarations":[{"constant":false,"id":10440,"mutability":"mutable","name":"omniVotingEscrowAdaptor","nodeType":"VariableDeclaration","scope":10633,"src":"5058:48:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"},"typeName":{"id":10439,"name":"IOmniVotingEscrowAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":1005,"src":"5058:24:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"visibility":"internal"}],"id":10443,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10441,"name":"getOmniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10275,"src":"5109:26:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IOmniVotingEscrowAdaptor_$1005_$","typeString":"function () view returns (contract IOmniVotingEscrowAdaptor)"}},"id":10442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5109:28:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"nodeType":"VariableDeclarationStatement","src":"5058:79:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":10445,"name":"_remoteToLocalAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10230,"src":"6480:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10447,"indexExpression":{"id":10446,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"6505:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6480:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10449,"indexExpression":{"id":10448,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"6514:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6480:45:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6537:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6529:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10450,"name":"address","nodeType":"ElementaryTypeName","src":"6529:7:76","typeDescriptions":{}}},"id":10453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6529:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6480:59:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f74206f766572777269746520616e206578697374696e67206d617070696e6720627920616e6f746865722075736572","id":10455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6553:54:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d60b1648497bb2585711d8b829f8679312916c2322dc0d4d4bc0baac0ced59","typeString":"literal_string \"Cannot overwrite an existing mapping by another user\""},"value":"Cannot overwrite an existing mapping by another user"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c5d60b1648497bb2585711d8b829f8679312916c2322dc0d4d4bc0baac0ced59","typeString":"literal_string \"Cannot overwrite an existing mapping by another user\""}],"id":10444,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6459:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6459:158:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10457,"nodeType":"ExpressionStatement","src":"6459:158:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":10459,"name":"_localToRemoteAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10224,"src":"6821:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10461,"indexExpression":{"id":10460,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"6846:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6821:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10463,"indexExpression":{"id":10462,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"6855:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6821:45:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6878:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6870:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10464,"name":"address","nodeType":"ElementaryTypeName","src":"6870:7:76","typeDescriptions":{}}},"id":10467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6870:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6821:59:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f742072656d617020746f20616e2061646472657373207468617420697320696e20757365206c6f63616c6c79","id":10469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6894:51:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_6904f10762e9eda76981ecb18d65c42b557854f71b863e297d75c7fd94490c4e","typeString":"literal_string \"Cannot remap to an address that is in use locally\""},"value":"Cannot remap to an address that is in use locally"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6904f10762e9eda76981ecb18d65c42b557854f71b863e297d75c7fd94490c4e","typeString":"literal_string \"Cannot remap to an address that is in use locally\""}],"id":10458,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6800:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6800:155:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10471,"nodeType":"ExpressionStatement","src":"6800:155:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":10473,"name":"_remoteToLocalAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10230,"src":"7165:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10475,"indexExpression":{"id":10474,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"7190:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7165:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10477,"indexExpression":{"id":10476,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"7199:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7165:44:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7221:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7213:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10478,"name":"address","nodeType":"ElementaryTypeName","src":"7213:7:76","typeDescriptions":{}}},"id":10481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7213:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7165:58:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f742072656d617020746f20616e2061646472657373207468617420697320696e207573652072656d6f74656c79","id":10483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7237:52:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_7e20875c71eb6a849ac154acbacaaf65263ff2267d67f5cfd34e758fa548c9ad","typeString":"literal_string \"Cannot remap to an address that is in use remotely\""},"value":"Cannot remap to an address that is in use remotely"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7e20875c71eb6a849ac154acbacaaf65263ff2267d67f5cfd34e758fa548c9ad","typeString":"literal_string \"Cannot remap to an address that is in use remotely\""}],"id":10472,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7144:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7144:155:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10485,"nodeType":"ExpressionStatement","src":"7144:155:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10489,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"7532:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10487,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10216,"src":"7508:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2386,"src":"7508:23:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7508:35:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7547:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7508:40:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5461726765742072656d6f7465206164647265737320686173206e6f6e2d7a65726f20766542414c2062616c616e6365","id":10493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7550:50:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_4b677b4c67ef2a3ff3463b0c4fdc04ab0778631119f9368a6a56c6cbce5e10d7","typeString":"literal_string \"Target remote address has non-zero veBAL balance\""},"value":"Target remote address has non-zero veBAL balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4b677b4c67ef2a3ff3463b0c4fdc04ab0778631119f9368a6a56c6cbce5e10d7","typeString":"literal_string \"Target remote address has non-zero veBAL balance\""}],"id":10486,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7500:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7500:101:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10495,"nodeType":"ExpressionStatement","src":"7500:101:76"},{"assignments":[10497],"declarations":[{"constant":false,"id":10497,"mutability":"mutable","name":"oldRemoteUser","nodeType":"VariableDeclaration","scope":10633,"src":"7680:21:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10496,"name":"address","nodeType":"ElementaryTypeName","src":"7680:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10503,"initialValue":{"baseExpression":{"baseExpression":{"id":10498,"name":"_localToRemoteAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10224,"src":"7704:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10500,"indexExpression":{"id":10499,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"7729:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7704:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10502,"indexExpression":{"id":10501,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"7738:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7704:44:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7680:68:76"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10504,"name":"oldRemoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"7762:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7787:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7779:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10505,"name":"address","nodeType":"ElementaryTypeName","src":"7779:7:76","typeDescriptions":{}}},"id":10508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7779:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7762:27:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10527,"nodeType":"IfStatement","src":"7758:189:76","trueBody":{"id":10526,"nodeType":"Block","src":"7791:156:76","statements":[{"expression":{"id":10519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10510,"name":"_remoteToLocalAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10230,"src":"7805:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10513,"indexExpression":{"id":10511,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"7830:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7805:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10514,"indexExpression":{"id":10512,"name":"oldRemoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"7839:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7805:48:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":10517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7864:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7856:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10515,"name":"address","nodeType":"ElementaryTypeName","src":"7856:7:76","typeDescriptions":{}}},"id":10518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7856:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7805:61:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10520,"nodeType":"ExpressionStatement","src":"7805:61:76"},{"eventCall":{"arguments":[{"id":10522,"name":"oldRemoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"7913:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10523,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"7928:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":10521,"name":"RemoteAddressMappingCleared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1579,"src":"7885:27:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint16_$returns$__$","typeString":"function (address,uint16)"}},"id":10524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7885:51:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10525,"nodeType":"EmitStatement","src":"7880:56:76"}]}},{"expression":{"id":10534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10528,"name":"_remoteToLocalAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10230,"src":"7990:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10531,"indexExpression":{"id":10529,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"8015:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7990:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10532,"indexExpression":{"id":10530,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"8024:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7990:45:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10533,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"8038:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7990:57:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10535,"nodeType":"ExpressionStatement","src":"7990:57:76"},{"expression":{"id":10542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10536,"name":"_localToRemoteAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10224,"src":"8057:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10539,"indexExpression":{"id":10537,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"8082:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8057:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10540,"indexExpression":{"id":10538,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"8091:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8057:44:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10541,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"8104:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8057:57:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10543,"nodeType":"ExpressionStatement","src":"8057:57:76"},{"eventCall":{"arguments":[{"id":10545,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"8152:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10546,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"8163:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10547,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"8175:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":10544,"name":"AddressMappingUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1573,"src":"8130:21:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint16_$returns$__$","typeString":"function (address,address,uint16)"}},"id":10548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8130:53:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10549,"nodeType":"EmitStatement","src":"8125:58:76"},{"assignments":[10551,null],"declarations":[{"constant":false,"id":10551,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":10633,"src":"8388:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10550,"name":"uint256","nodeType":"ElementaryTypeName","src":"8388:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":10556,"initialValue":{"arguments":[{"id":10554,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"8459:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":10552,"name":"omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10440,"src":"8411:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":10553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"estimateSendUserBalance","nodeType":"MemberAccess","referencedDeclaration":994,"src":"8411:47:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint16_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint16) view external returns (uint256,uint256)"}},"id":10555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8411:56:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"8387:80:76"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10557,"name":"oldRemoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"8481:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8506:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8498:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10558,"name":"address","nodeType":"ElementaryTypeName","src":"8498:7:76","typeDescriptions":{}}},"id":10561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8498:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"8481:27:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10596,"nodeType":"Block","src":"8947:99:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10589,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8969:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"8969:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":10591,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10551,"src":"8982:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8969:22:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742045544820746f2062726964676520757365722062616c616e6365","id":10593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8993:41:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_67d0b83aa3e4b63e58dd50b0bfbe3bc5b8f09d03163a0b3b3efb7a5a6563221e","typeString":"literal_string \"Insufficient ETH to bridge user balance\""},"value":"Insufficient ETH to bridge user balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67d0b83aa3e4b63e58dd50b0bfbe3bc5b8f09d03163a0b3b3efb7a5a6563221e","typeString":"literal_string \"Insufficient ETH to bridge user balance\""}],"id":10588,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8961:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8961:74:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10595,"nodeType":"ExpressionStatement","src":"8961:74:76"}]},"id":10597,"nodeType":"IfStatement","src":"8477:569:76","trueBody":{"id":10587,"nodeType":"Block","src":"8510:431:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10564,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8532:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"8532:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10566,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10551,"src":"8545:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":10567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8557:1:76","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"8545:13:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8532:26:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742045544820746f2062726964676520757365722062616c616e6365","id":10570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8560:41:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_67d0b83aa3e4b63e58dd50b0bfbe3bc5b8f09d03163a0b3b3efb7a5a6563221e","typeString":"literal_string \"Insufficient ETH to bridge user balance\""},"value":"Insufficient ETH to bridge user balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67d0b83aa3e4b63e58dd50b0bfbe3bc5b8f09d03163a0b3b3efb7a5a6563221e","typeString":"literal_string \"Insufficient ETH to bridge user balance\""}],"id":10563,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8524:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8524:78:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10572,"nodeType":"ExpressionStatement","src":"8524:78:76"},{"expression":{"arguments":[{"id":10578,"name":"oldRemoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"8886:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10579,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"8901:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"arguments":[{"expression":{"id":10582,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8918:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8918:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8910:8:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":10580,"name":"address","nodeType":"ElementaryTypeName","src":"8910:8:76","stateMutability":"payable","typeDescriptions":{}}},"id":10584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8910:19:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":10573,"name":"omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10440,"src":"8826:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":10575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendUserBalance","nodeType":"MemberAccess","referencedDeclaration":1004,"src":"8826:39:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$","typeString":"function (address,uint16,address payable) payable external"}},"id":10577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":10576,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10551,"src":"8874:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"8826:59:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$value","typeString":"function (address,uint16,address payable) payable external"}},"id":10585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8826:104:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10586,"nodeType":"ExpressionStatement","src":"8826:104:76"}]}},{"expression":{"arguments":[{"id":10603,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"9184:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10604,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"9195:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"arguments":[{"expression":{"id":10607,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9212:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9212:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9204:8:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":10605,"name":"address","nodeType":"ElementaryTypeName","src":"9204:8:76","stateMutability":"payable","typeDescriptions":{}}},"id":10609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9204:19:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":10598,"name":"omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10440,"src":"9124:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":10600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendUserBalance","nodeType":"MemberAccess","referencedDeclaration":1004,"src":"9124:39:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$","typeString":"function (address,uint16,address payable) payable external"}},"id":10602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":10601,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10551,"src":"9172:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"9124:59:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$value","typeString":"function (address,uint16,address payable) payable external"}},"id":10610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9124:100:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10611,"nodeType":"ExpressionStatement","src":"9124:100:76"},{"assignments":[10613],"declarations":[{"constant":false,"id":10613,"mutability":"mutable","name":"remainingBalance","nodeType":"VariableDeclaration","scope":10633,"src":"9288:24:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10612,"name":"uint256","nodeType":"ElementaryTypeName","src":"9288:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10619,"initialValue":{"expression":{"arguments":[{"id":10616,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9323:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_VotingEscrowRemapper_$10848","typeString":"contract VotingEscrowRemapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VotingEscrowRemapper_$10848","typeString":"contract VotingEscrowRemapper"}],"id":10615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9315:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10614,"name":"address","nodeType":"ElementaryTypeName","src":"9315:7:76","typeDescriptions":{}}},"id":10617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9315:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"9315:21:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9288:48:76"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10620,"name":"remainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10613,"src":"9350:16:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9369:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9350:20:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10632,"nodeType":"IfStatement","src":"9346:98:76","trueBody":{"id":10631,"nodeType":"Block","src":"9372:72:76","statements":[{"expression":{"arguments":[{"expression":{"id":10626,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9404:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9404:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":10628,"name":"remainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10613,"src":"9416:16:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10623,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"9386:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$5850_$","typeString":"type(library Address)"}},"id":10625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":5740,"src":"9386:17:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":10629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9386:47:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10630,"nodeType":"ExpressionStatement","src":"9386:47:76"}]}}]},"documentation":{"id":10394,"nodeType":"StructuredDocumentation","src":"4535:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"21861fde","id":10634,"implemented":true,"kind":"function","modifiers":[{"id":10404,"modifierName":{"id":10403,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"4717:12:76","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4717:12:76"}],"name":"setNetworkRemapping","nodeType":"FunctionDefinition","overrides":{"id":10402,"nodeType":"OverrideSpecifier","overrides":[],"src":"4708:8:76"},"parameters":{"id":10401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10396,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":10634,"src":"4615:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10395,"name":"address","nodeType":"ElementaryTypeName","src":"4615:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10398,"mutability":"mutable","name":"remoteUser","nodeType":"VariableDeclaration","scope":10634,"src":"4642:18:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10397,"name":"address","nodeType":"ElementaryTypeName","src":"4642:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10400,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":10634,"src":"4670:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":10399,"name":"uint16","nodeType":"ElementaryTypeName","src":"4670:6:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"4605:85:76"},"returnParameters":{"id":10405,"nodeType":"ParameterList","parameters":[],"src":"4730:0:76"},"scope":10848,"src":"4577:4873:76","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1665],"body":{"id":10665,"nodeType":"Block","src":"9651:227:76","statements":[{"expression":{"arguments":[{"arguments":[{"id":10649,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10637,"src":"9688:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10648,"name":"_isAllowedContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10847,"src":"9669:18:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":10650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9669:29:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c7920636f6e7472616374732077686963682063616e20686f6c6420766542414c206d6179206861766520612064656c6567617465","id":10651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9700:57:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_c3f28b1715aa1ceb3cf23e62c4019d828f7c20fd7c1ffbcedf8c8364babc475d","typeString":"literal_string \"Only contracts which can hold veBAL may have a delegate\""},"value":"Only contracts which can hold veBAL may have a delegate"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c3f28b1715aa1ceb3cf23e62c4019d828f7c20fd7c1ffbcedf8c8364babc475d","typeString":"literal_string \"Only contracts which can hold veBAL may have a delegate\""}],"id":10647,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9661:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9661:97:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10653,"nodeType":"ExpressionStatement","src":"9661:97:76"},{"expression":{"id":10658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10654,"name":"_localRemappingManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10234,"src":"9769:22:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10656,"indexExpression":{"id":10655,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10637,"src":"9792:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9769:33:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10657,"name":"delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10639,"src":"9805:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9769:44:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10659,"nodeType":"ExpressionStatement","src":"9769:44:76"},{"eventCall":{"arguments":[{"id":10661,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10637,"src":"9851:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10662,"name":"delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10639,"src":"9862:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10660,"name":"AddressDelegateUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1585,"src":"9828:22:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":10663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9828:43:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10664,"nodeType":"EmitStatement","src":"9823:48:76"}]},"documentation":{"id":10635,"nodeType":"StructuredDocumentation","src":"9456:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"a9f3f44e","id":10666,"implemented":true,"kind":"function","modifiers":[{"id":10643,"modifierName":{"id":10642,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"9613:12:76","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"9613:12:76"},{"id":10645,"modifierName":{"id":10644,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"9634:12:76","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"9634:12:76"}],"name":"setNetworkRemappingManager","nodeType":"FunctionDefinition","overrides":{"id":10641,"nodeType":"OverrideSpecifier","overrides":[],"src":"9596:8:76"},"parameters":{"id":10640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10637,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":10666,"src":"9534:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10636,"name":"address","nodeType":"ElementaryTypeName","src":"9534:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10639,"mutability":"mutable","name":"delegate","nodeType":"VariableDeclaration","scope":10666,"src":"9553:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10638,"name":"address","nodeType":"ElementaryTypeName","src":"9553:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9533:37:76"},"returnParameters":{"id":10646,"nodeType":"ParameterList","parameters":[],"src":"9651:0:76"},"scope":10848,"src":"9498:380:76","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1673],"body":{"id":10825,"nodeType":"Block","src":"10031:1613:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10678,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10669,"src":"10049:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10070:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10680,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10062:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10679,"name":"address","nodeType":"ElementaryTypeName","src":"10062:7:76","typeDescriptions":{}}},"id":10682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10062:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"10049:23:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6c6f63616c557365722063616e6e6f74206265207a65726f2061646472657373","id":10684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10074:34:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_549b90accaac9d76faf36af1a2a00547ceaaf81be26666fb1e986ea69c7ca800","typeString":"literal_string \"localUser cannot be zero address\""},"value":"localUser cannot be zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_549b90accaac9d76faf36af1a2a00547ceaaf81be26666fb1e986ea69c7ca800","typeString":"literal_string \"localUser cannot be zero address\""}],"id":10677,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10041:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10041:68:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10686,"nodeType":"ExpressionStatement","src":"10041:68:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10127:30:76","subExpression":{"arguments":[{"id":10689,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10669,"src":"10147:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10688,"name":"_isAllowedContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10847,"src":"10128:18:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":10690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10128:29:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10692,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10669,"src":"10161:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10693,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10174:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10174:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"10161:23:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10127:57:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6c6f63616c55736572206973207374696c6c20696e20676f6f64207374616e64696e67","id":10697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10186:37:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f186dfe5115d87c4d1a7c9454f867e8a0ddda68adc4c3a83ec4e3b84a6edc5a","typeString":"literal_string \"localUser is still in good standing\""},"value":"localUser is still in good standing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f186dfe5115d87c4d1a7c9454f867e8a0ddda68adc4c3a83ec4e3b84a6edc5a","typeString":"literal_string \"localUser is still in good standing\""}],"id":10687,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10119:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10119:105:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10699,"nodeType":"ExpressionStatement","src":"10119:105:76"},{"assignments":[10701],"declarations":[{"constant":false,"id":10701,"mutability":"mutable","name":"omniVotingEscrowAdaptor","nodeType":"VariableDeclaration","scope":10825,"src":"10234:48:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"},"typeName":{"id":10700,"name":"IOmniVotingEscrowAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":1005,"src":"10234:24:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"visibility":"internal"}],"id":10704,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10702,"name":"getOmniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10275,"src":"10285:26:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IOmniVotingEscrowAdaptor_$1005_$","typeString":"function () view returns (contract IOmniVotingEscrowAdaptor)"}},"id":10703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10285:28:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"nodeType":"VariableDeclarationStatement","src":"10234:79:76"},{"assignments":[10706],"declarations":[{"constant":false,"id":10706,"mutability":"mutable","name":"remoteUser","nodeType":"VariableDeclaration","scope":10825,"src":"10324:18:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10705,"name":"address","nodeType":"ElementaryTypeName","src":"10324:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10712,"initialValue":{"baseExpression":{"baseExpression":{"id":10707,"name":"_localToRemoteAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10224,"src":"10345:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10709,"indexExpression":{"id":10708,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"10370:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10345:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10711,"indexExpression":{"id":10710,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10669,"src":"10379:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10345:44:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10324:65:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10714,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"10407:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10429:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10421:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10715,"name":"address","nodeType":"ElementaryTypeName","src":"10421:7:76","typeDescriptions":{}}},"id":10718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10421:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"10407:24:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52656d617070696e6720746f20636c65617220646f6573206e6f74206578697374","id":10720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10433:35:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_ae613414627fb99cd1031bdbd8734f3fa0ddab306b4adb54734790cdc297bfd5","typeString":"literal_string \"Remapping to clear does not exist\""},"value":"Remapping to clear does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ae613414627fb99cd1031bdbd8734f3fa0ddab306b4adb54734790cdc297bfd5","typeString":"literal_string \"Remapping to clear does not exist\""}],"id":10713,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10399:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10399:70:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10722,"nodeType":"ExpressionStatement","src":"10399:70:76"},{"expression":{"id":10732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10723,"name":"_remoteToLocalAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10230,"src":"10480:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10726,"indexExpression":{"id":10724,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"10505:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10480:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10727,"indexExpression":{"id":10725,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"10514:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10480:45:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":10730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10536:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10528:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10728,"name":"address","nodeType":"ElementaryTypeName","src":"10528:7:76","typeDescriptions":{}}},"id":10731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10528:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"10480:58:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10733,"nodeType":"ExpressionStatement","src":"10480:58:76"},{"expression":{"id":10743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10734,"name":"_localToRemoteAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10224,"src":"10548:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10737,"indexExpression":{"id":10735,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"10573:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10548:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10738,"indexExpression":{"id":10736,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10669,"src":"10582:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10548:44:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":10741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10603:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10595:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10739,"name":"address","nodeType":"ElementaryTypeName","src":"10595:7:76","typeDescriptions":{}}},"id":10742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10595:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"10548:57:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10744,"nodeType":"ExpressionStatement","src":"10548:57:76"},{"eventCall":{"arguments":[{"id":10746,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10669,"src":"10643:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":10749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10662:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10654:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10747,"name":"address","nodeType":"ElementaryTypeName","src":"10654:7:76","typeDescriptions":{}}},"id":10750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10654:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":10751,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"10666:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":10745,"name":"AddressMappingUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1573,"src":"10621:21:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint16_$returns$__$","typeString":"function (address,address,uint16)"}},"id":10752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10621:53:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10753,"nodeType":"EmitStatement","src":"10616:58:76"},{"eventCall":{"arguments":[{"id":10755,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"10717:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10756,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"10729:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":10754,"name":"RemoteAddressMappingCleared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1579,"src":"10689:27:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint16_$returns$__$","typeString":"function (address,uint16)"}},"id":10757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10689:48:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10758,"nodeType":"EmitStatement","src":"10684:53:76"},{"assignments":[10760,null],"declarations":[{"constant":false,"id":10760,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":10825,"src":"11029:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10759,"name":"uint256","nodeType":"ElementaryTypeName","src":"11029:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":10765,"initialValue":{"arguments":[{"id":10763,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"11100:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":10761,"name":"omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10701,"src":"11052:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":10762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"estimateSendUserBalance","nodeType":"MemberAccess","referencedDeclaration":994,"src":"11052:47:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint16_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint16) view external returns (uint256,uint256)"}},"id":10764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11052:56:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11028:80:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10767,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11126:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"11126:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10769,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10760,"src":"11139:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":10770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11151:1:76","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11139:13:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11126:26:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742045544820746f2062726964676520757365722062616c616e6365","id":10773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11154:41:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_67d0b83aa3e4b63e58dd50b0bfbe3bc5b8f09d03163a0b3b3efb7a5a6563221e","typeString":"literal_string \"Insufficient ETH to bridge user balance\""},"value":"Insufficient ETH to bridge user balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67d0b83aa3e4b63e58dd50b0bfbe3bc5b8f09d03163a0b3b3efb7a5a6563221e","typeString":"literal_string \"Insufficient ETH to bridge user balance\""}],"id":10766,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11118:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11118:78:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10775,"nodeType":"ExpressionStatement","src":"11118:78:76"},{"expression":{"arguments":[{"id":10781,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10669,"src":"11267:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10782,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"11278:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"arguments":[{"expression":{"id":10785,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11295:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"11295:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11287:8:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":10783,"name":"address","nodeType":"ElementaryTypeName","src":"11287:8:76","stateMutability":"payable","typeDescriptions":{}}},"id":10787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11287:19:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":10776,"name":"omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10701,"src":"11207:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":10778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendUserBalance","nodeType":"MemberAccess","referencedDeclaration":1004,"src":"11207:39:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$","typeString":"function (address,uint16,address payable) payable external"}},"id":10780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":10779,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10760,"src":"11255:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"11207:59:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$value","typeString":"function (address,uint16,address payable) payable external"}},"id":10788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11207:100:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10789,"nodeType":"ExpressionStatement","src":"11207:100:76"},{"expression":{"arguments":[{"id":10795,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"11377:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10796,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"11389:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"arguments":[{"expression":{"id":10799,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11406:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"11406:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11398:8:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":10797,"name":"address","nodeType":"ElementaryTypeName","src":"11398:8:76","stateMutability":"payable","typeDescriptions":{}}},"id":10801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11398:19:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":10790,"name":"omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10701,"src":"11317:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":10792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendUserBalance","nodeType":"MemberAccess","referencedDeclaration":1004,"src":"11317:39:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$","typeString":"function (address,uint16,address payable) payable external"}},"id":10794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":10793,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10760,"src":"11365:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"11317:59:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$value","typeString":"function (address,uint16,address payable) payable external"}},"id":10802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11317:101:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10803,"nodeType":"ExpressionStatement","src":"11317:101:76"},{"assignments":[10805],"declarations":[{"constant":false,"id":10805,"mutability":"mutable","name":"remainingBalance","nodeType":"VariableDeclaration","scope":10825,"src":"11482:24:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10804,"name":"uint256","nodeType":"ElementaryTypeName","src":"11482:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10811,"initialValue":{"expression":{"arguments":[{"id":10808,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11517:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_VotingEscrowRemapper_$10848","typeString":"contract VotingEscrowRemapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VotingEscrowRemapper_$10848","typeString":"contract VotingEscrowRemapper"}],"id":10807,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11509:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10806,"name":"address","nodeType":"ElementaryTypeName","src":"11509:7:76","typeDescriptions":{}}},"id":10809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11509:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"11509:21:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11482:48:76"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10812,"name":"remainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10805,"src":"11544:16:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11563:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11544:20:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10824,"nodeType":"IfStatement","src":"11540:98:76","trueBody":{"id":10823,"nodeType":"Block","src":"11566:72:76","statements":[{"expression":{"arguments":[{"expression":{"id":10818,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11598:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"11598:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":10820,"name":"remainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10805,"src":"11610:16:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10815,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"11580:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$5850_$","typeString":"type(library Address)"}},"id":10817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":5740,"src":"11580:17:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":10821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11580:47:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10822,"nodeType":"ExpressionStatement","src":"11580:47:76"}]}}]},"documentation":{"id":10667,"nodeType":"StructuredDocumentation","src":"9884:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"76601a18","id":10826,"implemented":true,"kind":"function","modifiers":[{"id":10675,"modifierName":{"id":10674,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"10018:12:76","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"10018:12:76"}],"name":"clearNetworkRemapping","nodeType":"FunctionDefinition","overrides":{"id":10673,"nodeType":"OverrideSpecifier","overrides":[],"src":"10009:8:76"},"parameters":{"id":10672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10669,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":10826,"src":"9957:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10668,"name":"address","nodeType":"ElementaryTypeName","src":"9957:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10671,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":10826,"src":"9976:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":10670,"name":"uint16","nodeType":"ElementaryTypeName","src":"9976:6:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"9956:35:76"},"returnParameters":{"id":10676,"nodeType":"ParameterList","parameters":[],"src":"10031:0:76"},"scope":10848,"src":"9926:1718:76","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":10846,"nodeType":"Block","src":"11941:150:76","statements":[{"assignments":[10835],"declarations":[{"constant":false,"id":10835,"mutability":"mutable","name":"smartWalletChecker","nodeType":"VariableDeclaration","scope":10846,"src":"11951:38:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"},"typeName":{"id":10834,"name":"ISmartWalletChecker","nodeType":"UserDefinedTypeName","referencedDeclaration":1215,"src":"11951:19:76","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"visibility":"internal"}],"id":10840,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10836,"name":"getVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10265,"src":"11992:15:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVotingEscrow_$1559_$","typeString":"function () view returns (contract IVotingEscrow)"}},"id":10837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11992:17:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"smart_wallet_checker","nodeType":"MemberAccess","referencedDeclaration":1543,"src":"11992:38:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ISmartWalletChecker_$1215_$","typeString":"function () view external returns (contract ISmartWalletChecker)"}},"id":10839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11992:40:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"nodeType":"VariableDeclarationStatement","src":"11951:81:76"},{"expression":{"arguments":[{"id":10843,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10829,"src":"12074:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10841,"name":"smartWalletChecker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10835,"src":"12049:18:76","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"id":10842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"check","nodeType":"MemberAccess","referencedDeclaration":1214,"src":"12049:24:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":10844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12049:35:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10833,"id":10845,"nodeType":"Return","src":"12042:42:76"}]},"documentation":{"id":10827,"nodeType":"StructuredDocumentation","src":"11677:184:76","text":" @notice Returns whether `localUser` is a contract which is authorized to hold veBAL.\n @param localUser - The address to check against the `SmartWalletChecker`."},"id":10847,"implemented":true,"kind":"function","modifiers":[],"name":"_isAllowedContract","nodeType":"FunctionDefinition","parameters":{"id":10830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10829,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":10847,"src":"11894:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10828,"name":"address","nodeType":"ElementaryTypeName","src":"11894:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11893:19:76"},"returnParameters":{"id":10833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10832,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10847,"src":"11935:4:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10831,"name":"bool","nodeType":"ElementaryTypeName","src":"11935:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11934:6:76"},"scope":10848,"src":"11866:225:76","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":10849,"src":"1865:10228:76"}],"src":"688:11406:76"},"id":76},"contracts/admin/AuthorizerAdaptor.sol":{"ast":{"absolutePath":"contracts/admin/AuthorizerAdaptor.sol","exportedSymbols":{"AuthorizerAdaptor":[10990]},"id":10991,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10850,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:77"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","id":10851,"nodeType":"ImportDirective","scope":10991,"sourceUnit":50,"src":"713:88:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","id":10852,"nodeType":"ImportDirective","scope":10991,"sourceUnit":2503,"src":"802:70:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":10853,"nodeType":"ImportDirective","scope":10991,"sourceUnit":3052,"src":"873:65:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":10854,"nodeType":"ImportDirective","scope":10991,"sourceUnit":7188,"src":"940:85:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":10855,"nodeType":"ImportDirective","scope":10991,"sourceUnit":5851,"src":"1026:77:77","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10857,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"2243:18:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":10858,"nodeType":"InheritanceSpecifier","src":"2243:18:77"},{"baseName":{"id":10859,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"2263:15:77","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":10860,"nodeType":"InheritanceSpecifier","src":"2263:15:77"}],"contractDependencies":[49,2259,7187],"contractKind":"contract","documentation":{"id":10856,"nodeType":"StructuredDocumentation","src":"1105:1107:77","text":" @title Authorizer Adaptor\n WARNING: this contract contains a *critical bug* that can lead into exploits where it checks for permissions\n incorrectly. It should *never* be used by itself. We keep a copy of it in the repository, including the bug and all\n original comments (some of which are incorrect due to the bug), both for historical reasons and because it is part of\n our immutable infrastructure. See the `AuthorizerAdaptorEntrypoint` contract for more information on how we use this\n contract safely.\n @notice This contract is intended to act as an adaptor between systems which expect a single admin address\n and the Balancer Authorizer such that the Authorizer may grant/revoke admin powers to unlimited addresses.\n The permissions the Authorizer can grant are granular such they may be global or specific to a particular contract\n @dev When calculating the actionId to call a function on a target contract, it must be calculated as if it were\n to be called on this adaptor. This can be done by passing the function selector to the `getActionId` function."},"fullyImplemented":true,"id":10990,"linearizedBaseContracts":[10990,7187,49,2259],"name":"AuthorizerAdaptor","nodeType":"ContractDefinition","nodes":[{"id":10863,"libraryName":{"id":10861,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":5850,"src":"2291:7:77","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$5850","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"2285:26:77","typeName":{"id":10862,"name":"address","nodeType":"ElementaryTypeName","src":"2303:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":false,"id":10865,"mutability":"immutable","name":"_actionIdDisambiguator","nodeType":"VariableDeclaration","scope":10990,"src":"2317:48:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10864,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2317:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":10867,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":10990,"src":"2371:31:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":10866,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"2371:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"private"},{"body":{"id":10889,"nodeType":"Block","src":"2435:211:77","statements":[{"expression":{"id":10883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10872,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"2559:22:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":10879,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2608:4:77","typeDescriptions":{"typeIdentifier":"t_contract$_AuthorizerAdaptor_$10990","typeString":"contract AuthorizerAdaptor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AuthorizerAdaptor_$10990","typeString":"contract AuthorizerAdaptor"}],"id":10878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2600:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10877,"name":"address","nodeType":"ElementaryTypeName","src":"2600:7:77","typeDescriptions":{}}},"id":10880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2600:13:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10876,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2592:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10875,"name":"uint256","nodeType":"ElementaryTypeName","src":"2592:7:77","typeDescriptions":{}}},"id":10881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2592:22:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2584:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":10873,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2584:7:77","typeDescriptions":{}}},"id":10882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2584:31:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2559:56:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":10884,"nodeType":"ExpressionStatement","src":"2559:56:77"},{"expression":{"id":10887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10885,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10867,"src":"2625:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10886,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10869,"src":"2634:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"src":"2625:14:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"id":10888,"nodeType":"ExpressionStatement","src":"2625:14:77"}]},"id":10890,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":10870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10869,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":10890,"src":"2421:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":10868,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"2421:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"2420:14:77"},"returnParameters":{"id":10871,"nodeType":"ParameterList","parameters":[],"src":"2435:0:77"},"scope":10990,"src":"2409:237:77","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[32],"body":{"id":10899,"nodeType":"Block","src":"2768:30:77","statements":[{"expression":{"id":10897,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10867,"src":"2785:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"functionReturnParameters":10896,"id":10898,"nodeType":"Return","src":"2778:13:77"}]},"documentation":{"id":10891,"nodeType":"StructuredDocumentation","src":"2652:53:77","text":" @notice Returns the Balancer Vault"},"functionSelector":"8d928af8","id":10900,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","overrides":{"id":10893,"nodeType":"OverrideSpecifier","overrides":[],"src":"2742:8:77"},"parameters":{"id":10892,"nodeType":"ParameterList","parameters":[],"src":"2727:2:77"},"returnParameters":{"id":10896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10895,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10900,"src":"2760:6:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":10894,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"2760:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"2759:8:77"},"scope":10990,"src":"2710:88:77","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[38],"body":{"id":10912,"nodeType":"Block","src":"2926:50:77","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10907,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10900,"src":"2943:8:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view returns (contract IVault)"}},"id":10908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2943:10:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"id":10909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAuthorizer","nodeType":"MemberAccess","referencedDeclaration":2611,"src":"2943:24:77","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizer_$2502_$","typeString":"function () view external returns (contract IAuthorizer)"}},"id":10910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2943:26:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"functionReturnParameters":10906,"id":10911,"nodeType":"Return","src":"2936:33:77"}]},"documentation":{"id":10901,"nodeType":"StructuredDocumentation","src":"2804:49:77","text":" @notice Returns the Authorizer"},"functionSelector":"aaabadc5","id":10913,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","overrides":{"id":10903,"nodeType":"OverrideSpecifier","overrides":[],"src":"2895:8:77"},"parameters":{"id":10902,"nodeType":"ParameterList","parameters":[],"src":"2880:2:77"},"returnParameters":{"id":10906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10905,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10913,"src":"2913:11:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":10904,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"2913:11:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"2912:13:77"},"scope":10990,"src":"2858:118:77","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":10932,"nodeType":"Block","src":"3112:76:77","statements":[{"expression":{"arguments":[{"id":10927,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10915,"src":"3156:8:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10928,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10917,"src":"3166:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10929,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10919,"src":"3175:5:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10924,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10913,"src":"3129:13:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$2502_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":10925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3129:15:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"id":10926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":2501,"src":"3129:26:77","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":10930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3129:52:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10923,"id":10931,"nodeType":"Return","src":"3122:59:77"}]},"id":10933,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","parameters":{"id":10920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10915,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":10933,"src":"3012:16:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10914,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3012:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10917,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":10933,"src":"3038:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10916,"name":"address","nodeType":"ElementaryTypeName","src":"3038:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10919,"mutability":"mutable","name":"where","nodeType":"VariableDeclaration","scope":10933,"src":"3063:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10918,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3002:80:77"},"returnParameters":{"id":10923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10922,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10933,"src":"3106:4:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10921,"name":"bool","nodeType":"ElementaryTypeName","src":"3106:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3105:6:77"},"scope":10990,"src":"2982:206:77","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[2258],"body":{"id":10950,"nodeType":"Block","src":"3846:85:77","statements":[{"expression":{"arguments":[{"arguments":[{"id":10945,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"3890:22:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10946,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10936,"src":"3914:8:77","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":10943,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3873:3:77","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":10944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3873:16:77","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":10947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3873:50:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10942,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3863:9:77","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":10948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3863:61:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":10941,"id":10949,"nodeType":"Return","src":"3856:68:77"}]},"documentation":{"id":10934,"nodeType":"StructuredDocumentation","src":"3194:570:77","text":" @notice Returns the action ID associated with calling a given function through this adaptor\n @dev As the contracts managed by this adaptor don't have action ID disambiguators, we use the adaptor's globally.\n This means that contracts with the same function selector will have a matching action ID:\n if granularity is required then permissions must not be granted globally in the Authorizer.\n @param selector - The 4 byte selector of the function to be called using `performAction`\n @return The associated action ID"},"functionSelector":"851c1bb3","id":10951,"implemented":true,"kind":"function","modifiers":[],"name":"getActionId","nodeType":"FunctionDefinition","overrides":{"id":10938,"nodeType":"OverrideSpecifier","overrides":[],"src":"3819:8:77"},"parameters":{"id":10937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10936,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":10951,"src":"3790:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10935,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3790:6:77","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3789:17:77"},"returnParameters":{"id":10941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10940,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10951,"src":"3837:7:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10939,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3837:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3836:9:77"},"scope":10990,"src":"3769:162:77","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[48],"body":{"id":10988,"nodeType":"Block","src":"4610:3477:77","statements":[{"assignments":[10965],"declarations":[{"constant":false,"id":10965,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":10988,"src":"6674:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10964,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6674:6:77","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":10966,"nodeType":"VariableDeclarationStatement","src":"6674:15:77"},{"AST":{"nodeType":"YulBlock","src":"7132:362:77","statements":[{"nodeType":"YulAssignment","src":"7455:29:77","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7480:3:77","type":"","value":"100"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7467:12:77"},"nodeType":"YulFunctionCall","src":"7467:17:77"},"variableNames":[{"name":"selector","nodeType":"YulIdentifier","src":"7455:8:77"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":10965,"isOffset":false,"isSlot":false,"src":"7455:8:77","valueSize":1}],"id":10967,"nodeType":"InlineAssembly","src":"7123:371:77"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":10971,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10965,"src":"7868:8:77","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":10970,"name":"getActionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10951,"src":"7856:11:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (bytes4) view returns (bytes32)"}},"id":10972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7856:21:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":10973,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7879:3:77","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7879:10:77","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":10975,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10954,"src":"7891:6:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10969,"name":"_canPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10933,"src":"7844:11:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view returns (bool)"}},"id":10976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7844:54:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":10977,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"7900:6:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":10978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SENDER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":2010,"src":"7900:25:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10968,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"7835:8:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":10979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7835:91:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10980,"nodeType":"ExpressionStatement","src":"7835:91:77"},{"expression":{"arguments":[{"id":10983,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10956,"src":"8064:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":10984,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8070:3:77","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"8070:9:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10981,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10954,"src":"8035:6:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionCallWithValue","nodeType":"MemberAccess","referencedDeclaration":5794,"src":"8035:28:77","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$","typeString":"function (address,bytes memory,uint256) returns (bytes memory)"}},"id":10986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8035:45:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":10963,"id":10987,"nodeType":"Return","src":"8028:52:77"}]},"documentation":{"id":10952,"nodeType":"StructuredDocumentation","src":"3937:502:77","text":" @notice Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\n This function should not be called directly as that will result in an unconditional revert: instead, use\n `AuthorizerAdaptorEntrypoint.performAction`.\n @param target - Address of the contract to be called\n @param data - Calldata to be sent to the target contract\n @return The bytes encoded return value from the performed function call"},"functionSelector":"4036176a","id":10989,"implemented":true,"kind":"function","modifiers":[{"id":10960,"modifierName":{"id":10959,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"4562:12:77","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4562:12:77"}],"name":"performAction","nodeType":"FunctionDefinition","overrides":{"id":10958,"nodeType":"OverrideSpecifier","overrides":[],"src":"4545:8:77"},"parameters":{"id":10957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10954,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":10989,"src":"4467:14:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10953,"name":"address","nodeType":"ElementaryTypeName","src":"4467:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10956,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":10989,"src":"4483:19:77","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":10955,"name":"bytes","nodeType":"ElementaryTypeName","src":"4483:5:77","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4466:37:77"},"returnParameters":{"id":10963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10962,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10989,"src":"4592:12:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10961,"name":"bytes","nodeType":"ElementaryTypeName","src":"4592:5:77","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4591:14:77"},"scope":10990,"src":"4444:3643:77","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":10991,"src":"2213:5876:77"}],"src":"688:7402:77"},"id":77},"contracts/admin/AuthorizerAdaptorEntrypoint.sol":{"ast":{"absolutePath":"contracts/admin/AuthorizerAdaptorEntrypoint.sol","exportedSymbols":{"AuthorizerAdaptorEntrypoint":[11187]},"id":11188,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10992,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:78"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","id":10993,"nodeType":"ImportDirective","scope":11188,"sourceUnit":63,"src":"713:98:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","id":10994,"nodeType":"ImportDirective","scope":11188,"sourceUnit":2503,"src":"812:70:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":10995,"nodeType":"ImportDirective","scope":11188,"sourceUnit":3052,"src":"883:65:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":10996,"nodeType":"ImportDirective","scope":11188,"sourceUnit":7188,"src":"950:85:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":10997,"nodeType":"ImportDirective","scope":11188,"sourceUnit":5851,"src":"1036:77:78","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10999,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"1587:28:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":11000,"nodeType":"InheritanceSpecifier","src":"1587:28:78"}],"contractDependencies":[49,62,2259],"contractKind":"contract","documentation":{"id":10998,"nodeType":"StructuredDocumentation","src":"1115:431:78","text":" @title Authorizer Adaptor Entrypoint\n @notice This contract exists as a fix for a critical bug in the `AuthorizerAdaptor` that could lead to escalation of\n privileges. The Entrypoint contract addresses this by working in combination with `TimelockAuthorizer` so that all\n Adaptor calls that are not made via the Entrypoint fail, while those that do happen through the Entrypoint check for\n permissions correctly."},"fullyImplemented":true,"id":11187,"linearizedBaseContracts":[11187,62,49,2259],"name":"AuthorizerAdaptorEntrypoint","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":11010,"name":"ActionPerformed","nodeType":"EventDefinition","parameters":{"id":11009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11002,"indexed":true,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":11010,"src":"1644:23:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11001,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1644:6:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":11004,"indexed":true,"mutability":"mutable","name":"caller","nodeType":"VariableDeclaration","scope":11010,"src":"1669:22:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11003,"name":"address","nodeType":"ElementaryTypeName","src":"1669:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11006,"indexed":true,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":11010,"src":"1693:22:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11005,"name":"address","nodeType":"ElementaryTypeName","src":"1693:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11008,"indexed":false,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":11010,"src":"1717:10:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11007,"name":"bytes","nodeType":"ElementaryTypeName","src":"1717:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1643:85:78"},"src":"1622:107:78"},{"id":11013,"libraryName":{"id":11011,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":5850,"src":"1741:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$5850","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1735:26:78","typeName":{"id":11012,"name":"address","nodeType":"ElementaryTypeName","src":"1753:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":false,"id":11015,"mutability":"immutable","name":"_adaptor","nodeType":"VariableDeclaration","scope":11187,"src":"1767:45:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":11014,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1767:18:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"private"},{"constant":false,"id":11017,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":11187,"src":"1818:31:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":11016,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1818:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"private"},{"body":{"id":11032,"nodeType":"Block","src":"1896:72:78","statements":[{"expression":{"id":11024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11022,"name":"_adaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11015,"src":"1906:8:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11023,"name":"adaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11019,"src":"1917:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"src":"1906:18:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":11025,"nodeType":"ExpressionStatement","src":"1906:18:78"},{"expression":{"id":11030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11026,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11017,"src":"1934:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11027,"name":"adaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11019,"src":"1943:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":11028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getVault","nodeType":"MemberAccess","referencedDeclaration":32,"src":"1943:16:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view external returns (contract IVault)"}},"id":11029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1943:18:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"src":"1934:27:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"id":11031,"nodeType":"ExpressionStatement","src":"1934:27:78"}]},"id":11033,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":11020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11019,"mutability":"mutable","name":"adaptor","nodeType":"VariableDeclaration","scope":11033,"src":"1868:26:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":11018,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1868:18:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"1867:28:78"},"returnParameters":{"id":11021,"nodeType":"ParameterList","parameters":[],"src":"1896:0:78"},"scope":11187,"src":"1856:112:78","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[32],"body":{"id":11041,"nodeType":"Block","src":"2032:30:78","statements":[{"expression":{"id":11039,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11017,"src":"2049:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"functionReturnParameters":11038,"id":11040,"nodeType":"Return","src":"2042:13:78"}]},"functionSelector":"8d928af8","id":11042,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","overrides":{"id":11035,"nodeType":"OverrideSpecifier","overrides":[],"src":"2006:8:78"},"parameters":{"id":11034,"nodeType":"ParameterList","parameters":[],"src":"1991:2:78"},"returnParameters":{"id":11038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11037,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11042,"src":"2024:6:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":11036,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"2024:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"2023:8:78"},"scope":11187,"src":"1974:88:78","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[38],"body":{"id":11053,"nodeType":"Block","src":"2136:50:78","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11048,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11042,"src":"2153:8:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view returns (contract IVault)"}},"id":11049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2153:10:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"id":11050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAuthorizer","nodeType":"MemberAccess","referencedDeclaration":2611,"src":"2153:24:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizer_$2502_$","typeString":"function () view external returns (contract IAuthorizer)"}},"id":11051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2153:26:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"functionReturnParameters":11047,"id":11052,"nodeType":"Return","src":"2146:33:78"}]},"functionSelector":"aaabadc5","id":11054,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","overrides":{"id":11044,"nodeType":"OverrideSpecifier","overrides":[],"src":"2105:8:78"},"parameters":{"id":11043,"nodeType":"ParameterList","parameters":[],"src":"2090:2:78"},"returnParameters":{"id":11047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11046,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11054,"src":"2123:11:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":11045,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"2123:11:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"2122:13:78"},"scope":11187,"src":"2068:118:78","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[61],"body":{"id":11062,"nodeType":"Block","src":"2274:32:78","statements":[{"expression":{"id":11060,"name":"_adaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11015,"src":"2291:8:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"functionReturnParameters":11059,"id":11061,"nodeType":"Return","src":"2284:15:78"}]},"functionSelector":"e758d36b","id":11063,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizerAdaptor","nodeType":"FunctionDefinition","overrides":{"id":11056,"nodeType":"OverrideSpecifier","overrides":[],"src":"2236:8:78"},"parameters":{"id":11055,"nodeType":"ParameterList","parameters":[],"src":"2221:2:78"},"returnParameters":{"id":11059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11058,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11063,"src":"2254:18:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":11057,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"2254:18:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"2253:20:78"},"scope":11187,"src":"2192:114:78","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":11082,"nodeType":"Block","src":"2439:76:78","statements":[{"expression":{"arguments":[{"id":11077,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11065,"src":"2483:8:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11078,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11067,"src":"2493:7:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11079,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11069,"src":"2502:5:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11074,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11054,"src":"2456:13:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$2502_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":11075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2456:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"id":11076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":2501,"src":"2456:26:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":11080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2456:52:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11073,"id":11081,"nodeType":"Return","src":"2449:59:78"}]},"functionSelector":"9be2a884","id":11083,"implemented":true,"kind":"function","modifiers":[],"name":"canPerform","nodeType":"FunctionDefinition","parameters":{"id":11070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11065,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":11083,"src":"2341:16:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11064,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2341:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11067,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":11083,"src":"2367:15:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11066,"name":"address","nodeType":"ElementaryTypeName","src":"2367:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11069,"mutability":"mutable","name":"where","nodeType":"VariableDeclaration","scope":11083,"src":"2392:13:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11068,"name":"address","nodeType":"ElementaryTypeName","src":"2392:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2331:80:78"},"returnParameters":{"id":11073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11072,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11083,"src":"2433:4:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11071,"name":"bool","nodeType":"ElementaryTypeName","src":"2433:4:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2432:6:78"},"scope":11187,"src":"2312:203:78","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2258],"body":{"id":11098,"nodeType":"Block","src":"3150:68:78","statements":[{"expression":{"arguments":[{"id":11095,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11086,"src":"3202:8:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11092,"name":"getAuthorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11063,"src":"3167:20:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizerAdaptor_$49_$","typeString":"function () view returns (contract IAuthorizerAdaptor)"}},"id":11093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3167:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":11094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getActionId","nodeType":"MemberAccess","referencedDeclaration":2258,"src":"3167:34:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (bytes4) view external returns (bytes32)"}},"id":11096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3167:44:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":11091,"id":11097,"nodeType":"Return","src":"3160:51:78"}]},"documentation":{"id":11084,"nodeType":"StructuredDocumentation","src":"2521:547:78","text":" @notice Returns the action ID associated with calling a given function through the `AuthorizerAdaptor`. Note that\n even though the Adaptor's action IDs are not actually used by it (since the Authorizer ignores those values - see\n `TimelockAuthorizer.canPerform`), this contract reuses those IDs to simplify migrations and tooling.\n See `AuthorizerAdaptor.getActionId` for more information on how the action IDs are computed, and how functions\n with equal selectors are assigned the same action ID."},"functionSelector":"851c1bb3","id":11099,"implemented":true,"kind":"function","modifiers":[],"name":"getActionId","nodeType":"FunctionDefinition","overrides":{"id":11088,"nodeType":"OverrideSpecifier","overrides":[],"src":"3123:8:78"},"parameters":{"id":11087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11086,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":11099,"src":"3094:15:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11085,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3094:6:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3093:17:78"},"returnParameters":{"id":11091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11090,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11099,"src":"3141:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11089,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3141:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3140:9:78"},"scope":11187,"src":"3073:145:78","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[48],"body":{"id":11185,"nodeType":"Block","src":"3333:1213:78","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11110,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"3696:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":11111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3696:11:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"34","id":11112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3711:1:78","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"3696:16:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":11114,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"3714:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":11115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INSUFFICIENT_DATA","nodeType":"MemberAccess","referencedDeclaration":1791,"src":"3714:24:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11109,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"3687:8:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":11116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3687:52:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11117,"nodeType":"ExpressionStatement","src":"3687:52:78"},{"assignments":[11119],"declarations":[{"constant":false,"id":11119,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":11185,"src":"3749:15:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11118,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3749:6:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":11153,"initialValue":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11120,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"3767:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":11122,"indexExpression":{"hexValue":"30","id":11121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3772:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3767:7:78","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":11125,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"3785:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":11127,"indexExpression":{"hexValue":"31","id":11126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3790:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3785:7:78","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":11124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3778:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":11123,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3778:6:78","typeDescriptions":{}}},"id":11128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3778:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":11129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3797:1:78","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"3778:20:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":11131,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3777:22:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3767:32:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":11135,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"3810:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":11137,"indexExpression":{"hexValue":"32","id":11136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3815:1:78","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3810:7:78","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":11134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3803:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":11133,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3803:6:78","typeDescriptions":{}}},"id":11138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3803:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":11139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3822:2:78","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"3803:21:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":11141,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3802:23:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3767:58:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":11145,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"3836:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":11147,"indexExpression":{"hexValue":"33","id":11146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3841:1:78","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3836:7:78","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":11144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3829:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":11143,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3829:6:78","typeDescriptions":{}}},"id":11148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3829:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3234","id":11149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3848:2:78","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},"src":"3829:21:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":11151,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3828:23:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3767:84:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"3749:102:78"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":11157,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11119,"src":"3894:8:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":11156,"name":"getActionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11099,"src":"3882:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (bytes4) view returns (bytes32)"}},"id":11158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3882:21:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":11159,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3905:3:78","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3905:10:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11161,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11101,"src":"3917:6:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":11155,"name":"canPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11083,"src":"3871:10:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view returns (bool)"}},"id":11162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3871:53:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":11163,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"3926:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":11164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SENDER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":2010,"src":"3926:25:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11154,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"3862:8:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":11165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3862:90:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11166,"nodeType":"ExpressionStatement","src":"3862:90:78"},{"eventCall":{"arguments":[{"id":11168,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11119,"src":"3984:8:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":11169,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3994:3:78","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3994:10:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11171,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11101,"src":"4006:6:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11172,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"4014:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":11167,"name":"ActionPerformed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11010,"src":"3968:15:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes4_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes4,address,address,bytes memory)"}},"id":11173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3968:51:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11174,"nodeType":"EmitStatement","src":"3963:56:78"},{"expression":{"arguments":[{"id":11181,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11101,"src":"4526:6:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11182,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"4534:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11175,"name":"getAuthorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11063,"src":"4469:20:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizerAdaptor_$49_$","typeString":"function () view returns (contract IAuthorizerAdaptor)"}},"id":11176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4469:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":11177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"performAction","nodeType":"MemberAccess","referencedDeclaration":48,"src":"4469:36:78","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":11180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":11178,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4514:3:78","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"4514:9:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4469:56:78","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$value","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":11183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4469:70:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11108,"id":11184,"nodeType":"Return","src":"4462:77:78"}]},"functionSelector":"4036176a","id":11186,"implemented":true,"kind":"function","modifiers":[],"name":"performAction","nodeType":"FunctionDefinition","overrides":{"id":11105,"nodeType":"OverrideSpecifier","overrides":[],"src":"3301:8:78"},"parameters":{"id":11104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11101,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":11186,"src":"3247:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11100,"name":"address","nodeType":"ElementaryTypeName","src":"3247:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11103,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":11186,"src":"3263:19:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11102,"name":"bytes","nodeType":"ElementaryTypeName","src":"3263:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3246:37:78"},"returnParameters":{"id":11108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11107,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11186,"src":"3319:12:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11106,"name":"bytes","nodeType":"ElementaryTypeName","src":"3319:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3318:14:78"},"scope":11187,"src":"3224:1322:78","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":11188,"src":"1547:3001:78"}],"src":"688:3861:78"},"id":78},"contracts/admin/ChildChainGaugeTokenAdder.sol":{"ast":{"absolutePath":"contracts/admin/ChildChainGaugeTokenAdder.sol","exportedSymbols":{"ChildChainGaugeTokenAdder":[11388]},"id":11389,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11189,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:79"},{"id":11190,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:79"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol","id":11191,"nodeType":"ImportDirective","scope":11389,"sourceUnit":435,"src":"747:102:79","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","id":11192,"nodeType":"ImportDirective","scope":11389,"sourceUnit":63,"src":"850:98:79","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":11193,"nodeType":"ImportDirective","scope":11389,"sourceUnit":3698,"src":"950:88:79","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11195,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1270:23:79","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":11196,"nodeType":"InheritanceSpecifier","src":"1270:23:79"}],"contractDependencies":[2259,3128,3697],"contractKind":"contract","documentation":{"id":11194,"nodeType":"StructuredDocumentation","src":"1040:191:79","text":" @title ChildChainGaugeTokenAdder\n @notice Allows atomically adding a new reward token to a RewardsOnlyGauge while ensuring that it remains in sync\n with its ChildChainStreamer."},"fullyImplemented":true,"id":11388,"linearizedBaseContracts":[11388,3697,3128,2259],"name":"ChildChainGaugeTokenAdder","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":11206,"mutability":"constant","name":"_CLAIM_SIG","nodeType":"VariableDeclaration","scope":11388,"src":"1498:75:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11197,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1498:7:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"6765745f7265776172642829","id":11199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1546:14:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_1afe22a60e4e4b5fa7561dbfb52f5a766eba86c52b84c4946364e82fa9056a57","typeString":"literal_string \"get_reward()\""},"value":"get_reward()"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1afe22a60e4e4b5fa7561dbfb52f5a766eba86c52b84c4946364e82fa9056a57","typeString":"literal_string \"get_reward()\""}],"id":11198,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1536:9:79","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1536:25:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"id":11203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3238","id":11201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1566:2:79","typeDescriptions":{"typeIdentifier":"t_rational_28_by_1","typeString":"int_const 28"},"value":"28"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":11202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1571:1:79","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1566:6:79","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"}}],"id":11204,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1565:8:79","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"}},"src":"1536:37:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":11209,"mutability":"constant","name":"_MAX_TOKENS","nodeType":"VariableDeclaration","scope":11388,"src":"1579:40:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11207,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38","id":11208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1618:1:79","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"private"},{"constant":true,"id":11212,"mutability":"constant","name":"_REWARD_DURATION","nodeType":"VariableDeclaration","scope":11388,"src":"1625:51:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11210,"name":"uint256","nodeType":"ElementaryTypeName","src":"1625:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":11211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1669:7:79","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"visibility":"private"},{"constant":false,"id":11214,"mutability":"immutable","name":"_authorizerAdaptorEntrypoint","nodeType":"VariableDeclaration","scope":11388,"src":"1683:75:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":11213,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"1683:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"private"},{"constant":false,"id":11216,"mutability":"immutable","name":"_gaugeFactory","nodeType":"VariableDeclaration","scope":11388,"src":"1764:64:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"},"typeName":{"id":11215,"name":"IChildChainLiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":434,"src":"1764:32:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"visibility":"private"},{"body":{"id":11236,"nodeType":"Block","src":"2028:113:79","statements":[{"expression":{"id":11230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11228,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11214,"src":"2038:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11229,"name":"authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11220,"src":"2069:27:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"src":"2038:58:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":11231,"nodeType":"ExpressionStatement","src":"2038:58:79"},{"expression":{"id":11234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11232,"name":"_gaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11216,"src":"2106:13:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11233,"name":"gaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11218,"src":"2122:12:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"src":"2106:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"id":11235,"nodeType":"ExpressionStatement","src":"2106:28:79"}]},"id":11237,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11223,"name":"authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11220,"src":"1984:27:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":11224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getVault","nodeType":"MemberAccess","referencedDeclaration":32,"src":"1984:36:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view external returns (contract IVault)"}},"id":11225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1984:38:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":11226,"modifierName":{"id":11222,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1960:23:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1960:63:79"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":11221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11218,"mutability":"mutable","name":"gaugeFactory","nodeType":"VariableDeclaration","scope":11237,"src":"1847:45:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"},"typeName":{"id":11217,"name":"IChildChainLiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":434,"src":"1847:32:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"visibility":"internal"},{"constant":false,"id":11220,"mutability":"mutable","name":"authorizerAdaptorEntrypoint","nodeType":"VariableDeclaration","scope":11237,"src":"1894:56:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":11219,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"1894:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"internal"}],"src":"1846:105:79"},"returnParameters":{"id":11227,"nodeType":"ParameterList","parameters":[],"src":"2028:0:79"},"scope":11388,"src":"1835:306:79","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11245,"nodeType":"Block","src":"2340:52:79","statements":[{"expression":{"id":11243,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11214,"src":"2357:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"functionReturnParameters":11242,"id":11244,"nodeType":"Return","src":"2350:35:79"}]},"documentation":{"id":11238,"nodeType":"StructuredDocumentation","src":"2147:93:79","text":" @notice Returns the address of the Authorizer adaptor entrypoint contract."},"functionSelector":"7afcf0e6","id":11246,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizerAdaptorEntrypoint","nodeType":"FunctionDefinition","parameters":{"id":11239,"nodeType":"ParameterList","parameters":[],"src":"2284:2:79"},"returnParameters":{"id":11242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11241,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11246,"src":"2310:28:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":11240,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"2310:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"internal"}],"src":"2309:30:79"},"scope":11388,"src":"2245:147:79","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":11328,"nodeType":"Block","src":"2818:1083:79","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":11263,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11249,"src":"2877:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}],"id":11262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2869:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11261,"name":"address","nodeType":"ElementaryTypeName","src":"2869:7:79","typeDescriptions":{}}},"id":11264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2869:14:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11259,"name":"_gaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11216,"src":"2836:13:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"id":11260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isGaugeFromFactory","nodeType":"MemberAccess","referencedDeclaration":940,"src":"2836:32:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":11265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2836:48:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206761756765","id":11266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2886:15:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f01a4186ff9a4f4fec3be353497709ea5e4152dad176712bbaa55bd57735b49","typeString":"literal_string \"Invalid gauge\""},"value":"Invalid gauge"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f01a4186ff9a4f4fec3be353497709ea5e4152dad176712bbaa55bd57735b49","typeString":"literal_string \"Invalid gauge\""}],"id":11258,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2828:7:79","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2828:74:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11268,"nodeType":"ExpressionStatement","src":"2828:74:79"},{"assignments":[11270],"declarations":[{"constant":false,"id":11270,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":11328,"src":"2912:28:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":11269,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"2912:19:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"internal"}],"id":11280,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":11276,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11249,"src":"3002:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}],"id":11275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2994:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11274,"name":"address","nodeType":"ElementaryTypeName","src":"2994:7:79","typeDescriptions":{}}},"id":11277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2994:14:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11272,"name":"_gaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11216,"src":"2963:13:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"id":11273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getGaugeStreamer","nodeType":"MemberAccess","referencedDeclaration":409,"src":"2963:30:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_address_$","typeString":"function (address) view external returns (address)"}},"id":11278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2963:46:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11271,"name":"IChildChainStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"2943:19:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChildChainStreamer_$462_$","typeString":"type(contract IChildChainStreamer)"}},"id":11279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2943:67:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"nodeType":"VariableDeclarationStatement","src":"2912:98:79"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"id":11286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11282,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"3028:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11283,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11249,"src":"3040:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":11284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reward_contract","nodeType":"MemberAccess","referencedDeclaration":1188,"src":"3040:21:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IChildChainStreamer_$462_$","typeString":"function () view external returns (contract IChildChainStreamer)"}},"id":11285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3040:23:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"src":"3028:35:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f74206f726967696e616c2067617567652073747265616d6572","id":11287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3065:29:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_009a544bc9ce778256430195eb1ba0b1d0d143ef303f6deb92a23521ff31185c","typeString":"literal_string \"Not original gauge streamer\""},"value":"Not original gauge streamer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_009a544bc9ce778256430195eb1ba0b1d0d143ef303f6deb92a23521ff31185c","typeString":"literal_string \"Not original gauge streamer\""}],"id":11281,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3020:7:79","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3020:75:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11289,"nodeType":"ExpressionStatement","src":"3020:75:79"},{"expression":{"arguments":[{"id":11291,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"3231:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},{"id":11292,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11251,"src":"3241:11:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":11293,"name":"distributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11253,"src":"3254:11:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"}],"id":11290,"name":"_addTokenToStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11357,"src":"3211:19:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IChildChainStreamer_$462_$_t_contract$_IERC20_$2447_$_t_address_$returns$__$","typeString":"function (contract IChildChainStreamer,contract IERC20,address)"}},"id":11294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3211:55:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11295,"nodeType":"ExpressionStatement","src":"3211:55:79"},{"assignments":[11300],"declarations":[{"constant":false,"id":11300,"mutability":"mutable","name":"rewardTokens","nodeType":"VariableDeclaration","scope":11328,"src":"3613:39:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_memory_ptr","typeString":"contract IERC20[8]"},"typeName":{"baseType":{"id":11298,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3613:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":11299,"length":{"id":11297,"name":"_MAX_TOKENS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11209,"src":"3620:11:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"ArrayTypeName","src":"3613:19:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_storage_ptr","typeString":"contract IERC20[8]"}},"visibility":"internal"}],"id":11301,"nodeType":"VariableDeclarationStatement","src":"3613:39:79"},{"body":{"id":11320,"nodeType":"Block","src":"3700:68:79","statements":[{"expression":{"id":11318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11311,"name":"rewardTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11300,"src":"3714:12:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_memory_ptr","typeString":"contract IERC20[8] memory"}},"id":11313,"indexExpression":{"id":11312,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11303,"src":"3727:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3714:15:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11316,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11303,"src":"3755:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11314,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"3732:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"id":11315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reward_tokens","nodeType":"MemberAccess","referencedDeclaration":452,"src":"3732:22:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20_$2447_$","typeString":"function (uint256) view external returns (contract IERC20)"}},"id":11317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3732:25:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"3714:43:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":11319,"nodeType":"ExpressionStatement","src":"3714:43:79"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11305,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11303,"src":"3678:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11306,"name":"_MAX_TOKENS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11209,"src":"3682:11:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3678:15:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11321,"initializationExpression":{"assignments":[11303],"declarations":[{"constant":false,"id":11303,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11321,"src":"3667:9:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11302,"name":"uint256","nodeType":"ElementaryTypeName","src":"3667:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11304,"nodeType":"VariableDeclarationStatement","src":"3667:9:79"},"loopExpression":{"expression":{"id":11309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3695:3:79","subExpression":{"id":11308,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11303,"src":"3697:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11310,"nodeType":"ExpressionStatement","src":"3695:3:79"},"nodeType":"ForStatement","src":"3662:106:79"},{"expression":{"arguments":[{"id":11323,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11249,"src":"3864:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},{"id":11324,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"3871:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},{"id":11325,"name":"rewardTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11300,"src":"3881:12:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_memory_ptr","typeString":"contract IERC20[8] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_memory_ptr","typeString":"contract IERC20[8] memory"}],"id":11322,"name":"_updateGaugeRewardTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11387,"src":"3839:24:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IRewardsOnlyGauge_$1205_$_t_contract$_IChildChainStreamer_$462_$_t_array$_t_contract$_IERC20_$2447_$8_memory_ptr_$returns$__$","typeString":"function (contract IRewardsOnlyGauge,contract IChildChainStreamer,contract IERC20[8] memory)"}},"id":11326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3839:55:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11327,"nodeType":"ExpressionStatement","src":"3839:55:79"}]},"documentation":{"id":11247,"nodeType":"StructuredDocumentation","src":"2398:272:79","text":" @notice Adds a new token to a RewardsOnlyGauge.\n @dev This is a permissioned function.\n @param gauge - The gauge we are modifying\n @param rewardToken - The token to be added.\n @param distributor - The distributor for the rewards."},"functionSelector":"d411ee4d","id":11329,"implemented":true,"kind":"function","modifiers":[{"id":11256,"modifierName":{"id":11255,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"2805:12:79","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2805:12:79"}],"name":"addTokenToGauge","nodeType":"FunctionDefinition","parameters":{"id":11254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11249,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11329,"src":"2709:23:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},"typeName":{"id":11248,"name":"IRewardsOnlyGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1205,"src":"2709:17:79","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"visibility":"internal"},{"constant":false,"id":11251,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":11329,"src":"2742:18:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11250,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2742:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11253,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":11329,"src":"2770:19:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11252,"name":"address","nodeType":"ElementaryTypeName","src":"2770:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2699:96:79"},"returnParameters":{"id":11257,"nodeType":"ParameterList","parameters":[],"src":"2818:0:79"},"scope":11388,"src":"2675:1226:79","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11356,"nodeType":"Block","src":"4045:221:79","statements":[{"expression":{"arguments":[{"arguments":[{"id":11343,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"4119:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}],"id":11342,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4111:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11341,"name":"address","nodeType":"ElementaryTypeName","src":"4111:7:79","typeDescriptions":{}}},"id":11344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4111:17:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":11347,"name":"IChildChainStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"4165:19:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChildChainStreamer_$462_$","typeString":"type(contract IChildChainStreamer)"}},"id":11348,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"add_reward","nodeType":"MemberAccess","referencedDeclaration":461,"src":"4165:30:79","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$","typeString":"function IChildChainStreamer.add_reward(contract IERC20,address,uint256)"}},"id":11349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"4165:39:79","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":11350,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11333,"src":"4206:11:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":11351,"name":"distributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11335,"src":"4219:11:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11352,"name":"_REWARD_DURATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11212,"src":"4232:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11345,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4142:3:79","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4142:22:79","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":11353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4142:107:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11338,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11214,"src":"4055:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":11340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"performAction","nodeType":"MemberAccess","referencedDeclaration":48,"src":"4055:42:79","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":11354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4055:204:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11355,"nodeType":"ExpressionStatement","src":"4055:204:79"}]},"id":11357,"implemented":true,"kind":"function","modifiers":[],"name":"_addTokenToStreamer","nodeType":"FunctionDefinition","parameters":{"id":11336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11331,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":11357,"src":"3945:28:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":11330,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"3945:19:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"internal"},{"constant":false,"id":11333,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":11357,"src":"3983:18:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11332,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3983:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11335,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":11357,"src":"4011:19:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11334,"name":"address","nodeType":"ElementaryTypeName","src":"4011:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3935:101:79"},"returnParameters":{"id":11337,"nodeType":"ParameterList","parameters":[],"src":"4045:0:79"},"scope":11388,"src":"3907:359:79","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":11386,"nodeType":"Block","src":"4440:209:79","statements":[{"expression":{"arguments":[{"arguments":[{"id":11373,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11359,"src":"4514:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}],"id":11372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4506:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11371,"name":"address","nodeType":"ElementaryTypeName","src":"4506:7:79","typeDescriptions":{}}},"id":11374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4506:14:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":11377,"name":"IRewardsOnlyGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"4557:17:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRewardsOnlyGauge_$1205_$","typeString":"type(contract IRewardsOnlyGauge)"}},"id":11378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"set_rewards","nodeType":"MemberAccess","referencedDeclaration":1199,"src":"4557:29:79","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_bytes32_$_t_array$_t_address_$8_calldata_ptr_$returns$__$","typeString":"function IRewardsOnlyGauge.set_rewards(address,bytes32,address[8] calldata)"}},"id":11379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"4557:38:79","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":11380,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11361,"src":"4597:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},{"id":11381,"name":"_CLAIM_SIG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11206,"src":"4607:10:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11382,"name":"rewardTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11365,"src":"4619:12:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_memory_ptr","typeString":"contract IERC20[8] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_memory_ptr","typeString":"contract IERC20[8] memory"}],"expression":{"id":11375,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4534:3:79","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4534:22:79","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":11383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4534:98:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11368,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11214,"src":"4450:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":11370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"performAction","nodeType":"MemberAccess","referencedDeclaration":48,"src":"4450:42:79","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":11384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4450:192:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11385,"nodeType":"ExpressionStatement","src":"4450:192:79"}]},"id":11387,"implemented":true,"kind":"function","modifiers":[],"name":"_updateGaugeRewardTokens","nodeType":"FunctionDefinition","parameters":{"id":11366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11359,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11387,"src":"4315:23:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},"typeName":{"id":11358,"name":"IRewardsOnlyGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1205,"src":"4315:17:79","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"visibility":"internal"},{"constant":false,"id":11361,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":11387,"src":"4348:28:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":11360,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"4348:19:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"internal"},{"constant":false,"id":11365,"mutability":"mutable","name":"rewardTokens","nodeType":"VariableDeclaration","scope":11387,"src":"4386:39:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_memory_ptr","typeString":"contract IERC20[8]"},"typeName":{"baseType":{"id":11362,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"4386:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":11364,"length":{"id":11363,"name":"_MAX_TOKENS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11209,"src":"4393:11:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"ArrayTypeName","src":"4386:19:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_storage_ptr","typeString":"contract IERC20[8]"}},"visibility":"internal"}],"src":"4305:126:79"},"returnParameters":{"id":11367,"nodeType":"ParameterList","parameters":[],"src":"4440:0:79"},"scope":11388,"src":"4272:377:79","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":11389,"src":"1232:3419:79"}],"src":"688:3964:79"},"id":79},"contracts/admin/DistributionScheduler.sol":{"ast":{"absolutePath":"contracts/admin/DistributionScheduler.sol","exportedSymbols":{"DistributionScheduler":[11934]},"id":11935,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11390,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:80"},{"id":11391,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:80"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","id":11392,"nodeType":"ImportDirective","scope":11935,"sourceUnit":1164,"src":"747:93:80","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":11393,"nodeType":"ImportDirective","scope":11935,"sourceUnit":7342,"src":"842:79:80","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":11394,"nodeType":"StructuredDocumentation","src":"960:244:80","text":" @title DistributionScheduler\n @notice Scheduler for setting up permissionless distributions of liquidity gauge reward tokens.\n @dev Any address may send tokens to the DistributionSchedule to be distributed among gauge depositors."},"fullyImplemented":true,"id":11934,"linearizedBaseContracts":[11934],"name":"DistributionScheduler","nodeType":"ContractDefinition","nodes":[{"id":11397,"libraryName":{"id":11395,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"1248:9:80","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1242:27:80","typeName":{"id":11396,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1262:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":true,"id":11400,"mutability":"constant","name":"_MAX_REWARDS","nodeType":"VariableDeclaration","scope":11934,"src":"1275:41:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11398,"name":"uint256","nodeType":"ElementaryTypeName","src":"1275:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38","id":11399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:1:80","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"private"},{"constant":true,"id":11403,"mutability":"constant","name":"_HEAD","nodeType":"VariableDeclaration","scope":11934,"src":"1442:33:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11401,"name":"uint32","nodeType":"ElementaryTypeName","src":"1442:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"30","id":11402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1474:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":true,"id":11406,"mutability":"constant","name":"_NULL","nodeType":"VariableDeclaration","scope":11934,"src":"1481:33:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11404,"name":"uint32","nodeType":"ElementaryTypeName","src":"1481:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"30","id":11405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1513:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":false,"id":11412,"mutability":"mutable","name":"_rewardsLists","nodeType":"VariableDeclaration","scope":11934,"src":"1585:71:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$","typeString":"mapping(bytes32 => mapping(uint32 => struct DistributionScheduler.RewardNode))"},"typeName":{"id":11411,"keyType":{"id":11407,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1593:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1585:49:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$","typeString":"mapping(bytes32 => mapping(uint32 => struct DistributionScheduler.RewardNode))"},"valueType":{"id":11410,"keyType":{"id":11408,"name":"uint32","nodeType":"ElementaryTypeName","src":"1612:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"1604:29:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"valueType":{"id":11409,"name":"RewardNode","nodeType":"UserDefinedTypeName","referencedDeclaration":11417,"src":"1622:10:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage_ptr","typeString":"struct DistributionScheduler.RewardNode"}}}},"visibility":"private"},{"canonicalName":"DistributionScheduler.RewardNode","id":11417,"members":[{"constant":false,"id":11414,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11417,"src":"1691:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":11413,"name":"uint224","nodeType":"ElementaryTypeName","src":"1691:7:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"},{"constant":false,"id":11416,"mutability":"mutable","name":"nextTimestamp","nodeType":"VariableDeclaration","scope":11417,"src":"1715:20:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11415,"name":"uint32","nodeType":"ElementaryTypeName","src":"1715:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"name":"RewardNode","nodeType":"StructDefinition","scope":11934,"src":"1663:79:80","visibility":"public"},{"body":{"id":11441,"nodeType":"Block","src":"2521:89:80","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":11429,"name":"_rewardsLists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11412,"src":"2538:13:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$","typeString":"mapping(bytes32 => mapping(uint32 => struct DistributionScheduler.RewardNode storage ref))"}},"id":11434,"indexExpression":{"arguments":[{"id":11431,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11420,"src":"2570:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},{"id":11432,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11422,"src":"2577:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":11430,"name":"_getRewardsListId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11745,"src":"2552:17:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IRewardTokenDistributor_$1163_$_t_contract$_IERC20_$2447_$returns$_t_bytes32_$","typeString":"function (contract IRewardTokenDistributor,contract IERC20) pure returns (bytes32)"}},"id":11433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2552:31:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2538:46:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11439,"indexExpression":{"arguments":[{"id":11437,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11424,"src":"2592:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2585:6:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":11435,"name":"uint32","nodeType":"ElementaryTypeName","src":"2585:6:80","typeDescriptions":{}}},"id":11438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2585:17:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2538:65:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"functionReturnParameters":11428,"id":11440,"nodeType":"Return","src":"2531:72:80"}]},"documentation":{"id":11418,"nodeType":"StructuredDocumentation","src":"1748:609:80","text":" @notice Returns information on the reward paid out to `gauge` in `token` over the week starting at `timestamp`\n @param gauge - The gauge which is to distribute the reward token.\n @param token - The token which is to be distributed among gauge depositors.\n @param timestamp - The timestamp corresponding to the beginning of the week being queried.\n @return - the amount of `token` which is to be distributed over the week starting at `timestamp`.\n - the timestamp of the next scheduled distribution of `token` to `gauge`. Zero if no distribution exists."},"functionSelector":"80723ab3","id":11442,"implemented":true,"kind":"function","modifiers":[],"name":"getRewardNode","nodeType":"FunctionDefinition","parameters":{"id":11425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11420,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11442,"src":"2394:29:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},"typeName":{"id":11419,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"2394:23:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"visibility":"internal"},{"constant":false,"id":11422,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":11442,"src":"2433:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11421,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2433:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11424,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":11442,"src":"2455:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11423,"name":"uint256","nodeType":"ElementaryTypeName","src":"2455:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2384:94:80"},"returnParameters":{"id":11428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11427,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11442,"src":"2502:17:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_memory_ptr","typeString":"struct DistributionScheduler.RewardNode"},"typeName":{"id":11426,"name":"RewardNode","nodeType":"UserDefinedTypeName","referencedDeclaration":11417,"src":"2502:10:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage_ptr","typeString":"struct DistributionScheduler.RewardNode"}},"visibility":"internal"}],"src":"2501:19:80"},"scope":11934,"src":"2362:248:80","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":11459,"nodeType":"Block","src":"3008:74:80","statements":[{"expression":{"arguments":[{"id":11453,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11445,"src":"3045:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},{"id":11454,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11447,"src":"3052:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"expression":{"id":11455,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3059:5:80","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"3059:15:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11452,"name":"getPendingRewardsAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11493,"src":"3025:19:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IRewardTokenDistributor_$1163_$_t_contract$_IERC20_$2447_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IRewardTokenDistributor,contract IERC20,uint256) view returns (uint256)"}},"id":11457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3025:50:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11451,"id":11458,"nodeType":"Return","src":"3018:57:80"}]},"documentation":{"id":11443,"nodeType":"StructuredDocumentation","src":"2616:285:80","text":" @notice Returns the amount of `token` which is ready to be distributed by `gauge` as of the current timestamp.\n @param gauge - The gauge which is to distribute the reward token.\n @param token - The token which is to be distributed among gauge depositors."},"functionSelector":"7a27db57","id":11460,"implemented":true,"kind":"function","modifiers":[],"name":"getPendingRewards","nodeType":"FunctionDefinition","parameters":{"id":11448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11445,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11460,"src":"2933:29:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},"typeName":{"id":11444,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"2933:23:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"visibility":"internal"},{"constant":false,"id":11447,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":11460,"src":"2964:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11446,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2964:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2932:45:80"},"returnParameters":{"id":11451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11450,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11460,"src":"2999:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11449,"name":"uint256","nodeType":"ElementaryTypeName","src":"2999:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2998:9:80"},"scope":11934,"src":"2906:176:80","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":11492,"nodeType":"Block","src":"3597:212:80","statements":[{"assignments":[11475],"declarations":[{"constant":false,"id":11475,"mutability":"mutable","name":"rewardsList","nodeType":"VariableDeclaration","scope":11492,"src":"3607:49:80","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"typeName":{"id":11474,"keyType":{"id":11472,"name":"uint32","nodeType":"ElementaryTypeName","src":"3615:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"3607:29:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"valueType":{"id":11473,"name":"RewardNode","nodeType":"UserDefinedTypeName","referencedDeclaration":11417,"src":"3625:10:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage_ptr","typeString":"struct DistributionScheduler.RewardNode"}}},"visibility":"internal"}],"id":11482,"initialValue":{"baseExpression":{"id":11476,"name":"_rewardsLists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11412,"src":"3659:13:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$","typeString":"mapping(bytes32 => mapping(uint32 => struct DistributionScheduler.RewardNode storage ref))"}},"id":11481,"indexExpression":{"arguments":[{"id":11478,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11463,"src":"3691:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},{"id":11479,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11465,"src":"3698:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":11477,"name":"_getRewardsListId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11745,"src":"3673:17:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IRewardTokenDistributor_$1163_$_t_contract$_IERC20_$2447_$returns$_t_bytes32_$","typeString":"function (contract IRewardTokenDistributor,contract IERC20) pure returns (bytes32)"}},"id":11480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3673:31:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3659:46:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"nodeType":"VariableDeclarationStatement","src":"3607:98:80"},{"assignments":[null,11484],"declarations":[null,{"constant":false,"id":11484,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11492,"src":"3719:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11483,"name":"uint256","nodeType":"ElementaryTypeName","src":"3719:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11489,"initialValue":{"arguments":[{"id":11486,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11475,"src":"3756:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},{"id":11487,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11467,"src":"3769:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11485,"name":"_getPendingRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11797,"src":"3737:18:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$_t_uint256_$returns$_t_uint32_$_t_uint256_$","typeString":"function (mapping(uint32 => struct DistributionScheduler.RewardNode storage ref),uint256) view returns (uint32,uint256)"}},"id":11488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3737:42:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint256_$","typeString":"tuple(uint32,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3716:63:80"},{"expression":{"id":11490,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11484,"src":"3796:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11471,"id":11491,"nodeType":"Return","src":"3789:13:80"}]},"documentation":{"id":11461,"nodeType":"StructuredDocumentation","src":"3088:351:80","text":" @notice Returns the amount of `token` which is ready to be distributed by `gauge` as of a specified timestamp.\n @param gauge - The gauge which is to distribute the reward token.\n @param token - The token which is to be distributed among gauge depositors.\n @param timestamp - The future timestamp in which to query."},"functionSelector":"e2962564","id":11493,"implemented":true,"kind":"function","modifiers":[],"name":"getPendingRewardsAt","nodeType":"FunctionDefinition","parameters":{"id":11468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11463,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11493,"src":"3482:29:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},"typeName":{"id":11462,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"3482:23:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"visibility":"internal"},{"constant":false,"id":11465,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":11493,"src":"3521:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11464,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3521:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11467,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":11493,"src":"3543:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11466,"name":"uint256","nodeType":"ElementaryTypeName","src":"3543:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3472:94:80"},"returnParameters":{"id":11471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11470,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11493,"src":"3588:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11469,"name":"uint256","nodeType":"ElementaryTypeName","src":"3588:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3587:9:80"},"scope":11934,"src":"3444:365:80","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":11618,"nodeType":"Block","src":"4659:1324:80","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11506,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11500,"src":"4677:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4686:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4677:10:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d7573742070726f76696465206e6f6e2d7a65726f206e756d626572206f6620746f6b656e73","id":11509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4689:40:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_62c5a219a01fd6fd6601c7927bc8316bb95af19b9dbffc136467a03aab8f6420","typeString":"literal_string \"Must provide non-zero number of tokens\""},"value":"Must provide non-zero number of tokens"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_62c5a219a01fd6fd6601c7927bc8316bb95af19b9dbffc136467a03aab8f6420","typeString":"literal_string \"Must provide non-zero number of tokens\""}],"id":11505,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4669:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4669:61:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11511,"nodeType":"ExpressionStatement","src":"4669:61:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11513,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11500,"src":"4817:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":11516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4832:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":11515,"name":"uint224","nodeType":"ElementaryTypeName","src":"4832:7:80","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":11514,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4827:4:80","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4827:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":11518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"4827:17:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"4817:27:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52657761726420616d6f756e74206f766572666c6f77","id":11520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4846:24:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_5391fbd5d22ad37959ecf087392cb1f1bf4a2e987fe5a2e75904267b58a35e32","typeString":"literal_string \"Reward amount overflow\""},"value":"Reward amount overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5391fbd5d22ad37959ecf087392cb1f1bf4a2e987fe5a2e75904267b58a35e32","typeString":"literal_string \"Reward amount overflow\""}],"id":11512,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4809:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4809:62:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11522,"nodeType":"ExpressionStatement","src":"4809:62:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11524,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"4889:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":11527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4907:6:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":11526,"name":"uint32","nodeType":"ElementaryTypeName","src":"4907:6:80","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":11525,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4902:4:80","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4902:12:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":11529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"4902:16:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4889:29:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5265776172642074696d657374616d70206f766572666c6f77","id":11531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4920:27:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_6c0a24dc44840b730ecd436277ffffb5dfc86cd63b9062eaecde2bbcfe839e41","typeString":"literal_string \"Reward timestamp overflow\""},"value":"Reward timestamp overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6c0a24dc44840b730ecd436277ffffb5dfc86cd63b9062eaecde2bbcfe839e41","typeString":"literal_string \"Reward timestamp overflow\""}],"id":11523,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4881:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4881:67:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11533,"nodeType":"ExpressionStatement","src":"4881:67:80"},{"assignments":[11535],"declarations":[{"constant":false,"id":11535,"mutability":"mutable","name":"rewardDistributor","nodeType":"VariableDeclaration","scope":11618,"src":"5050:25:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11534,"name":"address","nodeType":"ElementaryTypeName","src":"5050:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11541,"initialValue":{"expression":{"arguments":[{"id":11538,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11498,"src":"5096:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"expression":{"id":11536,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11496,"src":"5078:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"id":11537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reward_data","nodeType":"MemberAccess","referencedDeclaration":1118,"src":"5078:17:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_IERC20_$2447_$returns$_t_struct$_Reward_$1104_memory_ptr_$","typeString":"function (contract IERC20) view external returns (struct IRewardTokenDistributor.Reward memory)"}},"id":11539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5078:24:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_memory_ptr","typeString":"struct IRewardTokenDistributor.Reward memory"}},"id":11540,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"distributor","nodeType":"MemberAccess","referencedDeclaration":1095,"src":"5078:36:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5050:64:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11543,"name":"rewardDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11535,"src":"5132:17:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":11546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5161:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5153:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11544,"name":"address","nodeType":"ElementaryTypeName","src":"5153:7:80","typeDescriptions":{}}},"id":11547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5153:10:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"5132:31:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52657761726420746f6b656e20646f6573206e6f74206578697374206f6e206761756765","id":11549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5165:38:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_12e8f0821007761081fb194dd41d74ffdd7eeefa16f56094542d3d856ddbe790","typeString":"literal_string \"Reward token does not exist on gauge\""},"value":"Reward token does not exist on gauge"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12e8f0821007761081fb194dd41d74ffdd7eeefa16f56094542d3d856ddbe790","typeString":"literal_string \"Reward token does not exist on gauge\""}],"id":11542,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5124:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5124:80:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11551,"nodeType":"ExpressionStatement","src":"5124:80:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11553,"name":"rewardDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11535,"src":"5222:17:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":11556,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5251:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_DistributionScheduler_$11934","typeString":"contract DistributionScheduler"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DistributionScheduler_$11934","typeString":"contract DistributionScheduler"}],"id":11555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5243:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11554,"name":"address","nodeType":"ElementaryTypeName","src":"5243:7:80","typeDescriptions":{}}},"id":11557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5243:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5222:34:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"446973747269627574696f6e5363686564756c6572206973206e6f742072657761726420746f6b656e2773206469737472696275746f72","id":11559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5258:57:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_e6ab3af4a4ccb1ae008e9fa0bf53f2b060c6a490ef63753643e02e0a115f2e88","typeString":"literal_string \"DistributionScheduler is not reward token's distributor\""},"value":"DistributionScheduler is not reward token's distributor"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6ab3af4a4ccb1ae008e9fa0bf53f2b060c6a490ef63753643e02e0a115f2e88","typeString":"literal_string \"DistributionScheduler is not reward token's distributor\""}],"id":11552,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5214:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5214:102:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11561,"nodeType":"ExpressionStatement","src":"5214:102:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11563,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"5425:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":11564,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5438:5:80","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"5438:15:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5425:28:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"446973747269627574696f6e2063616e206f6e6c79206265207363686564756c656420666f722074686520667574757265","id":11567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5455:51:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_dcfd3efaa3c64c8b70bacb475c6558caa225a1704322568f1406043c4e4faf9e","typeString":"literal_string \"Distribution can only be scheduled for the future\""},"value":"Distribution can only be scheduled for the future"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dcfd3efaa3c64c8b70bacb475c6558caa225a1704322568f1406043c4e4faf9e","typeString":"literal_string \"Distribution can only be scheduled for the future\""}],"id":11562,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5417:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5417:90:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11569,"nodeType":"ExpressionStatement","src":"5417:90:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11571,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"5525:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":11573,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"5558:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11572,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11933,"src":"5538:19:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":11574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5538:30:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5525:43:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"446973747269627574696f6e206d7573742073746172742061742074686520626567696e6e696e67206f6620746865207765656b","id":11576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5570:54:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c27d88d19dc31536ace48c2b93cddc882d3e6b4859319774edafcd7814ae21c","typeString":"literal_string \"Distribution must start at the beginning of the week\""},"value":"Distribution must start at the beginning of the week"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c27d88d19dc31536ace48c2b93cddc882d3e6b4859319774edafcd7814ae21c","typeString":"literal_string \"Distribution must start at the beginning of the week\""}],"id":11570,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5517:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5517:108:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11578,"nodeType":"ExpressionStatement","src":"5517:108:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11580,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"5720:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":11581,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5732:5:80","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"5732:15:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5720:27:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"333635","id":11584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5751:8:80","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"value":"365"},"src":"5720:39:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"446973747269627574696f6e20746f6f2066617220696e746f2074686520667574757265","id":11586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5761:38:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_5be418d9ea67bd8c41d7df1cd48a26260927ea79f2fe5cc86993060ac18eb4c2","typeString":"literal_string \"Distribution too far into the future\""},"value":"Distribution too far into the future"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5be418d9ea67bd8c41d7df1cd48a26260927ea79f2fe5cc86993060ac18eb4c2","typeString":"literal_string \"Distribution too far into the future\""}],"id":11579,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5712:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5712:88:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11588,"nodeType":"ExpressionStatement","src":"5712:88:80"},{"expression":{"arguments":[{"expression":{"id":11592,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5834:3:80","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5834:10:80","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":11596,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5854:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_DistributionScheduler_$11934","typeString":"contract DistributionScheduler"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DistributionScheduler_$11934","typeString":"contract DistributionScheduler"}],"id":11595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5846:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11594,"name":"address","nodeType":"ElementaryTypeName","src":"5846:7:80","typeDescriptions":{}}},"id":11597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5846:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11598,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11500,"src":"5861:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11589,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11498,"src":"5811:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":11591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":7304,"src":"5811:22:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":11599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5811:57:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11600,"nodeType":"ExpressionStatement","src":"5811:57:80"},{"expression":{"arguments":[{"baseExpression":{"id":11602,"name":"_rewardsLists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11412,"src":"5893:13:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$","typeString":"mapping(bytes32 => mapping(uint32 => struct DistributionScheduler.RewardNode storage ref))"}},"id":11607,"indexExpression":{"arguments":[{"id":11604,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11496,"src":"5925:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},{"id":11605,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11498,"src":"5932:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":11603,"name":"_getRewardsListId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11745,"src":"5907:17:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IRewardTokenDistributor_$1163_$_t_contract$_IERC20_$2447_$returns$_t_bytes32_$","typeString":"function (contract IRewardTokenDistributor,contract IERC20) pure returns (bytes32)"}},"id":11606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5907:31:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5893:46:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},{"arguments":[{"id":11610,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"5948:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11609,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5941:6:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":11608,"name":"uint32","nodeType":"ElementaryTypeName","src":"5941:6:80","typeDescriptions":{}}},"id":11611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5941:17:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"id":11614,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11500,"src":"5968:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5960:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":11612,"name":"uint224","nodeType":"ElementaryTypeName","src":"5960:7:80","typeDescriptions":{}}},"id":11615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5960:15:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":11601,"name":"_insertReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11917,"src":"5879:13:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$_t_uint32_$_t_uint224_$returns$__$","typeString":"function (mapping(uint32 => struct DistributionScheduler.RewardNode storage ref),uint32,uint224)"}},"id":11616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5879:97:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11617,"nodeType":"ExpressionStatement","src":"5879:97:80"}]},"documentation":{"id":11494,"nodeType":"StructuredDocumentation","src":"3815:682:80","text":" @notice Schedule a distribution of tokens to gauge depositors over the span of 1 week.\n @dev All distributions must start at the beginning of a week in UNIX time, i.e. Thurs 00:00 UTC.\n This is to prevent griefing from many low value distributions having to be processed before a meaningful\n distribution can be processed.\n @param gauge - The gauge which is to distribute the reward token.\n @param token - The token which is to be distributed among gauge depositors.\n @param amount - The amount of tokens which to distribute.\n @param startTime - The timestamp at the beginning of the week over which to distribute tokens."},"functionSelector":"974e98a6","id":11619,"implemented":true,"kind":"function","modifiers":[],"name":"scheduleDistribution","nodeType":"FunctionDefinition","parameters":{"id":11503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11496,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11619,"src":"4541:29:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},"typeName":{"id":11495,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"4541:23:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"visibility":"internal"},{"constant":false,"id":11498,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":11619,"src":"4580:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11497,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"4580:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11500,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11619,"src":"4602:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11499,"name":"uint256","nodeType":"ElementaryTypeName","src":"4602:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11502,"mutability":"mutable","name":"startTime","nodeType":"VariableDeclaration","scope":11619,"src":"4626:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11501,"name":"uint256","nodeType":"ElementaryTypeName","src":"4626:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4531:118:80"},"returnParameters":{"id":11504,"nodeType":"ParameterList","parameters":[],"src":"4659:0:80"},"scope":11934,"src":"4502:1481:80","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11672,"nodeType":"Block","src":"6241:463:80","statements":[{"body":{"id":11670,"nodeType":"Block","src":"6294:404:80","statements":[{"assignments":[11636],"declarations":[{"constant":false,"id":11636,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":11670,"src":"6308:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11635,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"6308:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"id":11641,"initialValue":{"arguments":[{"id":11639,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11626,"src":"6343:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11637,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11622,"src":"6323:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"id":11638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reward_tokens","nodeType":"MemberAccess","referencedDeclaration":1111,"src":"6323:19:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20_$2447_$","typeString":"function (uint256) view external returns (contract IERC20)"}},"id":11640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6323:22:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"6308:37:80"},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"id":11646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11642,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11636,"src":"6363:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6379:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11643,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2447,"src":"6372:6:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2447_$","typeString":"type(contract IERC20)"}},"id":11645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6372:9:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"6363:18:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11648,"nodeType":"IfStatement","src":"6359:29:80","trueBody":{"id":11647,"nodeType":"Break","src":"6383:5:80"}},{"assignments":[11650],"declarations":[{"constant":false,"id":11650,"mutability":"mutable","name":"rewardDistributor","nodeType":"VariableDeclaration","scope":11670,"src":"6498:25:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11649,"name":"address","nodeType":"ElementaryTypeName","src":"6498:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11656,"initialValue":{"expression":{"arguments":[{"id":11653,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11636,"src":"6544:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"expression":{"id":11651,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11622,"src":"6526:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"id":11652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reward_data","nodeType":"MemberAccess","referencedDeclaration":1118,"src":"6526:17:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_IERC20_$2447_$returns$_t_struct$_Reward_$1104_memory_ptr_$","typeString":"function (contract IERC20) view external returns (struct IRewardTokenDistributor.Reward memory)"}},"id":11654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6526:24:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_memory_ptr","typeString":"struct IRewardTokenDistributor.Reward memory"}},"id":11655,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"distributor","nodeType":"MemberAccess","referencedDeclaration":1095,"src":"6526:36:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6498:64:80"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11657,"name":"rewardDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11650,"src":"6580:17:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":11660,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6609:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_DistributionScheduler_$11934","typeString":"contract DistributionScheduler"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DistributionScheduler_$11934","typeString":"contract DistributionScheduler"}],"id":11659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6601:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11658,"name":"address","nodeType":"ElementaryTypeName","src":"6601:7:80","typeDescriptions":{}}},"id":11661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6601:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6580:34:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11669,"nodeType":"IfStatement","src":"6576:112:80","trueBody":{"id":11668,"nodeType":"Block","src":"6616:72:80","statements":[{"expression":{"arguments":[{"id":11664,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11622,"src":"6660:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},{"id":11665,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11636,"src":"6667:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":11663,"name":"startDistributionForToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11727,"src":"6634:25:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IRewardTokenDistributor_$1163_$_t_contract$_IERC20_$2447_$returns$__$","typeString":"function (contract IRewardTokenDistributor,contract IERC20)"}},"id":11666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6634:39:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11667,"nodeType":"ExpressionStatement","src":"6634:39:80"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11629,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11626,"src":"6271:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11630,"name":"_MAX_REWARDS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11400,"src":"6275:12:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6271:16:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11671,"initializationExpression":{"assignments":[11626],"declarations":[{"constant":false,"id":11626,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11671,"src":"6256:9:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11625,"name":"uint256","nodeType":"ElementaryTypeName","src":"6256:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11628,"initialValue":{"hexValue":"30","id":11627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6268:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6256:13:80"},"loopExpression":{"expression":{"id":11633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6289:3:80","subExpression":{"id":11632,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11626,"src":"6291:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11634,"nodeType":"ExpressionStatement","src":"6289:3:80"},"nodeType":"ForStatement","src":"6251:447:80"}]},"documentation":{"id":11620,"nodeType":"StructuredDocumentation","src":"5989:179:80","text":" @notice Process all pending distributions for a gauge to start distributing the tokens.\n @param gauge - The gauge which is to distribute the reward token."},"functionSelector":"0089fac3","id":11673,"implemented":true,"kind":"function","modifiers":[],"name":"startDistributions","nodeType":"FunctionDefinition","parameters":{"id":11623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11622,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11673,"src":"6201:29:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},"typeName":{"id":11621,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"6201:23:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"visibility":"internal"}],"src":"6200:31:80"},"returnParameters":{"id":11624,"nodeType":"ParameterList","parameters":[],"src":"6241:0:80"},"scope":11934,"src":"6173:531:80","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11726,"nodeType":"Block","src":"7078:554:80","statements":[{"assignments":[11684],"declarations":[{"constant":false,"id":11684,"mutability":"mutable","name":"rewardsList","nodeType":"VariableDeclaration","scope":11726,"src":"7088:49:80","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"typeName":{"id":11683,"keyType":{"id":11681,"name":"uint32","nodeType":"ElementaryTypeName","src":"7096:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"7088:29:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"valueType":{"id":11682,"name":"RewardNode","nodeType":"UserDefinedTypeName","referencedDeclaration":11417,"src":"7106:10:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage_ptr","typeString":"struct DistributionScheduler.RewardNode"}}},"visibility":"internal"}],"id":11691,"initialValue":{"baseExpression":{"id":11685,"name":"_rewardsLists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11412,"src":"7140:13:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$","typeString":"mapping(bytes32 => mapping(uint32 => struct DistributionScheduler.RewardNode storage ref))"}},"id":11690,"indexExpression":{"arguments":[{"id":11687,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11676,"src":"7172:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},{"id":11688,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11678,"src":"7179:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":11686,"name":"_getRewardsListId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11745,"src":"7154:17:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IRewardTokenDistributor_$1163_$_t_contract$_IERC20_$2447_$returns$_t_bytes32_$","typeString":"function (contract IRewardTokenDistributor,contract IERC20) pure returns (bytes32)"}},"id":11689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7154:31:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7140:46:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"nodeType":"VariableDeclarationStatement","src":"7088:98:80"},{"assignments":[11693,11695],"declarations":[{"constant":false,"id":11693,"mutability":"mutable","name":"firstUnprocessedNodeKey","nodeType":"VariableDeclaration","scope":11726,"src":"7198:30:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11692,"name":"uint32","nodeType":"ElementaryTypeName","src":"7198:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":11695,"mutability":"mutable","name":"rewardAmount","nodeType":"VariableDeclaration","scope":11726,"src":"7230:20:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11694,"name":"uint256","nodeType":"ElementaryTypeName","src":"7230:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11701,"initialValue":{"arguments":[{"id":11697,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11684,"src":"7273:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},{"expression":{"id":11698,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7286:5:80","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"7286:15:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11696,"name":"_getPendingRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11797,"src":"7254:18:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$_t_uint256_$returns$_t_uint32_$_t_uint256_$","typeString":"function (mapping(uint32 => struct DistributionScheduler.RewardNode storage ref),uint256) view returns (uint32,uint256)"}},"id":11700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7254:48:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint256_$","typeString":"tuple(uint32,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7197:105:80"},{"expression":{"id":11707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":11702,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11684,"src":"7452:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11704,"indexExpression":{"id":11703,"name":"_HEAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11403,"src":"7464:5:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7452:18:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11705,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"nextTimestamp","nodeType":"MemberAccess","referencedDeclaration":11416,"src":"7452:32:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11706,"name":"firstUnprocessedNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11693,"src":"7487:23:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"7452:58:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11708,"nodeType":"ExpressionStatement","src":"7452:58:80"},{"expression":{"arguments":[{"arguments":[{"id":11714,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11676,"src":"7547:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}],"id":11713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7539:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11712,"name":"address","nodeType":"ElementaryTypeName","src":"7539:7:80","typeDescriptions":{}}},"id":11715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7539:14:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11716,"name":"rewardAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11695,"src":"7555:12:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11709,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11678,"src":"7521:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":11711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"7521:17:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":11717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7521:47:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11718,"nodeType":"ExpressionStatement","src":"7521:47:80"},{"expression":{"arguments":[{"id":11722,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11678,"src":"7605:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":11723,"name":"rewardAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11695,"src":"7612:12:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11719,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11676,"src":"7578:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"id":11721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit_reward_token","nodeType":"MemberAccess","referencedDeclaration":1144,"src":"7578:26:80","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$2447_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256) external"}},"id":11724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7578:47:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11725,"nodeType":"ExpressionStatement","src":"7578:47:80"}]},"documentation":{"id":11674,"nodeType":"StructuredDocumentation","src":"6710:276:80","text":" @notice Process all pending distributions for a given token for a gauge to start distributing tokens.\n @param gauge - The gauge which is to distribute the reward token.\n @param token - The token which is to be distributed among gauge depositors."},"functionSelector":"d85b7a61","id":11727,"implemented":true,"kind":"function","modifiers":[],"name":"startDistributionForToken","nodeType":"FunctionDefinition","parameters":{"id":11679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11676,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11727,"src":"7026:29:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},"typeName":{"id":11675,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"7026:23:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"visibility":"internal"},{"constant":false,"id":11678,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":11727,"src":"7057:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11677,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"7057:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"7025:45:80"},"returnParameters":{"id":11680,"nodeType":"ParameterList","parameters":[],"src":"7078:0:80"},"scope":11934,"src":"6991:641:80","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11744,"nodeType":"Block","src":"7775:71:80","statements":[{"expression":{"arguments":[{"arguments":[{"id":11739,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11729,"src":"7819:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},{"id":11740,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11731,"src":"7826:11:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"expression":{"id":11737,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7802:3:80","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"7802:16:80","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7802:36:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11736,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7792:9:80","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7792:47:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":11735,"id":11743,"nodeType":"Return","src":"7785:54:80"}]},"id":11745,"implemented":true,"kind":"function","modifiers":[],"name":"_getRewardsListId","nodeType":"FunctionDefinition","parameters":{"id":11732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11729,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11745,"src":"7692:29:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},"typeName":{"id":11728,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"7692:23:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"visibility":"internal"},{"constant":false,"id":11731,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":11745,"src":"7723:18:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11730,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"7723:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"7691:51:80"},"returnParameters":{"id":11735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11734,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11745,"src":"7766:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11733,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7766:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7765:9:80"},"scope":11934,"src":"7665:181:80","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11796,"nodeType":"Block","src":"8311:450:80","statements":[{"assignments":[11760],"declarations":[{"constant":false,"id":11760,"mutability":"mutable","name":"currentNodeKey","nodeType":"VariableDeclaration","scope":11796,"src":"8321:21:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11759,"name":"uint32","nodeType":"ElementaryTypeName","src":"8321:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":11765,"initialValue":{"expression":{"baseExpression":{"id":11761,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11750,"src":"8345:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11763,"indexExpression":{"id":11762,"name":"_HEAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11403,"src":"8357:5:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8345:18:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11764,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"nextTimestamp","nodeType":"MemberAccess","referencedDeclaration":11416,"src":"8345:32:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"8321:56:80"},{"assignments":[11767],"declarations":[{"constant":false,"id":11767,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11796,"src":"8484:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11766,"name":"uint256","nodeType":"ElementaryTypeName","src":"8484:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11768,"nodeType":"VariableDeclarationStatement","src":"8484:14:80"},{"body":{"id":11790,"nodeType":"Block","src":"8571:142:80","statements":[{"expression":{"id":11781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11776,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"8585:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":11777,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11750,"src":"8595:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11779,"indexExpression":{"id":11778,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"8607:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8595:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11780,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":11414,"src":"8595:34:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"8585:44:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11782,"nodeType":"ExpressionStatement","src":"8585:44:80"},{"expression":{"id":11788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11783,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"8644:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":11784,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11750,"src":"8661:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11786,"indexExpression":{"id":11785,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"8673:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8661:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11787,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"nextTimestamp","nodeType":"MemberAccess","referencedDeclaration":11416,"src":"8661:41:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"8644:58:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11789,"nodeType":"ExpressionStatement","src":"8644:58:80"}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11769,"name":"targetKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11752,"src":"8515:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":11770,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"8528:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"8515:27:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":11774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11772,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"8546:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11773,"name":"_NULL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11406,"src":"8564:5:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"8546:23:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8515:54:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11791,"nodeType":"WhileStatement","src":"8508:205:80"},{"expression":{"components":[{"id":11792,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"8731:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":11793,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"8747:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11794,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8730:24:80","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint256_$","typeString":"tuple(uint32,uint256)"}},"functionReturnParameters":11758,"id":11795,"nodeType":"Return","src":"8723:31:80"}]},"documentation":{"id":11746,"nodeType":"StructuredDocumentation","src":"7852:288:80","text":" @dev Sums the rewards held on all pending reward nodes with a key lesser than `targetKey`.\n @return - the key corresponding to the first node with a key greater than `targetKey`.\n - the cumulative rewards held on all pending nodes before `targetKey`"},"id":11797,"implemented":true,"kind":"function","modifiers":[],"name":"_getPendingRewards","nodeType":"FunctionDefinition","parameters":{"id":11753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11750,"mutability":"mutable","name":"rewardsList","nodeType":"VariableDeclaration","scope":11797,"src":"8173:49:80","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"typeName":{"id":11749,"keyType":{"id":11747,"name":"uint32","nodeType":"ElementaryTypeName","src":"8181:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"8173:29:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"valueType":{"id":11748,"name":"RewardNode","nodeType":"UserDefinedTypeName","referencedDeclaration":11417,"src":"8191:10:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage_ptr","typeString":"struct DistributionScheduler.RewardNode"}}},"visibility":"internal"},{"constant":false,"id":11752,"mutability":"mutable","name":"targetKey","nodeType":"VariableDeclaration","scope":11797,"src":"8224:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11751,"name":"uint256","nodeType":"ElementaryTypeName","src":"8224:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8172:70:80"},"returnParameters":{"id":11758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11755,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11797,"src":"8290:6:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11754,"name":"uint32","nodeType":"ElementaryTypeName","src":"8290:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":11757,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11797,"src":"8298:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11756,"name":"uint256","nodeType":"ElementaryTypeName","src":"8298:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8289:17:80"},"scope":11934,"src":"8145:616:80","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11916,"nodeType":"Block","src":"9025:1659:80","statements":[{"assignments":[11810],"declarations":[{"constant":false,"id":11810,"mutability":"mutable","name":"currentNodeKey","nodeType":"VariableDeclaration","scope":11916,"src":"9156:21:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11809,"name":"uint32","nodeType":"ElementaryTypeName","src":"9156:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":11812,"initialValue":{"id":11811,"name":"_HEAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11403,"src":"9180:5:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"9156:29:80"},{"assignments":[11814],"declarations":[{"constant":false,"id":11814,"mutability":"mutable","name":"nextNodeKey","nodeType":"VariableDeclaration","scope":11916,"src":"9195:18:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11813,"name":"uint32","nodeType":"ElementaryTypeName","src":"9195:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":11819,"initialValue":{"expression":{"baseExpression":{"id":11815,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"9216:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11817,"indexExpression":{"id":11816,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11810,"src":"9228:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9216:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"nextTimestamp","nodeType":"MemberAccess","referencedDeclaration":11416,"src":"9216:41:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"9195:62:80"},{"body":{"id":11838,"nodeType":"Block","src":"9476:122:80","statements":[{"expression":{"id":11829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11827,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11810,"src":"9490:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11828,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"9507:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9490:28:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11830,"nodeType":"ExpressionStatement","src":"9490:28:80"},{"expression":{"id":11836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11831,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"9532:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":11832,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"9546:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11834,"indexExpression":{"id":11833,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11810,"src":"9558:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9546:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11835,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"nextTimestamp","nodeType":"MemberAccess","referencedDeclaration":11416,"src":"9546:41:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9532:55:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11837,"nodeType":"ExpressionStatement","src":"9532:55:80"}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":11822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11820,"name":"insertedNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11804,"src":"9421:15:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":11821,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"9439:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9421:29:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":11825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11823,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"9454:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11824,"name":"_NULL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11406,"src":"9469:5:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9454:20:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9421:53:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11839,"nodeType":"WhileStatement","src":"9414:184:80"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":11842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11840,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"9612:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11841,"name":"_NULL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11406,"src":"9627:5:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9612:20:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":11862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11860,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"9881:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11861,"name":"insertedNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11804,"src":"9896:15:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9881:30:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11913,"nodeType":"Block","src":"10307:371:80","statements":[{"expression":{"id":11904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11897,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"10532:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11899,"indexExpression":{"id":11898,"name":"insertedNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11804,"src":"10544:15:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10532:28:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11901,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11806,"src":"10574:6:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"id":11902,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"10582:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":11900,"name":"RewardNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11417,"src":"10563:10:80","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RewardNode_$11417_storage_ptr_$","typeString":"type(struct DistributionScheduler.RewardNode storage pointer)"}},"id":11903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10563:31:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_memory_ptr","typeString":"struct DistributionScheduler.RewardNode memory"}},"src":"10532:62:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11905,"nodeType":"ExpressionStatement","src":"10532:62:80"},{"expression":{"id":11911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":11906,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"10608:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11908,"indexExpression":{"id":11907,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11810,"src":"10620:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10608:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11909,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"nextTimestamp","nodeType":"MemberAccess","referencedDeclaration":11416,"src":"10608:41:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11910,"name":"insertedNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11804,"src":"10652:15:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"10608:59:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11912,"nodeType":"ExpressionStatement","src":"10608:59:80"}]},"id":11914,"nodeType":"IfStatement","src":"9877:801:80","trueBody":{"id":11896,"nodeType":"Block","src":"9913:388:80","statements":[{"assignments":[11864],"declarations":[{"constant":false,"id":11864,"mutability":"mutable","name":"rewardAmount","nodeType":"VariableDeclaration","scope":11896,"src":"10067:20:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11863,"name":"uint256","nodeType":"ElementaryTypeName","src":"10067:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11874,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"baseExpression":{"id":11867,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"10098:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11869,"indexExpression":{"id":11868,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"10110:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10098:24:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11870,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":11414,"src":"10098:31:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":11866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10090:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11865,"name":"uint256","nodeType":"ElementaryTypeName","src":"10090:7:80","typeDescriptions":{}}},"id":11871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10090:40:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":11872,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11806,"src":"10133:6:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"10090:49:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10067:72:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11876,"name":"rewardAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11864,"src":"10161:12:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":11879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10182:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":11878,"name":"uint224","nodeType":"ElementaryTypeName","src":"10182:7:80","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":11877,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10177:4:80","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10177:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":11881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"10177:17:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"10161:33:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52657761726420616d6f756e74206f766572666c6f77","id":11883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10196:24:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_5391fbd5d22ad37959ecf087392cb1f1bf4a2e987fe5a2e75904267b58a35e32","typeString":"literal_string \"Reward amount overflow\""},"value":"Reward amount overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5391fbd5d22ad37959ecf087392cb1f1bf4a2e987fe5a2e75904267b58a35e32","typeString":"literal_string \"Reward amount overflow\""}],"id":11875,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10153:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10153:68:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11885,"nodeType":"ExpressionStatement","src":"10153:68:80"},{"expression":{"id":11894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":11886,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"10235:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11888,"indexExpression":{"id":11887,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"10247:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10235:24:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11889,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":11414,"src":"10235:31:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11892,"name":"rewardAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11864,"src":"10277:12:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10269:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":11890,"name":"uint224","nodeType":"ElementaryTypeName","src":"10269:7:80","typeDescriptions":{}}},"id":11893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10269:21:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"10235:55:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":11895,"nodeType":"ExpressionStatement","src":"10235:55:80"}]}},"id":11915,"nodeType":"IfStatement","src":"9608:1070:80","trueBody":{"id":11859,"nodeType":"Block","src":"9634:237:80","statements":[{"expression":{"id":11848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":11843,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"9731:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11845,"indexExpression":{"id":11844,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11810,"src":"9743:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9731:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11846,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"nextTimestamp","nodeType":"MemberAccess","referencedDeclaration":11416,"src":"9731:41:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11847,"name":"insertedNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11804,"src":"9775:15:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9731:59:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11849,"nodeType":"ExpressionStatement","src":"9731:59:80"},{"expression":{"id":11857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11850,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"9804:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11852,"indexExpression":{"id":11851,"name":"insertedNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11804,"src":"9816:15:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9804:28:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11854,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11806,"src":"9846:6:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"id":11855,"name":"_NULL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11406,"src":"9854:5:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":11853,"name":"RewardNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11417,"src":"9835:10:80","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RewardNode_$11417_storage_ptr_$","typeString":"type(struct DistributionScheduler.RewardNode storage pointer)"}},"id":11856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9835:25:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_memory_ptr","typeString":"struct DistributionScheduler.RewardNode memory"}},"src":"9804:56:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11858,"nodeType":"ExpressionStatement","src":"9804:56:80"}]}}]},"documentation":{"id":11798,"nodeType":"StructuredDocumentation","src":"8767:101:80","text":" @dev Find the position of the new node in the list of pending nodes and insert it."},"id":11917,"implemented":true,"kind":"function","modifiers":[],"name":"_insertReward","nodeType":"FunctionDefinition","parameters":{"id":11807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11802,"mutability":"mutable","name":"rewardsList","nodeType":"VariableDeclaration","scope":11917,"src":"8905:49:80","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"typeName":{"id":11801,"keyType":{"id":11799,"name":"uint32","nodeType":"ElementaryTypeName","src":"8913:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"8905:29:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"valueType":{"id":11800,"name":"RewardNode","nodeType":"UserDefinedTypeName","referencedDeclaration":11417,"src":"8923:10:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage_ptr","typeString":"struct DistributionScheduler.RewardNode"}}},"visibility":"internal"},{"constant":false,"id":11804,"mutability":"mutable","name":"insertedNodeKey","nodeType":"VariableDeclaration","scope":11917,"src":"8964:22:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11803,"name":"uint32","nodeType":"ElementaryTypeName","src":"8964:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":11806,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11917,"src":"8996:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":11805,"name":"uint224","nodeType":"ElementaryTypeName","src":"8996:7:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"8895:121:80"},"returnParameters":{"id":11808,"nodeType":"ParameterList","parameters":[],"src":"9025:0:80"},"scope":11934,"src":"8873:1811:80","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":11932,"nodeType":"Block","src":"10888:55:80","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11925,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11920,"src":"10906:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31","id":11926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10918:7:80","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"10906:19:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11928,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10905:21:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31","id":11929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10929:7:80","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"10905:31:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11924,"id":11931,"nodeType":"Return","src":"10898:38:80"}]},"documentation":{"id":11918,"nodeType":"StructuredDocumentation","src":"10690:114:80","text":" @dev Rounds the provided timestamp down to the beginning of the previous week (Thurs 00:00 UTC)"},"id":11933,"implemented":true,"kind":"function","modifiers":[],"name":"_roundDownTimestamp","nodeType":"FunctionDefinition","parameters":{"id":11921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11920,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":11933,"src":"10838:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11919,"name":"uint256","nodeType":"ElementaryTypeName","src":"10838:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10837:19:80"},"returnParameters":{"id":11924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11923,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11933,"src":"10879:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11922,"name":"uint256","nodeType":"ElementaryTypeName","src":"10879:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10878:9:80"},"scope":11934,"src":"10809:134:80","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":11935,"src":"1205:9740:80"}],"src":"688:10258:80"},"id":80},"contracts/admin/GaugeAdder.sol":{"ast":{"absolutePath":"contracts/admin/GaugeAdder.sol","exportedSymbols":{"GaugeAdder":[12363]},"id":12364,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11936,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:81"},{"id":11937,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:81"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol","id":11938,"nodeType":"ImportDirective","scope":12364,"sourceUnit":740,"src":"747:81:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","id":11939,"nodeType":"ImportDirective","scope":12364,"sourceUnit":1455,"src":"829:92:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":11940,"nodeType":"ImportDirective","scope":12364,"sourceUnit":3052,"src":"922:65:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":11941,"nodeType":"ImportDirective","scope":12364,"sourceUnit":3698,"src":"989:88:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":11942,"nodeType":"ImportDirective","scope":12364,"sourceUnit":7188,"src":"1078:85:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","id":11943,"nodeType":"ImportDirective","scope":12364,"sourceUnit":3129,"src":"1164:79:81","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11944,"name":"IGaugeAdder","nodeType":"UserDefinedTypeName","referencedDeclaration":739,"src":"1268:11:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":11945,"nodeType":"InheritanceSpecifier","src":"1268:11:81"},{"baseName":{"id":11946,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1281:23:81","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":11947,"nodeType":"InheritanceSpecifier","src":"1281:23:81"},{"baseName":{"id":11948,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"1306:15:81","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":11949,"nodeType":"InheritanceSpecifier","src":"1306:15:81"}],"contractDependencies":[739,2259,3128,3697,7187],"contractKind":"contract","fullyImplemented":true,"id":12363,"linearizedBaseContracts":[12363,7187,3697,3128,739,2259],"name":"GaugeAdder","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":11952,"mutability":"constant","name":"_ETHEREUM_GAUGE_CONTROLLER_TYPE","nodeType":"VariableDeclaration","scope":12363,"src":"1477:59:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":11950,"name":"int128","nodeType":"ElementaryTypeName","src":"1477:6:81","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"value":{"hexValue":"32","id":11951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1535:1:81","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"constant":false,"id":11960,"mutability":"immutable","name":"_ethereum","nodeType":"VariableDeclaration","scope":12363,"src":"1543:77:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11953,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1543:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"457468657265756d","id":11957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1608:10:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_564ccaf7594d66b1eaaea24fe01f0585bf52ee70852af4eac0cc4b04711cd0e2","typeString":"literal_string \"Ethereum\""},"value":"Ethereum"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_564ccaf7594d66b1eaaea24fe01f0585bf52ee70852af4eac0cc4b04711cd0e2","typeString":"literal_string \"Ethereum\""}],"expression":{"id":11955,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1591:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1591:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1591:28:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11954,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1581:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1581:39:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":11962,"mutability":"immutable","name":"_gaugeController","nodeType":"VariableDeclaration","scope":12363,"src":"1626:51:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":11961,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1626:16:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"private"},{"constant":false,"id":11964,"mutability":"immutable","name":"_balWethBpt","nodeType":"VariableDeclaration","scope":12363,"src":"1683:36:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11963,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1683:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"private"},{"constant":false,"id":11966,"mutability":"mutable","name":"_authorizerAdaptorEntrypoint","nodeType":"VariableDeclaration","scope":12363,"src":"1725:65:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":11965,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"1725:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"private"},{"constant":false,"id":11969,"mutability":"mutable","name":"_gaugeTypes","nodeType":"VariableDeclaration","scope":12363,"src":"1841:28:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string[]"},"typeName":{"baseType":{"id":11967,"name":"string","nodeType":"ElementaryTypeName","src":"1841:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":11968,"nodeType":"ArrayTypeName","src":"1841:8:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"private"},{"constant":false,"id":11973,"mutability":"mutable","name":"_gaugeTypeFactory","nodeType":"VariableDeclaration","scope":12363,"src":"1952:67:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"mapping(string => contract ILiquidityGaugeFactory)"},"typeName":{"id":11972,"keyType":{"id":11970,"name":"string","nodeType":"ElementaryTypeName","src":"1960:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"nodeType":"Mapping","src":"1952:41:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"mapping(string => contract ILiquidityGaugeFactory)"},"valueType":{"id":11971,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"1970:22:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}}},"visibility":"private"},{"body":{"id":12001,"nodeType":"Block","src":"2202:225:81","statements":[{"expression":{"id":11989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11987,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11962,"src":"2212:16:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11988,"name":"gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11975,"src":"2231:15:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"src":"2212:34:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":11990,"nodeType":"ExpressionStatement","src":"2212:34:81"},{"expression":{"id":11993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11991,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11966,"src":"2256:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11992,"name":"authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11977,"src":"2287:27:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"src":"2256:58:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":11994,"nodeType":"ExpressionStatement","src":"2256:58:81"},{"expression":{"id":11999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11995,"name":"_balWethBpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11964,"src":"2383:11:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11996,"name":"gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11975,"src":"2397:15:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":11997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":768,"src":"2397:21:81","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2447_$","typeString":"function () view external returns (contract IERC20)"}},"id":11998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2397:23:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"2383:37:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":12000,"nodeType":"ExpressionStatement","src":"2383:37:81"}]},"id":12002,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11980,"name":"gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11975,"src":"2162:15:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":11981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"admin","nodeType":"MemberAccess","referencedDeclaration":806,"src":"2162:21:81","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizerAdaptor_$49_$","typeString":"function () view external returns (contract IAuthorizerAdaptor)"}},"id":11982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2162:23:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":11983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getVault","nodeType":"MemberAccess","referencedDeclaration":32,"src":"2162:32:81","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view external returns (contract IVault)"}},"id":11984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2162:34:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":11985,"modifierName":{"id":11979,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"2138:23:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"2138:59:81"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":11978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11975,"mutability":"mutable","name":"gaugeController","nodeType":"VariableDeclaration","scope":12002,"src":"2038:32:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":11974,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"2038:16:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"internal"},{"constant":false,"id":11977,"mutability":"mutable","name":"authorizerAdaptorEntrypoint","nodeType":"VariableDeclaration","scope":12002,"src":"2072:56:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":11976,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"2072:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"internal"}],"src":"2037:92:81"},"returnParameters":{"id":11986,"nodeType":"ParameterList","parameters":[],"src":"2202:0:81"},"scope":12363,"src":"2026:401:81","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12014,"nodeType":"Block","src":"2486:87:81","statements":[{"expression":{"arguments":[{"arguments":[{"id":12008,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12004,"src":"2522:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12007,"name":"_isValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"2504:17:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (string memory) view returns (bool)"}},"id":12009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2504:28:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c69642067617567652074797065","id":12010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2534:20:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""},"value":"Invalid gauge type"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""}],"id":12006,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2496:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2496:59:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12012,"nodeType":"ExpressionStatement","src":"2496:59:81"},{"id":12013,"nodeType":"PlaceholderStatement","src":"2565:1:81"}]},"id":12015,"name":"withValidGaugeType","nodeType":"ModifierDefinition","parameters":{"id":12005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12004,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12015,"src":"2461:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12003,"name":"string","nodeType":"ElementaryTypeName","src":"2461:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2460:25:81"},"src":"2433:140:81","virtual":false,"visibility":"internal"},{"baseFunctions":[663],"body":{"id":12024,"nodeType":"Block","src":"2715:52:81","statements":[{"expression":{"id":12022,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11966,"src":"2732:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"functionReturnParameters":12021,"id":12023,"nodeType":"Return","src":"2725:35:81"}]},"documentation":{"id":12016,"nodeType":"StructuredDocumentation","src":"2579:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"7afcf0e6","id":12025,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizerAdaptorEntrypoint","nodeType":"FunctionDefinition","overrides":{"id":12018,"nodeType":"OverrideSpecifier","overrides":[],"src":"2667:8:81"},"parameters":{"id":12017,"nodeType":"ParameterList","parameters":[],"src":"2650:2:81"},"returnParameters":{"id":12021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12020,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12025,"src":"2685:28:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":12019,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"2685:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"internal"}],"src":"2684:30:81"},"scope":12363,"src":"2611:156:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[669],"body":{"id":12034,"nodeType":"Block","src":"2885:40:81","statements":[{"expression":{"id":12032,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11962,"src":"2902:16:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"functionReturnParameters":12031,"id":12033,"nodeType":"Return","src":"2895:23:81"}]},"documentation":{"id":12026,"nodeType":"StructuredDocumentation","src":"2773:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"58de9ade","id":12035,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeController","nodeType":"FunctionDefinition","overrides":{"id":12028,"nodeType":"OverrideSpecifier","overrides":[],"src":"2849:8:81"},"parameters":{"id":12027,"nodeType":"ParameterList","parameters":[],"src":"2832:2:81"},"returnParameters":{"id":12031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12030,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12035,"src":"2867:16:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":12029,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"2867:16:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"internal"}],"src":"2866:18:81"},"scope":12363,"src":"2805:120:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[676],"body":{"id":12045,"nodeType":"Block","src":"3037:35:81","statements":[{"expression":{"id":12043,"name":"_gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11969,"src":"3054:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"functionReturnParameters":12042,"id":12044,"nodeType":"Return","src":"3047:18:81"}]},"documentation":{"id":12036,"nodeType":"StructuredDocumentation","src":"2931:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"afcb1a86","id":12046,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeTypes","nodeType":"FunctionDefinition","overrides":{"id":12038,"nodeType":"OverrideSpecifier","overrides":[],"src":"3002:8:81"},"parameters":{"id":12037,"nodeType":"ParameterList","parameters":[],"src":"2985:2:81"},"returnParameters":{"id":12042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12041,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12046,"src":"3020:15:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":12039,"name":"string","nodeType":"ElementaryTypeName","src":"3020:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":12040,"nodeType":"ArrayTypeName","src":"3020:8:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"src":"3019:17:81"},"scope":12363,"src":"2963:109:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[684],"body":{"id":12059,"nodeType":"Block","src":"3201:42:81","statements":[{"expression":{"baseExpression":{"id":12055,"name":"_gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11969,"src":"3218:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":12057,"indexExpression":{"id":12056,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12049,"src":"3230:5:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3218:18:81","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":12054,"id":12058,"nodeType":"Return","src":"3211:25:81"}]},"documentation":{"id":12047,"nodeType":"StructuredDocumentation","src":"3078:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"08ceb030","id":12060,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeTypeAtIndex","nodeType":"FunctionDefinition","overrides":{"id":12051,"nodeType":"OverrideSpecifier","overrides":[],"src":"3168:8:81"},"parameters":{"id":12050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12049,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":12060,"src":"3139:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12048,"name":"uint256","nodeType":"ElementaryTypeName","src":"3139:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3138:15:81"},"returnParameters":{"id":12054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12053,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12060,"src":"3186:13:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12052,"name":"string","nodeType":"ElementaryTypeName","src":"3186:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3185:15:81"},"scope":12363,"src":"3110:133:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[690],"body":{"id":12070,"nodeType":"Block","src":"3352:42:81","statements":[{"expression":{"expression":{"id":12067,"name":"_gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11969,"src":"3369:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":12068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3369:18:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12066,"id":12069,"nodeType":"Return","src":"3362:25:81"}]},"documentation":{"id":12061,"nodeType":"StructuredDocumentation","src":"3249:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"96432aeb","id":12071,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeTypesCount","nodeType":"FunctionDefinition","overrides":{"id":12063,"nodeType":"OverrideSpecifier","overrides":[],"src":"3325:8:81"},"parameters":{"id":12062,"nodeType":"ParameterList","parameters":[],"src":"3308:2:81"},"returnParameters":{"id":12066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12065,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12071,"src":"3343:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12064,"name":"uint256","nodeType":"ElementaryTypeName","src":"3343:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3342:9:81"},"scope":12363,"src":"3281:113:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[698],"body":{"id":12084,"nodeType":"Block","src":"3521:52:81","statements":[{"expression":{"arguments":[{"id":12081,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12074,"src":"3556:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12080,"name":"_isValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"3538:17:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (string memory) view returns (bool)"}},"id":12082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3538:28:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12079,"id":12083,"nodeType":"Return","src":"3531:35:81"}]},"documentation":{"id":12072,"nodeType":"StructuredDocumentation","src":"3400:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"16e772bc","id":12085,"implemented":true,"kind":"function","modifiers":[],"name":"isValidGaugeType","nodeType":"FunctionDefinition","overrides":{"id":12076,"nodeType":"OverrideSpecifier","overrides":[],"src":"3497:8:81"},"parameters":{"id":12075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12074,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12085,"src":"3458:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12073,"name":"string","nodeType":"ElementaryTypeName","src":"3458:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3457:25:81"},"returnParameters":{"id":12079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12078,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12085,"src":"3515:4:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12077,"name":"bool","nodeType":"ElementaryTypeName","src":"3515:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3514:6:81"},"scope":12363,"src":"3432:141:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[706],"body":{"id":12101,"nodeType":"Block","src":"3798:52:81","statements":[{"expression":{"baseExpression":{"id":12097,"name":"_gaugeTypeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11973,"src":"3815:17:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"mapping(string memory => contract ILiquidityGaugeFactory)"}},"id":12099,"indexExpression":{"id":12098,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12088,"src":"3833:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3815:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"functionReturnParameters":12096,"id":12100,"nodeType":"Return","src":"3808:35:81"}]},"documentation":{"id":12086,"nodeType":"StructuredDocumentation","src":"3579:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"572cb6a5","id":12102,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":12092,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12088,"src":"3742:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":12093,"modifierName":{"id":12091,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12015,"src":"3723:18:81","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"3723:29:81"}],"name":"getFactoryForGaugeType","nodeType":"FunctionDefinition","overrides":{"id":12090,"nodeType":"OverrideSpecifier","overrides":[],"src":"3706:8:81"},"parameters":{"id":12089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12088,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12102,"src":"3643:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12087,"name":"string","nodeType":"ElementaryTypeName","src":"3643:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3642:25:81"},"returnParameters":{"id":12096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12095,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12102,"src":"3770:22:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":12094,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"3770:22:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"3769:24:81"},"scope":12363,"src":"3611:239:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[716],"body":{"id":12121,"nodeType":"Block","src":"4073:66:81","statements":[{"expression":{"arguments":[{"id":12117,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12105,"src":"4115:5:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12118,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12107,"src":"4122:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12116,"name":"_isGaugeFromValidFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12282,"src":"4090:24:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (address,string memory) view returns (bool)"}},"id":12119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4090:42:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12115,"id":12120,"nodeType":"Return","src":"4083:49:81"}]},"documentation":{"id":12103,"nodeType":"StructuredDocumentation","src":"3856:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"a0ade33e","id":12122,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":12111,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12107,"src":"4035:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":12112,"modifierName":{"id":12110,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12015,"src":"4016:18:81","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"4016:29:81"}],"name":"isGaugeFromValidFactory","nodeType":"FunctionDefinition","overrides":{"id":12109,"nodeType":"OverrideSpecifier","overrides":[],"src":"3999:8:81"},"parameters":{"id":12108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12105,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":12122,"src":"3921:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12104,"name":"address","nodeType":"ElementaryTypeName","src":"3921:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12107,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12122,"src":"3936:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12106,"name":"string","nodeType":"ElementaryTypeName","src":"3936:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3920:40:81"},"returnParameters":{"id":12115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12114,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12122,"src":"4063:4:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12113,"name":"bool","nodeType":"ElementaryTypeName","src":"4063:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4062:6:81"},"scope":12363,"src":"3888:251:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[722],"body":{"id":12161,"nodeType":"Block","src":"4279:249:81","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":12134,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"4303:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4297:5:81","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":12132,"name":"bytes","nodeType":"ElementaryTypeName","src":"4297:5:81","typeDescriptions":{}}},"id":12135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4297:16:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4297:23:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4323:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4297:27:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520747970652063616e6e6f7420626520656d707479","id":12139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4326:28:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_c47e22c661fe74df9b9e6354e2d6957cbd7324025c5eae69a863de051e51da9e","typeString":"literal_string \"Gauge type cannot be empty\""},"value":"Gauge type cannot be empty"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c47e22c661fe74df9b9e6354e2d6957cbd7324025c5eae69a863de051e51da9e","typeString":"literal_string \"Gauge type cannot be empty\""}],"id":12131,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4289:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4289:66:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12141,"nodeType":"ExpressionStatement","src":"4289:66:81"},{"expression":{"arguments":[{"id":12146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4373:29:81","subExpression":{"arguments":[{"id":12144,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"4392:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12143,"name":"_isValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"4374:17:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (string memory) view returns (bool)"}},"id":12145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4374:28:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4761756765207479706520616c7265616479206164646564","id":12147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4404:26:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ecb1aadfbd637c176e3a0cca230f94b7adc17e47cfe10dfa981c11ef25e97ce","typeString":"literal_string \"Gauge type already added\""},"value":"Gauge type already added"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5ecb1aadfbd637c176e3a0cca230f94b7adc17e47cfe10dfa981c11ef25e97ce","typeString":"literal_string \"Gauge type already added\""}],"id":12142,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4365:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4365:66:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12149,"nodeType":"ExpressionStatement","src":"4365:66:81"},{"expression":{"arguments":[{"id":12153,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"4459:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":12150,"name":"_gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11969,"src":"4442:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":12152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"4442:16:81","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_string_storage_$returns$__$","typeString":"function (string storage ref)"}},"id":12154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4442:27:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12155,"nodeType":"ExpressionStatement","src":"4442:27:81"},{"eventCall":{"arguments":[{"id":12157,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"4500:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12158,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"4511:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12156,"name":"GaugeTypeAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":649,"src":"4485:14:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":12159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4485:36:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12160,"nodeType":"EmitStatement","src":"4480:41:81"}]},"documentation":{"id":12123,"nodeType":"StructuredDocumentation","src":"4169:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"231856fa","id":12162,"implemented":true,"kind":"function","modifiers":[{"id":12129,"modifierName":{"id":12128,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"4266:12:81","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4266:12:81"}],"name":"addGaugeType","nodeType":"FunctionDefinition","overrides":{"id":12127,"nodeType":"OverrideSpecifier","overrides":[],"src":"4257:8:81"},"parameters":{"id":12126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12125,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12162,"src":"4223:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12124,"name":"string","nodeType":"ElementaryTypeName","src":"4223:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4222:25:81"},"returnParameters":{"id":12130,"nodeType":"ParameterList","parameters":[],"src":"4279:0:81"},"scope":12363,"src":"4201:327:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[730],"body":{"id":12206,"nodeType":"Block","src":"4721:275:81","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":12183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":12179,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12167,"src":"4762:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":12177,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4745:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"4745:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4745:27:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12176,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4735:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":12181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4735:38:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12182,"name":"_ethereum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11960,"src":"4777:9:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4735:51:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12200,"nodeType":"IfStatement","src":"4731:221:81","trueBody":{"id":12199,"nodeType":"Block","src":"4788:164:81","statements":[{"assignments":[12185],"declarations":[{"constant":false,"id":12185,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":12199,"src":"4802:11:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12184,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"4802:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"id":12191,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":12187,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12165,"src":"4839:5:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12186,"name":"IStakingLiquidityGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1454,"src":"4816:22:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakingLiquidityGauge_$1454_$","typeString":"type(contract IStakingLiquidityGauge)"}},"id":12188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4816:29:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$1454","typeString":"contract IStakingLiquidityGauge"}},"id":12189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"lp_token","nodeType":"MemberAccess","referencedDeclaration":1441,"src":"4816:38:81","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2447_$","typeString":"function () view external returns (contract IERC20)"}},"id":12190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4816:40:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"4802:54:81"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"id":12195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12193,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12185,"src":"4878:4:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12194,"name":"_balWethBpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11964,"src":"4886:11:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"4878:19:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f742061646420676175676520666f722038302f32302042414c2d5745544820425054","id":12196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4899:41:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_b701fa1b9d0cd4c6fe91a0ed3c273e193c21852b065319a87de436b01db3c27b","typeString":"literal_string \"Cannot add gauge for 80/20 BAL-WETH BPT\""},"value":"Cannot add gauge for 80/20 BAL-WETH BPT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b701fa1b9d0cd4c6fe91a0ed3c273e193c21852b065319a87de436b01db3c27b","typeString":"literal_string \"Cannot add gauge for 80/20 BAL-WETH BPT\""}],"id":12192,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4870:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4870:71:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12198,"nodeType":"ExpressionStatement","src":"4870:71:81"}]}},{"expression":{"arguments":[{"id":12202,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12165,"src":"4972:5:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12203,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12167,"src":"4979:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12201,"name":"_addGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12316,"src":"4962:9:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,string memory)"}},"id":12204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4962:27:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12205,"nodeType":"ExpressionStatement","src":"4962:27:81"}]},"documentation":{"id":12163,"nodeType":"StructuredDocumentation","src":"4534:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"5bf71434","id":12207,"implemented":true,"kind":"function","modifiers":[{"id":12171,"modifierName":{"id":12170,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"4666:12:81","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4666:12:81"},{"arguments":[{"id":12173,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12167,"src":"4706:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":12174,"modifierName":{"id":12172,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12015,"src":"4687:18:81","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"4687:29:81"}],"name":"addGauge","nodeType":"FunctionDefinition","overrides":{"id":12169,"nodeType":"OverrideSpecifier","overrides":[],"src":"4649:8:81"},"parameters":{"id":12168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12165,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":12207,"src":"4584:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12164,"name":"address","nodeType":"ElementaryTypeName","src":"4584:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12167,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12207,"src":"4599:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12166,"name":"string","nodeType":"ElementaryTypeName","src":"4599:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4583:40:81"},"returnParameters":{"id":12175,"nodeType":"ParameterList","parameters":[],"src":"4721:0:81"},"scope":12363,"src":"4566:430:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[738],"body":{"id":12253,"nodeType":"Block","src":"5213:359:81","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"id":12226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12222,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12210,"src":"5316:7:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":12224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5350:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12223,"name":"ILiquidityGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":941,"src":"5327:22:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"type(contract ILiquidityGaugeFactory)"}},"id":12225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5327:25:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"src":"5316:36:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":12227,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5315:38:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"id":12235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5358:39:81","subExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":12232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5394:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12231,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5386:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12230,"name":"address","nodeType":"ElementaryTypeName","src":"5386:7:81","typeDescriptions":{}}},"id":12233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5386:10:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":12228,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12210,"src":"5359:7:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":12229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isGaugeFromFactory","nodeType":"MemberAccess","referencedDeclaration":940,"src":"5359:26:81","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":12234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5359:38:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":12236,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5357:41:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5315:83:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420666163746f727920696d706c656d656e746174696f6e","id":12238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5412:32:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_e8c32179c84f665ce8d08bd9227f0ffb97fb232183e9391983a3ca8f91606177","typeString":"literal_string \"Invalid factory implementation\""},"value":"Invalid factory implementation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e8c32179c84f665ce8d08bd9227f0ffb97fb232183e9391983a3ca8f91606177","typeString":"literal_string \"Invalid factory implementation\""}],"id":12221,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5294:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5294:160:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12240,"nodeType":"ExpressionStatement","src":"5294:160:81"},{"expression":{"id":12245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12241,"name":"_gaugeTypeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11973,"src":"5465:17:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"mapping(string memory => contract ILiquidityGaugeFactory)"}},"id":12243,"indexExpression":{"id":12242,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"5483:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5465:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12244,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12210,"src":"5496:7:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"src":"5465:38:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":12246,"nodeType":"ExpressionStatement","src":"5465:38:81"},{"eventCall":{"arguments":[{"id":12248,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"5535:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12249,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"5546:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12250,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12210,"src":"5557:7:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}],"id":12247,"name":"GaugeFactorySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"5519:15:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_contract$_ILiquidityGaugeFactory_$941_$returns$__$","typeString":"function (string memory,string memory,contract ILiquidityGaugeFactory)"}},"id":12251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5519:46:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12252,"nodeType":"EmitStatement","src":"5514:51:81"}]},"documentation":{"id":12208,"nodeType":"StructuredDocumentation","src":"5002:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"066edd7a","id":12254,"implemented":true,"kind":"function","modifiers":[{"id":12216,"modifierName":{"id":12215,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"5158:12:81","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"5158:12:81"},{"arguments":[{"id":12218,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"5198:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":12219,"modifierName":{"id":12217,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12015,"src":"5179:18:81","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"5179:29:81"}],"name":"setGaugeFactory","nodeType":"FunctionDefinition","overrides":{"id":12214,"nodeType":"OverrideSpecifier","overrides":[],"src":"5141:8:81"},"parameters":{"id":12213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12210,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":12254,"src":"5059:30:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":12209,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"5059:22:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"},{"constant":false,"id":12212,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12254,"src":"5091:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12211,"name":"string","nodeType":"ElementaryTypeName","src":"5091:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5058:57:81"},"returnParameters":{"id":12220,"nodeType":"ParameterList","parameters":[],"src":"5213:0:81"},"scope":12363,"src":"5034:538:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12281,"nodeType":"Block","src":"5708:190:81","statements":[{"assignments":[12264],"declarations":[{"constant":false,"id":12264,"mutability":"mutable","name":"gaugeFactory","nodeType":"VariableDeclaration","scope":12281,"src":"5718:35:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":12263,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"5718:22:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"id":12268,"initialValue":{"baseExpression":{"id":12265,"name":"_gaugeTypeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11973,"src":"5756:17:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"mapping(string memory => contract ILiquidityGaugeFactory)"}},"id":12267,"indexExpression":{"id":12266,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12258,"src":"5774:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5756:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"VariableDeclarationStatement","src":"5718:66:81"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"id":12273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12269,"name":"gaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12264,"src":"5801:12:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":12271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5840:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12270,"name":"ILiquidityGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":941,"src":"5817:22:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"type(contract ILiquidityGaugeFactory)"}},"id":12272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5817:25:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"src":"5801:41:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":12277,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12256,"src":"5885:5:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12275,"name":"gaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12264,"src":"5853:12:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":12276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isGaugeFromFactory","nodeType":"MemberAccess","referencedDeclaration":940,"src":"5853:31:81","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":12278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5853:38:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5801:90:81","trueExpression":{"hexValue":"66616c7365","id":12274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5845:5:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12262,"id":12280,"nodeType":"Return","src":"5794:97:81"}]},"id":12282,"implemented":true,"kind":"function","modifiers":[],"name":"_isGaugeFromValidFactory","nodeType":"FunctionDefinition","parameters":{"id":12259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12256,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":12282,"src":"5639:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12255,"name":"address","nodeType":"ElementaryTypeName","src":"5639:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12258,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12282,"src":"5654:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12257,"name":"string","nodeType":"ElementaryTypeName","src":"5654:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5638:40:81"},"returnParameters":{"id":12262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12261,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12282,"src":"5702:4:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12260,"name":"bool","nodeType":"ElementaryTypeName","src":"5702:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5701:6:81"},"scope":12363,"src":"5605:293:81","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12315,"nodeType":"Block","src":"6087:411:81","statements":[{"expression":{"arguments":[{"arguments":[{"id":12292,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12285,"src":"6130:5:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12293,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12287,"src":"6137:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12291,"name":"_isGaugeFromValidFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12282,"src":"6105:24:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (address,string memory) view returns (bool)"}},"id":12294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6105:42:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206761756765","id":12295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6149:15:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f01a4186ff9a4f4fec3be353497709ea5e4152dad176712bbaa55bd57735b49","typeString":"literal_string \"Invalid gauge\""},"value":"Invalid gauge"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f01a4186ff9a4f4fec3be353497709ea5e4152dad176712bbaa55bd57735b49","typeString":"literal_string \"Invalid gauge\""}],"id":12290,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6097:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6097:68:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12297,"nodeType":"ExpressionStatement","src":"6097:68:81"},{"expression":{"arguments":[{"arguments":[{"id":12303,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11962,"src":"6351:16:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}],"id":12302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6343:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12301,"name":"address","nodeType":"ElementaryTypeName","src":"6343:7:81","typeDescriptions":{}}},"id":12304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6343:25:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":12307,"name":"IGaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":821,"src":"6405:16:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IGaugeController_$821_$","typeString":"type(contract IGaugeController)"}},"id":12308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"add_gauge","nodeType":"MemberAccess","referencedDeclaration":789,"src":"6405:26:81","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_int128_$returns$__$","typeString":"function IGaugeController.add_gauge(address,int128)"}},"id":12309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"6405:35:81","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":12310,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12285,"src":"6442:5:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12311,"name":"_ETHEREUM_GAUGE_CONTROLLER_TYPE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11952,"src":"6449:31:81","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":12305,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6382:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12306,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"6382:22:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":12312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6382:99:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12298,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11966,"src":"6287:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":12300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"performAction","nodeType":"MemberAccess","referencedDeclaration":48,"src":"6287:42:81","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":12313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6287:204:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12314,"nodeType":"ExpressionStatement","src":"6287:204:81"}]},"documentation":{"id":12283,"nodeType":"StructuredDocumentation","src":"5904:111:81","text":" @dev Adds `gauge` to the GaugeController with type `gaugeType` and an initial weight of zero"},"id":12316,"implemented":true,"kind":"function","modifiers":[],"name":"_addGauge","nodeType":"FunctionDefinition","parameters":{"id":12288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12285,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":12316,"src":"6039:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12284,"name":"address","nodeType":"ElementaryTypeName","src":"6039:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12287,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12316,"src":"6054:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12286,"name":"string","nodeType":"ElementaryTypeName","src":"6054:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6038:40:81"},"returnParameters":{"id":12289,"nodeType":"ParameterList","parameters":[],"src":"6087:0:81"},"scope":12363,"src":"6020:478:81","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":12361,"nodeType":"Block","src":"6585:294:81","statements":[{"assignments":[12324],"declarations":[{"constant":false,"id":12324,"mutability":"mutable","name":"gaugeTypeHash","nodeType":"VariableDeclaration","scope":12361,"src":"6595:21:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12323,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6595:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":12331,"initialValue":{"arguments":[{"arguments":[{"id":12328,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12318,"src":"6646:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":12326,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6629:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"6629:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6629:27:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12325,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"6619:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":12330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6619:38:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6595:62:81"},{"body":{"id":12357,"nodeType":"Block","src":"6716:134:81","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":12352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12343,"name":"gaugeTypeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12324,"src":"6734:13:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"baseExpression":{"id":12347,"name":"_gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11969,"src":"6778:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":12349,"indexExpression":{"id":12348,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12333,"src":"6790:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6778:14:81","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":12345,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6761:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"6761:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6761:32:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12344,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"6751:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":12351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6751:43:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6734:60:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12356,"nodeType":"IfStatement","src":"6730:110:81","trueBody":{"id":12355,"nodeType":"Block","src":"6796:44:81","statements":[{"expression":{"hexValue":"74727565","id":12353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6821:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":12322,"id":12354,"nodeType":"Return","src":"6814:11:81"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12336,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12333,"src":"6687:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":12337,"name":"_gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11969,"src":"6691:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":12338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6691:18:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6687:22:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12358,"initializationExpression":{"assignments":[12333],"declarations":[{"constant":false,"id":12333,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12358,"src":"6672:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12332,"name":"uint256","nodeType":"ElementaryTypeName","src":"6672:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12335,"initialValue":{"hexValue":"30","id":12334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6684:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6672:13:81"},"loopExpression":{"expression":{"id":12341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6711:3:81","subExpression":{"id":12340,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12333,"src":"6713:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12342,"nodeType":"ExpressionStatement","src":"6711:3:81"},"nodeType":"ForStatement","src":"6667:183:81"},{"expression":{"hexValue":"66616c7365","id":12359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6867:5:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":12322,"id":12360,"nodeType":"Return","src":"6860:12:81"}]},"id":12362,"implemented":true,"kind":"function","modifiers":[],"name":"_isValidGaugeType","nodeType":"FunctionDefinition","parameters":{"id":12319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12318,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12362,"src":"6531:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12317,"name":"string","nodeType":"ElementaryTypeName","src":"6531:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6530:25:81"},"returnParameters":{"id":12322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12321,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12362,"src":"6579:4:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12320,"name":"bool","nodeType":"ElementaryTypeName","src":"6579:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6578:6:81"},"scope":12363,"src":"6504:375:81","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":12364,"src":"1245:5636:81"}],"src":"688:6194:81"},"id":81},"contracts/fee-distribution/FeeDistributor.sol":{"ast":{"absolutePath":"contracts/fee-distribution/FeeDistributor.sol","exportedSymbols":{"FeeDistributor":[13820]},"id":13821,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12365,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:82"},{"id":12366,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:82"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","id":12367,"nodeType":"ImportDirective","scope":13821,"sourceUnit":2260,"src":"747:91:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol","id":12368,"nodeType":"ImportDirective","scope":13821,"sourceUnit":625,"src":"839:85:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","id":12369,"nodeType":"ImportDirective","scope":13821,"sourceUnit":1560,"src":"925:83:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":12370,"nodeType":"ImportDirective","scope":13821,"sourceUnit":7188,"src":"1010:85:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol","id":12371,"nodeType":"ImportDirective","scope":13821,"sourceUnit":3554,"src":"1096:83:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","id":12372,"nodeType":"ImportDirective","scope":13821,"sourceUnit":3421,"src":"1180:77:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":12373,"nodeType":"ImportDirective","scope":13821,"sourceUnit":7342,"src":"1258:79:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","id":12374,"nodeType":"ImportDirective","scope":13821,"sourceUnit":7420,"src":"1338:78:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","id":12375,"nodeType":"ImportDirective","scope":13821,"sourceUnit":5684,"src":"1417:66:82","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12377,"name":"IFeeDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":624,"src":"2040:15:82","typeDescriptions":{"typeIdentifier":"t_contract$_IFeeDistributor_$624","typeString":"contract IFeeDistributor"}},"id":12378,"nodeType":"InheritanceSpecifier","src":"2040:15:82"},{"baseName":{"id":12379,"name":"OptionalOnlyCaller","nodeType":"UserDefinedTypeName","referencedDeclaration":3553,"src":"2057:18:82","typeDescriptions":{"typeIdentifier":"t_contract$_OptionalOnlyCaller_$3553","typeString":"contract OptionalOnlyCaller"}},"id":12380,"nodeType":"InheritanceSpecifier","src":"2057:18:82"},{"baseName":{"id":12381,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"2077:15:82","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":12382,"nodeType":"InheritanceSpecifier","src":"2077:15:82"}],"contractDependencies":[624,2293,2311,3308,3553,3603,6021,7187],"contractKind":"contract","documentation":{"id":12376,"nodeType":"StructuredDocumentation","src":"1522:490:82","text":" @title Fee Distributor\n @notice Distributes any tokens transferred to the contract (e.g. Protocol fees and any BAL emissions) among veBAL\n holders proportionally based on a snapshot of the week at which the tokens are sent to the FeeDistributor contract.\n @dev Supports distributing arbitrarily many different tokens. In order to start distributing a new token to veBAL\n holders simply transfer the tokens to the `FeeDistributor` contract and then call `checkpointToken`."},"fullyImplemented":true,"id":13820,"linearizedBaseContracts":[13820,7187,3553,3603,3308,6021,2311,2293,624],"name":"FeeDistributor","nodeType":"ContractDefinition","nodes":[{"id":12385,"libraryName":{"id":12383,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7419,"src":"2105:8:82","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7419","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"2099:27:82","typeName":{"id":12384,"name":"uint256","nodeType":"ElementaryTypeName","src":"2118:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":12388,"libraryName":{"id":12386,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"2137:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"2131:27:82","typeName":{"id":12387,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2151:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":false,"id":12390,"mutability":"immutable","name":"_votingEscrow","nodeType":"VariableDeclaration","scope":13820,"src":"2164:45:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":12389,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"2164:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"private"},{"constant":false,"id":12392,"mutability":"immutable","name":"_startTime","nodeType":"VariableDeclaration","scope":13820,"src":"2216:36:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12391,"name":"uint256","nodeType":"ElementaryTypeName","src":"2216:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":12394,"mutability":"mutable","name":"_timeCursor","nodeType":"VariableDeclaration","scope":13820,"src":"2279:27:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12393,"name":"uint256","nodeType":"ElementaryTypeName","src":"2279:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":12398,"mutability":"mutable","name":"_veSupplyCache","nodeType":"VariableDeclaration","scope":13820,"src":"2312:50:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":12397,"keyType":{"id":12395,"name":"uint256","nodeType":"ElementaryTypeName","src":"2320:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2312:27:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":12396,"name":"uint256","nodeType":"ElementaryTypeName","src":"2331:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"canonicalName":"FeeDistributor.TokenState","id":12405,"members":[{"constant":false,"id":12400,"mutability":"mutable","name":"startTime","nodeType":"VariableDeclaration","scope":12405,"src":"2783:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12399,"name":"uint64","nodeType":"ElementaryTypeName","src":"2783:6:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12402,"mutability":"mutable","name":"timeCursor","nodeType":"VariableDeclaration","scope":12405,"src":"2809:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12401,"name":"uint64","nodeType":"ElementaryTypeName","src":"2809:6:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12404,"mutability":"mutable","name":"cachedBalance","nodeType":"VariableDeclaration","scope":12405,"src":"2836:21:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":12403,"name":"uint128","nodeType":"ElementaryTypeName","src":"2836:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"TokenState","nodeType":"StructDefinition","scope":13820,"src":"2755:109:82","visibility":"public"},{"constant":false,"id":12409,"mutability":"mutable","name":"_tokenState","nodeType":"VariableDeclaration","scope":13820,"src":"2869:49:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_TokenState_$12405_storage_$","typeString":"mapping(contract IERC20 => struct FeeDistributor.TokenState)"},"typeName":{"id":12408,"keyType":{"id":12406,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2877:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"2869:29:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_TokenState_$12405_storage_$","typeString":"mapping(contract IERC20 => struct FeeDistributor.TokenState)"},"valueType":{"id":12407,"name":"TokenState","nodeType":"UserDefinedTypeName","referencedDeclaration":12405,"src":"2887:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState"}}},"visibility":"private"},{"constant":false,"id":12415,"mutability":"mutable","name":"_tokensPerWeek","nodeType":"VariableDeclaration","scope":13820,"src":"2924:69:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(contract IERC20 => mapping(uint256 => uint256))"},"typeName":{"id":12414,"keyType":{"id":12410,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2932:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"2924:46:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(contract IERC20 => mapping(uint256 => uint256))"},"valueType":{"id":12413,"keyType":{"id":12411,"name":"uint256","nodeType":"ElementaryTypeName","src":"2950:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2942:27:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":12412,"name":"uint256","nodeType":"ElementaryTypeName","src":"2961:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"canonicalName":"FeeDistributor.UserState","id":12422,"members":[{"constant":false,"id":12417,"mutability":"mutable","name":"startTime","nodeType":"VariableDeclaration","scope":12422,"src":"3246:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12416,"name":"uint64","nodeType":"ElementaryTypeName","src":"3246:6:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12419,"mutability":"mutable","name":"timeCursor","nodeType":"VariableDeclaration","scope":12422,"src":"3272:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12418,"name":"uint64","nodeType":"ElementaryTypeName","src":"3272:6:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12421,"mutability":"mutable","name":"lastEpochCheckpointed","nodeType":"VariableDeclaration","scope":12422,"src":"3299:29:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":12420,"name":"uint128","nodeType":"ElementaryTypeName","src":"3299:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"UserState","nodeType":"StructDefinition","scope":13820,"src":"3219:116:82","visibility":"public"},{"constant":false,"id":12426,"mutability":"mutable","name":"_userState","nodeType":"VariableDeclaration","scope":13820,"src":"3340:49:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserState_$12422_storage_$","typeString":"mapping(address => struct FeeDistributor.UserState)"},"typeName":{"id":12425,"keyType":{"id":12423,"name":"address","nodeType":"ElementaryTypeName","src":"3348:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3340:29:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserState_$12422_storage_$","typeString":"mapping(address => struct FeeDistributor.UserState)"},"valueType":{"id":12424,"name":"UserState","nodeType":"UserDefinedTypeName","referencedDeclaration":12422,"src":"3359:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState"}}},"visibility":"internal"},{"constant":false,"id":12432,"mutability":"mutable","name":"_userBalanceAtTimestamp","nodeType":"VariableDeclaration","scope":13820,"src":"3395:79:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":12431,"keyType":{"id":12427,"name":"address","nodeType":"ElementaryTypeName","src":"3403:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3395:47:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueType":{"id":12430,"keyType":{"id":12428,"name":"uint256","nodeType":"ElementaryTypeName","src":"3422:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"3414:27:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":12429,"name":"uint256","nodeType":"ElementaryTypeName","src":"3433:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":12438,"mutability":"mutable","name":"_userTokenTimeCursor","nodeType":"VariableDeclaration","scope":13820,"src":"3480:75:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$2447_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"},"typeName":{"id":12437,"keyType":{"id":12433,"name":"address","nodeType":"ElementaryTypeName","src":"3488:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3480:46:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$2447_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"},"valueType":{"id":12436,"keyType":{"id":12434,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3507:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"3499:26:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"},"valueType":{"id":12435,"name":"uint256","nodeType":"ElementaryTypeName","src":"3517:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"body":{"id":12496,"nodeType":"Block","src":"3651:753:82","statements":[{"expression":{"id":12451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12449,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"3661:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12450,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12440,"src":"3677:12:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"src":"3661:28:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":12452,"nodeType":"ExpressionStatement","src":"3661:28:82"},{"expression":{"id":12457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12453,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12442,"src":"3700:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12455,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12442,"src":"3732:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12454,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"3712:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":12456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3712:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3700:42:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12458,"nodeType":"ExpressionStatement","src":"3700:42:82"},{"assignments":[12460],"declarations":[{"constant":false,"id":12460,"mutability":"mutable","name":"currentWeek","nodeType":"VariableDeclaration","scope":12496,"src":"3752:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12459,"name":"uint256","nodeType":"ElementaryTypeName","src":"3752:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12465,"initialValue":{"arguments":[{"expression":{"id":12462,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3794:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":12463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"3794:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12461,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"3774:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":12464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3774:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3752:58:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12467,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12442,"src":"3828:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":12468,"name":"currentWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12460,"src":"3841:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3828:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f74207374617274206265666f72652063757272656e74207765656b","id":12470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3854:34:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_a2c7a1c6d36effa420c04b43d5e8a3ab728c0d15f1dd9cfdf00157469aac0494","typeString":"literal_string \"Cannot start before current week\""},"value":"Cannot start before current week"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a2c7a1c6d36effa420c04b43d5e8a3ab728c0d15f1dd9cfdf00157469aac0494","typeString":"literal_string \"Cannot start before current week\""}],"id":12466,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3820:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3820:69:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12472,"nodeType":"ExpressionStatement","src":"3820:69:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12473,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12442,"src":"3903:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12474,"name":"currentWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12460,"src":"3916:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3903:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12487,"nodeType":"IfStatement","src":"3899:434:82","trueBody":{"id":12486,"nodeType":"Block","src":"3929:404:82","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12479,"name":"currentWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12460,"src":"4261:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12477,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12440,"src":"4236:12:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":12478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":1507,"src":"4236:24:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":12480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4236:37:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4276:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4236:41:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5a65726f20746f74616c20737570706c7920726573756c747320696e206c6f737420746f6b656e73","id":12483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4279:42:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_ccc2e3e35a756d0d3ed526de1f8044ce6ffcb47cba51a7723baff87899691d36","typeString":"literal_string \"Zero total supply results in lost tokens\""},"value":"Zero total supply results in lost tokens"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ccc2e3e35a756d0d3ed526de1f8044ce6ffcb47cba51a7723baff87899691d36","typeString":"literal_string \"Zero total supply results in lost tokens\""}],"id":12476,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4228:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4228:94:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12485,"nodeType":"ExpressionStatement","src":"4228:94:82"}]}},{"expression":{"id":12490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12488,"name":"_startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12392,"src":"4342:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12489,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12442,"src":"4355:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4342:22:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12491,"nodeType":"ExpressionStatement","src":"4342:22:82"},{"expression":{"id":12494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12492,"name":"_timeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12394,"src":"4374:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12493,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12442,"src":"4388:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4374:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12495,"nodeType":"ExpressionStatement","src":"4374:23:82"}]},"id":12497,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4665654469737472696275746f72","id":12445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3628:16:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_0618c188edbe06a8ffa15e11b4f74493cfd6f23aba7fab610364d908072aac99","typeString":"literal_string \"FeeDistributor\""},"value":"FeeDistributor"},{"hexValue":"31","id":12446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3646:3:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":12447,"modifierName":{"id":12444,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"3621:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP712_$6021_$","typeString":"type(contract EIP712)"}},"nodeType":"ModifierInvocation","src":"3621:29:82"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":12443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12440,"mutability":"mutable","name":"votingEscrow","nodeType":"VariableDeclaration","scope":12497,"src":"3574:26:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":12439,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"3574:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"},{"constant":false,"id":12442,"mutability":"mutable","name":"startTime","nodeType":"VariableDeclaration","scope":12497,"src":"3602:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12441,"name":"uint256","nodeType":"ElementaryTypeName","src":"3602:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3573:47:82"},"returnParameters":{"id":12448,"nodeType":"ParameterList","parameters":[],"src":"3651:0:82"},"scope":13820,"src":"3562:842:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[492],"body":{"id":12506,"nodeType":"Block","src":"4563:37:82","statements":[{"expression":{"id":12504,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"4580:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"functionReturnParameters":12503,"id":12505,"nodeType":"Return","src":"4573:20:82"}]},"documentation":{"id":12498,"nodeType":"StructuredDocumentation","src":"4410:74:82","text":" @notice Returns the VotingEscrow (veBAL) token contract"},"functionSelector":"08b0308a","id":12507,"implemented":true,"kind":"function","modifiers":[],"name":"getVotingEscrow","nodeType":"FunctionDefinition","overrides":{"id":12500,"nodeType":"OverrideSpecifier","overrides":[],"src":"4530:8:82"},"parameters":{"id":12499,"nodeType":"ParameterList","parameters":[],"src":"4513:2:82"},"returnParameters":{"id":12503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12502,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12507,"src":"4548:13:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":12501,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"4548:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"src":"4547:15:82"},"scope":13820,"src":"4489:111:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[498],"body":{"id":12516,"nodeType":"Block","src":"4786:35:82","statements":[{"expression":{"id":12514,"name":"_timeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12394,"src":"4803:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12513,"id":12515,"nodeType":"Return","src":"4796:18:82"}]},"documentation":{"id":12508,"nodeType":"StructuredDocumentation","src":"4606:109:82","text":" @notice Returns the global time cursor representing the most earliest uncheckpointed week."},"functionSelector":"82aa5ad4","id":12517,"implemented":true,"kind":"function","modifiers":[],"name":"getTimeCursor","nodeType":"FunctionDefinition","overrides":{"id":12510,"nodeType":"OverrideSpecifier","overrides":[],"src":"4759:8:82"},"parameters":{"id":12509,"nodeType":"ParameterList","parameters":[],"src":"4742:2:82"},"returnParameters":{"id":12513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12512,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12517,"src":"4777:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12511,"name":"uint256","nodeType":"ElementaryTypeName","src":"4777:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4776:9:82"},"scope":13820,"src":"4720:101:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[506],"body":{"id":12531,"nodeType":"Block","src":"5082:51:82","statements":[{"expression":{"expression":{"baseExpression":{"id":12526,"name":"_userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12426,"src":"5099:10:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserState_$12422_storage_$","typeString":"mapping(address => struct FeeDistributor.UserState storage ref)"}},"id":12528,"indexExpression":{"id":12527,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12520,"src":"5110:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5099:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage","typeString":"struct FeeDistributor.UserState storage ref"}},"id":12529,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12419,"src":"5099:27:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":12525,"id":12530,"nodeType":"Return","src":"5092:34:82"}]},"documentation":{"id":12518,"nodeType":"StructuredDocumentation","src":"4827:168:82","text":" @notice Returns the user-level time cursor representing the most earliest uncheckpointed week.\n @param user - The address of the user to query."},"functionSelector":"876e69a1","id":12532,"implemented":true,"kind":"function","modifiers":[],"name":"getUserTimeCursor","nodeType":"FunctionDefinition","overrides":{"id":12522,"nodeType":"OverrideSpecifier","overrides":[],"src":"5055:8:82"},"parameters":{"id":12521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12520,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":12532,"src":"5027:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12519,"name":"address","nodeType":"ElementaryTypeName","src":"5027:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5026:14:82"},"returnParameters":{"id":12525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12524,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12532,"src":"5073:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12523,"name":"uint256","nodeType":"ElementaryTypeName","src":"5073:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5072:9:82"},"scope":13820,"src":"5000:133:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[514],"body":{"id":12546,"nodeType":"Block","src":"5412:53:82","statements":[{"expression":{"expression":{"baseExpression":{"id":12541,"name":"_tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12409,"src":"5429:11:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_TokenState_$12405_storage_$","typeString":"mapping(contract IERC20 => struct FeeDistributor.TokenState storage ref)"}},"id":12543,"indexExpression":{"id":12542,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12535,"src":"5441:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5429:18:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage","typeString":"struct FeeDistributor.TokenState storage ref"}},"id":12544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12402,"src":"5429:29:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":12540,"id":12545,"nodeType":"Return","src":"5422:36:82"}]},"documentation":{"id":12533,"nodeType":"StructuredDocumentation","src":"5139:185:82","text":" @notice Returns the token-level time cursor storing the timestamp at up to which tokens have been distributed.\n @param token - The ERC20 token address to query."},"functionSelector":"acbc1428","id":12547,"implemented":true,"kind":"function","modifiers":[],"name":"getTokenTimeCursor","nodeType":"FunctionDefinition","overrides":{"id":12537,"nodeType":"OverrideSpecifier","overrides":[],"src":"5385:8:82"},"parameters":{"id":12536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12535,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12547,"src":"5357:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12534,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"5357:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5356:14:82"},"returnParameters":{"id":12540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12539,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12547,"src":"5403:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12538,"name":"uint256","nodeType":"ElementaryTypeName","src":"5403:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5402:9:82"},"scope":13820,"src":"5329:136:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[524],"body":{"id":12563,"nodeType":"Block","src":"5813:60:82","statements":[{"expression":{"arguments":[{"id":12559,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12550,"src":"5854:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12560,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12552,"src":"5860:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":12558,"name":"_getUserTokenTimeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13706,"src":"5830:23:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_IERC20_$2447_$returns$_t_uint256_$","typeString":"function (address,contract IERC20) view returns (uint256)"}},"id":12561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5830:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12557,"id":12562,"nodeType":"Return","src":"5823:43:82"}]},"documentation":{"id":12548,"nodeType":"StructuredDocumentation","src":"5471:236:82","text":" @notice Returns the user-level time cursor storing the timestamp of the latest token distribution claimed.\n @param user - The address of the user to query.\n @param token - The ERC20 token address to query."},"functionSelector":"8050a7ee","id":12564,"implemented":true,"kind":"function","modifiers":[],"name":"getUserTokenTimeCursor","nodeType":"FunctionDefinition","overrides":{"id":12554,"nodeType":"OverrideSpecifier","overrides":[],"src":"5786:8:82"},"parameters":{"id":12553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12550,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":12564,"src":"5744:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12549,"name":"address","nodeType":"ElementaryTypeName","src":"5744:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12552,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12564,"src":"5758:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12551,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"5758:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5743:28:82"},"returnParameters":{"id":12557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12556,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12564,"src":"5804:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12555,"name":"uint256","nodeType":"ElementaryTypeName","src":"5804:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5803:9:82"},"scope":13820,"src":"5712:161:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[534],"body":{"id":12581,"nodeType":"Block","src":"6472:64:82","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":12575,"name":"_userBalanceAtTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12432,"src":"6489:23:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":12577,"indexExpression":{"id":12576,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12567,"src":"6513:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6489:29:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":12579,"indexExpression":{"id":12578,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12569,"src":"6519:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6489:40:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12574,"id":12580,"nodeType":"Return","src":"6482:47:82"}]},"documentation":{"id":12565,"nodeType":"StructuredDocumentation","src":"5879:479:82","text":" @notice Returns the user's cached balance of veBAL as of the provided timestamp.\n @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n This function requires `user` to have been checkpointed past `timestamp` so that their balance is cached.\n @param user - The address of the user of which to read the cached balance of.\n @param timestamp - The timestamp at which to read the `user`'s cached balance at."},"functionSelector":"de681faf","id":12582,"implemented":true,"kind":"function","modifiers":[],"name":"getUserBalanceAtTimestamp","nodeType":"FunctionDefinition","overrides":{"id":12571,"nodeType":"OverrideSpecifier","overrides":[],"src":"6445:8:82"},"parameters":{"id":12570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12567,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":12582,"src":"6398:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12566,"name":"address","nodeType":"ElementaryTypeName","src":"6398:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12569,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":12582,"src":"6412:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12568,"name":"uint256","nodeType":"ElementaryTypeName","src":"6412:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6397:33:82"},"returnParameters":{"id":12574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12573,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12582,"src":"6463:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12572,"name":"uint256","nodeType":"ElementaryTypeName","src":"6463:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6462:9:82"},"scope":13820,"src":"6363:173:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[542],"body":{"id":12595,"nodeType":"Block","src":"7033:49:82","statements":[{"expression":{"baseExpression":{"id":12591,"name":"_veSupplyCache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12398,"src":"7050:14:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":12593,"indexExpression":{"id":12592,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12585,"src":"7065:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7050:25:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12590,"id":12594,"nodeType":"Return","src":"7043:32:82"}]},"documentation":{"id":12583,"nodeType":"StructuredDocumentation","src":"6542:391:82","text":" @notice Returns the cached total supply of veBAL as of the provided timestamp.\n @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n This function requires the contract to have been checkpointed past `timestamp` so that the supply is cached.\n @param timestamp - The timestamp at which to read the cached total supply at."},"functionSelector":"4f3c5090","id":12596,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalSupplyAtTimestamp","nodeType":"FunctionDefinition","overrides":{"id":12587,"nodeType":"OverrideSpecifier","overrides":[],"src":"7006:8:82"},"parameters":{"id":12586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12585,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":12596,"src":"6973:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12584,"name":"uint256","nodeType":"ElementaryTypeName","src":"6973:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6972:19:82"},"returnParameters":{"id":12590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12589,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12596,"src":"7024:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12588,"name":"uint256","nodeType":"ElementaryTypeName","src":"7024:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7023:9:82"},"scope":13820,"src":"6938:144:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[550],"body":{"id":12610,"nodeType":"Block","src":"7259:56:82","statements":[{"expression":{"expression":{"baseExpression":{"id":12605,"name":"_tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12409,"src":"7276:11:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_TokenState_$12405_storage_$","typeString":"mapping(contract IERC20 => struct FeeDistributor.TokenState storage ref)"}},"id":12607,"indexExpression":{"id":12606,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12599,"src":"7288:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7276:18:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage","typeString":"struct FeeDistributor.TokenState storage ref"}},"id":12608,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"cachedBalance","nodeType":"MemberAccess","referencedDeclaration":12404,"src":"7276:32:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":12604,"id":12609,"nodeType":"Return","src":"7269:39:82"}]},"documentation":{"id":12597,"nodeType":"StructuredDocumentation","src":"7088:82:82","text":" @notice Returns the FeeDistributor's cached balance of `token`."},"functionSelector":"2308805b","id":12611,"implemented":true,"kind":"function","modifiers":[],"name":"getTokenLastBalance","nodeType":"FunctionDefinition","overrides":{"id":12601,"nodeType":"OverrideSpecifier","overrides":[],"src":"7232:8:82"},"parameters":{"id":12600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12599,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12611,"src":"7204:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12598,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"7204:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"7203:14:82"},"returnParameters":{"id":12604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12603,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12611,"src":"7250:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12602,"name":"uint256","nodeType":"ElementaryTypeName","src":"7250:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7249:9:82"},"scope":13820,"src":"7175:140:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[560],"body":{"id":12628,"nodeType":"Block","src":"7716:56:82","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":12622,"name":"_tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12415,"src":"7733:14:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(contract IERC20 => mapping(uint256 => uint256))"}},"id":12624,"indexExpression":{"id":12623,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12614,"src":"7748:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7733:21:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":12626,"indexExpression":{"id":12625,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12616,"src":"7755:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7733:32:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12621,"id":12627,"nodeType":"Return","src":"7726:39:82"}]},"documentation":{"id":12612,"nodeType":"StructuredDocumentation","src":"7321:280:82","text":" @notice Returns the amount of `token` which the FeeDistributor received in the week beginning at `timestamp`.\n @param token - The ERC20 token address to query.\n @param timestamp - The timestamp corresponding to the beginning of the week of interest."},"functionSelector":"d3dc4ca1","id":12629,"implemented":true,"kind":"function","modifiers":[],"name":"getTokensDistributedInWeek","nodeType":"FunctionDefinition","overrides":{"id":12618,"nodeType":"OverrideSpecifier","overrides":[],"src":"7689:8:82"},"parameters":{"id":12617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12614,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12629,"src":"7642:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12613,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"7642:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":12616,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":12629,"src":"7656:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12615,"name":"uint256","nodeType":"ElementaryTypeName","src":"7656:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7641:33:82"},"returnParameters":{"id":12621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12620,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12629,"src":"7707:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12619,"name":"uint256","nodeType":"ElementaryTypeName","src":"7707:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7706:9:82"},"scope":13820,"src":"7606:166:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[568],"body":{"id":12662,"nodeType":"Block","src":"8506:153:82","statements":[{"expression":{"arguments":[{"id":12641,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12632,"src":"8533:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"66616c7365","id":12642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8540:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12640,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"8516:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8516:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12644,"nodeType":"ExpressionStatement","src":"8516:30:82"},{"expression":{"arguments":[{"expression":{"id":12648,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8579:3:82","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8579:10:82","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":12652,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8599:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_FeeDistributor_$13820","typeString":"contract FeeDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_FeeDistributor_$13820","typeString":"contract FeeDistributor"}],"id":12651,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8591:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12650,"name":"address","nodeType":"ElementaryTypeName","src":"8591:7:82","typeDescriptions":{}}},"id":12653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8591:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12654,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12634,"src":"8606:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12645,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12632,"src":"8556:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":12647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":7304,"src":"8556:22:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":12655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8556:57:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12656,"nodeType":"ExpressionStatement","src":"8556:57:82"},{"expression":{"arguments":[{"id":12658,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12632,"src":"8640:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"74727565","id":12659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8647:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12657,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"8623:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8623:29:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12661,"nodeType":"ExpressionStatement","src":"8623:29:82"}]},"documentation":{"id":12630,"nodeType":"StructuredDocumentation","src":"7797:621:82","text":" @notice Deposits tokens to be distributed in the current week.\n @dev Sending tokens directly to the FeeDistributor instead of using `depositToken` may result in tokens being\n retroactively distributed to past weeks, or for the distribution to carry over to future weeks.\n If for some reason `depositToken` cannot be called, in order to ensure that all tokens are correctly distributed\n manually call `checkpointToken` before and after the token transfer.\n @param token - The ERC20 token address to distribute.\n @param amount - The amount of tokens to deposit."},"functionSelector":"338b5dea","id":12663,"implemented":true,"kind":"function","modifiers":[{"id":12638,"modifierName":{"id":12637,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"8493:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"8493:12:82"}],"name":"depositToken","nodeType":"FunctionDefinition","overrides":{"id":12636,"nodeType":"OverrideSpecifier","overrides":[],"src":"8484:8:82"},"parameters":{"id":12635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12632,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12663,"src":"8445:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12631,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"8445:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":12634,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12663,"src":"8459:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12633,"name":"uint256","nodeType":"ElementaryTypeName","src":"8459:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8444:30:82"},"returnParameters":{"id":12639,"nodeType":"ParameterList","parameters":[],"src":"8506:0:82"},"scope":13820,"src":"8423:236:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[578],"body":{"id":12731,"nodeType":"Block","src":"9130:355:82","statements":[{"expression":{"arguments":[{"expression":{"id":12679,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"9176:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9176:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":12681,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12670,"src":"9191:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":12682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9191:14:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12676,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3420,"src":"9140:12:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$3420_$","typeString":"type(library InputHelpers)"}},"id":12678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ensureInputLengthMatch","nodeType":"MemberAccess","referencedDeclaration":3328,"src":"9140:35:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":12683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9140:66:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12684,"nodeType":"ExpressionStatement","src":"9140:66:82"},{"assignments":[12686],"declarations":[{"constant":false,"id":12686,"mutability":"mutable","name":"length","nodeType":"VariableDeclaration","scope":12731,"src":"9217:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12685,"name":"uint256","nodeType":"ElementaryTypeName","src":"9217:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12689,"initialValue":{"expression":{"id":12687,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"9234:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9234:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9217:30:82"},{"body":{"id":12729,"nodeType":"Block","src":"9294:185:82","statements":[{"expression":{"arguments":[{"baseExpression":{"id":12701,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"9325:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12703,"indexExpression":{"id":12702,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12691,"src":"9332:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9325:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"66616c7365","id":12704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9336:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12700,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"9308:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9308:34:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12706,"nodeType":"ExpressionStatement","src":"9308:34:82"},{"expression":{"arguments":[{"expression":{"id":12711,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9383:3:82","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9383:10:82","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":12715,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9403:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_FeeDistributor_$13820","typeString":"contract FeeDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_FeeDistributor_$13820","typeString":"contract FeeDistributor"}],"id":12714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9395:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12713,"name":"address","nodeType":"ElementaryTypeName","src":"9395:7:82","typeDescriptions":{}}},"id":12716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9395:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":12717,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12670,"src":"9410:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":12719,"indexExpression":{"id":12718,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12691,"src":"9418:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9410:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":12707,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"9356:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12709,"indexExpression":{"id":12708,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12691,"src":"9363:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9356:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":12710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":7304,"src":"9356:26:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":12720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9356:65:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12721,"nodeType":"ExpressionStatement","src":"9356:65:82"},{"expression":{"arguments":[{"baseExpression":{"id":12723,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"9452:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12725,"indexExpression":{"id":12724,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12691,"src":"9459:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9452:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"74727565","id":12726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9463:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12722,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"9435:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9435:33:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12728,"nodeType":"ExpressionStatement","src":"9435:33:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12694,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12691,"src":"9277:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12695,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12686,"src":"9281:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9277:10:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12730,"initializationExpression":{"assignments":[12691],"declarations":[{"constant":false,"id":12691,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12730,"src":"9262:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12690,"name":"uint256","nodeType":"ElementaryTypeName","src":"9262:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12693,"initialValue":{"hexValue":"30","id":12692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9274:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9262:13:82"},"loopExpression":{"expression":{"id":12698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"9289:3:82","subExpression":{"id":12697,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12691,"src":"9291:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12699,"nodeType":"ExpressionStatement","src":"9289:3:82"},"nodeType":"ForStatement","src":"9257:222:82"}]},"documentation":{"id":12664,"nodeType":"StructuredDocumentation","src":"8665:352:82","text":" @notice Deposits tokens to be distributed in the current week.\n @dev A version of `depositToken` which supports depositing multiple `tokens` at once.\n See `depositToken` for more details.\n @param tokens - An array of ERC20 token addresses to distribute.\n @param amounts - An array of token amounts to deposit."},"functionSelector":"7b8d6221","id":12732,"implemented":true,"kind":"function","modifiers":[{"id":12674,"modifierName":{"id":12673,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"9117:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"9117:12:82"}],"name":"depositTokens","nodeType":"FunctionDefinition","overrides":{"id":12672,"nodeType":"OverrideSpecifier","overrides":[],"src":"9108:8:82"},"parameters":{"id":12671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12667,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":12732,"src":"9045:24:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12665,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"9045:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":12666,"nodeType":"ArrayTypeName","src":"9045:8:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":12670,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":12732,"src":"9071:26:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12668,"name":"uint256","nodeType":"ElementaryTypeName","src":"9071:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12669,"nodeType":"ArrayTypeName","src":"9071:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9044:54:82"},"returnParameters":{"id":12675,"nodeType":"ParameterList","parameters":[],"src":"9130:0:82"},"scope":13820,"src":"9022:463:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[582],"body":{"id":12742,"nodeType":"Block","src":"9778:41:82","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12739,"name":"_checkpointTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13669,"src":"9788:22:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9788:24:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12741,"nodeType":"ExpressionStatement","src":"9788:24:82"}]},"documentation":{"id":12733,"nodeType":"StructuredDocumentation","src":"9513:207:82","text":" @notice Caches the total supply of veBAL at the beginning of each week.\n This function will be called automatically before claiming tokens to ensure the contract is properly updated."},"functionSelector":"c2c4c5c1","id":12743,"implemented":true,"kind":"function","modifiers":[{"id":12737,"modifierName":{"id":12736,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"9765:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"9765:12:82"}],"name":"checkpoint","nodeType":"FunctionDefinition","overrides":{"id":12735,"nodeType":"OverrideSpecifier","overrides":[],"src":"9756:8:82"},"parameters":{"id":12734,"nodeType":"ParameterList","parameters":[],"src":"9744:2:82"},"returnParameters":{"id":12738,"nodeType":"ParameterList","parameters":[],"src":"9778:0:82"},"scope":13820,"src":"9725:94:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[588],"body":{"id":12756,"nodeType":"Block","src":"10173:45:82","statements":[{"expression":{"arguments":[{"id":12753,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"10206:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12752,"name":"_checkpointUserBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"10183:22:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10183:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12755,"nodeType":"ExpressionStatement","src":"10183:28:82"}]},"documentation":{"id":12744,"nodeType":"StructuredDocumentation","src":"9825:274:82","text":" @notice Caches the user's balance of veBAL at the beginning of each week.\n This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n @param user - The address of the user to be checkpointed."},"functionSelector":"14866e08","id":12757,"implemented":true,"kind":"function","modifiers":[{"id":12750,"modifierName":{"id":12749,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"10160:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"10160:12:82"}],"name":"checkpointUser","nodeType":"FunctionDefinition","overrides":{"id":12748,"nodeType":"OverrideSpecifier","overrides":[],"src":"10151:8:82"},"parameters":{"id":12747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12746,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":12757,"src":"10128:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12745,"name":"address","nodeType":"ElementaryTypeName","src":"10128:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10127:14:82"},"returnParameters":{"id":12751,"nodeType":"ParameterList","parameters":[],"src":"10173:0:82"},"scope":13820,"src":"10104:114:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[594],"body":{"id":12771,"nodeType":"Block","src":"10808:46:82","statements":[{"expression":{"arguments":[{"id":12767,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12760,"src":"10835:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"74727565","id":12768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10842:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12766,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"10818:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10818:29:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12770,"nodeType":"ExpressionStatement","src":"10818:29:82"}]},"documentation":{"id":12758,"nodeType":"StructuredDocumentation","src":"10224:509:82","text":" @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n @dev Any `token` balance held by the FeeDistributor above that which is returned by `getTokenLastBalance`\n will be distributed evenly across the time period since `token` was last checkpointed.\n This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n @param token - The ERC20 token address to be checkpointed."},"functionSelector":"3902b9bc","id":12772,"implemented":true,"kind":"function","modifiers":[{"id":12764,"modifierName":{"id":12763,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"10795:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"10795:12:82"}],"name":"checkpointToken","nodeType":"FunctionDefinition","overrides":{"id":12762,"nodeType":"OverrideSpecifier","overrides":[],"src":"10786:8:82"},"parameters":{"id":12761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12760,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12772,"src":"10763:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12759,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"10763:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"10762:14:82"},"returnParameters":{"id":12765,"nodeType":"ParameterList","parameters":[],"src":"10808:0:82"},"scope":13820,"src":"10738:116:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[601],"body":{"id":12806,"nodeType":"Block","src":"11273:163:82","statements":[{"assignments":[12783],"declarations":[{"constant":false,"id":12783,"mutability":"mutable","name":"tokensLength","nodeType":"VariableDeclaration","scope":12806,"src":"11283:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12782,"name":"uint256","nodeType":"ElementaryTypeName","src":"11283:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12786,"initialValue":{"expression":{"id":12784,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12776,"src":"11306:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"11306:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11283:36:82"},{"body":{"id":12804,"nodeType":"Block","src":"11372:58:82","statements":[{"expression":{"arguments":[{"baseExpression":{"id":12798,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12776,"src":"11403:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12800,"indexExpression":{"id":12799,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12788,"src":"11410:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11403:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"74727565","id":12801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11414:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12797,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"11386:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11386:33:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12803,"nodeType":"ExpressionStatement","src":"11386:33:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12791,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12788,"src":"11349:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12792,"name":"tokensLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12783,"src":"11353:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11349:16:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12805,"initializationExpression":{"assignments":[12788],"declarations":[{"constant":false,"id":12788,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12805,"src":"11334:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12787,"name":"uint256","nodeType":"ElementaryTypeName","src":"11334:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12790,"initialValue":{"hexValue":"30","id":12789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11334:13:82"},"loopExpression":{"expression":{"id":12795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11367:3:82","subExpression":{"id":12794,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12788,"src":"11369:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12796,"nodeType":"ExpressionStatement","src":"11367:3:82"},"nodeType":"ForStatement","src":"11329:101:82"}]},"documentation":{"id":12773,"nodeType":"StructuredDocumentation","src":"10860:325:82","text":" @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n @dev A version of `checkpointToken` which supports checkpointing multiple tokens.\n See `checkpointToken` for more details.\n @param tokens - An array of ERC20 token addresses to be checkpointed."},"functionSelector":"905d10ac","id":12807,"implemented":true,"kind":"function","modifiers":[{"id":12780,"modifierName":{"id":12779,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"11260:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"11260:12:82"}],"name":"checkpointTokens","nodeType":"FunctionDefinition","overrides":{"id":12778,"nodeType":"OverrideSpecifier","overrides":[],"src":"11251:8:82"},"parameters":{"id":12777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12776,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":12807,"src":"11216:24:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12774,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"11216:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":12775,"nodeType":"ArrayTypeName","src":"11216:8:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"11215:26:82"},"returnParameters":{"id":12781,"nodeType":"ParameterList","parameters":[],"src":"11273:0:82"},"scope":13820,"src":"11190:246:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[611],"body":{"id":12844,"nodeType":"Block","src":"12116:194:82","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12823,"name":"_checkpointTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13669,"src":"12126:22:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12126:24:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12825,"nodeType":"ExpressionStatement","src":"12126:24:82"},{"expression":{"arguments":[{"id":12827,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12810,"src":"12183:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12826,"name":"_checkpointUserBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"12160:22:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12160:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12829,"nodeType":"ExpressionStatement","src":"12160:28:82"},{"expression":{"arguments":[{"id":12831,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12812,"src":"12215:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"66616c7365","id":12832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12222:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12830,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"12198:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12198:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12834,"nodeType":"ExpressionStatement","src":"12198:30:82"},{"assignments":[12836],"declarations":[{"constant":false,"id":12836,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12844,"src":"12239:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12835,"name":"uint256","nodeType":"ElementaryTypeName","src":"12239:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12841,"initialValue":{"arguments":[{"id":12838,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12810,"src":"12268:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12839,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12812,"src":"12274:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":12837,"name":"_claimToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13059,"src":"12256:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2447_$returns$_t_uint256_$","typeString":"function (address,contract IERC20) returns (uint256)"}},"id":12840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12256:24:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12239:41:82"},{"expression":{"id":12842,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12836,"src":"12297:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12822,"id":12843,"nodeType":"Return","src":"12290:13:82"}]},"documentation":{"id":12808,"nodeType":"StructuredDocumentation","src":"11459:486:82","text":" @notice Claims all pending distributions of the provided token for a user.\n @dev It's not necessary to explicitly checkpoint before calling this function, it will ensure the FeeDistributor\n is up to date before calculating the amount of tokens to be claimed.\n @param user - The user on behalf of which to claim.\n @param token - The ERC20 token address to be claimed.\n @return The amount of `token` sent to `user` as a result of claiming."},"functionSelector":"ca31879d","id":12845,"implemented":true,"kind":"function","modifiers":[{"id":12816,"modifierName":{"id":12815,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"12040:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"12040:12:82"},{"arguments":[{"id":12818,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12810,"src":"12080:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":12819,"modifierName":{"id":12817,"name":"optionalOnlyCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3449,"src":"12061:18:82","typeDescriptions":{"typeIdentifier":"t_modifier$_t_address_$","typeString":"modifier (address)"}},"nodeType":"ModifierInvocation","src":"12061:24:82"}],"name":"claimToken","nodeType":"FunctionDefinition","overrides":{"id":12814,"nodeType":"OverrideSpecifier","overrides":[],"src":"12023:8:82"},"parameters":{"id":12813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12810,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":12845,"src":"11970:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12809,"name":"address","nodeType":"ElementaryTypeName","src":"11970:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12812,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12845,"src":"11984:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12811,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"11984:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"11969:28:82"},"returnParameters":{"id":12822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12821,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12845,"src":"12103:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12820,"name":"uint256","nodeType":"ElementaryTypeName","src":"12103:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12102:9:82"},"scope":13820,"src":"11950:360:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[623],"body":{"id":12918,"nodeType":"Block","src":"12961:381:82","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12863,"name":"_checkpointTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13669,"src":"12971:22:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12971:24:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12865,"nodeType":"ExpressionStatement","src":"12971:24:82"},{"expression":{"arguments":[{"id":12867,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12848,"src":"13028:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12866,"name":"_checkpointUserBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"13005:22:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13005:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12869,"nodeType":"ExpressionStatement","src":"13005:28:82"},{"assignments":[12871],"declarations":[{"constant":false,"id":12871,"mutability":"mutable","name":"tokensLength","nodeType":"VariableDeclaration","scope":12918,"src":"13044:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12870,"name":"uint256","nodeType":"ElementaryTypeName","src":"13044:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12874,"initialValue":{"expression":{"id":12872,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12851,"src":"13067:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13067:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13044:36:82"},{"assignments":[12879],"declarations":[{"constant":false,"id":12879,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":12918,"src":"13090:24:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12877,"name":"uint256","nodeType":"ElementaryTypeName","src":"13090:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12878,"nodeType":"ArrayTypeName","src":"13090:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":12885,"initialValue":{"arguments":[{"id":12883,"name":"tokensLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"13131:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"13117:13:82","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":12880,"name":"uint256","nodeType":"ElementaryTypeName","src":"13121:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12881,"nodeType":"ArrayTypeName","src":"13121:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":12884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13117:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"13090:54:82"},{"body":{"id":12914,"nodeType":"Block","src":"13197:114:82","statements":[{"expression":{"arguments":[{"baseExpression":{"id":12897,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12851,"src":"13228:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12899,"indexExpression":{"id":12898,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12887,"src":"13235:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13228:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"66616c7365","id":12900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13239:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12896,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"13211:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13211:34:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12902,"nodeType":"ExpressionStatement","src":"13211:34:82"},{"expression":{"id":12912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12903,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12879,"src":"13259:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12905,"indexExpression":{"id":12904,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12887,"src":"13267:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13259:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12907,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12848,"src":"13284:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":12908,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12851,"src":"13290:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12910,"indexExpression":{"id":12909,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12887,"src":"13297:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13290:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":12906,"name":"_claimToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13059,"src":"13272:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2447_$returns$_t_uint256_$","typeString":"function (address,contract IERC20) returns (uint256)"}},"id":12911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13272:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13259:41:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12913,"nodeType":"ExpressionStatement","src":"13259:41:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12890,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12887,"src":"13174:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12891,"name":"tokensLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"13178:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13174:16:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12915,"initializationExpression":{"assignments":[12887],"declarations":[{"constant":false,"id":12887,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12915,"src":"13159:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12886,"name":"uint256","nodeType":"ElementaryTypeName","src":"13159:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12889,"initialValue":{"hexValue":"30","id":12888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13171:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13159:13:82"},"loopExpression":{"expression":{"id":12894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"13192:3:82","subExpression":{"id":12893,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12887,"src":"13194:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12895,"nodeType":"ExpressionStatement","src":"13192:3:82"},"nodeType":"ForStatement","src":"13154:157:82"},{"expression":{"id":12916,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12879,"src":"13328:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":12862,"id":12917,"nodeType":"Return","src":"13321:14:82"}]},"documentation":{"id":12846,"nodeType":"StructuredDocumentation","src":"12316:452:82","text":" @notice Claims a number of tokens on behalf of a user.\n @dev A version of `claimToken` which supports claiming multiple `tokens` on behalf of `user`.\n See `claimToken` for more details.\n @param user - The user on behalf of which to claim.\n @param tokens - An array of ERC20 token addresses to be claimed.\n @return An array of the amounts of each token in `tokens` sent to `user` as a result of claiming."},"functionSelector":"88720467","id":12919,"implemented":true,"kind":"function","modifiers":[{"id":12855,"modifierName":{"id":12854,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"12876:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"12876:12:82"},{"arguments":[{"id":12857,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12848,"src":"12916:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":12858,"modifierName":{"id":12856,"name":"optionalOnlyCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3449,"src":"12897:18:82","typeDescriptions":{"typeIdentifier":"t_modifier$_t_address_$","typeString":"modifier (address)"}},"nodeType":"ModifierInvocation","src":"12897:24:82"}],"name":"claimTokens","nodeType":"FunctionDefinition","overrides":{"id":12853,"nodeType":"OverrideSpecifier","overrides":[],"src":"12859:8:82"},"parameters":{"id":12852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12848,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":12919,"src":"12794:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12847,"name":"address","nodeType":"ElementaryTypeName","src":"12794:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12851,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":12919,"src":"12808:24:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12849,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"12808:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":12850,"nodeType":"ArrayTypeName","src":"12808:8:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"12793:40:82"},"returnParameters":{"id":12862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12861,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12919,"src":"12939:16:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12859,"name":"uint256","nodeType":"ElementaryTypeName","src":"12939:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12860,"nodeType":"ArrayTypeName","src":"12939:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"12938:18:82"},"scope":13820,"src":"12773:569:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":13058,"nodeType":"Block","src":"13606:2207:82","statements":[{"assignments":[12930],"declarations":[{"constant":false,"id":12930,"mutability":"mutable","name":"tokenState","nodeType":"VariableDeclaration","scope":13058,"src":"13616:29:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState"},"typeName":{"id":12929,"name":"TokenState","nodeType":"UserDefinedTypeName","referencedDeclaration":12405,"src":"13616:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState"}},"visibility":"internal"}],"id":12934,"initialValue":{"baseExpression":{"id":12931,"name":"_tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12409,"src":"13648:11:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_TokenState_$12405_storage_$","typeString":"mapping(contract IERC20 => struct FeeDistributor.TokenState storage ref)"}},"id":12933,"indexExpression":{"id":12932,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"13660:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13648:18:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage","typeString":"struct FeeDistributor.TokenState storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13616:50:82"},{"assignments":[12936],"declarations":[{"constant":false,"id":12936,"mutability":"mutable","name":"nextUserTokenWeekToClaim","nodeType":"VariableDeclaration","scope":13058,"src":"13676:32:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12935,"name":"uint256","nodeType":"ElementaryTypeName","src":"13676:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12941,"initialValue":{"arguments":[{"id":12938,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"13735:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12939,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"13741:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":12937,"name":"_getUserTokenTimeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13706,"src":"13711:23:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_IERC20_$2447_$returns$_t_uint256_$","typeString":"function (address,contract IERC20) view returns (uint256)"}},"id":12940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13711:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13676:71:82"},{"assignments":[12943],"declarations":[{"constant":false,"id":12943,"mutability":"mutable","name":"firstUnclaimableWeek","nodeType":"VariableDeclaration","scope":13058,"src":"14410:28:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12942,"name":"uint256","nodeType":"ElementaryTypeName","src":"14410:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12961,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":12949,"name":"_timeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12394,"src":"14490:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"id":12950,"name":"_userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12426,"src":"14503:10:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserState_$12422_storage_$","typeString":"mapping(address => struct FeeDistributor.UserState storage ref)"}},"id":12952,"indexExpression":{"id":12951,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"14514:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14503:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage","typeString":"struct FeeDistributor.UserState storage ref"}},"id":12953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12419,"src":"14503:27:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":12947,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"14481:4:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5683_$","typeString":"type(library Math)"}},"id":12948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"min","nodeType":"MemberAccess","referencedDeclaration":5586,"src":"14481:8:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":12954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14481:50:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12946,"name":"_roundUpTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13819,"src":"14463:17:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":12955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14463:69:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":12957,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12930,"src":"14566:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":12958,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12402,"src":"14566:21:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":12956,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"14546:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":12959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14546:42:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12944,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"14441:4:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5683_$","typeString":"type(library Math)"}},"id":12945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"min","nodeType":"MemberAccess","referencedDeclaration":5586,"src":"14441:8:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":12960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14441:157:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14410:188:82"},{"assignments":[12965],"declarations":[{"constant":false,"id":12965,"mutability":"mutable","name":"tokensPerWeek","nodeType":"VariableDeclaration","scope":13058,"src":"14609:49:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":12964,"keyType":{"id":12962,"name":"uint256","nodeType":"ElementaryTypeName","src":"14617:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"14609:27:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":12963,"name":"uint256","nodeType":"ElementaryTypeName","src":"14628:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"id":12969,"initialValue":{"baseExpression":{"id":12966,"name":"_tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12415,"src":"14661:14:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(contract IERC20 => mapping(uint256 => uint256))"}},"id":12968,"indexExpression":{"id":12967,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"14676:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14661:21:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"nodeType":"VariableDeclarationStatement","src":"14609:73:82"},{"assignments":[12973],"declarations":[{"constant":false,"id":12973,"mutability":"mutable","name":"userBalanceAtTimestamp","nodeType":"VariableDeclaration","scope":13058,"src":"14692:58:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":12972,"keyType":{"id":12970,"name":"uint256","nodeType":"ElementaryTypeName","src":"14700:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"14692:27:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":12971,"name":"uint256","nodeType":"ElementaryTypeName","src":"14711:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"id":12977,"initialValue":{"baseExpression":{"id":12974,"name":"_userBalanceAtTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12432,"src":"14753:23:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":12976,"indexExpression":{"id":12975,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"14777:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14753:29:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"nodeType":"VariableDeclarationStatement","src":"14692:90:82"},{"assignments":[12979],"declarations":[{"constant":false,"id":12979,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":13058,"src":"14793:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12978,"name":"uint256","nodeType":"ElementaryTypeName","src":"14793:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12980,"nodeType":"VariableDeclarationStatement","src":"14793:14:82"},{"body":{"id":13015,"nodeType":"Block","src":"14850:413:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12991,"name":"nextUserTokenWeekToClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"14956:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":12992,"name":"firstUnclaimableWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12943,"src":"14984:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14956:48:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12995,"nodeType":"IfStatement","src":"14952:59:82","trueBody":{"id":12994,"nodeType":"Break","src":"15006:5:82"}},{"expression":{"id":13009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12996,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12979,"src":"15026:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":12997,"name":"tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12965,"src":"15053:13:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":12999,"indexExpression":{"id":12998,"name":"nextUserTokenWeekToClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"15067:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15053:39:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"baseExpression":{"id":13000,"name":"userBalanceAtTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12973,"src":"15095:22:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13002,"indexExpression":{"id":13001,"name":"nextUserTokenWeekToClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"15118:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15095:48:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15053:90:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13004,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15052:92:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"baseExpression":{"id":13005,"name":"_veSupplyCache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12398,"src":"15163:14:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13007,"indexExpression":{"id":13006,"name":"nextUserTokenWeekToClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"15178:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15163:40:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15052:151:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15026:177:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13010,"nodeType":"ExpressionStatement","src":"15026:177:82"},{"expression":{"id":13013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13011,"name":"nextUserTokenWeekToClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"15217:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":13012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15245:7:82","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"15217:35:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13014,"nodeType":"ExpressionStatement","src":"15217:35:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12985,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12982,"src":"14837:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3230","id":12986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14841:2:82","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"14837:6:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13016,"initializationExpression":{"assignments":[12982],"declarations":[{"constant":false,"id":12982,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13016,"src":"14822:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12981,"name":"uint256","nodeType":"ElementaryTypeName","src":"14822:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12984,"initialValue":{"hexValue":"30","id":12983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14834:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14822:13:82"},"loopExpression":{"expression":{"id":12989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"14845:3:82","subExpression":{"id":12988,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12982,"src":"14847:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12990,"nodeType":"ExpressionStatement","src":"14845:3:82"},"nodeType":"ForStatement","src":"14817:446:82"},{"expression":{"id":13023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":13017,"name":"_userTokenTimeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12438,"src":"15371:20:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$2447_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"}},"id":13020,"indexExpression":{"id":13018,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"15392:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15371:26:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":13021,"indexExpression":{"id":13019,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"15398:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15371:33:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13022,"name":"nextUserTokenWeekToClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"15407:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15371:60:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13024,"nodeType":"ExpressionStatement","src":"15371:60:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13025,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12979,"src":"15446:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15455:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15446:10:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13055,"nodeType":"IfStatement","src":"15442:341:82","trueBody":{"id":13054,"nodeType":"Block","src":"15458:325:82","statements":[{"expression":{"id":13038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13028,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12930,"src":"15578:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":13030,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"cachedBalance","nodeType":"MemberAccess","referencedDeclaration":12404,"src":"15578:24:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13033,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12930,"src":"15613:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":13034,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"cachedBalance","nodeType":"MemberAccess","referencedDeclaration":12404,"src":"15613:24:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13035,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12979,"src":"15640:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15613:33:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15605:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":13031,"name":"uint128","nodeType":"ElementaryTypeName","src":"15605:7:82","typeDescriptions":{}}},"id":13037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15605:42:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"15578:69:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":13039,"nodeType":"ExpressionStatement","src":"15578:69:82"},{"expression":{"arguments":[{"id":13043,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"15680:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13044,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12979,"src":"15686:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13040,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"15661:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":13042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7276,"src":"15661:18:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":13045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15661:32:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13046,"nodeType":"ExpressionStatement","src":"15661:32:82"},{"eventCall":{"arguments":[{"id":13048,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"15726:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13049,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"15732:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":13050,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12979,"src":"15739:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13051,"name":"nextUserTokenWeekToClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"15747:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13047,"name":"TokensClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"15712:13:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_contract$_IERC20_$2447_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256,uint256)"}},"id":13052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15712:60:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13053,"nodeType":"EmitStatement","src":"15707:65:82"}]}},{"expression":{"id":13056,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12979,"src":"15800:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12928,"id":13057,"nodeType":"Return","src":"15793:13:82"}]},"documentation":{"id":12920,"nodeType":"StructuredDocumentation","src":"13375:150:82","text":" @dev It is required that both the global, token and user state have been properly checkpointed\n before calling this function."},"id":13059,"implemented":true,"kind":"function","modifiers":[],"name":"_claimToken","nodeType":"FunctionDefinition","parameters":{"id":12925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12922,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":13059,"src":"13551:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12921,"name":"address","nodeType":"ElementaryTypeName","src":"13551:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12924,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":13059,"src":"13565:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12923,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"13565:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"13550:28:82"},"returnParameters":{"id":12928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12927,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13059,"src":"13597:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12926,"name":"uint256","nodeType":"ElementaryTypeName","src":"13597:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13596:9:82"},"scope":13820,"src":"13530:2283:82","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13326,"nodeType":"Block","src":"16012:4657:82","statements":[{"assignments":[13068],"declarations":[{"constant":false,"id":13068,"mutability":"mutable","name":"tokenState","nodeType":"VariableDeclaration","scope":13326,"src":"16022:29:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState"},"typeName":{"id":13067,"name":"TokenState","nodeType":"UserDefinedTypeName","referencedDeclaration":12405,"src":"16022:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState"}},"visibility":"internal"}],"id":13072,"initialValue":{"baseExpression":{"id":13069,"name":"_tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12409,"src":"16054:11:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_TokenState_$12405_storage_$","typeString":"mapping(contract IERC20 => struct FeeDistributor.TokenState storage ref)"}},"id":13071,"indexExpression":{"id":13070,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13062,"src":"16066:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16054:18:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage","typeString":"struct FeeDistributor.TokenState storage ref"}},"nodeType":"VariableDeclarationStatement","src":"16022:50:82"},{"assignments":[13074],"declarations":[{"constant":false,"id":13074,"mutability":"mutable","name":"lastTokenTime","nodeType":"VariableDeclaration","scope":13326,"src":"16082:21:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13073,"name":"uint256","nodeType":"ElementaryTypeName","src":"16082:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13077,"initialValue":{"expression":{"id":13075,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13068,"src":"16106:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":13076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12402,"src":"16106:21:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"16082:45:82"},{"assignments":[13079],"declarations":[{"constant":false,"id":13079,"mutability":"mutable","name":"timeSinceLastCheckpoint","nodeType":"VariableDeclaration","scope":13326,"src":"16137:31:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13078,"name":"uint256","nodeType":"ElementaryTypeName","src":"16137:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13080,"nodeType":"VariableDeclarationStatement","src":"16137:31:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13081,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"16182:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16199:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16182:18:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13151,"nodeType":"Block","src":"16716:1282:82","statements":[{"expression":{"id":13115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13110,"name":"timeSinceLastCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13079,"src":"16730:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13111,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16756:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"16756:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13113,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"16774:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16756:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16730:57:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13116,"nodeType":"ExpressionStatement","src":"16730:57:82"},{"condition":{"id":13118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16806:6:82","subExpression":{"id":13117,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13064,"src":"16807:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13150,"nodeType":"IfStatement","src":"16802:1186:82","trueBody":{"id":13149,"nodeType":"Block","src":"16814:1174:82","statements":[{"assignments":[13120],"declarations":[{"constant":false,"id":13120,"mutability":"mutable","name":"alreadyCheckpointedThisWeek","nodeType":"VariableDeclaration","scope":13149,"src":"17170:32:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13119,"name":"bool","nodeType":"ElementaryTypeName","src":"17170:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":13129,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":13122,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"17225:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"17225:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13121,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"17205:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17205:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":13126,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"17285:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13125,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"17265:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17265:34:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17205:94:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"17170:129:82"},{"assignments":[13131],"declarations":[{"constant":false,"id":13131,"mutability":"mutable","name":"nearingEndOfWeek","nodeType":"VariableDeclaration","scope":13149,"src":"17551:21:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13130,"name":"bool","nodeType":"ElementaryTypeName","src":"17551:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":13141,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":13133,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"17593:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"17593:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13132,"name":"_roundUpTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13819,"src":"17575:17:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17575:34:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":13136,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"17612:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"17612:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17575:52:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":13139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17630:6:82","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"value":"1"},"src":"17575:61:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"17551:85:82"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13142,"name":"alreadyCheckpointedThisWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13120,"src":"17877:27:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":13144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"17908:17:82","subExpression":{"id":13143,"name":"nearingEndOfWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"17909:16:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17877:48:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13148,"nodeType":"IfStatement","src":"17873:101:82","trueBody":{"id":13147,"nodeType":"Block","src":"17927:47:82","statements":[{"functionReturnParameters":13066,"id":13146,"nodeType":"Return","src":"17949:7:82"}]}}]}}]},"id":13152,"nodeType":"IfStatement","src":"16178:1820:82","trueBody":{"id":13109,"nodeType":"Block","src":"16202:508:82","statements":[{"expression":{"id":13087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13084,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"16417:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":13085,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16433:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"16433:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16417:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13088,"nodeType":"ExpressionStatement","src":"16417:31:82"},{"expression":{"id":13099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13089,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13068,"src":"16462:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":13091,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":12400,"src":"16462:20:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":13095,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16512:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"16512:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13094,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"16492:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16492:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16485:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":13092,"name":"uint64","nodeType":"ElementaryTypeName","src":"16485:6:82","typeDescriptions":{}}},"id":13098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16485:44:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"16462:67:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":13100,"nodeType":"ExpressionStatement","src":"16462:67:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13102,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16630:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"16630:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13104,"name":"_startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12392,"src":"16648:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16630:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"46656520646973747269627574696f6e20686173206e6f74207374617274656420796574","id":13106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16660:38:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_47b66ecabfc14b155e7704a5a379d2627d619ee8d9c3fea3fc6f216a8bfd4d76","typeString":"literal_string \"Fee distribution has not started yet\""},"value":"Fee distribution has not started yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47b66ecabfc14b155e7704a5a379d2627d619ee8d9c3fea3fc6f216a8bfd4d76","typeString":"literal_string \"Fee distribution has not started yet\""}],"id":13101,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16622:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16622:77:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13108,"nodeType":"ExpressionStatement","src":"16622:77:82"}]}},{"expression":{"id":13161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13153,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13068,"src":"18008:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":13155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12402,"src":"18008:21:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":13158,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"18039:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"18039:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18032:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":13156,"name":"uint64","nodeType":"ElementaryTypeName","src":"18032:6:82","typeDescriptions":{}}},"id":13160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18032:23:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"18008:47:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":13162,"nodeType":"ExpressionStatement","src":"18008:47:82"},{"assignments":[13164],"declarations":[{"constant":false,"id":13164,"mutability":"mutable","name":"tokenBalance","nodeType":"VariableDeclaration","scope":13326,"src":"18066:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13163,"name":"uint256","nodeType":"ElementaryTypeName","src":"18066:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13172,"initialValue":{"arguments":[{"arguments":[{"id":13169,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"18113:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_FeeDistributor_$13820","typeString":"contract FeeDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_FeeDistributor_$13820","typeString":"contract FeeDistributor"}],"id":13168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18105:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13167,"name":"address","nodeType":"ElementaryTypeName","src":"18105:7:82","typeDescriptions":{}}},"id":13170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18105:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13165,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13062,"src":"18089:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":13166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2386,"src":"18089:15:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18089:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18066:53:82"},{"assignments":[13174],"declarations":[{"constant":false,"id":13174,"mutability":"mutable","name":"newTokensToDistribute","nodeType":"VariableDeclaration","scope":13326,"src":"18129:29:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13173,"name":"uint256","nodeType":"ElementaryTypeName","src":"18129:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13180,"initialValue":{"arguments":[{"expression":{"id":13177,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13068,"src":"18178:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":13178,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"cachedBalance","nodeType":"MemberAccess","referencedDeclaration":12404,"src":"18178:24:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":13175,"name":"tokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13164,"src":"18161:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7390,"src":"18161:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18161:42:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18129:74:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13181,"name":"newTokensToDistribute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"18217:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18242:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18217:26:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13185,"nodeType":"IfStatement","src":"18213:39:82","trueBody":{"functionReturnParameters":13066,"id":13184,"nodeType":"Return","src":"18245:7:82"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13187,"name":"tokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13164,"src":"18269:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":13190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18290:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":13189,"name":"uint128","nodeType":"ElementaryTypeName","src":"18290:7:82","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":13188,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"18285:4:82","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18285:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":13192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"18285:17:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"18269:33:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6178696d756d20746f6b656e2062616c616e6365206578636565646564","id":13194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18304:32:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_43f81500ef380474e455ae9052e066306f4e802d2bab24726653d3eca9d31285","typeString":"literal_string \"Maximum token balance exceeded\""},"value":"Maximum token balance exceeded"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_43f81500ef380474e455ae9052e066306f4e802d2bab24726653d3eca9d31285","typeString":"literal_string \"Maximum token balance exceeded\""}],"id":13186,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"18261:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18261:76:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13196,"nodeType":"ExpressionStatement","src":"18261:76:82"},{"expression":{"id":13204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13197,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13068,"src":"18347:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":13199,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"cachedBalance","nodeType":"MemberAccess","referencedDeclaration":12404,"src":"18347:24:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13202,"name":"tokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13164,"src":"18382:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18374:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":13200,"name":"uint128","nodeType":"ElementaryTypeName","src":"18374:7:82","typeDescriptions":{}}},"id":13203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18374:21:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"18347:48:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":13205,"nodeType":"ExpressionStatement","src":"18347:48:82"},{"assignments":[13207],"declarations":[{"constant":false,"id":13207,"mutability":"mutable","name":"firstIncompleteWeek","nodeType":"VariableDeclaration","scope":13326,"src":"18406:27:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13206,"name":"uint256","nodeType":"ElementaryTypeName","src":"18406:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13211,"initialValue":{"arguments":[{"id":13209,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"18456:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13208,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"18436:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18436:34:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18406:64:82"},{"assignments":[13213],"declarations":[{"constant":false,"id":13213,"mutability":"mutable","name":"nextWeek","nodeType":"VariableDeclaration","scope":13326,"src":"18480:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13212,"name":"uint256","nodeType":"ElementaryTypeName","src":"18480:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13215,"initialValue":{"hexValue":"30","id":13214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18499:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18480:20:82"},{"assignments":[13219],"declarations":[{"constant":false,"id":13219,"mutability":"mutable","name":"tokensPerWeek","nodeType":"VariableDeclaration","scope":13326,"src":"18726:49:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":13218,"keyType":{"id":13216,"name":"uint256","nodeType":"ElementaryTypeName","src":"18734:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"18726:27:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":13217,"name":"uint256","nodeType":"ElementaryTypeName","src":"18745:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"id":13223,"initialValue":{"baseExpression":{"id":13220,"name":"_tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12415,"src":"18778:14:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(contract IERC20 => mapping(uint256 => uint256))"}},"id":13222,"indexExpression":{"id":13221,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13062,"src":"18793:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18778:21:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"nodeType":"VariableDeclarationStatement","src":"18726:73:82"},{"body":{"id":13318,"nodeType":"Block","src":"18842:1743:82","statements":[{"expression":{"id":13238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13234,"name":"nextWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13213,"src":"18919:8:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13235,"name":"firstIncompleteWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13207,"src":"18930:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":13236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18952:7:82","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"18930:29:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18919:40:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13239,"nodeType":"ExpressionStatement","src":"18919:40:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13240,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"18977:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"18977:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13242,"name":"nextWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13213,"src":"18995:8:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18977:26:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13308,"nodeType":"Block","src":"19721:657:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13278,"name":"timeSinceLastCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13079,"src":"19863:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19890:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19863:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13281,"name":"nextWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13213,"src":"19895:8:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":13282,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"19907:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19895:25:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19863:57:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13306,"nodeType":"Block","src":"20096:268:82","statements":[{"expression":{"id":13304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13292,"name":"tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13219,"src":"20181:13:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13294,"indexExpression":{"id":13293,"name":"firstIncompleteWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13207,"src":"20195:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20181:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13295,"name":"newTokensToDistribute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"20244:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13296,"name":"nextWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13213,"src":"20269:8:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13297,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"20280:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20269:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20268:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20244:50:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13301,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20243:52:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":13302,"name":"timeSinceLastCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13079,"src":"20322:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20243:102:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20181:164:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13305,"nodeType":"ExpressionStatement","src":"20181:164:82"}]},"id":13307,"nodeType":"IfStatement","src":"19859:505:82","trueBody":{"id":13291,"nodeType":"Block","src":"19922:168:82","statements":[{"expression":{"id":13289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13285,"name":"tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13219,"src":"20012:13:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13287,"indexExpression":{"id":13286,"name":"firstIncompleteWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13207,"src":"20026:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20012:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":13288,"name":"newTokensToDistribute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"20050:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20012:59:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13290,"nodeType":"ExpressionStatement","src":"20012:59:82"}]}}]},"id":13309,"nodeType":"IfStatement","src":"18973:1405:82","trueBody":{"id":13277,"nodeType":"Block","src":"19005:710:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13244,"name":"timeSinceLastCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13079,"src":"19144:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19171:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19144:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13247,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"19176:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"19176:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":13249,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"19195:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19176:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19144:64:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13274,"nodeType":"Block","src":"19316:283:82","statements":[{"expression":{"id":13272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13259,"name":"tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13219,"src":"19409:13:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13261,"indexExpression":{"id":13260,"name":"firstIncompleteWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13207,"src":"19423:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19409:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13262,"name":"newTokensToDistribute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"19472:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13263,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"19497:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"19497:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13265,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"19515:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19497:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13267,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19496:33:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19472:57:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13269,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19471:59:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":13270,"name":"timeSinceLastCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13079,"src":"19557:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19471:109:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19409:171:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13273,"nodeType":"ExpressionStatement","src":"19409:171:82"}]},"id":13275,"nodeType":"IfStatement","src":"19140:459:82","trueBody":{"id":13258,"nodeType":"Block","src":"19210:100:82","statements":[{"expression":{"id":13256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13252,"name":"tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13219,"src":"19232:13:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13254,"indexExpression":{"id":13253,"name":"firstIncompleteWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13207,"src":"19246:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19232:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":13255,"name":"newTokensToDistribute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"19270:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19232:59:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13257,"nodeType":"ExpressionStatement","src":"19232:59:82"}]}},{"id":13276,"nodeType":"Break","src":"19695:5:82"}]}},{"expression":{"id":13312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13310,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"20506:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13311,"name":"nextWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13213,"src":"20522:8:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20506:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13313,"nodeType":"ExpressionStatement","src":"20506:24:82"},{"expression":{"id":13316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13314,"name":"firstIncompleteWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13207,"src":"20544:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13315,"name":"nextWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13213,"src":"20566:8:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20544:30:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13317,"nodeType":"ExpressionStatement","src":"20544:30:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13228,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13225,"src":"18829:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3230","id":13229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18833:2:82","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"18829:6:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13319,"initializationExpression":{"assignments":[13225],"declarations":[{"constant":false,"id":13225,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13319,"src":"18814:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13224,"name":"uint256","nodeType":"ElementaryTypeName","src":"18814:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13227,"initialValue":{"hexValue":"30","id":13226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18826:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18814:13:82"},"loopExpression":{"expression":{"id":13232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"18837:3:82","subExpression":{"id":13231,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13225,"src":"18839:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13233,"nodeType":"ExpressionStatement","src":"18837:3:82"},"nodeType":"ForStatement","src":"18809:1776:82"},{"eventCall":{"arguments":[{"id":13321,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13062,"src":"20618:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":13322,"name":"newTokensToDistribute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"20625:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13323,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"20648:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13320,"name":"TokenCheckpointed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"20600:17:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC20_$2447_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256,uint256)"}},"id":13324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20600:62:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13325,"nodeType":"EmitStatement","src":"20595:67:82"}]},"documentation":{"id":13060,"nodeType":"StructuredDocumentation","src":"15819:127:82","text":" @dev Calculate the amount of `token` to be distributed to `_votingEscrow` holders since the last checkpoint."},"id":13327,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointToken","nodeType":"FunctionDefinition","parameters":{"id":13065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13062,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":13327,"src":"15977:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":13061,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"15977:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":13064,"mutability":"mutable","name":"force","nodeType":"VariableDeclaration","scope":13327,"src":"15991:10:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13063,"name":"bool","nodeType":"ElementaryTypeName","src":"15991:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15976:26:82"},"returnParameters":{"id":13066,"nodeType":"ParameterList","parameters":[],"src":"16012:0:82"},"scope":13820,"src":"15951:4718:82","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13602,"nodeType":"Block","src":"20838:6020:82","statements":[{"assignments":[13334],"declarations":[{"constant":false,"id":13334,"mutability":"mutable","name":"maxUserEpoch","nodeType":"VariableDeclaration","scope":13602,"src":"20848:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13333,"name":"uint256","nodeType":"ElementaryTypeName","src":"20848:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13339,"initialValue":{"arguments":[{"id":13337,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"20902:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13335,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"20871:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":13336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_point_epoch","nodeType":"MemberAccess","referencedDeclaration":1514,"src":"20871:30:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20871:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20848:59:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13340,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13334,"src":"21042:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21058:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21042:17:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13344,"nodeType":"IfStatement","src":"21038:30:82","trueBody":{"functionReturnParameters":13332,"id":13343,"nodeType":"Return","src":"21061:7:82"}},{"assignments":[13346],"declarations":[{"constant":false,"id":13346,"mutability":"mutable","name":"userState","nodeType":"VariableDeclaration","scope":13602,"src":"21078:27:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState"},"typeName":{"id":13345,"name":"UserState","nodeType":"UserDefinedTypeName","referencedDeclaration":12422,"src":"21078:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState"}},"visibility":"internal"}],"id":13350,"initialValue":{"baseExpression":{"id":13347,"name":"_userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12426,"src":"21108:10:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserState_$12422_storage_$","typeString":"mapping(address => struct FeeDistributor.UserState storage ref)"}},"id":13349,"indexExpression":{"id":13348,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"21119:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21108:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage","typeString":"struct FeeDistributor.UserState storage ref"}},"nodeType":"VariableDeclarationStatement","src":"21078:46:82"},{"assignments":[13352],"declarations":[{"constant":false,"id":13352,"mutability":"mutable","name":"nextWeekToCheckpoint","nodeType":"VariableDeclaration","scope":13602,"src":"21307:28:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13351,"name":"uint256","nodeType":"ElementaryTypeName","src":"21307:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13355,"initialValue":{"expression":{"id":13353,"name":"userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"21338:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState storage pointer"}},"id":13354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12419,"src":"21338:20:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"21307:51:82"},{"assignments":[13357],"declarations":[{"constant":false,"id":13357,"mutability":"mutable","name":"userEpoch","nodeType":"VariableDeclaration","scope":13602,"src":"21369:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13356,"name":"uint256","nodeType":"ElementaryTypeName","src":"21369:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13358,"nodeType":"VariableDeclarationStatement","src":"21369:17:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13359,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"21400:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21424:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21400:25:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13400,"nodeType":"Block","src":"21609:1363:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13372,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"21627:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":13373,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"21651:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"21651:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21627:39:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13378,"nodeType":"IfStatement","src":"21623:416:82","trueBody":{"id":13377,"nodeType":"Block","src":"21668:371:82","statements":[{"functionReturnParameters":13332,"id":13376,"nodeType":"Return","src":"22018:7:82"}]}},{"expression":{"id":13382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13379,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"22113:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":13380,"name":"userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"22125:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState storage pointer"}},"id":13381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"lastEpochCheckpointed","nodeType":"MemberAccess","referencedDeclaration":12421,"src":"22125:31:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"22113:43:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13383,"nodeType":"ExpressionStatement","src":"22113:43:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13384,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13334,"src":"22810:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13385,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"22825:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22810:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3230","id":13387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22837:2:82","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"22810:29:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13399,"nodeType":"IfStatement","src":"22806:156:82","trueBody":{"id":13398,"nodeType":"Block","src":"22841:121:82","statements":[{"expression":{"id":13396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13389,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"22859:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13391,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"22895:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13392,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"22901:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13393,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"22923:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13394,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13334,"src":"22934:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13390,"name":"_findTimestampUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13786,"src":"22871:23:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256,uint256,uint256) view returns (uint256)"}},"id":13395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22871:76:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22859:88:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13397,"nodeType":"ExpressionStatement","src":"22859:88:82"}]}}]},"id":13401,"nodeType":"IfStatement","src":"21396:1576:82","trueBody":{"id":13371,"nodeType":"Block","src":"21427:176:82","statements":[{"expression":{"id":13369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13362,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"21522:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13364,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"21558:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13365,"name":"_startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12392,"src":"21564:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":13366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21576:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":13367,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13334,"src":"21579:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13363,"name":"_findTimestampUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13786,"src":"21534:23:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256,uint256,uint256) view returns (uint256)"}},"id":13368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21534:58:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21522:70:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13370,"nodeType":"ExpressionStatement","src":"21522:70:82"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13402,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"23082:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23095:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23082:14:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13410,"nodeType":"IfStatement","src":"23078:58:82","trueBody":{"id":13409,"nodeType":"Block","src":"23098:38:82","statements":[{"expression":{"id":13407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13405,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"23112:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":13406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23124:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23112:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13408,"nodeType":"ExpressionStatement","src":"23112:13:82"}]}},{"assignments":[13414],"declarations":[{"constant":false,"id":13414,"mutability":"mutable","name":"nextUserPoint","nodeType":"VariableDeclaration","scope":13602,"src":"23146:40:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":13413,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"23146:19:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"id":13420,"initialValue":{"arguments":[{"id":13417,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"23222:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13418,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"23228:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13415,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"23189:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":13416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_point_history","nodeType":"MemberAccess","referencedDeclaration":1530,"src":"23189:32:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_struct$_Point_$1486_memory_ptr_$","typeString":"function (address,uint256) view external returns (struct IVotingEscrow.Point memory)"}},"id":13419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23189:49:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"nodeType":"VariableDeclarationStatement","src":"23146:92:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13421,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"23513:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23537:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23513:25:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13453,"nodeType":"IfStatement","src":"23509:349:82","trueBody":{"id":13452,"nodeType":"Block","src":"23540:318:82","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13425,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"23620:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"23620:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13427,"name":"_startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12392,"src":"23638:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23620:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"46656520646973747269627574696f6e20686173206e6f74207374617274656420796574","id":13429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23650:38:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_47b66ecabfc14b155e7704a5a379d2627d619ee8d9c3fea3fc6f216a8bfd4d76","typeString":"literal_string \"Fee distribution has not started yet\""},"value":"Fee distribution has not started yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47b66ecabfc14b155e7704a5a379d2627d619ee8d9c3fea3fc6f216a8bfd4d76","typeString":"literal_string \"Fee distribution has not started yet\""}],"id":13424,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"23612:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23612:77:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13431,"nodeType":"ExpressionStatement","src":"23612:77:82"},{"expression":{"id":13441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13432,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"23703:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13435,"name":"_startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12392,"src":"23735:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":13437,"name":"nextUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"23765:13:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13438,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ts","nodeType":"MemberAccess","referencedDeclaration":1483,"src":"23765:16:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13436,"name":"_roundUpTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13819,"src":"23747:17:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23747:35:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13433,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"23726:4:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5683_$","typeString":"type(library Math)"}},"id":13434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","referencedDeclaration":5574,"src":"23726:8:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23726:57:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23703:80:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13442,"nodeType":"ExpressionStatement","src":"23703:80:82"},{"expression":{"id":13450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13443,"name":"userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"23797:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState storage pointer"}},"id":13445,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":12417,"src":"23797:19:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13448,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"23826:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13447,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23819:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":13446,"name":"uint64","nodeType":"ElementaryTypeName","src":"23819:6:82","typeDescriptions":{}}},"id":13449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23819:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"23797:50:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":13451,"nodeType":"ExpressionStatement","src":"23797:50:82"}]}},{"assignments":[13457],"declarations":[{"constant":false,"id":13457,"mutability":"mutable","name":"currentUserPoint","nodeType":"VariableDeclaration","scope":13602,"src":"24068:43:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":13456,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"24068:19:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"id":13458,"nodeType":"VariableDeclarationStatement","src":"24068:43:82"},{"body":{"id":13580,"nodeType":"Block","src":"24154:2246:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13469,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"24172:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":13470,"name":"nextUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"24196:13:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13471,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ts","nodeType":"MemberAccess","referencedDeclaration":1483,"src":"24196:16:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24172:40:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13473,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"24216:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":13474,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13334,"src":"24229:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24216:25:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"24172:69:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13578,"nodeType":"Block","src":"25050:1340:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13510,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"25272:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":13511,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"25296:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"25296:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25272:39:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13516,"nodeType":"IfStatement","src":"25268:349:82","trueBody":{"id":13515,"nodeType":"Block","src":"25313:304:82","statements":[{"id":13514,"nodeType":"Break","src":"25593:5:82"}]}},{"assignments":[13518],"declarations":[{"constant":false,"id":13518,"mutability":"mutable","name":"dt","nodeType":"VariableDeclaration","scope":13578,"src":"25635:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":13517,"name":"int128","nodeType":"ElementaryTypeName","src":"25635:6:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"id":13526,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13521,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"25654:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":13522,"name":"currentUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13457,"src":"25677:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13523,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ts","nodeType":"MemberAccess","referencedDeclaration":1483,"src":"25677:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25654:42:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13520,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25647:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":13519,"name":"int128","nodeType":"ElementaryTypeName","src":"25647:6:82","typeDescriptions":{}}},"id":13525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25647:50:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"VariableDeclarationStatement","src":"25635:62:82"},{"assignments":[13528],"declarations":[{"constant":false,"id":13528,"mutability":"mutable","name":"userBalance","nodeType":"VariableDeclaration","scope":13578,"src":"25715:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13527,"name":"uint256","nodeType":"ElementaryTypeName","src":"25715:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13548,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":13535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13529,"name":"currentUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13457,"src":"25737:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"bias","nodeType":"MemberAccess","referencedDeclaration":1479,"src":"25737:21:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":13534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13531,"name":"currentUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13457,"src":"25761:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13532,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"slope","nodeType":"MemberAccess","referencedDeclaration":1481,"src":"25761:22:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13533,"name":"dt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13518,"src":"25786:2:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25761:27:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25737:51:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":13546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25894:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":13547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"25737:158:82","trueExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":13544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13538,"name":"currentUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13457,"src":"25819:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"bias","nodeType":"MemberAccess","referencedDeclaration":1479,"src":"25819:21:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":13543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13540,"name":"currentUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13457,"src":"25843:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13541,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"slope","nodeType":"MemberAccess","referencedDeclaration":1481,"src":"25843:22:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13542,"name":"dt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13518,"src":"25868:2:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25843:27:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25819:51:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":13537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25811:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13536,"name":"uint256","nodeType":"ElementaryTypeName","src":"25811:7:82","typeDescriptions":{}}},"id":13545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25811:60:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25715:180:82"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13549,"name":"userBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13528,"src":"25992:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26007:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25992:16:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13552,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"26012:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13553,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13334,"src":"26024:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26012:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25992:44:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13565,"nodeType":"IfStatement","src":"25988:175:82","trueBody":{"id":13564,"nodeType":"Block","src":"26038:125:82","statements":[{"expression":{"id":13561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13556,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"26060:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":13558,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"26101:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"26101:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13557,"name":"_roundUpTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13819,"src":"26083:17:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26083:34:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26060:57:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13562,"nodeType":"ExpressionStatement","src":"26060:57:82"},{"id":13563,"nodeType":"Break","src":"26139:5:82"}]}},{"expression":{"id":13572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":13566,"name":"_userBalanceAtTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12432,"src":"26260:23:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":13569,"indexExpression":{"id":13567,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"26284:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26260:29:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13570,"indexExpression":{"id":13568,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"26290:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"26260:51:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13571,"name":"userBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13528,"src":"26314:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26260:65:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13573,"nodeType":"ExpressionStatement","src":"26260:65:82"},{"expression":{"id":13576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13574,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"26344:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":13575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26368:7:82","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"26344:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13577,"nodeType":"ExpressionStatement","src":"26344:31:82"}]},"id":13579,"nodeType":"IfStatement","src":"24168:2222:82","trueBody":{"id":13509,"nodeType":"Block","src":"24243:801:82","statements":[{"expression":{"id":13479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13477,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"24718:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":13478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24731:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24718:14:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13480,"nodeType":"ExpressionStatement","src":"24718:14:82"},{"expression":{"id":13483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13481,"name":"currentUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13457,"src":"24750:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13482,"name":"nextUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"24769:13:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"src":"24750:32:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13484,"nodeType":"ExpressionStatement","src":"24750:32:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13485,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"24804:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13486,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13334,"src":"24816:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24804:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13507,"nodeType":"Block","src":"24924:106:82","statements":[{"expression":{"id":13505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13499,"name":"nextUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"24946:13:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13502,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"24995:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13503,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"25001:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13500,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"24962:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":13501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_point_history","nodeType":"MemberAccess","referencedDeclaration":1530,"src":"24962:32:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_struct$_Point_$1486_memory_ptr_$","typeString":"function (address,uint256) view external returns (struct IVotingEscrow.Point memory)"}},"id":13504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24962:49:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"src":"24946:65:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13506,"nodeType":"ExpressionStatement","src":"24946:65:82"}]},"id":13508,"nodeType":"IfStatement","src":"24800:230:82","trueBody":{"id":13498,"nodeType":"Block","src":"24830:88:82","statements":[{"expression":{"id":13496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13488,"name":"nextUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"24852:13:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":13491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24888:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":13492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24891:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":13493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24894:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":13494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24897:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":13489,"name":"IVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1559,"src":"24868:13:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVotingEscrow_$1559_$","typeString":"type(contract IVotingEscrow)"}},"id":13490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Point","nodeType":"MemberAccess","referencedDeclaration":1486,"src":"24868:19:82","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Point_$1486_storage_ptr_$","typeString":"type(struct IVotingEscrow.Point storage pointer)"}},"id":13495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24868:31:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"src":"24852:47:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13497,"nodeType":"ExpressionStatement","src":"24852:47:82"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13463,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13460,"src":"24141:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3530","id":13464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24145:2:82","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"src":"24141:6:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13581,"initializationExpression":{"assignments":[13460],"declarations":[{"constant":false,"id":13460,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13581,"src":"24126:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13459,"name":"uint256","nodeType":"ElementaryTypeName","src":"24126:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13462,"initialValue":{"hexValue":"30","id":13461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24138:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"24126:13:82"},"loopExpression":{"expression":{"id":13467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"24149:3:82","subExpression":{"id":13466,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13460,"src":"24151:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13468,"nodeType":"ExpressionStatement","src":"24149:3:82"},"nodeType":"ForStatement","src":"24121:2279:82"},{"expression":{"id":13591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13582,"name":"userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"26735:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState storage pointer"}},"id":13584,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"lastEpochCheckpointed","nodeType":"MemberAccess","referencedDeclaration":12421,"src":"26735:31:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13587,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"26776:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26788:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"26776:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26769:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":13585,"name":"uint64","nodeType":"ElementaryTypeName","src":"26769:6:82","typeDescriptions":{}}},"id":13590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26769:21:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"26735:55:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":13592,"nodeType":"ExpressionStatement","src":"26735:55:82"},{"expression":{"id":13600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13593,"name":"userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"26800:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState storage pointer"}},"id":13595,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12419,"src":"26800:20:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13598,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"26830:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13597,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26823:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":13596,"name":"uint64","nodeType":"ElementaryTypeName","src":"26823:6:82","typeDescriptions":{}}},"id":13599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26823:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"26800:51:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":13601,"nodeType":"ExpressionStatement","src":"26800:51:82"}]},"documentation":{"id":13328,"nodeType":"StructuredDocumentation","src":"20675:103:82","text":" @dev Cache the `user`'s balance of `_votingEscrow` at the beginning of each new week"},"id":13603,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointUserBalance","nodeType":"FunctionDefinition","parameters":{"id":13331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13330,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":13603,"src":"20815:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13329,"name":"address","nodeType":"ElementaryTypeName","src":"20815:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20814:14:82"},"returnParameters":{"id":13332,"nodeType":"ParameterList","parameters":[],"src":"20838:0:82"},"scope":13820,"src":"20783:6075:82","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13668,"nodeType":"Block","src":"27013:981:82","statements":[{"assignments":[13608],"declarations":[{"constant":false,"id":13608,"mutability":"mutable","name":"nextWeekToCheckpoint","nodeType":"VariableDeclaration","scope":13668,"src":"27023:28:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13607,"name":"uint256","nodeType":"ElementaryTypeName","src":"27023:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13610,"initialValue":{"id":13609,"name":"_timeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12394,"src":"27054:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"27023:42:82"},{"assignments":[13612],"declarations":[{"constant":false,"id":13612,"mutability":"mutable","name":"weekStart","nodeType":"VariableDeclaration","scope":13668,"src":"27075:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13611,"name":"uint256","nodeType":"ElementaryTypeName","src":"27075:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13617,"initialValue":{"arguments":[{"expression":{"id":13614,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"27115:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"27115:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13613,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"27095:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27095:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"27075:56:82"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13618,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13608,"src":"27226:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13619,"name":"weekStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13612,"src":"27249:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27226:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13621,"name":"weekStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13612,"src":"27262:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13622,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"27275:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"27275:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27262:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"27226:64:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13628,"nodeType":"IfStatement","src":"27222:183:82","trueBody":{"id":13627,"nodeType":"Block","src":"27292:113:82","statements":[{"functionReturnParameters":13606,"id":13626,"nodeType":"Return","src":"27388:7:82"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13629,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"27415:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":13631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"checkpoint","nodeType":"MemberAccess","referencedDeclaration":1533,"src":"27415:24:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":13632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27415:26:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13633,"nodeType":"ExpressionStatement","src":"27415:26:82"},{"body":{"id":13662,"nodeType":"Block","src":"27588:277:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13644,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13608,"src":"27606:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13645,"name":"weekStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13612,"src":"27629:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27606:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13648,"nodeType":"IfStatement","src":"27602:43:82","trueBody":{"id":13647,"nodeType":"Break","src":"27640:5:82"}},{"expression":{"id":13656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13649,"name":"_veSupplyCache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12398,"src":"27660:14:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13651,"indexExpression":{"id":13650,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13608,"src":"27675:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"27660:36:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13654,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13608,"src":"27725:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13652,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"27699:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":13653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":1507,"src":"27699:25:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":13655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27699:47:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27660:86:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13657,"nodeType":"ExpressionStatement","src":"27660:86:82"},{"expression":{"id":13660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13658,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13608,"src":"27823:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":13659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27847:7:82","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"27823:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13661,"nodeType":"ExpressionStatement","src":"27823:31:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13638,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"27575:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3230","id":13639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27579:2:82","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"27575:6:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13663,"initializationExpression":{"assignments":[13635],"declarations":[{"constant":false,"id":13635,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13663,"src":"27560:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13634,"name":"uint256","nodeType":"ElementaryTypeName","src":"27560:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13637,"initialValue":{"hexValue":"30","id":13636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27572:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"27560:13:82"},"loopExpression":{"expression":{"id":13642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"27583:3:82","subExpression":{"id":13641,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"27585:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13643,"nodeType":"ExpressionStatement","src":"27583:3:82"},"nodeType":"ForStatement","src":"27555:310:82"},{"expression":{"id":13666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13664,"name":"_timeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12394,"src":"27953:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13665,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13608,"src":"27967:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27953:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13667,"nodeType":"ExpressionStatement","src":"27953:34:82"}]},"documentation":{"id":13604,"nodeType":"StructuredDocumentation","src":"26864:101:82","text":" @dev Cache the totalSupply of VotingEscrow token at the beginning of each new week"},"id":13669,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointTotalSupply","nodeType":"FunctionDefinition","parameters":{"id":13605,"nodeType":"ParameterList","parameters":[],"src":"27001:2:82"},"returnParameters":{"id":13606,"nodeType":"ParameterList","parameters":[],"src":"27013:0:82"},"scope":13820,"src":"26970:1024:82","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13705,"nodeType":"Block","src":"28297:414:82","statements":[{"assignments":[13680],"declarations":[{"constant":false,"id":13680,"mutability":"mutable","name":"userTimeCursor","nodeType":"VariableDeclaration","scope":13705,"src":"28307:22:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13679,"name":"uint256","nodeType":"ElementaryTypeName","src":"28307:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13686,"initialValue":{"baseExpression":{"baseExpression":{"id":13681,"name":"_userTokenTimeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12438,"src":"28332:20:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$2447_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"}},"id":13683,"indexExpression":{"id":13682,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13672,"src":"28353:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28332:26:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":13685,"indexExpression":{"id":13684,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13674,"src":"28359:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28332:33:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28307:58:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13687,"name":"userTimeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13680,"src":"28379:14:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28396:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"28379:18:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13692,"nodeType":"IfStatement","src":"28375:45:82","trueBody":{"expression":{"id":13690,"name":"userTimeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13680,"src":"28406:14:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13678,"id":13691,"nodeType":"Return","src":"28399:21:82"}},{"expression":{"arguments":[{"expression":{"baseExpression":{"id":13695,"name":"_userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12426,"src":"28647:10:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserState_$12422_storage_$","typeString":"mapping(address => struct FeeDistributor.UserState storage ref)"}},"id":13697,"indexExpression":{"id":13696,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13672,"src":"28658:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28647:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage","typeString":"struct FeeDistributor.UserState storage ref"}},"id":13698,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":12417,"src":"28647:26:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"expression":{"baseExpression":{"id":13699,"name":"_tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12409,"src":"28675:11:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_TokenState_$12405_storage_$","typeString":"mapping(contract IERC20 => struct FeeDistributor.TokenState storage ref)"}},"id":13701,"indexExpression":{"id":13700,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13674,"src":"28687:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28675:18:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage","typeString":"struct FeeDistributor.TokenState storage ref"}},"id":13702,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":12400,"src":"28675:28:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":13693,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"28638:4:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5683_$","typeString":"type(library Math)"}},"id":13694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","referencedDeclaration":5574,"src":"28638:8:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28638:66:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13678,"id":13704,"nodeType":"Return","src":"28631:73:82"}]},"documentation":{"id":13670,"nodeType":"StructuredDocumentation","src":"28025:174:82","text":" @dev Wrapper around `_userTokenTimeCursor` which returns the start timestamp for `token`\n if `user` has not attempted to interact with it previously."},"id":13706,"implemented":true,"kind":"function","modifiers":[],"name":"_getUserTokenTimeCursor","nodeType":"FunctionDefinition","parameters":{"id":13675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13672,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":13706,"src":"28237:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13671,"name":"address","nodeType":"ElementaryTypeName","src":"28237:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13674,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":13706,"src":"28251:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":13673,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"28251:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"28236:28:82"},"returnParameters":{"id":13678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13677,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13706,"src":"28288:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13676,"name":"uint256","nodeType":"ElementaryTypeName","src":"28288:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28287:9:82"},"scope":13820,"src":"28204:507:82","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13785,"nodeType":"Block","src":"29007:739:82","statements":[{"assignments":[13721],"declarations":[{"constant":false,"id":13721,"mutability":"mutable","name":"min","nodeType":"VariableDeclaration","scope":13785,"src":"29017:11:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13720,"name":"uint256","nodeType":"ElementaryTypeName","src":"29017:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13723,"initialValue":{"id":13722,"name":"minUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13713,"src":"29031:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29017:26:82"},{"assignments":[13725],"declarations":[{"constant":false,"id":13725,"mutability":"mutable","name":"max","nodeType":"VariableDeclaration","scope":13785,"src":"29053:11:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13724,"name":"uint256","nodeType":"ElementaryTypeName","src":"29053:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13727,"initialValue":{"id":13726,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13715,"src":"29067:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29053:26:82"},{"body":{"id":13781,"nodeType":"Block","src":"29209:511:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13738,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13721,"src":"29227:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":13739,"name":"max","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13725,"src":"29234:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29227:10:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13742,"nodeType":"IfStatement","src":"29223:21:82","trueBody":{"id":13741,"nodeType":"Break","src":"29239:5:82"}},{"assignments":[13744],"declarations":[{"constant":false,"id":13744,"mutability":"mutable","name":"mid","nodeType":"VariableDeclaration","scope":13781,"src":"29410:11:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13743,"name":"uint256","nodeType":"ElementaryTypeName","src":"29410:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13753,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13745,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13721,"src":"29425:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":13746,"name":"max","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13725,"src":"29431:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29425:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":13748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29437:1:82","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29425:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13750,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"29424:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":13751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29442:1:82","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29424:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29410:33:82"},{"assignments":[13757],"declarations":[{"constant":false,"id":13757,"mutability":"mutable","name":"pt","nodeType":"VariableDeclaration","scope":13781,"src":"29457:29:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":13756,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"29457:19:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"id":13763,"initialValue":{"arguments":[{"id":13760,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13709,"src":"29522:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13761,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13744,"src":"29528:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13758,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"29489:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":13759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_point_history","nodeType":"MemberAccess","referencedDeclaration":1530,"src":"29489:32:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_struct$_Point_$1486_memory_ptr_$","typeString":"function (address,uint256) view external returns (struct IVotingEscrow.Point memory)"}},"id":13762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29489:43:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"nodeType":"VariableDeclarationStatement","src":"29457:75:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13764,"name":"pt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13757,"src":"29550:2:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13765,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ts","nodeType":"MemberAccess","referencedDeclaration":1483,"src":"29550:5:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":13766,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13711,"src":"29559:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29550:18:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13779,"nodeType":"Block","src":"29618:92:82","statements":[{"expression":{"id":13777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13773,"name":"max","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13725,"src":"29682:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13774,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13744,"src":"29688:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29694:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"29688:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29682:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13778,"nodeType":"ExpressionStatement","src":"29682:13:82"}]},"id":13780,"nodeType":"IfStatement","src":"29546:164:82","trueBody":{"id":13772,"nodeType":"Block","src":"29570:42:82","statements":[{"expression":{"id":13770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13768,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13721,"src":"29588:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13769,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13744,"src":"29594:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29588:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13771,"nodeType":"ExpressionStatement","src":"29588:9:82"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13732,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13729,"src":"29195:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"313238","id":13733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29199:3:82","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"29195:7:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13782,"initializationExpression":{"assignments":[13729],"declarations":[{"constant":false,"id":13729,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13782,"src":"29180:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13728,"name":"uint256","nodeType":"ElementaryTypeName","src":"29180:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13731,"initialValue":{"hexValue":"30","id":13730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29192:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"29180:13:82"},"loopExpression":{"expression":{"id":13736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"29204:3:82","subExpression":{"id":13735,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13729,"src":"29206:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13737,"nodeType":"ExpressionStatement","src":"29204:3:82"},"nodeType":"ForStatement","src":"29175:545:82"},{"expression":{"id":13783,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13721,"src":"29736:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13719,"id":13784,"nodeType":"Return","src":"29729:10:82"}]},"documentation":{"id":13707,"nodeType":"StructuredDocumentation","src":"28717:105:82","text":" @dev Return the user epoch number for `user` corresponding to the provided `timestamp`"},"id":13786,"implemented":true,"kind":"function","modifiers":[],"name":"_findTimestampUserEpoch","nodeType":"FunctionDefinition","parameters":{"id":13716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13709,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":13786,"src":"28869:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13708,"name":"address","nodeType":"ElementaryTypeName","src":"28869:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13711,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":13786,"src":"28891:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13710,"name":"uint256","nodeType":"ElementaryTypeName","src":"28891:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13713,"mutability":"mutable","name":"minUserEpoch","nodeType":"VariableDeclaration","scope":13786,"src":"28918:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13712,"name":"uint256","nodeType":"ElementaryTypeName","src":"28918:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13715,"mutability":"mutable","name":"maxUserEpoch","nodeType":"VariableDeclaration","scope":13786,"src":"28948:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13714,"name":"uint256","nodeType":"ElementaryTypeName","src":"28948:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28859:115:82"},"returnParameters":{"id":13719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13718,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13786,"src":"28998:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13717,"name":"uint256","nodeType":"ElementaryTypeName","src":"28998:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28997:9:82"},"scope":13820,"src":"28827:919:82","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13801,"nodeType":"Block","src":"29950:117:82","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13794,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13789,"src":"30030:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31","id":13795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30042:7:82","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"30030:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13797,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"30029:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31","id":13798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30053:7:82","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"30029:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13793,"id":13800,"nodeType":"Return","src":"30022:38:82"}]},"documentation":{"id":13787,"nodeType":"StructuredDocumentation","src":"29752:114:82","text":" @dev Rounds the provided timestamp down to the beginning of the previous week (Thurs 00:00 UTC)"},"id":13802,"implemented":true,"kind":"function","modifiers":[],"name":"_roundDownTimestamp","nodeType":"FunctionDefinition","parameters":{"id":13790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13789,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":13802,"src":"29900:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13788,"name":"uint256","nodeType":"ElementaryTypeName","src":"29900:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29899:19:82"},"returnParameters":{"id":13793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13792,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13802,"src":"29941:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13791,"name":"uint256","nodeType":"ElementaryTypeName","src":"29941:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29940:9:82"},"scope":13820,"src":"29871:196:82","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":13818,"nodeType":"Block","src":"30263:135:82","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13811,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13805,"src":"30367:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":13812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30379:7:82","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"30367:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30389:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30367:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13810,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"30347:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30347:44:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13809,"id":13817,"nodeType":"Return","src":"30340:51:82"}]},"documentation":{"id":13803,"nodeType":"StructuredDocumentation","src":"30073:108:82","text":" @dev Rounds the provided timestamp up to the beginning of the next week (Thurs 00:00 UTC)"},"id":13819,"implemented":true,"kind":"function","modifiers":[],"name":"_roundUpTimestamp","nodeType":"FunctionDefinition","parameters":{"id":13806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13805,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":13819,"src":"30213:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13804,"name":"uint256","nodeType":"ElementaryTypeName","src":"30213:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30212:19:82"},"returnParameters":{"id":13809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13808,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13819,"src":"30254:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13807,"name":"uint256","nodeType":"ElementaryTypeName","src":"30254:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30253:9:82"},"scope":13820,"src":"30186:212:82","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":13821,"src":"2013:28387:82"}],"src":"688:29713:82"},"id":82},"contracts/gauges/BaseGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","exportedSymbols":{"BaseGaugeFactory":[13896]},"id":13897,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13822,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:83"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","id":13823,"nodeType":"ImportDirective","scope":13897,"sourceUnit":942,"src":"713:92:83","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol","id":13824,"nodeType":"ImportDirective","scope":13897,"sourceUnit":5931,"src":"807:76:83","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13825,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"923:22:83","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":13826,"nodeType":"InheritanceSpecifier","src":"923:22:83"}],"contractDependencies":[941],"contractKind":"contract","fullyImplemented":true,"id":13896,"linearizedBaseContracts":[13896,941],"name":"BaseGaugeFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":13828,"mutability":"mutable","name":"_gaugeImplementation","nodeType":"VariableDeclaration","scope":13896,"src":"952:36:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13827,"name":"address","nodeType":"ElementaryTypeName","src":"952:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":13832,"mutability":"mutable","name":"_isGaugeFromFactory","nodeType":"VariableDeclaration","scope":13896,"src":"995:52:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":13831,"keyType":{"id":13829,"name":"address","nodeType":"ElementaryTypeName","src":"1003:7:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"995:24:83","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":13830,"name":"bool","nodeType":"ElementaryTypeName","src":"1014:4:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"anonymous":false,"id":13836,"name":"GaugeCreated","nodeType":"EventDefinition","parameters":{"id":13835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13834,"indexed":true,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":13836,"src":"1073:21:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13833,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1072:23:83"},"src":"1054:42:83"},{"body":{"id":13845,"nodeType":"Block","src":"1143:59:83","statements":[{"expression":{"id":13843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13841,"name":"_gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13828,"src":"1153:20:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13842,"name":"gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13838,"src":"1176:19:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1153:42:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13844,"nodeType":"ExpressionStatement","src":"1153:42:83"}]},"id":13846,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13838,"mutability":"mutable","name":"gaugeImplementation","nodeType":"VariableDeclaration","scope":13846,"src":"1114:27:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13837,"name":"address","nodeType":"ElementaryTypeName","src":"1114:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1113:29:83"},"returnParameters":{"id":13840,"nodeType":"ParameterList","parameters":[],"src":"1143:0:83"},"scope":13896,"src":"1102:100:83","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13854,"nodeType":"Block","src":"1373:44:83","statements":[{"expression":{"id":13852,"name":"_gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13828,"src":"1390:20:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":13851,"id":13853,"nodeType":"Return","src":"1383:27:83"}]},"documentation":{"id":13847,"nodeType":"StructuredDocumentation","src":"1208:96:83","text":" @notice Returns the address of the implementation used for gauge deployments."},"functionSelector":"39312dee","id":13855,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeImplementation","nodeType":"FunctionDefinition","parameters":{"id":13848,"nodeType":"ParameterList","parameters":[],"src":"1340:2:83"},"returnParameters":{"id":13851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13850,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13855,"src":"1364:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13849,"name":"address","nodeType":"ElementaryTypeName","src":"1364:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1363:9:83"},"scope":13896,"src":"1309:108:83","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[940],"body":{"id":13868,"nodeType":"Block","src":"1588:50:83","statements":[{"expression":{"baseExpression":{"id":13864,"name":"_isGaugeFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13832,"src":"1605:19:83","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":13866,"indexExpression":{"id":13865,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13858,"src":"1625:5:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1605:26:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13863,"id":13867,"nodeType":"Return","src":"1598:33:83"}]},"documentation":{"id":13856,"nodeType":"StructuredDocumentation","src":"1423:79:83","text":" @notice Returns true if `gauge` was created by this factory."},"functionSelector":"ce3cc8bd","id":13869,"implemented":true,"kind":"function","modifiers":[],"name":"isGaugeFromFactory","nodeType":"FunctionDefinition","overrides":{"id":13860,"nodeType":"OverrideSpecifier","overrides":[],"src":"1564:8:83"},"parameters":{"id":13859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13858,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":13869,"src":"1535:13:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13857,"name":"address","nodeType":"ElementaryTypeName","src":"1535:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1534:15:83"},"returnParameters":{"id":13863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13862,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13869,"src":"1582:4:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13861,"name":"bool","nodeType":"ElementaryTypeName","src":"1582:4:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1581:6:83"},"scope":13896,"src":"1507:131:83","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":13894,"nodeType":"Block","src":"1900:168:83","statements":[{"assignments":[13876],"declarations":[{"constant":false,"id":13876,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":13894,"src":"1910:13:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13875,"name":"address","nodeType":"ElementaryTypeName","src":"1910:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13881,"initialValue":{"arguments":[{"id":13879,"name":"_gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13828,"src":"1939:20:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13877,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5930,"src":"1926:6:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$5930_$","typeString":"type(library Clones)"}},"id":13878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"clone","nodeType":"MemberAccess","referencedDeclaration":5873,"src":"1926:12:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_address_$","typeString":"function (address) returns (address)"}},"id":13880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1926:34:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1910:50:83"},{"expression":{"id":13886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13882,"name":"_isGaugeFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13832,"src":"1971:19:83","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":13884,"indexExpression":{"id":13883,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13876,"src":"1991:5:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1971:26:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":13885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2000:4:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1971:33:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13887,"nodeType":"ExpressionStatement","src":"1971:33:83"},{"eventCall":{"arguments":[{"id":13889,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13876,"src":"2032:5:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13888,"name":"GaugeCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13836,"src":"2019:12:83","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":13890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2019:19:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13891,"nodeType":"EmitStatement","src":"2014:24:83"},{"expression":{"id":13892,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13876,"src":"2056:5:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":13874,"id":13893,"nodeType":"Return","src":"2049:12:83"}]},"documentation":{"id":13870,"nodeType":"StructuredDocumentation","src":"1644:205:83","text":" @dev Deploys a new gauge as a proxy of the implementation in storage.\n The deployed gauge must be initialized by the caller method.\n @return The address of the deployed gauge"},"id":13895,"implemented":true,"kind":"function","modifiers":[],"name":"_create","nodeType":"FunctionDefinition","parameters":{"id":13871,"nodeType":"ParameterList","parameters":[],"src":"1870:2:83"},"returnParameters":{"id":13874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13873,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13895,"src":"1891:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13872,"name":"address","nodeType":"ElementaryTypeName","src":"1891:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1890:9:83"},"scope":13896,"src":"1854:214:83","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":13897,"src":"885:1185:83"}],"src":"688:1383:83"},"id":83},"contracts/gauges/ChildChainGaugeCheckpointer.sol":{"ast":{"absolutePath":"contracts/gauges/ChildChainGaugeCheckpointer.sol","exportedSymbols":{"ChildChainGaugeCheckpointer":[13970]},"id":13971,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13898,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:84"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","id":13899,"nodeType":"ImportDirective","scope":13971,"sourceUnit":365,"src":"713:86:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","id":13900,"nodeType":"ImportDirective","scope":13971,"sourceUnit":942,"src":"800:92:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":13901,"nodeType":"ImportDirective","scope":13971,"sourceUnit":3698,"src":"894:88:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","id":13902,"nodeType":"ImportDirective","scope":13971,"sourceUnit":7132,"src":"983:83:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol","id":13903,"nodeType":"ImportDirective","scope":13971,"sourceUnit":855,"src":"1067:92:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/ChildChainGaugeRegistry.sol","file":"./ChildChainGaugeRegistry.sol","id":13905,"nodeType":"ImportDirective","scope":13971,"sourceUnit":14270,"src":"1161:72:84","symbolAliases":[{"foreign":{"id":13904,"name":"ChildChainGaugeRegistry","nodeType":"Identifier","overloadedDeclarations":[],"src":"1170:23:84","typeDescriptions":{}}}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13907,"name":"IL2LayerZeroDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":854,"src":"1482:22:84","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"id":13908,"nodeType":"InheritanceSpecifier","src":"1482:22:84"}],"contractDependencies":[854],"contractKind":"contract","documentation":{"id":13906,"nodeType":"StructuredDocumentation","src":"1235:206:84","text":" @title ChildChainGaugeCheckpointer\n @notice Checkpointer for all child chain gauges.\n This contract calls `user_checkpoint` function on every child chain gauge during onVeBalBridged callback."},"fullyImplemented":true,"id":13970,"linearizedBaseContracts":[13970,854],"name":"ChildChainGaugeCheckpointer","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":13910,"mutability":"immutable","name":"_childChainGaugeRegistry","nodeType":"VariableDeclaration","scope":13970,"src":"1511:66:84","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"},"typeName":{"id":13909,"name":"ChildChainGaugeRegistry","nodeType":"UserDefinedTypeName","referencedDeclaration":14269,"src":"1511:23:84","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"}},"visibility":"private"},{"body":{"id":13919,"nodeType":"Block","src":"1645:67:84","statements":[{"expression":{"id":13917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13915,"name":"_childChainGaugeRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13910,"src":"1655:24:84","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13916,"name":"childChainGaugeRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13912,"src":"1682:23:84","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"}},"src":"1655:50:84","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"}},"id":13918,"nodeType":"ExpressionStatement","src":"1655:50:84"}]},"id":13920,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13912,"mutability":"mutable","name":"childChainGaugeRegistry","nodeType":"VariableDeclaration","scope":13920,"src":"1596:47:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"},"typeName":{"id":13911,"name":"ChildChainGaugeRegistry","nodeType":"UserDefinedTypeName","referencedDeclaration":14269,"src":"1596:23:84","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"}},"visibility":"internal"}],"src":"1595:49:84"},"returnParameters":{"id":13914,"nodeType":"ParameterList","parameters":[],"src":"1645:0:84"},"scope":13970,"src":"1584:128:84","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[849],"body":{"id":13962,"nodeType":"Block","src":"1817:279:84","statements":[{"assignments":[13928],"declarations":[{"constant":false,"id":13928,"mutability":"mutable","name":"totalGauges","nodeType":"VariableDeclaration","scope":13962,"src":"1827:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13927,"name":"uint256","nodeType":"ElementaryTypeName","src":"1827:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13932,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13929,"name":"_childChainGaugeRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13910,"src":"1849:24:84","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"}},"id":13930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalGauges","nodeType":"MemberAccess","referencedDeclaration":14197,"src":"1849:36:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":13931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1849:38:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1827:60:84"},{"assignments":[13936],"declarations":[{"constant":false,"id":13936,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":13962,"src":"1897:32:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[]"},"typeName":{"baseType":{"id":13934,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"1897:16:84","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":13935,"nodeType":"ArrayTypeName","src":"1897:18:84","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_storage_ptr","typeString":"contract IChildChainGauge[]"}},"visibility":"internal"}],"id":13942,"initialValue":{"arguments":[{"hexValue":"30","id":13939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1967:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":13940,"name":"totalGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13928,"src":"1970:11:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13937,"name":"_childChainGaugeRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13910,"src":"1932:24:84","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"}},"id":13938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getGauges","nodeType":"MemberAccess","referencedDeclaration":14268,"src":"1932:34:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr_$","typeString":"function (uint256,uint256) view external returns (contract IChildChainGauge[] memory)"}},"id":13941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1932:50:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[] memory"}},"nodeType":"VariableDeclarationStatement","src":"1897:85:84"},{"body":{"id":13960,"nodeType":"Block","src":"2034:56:84","statements":[{"expression":{"arguments":[{"id":13957,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13923,"src":"2074:4:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"id":13953,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13936,"src":"2048:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[] memory"}},"id":13955,"indexExpression":{"id":13954,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13944,"src":"2055:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2048:9:84","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":13956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_checkpoint","nodeType":"MemberAccess","referencedDeclaration":357,"src":"2048:25:84","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) external returns (bool)"}},"id":13958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2048:31:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13959,"nodeType":"ExpressionStatement","src":"2048:31:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13947,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13944,"src":"2012:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13948,"name":"totalGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13928,"src":"2016:11:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2012:15:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13961,"initializationExpression":{"assignments":[13944],"declarations":[{"constant":false,"id":13944,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13961,"src":"1997:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13943,"name":"uint256","nodeType":"ElementaryTypeName","src":"1997:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13946,"initialValue":{"hexValue":"30","id":13945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2009:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1997:13:84"},"loopExpression":{"expression":{"id":13951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2029:3:84","subExpression":{"id":13950,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13944,"src":"2029:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13952,"nodeType":"ExpressionStatement","src":"2029:3:84"},"nodeType":"ForStatement","src":"1992:98:84"}]},"documentation":{"id":13921,"nodeType":"StructuredDocumentation","src":"1718:38:84","text":"@inheritdoc IL2LayerZeroDelegation"},"functionSelector":"df130bfe","id":13963,"implemented":true,"kind":"function","modifiers":[],"name":"onVeBalBridged","nodeType":"FunctionDefinition","overrides":{"id":13925,"nodeType":"OverrideSpecifier","overrides":[],"src":"1808:8:84"},"parameters":{"id":13924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13923,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":13963,"src":"1785:12:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13922,"name":"address","nodeType":"ElementaryTypeName","src":"1785:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1784:14:84"},"returnParameters":{"id":13926,"nodeType":"ParameterList","parameters":[],"src":"1817:0:84"},"scope":13970,"src":"1761:335:84","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[853],"body":{"id":13968,"nodeType":"Block","src":"2194:64:84","statements":[]},"documentation":{"id":13964,"nodeType":"StructuredDocumentation","src":"2102:38:84","text":"@inheritdoc IL2LayerZeroDelegation"},"functionSelector":"96345fb5","id":13969,"implemented":true,"kind":"function","modifiers":[],"name":"onVeBalSupplyUpdate","nodeType":"FunctionDefinition","overrides":{"id":13966,"nodeType":"OverrideSpecifier","overrides":[],"src":"2185:8:84"},"parameters":{"id":13965,"nodeType":"ParameterList","parameters":[],"src":"2173:2:84"},"returnParameters":{"id":13967,"nodeType":"ParameterList","parameters":[],"src":"2194:0:84"},"scope":13970,"src":"2145:113:84","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":13971,"src":"1442:818:84"}],"src":"688:1573:84"},"id":84},"contracts/gauges/ChildChainGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/ChildChainGaugeFactory.sol","exportedSymbols":{"ChildChainGaugeFactory":[14059]},"id":14060,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13972,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:85"},{"id":13973,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:85"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","id":13974,"nodeType":"ImportDirective","scope":14060,"sourceUnit":365,"src":"747:86:85","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol","id":13975,"nodeType":"ImportDirective","scope":14060,"sourceUnit":3737,"src":"834:72:85","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"./BaseGaugeFactory.sol","id":13976,"nodeType":"ImportDirective","scope":14060,"sourceUnit":13897,"src":"908:32:85","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13977,"name":"Version","nodeType":"UserDefinedTypeName","referencedDeclaration":3736,"src":"977:7:85","typeDescriptions":{"typeIdentifier":"t_contract$_Version_$3736","typeString":"contract Version"}},"id":13978,"nodeType":"InheritanceSpecifier","src":"977:7:85"},{"baseName":{"id":13979,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"986:16:85","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":13980,"nodeType":"InheritanceSpecifier","src":"986:16:85"}],"contractDependencies":[941,2340,3736,13896],"contractKind":"contract","fullyImplemented":true,"id":14059,"linearizedBaseContracts":[14059,13896,941,3736,2340],"name":"ChildChainGaugeFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":13982,"mutability":"mutable","name":"_productVersion","nodeType":"VariableDeclaration","scope":14059,"src":"1009:30:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":13981,"name":"string","nodeType":"ElementaryTypeName","src":"1009:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":14023,"nodeType":"Block","src":"1257:227:85","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":14015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14004,"name":"gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13984,"src":"1315:19:85","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":14005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"version","nodeType":"MemberAccess","referencedDeclaration":2339,"src":"1315:27:85","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view external returns (string memory)"}},"id":14006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1315:29:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":14002,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1298:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1298:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1298:47:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14001,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1288:9:85","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1288:58:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":14012,"name":"productVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"1377:14:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":14010,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1360:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1360:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1360:32:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14009,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1350:9:85","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1350:43:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1288:105:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"56455253494f4e5f4d49534d41544348","id":14016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1407:18:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_f0b18e3567d0464aff5c29f0af4355516e7dec27a3eefbd6364aa716c8d6ecab","typeString":"literal_string \"VERSION_MISMATCH\""},"value":"VERSION_MISMATCH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f0b18e3567d0464aff5c29f0af4355516e7dec27a3eefbd6364aa716c8d6ecab","typeString":"literal_string \"VERSION_MISMATCH\""}],"id":14000,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1267:7:85","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1267:168:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14018,"nodeType":"ExpressionStatement","src":"1267:168:85"},{"expression":{"id":14021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14019,"name":"_productVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13982,"src":"1445:15:85","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14020,"name":"productVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"1463:14:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1445:32:85","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":14022,"nodeType":"ExpressionStatement","src":"1445:32:85"}]},"id":14024,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13991,"name":"factoryVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13986,"src":"1194:14:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":13992,"modifierName":{"id":13990,"name":"Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"1186:7:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Version_$3736_$","typeString":"type(contract Version)"}},"nodeType":"ModifierInvocation","src":"1186:23:85"},{"arguments":[{"arguments":[{"id":13996,"name":"gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13984,"src":"1235:19:85","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}],"id":13995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1227:7:85","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13994,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:85","typeDescriptions":{}}},"id":13997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1227:28:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":13998,"modifierName":{"id":13993,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1210:16:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"1210:46:85"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13984,"mutability":"mutable","name":"gaugeImplementation","nodeType":"VariableDeclaration","scope":14024,"src":"1067:36:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"},"typeName":{"id":13983,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"1067:16:85","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"visibility":"internal"},{"constant":false,"id":13986,"mutability":"mutable","name":"factoryVersion","nodeType":"VariableDeclaration","scope":14024,"src":"1113:28:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13985,"name":"string","nodeType":"ElementaryTypeName","src":"1113:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13988,"mutability":"mutable","name":"productVersion","nodeType":"VariableDeclaration","scope":14024,"src":"1151:28:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13987,"name":"string","nodeType":"ElementaryTypeName","src":"1151:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1057:128:85"},"returnParameters":{"id":13999,"nodeType":"ParameterList","parameters":[],"src":"1257:0:85"},"scope":14059,"src":"1046:438:85","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14032,"nodeType":"Block","src":"1768:39:85","statements":[{"expression":{"id":14030,"name":"_productVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13982,"src":"1785:15:85","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":14029,"id":14031,"nodeType":"Return","src":"1778:22:85"}]},"documentation":{"id":14025,"nodeType":"StructuredDocumentation","src":"1490:208:85","text":" @notice Returns a JSON representation of the deployed gauge version containing name, version number and task ID.\n @dev This value will only be updated at factory creation time."},"functionSelector":"18d6186f","id":14033,"implemented":true,"kind":"function","modifiers":[],"name":"getProductVersion","nodeType":"FunctionDefinition","parameters":{"id":14026,"nodeType":"ParameterList","parameters":[],"src":"1729:2:85"},"returnParameters":{"id":14029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14028,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14033,"src":"1753:13:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14027,"name":"string","nodeType":"ElementaryTypeName","src":"1753:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1752:15:85"},"scope":14059,"src":"1703:104:85","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":14057,"nodeType":"Block","src":"2407:135:85","statements":[{"assignments":[14042],"declarations":[{"constant":false,"id":14042,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14057,"src":"2417:13:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14041,"name":"address","nodeType":"ElementaryTypeName","src":"2417:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14045,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":14043,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"2433:7:85","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":14044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2433:9:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2417:25:85"},{"expression":{"arguments":[{"id":14050,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14036,"src":"2487:4:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":14051,"name":"getProductVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14033,"src":"2493:17:85","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":14052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2493:19:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"arguments":[{"id":14047,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14042,"src":"2469:5:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14046,"name":"IChildChainGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"2452:16:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChildChainGauge_$364_$","typeString":"type(contract IChildChainGauge)"}},"id":14048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2452:23:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":14049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":341,"src":"2452:34:85","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,string memory) external"}},"id":14053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2452:61:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14054,"nodeType":"ExpressionStatement","src":"2452:61:85"},{"expression":{"id":14055,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14042,"src":"2530:5:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":14040,"id":14056,"nodeType":"Return","src":"2523:12:85"}]},"documentation":{"id":14034,"nodeType":"StructuredDocumentation","src":"1813:532:85","text":" @notice Deploys a new gauge for a Balancer pool.\n @dev As anyone can register arbitrary Balancer pools with the Vault,\n it's impossible to prove onchain that `pool` is a \"valid\" deployment.\n Care must be taken to ensure that gauges deployed from this factory are suitable to distribute rewards.\n It is possible to deploy multiple gauges for a single pool.\n @param pool The address of the pool for which to deploy a gauge\n @return The address of the deployed gauge"},"functionSelector":"9ed93318","id":14058,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":14037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14036,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":14058,"src":"2366:12:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14035,"name":"address","nodeType":"ElementaryTypeName","src":"2366:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2365:14:85"},"returnParameters":{"id":14040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14039,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14058,"src":"2398:7:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14038,"name":"address","nodeType":"ElementaryTypeName","src":"2398:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2397:9:85"},"scope":14059,"src":"2350:192:85","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":14060,"src":"942:1602:85"}],"src":"688:1857:85"},"id":85},"contracts/gauges/ChildChainGaugeRegistry.sol":{"ast":{"absolutePath":"contracts/gauges/ChildChainGaugeRegistry.sol","exportedSymbols":{"ChildChainGaugeRegistry":[14269]},"id":14270,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14061,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:86"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","id":14062,"nodeType":"ImportDirective","scope":14270,"sourceUnit":942,"src":"713:92:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","id":14063,"nodeType":"ImportDirective","scope":14270,"sourceUnit":365,"src":"806:86:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":14064,"nodeType":"ImportDirective","scope":14270,"sourceUnit":3698,"src":"894:88:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","id":14065,"nodeType":"ImportDirective","scope":14270,"sourceUnit":7132,"src":"983:83:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":14066,"nodeType":"ImportDirective","scope":14270,"sourceUnit":7188,"src":"1067:85:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/L2BalancerPseudoMinter.sol","file":"../L2BalancerPseudoMinter.sol","id":14067,"nodeType":"ImportDirective","scope":14270,"sourceUnit":9269,"src":"1154:39:86","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14069,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1476:23:86","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":14070,"nodeType":"InheritanceSpecifier","src":"1476:23:86"},{"baseName":{"id":14071,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"1501:15:86","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":14072,"nodeType":"InheritanceSpecifier","src":"1501:15:86"}],"contractDependencies":[2259,3128,3697,7187],"contractKind":"contract","documentation":{"id":14068,"nodeType":"StructuredDocumentation","src":"1195:244:86","text":" @title ChildChainGaugeRegistry\n @notice Registry for all child chain gauges.\n This contract enables the addition and removal of child chain gauges to the registry.\n Duplication is not permitted. Gauges are verified to be valid."},"fullyImplemented":true,"id":14269,"linearizedBaseContracts":[14269,7187,3697,3128,2259],"name":"ChildChainGaugeRegistry","nodeType":"ContractDefinition","nodes":[{"id":14075,"libraryName":{"id":14073,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7131,"src":"1529:13:86","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$7131","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"1523:49:86","typeName":{"id":14074,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1547:24:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"constant":false,"id":14077,"mutability":"immutable","name":"_l2BalancerPseudoMinter","nodeType":"VariableDeclaration","scope":14269,"src":"1578:64:86","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"},"typeName":{"id":14076,"name":"L2BalancerPseudoMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":9268,"src":"1578:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"}},"visibility":"private"},{"constant":false,"id":14079,"mutability":"immutable","name":"_liquidityGaugeFactory","nodeType":"VariableDeclaration","scope":14269,"src":"1648:63:86","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":14078,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"1648:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"private"},{"constant":false,"id":14081,"mutability":"mutable","name":"_gauges","nodeType":"VariableDeclaration","scope":14269,"src":"1718:40:86","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":14080,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1718:24:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"private"},{"anonymous":false,"id":14085,"name":"GaugeAdded","nodeType":"EventDefinition","parameters":{"id":14084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14083,"indexed":true,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14085,"src":"1782:30:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"},"typeName":{"id":14082,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"1782:16:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"visibility":"internal"}],"src":"1781:32:86"},"src":"1765:49:86"},{"anonymous":false,"id":14089,"name":"GaugeRemoved","nodeType":"EventDefinition","parameters":{"id":14088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14087,"indexed":true,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14089,"src":"1838:30:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"},"typeName":{"id":14086,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"1838:16:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"visibility":"internal"}],"src":"1837:32:86"},"src":"1819:51:86"},{"body":{"id":14110,"nodeType":"Block","src":"2278:121:86","statements":[{"expression":{"id":14104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14102,"name":"_l2BalancerPseudoMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14077,"src":"2288:23:86","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14103,"name":"l2BalancerPseudoMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14092,"src":"2314:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"}},"src":"2288:48:86","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"}},"id":14105,"nodeType":"ExpressionStatement","src":"2288:48:86"},{"expression":{"id":14108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14106,"name":"_liquidityGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14079,"src":"2346:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14107,"name":"liquidityGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14094,"src":"2371:21:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"src":"2346:46:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":14109,"nodeType":"ExpressionStatement","src":"2346:46:86"}]},"documentation":{"id":14090,"nodeType":"StructuredDocumentation","src":"1876:221:86","text":" @notice Constructor initializes the ChildChainGaugeRegistry contract.\n @param l2BalancerPseudoMinter The L2 Balancer pseudo minter.\n @param liquidityGaugeFactory The liquidity gauge factory."},"id":14111,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14097,"name":"l2BalancerPseudoMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14092,"src":"2239:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"}},"id":14098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getVault","nodeType":"MemberAccess","referencedDeclaration":3642,"src":"2239:31:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view external returns (contract IVault)"}},"id":14099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2239:33:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":14100,"modifierName":{"id":14096,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"2215:23:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"2215:58:86"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14092,"mutability":"mutable","name":"l2BalancerPseudoMinter","nodeType":"VariableDeclaration","scope":14111,"src":"2114:45:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"},"typeName":{"id":14091,"name":"L2BalancerPseudoMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":9268,"src":"2114:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"}},"visibility":"internal"},{"constant":false,"id":14094,"mutability":"mutable","name":"liquidityGaugeFactory","nodeType":"VariableDeclaration","scope":14111,"src":"2161:44:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":14093,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"2161:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"2113:93:86"},"returnParameters":{"id":14101,"nodeType":"ParameterList","parameters":[],"src":"2278:0:86"},"scope":14269,"src":"2102:297:86","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14161,"nodeType":"Block","src":"2913:541:86","statements":[{"assignments":[14122],"declarations":[{"constant":false,"id":14122,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":14161,"src":"3108:30:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":14121,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"3108:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"id":14126,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14123,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14114,"src":"3141:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":14124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"factory","nodeType":"MemberAccess","referencedDeclaration":363,"src":"3141:13:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"function () view external returns (contract ILiquidityGaugeFactory)"}},"id":14125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3141:15:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"VariableDeclarationStatement","src":"3108:48:86"},{"expression":{"arguments":[{"arguments":[{"id":14130,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14122,"src":"3218:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}],"expression":{"id":14128,"name":"_l2BalancerPseudoMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14077,"src":"3174:23:86","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"}},"id":14129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isValidGaugeFactory","nodeType":"MemberAccess","referencedDeclaration":9105,"src":"3174:43:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ILiquidityGaugeFactory_$941_$returns$_t_bool_$","typeString":"function (contract ILiquidityGaugeFactory) view external returns (bool)"}},"id":14131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3174:52:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e56414c49445f47415547455f464143544f5259","id":14132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3228:23:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_07bbd958e90df01ec1c65e98f624ae2f0fdc1d67c7d103281f1b9c914b079bc6","typeString":"literal_string \"INVALID_GAUGE_FACTORY\""},"value":"INVALID_GAUGE_FACTORY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_07bbd958e90df01ec1c65e98f624ae2f0fdc1d67c7d103281f1b9c914b079bc6","typeString":"literal_string \"INVALID_GAUGE_FACTORY\""}],"id":14127,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3166:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3166:86:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14134,"nodeType":"ExpressionStatement","src":"3166:86:86"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":14140,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14114,"src":"3305:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}],"id":14139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3297:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14138,"name":"address","nodeType":"ElementaryTypeName","src":"3297:7:86","typeDescriptions":{}}},"id":14141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3297:14:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14136,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14122,"src":"3270:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":14137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isGaugeFromFactory","nodeType":"MemberAccess","referencedDeclaration":940,"src":"3270:26:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":14142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3270:42:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"47415547455f4e4f545f46524f4d5f464143544f5259","id":14143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3314:24:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_d308f94861169d2d9edfca96af279257acef8fe6014ba918915ce0943a795c25","typeString":"literal_string \"GAUGE_NOT_FROM_FACTORY\""},"value":"GAUGE_NOT_FROM_FACTORY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d308f94861169d2d9edfca96af279257acef8fe6014ba918915ce0943a795c25","typeString":"literal_string \"GAUGE_NOT_FROM_FACTORY\""}],"id":14135,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3262:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3262:77:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14145,"nodeType":"ExpressionStatement","src":"3262:77:86"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":14151,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14114,"src":"3378:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}],"id":14150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3370:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14149,"name":"address","nodeType":"ElementaryTypeName","src":"3370:7:86","typeDescriptions":{}}},"id":14152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3370:14:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14147,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14081,"src":"3358:7:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":14148,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":6731,"src":"3358:11:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":14153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3358:27:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"47415547455f414c52454144595f52454749535445524544","id":14154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3387:26:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_a126fc5bf2d8c6fb97f8f2615d0961e123128e9005f3df6fbe3ef4495b2d3e6d","typeString":"literal_string \"GAUGE_ALREADY_REGISTERED\""},"value":"GAUGE_ALREADY_REGISTERED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a126fc5bf2d8c6fb97f8f2615d0961e123128e9005f3df6fbe3ef4495b2d3e6d","typeString":"literal_string \"GAUGE_ALREADY_REGISTERED\""}],"id":14146,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3350:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3350:64:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14156,"nodeType":"ExpressionStatement","src":"3350:64:86"},{"eventCall":{"arguments":[{"id":14158,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14114,"src":"3441:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}],"id":14157,"name":"GaugeAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14085,"src":"3430:10:86","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IChildChainGauge_$364_$returns$__$","typeString":"function (contract IChildChainGauge)"}},"id":14159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3430:17:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14160,"nodeType":"EmitStatement","src":"3425:22:86"}]},"documentation":{"id":14112,"nodeType":"StructuredDocumentation","src":"2405:426:86","text":" @notice Add a gauge to the registry after validating its legitimacy.\n @dev This function checks that the gauge's factory is registered with the L2BalancerPseudoMinter,\n and that the gauge has been deployed from the registered factory. If these conditions are met,\n the gauge is added to the registry, and a GaugeAdded event is emitted.\n @param gauge The gauge to add to the registry."},"functionSelector":"9da882ac","id":14162,"implemented":true,"kind":"function","modifiers":[{"id":14117,"modifierName":{"id":14116,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"2887:12:86","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2887:12:86"},{"id":14119,"modifierName":{"id":14118,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"2900:12:86","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2900:12:86"}],"name":"addGauge","nodeType":"FunctionDefinition","parameters":{"id":14115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14114,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14162,"src":"2854:22:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"},"typeName":{"id":14113,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"2854:16:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"visibility":"internal"}],"src":"2853:24:86"},"returnParameters":{"id":14120,"nodeType":"ParameterList","parameters":[],"src":"2913:0:86"},"scope":14269,"src":"2836:618:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14185,"nodeType":"Block","src":"3864:115:86","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":14175,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14165,"src":"3905:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}],"id":14174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3897:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14173,"name":"address","nodeType":"ElementaryTypeName","src":"3897:7:86","typeDescriptions":{}}},"id":14176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3897:14:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14171,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14081,"src":"3882:7:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":14172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":6816,"src":"3882:14:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":14177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3882:30:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"47415547455f4e4f545f52454749535445524544","id":14178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3914:22:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_302c6e7666f3e467445ab923a9c9ae313fb08ad504cff74fe1770272dc1b842a","typeString":"literal_string \"GAUGE_NOT_REGISTERED\""},"value":"GAUGE_NOT_REGISTERED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_302c6e7666f3e467445ab923a9c9ae313fb08ad504cff74fe1770272dc1b842a","typeString":"literal_string \"GAUGE_NOT_REGISTERED\""}],"id":14170,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3874:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3874:63:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14180,"nodeType":"ExpressionStatement","src":"3874:63:86"},{"eventCall":{"arguments":[{"id":14182,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14165,"src":"3966:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}],"id":14181,"name":"GaugeRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14089,"src":"3953:12:86","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IChildChainGauge_$364_$returns$__$","typeString":"function (contract IChildChainGauge)"}},"id":14183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3953:19:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14184,"nodeType":"EmitStatement","src":"3948:24:86"}]},"documentation":{"id":14163,"nodeType":"StructuredDocumentation","src":"3460:332:86","text":" @notice Remove a registered gauge from the registry and emit a GaugeRemoved event.\n @dev If the gauge is not registered, the function reverts with a \"GAUGE_NOT_REGISTERED\" error.\n Remove a gauge might affect the order of the remaining gauges.\n @param gauge The gauge to remove from the registry."},"functionSelector":"3a045145","id":14186,"implemented":true,"kind":"function","modifiers":[{"id":14168,"modifierName":{"id":14167,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3851:12:86","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3851:12:86"}],"name":"removeGauge","nodeType":"FunctionDefinition","parameters":{"id":14166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14165,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14186,"src":"3818:22:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"},"typeName":{"id":14164,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"3818:16:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"visibility":"internal"}],"src":"3817:24:86"},"returnParameters":{"id":14169,"nodeType":"ParameterList","parameters":[],"src":"3864:0:86"},"scope":14269,"src":"3797:182:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14196,"nodeType":"Block","src":"4202:40:86","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14192,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14081,"src":"4219:7:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":14193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6847,"src":"4219:14:86","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":14194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4219:16:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14191,"id":14195,"nodeType":"Return","src":"4212:23:86"}]},"documentation":{"id":14187,"nodeType":"StructuredDocumentation","src":"3985:157:86","text":" @notice Retrieve the total number of gauges registered in the registry.\n @return The total number of registered gauges as a uint256."},"functionSelector":"2ba27111","id":14197,"implemented":true,"kind":"function","modifiers":[],"name":"totalGauges","nodeType":"FunctionDefinition","parameters":{"id":14188,"nodeType":"ParameterList","parameters":[],"src":"4167:2:86"},"returnParameters":{"id":14191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14190,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14197,"src":"4193:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14189,"name":"uint256","nodeType":"ElementaryTypeName","src":"4193:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4192:9:86"},"scope":14269,"src":"4147:95:86","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":14267,"nodeType":"Block","src":"4754:428:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14209,"name":"startIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14200,"src":"4772:10:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":14210,"name":"endIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14202,"src":"4785:8:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4772:21:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e56414c49445f494e4449434553","id":14212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4795:17:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_780d17356ecfbc61ea8fc333292211a2572ce2fdff7bd90a37d610286aee3548","typeString":"literal_string \"INVALID_INDICES\""},"value":"INVALID_INDICES"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_780d17356ecfbc61ea8fc333292211a2572ce2fdff7bd90a37d610286aee3548","typeString":"literal_string \"INVALID_INDICES\""}],"id":14208,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4764:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4764:49:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14214,"nodeType":"ExpressionStatement","src":"4764:49:86"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14216,"name":"endIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14202,"src":"4831:8:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14217,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14081,"src":"4843:7:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":14218,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6847,"src":"4843:14:86","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":14219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4843:16:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4831:28:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"454e445f494e4445585f4f55545f4f465f424f554e4453","id":14221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4861:25:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_bbf27e93a5b35b66ec2e6abe208fa6e08c352ccf5f565522bdc5f40ebcd01b55","typeString":"literal_string \"END_INDEX_OUT_OF_BOUNDS\""},"value":"END_INDEX_OUT_OF_BOUNDS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bbf27e93a5b35b66ec2e6abe208fa6e08c352ccf5f565522bdc5f40ebcd01b55","typeString":"literal_string \"END_INDEX_OUT_OF_BOUNDS\""}],"id":14215,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4823:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4823:64:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14223,"nodeType":"ExpressionStatement","src":"4823:64:86"},{"assignments":[14225],"declarations":[{"constant":false,"id":14225,"mutability":"mutable","name":"size","nodeType":"VariableDeclaration","scope":14267,"src":"4898:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14224,"name":"uint256","nodeType":"ElementaryTypeName","src":"4898:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14229,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14226,"name":"endIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14202,"src":"4913:8:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14227,"name":"startIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14200,"src":"4924:10:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4913:21:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4898:36:86"},{"assignments":[14233],"declarations":[{"constant":false,"id":14233,"mutability":"mutable","name":"slicedGauges","nodeType":"VariableDeclaration","scope":14267,"src":"4944:38:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[]"},"typeName":{"baseType":{"id":14231,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"4944:16:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":14232,"nodeType":"ArrayTypeName","src":"4944:18:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_storage_ptr","typeString":"contract IChildChainGauge[]"}},"visibility":"internal"}],"id":14239,"initialValue":{"arguments":[{"id":14237,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14225,"src":"5008:4:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4985:22:86","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IChildChainGauge[] memory)"},"typeName":{"baseType":{"id":14234,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"4989:16:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":14235,"nodeType":"ArrayTypeName","src":"4989:18:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_storage_ptr","typeString":"contract IChildChainGauge[]"}}},"id":14238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4985:28:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4944:69:86"},{"body":{"id":14263,"nodeType":"Block","src":"5059:87:86","statements":[{"expression":{"id":14261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14250,"name":"slicedGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14233,"src":"5073:12:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[] memory"}},"id":14252,"indexExpression":{"id":14251,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14241,"src":"5086:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5073:15:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14256,"name":"startIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14200,"src":"5119:10:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":14257,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14241,"src":"5132:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5119:14:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14254,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14081,"src":"5108:7:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":14255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":6873,"src":"5108:10:86","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":14259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5108:26:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14253,"name":"IChildChainGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"5091:16:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChildChainGauge_$364_$","typeString":"type(contract IChildChainGauge)"}},"id":14260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5091:44:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"src":"5073:62:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":14262,"nodeType":"ExpressionStatement","src":"5073:62:86"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14244,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14241,"src":"5044:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":14245,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14225,"src":"5048:4:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5044:8:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14264,"initializationExpression":{"assignments":[14241],"declarations":[{"constant":false,"id":14241,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":14264,"src":"5029:9:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14240,"name":"uint256","nodeType":"ElementaryTypeName","src":"5029:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14243,"initialValue":{"hexValue":"30","id":14242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5041:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5029:13:86"},"loopExpression":{"expression":{"id":14248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5054:3:86","subExpression":{"id":14247,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14241,"src":"5054:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14249,"nodeType":"ExpressionStatement","src":"5054:3:86"},"nodeType":"ForStatement","src":"5024:122:86"},{"expression":{"id":14265,"name":"slicedGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14233,"src":"5163:12:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[] memory"}},"functionReturnParameters":14207,"id":14266,"nodeType":"Return","src":"5156:19:86"}]},"documentation":{"id":14198,"nodeType":"StructuredDocumentation","src":"4248:394:86","text":" @notice Retrieve a list of gauges within the specified index range from the registry.\n @param startIndex The starting index (inclusive) for retrieving gauges from the registry.\n @param endIndex The ending index (exclusive) for retrieving gauges from the registry.\n @return An array of IChildChainGauge containing the gauges within the specified index range."},"functionSelector":"77b8883a","id":14268,"implemented":true,"kind":"function","modifiers":[],"name":"getGauges","nodeType":"FunctionDefinition","parameters":{"id":14203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14200,"mutability":"mutable","name":"startIndex","nodeType":"VariableDeclaration","scope":14268,"src":"4666:18:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14199,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14202,"mutability":"mutable","name":"endIndex","nodeType":"VariableDeclaration","scope":14268,"src":"4686:16:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14201,"name":"uint256","nodeType":"ElementaryTypeName","src":"4686:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4665:38:86"},"returnParameters":{"id":14207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14206,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14268,"src":"4727:25:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[]"},"typeName":{"baseType":{"id":14204,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"4727:16:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":14205,"nodeType":"ArrayTypeName","src":"4727:18:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_storage_ptr","typeString":"contract IChildChainGauge[]"}},"visibility":"internal"}],"src":"4726:27:86"},"scope":14269,"src":"4647:535:86","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14270,"src":"1440:3744:86"}],"src":"688:4497:86"},"id":86},"contracts/gauges/ChildChainGaugeRewardHelper.sol":{"ast":{"absolutePath":"contracts/gauges/ChildChainGaugeRewardHelper.sol","exportedSymbols":{"ChildChainGaugeRewardHelper":[14370]},"id":14371,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14271,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:87"},{"id":14272,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:87"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol","id":14273,"nodeType":"ImportDirective","scope":14371,"sourceUnit":1206,"src":"747:87:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol","id":14274,"nodeType":"ImportDirective","scope":14371,"sourceUnit":463,"src":"835:89:87","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":14275,"nodeType":"StructuredDocumentation","src":"926:282:87","text":" @title ChildChainGaugeRewardHelper\n @author Balancer Labs\n @notice Helper contract which allows claiming rewards from many RewardsOnlyGauges in a single transaction.\n This contract manually triggers an update to the gauges' streamers as a workaround for the gauge ."},"fullyImplemented":true,"id":14370,"linearizedBaseContracts":[14370],"name":"ChildChainGaugeRewardHelper","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"ff98f88d","id":14278,"mutability":"constant","name":"CLAIM_FREQUENCY","nodeType":"VariableDeclaration","scope":14370,"src":"1252:46:87","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14276,"name":"uint256","nodeType":"ElementaryTypeName","src":"1252:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33363030","id":14277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1294:4:87","typeDescriptions":{"typeIdentifier":"t_rational_3600_by_1","typeString":"int_const 3600"},"value":"3600"},"visibility":"public"},{"body":{"id":14303,"nodeType":"Block","src":"2023:111:87","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14290,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14281,"src":"2033:5:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":14292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reward_contract","nodeType":"MemberAccess","referencedDeclaration":1188,"src":"2033:21:87","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IChildChainStreamer_$462_$","typeString":"function () view external returns (contract IChildChainStreamer)"}},"id":14293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2033:23:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"id":14294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"get_reward","nodeType":"MemberAccess","referencedDeclaration":445,"src":"2033:34:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":14295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2033:36:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14296,"nodeType":"ExpressionStatement","src":"2033:36:87"},{"expression":{"arguments":[{"id":14299,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14283,"src":"2115:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14300,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14285,"src":"2121:5:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14297,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14281,"src":"2086:5:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":14298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"claimable_reward_write","nodeType":"MemberAccess","referencedDeclaration":1162,"src":"2086:28:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) external returns (uint256)"}},"id":14301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2086:41:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14289,"id":14302,"nodeType":"Return","src":"2079:48:87"}]},"documentation":{"id":14279,"nodeType":"StructuredDocumentation","src":"1305:575:87","text":" @notice Returns the amount of ERC20 token `token` on RewardsOnlyGauge `gauge` claimable by address `user`.\n @dev This function cannot be marked `view` as it updates the gauge's state (not possible in a view context).\n Offchain users attempting to read from this function should manually perform a static call or modify the abi.\n @param gauge - The address of the RewardsOnlyGauge for which to query.\n @param user - The address of the user for which to query.\n @param token - The address of the reward token for which to query."},"functionSelector":"5db74949","id":14304,"implemented":true,"kind":"function","modifiers":[],"name":"getPendingRewards","nodeType":"FunctionDefinition","parameters":{"id":14286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14281,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14304,"src":"1921:23:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},"typeName":{"id":14280,"name":"IRewardsOnlyGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1205,"src":"1921:17:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"visibility":"internal"},{"constant":false,"id":14283,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":14304,"src":"1954:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14282,"name":"address","nodeType":"ElementaryTypeName","src":"1954:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14285,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":14304,"src":"1976:13:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14284,"name":"address","nodeType":"ElementaryTypeName","src":"1976:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1911:84:87"},"returnParameters":{"id":14289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14288,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14304,"src":"2014:7:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14287,"name":"uint256","nodeType":"ElementaryTypeName","src":"2014:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2013:9:87"},"scope":14370,"src":"1885:249:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14317,"nodeType":"Block","src":"2481:52:87","statements":[{"expression":{"arguments":[{"id":14313,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14307,"src":"2514:5:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},{"id":14314,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14309,"src":"2521:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14312,"name":"_claimRewardsFromGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14369,"src":"2491:22:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IRewardsOnlyGauge_$1205_$_t_address_$returns$__$","typeString":"function (contract IRewardsOnlyGauge,address)"}},"id":14315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2491:35:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14316,"nodeType":"ExpressionStatement","src":"2491:35:87"}]},"documentation":{"id":14305,"nodeType":"StructuredDocumentation","src":"2140:257:87","text":" @notice Claims pending rewards on RewardsOnlyGauge `gauge` for account `user`.\n @param gauge - The address of the RewardsOnlyGauge from which to claim rewards.\n @param user - The address of the user for which to claim rewards."},"functionSelector":"71d5065c","id":14318,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewardsFromGauge","nodeType":"FunctionDefinition","parameters":{"id":14310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14307,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14318,"src":"2433:23:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},"typeName":{"id":14306,"name":"IRewardsOnlyGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1205,"src":"2433:17:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"visibility":"internal"},{"constant":false,"id":14309,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":14318,"src":"2458:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14308,"name":"address","nodeType":"ElementaryTypeName","src":"2458:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2432:39:87"},"returnParameters":{"id":14311,"nodeType":"ParameterList","parameters":[],"src":"2481:0:87"},"scope":14370,"src":"2402:131:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14347,"nodeType":"Block","src":"2911:124:87","statements":[{"body":{"id":14345,"nodeType":"Block","src":"2965:64:87","statements":[{"expression":{"arguments":[{"baseExpression":{"id":14339,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"3002:6:87","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRewardsOnlyGauge_$1205_$dyn_calldata_ptr","typeString":"contract IRewardsOnlyGauge[] calldata"}},"id":14341,"indexExpression":{"id":14340,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14328,"src":"3009:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3002:9:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},{"id":14342,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14324,"src":"3013:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14338,"name":"_claimRewardsFromGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14369,"src":"2979:22:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IRewardsOnlyGauge_$1205_$_t_address_$returns$__$","typeString":"function (contract IRewardsOnlyGauge,address)"}},"id":14343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2979:39:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14344,"nodeType":"ExpressionStatement","src":"2979:39:87"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14331,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14328,"src":"2941:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":14332,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"2945:6:87","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRewardsOnlyGauge_$1205_$dyn_calldata_ptr","typeString":"contract IRewardsOnlyGauge[] calldata"}},"id":14333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2945:13:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2941:17:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14346,"initializationExpression":{"assignments":[14328],"declarations":[{"constant":false,"id":14328,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":14346,"src":"2926:9:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14327,"name":"uint256","nodeType":"ElementaryTypeName","src":"2926:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14330,"initialValue":{"hexValue":"30","id":14329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2938:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2926:13:87"},"loopExpression":{"expression":{"id":14336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2960:3:87","subExpression":{"id":14335,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14328,"src":"2960:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14337,"nodeType":"ExpressionStatement","src":"2960:3:87"},"nodeType":"ForStatement","src":"2921:108:87"}]},"documentation":{"id":14319,"nodeType":"StructuredDocumentation","src":"2539:275:87","text":" @notice Claims pending rewards on a list of RewardsOnlyGauges `gauges` for account `user`.\n @param gauges - An array of address of RewardsOnlyGauges from which to claim rewards.\n @param user - The address of the user for which to claim rewards."},"functionSelector":"c2ec33b5","id":14348,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewardsFromGauges","nodeType":"FunctionDefinition","parameters":{"id":14325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14322,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":14348,"src":"2851:35:87","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRewardsOnlyGauge_$1205_$dyn_calldata_ptr","typeString":"contract IRewardsOnlyGauge[]"},"typeName":{"baseType":{"id":14320,"name":"IRewardsOnlyGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1205,"src":"2851:17:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":14321,"nodeType":"ArrayTypeName","src":"2851:19:87","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRewardsOnlyGauge_$1205_$dyn_storage_ptr","typeString":"contract IRewardsOnlyGauge[]"}},"visibility":"internal"},{"constant":false,"id":14324,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":14348,"src":"2888:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14323,"name":"address","nodeType":"ElementaryTypeName","src":"2888:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2850:51:87"},"returnParameters":{"id":14326,"nodeType":"ParameterList","parameters":[],"src":"2911:0:87"},"scope":14370,"src":"2819:216:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14368,"nodeType":"Block","src":"3148:147:87","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14355,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14350,"src":"3217:5:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":14357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reward_contract","nodeType":"MemberAccess","referencedDeclaration":1188,"src":"3217:21:87","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IChildChainStreamer_$462_$","typeString":"function () view external returns (contract IChildChainStreamer)"}},"id":14358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3217:23:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"id":14359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"get_reward","nodeType":"MemberAccess","referencedDeclaration":445,"src":"3217:34:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":14360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3217:36:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14361,"nodeType":"ExpressionStatement","src":"3217:36:87"},{"expression":{"arguments":[{"id":14365,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14352,"src":"3283:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14362,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14350,"src":"3263:5:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":14364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"claim_rewards","nodeType":"MemberAccess","referencedDeclaration":1123,"src":"3263:19:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":14366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3263:25:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14367,"nodeType":"ExpressionStatement","src":"3263:25:87"}]},"id":14369,"implemented":true,"kind":"function","modifiers":[],"name":"_claimRewardsFromGauge","nodeType":"FunctionDefinition","parameters":{"id":14353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14350,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14369,"src":"3100:23:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},"typeName":{"id":14349,"name":"IRewardsOnlyGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1205,"src":"3100:17:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"visibility":"internal"},{"constant":false,"id":14352,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":14369,"src":"3125:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14351,"name":"address","nodeType":"ElementaryTypeName","src":"3125:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3099:39:87"},"returnParameters":{"id":14354,"nodeType":"ParameterList","parameters":[],"src":"3148:0:87"},"scope":14370,"src":"3068:227:87","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":14371,"src":"1209:2088:87"}],"src":"688:2610:87"},"id":87},"contracts/gauges/ChildChainLiquidityGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/ChildChainLiquidityGaugeFactory.sol","exportedSymbols":{"ChildChainLiquidityGaugeFactory":[14622]},"id":14623,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14372,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:88"},{"id":14373,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:88"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol","id":14374,"nodeType":"ImportDirective","scope":14623,"sourceUnit":435,"src":"747:102:88","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","id":14375,"nodeType":"ImportDirective","scope":14623,"sourceUnit":929,"src":"850:85:88","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":14376,"nodeType":"ImportDirective","scope":14623,"sourceUnit":3052,"src":"936:65:88","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol","id":14377,"nodeType":"ImportDirective","scope":14623,"sourceUnit":5931,"src":"1003:76:88","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14378,"name":"IChildChainLiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":434,"src":"1125:32:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"id":14379,"nodeType":"InheritanceSpecifier","src":"1125:32:88"}],"contractDependencies":[434,941],"contractKind":"contract","fullyImplemented":true,"id":14622,"linearizedBaseContracts":[14622,434,941],"name":"ChildChainLiquidityGaugeFactory","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":14389,"mutability":"constant","name":"_CLAIM_SIG","nodeType":"VariableDeclaration","scope":14622,"src":"1362:75:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14380,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1362:7:88","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":14388,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"6765745f7265776172642829","id":14382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1410:14:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_1afe22a60e4e4b5fa7561dbfb52f5a766eba86c52b84c4946364e82fa9056a57","typeString":"literal_string \"get_reward()\""},"value":"get_reward()"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1afe22a60e4e4b5fa7561dbfb52f5a766eba86c52b84c4946364e82fa9056a57","typeString":"literal_string \"get_reward()\""}],"id":14381,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1400:9:88","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1400:25:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"id":14386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3238","id":14384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1430:2:88","typeDescriptions":{"typeIdentifier":"t_rational_28_by_1","typeString":"int_const 28"},"value":"28"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":14385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1435:1:88","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1430:6:88","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"}}],"id":14387,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1429:8:88","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"}},"src":"1400:37:88","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":14391,"mutability":"immutable","name":"_gaugeImplementation","nodeType":"VariableDeclaration","scope":14622,"src":"1444:54:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"},"typeName":{"id":14390,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"1444:15:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"visibility":"private"},{"constant":false,"id":14393,"mutability":"immutable","name":"_childChainStreamerImplementation","nodeType":"VariableDeclaration","scope":14622,"src":"1504:71:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":14392,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"1504:19:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"private"},{"constant":false,"id":14397,"mutability":"mutable","name":"_isGaugeFromFactory","nodeType":"VariableDeclaration","scope":14622,"src":"1582:52:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":14396,"keyType":{"id":14394,"name":"address","nodeType":"ElementaryTypeName","src":"1590:7:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1582:24:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":14395,"name":"bool","nodeType":"ElementaryTypeName","src":"1601:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"constant":false,"id":14401,"mutability":"mutable","name":"_isStreamerFromFactory","nodeType":"VariableDeclaration","scope":14622,"src":"1640:55:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":14400,"keyType":{"id":14398,"name":"address","nodeType":"ElementaryTypeName","src":"1648:7:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1640:24:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":14399,"name":"bool","nodeType":"ElementaryTypeName","src":"1659:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"constant":false,"id":14405,"mutability":"mutable","name":"_poolGauge","nodeType":"VariableDeclaration","scope":14622,"src":"1701:46:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":14404,"keyType":{"id":14402,"name":"address","nodeType":"ElementaryTypeName","src":"1709:7:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1701:27:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":14403,"name":"address","nodeType":"ElementaryTypeName","src":"1720:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":14409,"mutability":"mutable","name":"_gaugeStreamer","nodeType":"VariableDeclaration","scope":14622,"src":"1753:50:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":14408,"keyType":{"id":14406,"name":"address","nodeType":"ElementaryTypeName","src":"1761:7:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1753:27:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":14407,"name":"address","nodeType":"ElementaryTypeName","src":"1772:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"body":{"id":14424,"nodeType":"Block","src":"1885:109:88","statements":[{"expression":{"id":14418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14416,"name":"_gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14391,"src":"1895:20:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14417,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14411,"src":"1918:5:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"src":"1895:28:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"id":14419,"nodeType":"ExpressionStatement","src":"1895:28:88"},{"expression":{"id":14422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14420,"name":"_childChainStreamerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"1933:33:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14421,"name":"childChainStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14413,"src":"1969:18:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"src":"1933:54:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"id":14423,"nodeType":"ExpressionStatement","src":"1933:54:88"}]},"id":14425,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14411,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14425,"src":"1822:21:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"},"typeName":{"id":14410,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"1822:15:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"visibility":"internal"},{"constant":false,"id":14413,"mutability":"mutable","name":"childChainStreamer","nodeType":"VariableDeclaration","scope":14425,"src":"1845:38:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":14412,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"1845:19:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"internal"}],"src":"1821:63:88"},"returnParameters":{"id":14415,"nodeType":"ParameterList","parameters":[],"src":"1885:0:88"},"scope":14622,"src":"1810:184:88","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[387],"body":{"id":14434,"nodeType":"Block","src":"2184:44:88","statements":[{"expression":{"id":14432,"name":"_gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14391,"src":"2201:20:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"functionReturnParameters":14431,"id":14433,"nodeType":"Return","src":"2194:27:88"}]},"documentation":{"id":14426,"nodeType":"StructuredDocumentation","src":"2000:96:88","text":" @notice Returns the address of the implementation used for gauge deployments."},"functionSelector":"39312dee","id":14435,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeImplementation","nodeType":"FunctionDefinition","overrides":{"id":14428,"nodeType":"OverrideSpecifier","overrides":[],"src":"2149:8:88"},"parameters":{"id":14427,"nodeType":"ParameterList","parameters":[],"src":"2132:2:88"},"returnParameters":{"id":14431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14430,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14435,"src":"2167:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"},"typeName":{"id":14429,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"2167:15:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"visibility":"internal"}],"src":"2166:17:88"},"scope":14622,"src":"2101:127:88","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[393],"body":{"id":14444,"nodeType":"Block","src":"2438:57:88","statements":[{"expression":{"id":14442,"name":"_childChainStreamerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"2455:33:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"functionReturnParameters":14441,"id":14443,"nodeType":"Return","src":"2448:40:88"}]},"documentation":{"id":14436,"nodeType":"StructuredDocumentation","src":"2234:99:88","text":" @notice Returns the address of the implementation used for streamer deployments."},"functionSelector":"f9e0a13e","id":14445,"implemented":true,"kind":"function","modifiers":[],"name":"getChildChainStreamerImplementation","nodeType":"FunctionDefinition","overrides":{"id":14438,"nodeType":"OverrideSpecifier","overrides":[],"src":"2399:8:88"},"parameters":{"id":14437,"nodeType":"ParameterList","parameters":[],"src":"2382:2:88"},"returnParameters":{"id":14441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14440,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14445,"src":"2417:19:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":14439,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"2417:19:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"internal"}],"src":"2416:21:88"},"scope":14622,"src":"2338:157:88","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[401],"body":{"id":14460,"nodeType":"Block","src":"2669:57:88","statements":[{"expression":{"arguments":[{"baseExpression":{"id":14455,"name":"_poolGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14405,"src":"2702:10:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":14457,"indexExpression":{"id":14456,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14448,"src":"2713:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2702:16:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14454,"name":"ILiquidityGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"2686:15:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILiquidityGauge_$928_$","typeString":"type(contract ILiquidityGauge)"}},"id":14458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2686:33:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"functionReturnParameters":14453,"id":14459,"nodeType":"Return","src":"2679:40:88"}]},"documentation":{"id":14446,"nodeType":"StructuredDocumentation","src":"2501:80:88","text":" @notice Returns the address of the gauge belonging to `pool`."},"functionSelector":"a8ea6875","id":14461,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolGauge","nodeType":"FunctionDefinition","overrides":{"id":14450,"nodeType":"OverrideSpecifier","overrides":[],"src":"2634:8:88"},"parameters":{"id":14449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14448,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":14461,"src":"2608:12:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14447,"name":"address","nodeType":"ElementaryTypeName","src":"2608:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2607:14:88"},"returnParameters":{"id":14453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14452,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14461,"src":"2652:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"},"typeName":{"id":14451,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"2652:15:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"visibility":"internal"}],"src":"2651:17:88"},"scope":14622,"src":"2586:140:88","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[940],"body":{"id":14474,"nodeType":"Block","src":"2897:50:88","statements":[{"expression":{"baseExpression":{"id":14470,"name":"_isGaugeFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14397,"src":"2914:19:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":14472,"indexExpression":{"id":14471,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14464,"src":"2934:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2914:26:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14469,"id":14473,"nodeType":"Return","src":"2907:33:88"}]},"documentation":{"id":14462,"nodeType":"StructuredDocumentation","src":"2732:79:88","text":" @notice Returns true if `gauge` was created by this factory."},"functionSelector":"ce3cc8bd","id":14475,"implemented":true,"kind":"function","modifiers":[],"name":"isGaugeFromFactory","nodeType":"FunctionDefinition","overrides":{"id":14466,"nodeType":"OverrideSpecifier","overrides":[],"src":"2873:8:88"},"parameters":{"id":14465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14464,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14475,"src":"2844:13:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14463,"name":"address","nodeType":"ElementaryTypeName","src":"2844:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2843:15:88"},"returnParameters":{"id":14469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14468,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14475,"src":"2891:4:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14467,"name":"bool","nodeType":"ElementaryTypeName","src":"2891:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2890:6:88"},"scope":14622,"src":"2816:131:88","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[409],"body":{"id":14488,"nodeType":"Block","src":"3122:45:88","statements":[{"expression":{"baseExpression":{"id":14484,"name":"_gaugeStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14409,"src":"3139:14:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":14486,"indexExpression":{"id":14485,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14478,"src":"3154:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3139:21:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":14483,"id":14487,"nodeType":"Return","src":"3132:28:88"}]},"documentation":{"id":14476,"nodeType":"StructuredDocumentation","src":"2953:84:88","text":" @notice Returns the address of the streamer belonging to `gauge`."},"functionSelector":"90b20087","id":14489,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeStreamer","nodeType":"FunctionDefinition","overrides":{"id":14480,"nodeType":"OverrideSpecifier","overrides":[],"src":"3095:8:88"},"parameters":{"id":14479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14478,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14489,"src":"3068:13:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14477,"name":"address","nodeType":"ElementaryTypeName","src":"3068:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3067:15:88"},"returnParameters":{"id":14483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14482,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14489,"src":"3113:7:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14481,"name":"address","nodeType":"ElementaryTypeName","src":"3113:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3112:9:88"},"scope":14622,"src":"3042:125:88","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[417],"body":{"id":14502,"nodeType":"Block","src":"3347:56:88","statements":[{"expression":{"baseExpression":{"id":14498,"name":"_isStreamerFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14401,"src":"3364:22:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":14500,"indexExpression":{"id":14499,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14492,"src":"3387:8:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3364:32:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14497,"id":14501,"nodeType":"Return","src":"3357:39:88"}]},"documentation":{"id":14490,"nodeType":"StructuredDocumentation","src":"3173:82:88","text":" @notice Returns true if `streamer` was created by this factory."},"functionSelector":"cbda9327","id":14503,"implemented":true,"kind":"function","modifiers":[],"name":"isStreamerFromFactory","nodeType":"FunctionDefinition","overrides":{"id":14494,"nodeType":"OverrideSpecifier","overrides":[],"src":"3323:8:88"},"parameters":{"id":14493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14492,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":14503,"src":"3291:16:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14491,"name":"address","nodeType":"ElementaryTypeName","src":"3291:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3290:18:88"},"returnParameters":{"id":14497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14496,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14503,"src":"3341:4:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14495,"name":"bool","nodeType":"ElementaryTypeName","src":"3341:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3340:6:88"},"scope":14622,"src":"3260:143:88","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[425],"body":{"id":14518,"nodeType":"Block","src":"3572:59:88","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":14513,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14506,"src":"3607:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14512,"name":"IRewardsOnlyGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"3589:17:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRewardsOnlyGauge_$1205_$","typeString":"type(contract IRewardsOnlyGauge)"}},"id":14514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3589:24:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":14515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"lp_token","nodeType":"MemberAccess","referencedDeclaration":1183,"src":"3589:33:88","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2447_$","typeString":"function () view external returns (contract IERC20)"}},"id":14516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3589:35:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"functionReturnParameters":14511,"id":14517,"nodeType":"Return","src":"3582:42:88"}]},"documentation":{"id":14504,"nodeType":"StructuredDocumentation","src":"3409:81:88","text":" @notice Returns the address of the pool which `gauge` belongs."},"functionSelector":"744a65dd","id":14519,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugePool","nodeType":"FunctionDefinition","overrides":{"id":14508,"nodeType":"OverrideSpecifier","overrides":[],"src":"3546:8:88"},"parameters":{"id":14507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14506,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14519,"src":"3517:13:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14505,"name":"address","nodeType":"ElementaryTypeName","src":"3517:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3516:15:88"},"returnParameters":{"id":14511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14510,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14519,"src":"3564:6:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":14509,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3564:6:88","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"3563:8:88"},"scope":14622,"src":"3495:136:88","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[433],"body":{"id":14537,"nodeType":"Block","src":"3813:69:88","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":14532,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14522,"src":"3868:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14531,"name":"getPoolGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14461,"src":"3855:12:88","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_ILiquidityGauge_$928_$","typeString":"function (address) view returns (contract ILiquidityGauge)"}},"id":14533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3855:18:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}],"id":14530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3847:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14529,"name":"address","nodeType":"ElementaryTypeName","src":"3847:7:88","typeDescriptions":{}}},"id":14534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3847:27:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14528,"name":"getGaugeStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14489,"src":"3830:16:88","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":14535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3830:45:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":14527,"id":14536,"nodeType":"Return","src":"3823:52:88"}]},"documentation":{"id":14520,"nodeType":"StructuredDocumentation","src":"3637:91:88","text":" @notice Returns the address of the streamer belonging to `pool`'s gauge."},"functionSelector":"8a4ffeb0","id":14538,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolStreamer","nodeType":"FunctionDefinition","overrides":{"id":14524,"nodeType":"OverrideSpecifier","overrides":[],"src":"3786:8:88"},"parameters":{"id":14523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14522,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":14538,"src":"3758:12:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14521,"name":"address","nodeType":"ElementaryTypeName","src":"3758:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3757:14:88"},"returnParameters":{"id":14527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14526,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14538,"src":"3804:7:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14525,"name":"address","nodeType":"ElementaryTypeName","src":"3804:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3803:9:88"},"scope":14622,"src":"3733:149:88","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":14620,"nodeType":"Block","src":"4520:570:88","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14547,"name":"_poolGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14405,"src":"4538:10:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":14549,"indexExpression":{"id":14548,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14541,"src":"4549:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4538:16:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":14552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4566:1:88","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":14551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4558:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14550,"name":"address","nodeType":"ElementaryTypeName","src":"4558:7:88","typeDescriptions":{}}},"id":14553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4558:10:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4538:30:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520616c726561647920657869737473","id":14555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4570:22:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_0ff732be99ebae4ab76694efc15798dda1f02cffde7b6a10393e397e60f38cb6","typeString":"literal_string \"Gauge already exists\""},"value":"Gauge already exists"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0ff732be99ebae4ab76694efc15798dda1f02cffde7b6a10393e397e60f38cb6","typeString":"literal_string \"Gauge already exists\""}],"id":14546,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4530:7:88","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4530:63:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14557,"nodeType":"ExpressionStatement","src":"4530:63:88"},{"assignments":[14559],"declarations":[{"constant":false,"id":14559,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14620,"src":"4604:13:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14558,"name":"address","nodeType":"ElementaryTypeName","src":"4604:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14567,"initialValue":{"arguments":[{"arguments":[{"id":14564,"name":"_gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14391,"src":"4641:20:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}],"id":14563,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4633:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14562,"name":"address","nodeType":"ElementaryTypeName","src":"4633:7:88","typeDescriptions":{}}},"id":14565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4633:29:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14560,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5930,"src":"4620:6:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$5930_$","typeString":"type(library Clones)"}},"id":14561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"clone","nodeType":"MemberAccess","referencedDeclaration":5873,"src":"4620:12:88","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_address_$","typeString":"function (address) returns (address)"}},"id":14566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4620:43:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4604:59:88"},{"assignments":[14569],"declarations":[{"constant":false,"id":14569,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":14620,"src":"4673:16:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14568,"name":"address","nodeType":"ElementaryTypeName","src":"4673:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14577,"initialValue":{"arguments":[{"arguments":[{"id":14574,"name":"_childChainStreamerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"4713:33:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}],"id":14573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4705:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14572,"name":"address","nodeType":"ElementaryTypeName","src":"4705:7:88","typeDescriptions":{}}},"id":14575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4705:42:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14570,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5930,"src":"4692:6:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$5930_$","typeString":"type(library Clones)"}},"id":14571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"clone","nodeType":"MemberAccess","referencedDeclaration":5873,"src":"4692:12:88","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_address_$","typeString":"function (address) returns (address)"}},"id":14576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4692:56:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4673:75:88"},{"expression":{"arguments":[{"id":14582,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14559,"src":"4800:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":14579,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14569,"src":"4779:8:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14578,"name":"IChildChainStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"4759:19:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChildChainStreamer_$462_$","typeString":"type(contract IChildChainStreamer)"}},"id":14580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4759:29:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"id":14581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":442,"src":"4759:40:88","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":14583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4759:47:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14584,"nodeType":"ExpressionStatement","src":"4759:47:88"},{"expression":{"arguments":[{"id":14589,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14541,"src":"4852:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14590,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14569,"src":"4858:8:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14591,"name":"_CLAIM_SIG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14389,"src":"4868:10:88","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":14586,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14559,"src":"4834:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14585,"name":"IRewardsOnlyGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"4816:17:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRewardsOnlyGauge_$1205_$","typeString":"type(contract IRewardsOnlyGauge)"}},"id":14587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4816:24:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":14588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":1178,"src":"4816:35:88","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,address,bytes32) external"}},"id":14592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4816:63:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14593,"nodeType":"ExpressionStatement","src":"4816:63:88"},{"expression":{"id":14598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14594,"name":"_isGaugeFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14397,"src":"4890:19:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":14596,"indexExpression":{"id":14595,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14559,"src":"4910:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4890:26:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":14597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4919:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4890:33:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14599,"nodeType":"ExpressionStatement","src":"4890:33:88"},{"expression":{"id":14604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14600,"name":"_poolGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14405,"src":"4933:10:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":14602,"indexExpression":{"id":14601,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14541,"src":"4944:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4933:16:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14603,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14559,"src":"4952:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4933:24:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14605,"nodeType":"ExpressionStatement","src":"4933:24:88"},{"expression":{"id":14610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14606,"name":"_gaugeStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14409,"src":"4967:14:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":14608,"indexExpression":{"id":14607,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14559,"src":"4982:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4967:21:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14609,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14569,"src":"4991:8:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4967:32:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14611,"nodeType":"ExpressionStatement","src":"4967:32:88"},{"eventCall":{"arguments":[{"id":14613,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14559,"src":"5038:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14614,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14541,"src":"5045:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14615,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14569,"src":"5051:8:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14612,"name":"RewardsOnlyGaugeCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":381,"src":"5014:23:88","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address)"}},"id":14616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5014:46:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14617,"nodeType":"EmitStatement","src":"5009:51:88"},{"expression":{"id":14618,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14559,"src":"5078:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":14545,"id":14619,"nodeType":"Return","src":"5071:12:88"}]},"documentation":{"id":14539,"nodeType":"StructuredDocumentation","src":"3888:570:88","text":" @notice Deploys a new gauge for a Balancer pool.\n @dev As anyone can register arbitrary Balancer pools with the Vault,\n it's impossible to prove onchain that `pool` is a \"valid\" deployment.\n Care must be taken to ensure that gauges deployed from this factory are\n suitable before they are added to the GaugeController.\n This factory disallows deploying multiple gauges for a single pool.\n @param pool The address of the pool for which to deploy a gauge\n @return The address of the deployed gauge"},"functionSelector":"9ed93318","id":14621,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":14542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14541,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":14621,"src":"4479:12:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14540,"name":"address","nodeType":"ElementaryTypeName","src":"4479:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4478:14:88"},"returnParameters":{"id":14545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14544,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14621,"src":"4511:7:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14543,"name":"address","nodeType":"ElementaryTypeName","src":"4511:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4510:9:88"},"scope":14622,"src":"4463:627:88","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":14623,"src":"1081:4011:88"}],"src":"688:4405:88"},"id":88},"contracts/gauges/StakelessGauge.sol":{"ast":{"absolutePath":"contracts/gauges/StakelessGauge.sol","exportedSymbols":{"StakelessGauge":[15196]},"id":15197,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14624,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:89"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":14625,"nodeType":"ImportDirective","scope":15197,"sourceUnit":2448,"src":"713:87:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","id":14626,"nodeType":"ImportDirective","scope":15197,"sourceUnit":328,"src":"801:89:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","id":14627,"nodeType":"ImportDirective","scope":15197,"sourceUnit":822,"src":"891:86:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol","id":14628,"nodeType":"ImportDirective","scope":15197,"sourceUnit":952,"src":"978:92:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol","id":14629,"nodeType":"ImportDirective","scope":15197,"sourceUnit":1240,"src":"1071:85:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","id":14630,"nodeType":"ImportDirective","scope":15197,"sourceUnit":5684,"src":"1158:66:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":14631,"nodeType":"ImportDirective","scope":15197,"sourceUnit":7188,"src":"1225:85:89","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14632,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"1348:15:89","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":14633,"nodeType":"InheritanceSpecifier","src":"1348:15:89"},{"baseName":{"id":14634,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"1365:15:89","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":14635,"nodeType":"InheritanceSpecifier","src":"1365:15:89"}],"contractDependencies":[928,1239,7187],"contractKind":"contract","fullyImplemented":false,"id":15196,"linearizedBaseContracts":[15196,7187,1239,928],"name":"StakelessGauge","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"9f867671","id":14638,"mutability":"constant","name":"MAX_RELATIVE_WEIGHT_CAP","nodeType":"VariableDeclaration","scope":15196,"src":"1387:54:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14636,"name":"uint256","nodeType":"ElementaryTypeName","src":"1387:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":14637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1437:4:89","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"public"},{"constant":false,"id":14640,"mutability":"immutable","name":"_balToken","nodeType":"VariableDeclaration","scope":15196,"src":"1448:35:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":14639,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1448:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":14642,"mutability":"immutable","name":"_tokenAdmin","nodeType":"VariableDeclaration","scope":15196,"src":"1489:49:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"},"typeName":{"id":14641,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":327,"src":"1489:19:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"visibility":"private"},{"constant":false,"id":14644,"mutability":"immutable","name":"_minter","nodeType":"VariableDeclaration","scope":15196,"src":"1544:48:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":14643,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1544:22:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"private"},{"constant":false,"id":14646,"mutability":"immutable","name":"_gaugeController","nodeType":"VariableDeclaration","scope":15196,"src":"1598:51:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":14645,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1598:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"private"},{"constant":false,"id":14648,"mutability":"immutable","name":"_authorizerAdaptor","nodeType":"VariableDeclaration","scope":15196,"src":"1655:55:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":14647,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1655:18:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"private"},{"anonymous":false,"id":14654,"name":"Checkpoint","nodeType":"EventDefinition","parameters":{"id":14653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14650,"indexed":true,"mutability":"mutable","name":"periodTime","nodeType":"VariableDeclaration","scope":14654,"src":"1734:26:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14649,"name":"uint256","nodeType":"ElementaryTypeName","src":"1734:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14652,"indexed":false,"mutability":"mutable","name":"periodEmissions","nodeType":"VariableDeclaration","scope":14654,"src":"1762:23:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14651,"name":"uint256","nodeType":"ElementaryTypeName","src":"1762:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1733:53:89"},"src":"1717:70:89"},{"constant":false,"id":14656,"mutability":"immutable","name":"_RATE_REDUCTION_TIME","nodeType":"VariableDeclaration","scope":15196,"src":"1835:46:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14655,"name":"uint256","nodeType":"ElementaryTypeName","src":"1835:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14658,"mutability":"immutable","name":"_RATE_REDUCTION_COEFFICIENT","nodeType":"VariableDeclaration","scope":15196,"src":"1887:53:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14657,"name":"uint256","nodeType":"ElementaryTypeName","src":"1887:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14660,"mutability":"immutable","name":"_RATE_DENOMINATOR","nodeType":"VariableDeclaration","scope":15196,"src":"1946:43:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14659,"name":"uint256","nodeType":"ElementaryTypeName","src":"1946:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14662,"mutability":"mutable","name":"_rate","nodeType":"VariableDeclaration","scope":15196,"src":"2037:21:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14661,"name":"uint256","nodeType":"ElementaryTypeName","src":"2037:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14664,"mutability":"mutable","name":"_period","nodeType":"VariableDeclaration","scope":15196,"src":"2064:23:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14663,"name":"uint256","nodeType":"ElementaryTypeName","src":"2064:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14666,"mutability":"mutable","name":"_startEpochTime","nodeType":"VariableDeclaration","scope":15196,"src":"2093:31:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14665,"name":"uint256","nodeType":"ElementaryTypeName","src":"2093:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14668,"mutability":"mutable","name":"_emissions","nodeType":"VariableDeclaration","scope":15196,"src":"2131:26:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14667,"name":"uint256","nodeType":"ElementaryTypeName","src":"2131:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14670,"mutability":"mutable","name":"_isKilled","nodeType":"VariableDeclaration","scope":15196,"src":"2163:22:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14669,"name":"bool","nodeType":"ElementaryTypeName","src":"2163:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"constant":false,"id":14672,"mutability":"mutable","name":"_relativeWeightCap","nodeType":"VariableDeclaration","scope":15196,"src":"2192:34:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14671,"name":"uint256","nodeType":"ElementaryTypeName","src":"2192:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":14745,"nodeType":"Block","src":"2276:811:89","statements":[{"assignments":[14678],"declarations":[{"constant":false,"id":14678,"mutability":"mutable","name":"tokenAdmin","nodeType":"VariableDeclaration","scope":14745,"src":"2286:30:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"},"typeName":{"id":14677,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":327,"src":"2286:19:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"visibility":"internal"}],"id":14684,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14680,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14674,"src":"2339:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"id":14681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getBalancerTokenAdmin","nodeType":"MemberAccess","referencedDeclaration":864,"src":"2339:28:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IBalancerTokenAdmin_$327_$","typeString":"function () view external returns (contract IBalancerTokenAdmin)"}},"id":14682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2339:30:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}],"id":14679,"name":"IBalancerTokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"2319:19:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBalancerTokenAdmin_$327_$","typeString":"type(contract IBalancerTokenAdmin)"}},"id":14683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2319:51:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"nodeType":"VariableDeclarationStatement","src":"2286:84:89"},{"assignments":[14686],"declarations":[{"constant":false,"id":14686,"mutability":"mutable","name":"balToken","nodeType":"VariableDeclaration","scope":14745,"src":"2380:15:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":14685,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2380:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"id":14690,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14687,"name":"tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14678,"src":"2398:10:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":14688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getBalancerToken","nodeType":"MemberAccess","referencedDeclaration":306,"src":"2398:27:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IBalancerToken_$274_$","typeString":"function () view external returns (contract IBalancerToken)"}},"id":14689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2398:29:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"nodeType":"VariableDeclarationStatement","src":"2380:47:89"},{"assignments":[14692],"declarations":[{"constant":false,"id":14692,"mutability":"mutable","name":"gaugeController","nodeType":"VariableDeclaration","scope":14745,"src":"2437:32:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":14691,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"2437:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"internal"}],"id":14696,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14693,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14674,"src":"2472:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"id":14694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getGaugeController","nodeType":"MemberAccess","referencedDeclaration":870,"src":"2472:25:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IGaugeController_$821_$","typeString":"function () view external returns (contract IGaugeController)"}},"id":14695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2472:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"nodeType":"VariableDeclarationStatement","src":"2437:62:89"},{"expression":{"id":14699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14697,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2510:9:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14698,"name":"balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14686,"src":"2522:8:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"2510:20:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":14700,"nodeType":"ExpressionStatement","src":"2510:20:89"},{"expression":{"id":14703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14701,"name":"_tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14642,"src":"2540:11:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14702,"name":"tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14678,"src":"2554:10:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"src":"2540:24:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":14704,"nodeType":"ExpressionStatement","src":"2540:24:89"},{"expression":{"id":14707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14705,"name":"_minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"2574:7:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14706,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14674,"src":"2584:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"src":"2574:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"id":14708,"nodeType":"ExpressionStatement","src":"2574:16:89"},{"expression":{"id":14711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14709,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14646,"src":"2600:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14710,"name":"gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14692,"src":"2619:15:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"src":"2600:34:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":14712,"nodeType":"ExpressionStatement","src":"2600:34:89"},{"expression":{"id":14717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14713,"name":"_authorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14648,"src":"2644:18:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14714,"name":"gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14692,"src":"2665:15:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":14715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"admin","nodeType":"MemberAccess","referencedDeclaration":806,"src":"2665:21:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizerAdaptor_$49_$","typeString":"function () view external returns (contract IAuthorizerAdaptor)"}},"id":14716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2665:23:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"src":"2644:44:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":14718,"nodeType":"ExpressionStatement","src":"2644:44:89"},{"expression":{"id":14723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14719,"name":"_RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14656,"src":"2699:20:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14720,"name":"tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14678,"src":"2722:10:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":14721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RATE_REDUCTION_TIME","nodeType":"MemberAccess","referencedDeclaration":290,"src":"2722:30:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":14722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2722:32:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2699:55:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14724,"nodeType":"ExpressionStatement","src":"2699:55:89"},{"expression":{"id":14729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14725,"name":"_RATE_REDUCTION_COEFFICIENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14658,"src":"2764:27:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14726,"name":"tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14678,"src":"2794:10:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":14727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RATE_REDUCTION_COEFFICIENT","nodeType":"MemberAccess","referencedDeclaration":295,"src":"2794:37:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":14728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2794:39:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2764:69:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14730,"nodeType":"ExpressionStatement","src":"2764:69:89"},{"expression":{"id":14735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14731,"name":"_RATE_DENOMINATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14660,"src":"2843:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14732,"name":"tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14678,"src":"2863:10:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":14733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RATE_DENOMINATOR","nodeType":"MemberAccess","referencedDeclaration":300,"src":"2863:27:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":14734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2863:29:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2843:49:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14736,"nodeType":"ExpressionStatement","src":"2843:49:89"},{"expression":{"id":14743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14737,"name":"_period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14664,"src":"3053:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":14740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3068:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14739,"name":"uint256","nodeType":"ElementaryTypeName","src":"3068:7:89","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":14738,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3063:4:89","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3063:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":14742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3063:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3053:27:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14744,"nodeType":"ExpressionStatement","src":"3053:27:89"}]},"id":14746,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14674,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":14746,"src":"2245:29:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":14673,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"2245:22:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"}],"src":"2244:31:89"},"returnParameters":{"id":14676,"nodeType":"ParameterList","parameters":[],"src":"2276:0:89"},"scope":15196,"src":"2233:854:89","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14790,"nodeType":"Block","src":"3213:478:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14752,"name":"_period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14664,"src":"3231:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3242:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3231:12:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c726561647920696e697469616c697a6564","id":14755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3245:21:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0","typeString":"literal_string \"Already initialized\""},"value":"Already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0","typeString":"literal_string \"Already initialized\""}],"id":14751,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3223:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3223:44:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14757,"nodeType":"ExpressionStatement","src":"3223:44:89"},{"assignments":[14759],"declarations":[{"constant":false,"id":14759,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":14790,"src":"3413:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14758,"name":"uint256","nodeType":"ElementaryTypeName","src":"3413:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14763,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14760,"name":"_tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14642,"src":"3428:11:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":14761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"rate","nodeType":"MemberAccess","referencedDeclaration":314,"src":"3428:16:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":14762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3428:18:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3413:33:89"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14765,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14759,"src":"3464:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":14766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3472:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3464:9:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564","id":14768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3475:38:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_c3af94e4df4d68cc54b5719029efd0c3b451a133245658fe212b024c6dfd0ae7","typeString":"literal_string \"BalancerTokenAdmin not yet activated\""},"value":"BalancerTokenAdmin not yet activated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c3af94e4df4d68cc54b5719029efd0c3b451a133245658fe212b024c6dfd0ae7","typeString":"literal_string \"BalancerTokenAdmin not yet activated\""}],"id":14764,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3456:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3456:58:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14770,"nodeType":"ExpressionStatement","src":"3456:58:89"},{"expression":{"id":14773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14771,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14662,"src":"3525:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14772,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14759,"src":"3533:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3525:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14774,"nodeType":"ExpressionStatement","src":"3525:12:89"},{"expression":{"id":14778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14775,"name":"_period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14664,"src":"3547:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":14776,"name":"_currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15035,"src":"3557:14:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":14777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3557:16:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3547:26:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14779,"nodeType":"ExpressionStatement","src":"3547:26:89"},{"expression":{"id":14784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14780,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14666,"src":"3583:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14781,"name":"_tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14642,"src":"3601:11:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":14782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"startEpochTimeWrite","nodeType":"MemberAccess","referencedDeclaration":319,"src":"3601:31:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint256_$","typeString":"function () external returns (uint256)"}},"id":14783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3601:33:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3583:51:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14785,"nodeType":"ExpressionStatement","src":"3583:51:89"},{"expression":{"arguments":[{"id":14787,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14748,"src":"3666:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14786,"name":"_setRelativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15164,"src":"3644:21:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3644:40:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14789,"nodeType":"ExpressionStatement","src":"3644:40:89"}]},"id":14791,"implemented":true,"kind":"function","modifiers":[],"name":"__StakelessGauge_init","nodeType":"FunctionDefinition","parameters":{"id":14749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14748,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":14791,"src":"3177:25:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14747,"name":"uint256","nodeType":"ElementaryTypeName","src":"3177:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3176:27:89"},"returnParameters":{"id":14750,"nodeType":"ParameterList","parameters":[],"src":"3213:0:89"},"scope":15196,"src":"3146:545:89","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1226],"body":{"id":15010,"nodeType":"Block","src":"3773:2579:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14800,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3791:3:89","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3791:10:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":14804,"name":"_authorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14648,"src":"3813:18:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}],"id":14803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3805:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14802,"name":"address","nodeType":"ElementaryTypeName","src":"3805:7:89","typeDescriptions":{}}},"id":14805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3805:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3791:41:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53454e4445525f4e4f545f414c4c4f574544","id":14807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3834:20:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""},"value":"SENDER_NOT_ALLOWED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""}],"id":14799,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3783:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3783:72:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14809,"nodeType":"ExpressionStatement","src":"3783:72:89"},{"assignments":[14811],"declarations":[{"constant":false,"id":14811,"mutability":"mutable","name":"lastPeriod","nodeType":"VariableDeclaration","scope":15010,"src":"3865:18:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14810,"name":"uint256","nodeType":"ElementaryTypeName","src":"3865:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14813,"initialValue":{"id":14812,"name":"_period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14664,"src":"3886:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3865:28:89"},{"assignments":[14815],"declarations":[{"constant":false,"id":14815,"mutability":"mutable","name":"currentPeriod","nodeType":"VariableDeclaration","scope":15010,"src":"3903:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14814,"name":"uint256","nodeType":"ElementaryTypeName","src":"3903:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14818,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":14816,"name":"_currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15035,"src":"3927:14:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":14817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3927:16:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3903:40:89"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14819,"name":"lastPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14811,"src":"3958:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":14820,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14815,"src":"3971:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3958:26:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15007,"nodeType":"IfStatement","src":"3954:2370:89","trueBody":{"id":15006,"nodeType":"Block","src":"3986:2338:89","statements":[{"expression":{"arguments":[{"arguments":[{"id":14827,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4042:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}],"id":14826,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4034:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14825,"name":"address","nodeType":"ElementaryTypeName","src":"4034:7:89","typeDescriptions":{}}},"id":14828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4034:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14822,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14646,"src":"4000:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":14824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"checkpoint_gauge","nodeType":"MemberAccess","referencedDeclaration":749,"src":"4000:33:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":14829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4000:48:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14830,"nodeType":"ExpressionStatement","src":"4000:48:89"},{"assignments":[14832],"declarations":[{"constant":false,"id":14832,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":15006,"src":"4063:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14831,"name":"uint256","nodeType":"ElementaryTypeName","src":"4063:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14834,"initialValue":{"id":14833,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14662,"src":"4078:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4063:20:89"},{"assignments":[14836],"declarations":[{"constant":false,"id":14836,"mutability":"mutable","name":"newEmissions","nodeType":"VariableDeclaration","scope":15006,"src":"4097:20:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14835,"name":"uint256","nodeType":"ElementaryTypeName","src":"4097:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14838,"initialValue":{"hexValue":"30","id":14837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4120:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4097:24:89"},{"expression":{"id":14841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14839,"name":"lastPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14811,"src":"4135:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":14840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4149:1:89","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4135:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14842,"nodeType":"ExpressionStatement","src":"4135:15:89"},{"assignments":[14844],"declarations":[{"constant":false,"id":14844,"mutability":"mutable","name":"nextEpochTime","nodeType":"VariableDeclaration","scope":15006,"src":"4164:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14843,"name":"uint256","nodeType":"ElementaryTypeName","src":"4164:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14848,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14845,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14666,"src":"4188:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":14846,"name":"_RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14656,"src":"4206:20:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4188:38:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4164:62:89"},{"body":{"id":14975,"nodeType":"Block","src":"4296:1783:89","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14861,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14850,"src":"4318:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":14862,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14815,"src":"4322:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4318:17:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14865,"nodeType":"IfStatement","src":"4314:28:89","trueBody":{"id":14864,"nodeType":"Break","src":"4337:5:89"}},{"assignments":[14867],"declarations":[{"constant":false,"id":14867,"mutability":"mutable","name":"periodTime","nodeType":"VariableDeclaration","scope":14975,"src":"4361:18:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14866,"name":"uint256","nodeType":"ElementaryTypeName","src":"4361:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14871,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14868,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14850,"src":"4382:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31","id":14869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4386:7:89","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"4382:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4361:32:89"},{"assignments":[14873],"declarations":[{"constant":false,"id":14873,"mutability":"mutable","name":"periodEmission","nodeType":"VariableDeclaration","scope":14975,"src":"4411:22:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14872,"name":"uint256","nodeType":"ElementaryTypeName","src":"4411:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14875,"initialValue":{"hexValue":"30","id":14874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4436:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4411:26:89"},{"assignments":[14877],"declarations":[{"constant":false,"id":14877,"mutability":"mutable","name":"gaugeWeight","nodeType":"VariableDeclaration","scope":14975,"src":"4455:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14876,"name":"uint256","nodeType":"ElementaryTypeName","src":"4455:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14881,"initialValue":{"arguments":[{"id":14879,"name":"periodTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14867,"src":"4501:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14878,"name":"getCappedRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15195,"src":"4477:23:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":14880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4477:35:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4455:57:89"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14882,"name":"nextEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14844,"src":"4535:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":14883,"name":"periodTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14867,"src":"4552:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4535:27:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14885,"name":"nextEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14844,"src":"4566:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14886,"name":"periodTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14867,"src":"4582:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":14887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4595:7:89","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"4582:20:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4566:36:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4535:67:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14964,"nodeType":"Block","src":"5858:97:89","statements":[{"expression":{"id":14962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14951,"name":"periodEmission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14873,"src":"5880:14:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14952,"name":"gaugeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14877,"src":"5898:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14953,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14832,"src":"5912:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5898:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31","id":14955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5919:7:89","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"5898:28:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14957,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5897:30:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"id":14960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":14958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5930:2:89","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3138","id":14959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5934:2:89","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"5930:6:89","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}},"src":"5897:39:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5880:56:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14963,"nodeType":"ExpressionStatement","src":"5880:56:89"}]},"id":14965,"nodeType":"IfStatement","src":"4531:1424:89","trueBody":{"id":14950,"nodeType":"Block","src":"4604:1248:89","statements":[{"assignments":[14892],"declarations":[{"constant":false,"id":14892,"mutability":"mutable","name":"durationInCurrentEpoch","nodeType":"VariableDeclaration","scope":14950,"src":"5148:30:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14891,"name":"uint256","nodeType":"ElementaryTypeName","src":"5148:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14896,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14893,"name":"nextEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14844,"src":"5181:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14894,"name":"periodTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14867,"src":"5197:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5181:26:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5148:59:89"},{"expression":{"id":14908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14897,"name":"periodEmission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14873,"src":"5229:14:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14898,"name":"gaugeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14877,"src":"5247:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14899,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14832,"src":"5261:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5247:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14901,"name":"durationInCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14892,"src":"5268:22:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5247:43:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14903,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5246:45:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"id":14906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":14904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5294:2:89","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3138","id":14905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5298:2:89","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"5294:6:89","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}},"src":"5246:54:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5229:71:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14909,"nodeType":"ExpressionStatement","src":"5229:71:89"},{"expression":{"id":14917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14910,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14832,"src":"5373:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14911,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14832,"src":"5381:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14912,"name":"_RATE_DENOMINATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14660,"src":"5388:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5381:24:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14914,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5380:26:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":14915,"name":"_RATE_REDUCTION_COEFFICIENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14658,"src":"5409:27:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5380:56:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5373:63:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14918,"nodeType":"ExpressionStatement","src":"5373:63:89"},{"assignments":[14920],"declarations":[{"constant":false,"id":14920,"mutability":"mutable","name":"durationInNewEpoch","nodeType":"VariableDeclaration","scope":14950,"src":"5535:26:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14919,"name":"uint256","nodeType":"ElementaryTypeName","src":"5535:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14924,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":14921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5564:7:89","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14922,"name":"durationInCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14892,"src":"5574:22:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5564:32:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5535:61:89"},{"expression":{"id":14936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14925,"name":"periodEmission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14873,"src":"5618:14:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14926,"name":"gaugeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14877,"src":"5637:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14927,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14832,"src":"5651:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5637:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14929,"name":"durationInNewEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14920,"src":"5658:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5637:39:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14931,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5636:41:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"id":14934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":14932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5680:2:89","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3138","id":14933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5684:2:89","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"5680:6:89","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}},"src":"5636:50:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5618:68:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14937,"nodeType":"ExpressionStatement","src":"5618:68:89"},{"expression":{"id":14940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14938,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14662,"src":"5709:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14939,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14832,"src":"5717:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5709:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14941,"nodeType":"ExpressionStatement","src":"5709:12:89"},{"expression":{"id":14944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14942,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14666,"src":"5743:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14943,"name":"nextEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14844,"src":"5761:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5743:31:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14945,"nodeType":"ExpressionStatement","src":"5743:31:89"},{"expression":{"id":14948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14946,"name":"nextEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14844,"src":"5796:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":14947,"name":"_RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14656,"src":"5813:20:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5796:37:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14949,"nodeType":"ExpressionStatement","src":"5796:37:89"}]}},{"eventCall":{"arguments":[{"id":14967,"name":"periodTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14867,"src":"5989:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14968,"name":"periodEmission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14873,"src":"6001:14:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14966,"name":"Checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14654,"src":"5978:10:89","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":14969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5978:38:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14970,"nodeType":"EmitStatement","src":"5973:43:89"},{"expression":{"id":14973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14971,"name":"newEmissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14836,"src":"6034:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":14972,"name":"periodEmission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14873,"src":"6050:14:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6034:30:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14974,"nodeType":"ExpressionStatement","src":"6034:30:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14853,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14850,"src":"4269:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14854,"name":"lastPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14811,"src":"4273:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"323535","id":14855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4286:3:89","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"4273:16:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4269:20:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14976,"initializationExpression":{"assignments":[14850],"declarations":[{"constant":false,"id":14850,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":14976,"src":"4245:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14849,"name":"uint256","nodeType":"ElementaryTypeName","src":"4245:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14852,"initialValue":{"id":14851,"name":"lastPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14811,"src":"4257:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4245:22:89"},"loopExpression":{"expression":{"id":14859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4291:3:89","subExpression":{"id":14858,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14850,"src":"4293:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14860,"nodeType":"ExpressionStatement","src":"4291:3:89"},"nodeType":"ForStatement","src":"4240:1839:89"},{"expression":{"id":14979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14977,"name":"_period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14664,"src":"6093:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14978,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14815,"src":"6103:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6093:23:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14980,"nodeType":"ExpressionStatement","src":"6093:23:89"},{"expression":{"id":14983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14981,"name":"_emissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14668,"src":"6130:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":14982,"name":"newEmissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14836,"src":"6144:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6130:26:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14984,"nodeType":"ExpressionStatement","src":"6130:26:89"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14985,"name":"newEmissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14836,"src":"6175:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6190:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6175:16:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":14989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6195:10:89","subExpression":{"id":14988,"name":"_isKilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14670,"src":"6196:9:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6175:30:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15005,"nodeType":"IfStatement","src":"6171:143:89","trueBody":{"id":15004,"nodeType":"Block","src":"6207:107:89","statements":[{"expression":{"arguments":[{"arguments":[{"id":14996,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6246:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}],"id":14995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6238:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14994,"name":"address","nodeType":"ElementaryTypeName","src":"6238:7:89","typeDescriptions":{}}},"id":14997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6238:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14991,"name":"_minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"6225:7:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"id":14993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":88,"src":"6225:12:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) external returns (uint256)"}},"id":14998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6225:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14999,"nodeType":"ExpressionStatement","src":"6225:27:89"},{"expression":{"arguments":[{"id":15001,"name":"newEmissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14836,"src":"6286:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15000,"name":"_postMintAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15040,"src":"6270:15:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6270:29:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15003,"nodeType":"ExpressionStatement","src":"6270:29:89"}]}}]}},{"expression":{"hexValue":"74727565","id":15008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6341:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14798,"id":15009,"nodeType":"Return","src":"6334:11:89"}]},"functionSelector":"c2c4c5c1","id":15011,"implemented":true,"kind":"function","modifiers":[{"id":14795,"modifierName":{"id":14794,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"3745:12:89","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3745:12:89"}],"name":"checkpoint","nodeType":"FunctionDefinition","overrides":{"id":14793,"nodeType":"OverrideSpecifier","overrides":[],"src":"3736:8:89"},"parameters":{"id":14792,"nodeType":"ParameterList","parameters":[],"src":"3716:2:89"},"returnParameters":{"id":14798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14797,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15011,"src":"3767:4:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14796,"name":"bool","nodeType":"ElementaryTypeName","src":"3767:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3766:6:89"},"scope":15196,"src":"3697:2655:89","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1238],"body":{"id":15020,"nodeType":"Block","src":"6473:25:89","statements":[{"expression":{"hexValue":"30","id":15018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6490:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":15017,"id":15019,"nodeType":"Return","src":"6483:8:89"}]},"documentation":{"id":15012,"nodeType":"StructuredDocumentation","src":"6358:31:89","text":"@inheritdoc IStakelessGauge"},"functionSelector":"b0245225","id":15021,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalBridgeCost","nodeType":"FunctionDefinition","overrides":{"id":15014,"nodeType":"OverrideSpecifier","overrides":[],"src":"6446:8:89"},"parameters":{"id":15013,"nodeType":"ParameterList","parameters":[],"src":"6421:2:89"},"returnParameters":{"id":15017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15016,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15021,"src":"6464:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15015,"name":"uint256","nodeType":"ElementaryTypeName","src":"6464:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6463:9:89"},"scope":15196,"src":"6394:104:89","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":15034,"nodeType":"Block","src":"6562:109:89","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15026,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6634:5:89","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":15027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"6634:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31","id":15028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6652:7:89","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"6634:25:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15030,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6633:27:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":15031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6663:1:89","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6633:31:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15025,"id":15033,"nodeType":"Return","src":"6626:38:89"}]},"id":15035,"implemented":true,"kind":"function","modifiers":[],"name":"_currentPeriod","nodeType":"FunctionDefinition","parameters":{"id":15022,"nodeType":"ParameterList","parameters":[],"src":"6527:2:89"},"returnParameters":{"id":15025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15024,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15035,"src":"6553:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15023,"name":"uint256","nodeType":"ElementaryTypeName","src":"6553:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6552:9:89"},"scope":15196,"src":"6504:167:89","stateMutability":"view","virtual":false,"visibility":"internal"},{"id":15040,"implemented":false,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","parameters":{"id":15038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15037,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":15040,"src":"6702:18:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15036,"name":"uint256","nodeType":"ElementaryTypeName","src":"6702:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6701:20:89"},"returnParameters":{"id":15039,"nodeType":"ParameterList","parameters":[],"src":"6738:0:89"},"scope":15196,"src":"6677:62:89","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[893],"body":{"id":15050,"nodeType":"Block","src":"6861:28:89","statements":[{"expression":{"hexValue":"74727565","id":15048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6878:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15047,"id":15049,"nodeType":"Return","src":"6871:11:89"}]},"functionSelector":"4b820093","id":15051,"implemented":true,"kind":"function","modifiers":[],"name":"user_checkpoint","nodeType":"FunctionDefinition","overrides":{"id":15044,"nodeType":"OverrideSpecifier","overrides":[],"src":"6837:8:89"},"parameters":{"id":15043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15042,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15051,"src":"6814:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15041,"name":"address","nodeType":"ElementaryTypeName","src":"6814:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6813:9:89"},"returnParameters":{"id":15047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15046,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15051,"src":"6855:4:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15045,"name":"bool","nodeType":"ElementaryTypeName","src":"6855:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6854:6:89"},"scope":15196,"src":"6789:100:89","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[885],"body":{"id":15071,"nodeType":"Block","src":"6978:108:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15060,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15053,"src":"6996:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":15063,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7012:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}],"id":15062,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7004:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15061,"name":"address","nodeType":"ElementaryTypeName","src":"7004:7:89","typeDescriptions":{}}},"id":15064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7004:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6996:21:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"47617567652063616e206f6e6c79206d696e7420666f7220697473656c66","id":15066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7019:32:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_f4e4fe179fd12da350e7bb8ec0880d9e8b3a006c5241edb45e89d14d3fb1458d","typeString":"literal_string \"Gauge can only mint for itself\""},"value":"Gauge can only mint for itself"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f4e4fe179fd12da350e7bb8ec0880d9e8b3a006c5241edb45e89d14d3fb1458d","typeString":"literal_string \"Gauge can only mint for itself\""}],"id":15059,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6988:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6988:64:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15068,"nodeType":"ExpressionStatement","src":"6988:64:89"},{"expression":{"id":15069,"name":"_emissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14668,"src":"7069:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15058,"id":15070,"nodeType":"Return","src":"7062:17:89"}]},"functionSelector":"09400707","id":15072,"implemented":true,"kind":"function","modifiers":[],"name":"integrate_fraction","nodeType":"FunctionDefinition","overrides":{"id":15055,"nodeType":"OverrideSpecifier","overrides":[],"src":"6951:8:89"},"parameters":{"id":15054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15053,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":15072,"src":"6923:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15052,"name":"address","nodeType":"ElementaryTypeName","src":"6923:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6922:14:89"},"returnParameters":{"id":15058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15057,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15072,"src":"6969:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15056,"name":"uint256","nodeType":"ElementaryTypeName","src":"6969:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6968:9:89"},"scope":15196,"src":"6895:191:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[899],"body":{"id":15080,"nodeType":"Block","src":"7151:33:89","statements":[{"expression":{"id":15078,"name":"_isKilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14670,"src":"7168:9:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":15077,"id":15079,"nodeType":"Return","src":"7161:16:89"}]},"functionSelector":"9c868ac0","id":15081,"implemented":true,"kind":"function","modifiers":[],"name":"is_killed","nodeType":"FunctionDefinition","overrides":{"id":15074,"nodeType":"OverrideSpecifier","overrides":[],"src":"7127:8:89"},"parameters":{"id":15073,"nodeType":"ParameterList","parameters":[],"src":"7110:2:89"},"returnParameters":{"id":15077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15076,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15081,"src":"7145:4:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15075,"name":"bool","nodeType":"ElementaryTypeName","src":"7145:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7144:6:89"},"scope":15196,"src":"7092:92:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[903],"body":{"id":15100,"nodeType":"Block","src":"7229:115:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15086,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7247:3:89","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7247:10:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":15090,"name":"_authorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14648,"src":"7269:18:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}],"id":15089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7261:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15088,"name":"address","nodeType":"ElementaryTypeName","src":"7261:7:89","typeDescriptions":{}}},"id":15091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7261:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7247:41:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53454e4445525f4e4f545f414c4c4f574544","id":15093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7290:20:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""},"value":"SENDER_NOT_ALLOWED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""}],"id":15085,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7239:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7239:72:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15095,"nodeType":"ExpressionStatement","src":"7239:72:89"},{"expression":{"id":15098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15096,"name":"_isKilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14670,"src":"7321:9:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":15097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7333:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7321:16:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15099,"nodeType":"ExpressionStatement","src":"7321:16:89"}]},"functionSelector":"ab8f0945","id":15101,"implemented":true,"kind":"function","modifiers":[],"name":"killGauge","nodeType":"FunctionDefinition","overrides":{"id":15083,"nodeType":"OverrideSpecifier","overrides":[],"src":"7220:8:89"},"parameters":{"id":15082,"nodeType":"ParameterList","parameters":[],"src":"7208:2:89"},"returnParameters":{"id":15084,"nodeType":"ParameterList","parameters":[],"src":"7229:0:89"},"scope":15196,"src":"7190:154:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[907],"body":{"id":15120,"nodeType":"Block","src":"7391:116:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15106,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7409:3:89","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7409:10:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":15110,"name":"_authorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14648,"src":"7431:18:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}],"id":15109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7423:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15108,"name":"address","nodeType":"ElementaryTypeName","src":"7423:7:89","typeDescriptions":{}}},"id":15111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7423:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7409:41:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53454e4445525f4e4f545f414c4c4f574544","id":15113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7452:20:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""},"value":"SENDER_NOT_ALLOWED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""}],"id":15105,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7401:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7401:72:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15115,"nodeType":"ExpressionStatement","src":"7401:72:89"},{"expression":{"id":15118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15116,"name":"_isKilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14670,"src":"7483:9:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":15117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7495:5:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"7483:17:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15119,"nodeType":"ExpressionStatement","src":"7483:17:89"}]},"functionSelector":"d34fb267","id":15121,"implemented":true,"kind":"function","modifiers":[],"name":"unkillGauge","nodeType":"FunctionDefinition","overrides":{"id":15103,"nodeType":"OverrideSpecifier","overrides":[],"src":"7382:8:89"},"parameters":{"id":15102,"nodeType":"ParameterList","parameters":[],"src":"7370:2:89"},"returnParameters":{"id":15104,"nodeType":"ParameterList","parameters":[],"src":"7391:0:89"},"scope":15196,"src":"7350:157:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[913],"body":{"id":15142,"nodeType":"Block","src":"7588:139:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15128,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7606:3:89","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7606:10:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":15132,"name":"_authorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14648,"src":"7628:18:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}],"id":15131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7620:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15130,"name":"address","nodeType":"ElementaryTypeName","src":"7620:7:89","typeDescriptions":{}}},"id":15133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7620:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7606:41:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53454e4445525f4e4f545f414c4c4f574544","id":15135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7649:20:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""},"value":"SENDER_NOT_ALLOWED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""}],"id":15127,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7598:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7598:72:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15137,"nodeType":"ExpressionStatement","src":"7598:72:89"},{"expression":{"arguments":[{"id":15139,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15123,"src":"7702:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15138,"name":"_setRelativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15164,"src":"7680:21:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7680:40:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15141,"nodeType":"ExpressionStatement","src":"7680:40:89"}]},"functionSelector":"10d3eb04","id":15143,"implemented":true,"kind":"function","modifiers":[],"name":"setRelativeWeightCap","nodeType":"FunctionDefinition","overrides":{"id":15125,"nodeType":"OverrideSpecifier","overrides":[],"src":"7579:8:89"},"parameters":{"id":15124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15123,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":15143,"src":"7543:25:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15122,"name":"uint256","nodeType":"ElementaryTypeName","src":"7543:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7542:27:89"},"returnParameters":{"id":15126,"nodeType":"ParameterList","parameters":[],"src":"7588:0:89"},"scope":15196,"src":"7513:214:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":15163,"nodeType":"Block","src":"7800:232:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15149,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15145,"src":"7818:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":15150,"name":"MAX_RELATIVE_WEIGHT_CAP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14638,"src":"7839:23:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7818:44:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d","id":15152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7864:54:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_b4cb1c586d60adf213211c8bcbaaed24dc443f5fd8a96bbdc7ee2066c2469074","typeString":"literal_string \"Relative weight cap exceeds allowed absolute maximum\""},"value":"Relative weight cap exceeds allowed absolute maximum"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b4cb1c586d60adf213211c8bcbaaed24dc443f5fd8a96bbdc7ee2066c2469074","typeString":"literal_string \"Relative weight cap exceeds allowed absolute maximum\""}],"id":15148,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7810:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7810:109:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15154,"nodeType":"ExpressionStatement","src":"7810:109:89"},{"expression":{"id":15157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15155,"name":"_relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14672,"src":"7929:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15156,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15145,"src":"7950:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7929:38:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15158,"nodeType":"ExpressionStatement","src":"7929:38:89"},{"eventCall":{"arguments":[{"id":15160,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15145,"src":"8007:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15159,"name":"RelativeWeightCapChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":877,"src":"7982:24:89","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7982:43:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15162,"nodeType":"EmitStatement","src":"7977:48:89"}]},"id":15164,"implemented":true,"kind":"function","modifiers":[],"name":"_setRelativeWeightCap","nodeType":"FunctionDefinition","parameters":{"id":15146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15145,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":15164,"src":"7764:25:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15144,"name":"uint256","nodeType":"ElementaryTypeName","src":"7764:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7763:27:89"},"returnParameters":{"id":15147,"nodeType":"ParameterList","parameters":[],"src":"7800:0:89"},"scope":15196,"src":"7733:299:89","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[919],"body":{"id":15172,"nodeType":"Block","src":"8111:42:89","statements":[{"expression":{"id":15170,"name":"_relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14672,"src":"8128:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15169,"id":15171,"nodeType":"Return","src":"8121:25:89"}]},"functionSelector":"83f5c39b","id":15173,"implemented":true,"kind":"function","modifiers":[],"name":"getRelativeWeightCap","nodeType":"FunctionDefinition","overrides":{"id":15166,"nodeType":"OverrideSpecifier","overrides":[],"src":"8084:8:89"},"parameters":{"id":15165,"nodeType":"ParameterList","parameters":[],"src":"8067:2:89"},"returnParameters":{"id":15169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15168,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15173,"src":"8102:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15167,"name":"uint256","nodeType":"ElementaryTypeName","src":"8102:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8101:9:89"},"scope":15196,"src":"8038:115:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[927],"body":{"id":15194,"nodeType":"Block","src":"8245:113:89","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":15187,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8318:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}],"id":15186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8310:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15185,"name":"address","nodeType":"ElementaryTypeName","src":"8310:7:89","typeDescriptions":{}}},"id":15188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8310:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15189,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15175,"src":"8325:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15183,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14646,"src":"8271:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":15184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gauge_relative_weight","nodeType":"MemberAccess","referencedDeclaration":758,"src":"8271:38:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view external returns (uint256)"}},"id":15190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8271:59:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15191,"name":"_relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14672,"src":"8332:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15181,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"8262:4:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5683_$","typeString":"type(library Math)"}},"id":15182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"min","nodeType":"MemberAccess","referencedDeclaration":5586,"src":"8262:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":15192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8262:89:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15180,"id":15193,"nodeType":"Return","src":"8255:96:89"}]},"functionSelector":"14e956f5","id":15195,"implemented":true,"kind":"function","modifiers":[],"name":"getCappedRelativeWeight","nodeType":"FunctionDefinition","overrides":{"id":15177,"nodeType":"OverrideSpecifier","overrides":[],"src":"8218:8:89"},"parameters":{"id":15176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15175,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":15195,"src":"8192:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15174,"name":"uint256","nodeType":"ElementaryTypeName","src":"8192:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8191:14:89"},"returnParameters":{"id":15180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15179,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15195,"src":"8236:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15178,"name":"uint256","nodeType":"ElementaryTypeName","src":"8236:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8235:9:89"},"scope":15196,"src":"8159:199:89","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":15197,"src":"1312:7048:89"}],"src":"688:7673:89"},"id":89},"contracts/gauges/StakelessGaugeCheckpointer.sol":{"ast":{"absolutePath":"contracts/gauges/StakelessGaugeCheckpointer.sol","exportedSymbols":{"StakelessGaugeCheckpointer":[16300]},"id":16301,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15198,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:90"},{"id":15199,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:90"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","id":15200,"nodeType":"ImportDirective","scope":16301,"sourceUnit":63,"src":"747:98:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol","id":15201,"nodeType":"ImportDirective","scope":16301,"sourceUnit":740,"src":"846:81:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","id":15202,"nodeType":"ImportDirective","scope":16301,"sourceUnit":822,"src":"928:86:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol","id":15203,"nodeType":"ImportDirective","scope":16301,"sourceUnit":1240,"src":"1015:85:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol","id":15204,"nodeType":"ImportDirective","scope":16301,"sourceUnit":1418,"src":"1101:97:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":15205,"nodeType":"ImportDirective","scope":16301,"sourceUnit":5851,"src":"1200:77:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","id":15206,"nodeType":"ImportDirective","scope":16301,"sourceUnit":7132,"src":"1278:83:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":15207,"nodeType":"ImportDirective","scope":16301,"sourceUnit":7188,"src":"1362:85:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/admin/GaugeAdder.sol","file":"../admin/GaugeAdder.sol","id":15208,"nodeType":"ImportDirective","scope":16301,"sourceUnit":12364,"src":"1449:33:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/arbitrum/ArbitrumRootGauge.sol","file":"./arbitrum/ArbitrumRootGauge.sol","id":15209,"nodeType":"ImportDirective","scope":16301,"sourceUnit":16478,"src":"1483:42:90","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":15211,"name":"IStakelessGaugeCheckpointer","nodeType":"UserDefinedTypeName","referencedDeclaration":1417,"src":"1699:27:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGaugeCheckpointer_$1417","typeString":"contract IStakelessGaugeCheckpointer"}},"id":15212,"nodeType":"InheritanceSpecifier","src":"1699:27:90"},{"baseName":{"id":15213,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"1728:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":15214,"nodeType":"InheritanceSpecifier","src":"1728:15:90"},{"baseName":{"id":15215,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1745:23:90","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":15216,"nodeType":"InheritanceSpecifier","src":"1745:23:90"}],"contractDependencies":[1417,2259,3128,3697,7187],"contractKind":"contract","documentation":{"id":15210,"nodeType":"StructuredDocumentation","src":"1527:132:90","text":" @title Stakeless Gauge Checkpointer\n @notice Implements IStakelessGaugeCheckpointer; refer to it for API documentation."},"fullyImplemented":true,"id":16300,"linearizedBaseContracts":[16300,3697,3128,2259,7187,1417],"name":"StakelessGaugeCheckpointer","nodeType":"ContractDefinition","nodes":[{"id":15219,"libraryName":{"id":15217,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7131,"src":"1781:13:90","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$7131","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"1775:49:90","typeName":{"id":15218,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1799:24:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"constant":false,"id":15223,"mutability":"mutable","name":"_gauges","nodeType":"VariableDeclaration","scope":16300,"src":"1830:59:90","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string => struct EnumerableSet.AddressSet)"},"typeName":{"id":15222,"keyType":{"id":15220,"name":"string","nodeType":"ElementaryTypeName","src":"1838:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"nodeType":"Mapping","src":"1830:43:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string => struct EnumerableSet.AddressSet)"},"valueType":{"id":15221,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1848:24:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},"visibility":"private"},{"constant":false,"id":15225,"mutability":"immutable","name":"_authorizerAdaptorEntrypoint","nodeType":"VariableDeclaration","scope":16300,"src":"1895:75:90","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":15224,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"1895:28:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"private"},{"constant":false,"id":15227,"mutability":"immutable","name":"_gaugeAdder","nodeType":"VariableDeclaration","scope":16300,"src":"1976:41:90","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"},"typeName":{"id":15226,"name":"IGaugeAdder","nodeType":"UserDefinedTypeName","referencedDeclaration":739,"src":"1976:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"visibility":"private"},{"constant":false,"id":15229,"mutability":"immutable","name":"_gaugeController","nodeType":"VariableDeclaration","scope":16300,"src":"2023:51:90","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":15228,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"2023:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"private"},{"body":{"id":15255,"nodeType":"Block","src":"2251:169:90","statements":[{"expression":{"id":15243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15241,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"2261:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15242,"name":"gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15231,"src":"2275:10:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"src":"2261:24:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15244,"nodeType":"ExpressionStatement","src":"2261:24:90"},{"expression":{"id":15247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15245,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15225,"src":"2295:28:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15246,"name":"authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15233,"src":"2326:27:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"src":"2295:58:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":15248,"nodeType":"ExpressionStatement","src":"2295:58:90"},{"expression":{"id":15253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15249,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15229,"src":"2363:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15250,"name":"gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15231,"src":"2382:10:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getGaugeController","nodeType":"MemberAccess","referencedDeclaration":669,"src":"2382:29:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IGaugeController_$821_$","typeString":"function () view external returns (contract IGaugeController)"}},"id":15252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2382:31:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"src":"2363:50:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":15254,"nodeType":"ExpressionStatement","src":"2363:50:90"}]},"id":15256,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15236,"name":"authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15233,"src":"2207:27:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":15237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getVault","nodeType":"MemberAccess","referencedDeclaration":32,"src":"2207:36:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view external returns (contract IVault)"}},"id":15238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2207:38:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":15239,"modifierName":{"id":15235,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"2183:23:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"2183:63:90"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":15234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15231,"mutability":"mutable","name":"gaugeAdder","nodeType":"VariableDeclaration","scope":15256,"src":"2093:22:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"},"typeName":{"id":15230,"name":"IGaugeAdder","nodeType":"UserDefinedTypeName","referencedDeclaration":739,"src":"2093:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"visibility":"internal"},{"constant":false,"id":15233,"mutability":"mutable","name":"authorizerAdaptorEntrypoint","nodeType":"VariableDeclaration","scope":15256,"src":"2117:56:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":15232,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"2117:28:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"internal"}],"src":"2092:82:90"},"returnParameters":{"id":15240,"nodeType":"ParameterList","parameters":[],"src":"2251:0:90"},"scope":16300,"src":"2081:339:90","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":15269,"nodeType":"Block","src":"2479:98:90","statements":[{"expression":{"arguments":[{"arguments":[{"id":15263,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15258,"src":"2526:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":15261,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"2497:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isValidGaugeType","nodeType":"MemberAccess","referencedDeclaration":698,"src":"2497:28:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (string memory) view external returns (bool)"}},"id":15264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2497:39:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c69642067617567652074797065","id":15265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2538:20:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""},"value":"Invalid gauge type"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""}],"id":15260,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2489:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2489:70:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15267,"nodeType":"ExpressionStatement","src":"2489:70:90"},{"id":15268,"nodeType":"PlaceholderStatement","src":"2569:1:90"}]},"id":15270,"name":"withValidGaugeType","nodeType":"ModifierDefinition","parameters":{"id":15259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15258,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15270,"src":"2454:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15257,"name":"string","nodeType":"ElementaryTypeName","src":"2454:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2453:25:90"},"src":"2426:151:90","virtual":false,"visibility":"internal"},{"body":{"id":15299,"nodeType":"Block","src":"2640:174:90","statements":[{"body":{"id":15296,"nodeType":"Block","src":"2698:99:90","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":15289,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15273,"src":"2749:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":15291,"indexExpression":{"id":15290,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15276,"src":"2760:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2749:13:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":15287,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"2720:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isValidGaugeType","nodeType":"MemberAccess","referencedDeclaration":698,"src":"2720:28:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (string memory) view external returns (bool)"}},"id":15292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2720:43:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c69642067617567652074797065","id":15293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2765:20:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""},"value":"Invalid gauge type"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""}],"id":15286,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2712:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2712:74:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15295,"nodeType":"ExpressionStatement","src":"2712:74:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15279,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15276,"src":"2670:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15280,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15273,"src":"2674:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":15281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2674:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2670:21:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15297,"initializationExpression":{"assignments":[15276],"declarations":[{"constant":false,"id":15276,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15297,"src":"2655:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15275,"name":"uint256","nodeType":"ElementaryTypeName","src":"2655:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15278,"initialValue":{"hexValue":"30","id":15277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2667:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2655:13:90"},"loopExpression":{"expression":{"id":15284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2693:3:90","subExpression":{"id":15283,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15276,"src":"2695:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15285,"nodeType":"ExpressionStatement","src":"2693:3:90"},"nodeType":"ForStatement","src":"2650:147:90"},{"id":15298,"nodeType":"PlaceholderStatement","src":"2806:1:90"}]},"id":15300,"name":"withValidGaugeTypes","nodeType":"ModifierDefinition","parameters":{"id":15274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15273,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":15300,"src":"2612:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15271,"name":"string","nodeType":"ElementaryTypeName","src":"2612:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15272,"nodeType":"ArrayTypeName","src":"2612:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"src":"2611:28:90"},"src":"2583:231:90","virtual":false,"visibility":"internal"},{"body":{"id":15315,"nodeType":"Block","src":"2892:82:90","statements":[{"expression":{"arguments":[{"arguments":[{"id":15308,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15302,"src":"2919:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":15309,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15304,"src":"2930:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15307,"name":"hasGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"2910:8:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$_t_contract$_IStakelessGauge_$1239_$returns$_t_bool_$","typeString":"function (string memory,contract IStakelessGauge) view returns (bool)"}},"id":15310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2910:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4761756765206e6f74206164646564","id":15311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2938:17:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_777198c5277c092a0b9003b985175c31e16a94f16e375f696473f999836a77f7","typeString":"literal_string \"Gauge not added\""},"value":"Gauge not added"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_777198c5277c092a0b9003b985175c31e16a94f16e375f696473f999836a77f7","typeString":"literal_string \"Gauge not added\""}],"id":15306,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2902:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2902:54:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15313,"nodeType":"ExpressionStatement","src":"2902:54:90"},{"id":15314,"nodeType":"PlaceholderStatement","src":"2966:1:90"}]},"id":15316,"name":"withValidGauge","nodeType":"ModifierDefinition","parameters":{"id":15305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15302,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15316,"src":"2844:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15301,"name":"string","nodeType":"ElementaryTypeName","src":"2844:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15304,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15316,"src":"2869:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15303,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"2869:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"2843:48:90"},"src":"2820:154:90","virtual":false,"visibility":"internal"},{"body":{"id":15322,"nodeType":"Block","src":"3002:53:90","statements":[{"id":15318,"nodeType":"PlaceholderStatement","src":"3012:1:90"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15319,"name":"_returnLeftoverEthIfAny","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16282,"src":"3023:23:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":15320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3023:25:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15321,"nodeType":"ExpressionStatement","src":"3023:25:90"}]},"id":15323,"name":"refundsEth","nodeType":"ModifierDefinition","parameters":{"id":15317,"nodeType":"ParameterList","parameters":[],"src":"2999:2:90"},"src":"2980:75:90","virtual":false,"visibility":"internal"},{"baseFunctions":[1269],"body":{"id":15332,"nodeType":"Block","src":"3179:35:90","statements":[{"expression":{"id":15330,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"3196:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"functionReturnParameters":15329,"id":15331,"nodeType":"Return","src":"3189:18:90"}]},"documentation":{"id":15324,"nodeType":"StructuredDocumentation","src":"3061:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"7c1fef51","id":15333,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeAdder","nodeType":"FunctionDefinition","overrides":{"id":15326,"nodeType":"OverrideSpecifier","overrides":[],"src":"3148:8:90"},"parameters":{"id":15325,"nodeType":"ParameterList","parameters":[],"src":"3131:2:90"},"returnParameters":{"id":15329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15328,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15333,"src":"3166:11:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"},"typeName":{"id":15327,"name":"IGaugeAdder","nodeType":"UserDefinedTypeName","referencedDeclaration":739,"src":"3166:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"visibility":"internal"}],"src":"3165:13:90"},"scope":16300,"src":"3109:105:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1276],"body":{"id":15345,"nodeType":"Block","src":"3340:51:90","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15341,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"3357:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getGaugeTypes","nodeType":"MemberAccess","referencedDeclaration":676,"src":"3357:25:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$","typeString":"function () view external returns (string memory[] memory)"}},"id":15343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3357:27:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"functionReturnParameters":15340,"id":15344,"nodeType":"Return","src":"3350:34:90"}]},"documentation":{"id":15334,"nodeType":"StructuredDocumentation","src":"3220:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"afcb1a86","id":15346,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeTypes","nodeType":"FunctionDefinition","overrides":{"id":15336,"nodeType":"OverrideSpecifier","overrides":[],"src":"3305:8:90"},"parameters":{"id":15335,"nodeType":"ParameterList","parameters":[],"src":"3290:2:90"},"returnParameters":{"id":15340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15339,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15346,"src":"3323:15:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15337,"name":"string","nodeType":"ElementaryTypeName","src":"3323:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15338,"nodeType":"ArrayTypeName","src":"3323:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"src":"3322:17:90"},"scope":16300,"src":"3268:123:90","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1285],"body":{"id":15367,"nodeType":"Block","src":"3637:231:90","statements":[{"expression":{"arguments":[{"id":15362,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15349,"src":"3837:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":15363,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15352,"src":"3848:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"}},{"hexValue":"74727565","id":15364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3856:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15361,"name":"_addGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15884,"src":"3826:10:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr_$_t_bool_$returns$__$","typeString":"function (string memory,contract IStakelessGauge[] calldata,bool)"}},"id":15365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3826:35:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15366,"nodeType":"ExpressionStatement","src":"3826:35:90"}]},"documentation":{"id":15347,"nodeType":"StructuredDocumentation","src":"3397:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"d8dba2ce","id":15368,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15356,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15349,"src":"3601:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":15357,"modifierName":{"id":15355,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15270,"src":"3582:18:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"3582:29:90"},{"id":15359,"modifierName":{"id":15358,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3620:12:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3620:12:90"}],"name":"addGaugesWithVerifiedType","nodeType":"FunctionDefinition","overrides":{"id":15354,"nodeType":"OverrideSpecifier","overrides":[],"src":"3565:8:90"},"parameters":{"id":15353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15349,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15368,"src":"3480:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15348,"name":"string","nodeType":"ElementaryTypeName","src":"3480:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15352,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15368,"src":"3505:33:90","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":15350,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"3505:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15351,"nodeType":"ArrayTypeName","src":"3505:17:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"3479:60:90"},"returnParameters":{"id":15360,"nodeType":"ParameterList","parameters":[],"src":"3637:0:90"},"scope":16300,"src":"3445:423:90","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1294],"body":{"id":15387,"nodeType":"Block","src":"4077:168:90","statements":[{"expression":{"arguments":[{"id":15382,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15371,"src":"4213:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":15383,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15374,"src":"4224:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"}},{"hexValue":"66616c7365","id":15384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4232:5:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15381,"name":"_addGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15884,"src":"4202:10:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr_$_t_bool_$returns$__$","typeString":"function (string memory,contract IStakelessGauge[] calldata,bool)"}},"id":15385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4202:36:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15386,"nodeType":"ExpressionStatement","src":"4202:36:90"}]},"documentation":{"id":15369,"nodeType":"StructuredDocumentation","src":"3874:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"f7178b88","id":15388,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15378,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15371,"src":"4062:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":15379,"modifierName":{"id":15377,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15270,"src":"4043:18:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"4043:29:90"}],"name":"addGauges","nodeType":"FunctionDefinition","overrides":{"id":15376,"nodeType":"OverrideSpecifier","overrides":[],"src":"4026:8:90"},"parameters":{"id":15375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15371,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15388,"src":"3941:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15370,"name":"string","nodeType":"ElementaryTypeName","src":"3941:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15374,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15388,"src":"3966:33:90","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":15372,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"3966:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15373,"nodeType":"ArrayTypeName","src":"3966:17:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"3940:60:90"},"returnParameters":{"id":15380,"nodeType":"ParameterList","parameters":[],"src":"4077:0:90"},"scope":16300,"src":"3922:323:90","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1303],"body":{"id":15454,"nodeType":"Block","src":"4457:673:90","statements":[{"assignments":[15404],"declarations":[{"constant":false,"id":15404,"mutability":"mutable","name":"gaugesForType","nodeType":"VariableDeclaration","scope":15454,"src":"4467:46:90","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":15403,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"4467:24:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"id":15408,"initialValue":{"baseExpression":{"id":15405,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"4516:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":15407,"indexExpression":{"id":15406,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15391,"src":"4524:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4516:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"nodeType":"VariableDeclarationStatement","src":"4467:67:90"},{"body":{"id":15452,"nodeType":"Block","src":"4589:535:90","statements":[{"assignments":[15421],"declarations":[{"constant":false,"id":15421,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15452,"src":"4825:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15420,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"4825:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"id":15425,"initialValue":{"baseExpression":{"id":15422,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15394,"src":"4849:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"}},"id":15424,"indexExpression":{"id":15423,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15410,"src":"4856:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4849:9:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"nodeType":"VariableDeclarationStatement","src":"4825:33:90"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15427,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15421,"src":"4880:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"is_killed","nodeType":"MemberAccess","referencedDeclaration":899,"src":"4880:15:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":15429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4880:17:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520776173206e6f74206b696c6c6564","id":15430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4899:22:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_d78cdf3238001e15a5db0f656c48ed7e94d18e2e50565575b7a8c6450f8e358b","typeString":"literal_string \"Gauge was not killed\""},"value":"Gauge was not killed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d78cdf3238001e15a5db0f656c48ed7e94d18e2e50565575b7a8c6450f8e358b","typeString":"literal_string \"Gauge was not killed\""}],"id":15426,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4872:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4872:50:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15432,"nodeType":"ExpressionStatement","src":"4872:50:90"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":15438,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15421,"src":"4973:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4965:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15436,"name":"address","nodeType":"ElementaryTypeName","src":"4965:7:90","typeDescriptions":{}}},"id":15439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4965:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15434,"name":"gaugesForType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15404,"src":"4944:13:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":15435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":6816,"src":"4944:20:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":15440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4944:36:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520776173206e6f7420616464656420746f2074686520636865636b706f696e746572","id":15441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4982:41:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_3e1284235dec29a2847105ee3a4152eb180dc3434f0f11a0ffb60549ca459823","typeString":"literal_string \"Gauge was not added to the checkpointer\""},"value":"Gauge was not added to the checkpointer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3e1284235dec29a2847105ee3a4152eb180dc3434f0f11a0ffb60549ca459823","typeString":"literal_string \"Gauge was not added to the checkpointer\""}],"id":15433,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4936:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4936:88:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15443,"nodeType":"ExpressionStatement","src":"4936:88:90"},{"eventCall":{"arguments":[{"id":15447,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15421,"src":"5085:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},{"id":15448,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15391,"src":"5092:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":15449,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15391,"src":"5103:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":15444,"name":"IStakelessGaugeCheckpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"5044:27:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGaugeCheckpointer_$1417_$","typeString":"type(contract IStakelessGaugeCheckpointer)"}},"id":15446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"GaugeRemoved","nodeType":"MemberAccess","referencedDeclaration":1263,"src":"5044:40:90","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IStakelessGauge_$1239_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (contract IStakelessGauge,string memory,string memory)"}},"id":15450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5044:69:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15451,"nodeType":"EmitStatement","src":"5039:74:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15413,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15410,"src":"4565:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15414,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15394,"src":"4569:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"}},"id":15415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4569:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4565:17:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15453,"initializationExpression":{"assignments":[15410],"declarations":[{"constant":false,"id":15410,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15453,"src":"4550:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15409,"name":"uint256","nodeType":"ElementaryTypeName","src":"4550:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15412,"initialValue":{"hexValue":"30","id":15411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4562:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4550:13:90"},"loopExpression":{"expression":{"id":15418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4584:3:90","subExpression":{"id":15417,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15410,"src":"4584:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15419,"nodeType":"ExpressionStatement","src":"4584:3:90"},"nodeType":"ForStatement","src":"4545:579:90"}]},"documentation":{"id":15389,"nodeType":"StructuredDocumentation","src":"4251:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"73ebd060","id":15455,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15398,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15391,"src":"4442:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":15399,"modifierName":{"id":15397,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15270,"src":"4423:18:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"4423:29:90"}],"name":"removeGauges","nodeType":"FunctionDefinition","overrides":{"id":15396,"nodeType":"OverrideSpecifier","overrides":[],"src":"4406:8:90"},"parameters":{"id":15395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15391,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15455,"src":"4321:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15390,"name":"string","nodeType":"ElementaryTypeName","src":"4321:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15394,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15455,"src":"4346:33:90","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":15392,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"4346:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15393,"nodeType":"ArrayTypeName","src":"4346:17:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"4320:60:90"},"returnParameters":{"id":15400,"nodeType":"ParameterList","parameters":[],"src":"4457:0:90"},"scope":16300,"src":"4299:831:90","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1313],"body":{"id":15479,"nodeType":"Block","src":"5360:67:90","statements":[{"expression":{"arguments":[{"arguments":[{"id":15475,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15460,"src":"5413:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5405:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15473,"name":"address","nodeType":"ElementaryTypeName","src":"5405:7:90","typeDescriptions":{}}},"id":15476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5405:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"id":15469,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"5377:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":15471,"indexExpression":{"id":15470,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15458,"src":"5385:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5377:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":15472,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":6834,"src":"5377:27:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"}},"id":15477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5377:43:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":15468,"id":15478,"nodeType":"Return","src":"5370:50:90"}]},"documentation":{"id":15456,"nodeType":"StructuredDocumentation","src":"5136:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"c91be043","id":15480,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15464,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15458,"src":"5322:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":15465,"modifierName":{"id":15463,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15270,"src":"5303:18:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"5303:29:90"}],"name":"hasGauge","nodeType":"FunctionDefinition","overrides":{"id":15462,"nodeType":"OverrideSpecifier","overrides":[],"src":"5286:8:90"},"parameters":{"id":15461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15458,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15480,"src":"5202:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15457,"name":"string","nodeType":"ElementaryTypeName","src":"5202:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15460,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15480,"src":"5227:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15459,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"5227:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"5201:48:90"},"returnParameters":{"id":15468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15467,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15480,"src":"5350:4:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15466,"name":"bool","nodeType":"ElementaryTypeName","src":"5350:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5349:6:90"},"scope":16300,"src":"5184:243:90","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1321],"body":{"id":15498,"nodeType":"Block","src":"5645:51:90","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":15492,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"5662:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":15494,"indexExpression":{"id":15493,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15483,"src":"5670:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5662:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":15495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6847,"src":"5662:25:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":15496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5662:27:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15491,"id":15497,"nodeType":"Return","src":"5655:34:90"}]},"documentation":{"id":15481,"nodeType":"StructuredDocumentation","src":"5433:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"4db34d2a","id":15499,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15487,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15483,"src":"5604:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":15488,"modifierName":{"id":15486,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15270,"src":"5585:18:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"5585:29:90"}],"name":"getTotalGauges","nodeType":"FunctionDefinition","overrides":{"id":15485,"nodeType":"OverrideSpecifier","overrides":[],"src":"5568:8:90"},"parameters":{"id":15484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15483,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15499,"src":"5505:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15482,"name":"string","nodeType":"ElementaryTypeName","src":"5505:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5504:25:90"},"returnParameters":{"id":15491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15490,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15499,"src":"5632:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15489,"name":"uint256","nodeType":"ElementaryTypeName","src":"5632:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5631:9:90"},"scope":16300,"src":"5481:215:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1331],"body":{"id":15522,"nodeType":"Block","src":"5938:69:90","statements":[{"expression":{"arguments":[{"arguments":[{"id":15518,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15504,"src":"5993:5:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":15514,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"5971:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":15516,"indexExpression":{"id":15515,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15502,"src":"5979:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5971:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":15517,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":6873,"src":"5971:21:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":15519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5971:28:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15513,"name":"IStakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"5955:15:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGauge_$1239_$","typeString":"type(contract IStakelessGauge)"}},"id":15520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5955:45:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"functionReturnParameters":15512,"id":15521,"nodeType":"Return","src":"5948:52:90"}]},"documentation":{"id":15500,"nodeType":"StructuredDocumentation","src":"5702:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"27cb2a3b","id":15523,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15508,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15502,"src":"5889:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":15509,"modifierName":{"id":15507,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15270,"src":"5870:18:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"5870:29:90"}],"name":"getGaugeAtIndex","nodeType":"FunctionDefinition","overrides":{"id":15506,"nodeType":"OverrideSpecifier","overrides":[],"src":"5853:8:90"},"parameters":{"id":15505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15502,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15523,"src":"5775:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15501,"name":"string","nodeType":"ElementaryTypeName","src":"5775:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15504,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":15523,"src":"5800:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15503,"name":"uint256","nodeType":"ElementaryTypeName","src":"5800:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5774:40:90"},"returnParameters":{"id":15512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15511,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15523,"src":"5917:15:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15510,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"5917:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"5916:17:90"},"scope":16300,"src":"5750:257:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1337],"body":{"id":15533,"nodeType":"Block","src":"6142:50:90","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15530,"name":"_roundDownBlockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16299,"src":"6159:24:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6159:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15529,"id":15532,"nodeType":"Return","src":"6152:33:90"}]},"documentation":{"id":15524,"nodeType":"StructuredDocumentation","src":"6013:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"46583adf","id":15534,"implemented":true,"kind":"function","modifiers":[],"name":"getRoundedDownBlockTimestamp","nodeType":"FunctionDefinition","overrides":{"id":15526,"nodeType":"OverrideSpecifier","overrides":[],"src":"6115:8:90"},"parameters":{"id":15525,"nodeType":"ParameterList","parameters":[],"src":"6098:2:90"},"returnParameters":{"id":15529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15528,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15534,"src":"6133:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15527,"name":"uint256","nodeType":"ElementaryTypeName","src":"6133:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6132:9:90"},"scope":16300,"src":"6061:131:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1343],"body":{"id":15559,"nodeType":"Block","src":"6415:150:90","statements":[{"assignments":[15549],"declarations":[{"constant":false,"id":15549,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":15559,"src":"6425:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15547,"name":"string","nodeType":"ElementaryTypeName","src":"6425:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15548,"nodeType":"ArrayTypeName","src":"6425:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"id":15553,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15550,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"6454:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getGaugeTypes","nodeType":"MemberAccess","referencedDeclaration":676,"src":"6454:25:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$","typeString":"function () view external returns (string memory[] memory)"}},"id":15552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6454:27:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6425:56:90"},{"expression":{"arguments":[{"id":15555,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15549,"src":"6528:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},{"id":15556,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15537,"src":"6540:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15554,"name":"_checkpointGaugesAboveRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16069,"src":"6491:36:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory[] memory,uint256)"}},"id":15557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6491:67:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15558,"nodeType":"ExpressionStatement","src":"6491:67:90"}]},"documentation":{"id":15535,"nodeType":"StructuredDocumentation","src":"6198:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"804d17dc","id":15560,"implemented":true,"kind":"function","modifiers":[{"id":15541,"modifierName":{"id":15540,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"6379:12:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"6379:12:90"},{"id":15543,"modifierName":{"id":15542,"name":"refundsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15323,"src":"6400:10:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"6400:10:90"}],"name":"checkpointAllGaugesAboveRelativeWeight","nodeType":"FunctionDefinition","overrides":{"id":15539,"nodeType":"OverrideSpecifier","overrides":[],"src":"6362:8:90"},"parameters":{"id":15538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15537,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":15560,"src":"6294:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15536,"name":"uint256","nodeType":"ElementaryTypeName","src":"6294:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6293:27:90"},"returnParameters":{"id":15544,"nodeType":"ParameterList","parameters":[],"src":"6415:0:90"},"scope":16300,"src":"6246:319:90","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1352],"body":{"id":15582,"nodeType":"Block","src":"6860:84:90","statements":[{"expression":{"arguments":[{"id":15578,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15564,"src":"6907:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},{"id":15579,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15566,"src":"6919:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15577,"name":"_checkpointGaugesAboveRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16069,"src":"6870:36:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory[] memory,uint256)"}},"id":15580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6870:67:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15581,"nodeType":"ExpressionStatement","src":"6870:67:90"}]},"documentation":{"id":15561,"nodeType":"StructuredDocumentation","src":"6571:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"97510496","id":15583,"implemented":true,"kind":"function","modifiers":[{"id":15570,"modifierName":{"id":15569,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"6784:12:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"6784:12:90"},{"arguments":[{"id":15572,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15564,"src":"6825:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}}],"id":15573,"modifierName":{"id":15571,"name":"withValidGaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15300,"src":"6805:19:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$","typeString":"modifier (string memory[] memory)"}},"nodeType":"ModifierInvocation","src":"6805:31:90"},{"id":15575,"modifierName":{"id":15574,"name":"refundsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15323,"src":"6845:10:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"6845:10:90"}],"name":"checkpointGaugesOfTypesAboveRelativeWeight","nodeType":"FunctionDefinition","overrides":{"id":15568,"nodeType":"OverrideSpecifier","overrides":[],"src":"6767:8:90"},"parameters":{"id":15567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15564,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":15583,"src":"6671:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15562,"name":"string","nodeType":"ElementaryTypeName","src":"6671:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15563,"nodeType":"ArrayTypeName","src":"6671:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":15566,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":15583,"src":"6699:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15565,"name":"uint256","nodeType":"ElementaryTypeName","src":"6699:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6670:55:90"},"returnParameters":{"id":15576,"nodeType":"ParameterList","parameters":[],"src":"6860:0:90"},"scope":16300,"src":"6619:325:90","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1360],"body":{"id":15604,"nodeType":"Block","src":"7212:46:90","statements":[{"expression":{"arguments":[{"id":15601,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15588,"src":"7245:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15600,"name":"_checkpointSingleGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16256,"src":"7222:22:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"}},"id":15602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7222:29:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15603,"nodeType":"ExpressionStatement","src":"7222:29:90"}]},"documentation":{"id":15584,"nodeType":"StructuredDocumentation","src":"6950:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"7d0a6616","id":15605,"implemented":true,"kind":"function","modifiers":[{"id":15592,"modifierName":{"id":15591,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"7135:12:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"7135:12:90"},{"arguments":[{"id":15594,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15586,"src":"7171:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":15595,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15588,"src":"7182:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"id":15596,"modifierName":{"id":15593,"name":"withValidGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15316,"src":"7156:14:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$_t_contract$_IStakelessGauge_$1239_$","typeString":"modifier (string memory,contract IStakelessGauge)"}},"nodeType":"ModifierInvocation","src":"7156:32:90"},{"id":15598,"modifierName":{"id":15597,"name":"refundsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15323,"src":"7197:10:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"7197:10:90"}],"name":"checkpointSingleGauge","nodeType":"FunctionDefinition","overrides":{"id":15590,"nodeType":"OverrideSpecifier","overrides":[],"src":"7118:8:90"},"parameters":{"id":15589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15586,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15605,"src":"7029:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15585,"name":"string","nodeType":"ElementaryTypeName","src":"7029:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15588,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15605,"src":"7054:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15587,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"7054:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"7028:48:90"},"returnParameters":{"id":15599,"nodeType":"ParameterList","parameters":[],"src":"7212:0:90"},"scope":16300,"src":"6998:260:90","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1369],"body":{"id":15652,"nodeType":"Block","src":"7512:278:90","statements":[{"assignments":[15620],"declarations":[{"constant":false,"id":15620,"mutability":"mutable","name":"length","nodeType":"VariableDeclaration","scope":15652,"src":"7522:14:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15619,"name":"uint256","nodeType":"ElementaryTypeName","src":"7522:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15623,"initialValue":{"expression":{"id":15621,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15611,"src":"7539:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[] memory"}},"id":15622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7539:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7522:30:90"},{"body":{"id":15650,"nodeType":"Block","src":"7599:185:90","statements":[{"expression":{"arguments":[{"arguments":[{"id":15636,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15608,"src":"7684:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"baseExpression":{"id":15637,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15611,"src":"7695:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[] memory"}},"id":15639,"indexExpression":{"id":15638,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15625,"src":"7702:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7695:9:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15635,"name":"hasGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"7675:8:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$_t_contract$_IStakelessGauge_$1239_$returns$_t_bool_$","typeString":"function (string memory,contract IStakelessGauge) view returns (bool)"}},"id":15640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7675:30:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4761756765206e6f74206164646564","id":15641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7707:17:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_777198c5277c092a0b9003b985175c31e16a94f16e375f696473f999836a77f7","typeString":"literal_string \"Gauge not added\""},"value":"Gauge not added"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_777198c5277c092a0b9003b985175c31e16a94f16e375f696473f999836a77f7","typeString":"literal_string \"Gauge not added\""}],"id":15634,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7667:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7667:58:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15643,"nodeType":"ExpressionStatement","src":"7667:58:90"},{"expression":{"arguments":[{"baseExpression":{"id":15645,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15611,"src":"7763:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[] memory"}},"id":15647,"indexExpression":{"id":15646,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15625,"src":"7770:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7763:9:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15644,"name":"_checkpointSingleGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16256,"src":"7740:22:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"}},"id":15648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7740:33:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15649,"nodeType":"ExpressionStatement","src":"7740:33:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15628,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15625,"src":"7582:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15629,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15620,"src":"7586:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7582:10:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15651,"initializationExpression":{"assignments":[15625],"declarations":[{"constant":false,"id":15625,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15651,"src":"7567:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15624,"name":"uint256","nodeType":"ElementaryTypeName","src":"7567:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15627,"initialValue":{"hexValue":"30","id":15626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7579:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7567:13:90"},"loopExpression":{"expression":{"id":15632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7594:3:90","subExpression":{"id":15631,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15625,"src":"7596:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15633,"nodeType":"ExpressionStatement","src":"7594:3:90"},"nodeType":"ForStatement","src":"7562:222:90"}]},"documentation":{"id":15606,"nodeType":"StructuredDocumentation","src":"7264:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"43590308","id":15653,"implemented":true,"kind":"function","modifiers":[{"id":15615,"modifierName":{"id":15614,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"7476:12:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"7476:12:90"},{"id":15617,"modifierName":{"id":15616,"name":"refundsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15323,"src":"7497:10:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"7497:10:90"}],"name":"checkpointMultipleGaugesOfMatchingType","nodeType":"FunctionDefinition","overrides":{"id":15613,"nodeType":"OverrideSpecifier","overrides":[],"src":"7459:8:90"},"parameters":{"id":15612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15608,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15653,"src":"7360:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15607,"name":"string","nodeType":"ElementaryTypeName","src":"7360:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15611,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15653,"src":"7385:31:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":15609,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"7385:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15610,"nodeType":"ArrayTypeName","src":"7385:17:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"7359:58:90"},"returnParameters":{"id":15618,"nodeType":"ParameterList","parameters":[],"src":"7512:0:90"},"scope":16300,"src":"7312:478:90","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1379],"body":{"id":15712,"nodeType":"Block","src":"8033:382:90","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15669,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15657,"src":"8051:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":15670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8051:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":15671,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15660,"src":"8072:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[] memory"}},"id":15672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8072:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8051:34:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d69736d61746368206265747765656e20676175676520747970657320616e6420616464726573736573","id":15674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8087:44:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e60a0f1b977079650e11977f40048ef97e69bfc3ccab4fc1265df3bfff1c648","typeString":"literal_string \"Mismatch between gauge types and addresses\""},"value":"Mismatch between gauge types and addresses"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e60a0f1b977079650e11977f40048ef97e69bfc3ccab4fc1265df3bfff1c648","typeString":"literal_string \"Mismatch between gauge types and addresses\""}],"id":15668,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8043:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8043:89:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15676,"nodeType":"ExpressionStatement","src":"8043:89:90"},{"assignments":[15678],"declarations":[{"constant":false,"id":15678,"mutability":"mutable","name":"length","nodeType":"VariableDeclaration","scope":15712,"src":"8143:14:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15677,"name":"uint256","nodeType":"ElementaryTypeName","src":"8143:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15681,"initialValue":{"expression":{"id":15679,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15660,"src":"8160:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[] memory"}},"id":15680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8160:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8143:30:90"},{"body":{"id":15710,"nodeType":"Block","src":"8220:189:90","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":15694,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15657,"src":"8305:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":15696,"indexExpression":{"id":15695,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15683,"src":"8316:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8305:13:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"baseExpression":{"id":15697,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15660,"src":"8320:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[] memory"}},"id":15699,"indexExpression":{"id":15698,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15683,"src":"8327:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8320:9:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15693,"name":"hasGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"8296:8:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$_t_contract$_IStakelessGauge_$1239_$returns$_t_bool_$","typeString":"function (string memory,contract IStakelessGauge) view returns (bool)"}},"id":15700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8296:34:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4761756765206e6f74206164646564","id":15701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8332:17:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_777198c5277c092a0b9003b985175c31e16a94f16e375f696473f999836a77f7","typeString":"literal_string \"Gauge not added\""},"value":"Gauge not added"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_777198c5277c092a0b9003b985175c31e16a94f16e375f696473f999836a77f7","typeString":"literal_string \"Gauge not added\""}],"id":15692,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8288:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8288:62:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15703,"nodeType":"ExpressionStatement","src":"8288:62:90"},{"expression":{"arguments":[{"baseExpression":{"id":15705,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15660,"src":"8388:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[] memory"}},"id":15707,"indexExpression":{"id":15706,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15683,"src":"8395:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8388:9:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15704,"name":"_checkpointSingleGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16256,"src":"8365:22:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"}},"id":15708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8365:33:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15709,"nodeType":"ExpressionStatement","src":"8365:33:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15686,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15683,"src":"8203:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15687,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15678,"src":"8207:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8203:10:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15711,"initializationExpression":{"assignments":[15683],"declarations":[{"constant":false,"id":15683,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15711,"src":"8188:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15682,"name":"uint256","nodeType":"ElementaryTypeName","src":"8188:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15685,"initialValue":{"hexValue":"30","id":15684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8200:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8188:13:90"},"loopExpression":{"expression":{"id":15690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8215:3:90","subExpression":{"id":15689,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15683,"src":"8217:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15691,"nodeType":"ExpressionStatement","src":"8215:3:90"},"nodeType":"ForStatement","src":"8183:226:90"}]},"documentation":{"id":15654,"nodeType":"StructuredDocumentation","src":"7796:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"4a3a1e11","id":15713,"implemented":true,"kind":"function","modifiers":[{"id":15664,"modifierName":{"id":15663,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"7997:12:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"7997:12:90"},{"id":15666,"modifierName":{"id":15665,"name":"refundsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15323,"src":"8018:10:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"8018:10:90"}],"name":"checkpointMultipleGauges","nodeType":"FunctionDefinition","overrides":{"id":15662,"nodeType":"OverrideSpecifier","overrides":[],"src":"7980:8:90"},"parameters":{"id":15661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15657,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":15713,"src":"7878:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15655,"name":"string","nodeType":"ElementaryTypeName","src":"7878:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15656,"nodeType":"ArrayTypeName","src":"7878:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":15660,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15713,"src":"7906:31:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":15658,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"7906:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15659,"nodeType":"ArrayTypeName","src":"7906:17:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"7877:61:90"},"returnParameters":{"id":15667,"nodeType":"ParameterList","parameters":[],"src":"8033:0:90"},"scope":16300,"src":"7844:571:90","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1408],"body":{"id":15732,"nodeType":"Block","src":"8664:51:90","statements":[{"expression":{"arguments":[{"id":15729,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15718,"src":"8702:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15728,"name":"_getSingleBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15908,"src":"8681:20:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IStakelessGauge_$1239_$returns$_t_uint256_$","typeString":"function (contract IStakelessGauge) view returns (uint256)"}},"id":15730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8681:27:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15727,"id":15731,"nodeType":"Return","src":"8674:34:90"}]},"documentation":{"id":15714,"nodeType":"StructuredDocumentation","src":"8421:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"2adbe5ac","id":15733,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15722,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15716,"src":"8616:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":15723,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15718,"src":"8627:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"id":15724,"modifierName":{"id":15721,"name":"withValidGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15316,"src":"8601:14:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$_t_contract$_IStakelessGauge_$1239_$","typeString":"modifier (string memory,contract IStakelessGauge)"}},"nodeType":"ModifierInvocation","src":"8601:32:90"}],"name":"getSingleBridgeCost","nodeType":"FunctionDefinition","overrides":{"id":15720,"nodeType":"OverrideSpecifier","overrides":[],"src":"8584:8:90"},"parameters":{"id":15719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15716,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15733,"src":"8498:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15715,"name":"string","nodeType":"ElementaryTypeName","src":"8498:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15718,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15733,"src":"8523:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15717,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"8523:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"8497:48:90"},"returnParameters":{"id":15727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15726,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15733,"src":"8651:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15725,"name":"uint256","nodeType":"ElementaryTypeName","src":"8651:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8650:9:90"},"scope":16300,"src":"8469:246:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1398],"body":{"id":15753,"nodeType":"Block","src":"8974:84:90","statements":[{"expression":{"arguments":[{"id":15749,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15737,"src":"9021:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},{"id":15750,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15739,"src":"9033:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15748,"name":"_getGaugeTypesTotalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16034,"src":"8991:29:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (string memory[] memory,uint256) view returns (uint256)"}},"id":15751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8991:60:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15747,"id":15752,"nodeType":"Return","src":"8984:67:90"}]},"documentation":{"id":15734,"nodeType":"StructuredDocumentation","src":"8721:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"a9a7f87e","id":15754,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15743,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15737,"src":"8932:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}}],"id":15744,"modifierName":{"id":15742,"name":"withValidGaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15300,"src":"8912:19:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$","typeString":"modifier (string memory[] memory)"}},"nodeType":"ModifierInvocation","src":"8912:31:90"}],"name":"getGaugeTypesBridgeCost","nodeType":"FunctionDefinition","overrides":{"id":15741,"nodeType":"OverrideSpecifier","overrides":[],"src":"8895:8:90"},"parameters":{"id":15740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15737,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":15754,"src":"8802:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15735,"name":"string","nodeType":"ElementaryTypeName","src":"8802:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15736,"nodeType":"ArrayTypeName","src":"8802:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":15739,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":15754,"src":"8830:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15738,"name":"uint256","nodeType":"ElementaryTypeName","src":"8830:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8801:55:90"},"returnParameters":{"id":15747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15746,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15754,"src":"8961:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15745,"name":"uint256","nodeType":"ElementaryTypeName","src":"8961:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8960:9:90"},"scope":16300,"src":"8769:289:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1387],"body":{"id":15776,"nodeType":"Block","src":"9208:138:90","statements":[{"assignments":[15767],"declarations":[{"constant":false,"id":15767,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":15776,"src":"9218:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15765,"name":"string","nodeType":"ElementaryTypeName","src":"9218:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15766,"nodeType":"ArrayTypeName","src":"9218:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"id":15770,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15768,"name":"getGaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15346,"src":"9247:13:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$","typeString":"function () view returns (string memory[] memory)"}},"id":15769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9247:15:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9218:44:90"},{"expression":{"arguments":[{"id":15772,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15767,"src":"9309:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},{"id":15773,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15757,"src":"9321:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15771,"name":"_getGaugeTypesTotalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16034,"src":"9279:29:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (string memory[] memory,uint256) view returns (uint256)"}},"id":15774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9279:60:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15762,"id":15775,"nodeType":"Return","src":"9272:67:90"}]},"documentation":{"id":15755,"nodeType":"StructuredDocumentation","src":"9064:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"27f79107","id":15777,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalBridgeCost","nodeType":"FunctionDefinition","overrides":{"id":15759,"nodeType":"OverrideSpecifier","overrides":[],"src":"9181:8:90"},"parameters":{"id":15758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15757,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":15777,"src":"9140:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15756,"name":"uint256","nodeType":"ElementaryTypeName","src":"9140:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9139:27:90"},"returnParameters":{"id":15762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15761,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15777,"src":"9199:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15760,"name":"uint256","nodeType":"ElementaryTypeName","src":"9199:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9198:9:90"},"scope":16300,"src":"9112:234:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1416],"body":{"id":15791,"nodeType":"Block","src":"9489:63:90","statements":[{"expression":{"arguments":[{"id":15788,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15780,"src":"9535:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":15786,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"9506:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isValidGaugeType","nodeType":"MemberAccess","referencedDeclaration":698,"src":"9506:28:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (string memory) view external returns (bool)"}},"id":15789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9506:39:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":15785,"id":15790,"nodeType":"Return","src":"9499:46:90"}]},"documentation":{"id":15778,"nodeType":"StructuredDocumentation","src":"9352:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"16e772bc","id":15792,"implemented":true,"kind":"function","modifiers":[],"name":"isValidGaugeType","nodeType":"FunctionDefinition","overrides":{"id":15782,"nodeType":"OverrideSpecifier","overrides":[],"src":"9465:8:90"},"parameters":{"id":15781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15780,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15792,"src":"9426:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15779,"name":"string","nodeType":"ElementaryTypeName","src":"9426:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9425:25:90"},"returnParameters":{"id":15785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15784,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15792,"src":"9483:4:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15783,"name":"bool","nodeType":"ElementaryTypeName","src":"9483:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9482:6:90"},"scope":16300,"src":"9400:152:90","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":15883,"nodeType":"Block","src":"9703:1386:90","statements":[{"assignments":[15805],"declarations":[{"constant":false,"id":15805,"mutability":"mutable","name":"gaugesForType","nodeType":"VariableDeclaration","scope":15883,"src":"9713:46:90","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":15804,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"9713:24:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"id":15809,"initialValue":{"baseExpression":{"id":15806,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"9762:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":15808,"indexExpression":{"id":15807,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15794,"src":"9770:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9762:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9713:67:90"},{"body":{"id":15881,"nodeType":"Block","src":"9835:1248:90","statements":[{"assignments":[15822],"declarations":[{"constant":false,"id":15822,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15881,"src":"9849:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15821,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"9849:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"id":15826,"initialValue":{"baseExpression":{"id":15823,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15797,"src":"9873:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"}},"id":15825,"indexExpression":{"id":15824,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15811,"src":"9880:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9873:9:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"nodeType":"VariableDeclarationStatement","src":"9849:33:90"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":15832,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15822,"src":"10133:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10125:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15830,"name":"address","nodeType":"ElementaryTypeName","src":"10125:7:90","typeDescriptions":{}}},"id":15833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10125:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15828,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15229,"src":"10095:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":15829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gauge_exists","nodeType":"MemberAccess","referencedDeclaration":813,"src":"10095:29:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":15834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10095:45:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520776173206e6f7420616464656420746f20746865204761756765436f6e74726f6c6c6572","id":15835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10142:44:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_03758ab4a7950bd3318c235fefee4fd1d5b4c4183e3acfa57fc1c28d799413b9","typeString":"literal_string \"Gauge was not added to the GaugeController\""},"value":"Gauge was not added to the GaugeController"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_03758ab4a7950bd3318c235fefee4fd1d5b4c4183e3acfa57fc1c28d799413b9","typeString":"literal_string \"Gauge was not added to the GaugeController\""}],"id":15827,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10087:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10087:100:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15837,"nodeType":"ExpressionStatement","src":"10087:100:90"},{"expression":{"arguments":[{"id":15842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10209:18:90","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15839,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15822,"src":"10210:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"is_killed","nodeType":"MemberAccess","referencedDeclaration":899,"src":"10210:15:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":15841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10210:17:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520776173206b696c6c6564","id":15843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10229:18:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_639c68972bc65d7e267d4aba7b12fea429538dea719c7751d3fbfe2c9f9ef5be","typeString":"literal_string \"Gauge was killed\""},"value":"Gauge was killed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_639c68972bc65d7e267d4aba7b12fea429538dea719c7751d3fbfe2c9f9ef5be","typeString":"literal_string \"Gauge was killed\""}],"id":15838,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10201:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10201:47:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15845,"nodeType":"ExpressionStatement","src":"10201:47:90"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":15851,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15822,"src":"10296:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10288:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15849,"name":"address","nodeType":"ElementaryTypeName","src":"10288:7:90","typeDescriptions":{}}},"id":15852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10288:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15847,"name":"gaugesForType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15805,"src":"10270:13:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":15848,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":6731,"src":"10270:17:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":15853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10270:33:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520616c726561647920616464656420746f2074686520636865636b706f696e746572","id":15854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10305:41:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_fc8150c76d46c4a5a2ae309b99e2a88f1e561c5ed068162b1fd62c4debeb74ef","typeString":"literal_string \"Gauge already added to the checkpointer\""},"value":"Gauge already added to the checkpointer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fc8150c76d46c4a5a2ae309b99e2a88f1e561c5ed068162b1fd62c4debeb74ef","typeString":"literal_string \"Gauge already added to the checkpointer\""}],"id":15846,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10262:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10262:85:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15856,"nodeType":"ExpressionStatement","src":"10262:85:90"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15858,"name":"isGaugeTypeVerified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"10802:19:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"arguments":[{"id":15866,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15822,"src":"10898:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10890:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15864,"name":"address","nodeType":"ElementaryTypeName","src":"10890:7:90","typeDescriptions":{}}},"id":15867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10890:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":15861,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15794,"src":"10860:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":15859,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"10825:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getFactoryForGaugeType","nodeType":"MemberAccess","referencedDeclaration":706,"src":"10825:34:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_string_memory_ptr_$returns$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"function (string memory) view external returns (contract ILiquidityGaugeFactory)"}},"id":15862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10825:45:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":15863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isGaugeFromFactory","nodeType":"MemberAccess","referencedDeclaration":940,"src":"10825:64:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":15868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10825:80:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10802:103:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520646f6573206e6f7420636f72726573706f6e6420746f207468652073656c65637465642074797065","id":15870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10923:48:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d95f386beaab6f41230e0b55137df6a9cda6d83f88495685cf04184d4a5c90","typeString":"literal_string \"Gauge does not correspond to the selected type\""},"value":"Gauge does not correspond to the selected type"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_24d95f386beaab6f41230e0b55137df6a9cda6d83f88495685cf04184d4a5c90","typeString":"literal_string \"Gauge does not correspond to the selected type\""}],"id":15857,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10777:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10777:208:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15872,"nodeType":"ExpressionStatement","src":"10777:208:90"},{"eventCall":{"arguments":[{"id":15876,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15822,"src":"11044:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},{"id":15877,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15794,"src":"11051:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":15878,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15794,"src":"11062:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":15873,"name":"IStakelessGaugeCheckpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"11005:27:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGaugeCheckpointer_$1417_$","typeString":"type(contract IStakelessGaugeCheckpointer)"}},"id":15875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"GaugeAdded","nodeType":"MemberAccess","referencedDeclaration":1254,"src":"11005:38:90","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IStakelessGauge_$1239_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (contract IStakelessGauge,string memory,string memory)"}},"id":15879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11005:67:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15880,"nodeType":"EmitStatement","src":"11000:72:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15814,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15811,"src":"9811:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15815,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15797,"src":"9815:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"}},"id":15816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9815:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9811:17:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15882,"initializationExpression":{"assignments":[15811],"declarations":[{"constant":false,"id":15811,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15882,"src":"9796:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15810,"name":"uint256","nodeType":"ElementaryTypeName","src":"9796:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15813,"initialValue":{"hexValue":"30","id":15812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9808:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9796:13:90"},"loopExpression":{"expression":{"id":15819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9830:3:90","subExpression":{"id":15818,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15811,"src":"9830:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15820,"nodeType":"ExpressionStatement","src":"9830:3:90"},"nodeType":"ForStatement","src":"9791:1292:90"}]},"id":15884,"implemented":true,"kind":"function","modifiers":[],"name":"_addGauges","nodeType":"FunctionDefinition","parameters":{"id":15800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15794,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15884,"src":"9587:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15793,"name":"string","nodeType":"ElementaryTypeName","src":"9587:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15797,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15884,"src":"9620:33:90","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":15795,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"9620:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15796,"nodeType":"ArrayTypeName","src":"9620:17:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"},{"constant":false,"id":15799,"mutability":"mutable","name":"isGaugeTypeVerified","nodeType":"VariableDeclaration","scope":15884,"src":"9663:24:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15798,"name":"bool","nodeType":"ElementaryTypeName","src":"9663:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9577:116:90"},"returnParameters":{"id":15801,"nodeType":"ParameterList","parameters":[],"src":"9703:0:90"},"scope":16300,"src":"9558:1531:90","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15907,"nodeType":"Block","src":"11340:329:90","statements":[{"clauses":[{"block":{"id":15900,"nodeType":"Block","src":"11587:36:90","statements":[{"expression":{"id":15898,"name":"cost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15896,"src":"11608:4:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15891,"id":15899,"nodeType":"Return","src":"11601:11:90"}]},"errorName":"","id":15901,"nodeType":"TryCatchClause","parameters":{"id":15897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15896,"mutability":"mutable","name":"cost","nodeType":"VariableDeclaration","scope":15901,"src":"11573:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15895,"name":"uint256","nodeType":"ElementaryTypeName","src":"11573:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11572:14:90"},"src":"11564:59:90"},{"block":{"id":15904,"nodeType":"Block","src":"11630:33:90","statements":[{"expression":{"hexValue":"30","id":15902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11651:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":15891,"id":15903,"nodeType":"Return","src":"11644:8:90"}]},"errorName":"","id":15905,"nodeType":"TryCatchClause","src":"11624:39:90"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15892,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15887,"src":"11537:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTotalBridgeCost","nodeType":"MemberAccess","referencedDeclaration":1238,"src":"11537:24:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":15894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11537:26:90","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15906,"nodeType":"TryStatement","src":"11533:130:90"}]},"documentation":{"id":15885,"nodeType":"StructuredDocumentation","src":"11095:155:90","text":" @dev Malicious contracts are ruled out at this stage: gauges shall be validated in external functions before\n reaching this point."},"id":15908,"implemented":true,"kind":"function","modifiers":[],"name":"_getSingleBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":15888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15887,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15908,"src":"11285:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15886,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"11285:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"11284:23:90"},"returnParameters":{"id":15891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15890,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15908,"src":"11331:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15889,"name":"uint256","nodeType":"ElementaryTypeName","src":"11331:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11330:9:90"},"scope":16300,"src":"11255:414:90","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15996,"nodeType":"Block","src":"11835:1567:90","statements":[{"assignments":[15918],"declarations":[{"constant":false,"id":15918,"mutability":"mutable","name":"currentPeriod","nodeType":"VariableDeclaration","scope":15996,"src":"11845:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15917,"name":"uint256","nodeType":"ElementaryTypeName","src":"11845:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15921,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15919,"name":"_roundDownBlockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16299,"src":"11869:24:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11869:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11845:50:90"},{"assignments":[15923],"declarations":[{"constant":false,"id":15923,"mutability":"mutable","name":"gaugeCount","nodeType":"VariableDeclaration","scope":15996,"src":"11905:18:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15922,"name":"uint256","nodeType":"ElementaryTypeName","src":"11905:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15929,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":15924,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"11926:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":15926,"indexExpression":{"id":15925,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15910,"src":"11934:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11926:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":15927,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6847,"src":"11926:25:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":15928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11926:27:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11905:48:90"},{"assignments":[15933],"declarations":[{"constant":false,"id":15933,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15996,"src":"11963:39:90","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":15932,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"11963:24:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"id":15937,"initialValue":{"baseExpression":{"id":15934,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"12005:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":15936,"indexExpression":{"id":15935,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15910,"src":"12013:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12005:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"nodeType":"VariableDeclarationStatement","src":"11963:60:90"},{"body":{"id":15994,"nodeType":"Block","src":"12075:1321:90","statements":[{"assignments":[15949],"declarations":[{"constant":false,"id":15949,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15994,"src":"12089:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15948,"name":"address","nodeType":"ElementaryTypeName","src":"12089:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":15954,"initialValue":{"arguments":[{"id":15952,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15939,"src":"12125:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15950,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15933,"src":"12105:6:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":15951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"unchecked_at","nodeType":"MemberAccess","referencedDeclaration":6889,"src":"12105:19:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":15953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12105:22:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12089:38:90"},{"assignments":[15956],"declarations":[{"constant":false,"id":15956,"mutability":"mutable","name":"isGaugeUpdated","nodeType":"VariableDeclaration","scope":15994,"src":"12691:19:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15955,"name":"bool","nodeType":"ElementaryTypeName","src":"12691:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":15963,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":15959,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15949,"src":"12742:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15957,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15229,"src":"12713:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":15958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"time_weight","nodeType":"MemberAccess","referencedDeclaration":820,"src":"12713:28:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12713:35:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":15961,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15918,"src":"12752:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12713:52:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"12691:74:90"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15964,"name":"isGaugeUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15956,"src":"12783:14:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":15967,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15949,"src":"12840:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15968,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15918,"src":"12847:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15965,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15229,"src":"12801:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":15966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gauge_relative_weight","nodeType":"MemberAccess","referencedDeclaration":758,"src":"12801:38:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view external returns (uint256)"}},"id":15969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12801:60:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15970,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15912,"src":"12864:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12801:80:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12783:98:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15975,"nodeType":"IfStatement","src":"12779:145:90","trueBody":{"id":15974,"nodeType":"Block","src":"12883:41:90","statements":[{"id":15973,"nodeType":"Continue","src":"12901:8:90"}]}},{"assignments":[15977],"declarations":[{"constant":false,"id":15977,"mutability":"mutable","name":"gaugeBridgeCost","nodeType":"VariableDeclaration","scope":15994,"src":"12938:23:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15976,"name":"uint256","nodeType":"ElementaryTypeName","src":"12938:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15983,"initialValue":{"arguments":[{"arguments":[{"id":15980,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15949,"src":"13001:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15979,"name":"IStakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"12985:15:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGauge_$1239_$","typeString":"type(contract IStakelessGauge)"}},"id":15981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12985:22:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15978,"name":"_getSingleBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15908,"src":"12964:20:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IStakelessGauge_$1239_$returns$_t_uint256_$","typeString":"function (contract IStakelessGauge) view returns (uint256)"}},"id":15982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12964:44:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12938:70:90"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15984,"name":"gaugeBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15977,"src":"13126:15:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13145:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13126:20:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15989,"nodeType":"IfStatement","src":"13122:64:90","trueBody":{"id":15988,"nodeType":"Block","src":"13148:38:90","statements":[{"id":15987,"nodeType":"Break","src":"13166:5:90"}]}},{"expression":{"id":15992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15990,"name":"totalCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15915,"src":"13357:9:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":15991,"name":"gaugeBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15977,"src":"13370:15:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13357:28:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15993,"nodeType":"ExpressionStatement","src":"13357:28:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15942,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15939,"src":"12054:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15943,"name":"gaugeCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15923,"src":"12058:10:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12054:14:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15995,"initializationExpression":{"assignments":[15939],"declarations":[{"constant":false,"id":15939,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15995,"src":"12039:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15938,"name":"uint256","nodeType":"ElementaryTypeName","src":"12039:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15941,"initialValue":{"hexValue":"30","id":15940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12051:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12039:13:90"},"loopExpression":{"expression":{"id":15946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"12070:3:90","subExpression":{"id":15945,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15939,"src":"12072:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15947,"nodeType":"ExpressionStatement","src":"12070:3:90"},"nodeType":"ForStatement","src":"12034:1362:90"}]},"id":15997,"implemented":true,"kind":"function","modifiers":[],"name":"_getGaugeTypeTotalBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":15913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15910,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15997,"src":"11713:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15909,"name":"string","nodeType":"ElementaryTypeName","src":"11713:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15912,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":15997,"src":"11738:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15911,"name":"uint256","nodeType":"ElementaryTypeName","src":"11738:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11712:52:90"},"returnParameters":{"id":15916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15915,"mutability":"mutable","name":"totalCost","nodeType":"VariableDeclaration","scope":15997,"src":"11812:17:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15914,"name":"uint256","nodeType":"ElementaryTypeName","src":"11812:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11811:19:90"},"scope":16300,"src":"11675:1727:90","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16033,"nodeType":"Block","src":"13572:213:90","statements":[{"body":{"id":16031,"nodeType":"Block","src":"13630:149:90","statements":[{"assignments":[16019],"declarations":[{"constant":false,"id":16019,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":16031,"src":"13644:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16018,"name":"string","nodeType":"ElementaryTypeName","src":"13644:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":16023,"initialValue":{"baseExpression":{"id":16020,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16000,"src":"13670:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":16022,"indexExpression":{"id":16021,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16008,"src":"13681:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13670:13:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"13644:39:90"},{"expression":{"id":16029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16024,"name":"totalCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16005,"src":"13697:9:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":16026,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16019,"src":"13739:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":16027,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16002,"src":"13750:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16025,"name":"_getGaugeTypeTotalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15997,"src":"13710:28:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (string memory,uint256) view returns (uint256)"}},"id":16028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13710:58:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13697:71:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16030,"nodeType":"ExpressionStatement","src":"13697:71:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16011,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16008,"src":"13602:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16012,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16000,"src":"13606:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":16013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13606:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13602:21:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16032,"initializationExpression":{"assignments":[16008],"declarations":[{"constant":false,"id":16008,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":16032,"src":"13587:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16007,"name":"uint256","nodeType":"ElementaryTypeName","src":"13587:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16010,"initialValue":{"hexValue":"30","id":16009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13599:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13587:13:90"},"loopExpression":{"expression":{"id":16016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"13625:3:90","subExpression":{"id":16015,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16008,"src":"13627:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16017,"nodeType":"ExpressionStatement","src":"13625:3:90"},"nodeType":"ForStatement","src":"13582:197:90"}]},"id":16034,"implemented":true,"kind":"function","modifiers":[],"name":"_getGaugeTypesTotalBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":16003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16000,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":16034,"src":"13447:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15998,"name":"string","nodeType":"ElementaryTypeName","src":"13447:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15999,"nodeType":"ArrayTypeName","src":"13447:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16002,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":16034,"src":"13475:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16001,"name":"uint256","nodeType":"ElementaryTypeName","src":"13475:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13446:55:90"},"returnParameters":{"id":16006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16005,"mutability":"mutable","name":"totalCost","nodeType":"VariableDeclaration","scope":16034,"src":"13549:17:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16004,"name":"uint256","nodeType":"ElementaryTypeName","src":"13549:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13548:19:90"},"scope":16300,"src":"13408:377:90","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16068,"nodeType":"Block","src":"13901:216:90","statements":[{"assignments":[16043],"declarations":[{"constant":false,"id":16043,"mutability":"mutable","name":"currentPeriod","nodeType":"VariableDeclaration","scope":16068,"src":"13911:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16042,"name":"uint256","nodeType":"ElementaryTypeName","src":"13911:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16046,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16044,"name":"_roundDownBlockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16299,"src":"13935:24:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13935:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13911:50:90"},{"body":{"id":16066,"nodeType":"Block","src":"14020:91:90","statements":[{"expression":{"arguments":[{"baseExpression":{"id":16059,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16037,"src":"14052:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":16061,"indexExpression":{"id":16060,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16048,"src":"14063:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14052:13:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":16062,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16039,"src":"14067:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16063,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16043,"src":"14086:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16058,"name":"_checkpointGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16174,"src":"14034:17:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256,uint256)"}},"id":16064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14034:66:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16065,"nodeType":"ExpressionStatement","src":"14034:66:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16051,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16048,"src":"13992:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16052,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16037,"src":"13996:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":16053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13996:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13992:21:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16067,"initializationExpression":{"assignments":[16048],"declarations":[{"constant":false,"id":16048,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":16067,"src":"13977:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16047,"name":"uint256","nodeType":"ElementaryTypeName","src":"13977:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16050,"initialValue":{"hexValue":"30","id":16049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13989:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13977:13:90"},"loopExpression":{"expression":{"id":16056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"14015:3:90","subExpression":{"id":16055,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16048,"src":"14017:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16057,"nodeType":"ExpressionStatement","src":"14015:3:90"},"nodeType":"ForStatement","src":"13972:139:90"}]},"id":16069,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointGaugesAboveRelativeWeight","nodeType":"FunctionDefinition","parameters":{"id":16040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16037,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":16069,"src":"13837:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16035,"name":"string","nodeType":"ElementaryTypeName","src":"13837:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16036,"nodeType":"ArrayTypeName","src":"13837:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16039,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":16069,"src":"13865:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16038,"name":"uint256","nodeType":"ElementaryTypeName","src":"13865:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13836:55:90"},"returnParameters":{"id":16041,"nodeType":"ParameterList","parameters":[],"src":"13901:0:90"},"scope":16300,"src":"13791:326:90","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":16173,"nodeType":"Block","src":"14729:1812:90","statements":[{"assignments":[16082],"declarations":[{"constant":false,"id":16082,"mutability":"mutable","name":"typeGauges","nodeType":"VariableDeclaration","scope":16173,"src":"14739:43:90","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":16081,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"14739:24:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"id":16086,"initialValue":{"baseExpression":{"id":16083,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"14785:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":16085,"indexExpression":{"id":16084,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"14793:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14785:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"nodeType":"VariableDeclarationStatement","src":"14739:64:90"},{"assignments":[16088],"declarations":[{"constant":false,"id":16088,"mutability":"mutable","name":"totalTypeGauges","nodeType":"VariableDeclaration","scope":16173,"src":"14814:23:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16087,"name":"uint256","nodeType":"ElementaryTypeName","src":"14814:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16092,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16089,"name":"typeGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16082,"src":"14840:10:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":16090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6847,"src":"14840:17:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":16091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14840:19:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14814:45:90"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16093,"name":"totalTypeGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16088,"src":"14873:15:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14892:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14873:20:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16098,"nodeType":"IfStatement","src":"14869:116:90","trueBody":{"id":16097,"nodeType":"Block","src":"14895:90:90","statements":[{"functionReturnParameters":16078,"id":16096,"nodeType":"Return","src":"14968:7:90"}]}},{"assignments":[16100],"declarations":[{"constant":false,"id":16100,"mutability":"mutable","name":"isGaugeTypeCostless","nodeType":"VariableDeclaration","scope":16173,"src":"15355:24:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16099,"name":"bool","nodeType":"ElementaryTypeName","src":"15355:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":16112,"initialValue":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":16105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15444:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":16103,"name":"typeGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16082,"src":"15420:10:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":16104,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"unchecked_at","nodeType":"MemberAccess","referencedDeclaration":6889,"src":"15420:23:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":16106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15420:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16102,"name":"IStakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"15404:15:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGauge_$1239_$","typeString":"type(contract IStakelessGauge)"}},"id":16107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15404:43:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":16101,"name":"_getSingleBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15908,"src":"15383:20:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IStakelessGauge_$1239_$returns$_t_uint256_$","typeString":"function (contract IStakelessGauge) view returns (uint256)"}},"id":16108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15383:65:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15452:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15383:70:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":16111,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15382:72:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"15355:99:90"},{"assignments":[16118],"declarations":[{"constant":false,"id":16118,"mutability":"mutable","name":"performCheckpoint","nodeType":"VariableDeclaration","scope":16173,"src":"15687:52:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"},"typeName":{"id":16117,"nodeType":"FunctionTypeName","parameterTypes":{"id":16115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16114,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16117,"src":"15696:15:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":16113,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"15696:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"15695:17:90"},"returnParameterTypes":{"id":16116,"nodeType":"ParameterList","parameters":[],"src":"15722:0:90"},"src":"15687:52:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"},"visibility":"internal"},"visibility":"internal"}],"id":16123,"initialValue":{"condition":{"id":16119,"name":"isGaugeTypeCostless","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16100,"src":"15742:19:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":16121,"name":"_checkpointPaidBridgeGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16204,"src":"15821:26:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"}},"id":16122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15742:105:90","trueExpression":{"id":16120,"name":"_checkpointCostlessBridgeGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16226,"src":"15776:30:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"}},"typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"}},"nodeType":"VariableDeclarationStatement","src":"15687:160:90"},{"body":{"id":16171,"nodeType":"Block","src":"15904:631:90","statements":[{"assignments":[16135],"declarations":[{"constant":false,"id":16135,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":16171,"src":"15918:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16134,"name":"address","nodeType":"ElementaryTypeName","src":"15918:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":16140,"initialValue":{"arguments":[{"id":16138,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16125,"src":"15958:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16136,"name":"typeGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16082,"src":"15934:10:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":16137,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"unchecked_at","nodeType":"MemberAccess","referencedDeclaration":6889,"src":"15934:23:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":16139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15934:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15918:42:90"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16143,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16135,"src":"16174:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16141,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15229,"src":"16145:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":16142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"time_weight","nodeType":"MemberAccess","referencedDeclaration":820,"src":"16145:28:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":16144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16145:35:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16145,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16076,"src":"16183:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16145:51:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16154,"nodeType":"IfStatement","src":"16141:130:90","trueBody":{"id":16153,"nodeType":"Block","src":"16198:73:90","statements":[{"expression":{"arguments":[{"id":16150,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16135,"src":"16250:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16147,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15229,"src":"16216:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":16149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"checkpoint_gauge","nodeType":"MemberAccess","referencedDeclaration":749,"src":"16216:33:90","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":16151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16216:40:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16152,"nodeType":"ExpressionStatement","src":"16216:40:90"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16157,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16135,"src":"16385:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16158,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16076,"src":"16392:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16155,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15229,"src":"16346:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":16156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gauge_relative_weight","nodeType":"MemberAccess","referencedDeclaration":758,"src":"16346:38:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view external returns (uint256)"}},"id":16159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16346:60:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16160,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16074,"src":"16409:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16346:80:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16164,"nodeType":"IfStatement","src":"16342:127:90","trueBody":{"id":16163,"nodeType":"Block","src":"16428:41:90","statements":[{"id":16162,"nodeType":"Continue","src":"16446:8:90"}]}},{"expression":{"arguments":[{"arguments":[{"id":16167,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16135,"src":"16517:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16166,"name":"IStakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"16501:15:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGauge_$1239_$","typeString":"type(contract IStakelessGauge)"}},"id":16168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16501:22:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":16165,"name":"performCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16118,"src":"16483:17:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"}},"id":16169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16483:41:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16170,"nodeType":"ExpressionStatement","src":"16483:41:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16128,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16125,"src":"15878:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16129,"name":"totalTypeGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16088,"src":"15882:15:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15878:19:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16172,"initializationExpression":{"assignments":[16125],"declarations":[{"constant":false,"id":16125,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":16172,"src":"15863:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16124,"name":"uint256","nodeType":"ElementaryTypeName","src":"15863:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16127,"initialValue":{"hexValue":"30","id":16126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15875:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15863:13:90"},"loopExpression":{"expression":{"id":16132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"15899:3:90","subExpression":{"id":16131,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16125,"src":"15901:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16133,"nodeType":"ExpressionStatement","src":"15899:3:90"},"nodeType":"ForStatement","src":"15858:677:90"}]},"documentation":{"id":16070,"nodeType":"StructuredDocumentation","src":"14123:461:90","text":" @dev Performs checkpoints for all gauges of the given type whose relative weight is at least the specified one.\n @param gaugeType Type of the gauges to checkpoint.\n @param minRelativeWeight Threshold to filter out gauges below it.\n @param currentPeriod Current block time rounded down to the start of the previous week.\n This method doesn't check whether the caller transferred enough ETH to cover the whole operation."},"id":16174,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointGauges","nodeType":"FunctionDefinition","parameters":{"id":16077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16072,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":16174,"src":"14625:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16071,"name":"string","nodeType":"ElementaryTypeName","src":"14625:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":16074,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":16174,"src":"14658:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16073,"name":"uint256","nodeType":"ElementaryTypeName","src":"14658:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16076,"mutability":"mutable","name":"currentPeriod","nodeType":"VariableDeclaration","scope":16174,"src":"14693:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16075,"name":"uint256","nodeType":"ElementaryTypeName","src":"14693:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14615:105:90"},"returnParameters":{"id":16078,"nodeType":"ParameterList","parameters":[],"src":"14729:0:90"},"scope":16300,"src":"14589:1952:90","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":16203,"nodeType":"Block","src":"16716:257:90","statements":[{"assignments":[16181],"declarations":[{"constant":false,"id":16181,"mutability":"mutable","name":"checkpointCost","nodeType":"VariableDeclaration","scope":16203,"src":"16726:22:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16180,"name":"uint256","nodeType":"ElementaryTypeName","src":"16726:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16185,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16182,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16177,"src":"16751:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":16183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTotalBridgeCost","nodeType":"MemberAccess","referencedDeclaration":1238,"src":"16751:24:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":16184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16751:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16726:51:90"},{"expression":{"arguments":[{"arguments":[{"id":16193,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16177,"src":"16877:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":16192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16869:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16191,"name":"address","nodeType":"ElementaryTypeName","src":"16869:7:90","typeDescriptions":{}}},"id":16194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16869:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":16197,"name":"IStakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"16920:15:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGauge_$1239_$","typeString":"type(contract IStakelessGauge)"}},"id":16198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"checkpoint","nodeType":"MemberAccess","referencedDeclaration":1226,"src":"16920:26:90","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$__$returns$_t_bool_$","typeString":"function IStakelessGauge.checkpoint() payable returns (bool)"}},"id":16199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"16920:35:90","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":16195,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16897:3:90","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"16897:22:90","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":16200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16897:59:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16186,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15225,"src":"16788:28:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":16188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"performAction","nodeType":"MemberAccess","referencedDeclaration":48,"src":"16788:42:90","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":16190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":16189,"name":"checkpointCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16181,"src":"16839:14:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"16788:67:90","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$value","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":16201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16788:178:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16202,"nodeType":"ExpressionStatement","src":"16788:178:90"}]},"documentation":{"id":16175,"nodeType":"StructuredDocumentation","src":"16547:97:90","text":" @dev Calls `checkpoint` on a paid gauge, forwarding ETH to cover bridge costs."},"id":16204,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointPaidBridgeGauge","nodeType":"FunctionDefinition","parameters":{"id":16178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16177,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":16204,"src":"16685:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":16176,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"16685:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"16684:23:90"},"returnParameters":{"id":16179,"nodeType":"ParameterList","parameters":[],"src":"16716:0:90"},"scope":16300,"src":"16649:324:90","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":16225,"nodeType":"Block","src":"17144:170:90","statements":[{"expression":{"arguments":[{"arguments":[{"id":16215,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16207,"src":"17218:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":16214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17210:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16213,"name":"address","nodeType":"ElementaryTypeName","src":"17210:7:90","typeDescriptions":{}}},"id":16216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17210:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":16219,"name":"IStakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"17261:15:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGauge_$1239_$","typeString":"type(contract IStakelessGauge)"}},"id":16220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"checkpoint","nodeType":"MemberAccess","referencedDeclaration":1226,"src":"17261:26:90","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$__$returns$_t_bool_$","typeString":"function IStakelessGauge.checkpoint() payable returns (bool)"}},"id":16221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"17261:35:90","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":16217,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"17238:3:90","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"17238:22:90","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":16222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17238:59:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16210,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15225,"src":"17154:28:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":16212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"performAction","nodeType":"MemberAccess","referencedDeclaration":48,"src":"17154:42:90","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":16223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17154:153:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16224,"nodeType":"ExpressionStatement","src":"17154:153:90"}]},"documentation":{"id":16205,"nodeType":"StructuredDocumentation","src":"16979:89:90","text":" @dev Calls `checkpoint` on a costless gauge; does not forward any ETH."},"id":16226,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointCostlessBridgeGauge","nodeType":"FunctionDefinition","parameters":{"id":16208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16207,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":16226,"src":"17113:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":16206,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"17113:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"17112:23:90"},"returnParameters":{"id":16209,"nodeType":"ParameterList","parameters":[],"src":"17144:0:90"},"scope":16300,"src":"17073:241:90","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":16255,"nodeType":"Block","src":"17486:258:90","statements":[{"assignments":[16233],"declarations":[{"constant":false,"id":16233,"mutability":"mutable","name":"checkpointCost","nodeType":"VariableDeclaration","scope":16255,"src":"17496:22:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16232,"name":"uint256","nodeType":"ElementaryTypeName","src":"17496:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16237,"initialValue":{"arguments":[{"id":16235,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16229,"src":"17542:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":16234,"name":"_getSingleBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15908,"src":"17521:20:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IStakelessGauge_$1239_$returns$_t_uint256_$","typeString":"function (contract IStakelessGauge) view returns (uint256)"}},"id":16236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17521:27:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17496:52:90"},{"expression":{"arguments":[{"arguments":[{"id":16245,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16229,"src":"17648:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":16244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17640:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16243,"name":"address","nodeType":"ElementaryTypeName","src":"17640:7:90","typeDescriptions":{}}},"id":16246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17640:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":16249,"name":"IStakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"17691:15:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGauge_$1239_$","typeString":"type(contract IStakelessGauge)"}},"id":16250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"checkpoint","nodeType":"MemberAccess","referencedDeclaration":1226,"src":"17691:26:90","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$__$returns$_t_bool_$","typeString":"function IStakelessGauge.checkpoint() payable returns (bool)"}},"id":16251,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"17691:35:90","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":16247,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"17668:3:90","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16248,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"17668:22:90","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":16252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17668:59:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16238,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15225,"src":"17559:28:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":16240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"performAction","nodeType":"MemberAccess","referencedDeclaration":48,"src":"17559:42:90","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":16242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":16241,"name":"checkpointCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16233,"src":"17610:14:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"17559:67:90","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$value","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":16253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17559:178:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16254,"nodeType":"ExpressionStatement","src":"17559:178:90"}]},"documentation":{"id":16227,"nodeType":"StructuredDocumentation","src":"17320:97:90","text":" @dev Performs checkpoint for any gauge, attempting to get the cost beforehand."},"id":16256,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointSingleGauge","nodeType":"FunctionDefinition","parameters":{"id":16230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16229,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":16256,"src":"17454:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":16228,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"17454:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"17453:23:90"},"returnParameters":{"id":16231,"nodeType":"ParameterList","parameters":[],"src":"17486:0:90"},"scope":16300,"src":"17422:322:90","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":16281,"nodeType":"Block","src":"17911:271:90","statements":[{"assignments":[16261],"declarations":[{"constant":false,"id":16261,"mutability":"mutable","name":"remainingBalance","nodeType":"VariableDeclaration","scope":16281,"src":"18020:24:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16260,"name":"uint256","nodeType":"ElementaryTypeName","src":"18020:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16267,"initialValue":{"expression":{"arguments":[{"id":16264,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"18055:4:90","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGaugeCheckpointer_$16300","typeString":"contract StakelessGaugeCheckpointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StakelessGaugeCheckpointer_$16300","typeString":"contract StakelessGaugeCheckpointer"}],"id":16263,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18047:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16262,"name":"address","nodeType":"ElementaryTypeName","src":"18047:7:90","typeDescriptions":{}}},"id":16265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18047:13:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"18047:21:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18020:48:90"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16268,"name":"remainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16261,"src":"18082:16:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":16269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18101:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18082:20:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16280,"nodeType":"IfStatement","src":"18078:98:90","trueBody":{"id":16279,"nodeType":"Block","src":"18104:72:90","statements":[{"expression":{"arguments":[{"expression":{"id":16274,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"18136:3:90","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"18136:10:90","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":16276,"name":"remainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16261,"src":"18148:16:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16271,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"18118:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$5850_$","typeString":"type(library Address)"}},"id":16273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":5740,"src":"18118:17:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":16277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18118:47:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16278,"nodeType":"ExpressionStatement","src":"18118:47:90"}]}}]},"documentation":{"id":16257,"nodeType":"StructuredDocumentation","src":"17750:113:90","text":" @dev Send back any leftover ETH to the caller if there is an existing balance in the contract."},"id":16282,"implemented":true,"kind":"function","modifiers":[],"name":"_returnLeftoverEthIfAny","nodeType":"FunctionDefinition","parameters":{"id":16258,"nodeType":"ParameterList","parameters":[],"src":"17900:2:90"},"returnParameters":{"id":16259,"nodeType":"ParameterList","parameters":[],"src":"17911:0:90"},"scope":16300,"src":"17868:314:90","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":16298,"nodeType":"Block","src":"18426:181:90","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16288,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"18560:5:90","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":16289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"18560:15:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31","id":16290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18578:7:90","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"18560:25:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18588:1:90","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18560:29:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":16294,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18559:31:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31","id":16295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18593:7:90","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"18559:41:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16287,"id":16297,"nodeType":"Return","src":"18552:48:90"}]},"documentation":{"id":16283,"nodeType":"StructuredDocumentation","src":"18188:166:90","text":" @dev Rounds the provided timestamp down to the beginning of the previous week (Thurs 00:00 UTC) with respect\n to the current block timestamp."},"id":16299,"implemented":true,"kind":"function","modifiers":[],"name":"_roundDownBlockTimestamp","nodeType":"FunctionDefinition","parameters":{"id":16284,"nodeType":"ParameterList","parameters":[],"src":"18392:2:90"},"returnParameters":{"id":16287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16286,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16299,"src":"18417:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16285,"name":"uint256","nodeType":"ElementaryTypeName","src":"18417:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18416:9:90"},"scope":16300,"src":"18359:248:90","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":16301,"src":"1660:16949:90"}],"src":"688:17922:90"},"id":90},"contracts/gauges/arbitrum/ArbitrumRootGauge.sol":{"ast":{"absolutePath":"contracts/gauges/arbitrum/ArbitrumRootGauge.sol","exportedSymbols":{"ArbitrumRootGauge":[16477]},"id":16478,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16302,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:91"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol","id":16303,"nodeType":"ImportDirective","scope":16478,"sourceUnit":21,"src":"713:90:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":16304,"nodeType":"ImportDirective","scope":16478,"sourceUnit":7342,"src":"804:79:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":16305,"nodeType":"ImportDirective","scope":16478,"sourceUnit":15197,"src":"885:31:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/arbitrum/IGatewayRouter.sol","file":"./IGatewayRouter.sol","id":16306,"nodeType":"ImportDirective","scope":16478,"sourceUnit":16655,"src":"917:30:91","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16307,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"979:14:91","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":16308,"nodeType":"InheritanceSpecifier","src":"979:14:91"}],"contractDependencies":[928,1239,7187,15196],"contractKind":"contract","fullyImplemented":true,"id":16477,"linearizedBaseContracts":[16477,15196,7187,1239,928],"name":"ArbitrumRootGauge","nodeType":"ContractDefinition","nodes":[{"id":16311,"libraryName":{"id":16309,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"1006:9:91","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1000:27:91","typeName":{"id":16310,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1020:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":false,"id":16313,"mutability":"immutable","name":"_gateway","nodeType":"VariableDeclaration","scope":16477,"src":"1033:34:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16312,"name":"address","nodeType":"ElementaryTypeName","src":"1033:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":16315,"mutability":"immutable","name":"_gatewayRouter","nodeType":"VariableDeclaration","scope":16477,"src":"1073:47:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"},"typeName":{"id":16314,"name":"IGatewayRouter","nodeType":"UserDefinedTypeName","referencedDeclaration":16654,"src":"1073:14:91","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"visibility":"private"},{"constant":false,"id":16317,"mutability":"immutable","name":"_factory","nodeType":"VariableDeclaration","scope":16477,"src":"1126:47:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"},"typeName":{"id":16316,"name":"IArbitrumFeeProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":20,"src":"1126:20:91","typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"}},"visibility":"private"},{"constant":false,"id":16319,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":16477,"src":"1180:26:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16318,"name":"address","nodeType":"ElementaryTypeName","src":"1180:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":16352,"nodeType":"Block","src":"1309:181:91","statements":[{"expression":{"id":16339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16329,"name":"_gateway","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16313,"src":"1319:8:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16334,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16321,"src":"1363:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"id":16335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getBalancerToken","nodeType":"MemberAccess","referencedDeclaration":80,"src":"1363:23:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2447_$","typeString":"function () view external returns (contract IERC20)"}},"id":16336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1363:25:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":16333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1355:7:91","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16332,"name":"address","nodeType":"ElementaryTypeName","src":"1355:7:91","typeDescriptions":{}}},"id":16337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1355:34:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16330,"name":"gatewayRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16323,"src":"1330:13:91","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"id":16331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getGateway","nodeType":"MemberAccess","referencedDeclaration":16653,"src":"1330:24:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_address_$","typeString":"function (address) view external returns (address)"}},"id":16338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1330:60:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1319:71:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16340,"nodeType":"ExpressionStatement","src":"1319:71:91"},{"expression":{"id":16343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16341,"name":"_gatewayRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16315,"src":"1400:14:91","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16342,"name":"gatewayRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16323,"src":"1417:13:91","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"src":"1400:30:91","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"id":16344,"nodeType":"ExpressionStatement","src":"1400:30:91"},{"expression":{"id":16350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16345,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16317,"src":"1440:8:91","typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":16347,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1472:3:91","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1472:10:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":16346,"name":"IArbitrumFeeProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"1451:20:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IArbitrumFeeProvider_$20_$","typeString":"type(contract IArbitrumFeeProvider)"}},"id":16349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1451:32:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"}},"src":"1440:43:91","typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"}},"id":16351,"nodeType":"ExpressionStatement","src":"1440:43:91"}]},"id":16353,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":16326,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16321,"src":"1301:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":16327,"modifierName":{"id":16325,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"1286:14:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"1286:22:91"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":16324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16321,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":16353,"src":"1225:29:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":16320,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1225:22:91","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":16323,"mutability":"mutable","name":"gatewayRouter","nodeType":"VariableDeclaration","scope":16353,"src":"1256:28:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"},"typeName":{"id":16322,"name":"IGatewayRouter","nodeType":"UserDefinedTypeName","referencedDeclaration":16654,"src":"1256:14:91","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"visibility":"internal"}],"src":"1224:61:91"},"returnParameters":{"id":16328,"nodeType":"ParameterList","parameters":[],"src":"1309:0:91"},"scope":16477,"src":"1213:277:91","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":16368,"nodeType":"Block","src":"1571:152:91","statements":[{"expression":{"arguments":[{"id":16361,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16357,"src":"1665:17:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16360,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"1643:21:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":16362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1643:40:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16363,"nodeType":"ExpressionStatement","src":"1643:40:91"},{"expression":{"id":16366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16364,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16319,"src":"1694:10:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16365,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16355,"src":"1707:9:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1694:22:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16367,"nodeType":"ExpressionStatement","src":"1694:22:91"}]},"functionSelector":"cd6dc687","id":16369,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":16358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16355,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16369,"src":"1516:17:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16354,"name":"address","nodeType":"ElementaryTypeName","src":"1516:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16357,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":16369,"src":"1535:25:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16356,"name":"uint256","nodeType":"ElementaryTypeName","src":"1535:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1515:46:91"},"returnParameters":{"id":16359,"nodeType":"ParameterList","parameters":[],"src":"1571:0:91"},"scope":16477,"src":"1496:227:91","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":16377,"nodeType":"Block","src":"1794:34:91","statements":[{"expression":{"id":16375,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16319,"src":"1811:10:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":16374,"id":16376,"nodeType":"Return","src":"1804:17:91"}]},"functionSelector":"1b88094d","id":16378,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":16371,"nodeType":"OverrideSpecifier","overrides":[],"src":"1767:8:91"},"parameters":{"id":16370,"nodeType":"ParameterList","parameters":[],"src":"1750:2:91"},"returnParameters":{"id":16374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16373,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16378,"src":"1785:7:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16372,"name":"address","nodeType":"ElementaryTypeName","src":"1785:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1784:9:91"},"scope":16477,"src":"1729:99:91","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[15040],"body":{"id":16434,"nodeType":"Block","src":"1897:1374:91","statements":[{"expression":{"arguments":[{"id":16387,"name":"_gateway","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16313,"src":"2005:8:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16388,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16380,"src":"2015:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16384,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"1983:9:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":16386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"1983:21:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":16389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1983:43:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16390,"nodeType":"ExpressionStatement","src":"1983:43:91"},{"assignments":[16392,16394,16396],"declarations":[{"constant":false,"id":16392,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16434,"src":"2038:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16391,"name":"uint256","nodeType":"ElementaryTypeName","src":"2038:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16394,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16434,"src":"2056:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16393,"name":"uint256","nodeType":"ElementaryTypeName","src":"2056:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16396,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":16434,"src":"2074:25:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16395,"name":"uint256","nodeType":"ElementaryTypeName","src":"2074:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16400,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16397,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16317,"src":"2103:8:91","typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"}},"id":16398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getArbitrumFees","nodeType":"MemberAccess","referencedDeclaration":10,"src":"2103:24:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function () view external returns (uint256,uint256,uint256)"}},"id":16399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2103:26:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"2037:92:91"},{"assignments":[16402],"declarations":[{"constant":false,"id":16402,"mutability":"mutable","name":"totalBridgeCost","nodeType":"VariableDeclaration","scope":16434,"src":"2139:23:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16401,"name":"uint256","nodeType":"ElementaryTypeName","src":"2139:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16408,"initialValue":{"arguments":[{"id":16404,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16392,"src":"2185:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16405,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16394,"src":"2195:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16406,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16396,"src":"2205:17:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16403,"name":"_getTotalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16476,"src":"2165:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":16407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2165:58:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2139:84:91"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16410,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2241:3:91","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"2241:9:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":16412,"name":"totalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16402,"src":"2254:15:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2241:28:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f7272656374206d73672e76616c756520706173736564","id":16414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2271:28:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_56d4a48d23c5e1d04e805cebfda5734ae7721ed375a1cc40426062043619622b","typeString":"literal_string \"Incorrect msg.value passed\""},"value":"Incorrect msg.value passed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_56d4a48d23c5e1d04e805cebfda5734ae7721ed375a1cc40426062043619622b","typeString":"literal_string \"Incorrect msg.value passed\""}],"id":16409,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2233:7:91","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2233:67:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16416,"nodeType":"ExpressionStatement","src":"2233:67:91"},{"expression":{"arguments":[{"id":16422,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"3106:9:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":16423,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16319,"src":"3129:10:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16424,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16380,"src":"3153:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16425,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16392,"src":"3177:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16426,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16394,"src":"3199:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":16429,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16396,"src":"3232:17:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":16430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3251:2:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":16427,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3221:3:91","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"3221:10:91","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3221:33:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16417,"name":"_gatewayRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16315,"src":"3035:14:91","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"id":16419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"outboundTransfer","nodeType":"MemberAccess","referencedDeclaration":16646,"src":"3035:31:91","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,address,uint256,uint256,uint256,bytes memory) payable external"}},"id":16421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":16420,"name":"totalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16402,"src":"3075:15:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3035:57:91","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$value","typeString":"function (contract IERC20,address,uint256,uint256,uint256,bytes memory) payable external"}},"id":16432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3035:229:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16433,"nodeType":"ExpressionStatement","src":"3035:229:91"}]},"id":16435,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":16382,"nodeType":"OverrideSpecifier","overrides":[],"src":"1888:8:91"},"parameters":{"id":16381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16380,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":16435,"src":"1859:18:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16379,"name":"uint256","nodeType":"ElementaryTypeName","src":"1859:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1858:20:91"},"returnParameters":{"id":16383,"nodeType":"ParameterList","parameters":[],"src":"1897:0:91"},"scope":16477,"src":"1834:1437:91","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[15021],"body":{"id":16457,"nodeType":"Block","src":"3348:184:91","statements":[{"assignments":[16442,16444,16446],"declarations":[{"constant":false,"id":16442,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16457,"src":"3359:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16441,"name":"uint256","nodeType":"ElementaryTypeName","src":"3359:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16444,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16457,"src":"3377:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16443,"name":"uint256","nodeType":"ElementaryTypeName","src":"3377:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16446,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":16457,"src":"3395:25:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16445,"name":"uint256","nodeType":"ElementaryTypeName","src":"3395:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16450,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16447,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16317,"src":"3424:8:91","typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"}},"id":16448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getArbitrumFees","nodeType":"MemberAccess","referencedDeclaration":10,"src":"3424:24:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function () view external returns (uint256,uint256,uint256)"}},"id":16449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3424:26:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3358:92:91"},{"expression":{"arguments":[{"id":16452,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16442,"src":"3487:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16453,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16444,"src":"3497:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16454,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16446,"src":"3507:17:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16451,"name":"_getTotalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16476,"src":"3467:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":16455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3467:58:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16440,"id":16456,"nodeType":"Return","src":"3460:65:91"}]},"functionSelector":"b0245225","id":16458,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalBridgeCost","nodeType":"FunctionDefinition","overrides":{"id":16437,"nodeType":"OverrideSpecifier","overrides":[],"src":"3321:8:91"},"parameters":{"id":16436,"nodeType":"ParameterList","parameters":[],"src":"3304:2:91"},"returnParameters":{"id":16440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16439,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16458,"src":"3339:7:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16438,"name":"uint256","nodeType":"ElementaryTypeName","src":"3339:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3338:9:91"},"scope":16477,"src":"3277:255:91","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":16475,"nodeType":"Block","src":"3692:63:91","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16469,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16460,"src":"3709:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":16470,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16462,"src":"3720:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3709:19:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":16472,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16464,"src":"3731:17:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3709:39:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16468,"id":16474,"nodeType":"Return","src":"3702:46:91"}]},"id":16476,"implemented":true,"kind":"function","modifiers":[],"name":"_getTotalBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":16465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16460,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16476,"src":"3576:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16459,"name":"uint256","nodeType":"ElementaryTypeName","src":"3576:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16462,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16476,"src":"3602:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16461,"name":"uint256","nodeType":"ElementaryTypeName","src":"3602:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16464,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":16476,"src":"3628:25:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16463,"name":"uint256","nodeType":"ElementaryTypeName","src":"3628:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3566:93:91"},"returnParameters":{"id":16468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16467,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16476,"src":"3683:7:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16466,"name":"uint256","nodeType":"ElementaryTypeName","src":"3683:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3682:9:91"},"scope":16477,"src":"3538:217:91","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":16478,"src":"949:2808:91"}],"src":"688:3070:91"},"id":91},"contracts/gauges/arbitrum/ArbitrumRootGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/arbitrum/ArbitrumRootGaugeFactory.sol","exportedSymbols":{"ArbitrumRootGaugeFactory":[16628]},"id":16629,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16479,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:92"},{"id":16480,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:92"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":16481,"nodeType":"ImportDirective","scope":16629,"sourceUnit":3052,"src":"747:65:92","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":16482,"nodeType":"ImportDirective","scope":16629,"sourceUnit":3698,"src":"814:88:92","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":16483,"nodeType":"ImportDirective","scope":16629,"sourceUnit":13897,"src":"904:33:92","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/arbitrum/ArbitrumRootGauge.sol","file":"./ArbitrumRootGauge.sol","id":16484,"nodeType":"ImportDirective","scope":16629,"sourceUnit":16478,"src":"938:33:92","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16485,"name":"IArbitrumFeeProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":20,"src":"1010:20:92","typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"}},"id":16486,"nodeType":"InheritanceSpecifier","src":"1010:20:92"},{"baseName":{"id":16487,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"1032:16:92","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":16488,"nodeType":"InheritanceSpecifier","src":"1032:16:92"},{"baseName":{"id":16489,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1050:23:92","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":16490,"nodeType":"InheritanceSpecifier","src":"1050:23:92"}],"contractDependencies":[20,941,2259,3128,3697,13896,16477],"contractKind":"contract","fullyImplemented":true,"id":16628,"linearizedBaseContracts":[16628,3697,3128,2259,13896,941,20],"name":"ArbitrumRootGaugeFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":16492,"mutability":"mutable","name":"_gasLimit","nodeType":"VariableDeclaration","scope":16628,"src":"1080:24:92","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16491,"name":"uint64","nodeType":"ElementaryTypeName","src":"1080:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"private"},{"constant":false,"id":16494,"mutability":"mutable","name":"_gasPrice","nodeType":"VariableDeclaration","scope":16628,"src":"1110:24:92","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16493,"name":"uint64","nodeType":"ElementaryTypeName","src":"1110:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"private"},{"constant":false,"id":16496,"mutability":"mutable","name":"_maxSubmissionCost","nodeType":"VariableDeclaration","scope":16628,"src":"1140:33:92","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16495,"name":"uint64","nodeType":"ElementaryTypeName","src":"1140:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"private"},{"anonymous":false,"id":16504,"name":"ArbitrumFeesModified","nodeType":"EventDefinition","parameters":{"id":16503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16498,"indexed":false,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16504,"src":"1207:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16497,"name":"uint256","nodeType":"ElementaryTypeName","src":"1207:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16500,"indexed":false,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16504,"src":"1225:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16499,"name":"uint256","nodeType":"ElementaryTypeName","src":"1225:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16502,"indexed":false,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":16504,"src":"1243:25:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16501,"name":"uint256","nodeType":"ElementaryTypeName","src":"1243:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1206:63:92"},"src":"1180:90:92"},{"body":{"id":16544,"nodeType":"Block","src":"1580:115:92","statements":[{"expression":{"id":16534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16532,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16492,"src":"1590:9:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16533,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16512,"src":"1602:8:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1590:20:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":16535,"nodeType":"ExpressionStatement","src":"1590:20:92"},{"expression":{"id":16538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16536,"name":"_gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16494,"src":"1620:9:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16537,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16514,"src":"1632:8:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1620:20:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":16539,"nodeType":"ExpressionStatement","src":"1620:20:92"},{"expression":{"id":16542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16540,"name":"_maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16496,"src":"1650:18:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16541,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16516,"src":"1671:17:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1650:38:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":16543,"nodeType":"ExpressionStatement","src":"1650:38:92"}]},"id":16545,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"id":16523,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16508,"src":"1524:6:92","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":16524,"name":"gatewayRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16510,"src":"1532:13:92","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}],"id":16522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1502:21:92","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$_t_contract$_IGatewayRouter_$16654_$returns$_t_contract$_ArbitrumRootGauge_$16477_$","typeString":"function (contract IMainnetBalancerMinter,contract IGatewayRouter) returns (contract ArbitrumRootGauge)"},"typeName":{"id":16521,"name":"ArbitrumRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":16477,"src":"1506:17:92","typeDescriptions":{"typeIdentifier":"t_contract$_ArbitrumRootGauge_$16477","typeString":"contract ArbitrumRootGauge"}}},"id":16525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1502:44:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ArbitrumRootGauge_$16477","typeString":"contract ArbitrumRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ArbitrumRootGauge_$16477","typeString":"contract ArbitrumRootGauge"}],"id":16520,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1494:7:92","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16519,"name":"address","nodeType":"ElementaryTypeName","src":"1494:7:92","typeDescriptions":{}}},"id":16526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1494:53:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":16527,"modifierName":{"id":16518,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1477:16:92","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"1477:71:92"},{"arguments":[{"id":16529,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16506,"src":"1573:5:92","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":16530,"modifierName":{"id":16528,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1549:23:92","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1549:30:92"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":16517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16506,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":16545,"src":"1297:12:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":16505,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1297:6:92","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":16508,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":16545,"src":"1319:29:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":16507,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1319:22:92","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":16510,"mutability":"mutable","name":"gatewayRouter","nodeType":"VariableDeclaration","scope":16545,"src":"1358:28:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"},"typeName":{"id":16509,"name":"IGatewayRouter","nodeType":"UserDefinedTypeName","referencedDeclaration":16654,"src":"1358:14:92","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"visibility":"internal"},{"constant":false,"id":16512,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16545,"src":"1396:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16511,"name":"uint64","nodeType":"ElementaryTypeName","src":"1396:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":16514,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16545,"src":"1421:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16513,"name":"uint64","nodeType":"ElementaryTypeName","src":"1421:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":16516,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":16545,"src":"1446:24:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16515,"name":"uint64","nodeType":"ElementaryTypeName","src":"1446:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1287:189:92"},"returnParameters":{"id":16531,"nodeType":"ParameterList","parameters":[],"src":"1580:0:92"},"scope":16628,"src":"1276:419:92","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[10],"body":{"id":16568,"nodeType":"Block","src":"1999:115:92","statements":[{"expression":{"id":16558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16556,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16550,"src":"2009:8:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16557,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16492,"src":"2020:9:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2009:20:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16559,"nodeType":"ExpressionStatement","src":"2009:20:92"},{"expression":{"id":16562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16560,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16552,"src":"2039:8:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16561,"name":"_gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16494,"src":"2050:9:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2039:20:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16563,"nodeType":"ExpressionStatement","src":"2039:20:92"},{"expression":{"id":16566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16564,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16554,"src":"2069:17:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16565,"name":"_maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16496,"src":"2089:18:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2069:38:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16567,"nodeType":"ExpressionStatement","src":"2069:38:92"}]},"documentation":{"id":16546,"nodeType":"StructuredDocumentation","src":"1701:89:92","text":" @notice Set the fees for the Arbitrum side of the bridging transaction"},"functionSelector":"ac8288c0","id":16569,"implemented":true,"kind":"function","modifiers":[],"name":"getArbitrumFees","nodeType":"FunctionDefinition","overrides":{"id":16548,"nodeType":"OverrideSpecifier","overrides":[],"src":"1860:8:92"},"parameters":{"id":16547,"nodeType":"ParameterList","parameters":[],"src":"1819:2:92"},"returnParameters":{"id":16555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16550,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16569,"src":"1899:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16549,"name":"uint256","nodeType":"ElementaryTypeName","src":"1899:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16552,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16569,"src":"1929:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16551,"name":"uint256","nodeType":"ElementaryTypeName","src":"1929:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16554,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":16569,"src":"1959:25:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16553,"name":"uint256","nodeType":"ElementaryTypeName","src":"1959:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1885:109:92"},"scope":16628,"src":"1795:319:92","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":16594,"nodeType":"Block","src":"2680:139:92","statements":[{"assignments":[16580],"declarations":[{"constant":false,"id":16580,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":16594,"src":"2690:13:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16579,"name":"address","nodeType":"ElementaryTypeName","src":"2690:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":16583,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16581,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"2706:7:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":16582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2706:9:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2690:25:92"},{"expression":{"arguments":[{"id":16588,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16572,"src":"2761:9:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16589,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16574,"src":"2772:17:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":16585,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16580,"src":"2743:5:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16584,"name":"ArbitrumRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16477,"src":"2725:17:92","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ArbitrumRootGauge_$16477_$","typeString":"type(contract ArbitrumRootGauge)"}},"id":16586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2725:24:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ArbitrumRootGauge_$16477","typeString":"contract ArbitrumRootGauge"}},"id":16587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":16369,"src":"2725:35:92","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":16590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2725:65:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16591,"nodeType":"ExpressionStatement","src":"2725:65:92"},{"expression":{"id":16592,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16580,"src":"2807:5:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":16578,"id":16593,"nodeType":"Return","src":"2800:12:92"}]},"documentation":{"id":16570,"nodeType":"StructuredDocumentation","src":"2120:466:92","text":" @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Arbitrum.\n @dev Care must be taken to ensure that gauges deployed from this factory are\n suitable before they are added to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":16595,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":16575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16572,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16595,"src":"2607:17:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16571,"name":"address","nodeType":"ElementaryTypeName","src":"2607:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16574,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":16595,"src":"2626:25:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16573,"name":"uint256","nodeType":"ElementaryTypeName","src":"2626:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2606:46:92"},"returnParameters":{"id":16578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16577,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16595,"src":"2671:7:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16576,"name":"address","nodeType":"ElementaryTypeName","src":"2671:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2670:9:92"},"scope":16628,"src":"2591:228:92","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[19],"body":{"id":16626,"nodeType":"Block","src":"3065:189:92","statements":[{"expression":{"id":16610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16608,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16492,"src":"3075:9:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16609,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16598,"src":"3087:8:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3075:20:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":16611,"nodeType":"ExpressionStatement","src":"3075:20:92"},{"expression":{"id":16614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16612,"name":"_gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16494,"src":"3105:9:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16613,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16600,"src":"3117:8:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3105:20:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":16615,"nodeType":"ExpressionStatement","src":"3105:20:92"},{"expression":{"id":16618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16616,"name":"_maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16496,"src":"3135:18:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16617,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16602,"src":"3156:17:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3135:38:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":16619,"nodeType":"ExpressionStatement","src":"3135:38:92"},{"eventCall":{"arguments":[{"id":16621,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16598,"src":"3209:8:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":16622,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16600,"src":"3219:8:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":16623,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16602,"src":"3229:17:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":16620,"name":"ArbitrumFeesModified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16504,"src":"3188:20:92","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":16624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3188:59:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16625,"nodeType":"EmitStatement","src":"3183:64:92"}]},"documentation":{"id":16596,"nodeType":"StructuredDocumentation","src":"2825:89:92","text":" @notice Set the fees for the Arbitrum side of the bridging transaction"},"functionSelector":"e9bde604","id":16627,"implemented":true,"kind":"function","modifiers":[{"id":16606,"modifierName":{"id":16605,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3052:12:92","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3052:12:92"}],"name":"setArbitrumFees","nodeType":"FunctionDefinition","overrides":{"id":16604,"nodeType":"OverrideSpecifier","overrides":[],"src":"3043:8:92"},"parameters":{"id":16603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16598,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16627,"src":"2953:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16597,"name":"uint64","nodeType":"ElementaryTypeName","src":"2953:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":16600,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16627,"src":"2978:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16599,"name":"uint64","nodeType":"ElementaryTypeName","src":"2978:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":16602,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":16627,"src":"3003:24:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16601,"name":"uint64","nodeType":"ElementaryTypeName","src":"3003:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2943:90:92"},"returnParameters":{"id":16607,"nodeType":"ParameterList","parameters":[],"src":"3065:0:92"},"scope":16628,"src":"2919:335:92","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":16629,"src":"973:2283:92"}],"src":"688:2569:92"},"id":92},"contracts/gauges/arbitrum/IGatewayRouter.sol":{"ast":{"absolutePath":"contracts/gauges/arbitrum/IGatewayRouter.sol","exportedSymbols":{"IGatewayRouter":[16654]},"id":16655,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16630,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:93"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":16631,"nodeType":"ImportDirective","scope":16655,"sourceUnit":2448,"src":"713:87:93","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":16654,"linearizedBaseContracts":[16654],"name":"IGatewayRouter","nodeType":"ContractDefinition","nodes":[{"functionSelector":"d2ce7d65","id":16646,"implemented":false,"kind":"function","modifiers":[],"name":"outboundTransfer","nodeType":"FunctionDefinition","parameters":{"id":16644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16633,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":16646,"src":"868:12:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":16632,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"868:6:93","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":16635,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16646,"src":"890:17:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16634,"name":"address","nodeType":"ElementaryTypeName","src":"890:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16637,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":16646,"src":"917:14:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16636,"name":"uint256","nodeType":"ElementaryTypeName","src":"917:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16639,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16646,"src":"941:16:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16638,"name":"uint256","nodeType":"ElementaryTypeName","src":"941:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16641,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16646,"src":"967:16:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16640,"name":"uint256","nodeType":"ElementaryTypeName","src":"967:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16643,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":16646,"src":"993:19:93","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":16642,"name":"bytes","nodeType":"ElementaryTypeName","src":"993:5:93","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"858:160:93"},"returnParameters":{"id":16645,"nodeType":"ParameterList","parameters":[],"src":"1035:0:93"},"scope":16654,"src":"833:203:93","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"bda009fe","id":16653,"implemented":false,"kind":"function","modifiers":[],"name":"getGateway","nodeType":"FunctionDefinition","parameters":{"id":16649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16648,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":16653,"src":"1062:13:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16647,"name":"address","nodeType":"ElementaryTypeName","src":"1062:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1061:15:93"},"returnParameters":{"id":16652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16651,"mutability":"mutable","name":"gateway","nodeType":"VariableDeclaration","scope":16653,"src":"1100:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16650,"name":"address","nodeType":"ElementaryTypeName","src":"1100:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1099:17:93"},"scope":16654,"src":"1042:75:93","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16655,"src":"802:317:93"}],"src":"688:432:93"},"id":93},"contracts/gauges/avalanche/AvalancheRootGauge.sol":{"ast":{"absolutePath":"contracts/gauges/avalanche/AvalancheRootGauge.sol","exportedSymbols":{"AvalancheRootGauge":[17009],"ILayerZeroBALProxy":[16738]},"id":17010,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16656,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:94"},{"id":16657,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:94"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","id":16658,"nodeType":"ImportDirective","scope":17010,"sourceUnit":6513,"src":"747:75:94","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":16659,"nodeType":"ImportDirective","scope":17010,"sourceUnit":7342,"src":"823:79:94","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol","file":"./AvalancheRootGaugeLib.sol","id":16660,"nodeType":"ImportDirective","scope":17010,"sourceUnit":17115,"src":"904:37:94","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":16661,"nodeType":"ImportDirective","scope":17010,"sourceUnit":15197,"src":"942:31:94","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":16662,"nodeType":"StructuredDocumentation","src":"975:52:94","text":"@dev Partial interface for LayerZero BAL proxy."},"fullyImplemented":false,"id":16738,"linearizedBaseContracts":[16738],"name":"ILayerZeroBALProxy","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ILayerZeroBALProxy.LzCallParams","id":16669,"members":[{"constant":false,"id":16664,"mutability":"mutable","name":"refundAddress","nodeType":"VariableDeclaration","scope":16669,"src":"1092:29:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":16663,"name":"address","nodeType":"ElementaryTypeName","src":"1092:15:94","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":16666,"mutability":"mutable","name":"zroPaymentAddress","nodeType":"VariableDeclaration","scope":16669,"src":"1131:25:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16665,"name":"address","nodeType":"ElementaryTypeName","src":"1131:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16668,"mutability":"mutable","name":"adapterParams","nodeType":"VariableDeclaration","scope":16669,"src":"1166:19:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":16667,"name":"bytes","nodeType":"ElementaryTypeName","src":"1166:5:94","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"LzCallParams","nodeType":"StructDefinition","scope":16738,"src":"1062:130:94","visibility":"public"},{"documentation":{"id":16670,"nodeType":"StructuredDocumentation","src":"1198:85:94","text":"@dev Returns packet type to be used in adapter params. It is a constant set to 0."},"functionSelector":"4c42899a","id":16675,"implemented":false,"kind":"function","modifiers":[],"name":"PT_SEND","nodeType":"FunctionDefinition","parameters":{"id":16671,"nodeType":"ParameterList","parameters":[],"src":"1357:2:94"},"returnParameters":{"id":16674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16673,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16675,"src":"1383:5:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16672,"name":"uint8","nodeType":"ElementaryTypeName","src":"1383:5:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1382:7:94"},"scope":16738,"src":"1341:49:94","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":16676,"nodeType":"StructuredDocumentation","src":"1396:86:94","text":"@dev Returns minimum gas limit required for the target `chainId` and `packetType`."},"functionSelector":"8cfd8f5c","id":16685,"implemented":false,"kind":"function","modifiers":[],"name":"minDstGasLookup","nodeType":"FunctionDefinition","parameters":{"id":16681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16678,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":16685,"src":"1512:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":16677,"name":"uint16","nodeType":"ElementaryTypeName","src":"1512:6:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":16680,"mutability":"mutable","name":"packetType","nodeType":"VariableDeclaration","scope":16685,"src":"1528:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":16679,"name":"uint16","nodeType":"ElementaryTypeName","src":"1528:6:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1511:35:94"},"returnParameters":{"id":16684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16683,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16685,"src":"1570:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16682,"name":"uint256","nodeType":"ElementaryTypeName","src":"1570:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1569:9:94"},"scope":16738,"src":"1487:92:94","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16686,"nodeType":"StructuredDocumentation","src":"1585:78:94","text":"@dev Returns true if custom adapter parameters are activated in the proxy."},"functionSelector":"ed629c5c","id":16691,"implemented":false,"kind":"function","modifiers":[],"name":"useCustomAdapterParams","nodeType":"FunctionDefinition","parameters":{"id":16687,"nodeType":"ParameterList","parameters":[],"src":"1699:2:94"},"returnParameters":{"id":16690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16689,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16691,"src":"1725:4:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16688,"name":"bool","nodeType":"ElementaryTypeName","src":"1725:4:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1724:6:94"},"scope":16738,"src":"1668:63:94","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16692,"nodeType":"StructuredDocumentation","src":"1737:59:94","text":"@dev Returns the address of the underlying ERC20 token."},"functionSelector":"fc0c546a","id":16697,"implemented":false,"kind":"function","modifiers":[],"name":"token","nodeType":"FunctionDefinition","parameters":{"id":16693,"nodeType":"ParameterList","parameters":[],"src":"1815:2:94"},"returnParameters":{"id":16696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16695,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16697,"src":"1841:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16694,"name":"address","nodeType":"ElementaryTypeName","src":"1841:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1840:9:94"},"scope":16738,"src":"1801:49:94","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16698,"nodeType":"StructuredDocumentation","src":"1856:476:94","text":" @dev Estimate fee for sending token `_tokenId` to (`_dstChainId`, `_toAddress`).\n @param _dstChainId L0 defined chain id to send tokens to.\n @param _toAddress dynamic bytes array with the address you are sending tokens to on dstChain.\n @param _amount amount of the tokens to transfer.\n @param _useZro indicates to use zro to pay L0 fees.\n @param _adapterParams flexible bytes array to indicate messaging adapter services in L0."},"functionSelector":"365260b4","id":16715,"implemented":false,"kind":"function","modifiers":[],"name":"estimateSendFee","nodeType":"FunctionDefinition","parameters":{"id":16709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16700,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":16715,"src":"2371:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":16699,"name":"uint16","nodeType":"ElementaryTypeName","src":"2371:6:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":16702,"mutability":"mutable","name":"_toAddress","nodeType":"VariableDeclaration","scope":16715,"src":"2399:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16701,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2399:7:94","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16704,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":16715,"src":"2427:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16703,"name":"uint256","nodeType":"ElementaryTypeName","src":"2427:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16706,"mutability":"mutable","name":"_useZro","nodeType":"VariableDeclaration","scope":16715,"src":"2452:12:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16705,"name":"bool","nodeType":"ElementaryTypeName","src":"2452:4:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16708,"mutability":"mutable","name":"_adapterParams","nodeType":"VariableDeclaration","scope":16715,"src":"2474:29:94","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":16707,"name":"bytes","nodeType":"ElementaryTypeName","src":"2474:5:94","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2361:148:94"},"returnParameters":{"id":16714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16711,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":16715,"src":"2533:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16710,"name":"uint256","nodeType":"ElementaryTypeName","src":"2533:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16713,"mutability":"mutable","name":"zroFee","nodeType":"VariableDeclaration","scope":16715,"src":"2552:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16712,"name":"uint256","nodeType":"ElementaryTypeName","src":"2552:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2532:35:94"},"scope":16738,"src":"2337:231:94","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16716,"nodeType":"StructuredDocumentation","src":"2574:727:94","text":" @dev Send `_amount` amount of token to (`_dstChainId`, `_toAddress`) from `_from`.\n @param _from the token owner.\n @param _dstChainId the destination chain identifier.\n @param _toAddress can be any size depending on the `dstChainId`.\n @param _amount the quantity of tokens in wei.\n @param _minAmount the minimum amount of tokens to receive on dstChain.\n @param _callParams struct with custom options.\n - refundAddress: the address LayerZero refunds if too much message fee is sent.\n - zroPaymentAddress set to address(0x0) if not paying in ZRO (LayerZero Token).\n - adapterParams is a flexible bytes array used to configure messaging adapter services."},"functionSelector":"2cdf0b95","id":16731,"implemented":false,"kind":"function","modifiers":[],"name":"sendFrom","nodeType":"FunctionDefinition","parameters":{"id":16729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16718,"mutability":"mutable","name":"_from","nodeType":"VariableDeclaration","scope":16731,"src":"3333:13:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16717,"name":"address","nodeType":"ElementaryTypeName","src":"3333:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16720,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":16731,"src":"3356:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":16719,"name":"uint16","nodeType":"ElementaryTypeName","src":"3356:6:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":16722,"mutability":"mutable","name":"_toAddress","nodeType":"VariableDeclaration","scope":16731,"src":"3384:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16721,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3384:7:94","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16724,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":16731,"src":"3412:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16723,"name":"uint256","nodeType":"ElementaryTypeName","src":"3412:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16726,"mutability":"mutable","name":"_minAmount","nodeType":"VariableDeclaration","scope":16731,"src":"3437:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16725,"name":"uint256","nodeType":"ElementaryTypeName","src":"3437:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16728,"mutability":"mutable","name":"_callParams","nodeType":"VariableDeclaration","scope":16731,"src":"3465:33:94","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_LzCallParams_$16669_calldata_ptr","typeString":"struct ILayerZeroBALProxy.LzCallParams"},"typeName":{"id":16727,"name":"LzCallParams","nodeType":"UserDefinedTypeName","referencedDeclaration":16669,"src":"3465:12:94","typeDescriptions":{"typeIdentifier":"t_struct$_LzCallParams_$16669_storage_ptr","typeString":"struct ILayerZeroBALProxy.LzCallParams"}},"visibility":"internal"}],"src":"3323:181:94"},"returnParameters":{"id":16730,"nodeType":"ParameterList","parameters":[],"src":"3521:0:94"},"scope":16738,"src":"3306:216:94","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":16732,"nodeType":"StructuredDocumentation","src":"3528:78:94","text":"@dev Returns the maximum allowed precision (decimals) for proxy transfers."},"functionSelector":"857749b0","id":16737,"implemented":false,"kind":"function","modifiers":[],"name":"sharedDecimals","nodeType":"FunctionDefinition","parameters":{"id":16733,"nodeType":"ParameterList","parameters":[],"src":"3634:2:94"},"returnParameters":{"id":16736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16735,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16737,"src":"3655:5:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16734,"name":"uint8","nodeType":"ElementaryTypeName","src":"3655:5:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3654:7:94"},"scope":16738,"src":"3611:51:94","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17010,"src":"1027:2637:94"},{"abstract":false,"baseContracts":[{"baseName":{"id":16740,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"3946:14:94","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":16741,"nodeType":"InheritanceSpecifier","src":"3946:14:94"}],"contractDependencies":[928,1239,7187,15196],"contractKind":"contract","documentation":{"id":16739,"nodeType":"StructuredDocumentation","src":"3666:248:94","text":" @notice Root Gauge for the Avalanche network.\n @dev Uses LayerZero OFTv2 (Omni Fungible Token V2) proxy contracts to bridge BAL.\n See https://layerzero.gitbook.io/docs/evm-guides/layerzero-omnichain-contracts/oft/oftv2 for reference."},"fullyImplemented":true,"id":17009,"linearizedBaseContracts":[17009,15196,7187,1239,928],"name":"AvalancheRootGauge","nodeType":"ContractDefinition","nodes":[{"id":16744,"libraryName":{"id":16742,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"3973:9:94","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"3967:27:94","typeName":{"id":16743,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3987:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":true,"id":16747,"mutability":"constant","name":"_AVALANCHE_LZ_CHAIN_ID","nodeType":"VariableDeclaration","scope":17009,"src":"4144:52:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":16745,"name":"uint16","nodeType":"ElementaryTypeName","src":"4144:6:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"313036","id":16746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4193:3:94","typeDescriptions":{"typeIdentifier":"t_rational_106_by_1","typeString":"int_const 106"},"value":"106"},"visibility":"private"},{"constant":true,"id":16750,"mutability":"constant","name":"_SEND_PACKET_TYPE","nodeType":"VariableDeclaration","scope":17009,"src":"4570:45:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":16748,"name":"uint16","nodeType":"ElementaryTypeName","src":"4570:6:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"30","id":16749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4614:1:94","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":true,"id":16753,"mutability":"constant","name":"_ADAPTER_PARAMS_VERSION","nodeType":"VariableDeclaration","scope":17009,"src":"4710:51:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":16751,"name":"uint16","nodeType":"ElementaryTypeName","src":"4710:6:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"31","id":16752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4760:1:94","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":false,"id":16755,"mutability":"immutable","name":"_lzBALProxy","nodeType":"VariableDeclaration","scope":17009,"src":"4768:48:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"},"typeName":{"id":16754,"name":"ILayerZeroBALProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":16738,"src":"4768:18:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"visibility":"private"},{"constant":false,"id":16757,"mutability":"immutable","name":"_minimumBridgeAmount","nodeType":"VariableDeclaration","scope":17009,"src":"5262:46:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16756,"name":"uint256","nodeType":"ElementaryTypeName","src":"5262:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":16759,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":17009,"src":"5418:26:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16758,"name":"address","nodeType":"ElementaryTypeName","src":"5418:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":16797,"nodeType":"Block","src":"5702:213:94","statements":[{"expression":{"id":16772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16770,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"5712:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16771,"name":"lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16764,"src":"5726:10:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"src":"5712:24:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"id":16773,"nodeType":"ExpressionStatement","src":"5712:24:94"},{"assignments":[16775],"declarations":[{"constant":false,"id":16775,"mutability":"mutable","name":"decimalDifference","nodeType":"VariableDeclaration","scope":16797,"src":"5746:23:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16774,"name":"uint8","nodeType":"ElementaryTypeName","src":"5746:5:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":16790,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16779,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16762,"src":"5786:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"id":16780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getBalancerToken","nodeType":"MemberAccess","referencedDeclaration":80,"src":"5786:23:94","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2447_$","typeString":"function () view external returns (contract IERC20)"}},"id":16781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5786:25:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":16778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5778:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16777,"name":"address","nodeType":"ElementaryTypeName","src":"5778:7:94","typeDescriptions":{}}},"id":16782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5778:34:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16776,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6512,"src":"5772:5:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$6512_$","typeString":"type(contract ERC20)"}},"id":16783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5772:41:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$6512","typeString":"contract ERC20"}},"id":16784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":6098,"src":"5772:50:94","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":16785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5772:52:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16786,"name":"lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16764,"src":"5827:10:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"id":16787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sharedDecimals","nodeType":"MemberAccess","referencedDeclaration":16737,"src":"5827:25:94","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint8_$","typeString":"function () external returns (uint8)"}},"id":16788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5827:27:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5772:82:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"5746:108:94"},{"expression":{"id":16795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16791,"name":"_minimumBridgeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16757,"src":"5864:20:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":16792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5887:2:94","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":16793,"name":"decimalDifference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16775,"src":"5891:17:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5887:21:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5864:44:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16796,"nodeType":"ExpressionStatement","src":"5864:44:94"}]},"documentation":{"id":16760,"nodeType":"StructuredDocumentation","src":"5451:149:94","text":" @dev Must be deployed by the AvalancheRootGaugeFactory, or other contract that implements\n `IAvalancheBridgeLimitsProvider`."},"id":16798,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":16767,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16762,"src":"5694:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":16768,"modifierName":{"id":16766,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"5679:14:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"5679:22:94"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":16765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16762,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":16798,"src":"5617:29:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":16761,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"5617:22:94","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":16764,"mutability":"mutable","name":"lzBALProxy","nodeType":"VariableDeclaration","scope":16798,"src":"5648:29:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"},"typeName":{"id":16763,"name":"ILayerZeroBALProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":16738,"src":"5648:18:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"visibility":"internal"}],"src":"5616:62:94"},"returnParameters":{"id":16769,"nodeType":"ParameterList","parameters":[],"src":"5702:0:94"},"scope":17009,"src":"5605:310:94","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":16825,"nodeType":"Block","src":"5996:343:94","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16806,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"6119:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"id":16807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":16697,"src":"6119:17:94","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":16808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6119:19:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":16811,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"6150:9:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":16810,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6142:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16809,"name":"address","nodeType":"ElementaryTypeName","src":"6142:7:94","typeDescriptions":{}}},"id":16812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6142:18:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6119:41:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964205772617070657220546f6b656e","id":16814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6162:23:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_3843b3ea34eba3d4077ca706259a55bd3e6ab03f43f519a25b2ae16e554fda25","typeString":"literal_string \"Invalid Wrapper Token\""},"value":"Invalid Wrapper Token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3843b3ea34eba3d4077ca706259a55bd3e6ab03f43f519a25b2ae16e554fda25","typeString":"literal_string \"Invalid Wrapper Token\""}],"id":16805,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6111:7:94","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6111:75:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16816,"nodeType":"ExpressionStatement","src":"6111:75:94"},{"expression":{"arguments":[{"id":16818,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16802,"src":"6281:17:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16817,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"6259:21:94","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":16819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6259:40:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16820,"nodeType":"ExpressionStatement","src":"6259:40:94"},{"expression":{"id":16823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16821,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16759,"src":"6310:10:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16822,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16800,"src":"6323:9:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6310:22:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16824,"nodeType":"ExpressionStatement","src":"6310:22:94"}]},"functionSelector":"cd6dc687","id":16826,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":16803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16800,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16826,"src":"5941:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16799,"name":"address","nodeType":"ElementaryTypeName","src":"5941:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16802,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":16826,"src":"5960:25:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16801,"name":"uint256","nodeType":"ElementaryTypeName","src":"5960:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5940:46:94"},"returnParameters":{"id":16804,"nodeType":"ParameterList","parameters":[],"src":"5996:0:94"},"scope":17009,"src":"5921:418:94","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":16835,"nodeType":"Block","src":"6444:34:94","statements":[{"expression":{"id":16833,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16759,"src":"6461:10:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":16832,"id":16834,"nodeType":"Return","src":"6454:17:94"}]},"documentation":{"id":16827,"nodeType":"StructuredDocumentation","src":"6345:31:94","text":"@inheritdoc IStakelessGauge"},"functionSelector":"1b88094d","id":16836,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":16829,"nodeType":"OverrideSpecifier","overrides":[],"src":"6417:8:94"},"parameters":{"id":16828,"nodeType":"ParameterList","parameters":[],"src":"6402:2:94"},"returnParameters":{"id":16832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16831,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16836,"src":"6435:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16830,"name":"address","nodeType":"ElementaryTypeName","src":"6435:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6434:9:94"},"scope":17009,"src":"6381:97:94","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":16847,"nodeType":"Block","src":"6619:44:94","statements":[{"expression":{"arguments":[{"id":16844,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"6644:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}],"id":16843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6636:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16842,"name":"address","nodeType":"ElementaryTypeName","src":"6636:7:94","typeDescriptions":{}}},"id":16845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6636:20:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":16841,"id":16846,"nodeType":"Return","src":"6629:27:94"}]},"documentation":{"id":16837,"nodeType":"StructuredDocumentation","src":"6484:75:94","text":"@dev Return the Layer Zero proxy contract for the underlying BAL token."},"functionSelector":"05c2c78d","id":16848,"implemented":true,"kind":"function","modifiers":[],"name":"getBALProxy","nodeType":"FunctionDefinition","parameters":{"id":16838,"nodeType":"ParameterList","parameters":[],"src":"6584:2:94"},"returnParameters":{"id":16841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16840,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16848,"src":"6610:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16839,"name":"address","nodeType":"ElementaryTypeName","src":"6610:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6609:9:94"},"scope":17009,"src":"6564:99:94","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":16856,"nodeType":"Block","src":"6896:44:94","statements":[{"expression":{"id":16854,"name":"_minimumBridgeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16757,"src":"6913:20:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16853,"id":16855,"nodeType":"Return","src":"6906:27:94"}]},"documentation":{"id":16849,"nodeType":"StructuredDocumentation","src":"6669:158:94","text":" @dev Returns the minimum amount of tokens that can be bridged.\n Values lower than this one will not even be transferred to the proxy."},"functionSelector":"5e8a8389","id":16857,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumBridgeAmount","nodeType":"FunctionDefinition","parameters":{"id":16850,"nodeType":"ParameterList","parameters":[],"src":"6863:2:94"},"returnParameters":{"id":16853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16852,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16857,"src":"6887:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16851,"name":"uint256","nodeType":"ElementaryTypeName","src":"6887:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6886:9:94"},"scope":17009,"src":"6832:108:94","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[15021],"body":{"id":16869,"nodeType":"Block","src":"7051:64:94","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":16865,"name":"_getAdapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17008,"src":"7088:17:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_memory_ptr_$","typeString":"function () view returns (bytes memory)"}},"id":16866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7088:19:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16864,"name":"_getTotalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16895,"src":"7068:19:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes memory) view returns (uint256)"}},"id":16867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7068:40:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16863,"id":16868,"nodeType":"Return","src":"7061:47:94"}]},"documentation":{"id":16858,"nodeType":"StructuredDocumentation","src":"6946:31:94","text":"@inheritdoc IStakelessGauge"},"functionSelector":"b0245225","id":16870,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalBridgeCost","nodeType":"FunctionDefinition","overrides":{"id":16860,"nodeType":"OverrideSpecifier","overrides":[],"src":"7024:8:94"},"parameters":{"id":16859,"nodeType":"ParameterList","parameters":[],"src":"7009:2:94"},"returnParameters":{"id":16863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16862,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16870,"src":"7042:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16861,"name":"uint256","nodeType":"ElementaryTypeName","src":"7042:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7041:9:94"},"scope":17009,"src":"6982:133:94","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":16894,"nodeType":"Block","src":"7210:452:94","statements":[{"assignments":[16878,null],"declarations":[{"constant":false,"id":16878,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":16894,"src":"7403:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16877,"name":"uint256","nodeType":"ElementaryTypeName","src":"7403:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":16891,"initialValue":{"arguments":[{"id":16881,"name":"_AVALANCHE_LZ_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16747,"src":"7467:22:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":16884,"name":"getRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16836,"src":"7542:12:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":16885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7542:14:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16882,"name":"AvalancheRootGaugeLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17114,"src":"7503:21:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AvalancheRootGaugeLib_$17114_$","typeString":"type(library AvalancheRootGaugeLib)"}},"id":16883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"bytes32Recipient","nodeType":"MemberAccess","referencedDeclaration":17113,"src":"7503:38:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes32_$","typeString":"function (address) pure returns (bytes32)"}},"id":16886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7503:54:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":16887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7571:1:94","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"66616c7365","id":16888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7586:5:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":16889,"name":"adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16872,"src":"7605:13:94","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16879,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"7426:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"id":16880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"estimateSendFee","nodeType":"MemberAccess","referencedDeclaration":16715,"src":"7426:27:94","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint16_$_t_bytes32_$_t_uint256_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint16,bytes32,uint256,bool,bytes memory) view external returns (uint256,uint256)"}},"id":16890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7426:202:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7402:226:94"},{"expression":{"id":16892,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16878,"src":"7646:9:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16876,"id":16893,"nodeType":"Return","src":"7639:16:94"}]},"id":16895,"implemented":true,"kind":"function","modifiers":[],"name":"_getTotalBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":16873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16872,"mutability":"mutable","name":"adapterParams","nodeType":"VariableDeclaration","scope":16895,"src":"7150:26:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16871,"name":"bytes","nodeType":"ElementaryTypeName","src":"7150:5:94","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7149:28:94"},"returnParameters":{"id":16876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16875,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16895,"src":"7201:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16874,"name":"uint256","nodeType":"ElementaryTypeName","src":"7201:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7200:9:94"},"scope":17009,"src":"7121:541:94","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[15040],"body":{"id":16976,"nodeType":"Block","src":"7731:1620:94","statements":[{"assignments":[16902],"declarations":[{"constant":false,"id":16902,"mutability":"mutable","name":"amountWithoutDust","nodeType":"VariableDeclaration","scope":16976,"src":"7741:25:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16901,"name":"uint256","nodeType":"ElementaryTypeName","src":"7741:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16908,"initialValue":{"arguments":[{"id":16905,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16897,"src":"7802:10:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16906,"name":"_minimumBridgeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16757,"src":"7814:20:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16903,"name":"AvalancheRootGaugeLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17114,"src":"7769:21:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AvalancheRootGaugeLib_$17114_$","typeString":"type(library AvalancheRootGaugeLib)"}},"id":16904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"removeDust","nodeType":"MemberAccess","referencedDeclaration":17093,"src":"7769:32:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":16907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7769:66:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7741:94:94"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16909,"name":"amountWithoutDust","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16902,"src":"7908:17:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7929:1:94","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7908:22:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16914,"nodeType":"IfStatement","src":"7904:59:94","trueBody":{"id":16913,"nodeType":"Block","src":"7932:31:94","statements":[{"functionReturnParameters":16900,"id":16912,"nodeType":"Return","src":"7946:7:94"}]}},{"assignments":[16916],"declarations":[{"constant":false,"id":16916,"mutability":"mutable","name":"adapterParams","nodeType":"VariableDeclaration","scope":16976,"src":"7973:26:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16915,"name":"bytes","nodeType":"ElementaryTypeName","src":"7973:5:94","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":16919,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16917,"name":"_getAdapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17008,"src":"8002:17:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_memory_ptr_$","typeString":"function () view returns (bytes memory)"}},"id":16918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8002:19:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7973:48:94"},{"assignments":[16921],"declarations":[{"constant":false,"id":16921,"mutability":"mutable","name":"totalBridgeCost","nodeType":"VariableDeclaration","scope":16976,"src":"8031:23:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16920,"name":"uint256","nodeType":"ElementaryTypeName","src":"8031:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16925,"initialValue":{"arguments":[{"id":16923,"name":"adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16916,"src":"8077:13:94","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16922,"name":"_getTotalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16895,"src":"8057:19:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes memory) view returns (uint256)"}},"id":16924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8057:34:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8031:60:94"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16927,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8110:3:94","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"8110:9:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":16929,"name":"totalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16921,"src":"8123:15:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8110:28:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f7272656374206d73672e76616c756520706173736564","id":16931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8140:28:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_56d4a48d23c5e1d04e805cebfda5734ae7721ed375a1cc40426062043619622b","typeString":"literal_string \"Incorrect msg.value passed\""},"value":"Incorrect msg.value passed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_56d4a48d23c5e1d04e805cebfda5734ae7721ed375a1cc40426062043619622b","typeString":"literal_string \"Incorrect msg.value passed\""}],"id":16926,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8102:7:94","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8102:67:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16933,"nodeType":"ExpressionStatement","src":"8102:67:94"},{"expression":{"arguments":[{"arguments":[{"id":16939,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"8285:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}],"id":16938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8277:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16937,"name":"address","nodeType":"ElementaryTypeName","src":"8277:7:94","typeDescriptions":{}}},"id":16940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8277:20:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16941,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16897,"src":"8299:10:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16934,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"8255:9:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":16936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"8255:21:94","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":16942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8255:55:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16943,"nodeType":"ExpressionStatement","src":"8255:55:94"},{"expression":{"arguments":[{"arguments":[{"id":16951,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9077:4:94","typeDescriptions":{"typeIdentifier":"t_contract$_AvalancheRootGauge_$17009","typeString":"contract AvalancheRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AvalancheRootGauge_$17009","typeString":"contract AvalancheRootGauge"}],"id":16950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9069:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16949,"name":"address","nodeType":"ElementaryTypeName","src":"9069:7:94","typeDescriptions":{}}},"id":16952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9069:13:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16953,"name":"_AVALANCHE_LZ_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16747,"src":"9096:22:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":16956,"name":"getRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16836,"src":"9171:12:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":16957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9171:14:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16954,"name":"AvalancheRootGaugeLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17114,"src":"9132:21:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AvalancheRootGaugeLib_$17114_$","typeString":"type(library AvalancheRootGaugeLib)"}},"id":16955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"bytes32Recipient","nodeType":"MemberAccess","referencedDeclaration":17113,"src":"9132:38:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes32_$","typeString":"function (address) pure returns (bytes32)"}},"id":16958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9132:54:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":16959,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16897,"src":"9200:10:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16960,"name":"amountWithoutDust","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16902,"src":"9224:17:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"arguments":[{"expression":{"id":16965,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9295:3:94","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9295:10:94","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":16964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9287:8:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":16963,"name":"address","nodeType":"ElementaryTypeName","src":"9287:8:94","stateMutability":"payable","typeDescriptions":{}}},"id":16967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9287:19:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"hexValue":"30","id":16970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9316:1:94","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":16969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9308:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16968,"name":"address","nodeType":"ElementaryTypeName","src":"9308:7:94","typeDescriptions":{}}},"id":16971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9308:10:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":16972,"name":"adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16916,"src":"9320:13:94","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16961,"name":"ILayerZeroBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16738,"src":"9255:18:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILayerZeroBALProxy_$16738_$","typeString":"type(contract ILayerZeroBALProxy)"}},"id":16962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LzCallParams","nodeType":"MemberAccess","referencedDeclaration":16669,"src":"9255:31:94","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_LzCallParams_$16669_storage_ptr_$","typeString":"type(struct ILayerZeroBALProxy.LzCallParams storage pointer)"}},"id":16973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9255:79:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LzCallParams_$16669_memory_ptr","typeString":"struct ILayerZeroBALProxy.LzCallParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_LzCallParams_$16669_memory_ptr","typeString":"struct ILayerZeroBALProxy.LzCallParams memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_LzCallParams_$16669_memory_ptr","typeString":"struct ILayerZeroBALProxy.LzCallParams memory"}],"expression":{"id":16944,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"9009:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"id":16946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendFrom","nodeType":"MemberAccess","referencedDeclaration":16731,"src":"9009:20:94","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_bytes32_$_t_uint256_$_t_uint256_$_t_struct$_LzCallParams_$16669_memory_ptr_$returns$__$","typeString":"function (address,uint16,bytes32,uint256,uint256,struct ILayerZeroBALProxy.LzCallParams memory) payable external"}},"id":16948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":16947,"name":"totalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16921,"src":"9038:15:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"9009:46:94","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_bytes32_$_t_uint256_$_t_uint256_$_t_struct$_LzCallParams_$16669_memory_ptr_$returns$__$value","typeString":"function (address,uint16,bytes32,uint256,uint256,struct ILayerZeroBALProxy.LzCallParams memory) payable external"}},"id":16974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9009:335:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16975,"nodeType":"ExpressionStatement","src":"9009:335:94"}]},"id":16977,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":16899,"nodeType":"OverrideSpecifier","overrides":[],"src":"7722:8:94"},"parameters":{"id":16898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16897,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":16977,"src":"7693:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16896,"name":"uint256","nodeType":"ElementaryTypeName","src":"7693:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7692:20:94"},"returnParameters":{"id":16900,"nodeType":"ParameterList","parameters":[],"src":"7731:0:94"},"scope":17009,"src":"7668:1683:94","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":17007,"nodeType":"Block","src":"9423:1182:94","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16982,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"10326:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"id":16983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"useCustomAdapterParams","nodeType":"MemberAccess","referencedDeclaration":16691,"src":"10326:34:94","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":16984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10326:36:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17005,"nodeType":"Block","src":"10558:41:94","statements":[{"expression":{"arguments":[{"hexValue":"","id":17002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10585:2:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":17001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10579:5:94","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":17000,"name":"bytes","nodeType":"ElementaryTypeName","src":"10579:5:94","typeDescriptions":{}}},"id":17003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10579:9:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16981,"id":17004,"nodeType":"Return","src":"10572:16:94"}]},"id":17006,"nodeType":"IfStatement","src":"10322:277:94","trueBody":{"id":16999,"nodeType":"Block","src":"10364:188:94","statements":[{"assignments":[16986],"declarations":[{"constant":false,"id":16986,"mutability":"mutable","name":"minDstGas","nodeType":"VariableDeclaration","scope":16999,"src":"10378:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16985,"name":"uint256","nodeType":"ElementaryTypeName","src":"10378:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16992,"initialValue":{"arguments":[{"id":16989,"name":"_AVALANCHE_LZ_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16747,"src":"10426:22:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":16990,"name":"_SEND_PACKET_TYPE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16750,"src":"10450:17:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":16987,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"10398:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"id":16988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"minDstGasLookup","nodeType":"MemberAccess","referencedDeclaration":16685,"src":"10398:27:94","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint16_$_t_uint16_$returns$_t_uint256_$","typeString":"function (uint16,uint16) view external returns (uint256)"}},"id":16991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10398:70:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10378:90:94"},{"expression":{"arguments":[{"id":16995,"name":"_ADAPTER_PARAMS_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"10506:23:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":16996,"name":"minDstGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16986,"src":"10531:9:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16993,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10489:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"10489:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10489:52:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16981,"id":16998,"nodeType":"Return","src":"10482:59:94"}]}}]},"id":17008,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdapterParams","nodeType":"FunctionDefinition","parameters":{"id":16978,"nodeType":"ParameterList","parameters":[],"src":"9383:2:94"},"returnParameters":{"id":16981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16980,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17008,"src":"9409:12:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16979,"name":"bytes","nodeType":"ElementaryTypeName","src":"9409:5:94","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9408:14:94"},"scope":17009,"src":"9357:1248:94","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":17010,"src":"3915:6692:94"}],"src":"688:9920:94"},"id":94},"contracts/gauges/avalanche/AvalancheRootGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/avalanche/AvalancheRootGaugeFactory.sol","exportedSymbols":{"AvalancheRootGaugeFactory":[17070]},"id":17071,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17011,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:95"},{"id":17012,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:95"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":17013,"nodeType":"ImportDirective","scope":17071,"sourceUnit":3052,"src":"747:65:95","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":17014,"nodeType":"ImportDirective","scope":17071,"sourceUnit":3698,"src":"814:88:95","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":17015,"nodeType":"ImportDirective","scope":17071,"sourceUnit":13897,"src":"904:33:95","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/avalanche/AvalancheRootGauge.sol","file":"./AvalancheRootGauge.sol","id":17016,"nodeType":"ImportDirective","scope":17071,"sourceUnit":17010,"src":"938:34:95","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17017,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"1012:16:95","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":17018,"nodeType":"InheritanceSpecifier","src":"1012:16:95"},{"baseName":{"id":17019,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1030:23:95","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":17020,"nodeType":"InheritanceSpecifier","src":"1030:23:95"}],"contractDependencies":[941,2259,3128,3697,13896,17009],"contractKind":"contract","fullyImplemented":true,"id":17070,"linearizedBaseContracts":[17070,3697,3128,2259,13896,941],"name":"AvalancheRootGaugeFactory","nodeType":"ContractDefinition","nodes":[{"body":{"id":17042,"nodeType":"Block","src":"1279:64:95","statements":[]},"id":17043,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"id":17033,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17024,"src":"1226:6:95","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":17034,"name":"lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17026,"src":"1234:10:95","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}],"id":17032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1203:22:95","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$_t_contract$_ILayerZeroBALProxy_$16738_$returns$_t_contract$_AvalancheRootGauge_$17009_$","typeString":"function (contract IMainnetBalancerMinter,contract ILayerZeroBALProxy) returns (contract AvalancheRootGauge)"},"typeName":{"id":17031,"name":"AvalancheRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":17009,"src":"1207:18:95","typeDescriptions":{"typeIdentifier":"t_contract$_AvalancheRootGauge_$17009","typeString":"contract AvalancheRootGauge"}}},"id":17035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1203:42:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AvalancheRootGauge_$17009","typeString":"contract AvalancheRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AvalancheRootGauge_$17009","typeString":"contract AvalancheRootGauge"}],"id":17030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1195:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17029,"name":"address","nodeType":"ElementaryTypeName","src":"1195:7:95","typeDescriptions":{}}},"id":17036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1195:51:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17037,"modifierName":{"id":17028,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1178:16:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"1178:69:95"},{"arguments":[{"id":17039,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17022,"src":"1272:5:95","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":17040,"modifierName":{"id":17038,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1248:23:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1248:30:95"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17022,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":17043,"src":"1081:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":17021,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1081:6:95","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":17024,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17043,"src":"1103:29:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17023,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1103:22:95","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17026,"mutability":"mutable","name":"lzBALProxy","nodeType":"VariableDeclaration","scope":17043,"src":"1142:29:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"},"typeName":{"id":17025,"name":"ILayerZeroBALProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":16738,"src":"1142:18:95","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"visibility":"internal"}],"src":"1071:106:95"},"returnParameters":{"id":17041,"nodeType":"ParameterList","parameters":[],"src":"1279:0:95"},"scope":17070,"src":"1060:283:95","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17068,"nodeType":"Block","src":"1910:140:95","statements":[{"assignments":[17054],"declarations":[{"constant":false,"id":17054,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":17068,"src":"1920:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17053,"name":"address","nodeType":"ElementaryTypeName","src":"1920:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17057,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17055,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"1936:7:95","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":17056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1936:9:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1920:25:95"},{"expression":{"arguments":[{"id":17062,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17046,"src":"1992:9:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17063,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17048,"src":"2003:17:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":17059,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17054,"src":"1974:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17058,"name":"AvalancheRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17009,"src":"1955:18:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AvalancheRootGauge_$17009_$","typeString":"type(contract AvalancheRootGauge)"}},"id":17060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1955:25:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AvalancheRootGauge_$17009","typeString":"contract AvalancheRootGauge"}},"id":17061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":16826,"src":"1955:36:95","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":17064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1955:66:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17065,"nodeType":"ExpressionStatement","src":"1955:66:95"},{"expression":{"id":17066,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17054,"src":"2038:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17052,"id":17067,"nodeType":"Return","src":"2031:12:95"}]},"documentation":{"id":17044,"nodeType":"StructuredDocumentation","src":"1349:467:95","text":" @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Avalanche.\n @dev Care must be taken to ensure that gauges deployed from this factory are suitable before they are added\n to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":17069,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":17049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17046,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17069,"src":"1837:17:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17045,"name":"address","nodeType":"ElementaryTypeName","src":"1837:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17048,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17069,"src":"1856:25:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17047,"name":"uint256","nodeType":"ElementaryTypeName","src":"1856:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1836:46:95"},"returnParameters":{"id":17052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17051,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17069,"src":"1901:7:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17050,"name":"address","nodeType":"ElementaryTypeName","src":"1901:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1900:9:95"},"scope":17070,"src":"1821:229:95","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17071,"src":"974:1078:95"}],"src":"688:1365:95"},"id":95},"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol":{"ast":{"absolutePath":"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol","exportedSymbols":{"AvalancheRootGaugeLib":[17114]},"id":17115,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17072,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:96"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":17114,"linearizedBaseContracts":[17114],"name":"AvalancheRootGaugeLib","nodeType":"ContractDefinition","nodes":[{"body":{"id":17092,"nodeType":"Block","src":"907:81:96","statements":[{"assignments":[17083],"declarations":[{"constant":false,"id":17083,"mutability":"mutable","name":"dust","nodeType":"VariableDeclaration","scope":17092,"src":"917:12:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17082,"name":"uint256","nodeType":"ElementaryTypeName","src":"917:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17087,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17084,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17075,"src":"932:6:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":17085,"name":"dustModulo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17077,"src":"941:10:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"932:19:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"917:34:96"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17088,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17075,"src":"968:6:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":17089,"name":"dust","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17083,"src":"977:4:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"968:13:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17081,"id":17091,"nodeType":"Return","src":"961:20:96"}]},"documentation":{"id":17073,"nodeType":"StructuredDocumentation","src":"749:65:96","text":"@dev Truncates given amount to the maximum allowed precision."},"id":17093,"implemented":true,"kind":"function","modifiers":[],"name":"removeDust","nodeType":"FunctionDefinition","parameters":{"id":17078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17075,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":17093,"src":"839:14:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17074,"name":"uint256","nodeType":"ElementaryTypeName","src":"839:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17077,"mutability":"mutable","name":"dustModulo","nodeType":"VariableDeclaration","scope":17093,"src":"855:18:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17076,"name":"uint256","nodeType":"ElementaryTypeName","src":"855:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"838:36:96"},"returnParameters":{"id":17081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17080,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17093,"src":"898:7:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17079,"name":"uint256","nodeType":"ElementaryTypeName","src":"898:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"897:9:96"},"scope":17114,"src":"819:169:96","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":17112,"nodeType":"Block","src":"1150:60:96","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":17107,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17096,"src":"1191:9:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1183:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":17105,"name":"uint160","nodeType":"ElementaryTypeName","src":"1183:7:96","typeDescriptions":{}}},"id":17108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1183:18:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":17104,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1175:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17103,"name":"uint256","nodeType":"ElementaryTypeName","src":"1175:7:96","typeDescriptions":{}}},"id":17109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1175:27:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1167:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":17101,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1167:7:96","typeDescriptions":{}}},"id":17110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1167:36:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":17100,"id":17111,"nodeType":"Return","src":"1160:43:96"}]},"documentation":{"id":17094,"nodeType":"StructuredDocumentation","src":"994:74:96","text":"@dev Returns given address as bytes32, padded with zeroes to the left."},"id":17113,"implemented":true,"kind":"function","modifiers":[],"name":"bytes32Recipient","nodeType":"FunctionDefinition","parameters":{"id":17097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17096,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17113,"src":"1099:17:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17095,"name":"address","nodeType":"ElementaryTypeName","src":"1099:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1098:19:96"},"returnParameters":{"id":17100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17099,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17113,"src":"1141:7:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17098,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1141:7:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1140:9:96"},"scope":17114,"src":"1073:137:96","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":17115,"src":"713:499:96"}],"src":"688:525:96"},"id":96},"contracts/gauges/base/BaseRootGauge.sol":{"ast":{"absolutePath":"contracts/gauges/base/BaseRootGauge.sol","exportedSymbols":{"BaseRootGauge":[17227]},"id":17228,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17116,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:97"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol","id":17117,"nodeType":"ImportDirective","scope":17228,"sourceUnit":841,"src":"713:87:97","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":17118,"nodeType":"ImportDirective","scope":17228,"sourceUnit":7342,"src":"802:79:97","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":17119,"nodeType":"ImportDirective","scope":17228,"sourceUnit":15197,"src":"883:31:97","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17120,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"942:14:97","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":17121,"nodeType":"InheritanceSpecifier","src":"942:14:97"}],"contractDependencies":[928,1239,7187,15196],"contractKind":"contract","fullyImplemented":true,"id":17227,"linearizedBaseContracts":[17227,15196,7187,1239,928],"name":"BaseRootGauge","nodeType":"ContractDefinition","nodes":[{"id":17124,"libraryName":{"id":17122,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"969:9:97","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"963:27:97","typeName":{"id":17123,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"983:6:97","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":true,"id":17127,"mutability":"constant","name":"_MIN_GAS_LIMIT","nodeType":"VariableDeclaration","scope":17227,"src":"1963:42:97","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17125,"name":"uint32","nodeType":"ElementaryTypeName","src":"1963:6:97","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"30","id":17126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2004:1:97","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":false,"id":17129,"mutability":"immutable","name":"_baseL1StandardBridge","nodeType":"VariableDeclaration","scope":17227,"src":"2012:57:97","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17128,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"2012:17:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"private"},{"constant":false,"id":17131,"mutability":"immutable","name":"_baseBal","nodeType":"VariableDeclaration","scope":17227,"src":"2263:34:97","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17130,"name":"address","nodeType":"ElementaryTypeName","src":"2263:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":17133,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":17227,"src":"2407:26:97","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17132,"name":"address","nodeType":"ElementaryTypeName","src":"2407:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":17153,"nodeType":"Block","src":"2593:89:97","statements":[{"expression":{"id":17147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17145,"name":"_baseL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17129,"src":"2603:21:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17146,"name":"baseL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17137,"src":"2627:20:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"src":"2603:44:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"id":17148,"nodeType":"ExpressionStatement","src":"2603:44:97"},{"expression":{"id":17151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17149,"name":"_baseBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17131,"src":"2657:8:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17150,"name":"baseBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17139,"src":"2668:7:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2657:18:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17152,"nodeType":"ExpressionStatement","src":"2657:18:97"}]},"id":17154,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":17142,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17135,"src":"2585:6:97","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":17143,"modifierName":{"id":17141,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"2570:14:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"2570:22:97"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17135,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17154,"src":"2461:29:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17134,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"2461:22:97","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17137,"mutability":"mutable","name":"baseL1StandardBridge","nodeType":"VariableDeclaration","scope":17154,"src":"2500:38:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17136,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"2500:17:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"internal"},{"constant":false,"id":17139,"mutability":"mutable","name":"baseBal","nodeType":"VariableDeclaration","scope":17154,"src":"2548:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17138,"name":"address","nodeType":"ElementaryTypeName","src":"2548:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2451:118:97"},"returnParameters":{"id":17144,"nodeType":"ParameterList","parameters":[],"src":"2593:0:97"},"scope":17227,"src":"2440:242:97","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17169,"nodeType":"Block","src":"2763:152:97","statements":[{"expression":{"arguments":[{"id":17162,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17158,"src":"2857:17:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17161,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"2835:21:97","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":17163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2835:40:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17164,"nodeType":"ExpressionStatement","src":"2835:40:97"},{"expression":{"id":17167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17165,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17133,"src":"2886:10:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17166,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17156,"src":"2899:9:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2886:22:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17168,"nodeType":"ExpressionStatement","src":"2886:22:97"}]},"functionSelector":"cd6dc687","id":17170,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":17159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17156,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17170,"src":"2708:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17155,"name":"address","nodeType":"ElementaryTypeName","src":"2708:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17158,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17170,"src":"2727:25:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17157,"name":"uint256","nodeType":"ElementaryTypeName","src":"2727:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2707:46:97"},"returnParameters":{"id":17160,"nodeType":"ParameterList","parameters":[],"src":"2763:0:97"},"scope":17227,"src":"2688:227:97","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":17178,"nodeType":"Block","src":"2986:34:97","statements":[{"expression":{"id":17176,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17133,"src":"3003:10:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17175,"id":17177,"nodeType":"Return","src":"2996:17:97"}]},"functionSelector":"1b88094d","id":17179,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":17172,"nodeType":"OverrideSpecifier","overrides":[],"src":"2959:8:97"},"parameters":{"id":17171,"nodeType":"ParameterList","parameters":[],"src":"2942:2:97"},"returnParameters":{"id":17175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17174,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17179,"src":"2977:7:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17173,"name":"address","nodeType":"ElementaryTypeName","src":"2977:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2976:9:97"},"scope":17227,"src":"2921:99:97","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17186,"nodeType":"Block","src":"3103:45:97","statements":[{"expression":{"id":17184,"name":"_baseL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17129,"src":"3120:21:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"functionReturnParameters":17183,"id":17185,"nodeType":"Return","src":"3113:28:97"}]},"functionSelector":"a267b631","id":17187,"implemented":true,"kind":"function","modifiers":[],"name":"getBaseL1StandardBridge","nodeType":"FunctionDefinition","parameters":{"id":17180,"nodeType":"ParameterList","parameters":[],"src":"3058:2:97"},"returnParameters":{"id":17183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17182,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17187,"src":"3084:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17181,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"3084:17:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"internal"}],"src":"3083:19:97"},"scope":17227,"src":"3026:122:97","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17194,"nodeType":"Block","src":"3208:32:97","statements":[{"expression":{"id":17192,"name":"_baseBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17131,"src":"3225:8:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17191,"id":17193,"nodeType":"Return","src":"3218:15:97"}]},"functionSelector":"b4921aa3","id":17195,"implemented":true,"kind":"function","modifiers":[],"name":"getBaseBal","nodeType":"FunctionDefinition","parameters":{"id":17188,"nodeType":"ParameterList","parameters":[],"src":"3173:2:97"},"returnParameters":{"id":17191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17190,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17195,"src":"3199:7:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17189,"name":"address","nodeType":"ElementaryTypeName","src":"3199:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3198:9:97"},"scope":17227,"src":"3154:86:97","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[15040],"body":{"id":17225,"nodeType":"Block","src":"3309:271:97","statements":[{"expression":{"arguments":[{"arguments":[{"id":17206,"name":"_baseL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17129,"src":"3349:21:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}],"id":17205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3341:7:97","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17204,"name":"address","nodeType":"ElementaryTypeName","src":"3341:7:97","typeDescriptions":{}}},"id":17207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3341:30:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17208,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17197,"src":"3373:10:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17201,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"3319:9:97","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":17203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"3319:21:97","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":17209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3319:65:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17210,"nodeType":"ExpressionStatement","src":"3319:65:97"},{"expression":{"arguments":[{"arguments":[{"id":17216,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"3508:9:97","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":17215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3500:7:97","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17214,"name":"address","nodeType":"ElementaryTypeName","src":"3500:7:97","typeDescriptions":{}}},"id":17217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3500:18:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17218,"name":"_baseBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17131,"src":"3520:8:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17219,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17133,"src":"3530:10:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17220,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17197,"src":"3542:10:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17221,"name":"_MIN_GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17127,"src":"3554:14:97","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"","id":17222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3570:2:97","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":17211,"name":"_baseL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17129,"src":"3463:21:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"id":17213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"depositERC20To","nodeType":"MemberAccess","referencedDeclaration":839,"src":"3463:36:97","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint32,bytes memory) external"}},"id":17223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3463:110:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17224,"nodeType":"ExpressionStatement","src":"3463:110:97"}]},"id":17226,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":17199,"nodeType":"OverrideSpecifier","overrides":[],"src":"3300:8:97"},"parameters":{"id":17198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17197,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":17226,"src":"3271:18:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17196,"name":"uint256","nodeType":"ElementaryTypeName","src":"3271:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3270:20:97"},"returnParameters":{"id":17200,"nodeType":"ParameterList","parameters":[],"src":"3309:0:97"},"scope":17227,"src":"3246:334:97","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":17228,"src":"916:2666:97"}],"src":"688:2895:97"},"id":97},"contracts/gauges/base/BaseRootGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/base/BaseRootGaugeFactory.sol","exportedSymbols":{"BaseRootGaugeFactory":[17290]},"id":17291,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17229,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:98"},{"id":17230,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:98"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":17231,"nodeType":"ImportDirective","scope":17291,"sourceUnit":3698,"src":"747:88:98","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":17232,"nodeType":"ImportDirective","scope":17291,"sourceUnit":13897,"src":"837:33:98","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/base/BaseRootGauge.sol","file":"./BaseRootGauge.sol","id":17233,"nodeType":"ImportDirective","scope":17291,"sourceUnit":17228,"src":"871:29:98","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17234,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"935:16:98","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":17235,"nodeType":"InheritanceSpecifier","src":"935:16:98"},{"baseName":{"id":17236,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"953:23:98","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":17237,"nodeType":"InheritanceSpecifier","src":"953:23:98"}],"contractDependencies":[941,2259,3128,3697,13896,17227],"contractKind":"contract","fullyImplemented":true,"id":17290,"linearizedBaseContracts":[17290,3697,3128,2259,13896,941],"name":"BaseRootGaugeFactory","nodeType":"ContractDefinition","nodes":[{"body":{"id":17262,"nodeType":"Block","src":"1270:64:98","statements":[]},"id":17263,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"id":17252,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17241,"src":"1186:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":17253,"name":"baseL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17243,"src":"1194:20:98","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},{"id":17254,"name":"baseBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17245,"src":"1216:7:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},{"typeIdentifier":"t_address","typeString":"address"}],"id":17251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1168:17:98","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$_t_contract$_IL1StandardBridge_$840_$_t_address_$returns$_t_contract$_BaseRootGauge_$17227_$","typeString":"function (contract IMainnetBalancerMinter,contract IL1StandardBridge,address) returns (contract BaseRootGauge)"},"typeName":{"id":17250,"name":"BaseRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":17227,"src":"1172:13:98","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRootGauge_$17227","typeString":"contract BaseRootGauge"}}},"id":17255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1168:56:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BaseRootGauge_$17227","typeString":"contract BaseRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaseRootGauge_$17227","typeString":"contract BaseRootGauge"}],"id":17249,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1160:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17248,"name":"address","nodeType":"ElementaryTypeName","src":"1160:7:98","typeDescriptions":{}}},"id":17256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1160:65:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17257,"modifierName":{"id":17247,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1143:16:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"1143:83:98"},{"arguments":[{"id":17259,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17239,"src":"1259:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":17260,"modifierName":{"id":17258,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1235:23:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1235:30:98"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17239,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":17263,"src":"1004:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":17238,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1004:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":17241,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17263,"src":"1026:29:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17240,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1026:22:98","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17243,"mutability":"mutable","name":"baseL1StandardBridge","nodeType":"VariableDeclaration","scope":17263,"src":"1065:38:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17242,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"1065:17:98","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"internal"},{"constant":false,"id":17245,"mutability":"mutable","name":"baseBal","nodeType":"VariableDeclaration","scope":17263,"src":"1113:15:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17244,"name":"address","nodeType":"ElementaryTypeName","src":"1113:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"994:140:98"},"returnParameters":{"id":17261,"nodeType":"ParameterList","parameters":[],"src":"1270:0:98"},"scope":17290,"src":"983:351:98","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17288,"nodeType":"Block","src":"1900:135:98","statements":[{"assignments":[17274],"declarations":[{"constant":false,"id":17274,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":17288,"src":"1910:13:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17273,"name":"address","nodeType":"ElementaryTypeName","src":"1910:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17277,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17275,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"1926:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":17276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1926:9:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1910:25:98"},{"expression":{"arguments":[{"id":17282,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17266,"src":"1977:9:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17283,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17268,"src":"1988:17:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":17279,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17274,"src":"1959:5:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17278,"name":"BaseRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17227,"src":"1945:13:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseRootGauge_$17227_$","typeString":"type(contract BaseRootGauge)"}},"id":17280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1945:20:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BaseRootGauge_$17227","typeString":"contract BaseRootGauge"}},"id":17281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":17170,"src":"1945:31:98","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":17284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1945:61:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17285,"nodeType":"ExpressionStatement","src":"1945:61:98"},{"expression":{"id":17286,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17274,"src":"2023:5:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17272,"id":17287,"nodeType":"Return","src":"2016:12:98"}]},"documentation":{"id":17264,"nodeType":"StructuredDocumentation","src":"1340:466:98","text":" @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Optimism.\n @dev Care must be taken to ensure that gauges deployed from this factory are\n suitable before they are added to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":17289,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":17269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17266,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17289,"src":"1827:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17265,"name":"address","nodeType":"ElementaryTypeName","src":"1827:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17268,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17289,"src":"1846:25:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17267,"name":"uint256","nodeType":"ElementaryTypeName","src":"1846:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1826:46:98"},"returnParameters":{"id":17272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17271,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17289,"src":"1891:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17270,"name":"address","nodeType":"ElementaryTypeName","src":"1891:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1890:9:98"},"scope":17290,"src":"1811:224:98","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17291,"src":"902:1135:98"}],"src":"688:1350:98"},"id":98},"contracts/gauges/ethereum/LiquidityGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/ethereum/LiquidityGaugeFactory.sol","exportedSymbols":{"LiquidityGaugeFactory":[17336]},"id":17337,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17292,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:99"},{"id":17293,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:99"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","id":17294,"nodeType":"ImportDirective","scope":17337,"sourceUnit":1455,"src":"747:92:99","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":17295,"nodeType":"ImportDirective","scope":17337,"sourceUnit":13897,"src":"841:33:99","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17296,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"910:16:99","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":17297,"nodeType":"InheritanceSpecifier","src":"910:16:99"}],"contractDependencies":[941,13896],"contractKind":"contract","fullyImplemented":true,"id":17336,"linearizedBaseContracts":[17336,13896,941],"name":"LiquidityGaugeFactory","nodeType":"ContractDefinition","nodes":[{"body":{"id":17308,"nodeType":"Block","src":"1008:64:99","statements":[]},"id":17309,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"id":17304,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17299,"src":"1000:5:99","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$1454","typeString":"contract IStakingLiquidityGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$1454","typeString":"contract IStakingLiquidityGauge"}],"id":17303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"992:7:99","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17302,"name":"address","nodeType":"ElementaryTypeName","src":"992:7:99","typeDescriptions":{}}},"id":17305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"992:14:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17306,"modifierName":{"id":17301,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"975:16:99","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"975:32:99"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17299,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":17309,"src":"945:28:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$1454","typeString":"contract IStakingLiquidityGauge"},"typeName":{"id":17298,"name":"IStakingLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1454,"src":"945:22:99","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$1454","typeString":"contract IStakingLiquidityGauge"}},"visibility":"internal"}],"src":"944:30:99"},"returnParameters":{"id":17307,"nodeType":"ParameterList","parameters":[],"src":"1008:0:99"},"scope":17336,"src":"933:139:99","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17334,"nodeType":"Block","src":"1807:139:99","statements":[{"assignments":[17320],"declarations":[{"constant":false,"id":17320,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":17334,"src":"1817:13:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17319,"name":"address","nodeType":"ElementaryTypeName","src":"1817:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17323,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17321,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"1833:7:99","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":17322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1833:9:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1817:25:99"},{"expression":{"arguments":[{"id":17328,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17312,"src":"1893:4:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17329,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17314,"src":"1899:17:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":17325,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17320,"src":"1875:5:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17324,"name":"IStakingLiquidityGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1454,"src":"1852:22:99","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakingLiquidityGauge_$1454_$","typeString":"type(contract IStakingLiquidityGauge)"}},"id":17326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1852:29:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$1454","typeString":"contract IStakingLiquidityGauge"}},"id":17327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":1436,"src":"1852:40:99","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":17330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1852:65:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17331,"nodeType":"ExpressionStatement","src":"1852:65:99"},{"expression":{"id":17332,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17320,"src":"1934:5:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17318,"id":17333,"nodeType":"Return","src":"1927:12:99"}]},"documentation":{"id":17310,"nodeType":"StructuredDocumentation","src":"1078:640:99","text":" @notice Deploys a new gauge for a Balancer pool.\n @dev As anyone can register arbitrary Balancer pools with the Vault,\n it's impossible to prove onchain that `pool` is a \"valid\" deployment.\n Care must be taken to ensure that gauges deployed from this factory are\n suitable before they are added to the GaugeController.\n It is possible to deploy multiple gauges for a single pool.\n @param pool The address of the pool for which to deploy a gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":17335,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":17315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17312,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":17335,"src":"1739:12:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17311,"name":"address","nodeType":"ElementaryTypeName","src":"1739:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17314,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17335,"src":"1753:25:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17313,"name":"uint256","nodeType":"ElementaryTypeName","src":"1753:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1738:41:99"},"returnParameters":{"id":17318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17317,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17335,"src":"1798:7:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17316,"name":"address","nodeType":"ElementaryTypeName","src":"1798:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1797:9:99"},"scope":17336,"src":"1723:223:99","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17337,"src":"876:1072:99"}],"src":"688:1261:99"},"id":99},"contracts/gauges/ethereum/SingleRecipientGauge.sol":{"ast":{"absolutePath":"contracts/gauges/ethereum/SingleRecipientGauge.sol","exportedSymbols":{"SingleRecipientGauge":[17450]},"id":17451,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17338,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:100"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol","id":17339,"nodeType":"ImportDirective","scope":17451,"sourceUnit":625,"src":"713:85:100","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol","id":17340,"nodeType":"ImportDirective","scope":17451,"sourceUnit":3737,"src":"799:72:100","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":17341,"nodeType":"ImportDirective","scope":17451,"sourceUnit":7342,"src":"872:79:100","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":17342,"nodeType":"ImportDirective","scope":17451,"sourceUnit":15197,"src":"953:31:100","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17343,"name":"Version","nodeType":"UserDefinedTypeName","referencedDeclaration":3736,"src":"1019:7:100","typeDescriptions":{"typeIdentifier":"t_contract$_Version_$3736","typeString":"contract Version"}},"id":17344,"nodeType":"InheritanceSpecifier","src":"1019:7:100"},{"baseName":{"id":17345,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"1028:14:100","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":17346,"nodeType":"InheritanceSpecifier","src":"1028:14:100"}],"contractDependencies":[928,1239,2340,3736,7187,15196],"contractKind":"contract","fullyImplemented":true,"id":17450,"linearizedBaseContracts":[17450,15196,7187,1239,928,3736,2340],"name":"SingleRecipientGauge","nodeType":"ContractDefinition","nodes":[{"id":17349,"libraryName":{"id":17347,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"1055:9:100","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1049:27:100","typeName":{"id":17348,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1069:6:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":false,"id":17351,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":17450,"src":"1082:26:100","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17350,"name":"address","nodeType":"ElementaryTypeName","src":"1082:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":17353,"mutability":"mutable","name":"_feeDistributorRecipient","nodeType":"VariableDeclaration","scope":17450,"src":"1114:37:100","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17352,"name":"bool","nodeType":"ElementaryTypeName","src":"1114:4:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"body":{"id":17364,"nodeType":"Block","src":"1386:64:100","statements":[]},"id":17365,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"","id":17358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1359:2:100","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"id":17359,"modifierName":{"id":17357,"name":"Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"1351:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Version_$3736_$","typeString":"type(contract Version)"}},"nodeType":"ModifierInvocation","src":"1351:11:100"},{"arguments":[{"id":17361,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17355,"src":"1378:6:100","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":17362,"modifierName":{"id":17360,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"1363:14:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"1363:22:100"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17355,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17365,"src":"1320:29:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17354,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1320:22:100","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"}],"src":"1319:31:100"},"returnParameters":{"id":17363,"nodeType":"ParameterList","parameters":[],"src":"1386:0:100"},"scope":17450,"src":"1308:142:100","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17392,"nodeType":"Block","src":"1622:242:100","statements":[{"expression":{"arguments":[{"id":17377,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17369,"src":"1716:17:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17376,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"1694:21:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":17378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1694:40:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17379,"nodeType":"ExpressionStatement","src":"1694:40:100"},{"expression":{"id":17382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17380,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17351,"src":"1745:10:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17381,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17367,"src":"1758:9:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1745:22:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17383,"nodeType":"ExpressionStatement","src":"1745:22:100"},{"expression":{"id":17386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17384,"name":"_feeDistributorRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17353,"src":"1777:24:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17385,"name":"feeDistributorRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17371,"src":"1804:23:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1777:50:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17387,"nodeType":"ExpressionStatement","src":"1777:50:100"},{"expression":{"arguments":[{"id":17389,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17373,"src":"1849:7:100","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":17388,"name":"_setVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3735,"src":"1837:11:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":17390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1837:20:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17391,"nodeType":"ExpressionStatement","src":"1837:20:100"}]},"functionSelector":"06b70aa2","id":17393,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":17374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17367,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17393,"src":"1485:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17366,"name":"address","nodeType":"ElementaryTypeName","src":"1485:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17369,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17393,"src":"1512:25:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17368,"name":"uint256","nodeType":"ElementaryTypeName","src":"1512:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17371,"mutability":"mutable","name":"feeDistributorRecipient","nodeType":"VariableDeclaration","scope":17393,"src":"1547:28:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17370,"name":"bool","nodeType":"ElementaryTypeName","src":"1547:4:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":17373,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":17393,"src":"1585:21:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17372,"name":"string","nodeType":"ElementaryTypeName","src":"1585:6:100","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1475:137:100"},"returnParameters":{"id":17375,"nodeType":"ParameterList","parameters":[],"src":"1622:0:100"},"scope":17450,"src":"1456:408:100","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":17401,"nodeType":"Block","src":"1933:34:100","statements":[{"expression":{"id":17399,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17351,"src":"1950:10:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17398,"id":17400,"nodeType":"Return","src":"1943:17:100"}]},"functionSelector":"1b88094d","id":17402,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":17395,"nodeType":"OverrideSpecifier","overrides":[],"src":"1906:8:100"},"parameters":{"id":17394,"nodeType":"ParameterList","parameters":[],"src":"1891:2:100"},"returnParameters":{"id":17398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17397,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17402,"src":"1924:7:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17396,"name":"address","nodeType":"ElementaryTypeName","src":"1924:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1923:9:100"},"scope":17450,"src":"1870:97:100","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":17409,"nodeType":"Block","src":"2037:48:100","statements":[{"expression":{"id":17407,"name":"_feeDistributorRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17353,"src":"2054:24:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":17406,"id":17408,"nodeType":"Return","src":"2047:31:100"}]},"functionSelector":"95d666c8","id":17410,"implemented":true,"kind":"function","modifiers":[],"name":"isRecipientFeeDistributor","nodeType":"FunctionDefinition","parameters":{"id":17403,"nodeType":"ParameterList","parameters":[],"src":"2007:2:100"},"returnParameters":{"id":17406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17405,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17410,"src":"2031:4:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17404,"name":"bool","nodeType":"ElementaryTypeName","src":"2031:4:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2030:6:100"},"scope":17450,"src":"1973:112:100","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[15040],"body":{"id":17448,"nodeType":"Block","src":"2154:315:100","statements":[{"assignments":[17417],"declarations":[{"constant":false,"id":17417,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17448,"src":"2164:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17416,"name":"address","nodeType":"ElementaryTypeName","src":"2164:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17420,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17418,"name":"getRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17402,"src":"2184:12:100","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":17419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2184:14:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2164:34:100"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":17421,"name":"isRecipientFeeDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17410,"src":"2213:25:100","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":17422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2213:27:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17446,"nodeType":"Block","src":"2393:70:100","statements":[{"expression":{"arguments":[{"id":17442,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17417,"src":"2430:9:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17443,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17412,"src":"2441:10:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17439,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2407:9:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":17441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7276,"src":"2407:22:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":17444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2407:45:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17445,"nodeType":"ExpressionStatement","src":"2407:45:100"}]},"id":17447,"nodeType":"IfStatement","src":"2209:254:100","trueBody":{"id":17438,"nodeType":"Block","src":"2242:145:100","statements":[{"expression":{"arguments":[{"id":17426,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17417,"src":"2278:9:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17427,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17412,"src":"2289:10:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17423,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2256:9:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":17425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"2256:21:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":17428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2256:44:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17429,"nodeType":"ExpressionStatement","src":"2256:44:100"},{"expression":{"arguments":[{"id":17434,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2354:9:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":17435,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17412,"src":"2365:10:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":17431,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17417,"src":"2330:9:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17430,"name":"IFeeDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":624,"src":"2314:15:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFeeDistributor_$624_$","typeString":"type(contract IFeeDistributor)"}},"id":17432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2314:26:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFeeDistributor_$624","typeString":"contract IFeeDistributor"}},"id":17433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"depositToken","nodeType":"MemberAccess","referencedDeclaration":568,"src":"2314:39:100","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$2447_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256) external"}},"id":17436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2314:62:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17437,"nodeType":"ExpressionStatement","src":"2314:62:100"}]}}]},"id":17449,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":17414,"nodeType":"OverrideSpecifier","overrides":[],"src":"2145:8:100"},"parameters":{"id":17413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17412,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":17449,"src":"2116:18:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17411,"name":"uint256","nodeType":"ElementaryTypeName","src":"2116:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2115:20:100"},"returnParameters":{"id":17415,"nodeType":"ParameterList","parameters":[],"src":"2154:0:100"},"scope":17450,"src":"2091:378:100","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":17451,"src":"986:1485:100"}],"src":"688:1784:100"},"id":100},"contracts/gauges/ethereum/SingleRecipientGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/ethereum/SingleRecipientGaugeFactory.sol","exportedSymbols":{"SingleRecipientGaugeFactory":[17527]},"id":17528,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17452,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:101"},{"id":17453,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:101"},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":17454,"nodeType":"ImportDirective","scope":17528,"sourceUnit":13897,"src":"747:33:101","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/ethereum/SingleRecipientGauge.sol","file":"./SingleRecipientGauge.sol","id":17455,"nodeType":"ImportDirective","scope":17528,"sourceUnit":17451,"src":"781:36:101","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17456,"name":"Version","nodeType":"UserDefinedTypeName","referencedDeclaration":3736,"src":"859:7:101","typeDescriptions":{"typeIdentifier":"t_contract$_Version_$3736","typeString":"contract Version"}},"id":17457,"nodeType":"InheritanceSpecifier","src":"859:7:101"},{"baseName":{"id":17458,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"868:16:101","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":17459,"nodeType":"InheritanceSpecifier","src":"868:16:101"}],"contractDependencies":[941,2340,3736,13896,17450],"contractKind":"contract","fullyImplemented":true,"id":17527,"linearizedBaseContracts":[17527,13896,941,3736,2340],"name":"SingleRecipientGaugeFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":17461,"mutability":"mutable","name":"_productVersion","nodeType":"VariableDeclaration","scope":17527,"src":"891:30:101","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":17460,"name":"string","nodeType":"ElementaryTypeName","src":"891:6:101","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":17486,"nodeType":"Block","src":"1145:49:101","statements":[{"expression":{"id":17484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17482,"name":"_productVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17461,"src":"1155:15:101","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17483,"name":"productVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17467,"src":"1173:14:101","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1155:32:101","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":17485,"nodeType":"ExpressionStatement","src":"1155:32:101"}]},"id":17487,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":17470,"name":"factoryVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17465,"src":"1069:14:101","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":17471,"modifierName":{"id":17469,"name":"Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"1061:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Version_$3736_$","typeString":"type(contract Version)"}},"nodeType":"ModifierInvocation","src":"1061:23:101"},{"arguments":[{"arguments":[{"arguments":[{"id":17477,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17463,"src":"1135:6:101","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}],"id":17476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1110:24:101","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$returns$_t_contract$_SingleRecipientGauge_$17450_$","typeString":"function (contract IMainnetBalancerMinter) returns (contract SingleRecipientGauge)"},"typeName":{"id":17475,"name":"SingleRecipientGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":17450,"src":"1114:20:101","typeDescriptions":{"typeIdentifier":"t_contract$_SingleRecipientGauge_$17450","typeString":"contract SingleRecipientGauge"}}},"id":17478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1110:32:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_SingleRecipientGauge_$17450","typeString":"contract SingleRecipientGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SingleRecipientGauge_$17450","typeString":"contract SingleRecipientGauge"}],"id":17474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1102:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17473,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:101","typeDescriptions":{}}},"id":17479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1102:41:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17480,"modifierName":{"id":17472,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1085:16:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"1085:59:101"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17463,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17487,"src":"949:29:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17462,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"949:22:101","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17465,"mutability":"mutable","name":"factoryVersion","nodeType":"VariableDeclaration","scope":17487,"src":"988:28:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17464,"name":"string","nodeType":"ElementaryTypeName","src":"988:6:101","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":17467,"mutability":"mutable","name":"productVersion","nodeType":"VariableDeclaration","scope":17487,"src":"1026:28:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17466,"name":"string","nodeType":"ElementaryTypeName","src":"1026:6:101","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"939:121:101"},"returnParameters":{"id":17481,"nodeType":"ParameterList","parameters":[],"src":"1145:0:101"},"scope":17527,"src":"928:266:101","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17494,"nodeType":"Block","src":"1265:39:101","statements":[{"expression":{"id":17492,"name":"_productVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17461,"src":"1282:15:101","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":17491,"id":17493,"nodeType":"Return","src":"1275:22:101"}]},"functionSelector":"18d6186f","id":17495,"implemented":true,"kind":"function","modifiers":[],"name":"getProductVersion","nodeType":"FunctionDefinition","parameters":{"id":17488,"nodeType":"ParameterList","parameters":[],"src":"1226:2:101"},"returnParameters":{"id":17491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17490,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17495,"src":"1250:13:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17489,"name":"string","nodeType":"ElementaryTypeName","src":"1250:6:101","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1249:15:101"},"scope":17527,"src":"1200:104:101","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":17525,"nodeType":"Block","src":"2083:246:101","statements":[{"assignments":[17508],"declarations":[{"constant":false,"id":17508,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":17525,"src":"2093:13:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17507,"name":"address","nodeType":"ElementaryTypeName","src":"2093:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17511,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17509,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"2109:7:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":17510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2109:9:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2093:25:101"},{"expression":{"arguments":[{"id":17516,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17498,"src":"2180:9:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17517,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17500,"src":"2203:17:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17518,"name":"feeDistributorRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17502,"src":"2234:23:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":17519,"name":"getProductVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17495,"src":"2271:17:101","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":17520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2271:19:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"arguments":[{"id":17513,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17508,"src":"2149:5:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17512,"name":"SingleRecipientGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17450,"src":"2128:20:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingleRecipientGauge_$17450_$","typeString":"type(contract SingleRecipientGauge)"}},"id":17514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2128:27:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_SingleRecipientGauge_$17450","typeString":"contract SingleRecipientGauge"}},"id":17515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":17393,"src":"2128:38:101","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,uint256,bool,string memory) external"}},"id":17521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2128:172:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17522,"nodeType":"ExpressionStatement","src":"2128:172:101"},{"expression":{"id":17523,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17508,"src":"2317:5:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17506,"id":17524,"nodeType":"Return","src":"2310:12:101"}]},"documentation":{"id":17496,"nodeType":"StructuredDocumentation","src":"1310:619:101","text":" @notice Deploys a new gauge which sends all of its BAL allowance to a single recipient.\n @dev Care must be taken to ensure that gauges deployed from this factory are\n suitable before they are added to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @param feeDistributorRecipient True if the recipient implements the IFeeDistributor interface and should receive\n tokens via the `depositToken` function.\n @return The address of the deployed gauge"},"functionSelector":"58e4e2d7","id":17526,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":17503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17498,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17526,"src":"1959:17:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17497,"name":"address","nodeType":"ElementaryTypeName","src":"1959:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17500,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17526,"src":"1986:25:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17499,"name":"uint256","nodeType":"ElementaryTypeName","src":"1986:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17502,"mutability":"mutable","name":"feeDistributorRecipient","nodeType":"VariableDeclaration","scope":17526,"src":"2021:28:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17501,"name":"bool","nodeType":"ElementaryTypeName","src":"2021:4:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1949:106:101"},"returnParameters":{"id":17506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17505,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17526,"src":"2074:7:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17504,"name":"address","nodeType":"ElementaryTypeName","src":"2074:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2073:9:101"},"scope":17527,"src":"1934:395:101","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17528,"src":"819:1512:101"}],"src":"688:1644:101"},"id":101},"contracts/gauges/gnosis/GnosisRootGauge.sol":{"ast":{"absolutePath":"contracts/gauges/gnosis/GnosisRootGauge.sol","exportedSymbols":{"GnosisRootGauge":[17620],"IGnosisBridge":[17540]},"id":17621,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17529,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:102"},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":17530,"nodeType":"ImportDirective","scope":17621,"sourceUnit":15197,"src":"713:31:102","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":17540,"linearizedBaseContracts":[17540],"name":"IGnosisBridge","nodeType":"ContractDefinition","nodes":[{"functionSelector":"ad58bdd1","id":17539,"implemented":false,"kind":"function","modifiers":[],"name":"relayTokens","nodeType":"FunctionDefinition","parameters":{"id":17537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17532,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":17539,"src":"806:12:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":17531,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"806:6:102","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17534,"mutability":"mutable","name":"_receiver","nodeType":"VariableDeclaration","scope":17539,"src":"828:17:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17533,"name":"address","nodeType":"ElementaryTypeName","src":"828:7:102","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17536,"mutability":"mutable","name":"_value","nodeType":"VariableDeclaration","scope":17539,"src":"855:14:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17535,"name":"uint256","nodeType":"ElementaryTypeName","src":"855:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"796:79:102"},"returnParameters":{"id":17538,"nodeType":"ParameterList","parameters":[],"src":"884:0:102"},"scope":17540,"src":"776:109:102","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17621,"src":"746:141:102"},{"abstract":false,"baseContracts":[{"baseName":{"id":17541,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"917:14:102","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":17542,"nodeType":"InheritanceSpecifier","src":"917:14:102"}],"contractDependencies":[928,1239,7187,15196],"contractKind":"contract","fullyImplemented":true,"id":17620,"linearizedBaseContracts":[17620,15196,7187,1239,928],"name":"GnosisRootGauge","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":17544,"mutability":"immutable","name":"_gnosisBridge","nodeType":"VariableDeclaration","scope":17620,"src":"938:45:102","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"},"typeName":{"id":17543,"name":"IGnosisBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":17540,"src":"938:13:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"visibility":"private"},{"constant":false,"id":17546,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":17620,"src":"1107:26:102","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17545,"name":"address","nodeType":"ElementaryTypeName","src":"1107:7:102","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":17560,"nodeType":"Block","src":"1234:45:102","statements":[{"expression":{"id":17558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17556,"name":"_gnosisBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17544,"src":"1244:13:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17557,"name":"gnosisBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17550,"src":"1260:12:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"src":"1244:28:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"id":17559,"nodeType":"ExpressionStatement","src":"1244:28:102"}]},"id":17561,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":17553,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17548,"src":"1226:6:102","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":17554,"modifierName":{"id":17552,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"1211:14:102","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"1211:22:102"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17548,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17561,"src":"1152:29:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17547,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1152:22:102","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17550,"mutability":"mutable","name":"gnosisBridge","nodeType":"VariableDeclaration","scope":17561,"src":"1183:26:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"},"typeName":{"id":17549,"name":"IGnosisBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":17540,"src":"1183:13:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"visibility":"internal"}],"src":"1151:59:102"},"returnParameters":{"id":17555,"nodeType":"ParameterList","parameters":[],"src":"1234:0:102"},"scope":17620,"src":"1140:139:102","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17576,"nodeType":"Block","src":"1360:152:102","statements":[{"expression":{"arguments":[{"id":17569,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17565,"src":"1454:17:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17568,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"1432:21:102","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":17570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1432:40:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17571,"nodeType":"ExpressionStatement","src":"1432:40:102"},{"expression":{"id":17574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17572,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17546,"src":"1483:10:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17573,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17563,"src":"1496:9:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1483:22:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17575,"nodeType":"ExpressionStatement","src":"1483:22:102"}]},"functionSelector":"cd6dc687","id":17577,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":17566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17563,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17577,"src":"1305:17:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17562,"name":"address","nodeType":"ElementaryTypeName","src":"1305:7:102","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17565,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17577,"src":"1324:25:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17564,"name":"uint256","nodeType":"ElementaryTypeName","src":"1324:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1304:46:102"},"returnParameters":{"id":17567,"nodeType":"ParameterList","parameters":[],"src":"1360:0:102"},"scope":17620,"src":"1285:227:102","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":17585,"nodeType":"Block","src":"1583:34:102","statements":[{"expression":{"id":17583,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17546,"src":"1600:10:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17582,"id":17584,"nodeType":"Return","src":"1593:17:102"}]},"functionSelector":"1b88094d","id":17586,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":17579,"nodeType":"OverrideSpecifier","overrides":[],"src":"1556:8:102"},"parameters":{"id":17578,"nodeType":"ParameterList","parameters":[],"src":"1539:2:102"},"returnParameters":{"id":17582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17581,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17586,"src":"1574:7:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17580,"name":"address","nodeType":"ElementaryTypeName","src":"1574:7:102","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1573:9:102"},"scope":17620,"src":"1518:99:102","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17593,"nodeType":"Block","src":"1688:37:102","statements":[{"expression":{"id":17591,"name":"_gnosisBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17544,"src":"1705:13:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"functionReturnParameters":17590,"id":17592,"nodeType":"Return","src":"1698:20:102"}]},"functionSelector":"ae35ebfb","id":17594,"implemented":true,"kind":"function","modifiers":[],"name":"getGnosisBridge","nodeType":"FunctionDefinition","parameters":{"id":17587,"nodeType":"ParameterList","parameters":[],"src":"1647:2:102"},"returnParameters":{"id":17590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17589,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17594,"src":"1673:13:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"},"typeName":{"id":17588,"name":"IGnosisBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":17540,"src":"1673:13:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"visibility":"internal"}],"src":"1672:15:102"},"scope":17620,"src":"1623:102:102","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[15040],"body":{"id":17618,"nodeType":"Block","src":"1794:207:102","statements":[{"expression":{"arguments":[{"arguments":[{"id":17605,"name":"_gnosisBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17544,"src":"1830:13:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}],"id":17604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1822:7:102","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17603,"name":"address","nodeType":"ElementaryTypeName","src":"1822:7:102","typeDescriptions":{}}},"id":17606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1822:22:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17607,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17596,"src":"1846:10:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17600,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"1804:9:102","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":17602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2416,"src":"1804:17:102","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":17608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1804:53:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17609,"nodeType":"ExpressionStatement","src":"1804:53:102"},{"expression":{"arguments":[{"id":17613,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"1960:9:102","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":17614,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17546,"src":"1971:10:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17615,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17596,"src":"1983:10:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17610,"name":"_gnosisBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17544,"src":"1934:13:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"id":17612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"relayTokens","nodeType":"MemberAccess","referencedDeclaration":17539,"src":"1934:25:102","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":17616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1934:60:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17617,"nodeType":"ExpressionStatement","src":"1934:60:102"}]},"id":17619,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":17598,"nodeType":"OverrideSpecifier","overrides":[],"src":"1785:8:102"},"parameters":{"id":17597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17596,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":17619,"src":"1756:18:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17595,"name":"uint256","nodeType":"ElementaryTypeName","src":"1756:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1755:20:102"},"returnParameters":{"id":17599,"nodeType":"ParameterList","parameters":[],"src":"1794:0:102"},"scope":17620,"src":"1731:270:102","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":17621,"src":"889:1114:102"}],"src":"688:1316:102"},"id":102},"contracts/gauges/gnosis/GnosisRootGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/gnosis/GnosisRootGaugeFactory.sol","exportedSymbols":{"GnosisRootGaugeFactory":[17671]},"id":17672,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17622,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:103"},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":17623,"nodeType":"ImportDirective","scope":17672,"sourceUnit":13897,"src":"713:33:103","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/gnosis/GnosisRootGauge.sol","file":"./GnosisRootGauge.sol","id":17624,"nodeType":"ImportDirective","scope":17672,"sourceUnit":17621,"src":"747:31:103","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17625,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"815:16:103","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":17626,"nodeType":"InheritanceSpecifier","src":"815:16:103"}],"contractDependencies":[941,13896,17620],"contractKind":"contract","fullyImplemented":true,"id":17671,"linearizedBaseContracts":[17671,13896,941],"name":"GnosisRootGaugeFactory","nodeType":"ContractDefinition","nodes":[{"body":{"id":17643,"nodeType":"Block","src":"990:64:103","statements":[]},"id":17644,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"id":17637,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17628,"src":"962:6:103","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":17638,"name":"gnosisBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17630,"src":"970:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}],"id":17636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"942:19:103","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$_t_contract$_IGnosisBridge_$17540_$returns$_t_contract$_GnosisRootGauge_$17620_$","typeString":"function (contract IMainnetBalancerMinter,contract IGnosisBridge) returns (contract GnosisRootGauge)"},"typeName":{"id":17635,"name":"GnosisRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":17620,"src":"946:15:103","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisRootGauge_$17620","typeString":"contract GnosisRootGauge"}}},"id":17639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"942:41:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_GnosisRootGauge_$17620","typeString":"contract GnosisRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GnosisRootGauge_$17620","typeString":"contract GnosisRootGauge"}],"id":17634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"934:7:103","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17633,"name":"address","nodeType":"ElementaryTypeName","src":"934:7:103","typeDescriptions":{}}},"id":17640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"934:50:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17641,"modifierName":{"id":17632,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"917:16:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"917:68:103"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17628,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17644,"src":"850:29:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17627,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"850:22:103","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17630,"mutability":"mutable","name":"gnosisBridge","nodeType":"VariableDeclaration","scope":17644,"src":"881:26:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"},"typeName":{"id":17629,"name":"IGnosisBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":17540,"src":"881:13:103","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"visibility":"internal"}],"src":"849:59:103"},"returnParameters":{"id":17642,"nodeType":"ParameterList","parameters":[],"src":"990:0:103"},"scope":17671,"src":"838:216:103","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17669,"nodeType":"Block","src":"1652:137:103","statements":[{"assignments":[17655],"declarations":[{"constant":false,"id":17655,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":17669,"src":"1662:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17654,"name":"address","nodeType":"ElementaryTypeName","src":"1662:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17658,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17656,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"1678:7:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":17657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1678:9:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1662:25:103"},{"expression":{"arguments":[{"id":17663,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17647,"src":"1731:9:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17664,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17649,"src":"1742:17:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":17660,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17655,"src":"1713:5:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17659,"name":"GnosisRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17620,"src":"1697:15:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_GnosisRootGauge_$17620_$","typeString":"type(contract GnosisRootGauge)"}},"id":17661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1697:22:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_GnosisRootGauge_$17620","typeString":"contract GnosisRootGauge"}},"id":17662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":17577,"src":"1697:33:103","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":17665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1697:63:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17666,"nodeType":"ExpressionStatement","src":"1697:63:103"},{"expression":{"id":17667,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17655,"src":"1777:5:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17653,"id":17668,"nodeType":"Return","src":"1770:12:103"}]},"documentation":{"id":17645,"nodeType":"StructuredDocumentation","src":"1060:498:103","text":" @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Gnosis.\n @dev Care must be taken to ensure that gauges deployed from this factory are suitable before they are\n added to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge (18-decimal FP value from 0 to 1)\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":17670,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":17650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17647,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17670,"src":"1579:17:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17646,"name":"address","nodeType":"ElementaryTypeName","src":"1579:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17649,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17670,"src":"1598:25:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17648,"name":"uint256","nodeType":"ElementaryTypeName","src":"1598:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1578:46:103"},"returnParameters":{"id":17653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17652,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17670,"src":"1643:7:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17651,"name":"address","nodeType":"ElementaryTypeName","src":"1643:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1642:9:103"},"scope":17671,"src":"1563:226:103","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17672,"src":"780:1011:103"}],"src":"688:1104:103"},"id":103},"contracts/gauges/optimistic/OptimisticRootGauge.sol":{"ast":{"absolutePath":"contracts/gauges/optimistic/OptimisticRootGauge.sol","exportedSymbols":{"OptimisticRootGauge":[17801]},"id":17802,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17673,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:104"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol","id":17674,"nodeType":"ImportDirective","scope":17802,"sourceUnit":1088,"src":"713:95:104","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol","id":17675,"nodeType":"ImportDirective","scope":17802,"sourceUnit":841,"src":"809:87:104","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":17676,"nodeType":"ImportDirective","scope":17802,"sourceUnit":7342,"src":"898:79:104","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":17677,"nodeType":"ImportDirective","scope":17802,"sourceUnit":15197,"src":"979:31:104","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17678,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"1044:14:104","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":17679,"nodeType":"InheritanceSpecifier","src":"1044:14:104"}],"contractDependencies":[928,1239,7187,15196],"contractKind":"contract","fullyImplemented":true,"id":17801,"linearizedBaseContracts":[17801,15196,7187,1239,928],"name":"OptimisticRootGauge","nodeType":"ContractDefinition","nodes":[{"id":17682,"libraryName":{"id":17680,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"1071:9:104","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1065:27:104","typeName":{"id":17681,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1085:6:104","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":false,"functionSelector":"8759e6d1","id":17684,"mutability":"mutable","name":"NETWORK","nodeType":"VariableDeclaration","scope":17801,"src":"1150:21:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":17683,"name":"string","nodeType":"ElementaryTypeName","src":"1150:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"constant":false,"id":17686,"mutability":"immutable","name":"_optimismL1StandardBridge","nodeType":"VariableDeclaration","scope":17801,"src":"1178:61:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17685,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"1178:17:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"private"},{"constant":false,"id":17688,"mutability":"immutable","name":"_optimismBal","nodeType":"VariableDeclaration","scope":17801,"src":"1245:38:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17687,"name":"address","nodeType":"ElementaryTypeName","src":"1245:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":17690,"mutability":"immutable","name":"_factory","nodeType":"VariableDeclaration","scope":17801,"src":"1289:52:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismGasLimitProvider_$1087","typeString":"contract IOptimismGasLimitProvider"},"typeName":{"id":17689,"name":"IOptimismGasLimitProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":1087,"src":"1289:25:104","typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismGasLimitProvider_$1087","typeString":"contract IOptimismGasLimitProvider"}},"visibility":"private"},{"constant":false,"id":17692,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":17801,"src":"1451:26:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17691,"name":"address","nodeType":"ElementaryTypeName","src":"1451:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":17719,"nodeType":"Block","src":"1645:163:104","statements":[{"expression":{"id":17706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17704,"name":"_optimismL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17686,"src":"1655:25:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17705,"name":"optimismL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17696,"src":"1683:24:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"src":"1655:52:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"id":17707,"nodeType":"ExpressionStatement","src":"1655:52:104"},{"expression":{"id":17710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17708,"name":"_optimismBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17688,"src":"1717:12:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17709,"name":"optimismBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17698,"src":"1732:11:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1717:26:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17711,"nodeType":"ExpressionStatement","src":"1717:26:104"},{"expression":{"id":17717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17712,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17690,"src":"1753:8:104","typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismGasLimitProvider_$1087","typeString":"contract IOptimismGasLimitProvider"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":17714,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1790:3:104","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1790:10:104","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":17713,"name":"IOptimismGasLimitProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1087,"src":"1764:25:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOptimismGasLimitProvider_$1087_$","typeString":"type(contract IOptimismGasLimitProvider)"}},"id":17716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1764:37:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismGasLimitProvider_$1087","typeString":"contract IOptimismGasLimitProvider"}},"src":"1753:48:104","typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismGasLimitProvider_$1087","typeString":"contract IOptimismGasLimitProvider"}},"id":17718,"nodeType":"ExpressionStatement","src":"1753:48:104"}]},"id":17720,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":17701,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17694,"src":"1637:6:104","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":17702,"modifierName":{"id":17700,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"1622:14:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"1622:22:104"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17694,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17720,"src":"1505:29:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17693,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1505:22:104","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17696,"mutability":"mutable","name":"optimismL1StandardBridge","nodeType":"VariableDeclaration","scope":17720,"src":"1544:42:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17695,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"1544:17:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"internal"},{"constant":false,"id":17698,"mutability":"mutable","name":"optimismBal","nodeType":"VariableDeclaration","scope":17720,"src":"1596:19:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17697,"name":"address","nodeType":"ElementaryTypeName","src":"1596:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1495:126:104"},"returnParameters":{"id":17703,"nodeType":"ParameterList","parameters":[],"src":"1645:0:104"},"scope":17801,"src":"1484:324:104","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17741,"nodeType":"Block","src":"1948:185:104","statements":[{"expression":{"arguments":[{"id":17730,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17724,"src":"2042:17:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17729,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"2020:21:104","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":17731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2020:40:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17732,"nodeType":"ExpressionStatement","src":"2020:40:104"},{"expression":{"id":17735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17733,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17692,"src":"2071:10:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17734,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17722,"src":"2084:9:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2071:22:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17736,"nodeType":"ExpressionStatement","src":"2071:22:104"},{"expression":{"id":17739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17737,"name":"NETWORK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17684,"src":"2103:7:104","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17738,"name":"targetNetwork","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17726,"src":"2113:13:104","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2103:23:104","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":17740,"nodeType":"ExpressionStatement","src":"2103:23:104"}]},"functionSelector":"81d60956","id":17742,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":17727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17722,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17742,"src":"1843:17:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17721,"name":"address","nodeType":"ElementaryTypeName","src":"1843:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17724,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17742,"src":"1870:25:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17723,"name":"uint256","nodeType":"ElementaryTypeName","src":"1870:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17726,"mutability":"mutable","name":"targetNetwork","nodeType":"VariableDeclaration","scope":17742,"src":"1905:27:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17725,"name":"string","nodeType":"ElementaryTypeName","src":"1905:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1833:105:104"},"returnParameters":{"id":17728,"nodeType":"ParameterList","parameters":[],"src":"1948:0:104"},"scope":17801,"src":"1814:319:104","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":17750,"nodeType":"Block","src":"2204:34:104","statements":[{"expression":{"id":17748,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17692,"src":"2221:10:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17747,"id":17749,"nodeType":"Return","src":"2214:17:104"}]},"functionSelector":"1b88094d","id":17751,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":17744,"nodeType":"OverrideSpecifier","overrides":[],"src":"2177:8:104"},"parameters":{"id":17743,"nodeType":"ParameterList","parameters":[],"src":"2160:2:104"},"returnParameters":{"id":17747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17746,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17751,"src":"2195:7:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17745,"name":"address","nodeType":"ElementaryTypeName","src":"2195:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2194:9:104"},"scope":17801,"src":"2139:99:104","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17758,"nodeType":"Block","src":"2315:49:104","statements":[{"expression":{"id":17756,"name":"_optimismL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17686,"src":"2332:25:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"functionReturnParameters":17755,"id":17757,"nodeType":"Return","src":"2325:32:104"}]},"functionSelector":"2d8411af","id":17759,"implemented":true,"kind":"function","modifiers":[],"name":"getOptimismBridge","nodeType":"FunctionDefinition","parameters":{"id":17752,"nodeType":"ParameterList","parameters":[],"src":"2270:2:104"},"returnParameters":{"id":17755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17754,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17759,"src":"2296:17:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17753,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"2296:17:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"internal"}],"src":"2295:19:104"},"scope":17801,"src":"2244:120:104","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17766,"nodeType":"Block","src":"2428:36:104","statements":[{"expression":{"id":17764,"name":"_optimismBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17688,"src":"2445:12:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17763,"id":17765,"nodeType":"Return","src":"2438:19:104"}]},"functionSelector":"60b630c4","id":17767,"implemented":true,"kind":"function","modifiers":[],"name":"getOptimismBal","nodeType":"FunctionDefinition","parameters":{"id":17760,"nodeType":"ParameterList","parameters":[],"src":"2393:2:104"},"returnParameters":{"id":17763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17762,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17767,"src":"2419:7:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17761,"name":"address","nodeType":"ElementaryTypeName","src":"2419:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2418:9:104"},"scope":17801,"src":"2370:94:104","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[15040],"body":{"id":17799,"nodeType":"Block","src":"2533:387:104","statements":[{"expression":{"arguments":[{"arguments":[{"id":17778,"name":"_optimismL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17686,"src":"2573:25:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}],"id":17777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2565:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17776,"name":"address","nodeType":"ElementaryTypeName","src":"2565:7:104","typeDescriptions":{}}},"id":17779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2565:34:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17780,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17769,"src":"2601:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17773,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2543:9:104","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":17775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"2543:21:104","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":17781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2543:69:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17782,"nodeType":"ExpressionStatement","src":"2543:69:104"},{"expression":{"arguments":[{"arguments":[{"id":17788,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2757:9:104","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":17787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2749:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17786,"name":"address","nodeType":"ElementaryTypeName","src":"2749:7:104","typeDescriptions":{}}},"id":17789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2749:18:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17790,"name":"_optimismBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17688,"src":"2781:12:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17791,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17692,"src":"2807:10:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17792,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17769,"src":"2831:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17793,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17690,"src":"2855:8:104","typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismGasLimitProvider_$1087","typeString":"contract IOptimismGasLimitProvider"}},"id":17794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getOptimismGasLimit","nodeType":"MemberAccess","referencedDeclaration":1081,"src":"2855:28:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint32_$","typeString":"function () view external returns (uint32)"}},"id":17795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2855:30:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"3078","id":17796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2899:4:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":17783,"name":"_optimismL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17686,"src":"2695:25:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"id":17785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"depositERC20To","nodeType":"MemberAccess","referencedDeclaration":839,"src":"2695:40:104","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint32,bytes memory) external"}},"id":17797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2695:218:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17798,"nodeType":"ExpressionStatement","src":"2695:218:104"}]},"id":17800,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":17771,"nodeType":"OverrideSpecifier","overrides":[],"src":"2524:8:104"},"parameters":{"id":17770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17769,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":17800,"src":"2495:18:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17768,"name":"uint256","nodeType":"ElementaryTypeName","src":"2495:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2494:20:104"},"returnParameters":{"id":17772,"nodeType":"ParameterList","parameters":[],"src":"2533:0:104"},"scope":17801,"src":"2470:450:104","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":17802,"src":"1012:1910:104"}],"src":"688:2235:104"},"id":104},"contracts/gauges/optimistic/OptimisticRootGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/optimistic/OptimisticRootGaugeFactory.sol","exportedSymbols":{"OptimisticRootGaugeFactory":[17915]},"id":17916,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17803,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:105"},{"id":17804,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:105"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":17805,"nodeType":"ImportDirective","scope":17916,"sourceUnit":3698,"src":"747:88:105","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":17806,"nodeType":"ImportDirective","scope":17916,"sourceUnit":13897,"src":"837:33:105","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/optimistic/OptimisticRootGauge.sol","file":"./OptimisticRootGauge.sol","id":17807,"nodeType":"ImportDirective","scope":17916,"sourceUnit":17802,"src":"871:35:105","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17808,"name":"IOptimismGasLimitProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":1087,"src":"947:25:105","typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismGasLimitProvider_$1087","typeString":"contract IOptimismGasLimitProvider"}},"id":17809,"nodeType":"InheritanceSpecifier","src":"947:25:105"},{"baseName":{"id":17810,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"974:16:105","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":17811,"nodeType":"InheritanceSpecifier","src":"974:16:105"},{"baseName":{"id":17812,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"992:23:105","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":17813,"nodeType":"InheritanceSpecifier","src":"992:23:105"}],"contractDependencies":[941,1087,2259,3128,3697,13896,17801],"contractKind":"contract","fullyImplemented":true,"id":17915,"linearizedBaseContracts":[17915,3697,3128,2259,13896,941,1087],"name":"OptimisticRootGaugeFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"8759e6d1","id":17815,"mutability":"mutable","name":"NETWORK","nodeType":"VariableDeclaration","scope":17915,"src":"1074:21:105","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":17814,"name":"string","nodeType":"ElementaryTypeName","src":"1074:6:105","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"constant":false,"id":17817,"mutability":"mutable","name":"_gasLimit","nodeType":"VariableDeclaration","scope":17915,"src":"1102:24:105","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17816,"name":"uint32","nodeType":"ElementaryTypeName","src":"1102:6:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"private"},{"anonymous":false,"id":17821,"name":"OptimismGasLimitModified","nodeType":"EventDefinition","parameters":{"id":17820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17819,"indexed":false,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":17821,"src":"1164:16:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17818,"name":"uint256","nodeType":"ElementaryTypeName","src":"1164:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1163:18:105"},"src":"1133:49:105"},{"body":{"id":17858,"nodeType":"Block","src":"1559:70:105","statements":[{"expression":{"id":17852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17850,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17817,"src":"1569:9:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17851,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17831,"src":"1581:8:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1569:20:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":17853,"nodeType":"ExpressionStatement","src":"1569:20:105"},{"expression":{"id":17856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17854,"name":"NETWORK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17815,"src":"1599:7:105","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17855,"name":"targetNetwork","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17833,"src":"1609:13:105","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1599:23:105","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":17857,"nodeType":"ExpressionStatement","src":"1599:23:105"}]},"id":17859,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"id":17840,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17825,"src":"1467:6:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":17841,"name":"optimismL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17827,"src":"1475:24:105","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},{"id":17842,"name":"optimismBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17829,"src":"1501:11:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},{"typeIdentifier":"t_address","typeString":"address"}],"id":17839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1443:23:105","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$_t_contract$_IL1StandardBridge_$840_$_t_address_$returns$_t_contract$_OptimisticRootGauge_$17801_$","typeString":"function (contract IMainnetBalancerMinter,contract IL1StandardBridge,address) returns (contract OptimisticRootGauge)"},"typeName":{"id":17838,"name":"OptimisticRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":17801,"src":"1447:19:105","typeDescriptions":{"typeIdentifier":"t_contract$_OptimisticRootGauge_$17801","typeString":"contract OptimisticRootGauge"}}},"id":17843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1443:70:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimisticRootGauge_$17801","typeString":"contract OptimisticRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OptimisticRootGauge_$17801","typeString":"contract OptimisticRootGauge"}],"id":17837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1435:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17836,"name":"address","nodeType":"ElementaryTypeName","src":"1435:7:105","typeDescriptions":{}}},"id":17844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1435:79:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17845,"modifierName":{"id":17835,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1418:16:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"1418:97:105"},{"arguments":[{"id":17847,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17823,"src":"1548:5:105","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":17848,"modifierName":{"id":17846,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1524:23:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1524:30:105"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17823,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":17859,"src":"1209:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":17822,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1209:6:105","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":17825,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17859,"src":"1231:29:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17824,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1231:22:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17827,"mutability":"mutable","name":"optimismL1StandardBridge","nodeType":"VariableDeclaration","scope":17859,"src":"1270:42:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17826,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"1270:17:105","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"internal"},{"constant":false,"id":17829,"mutability":"mutable","name":"optimismBal","nodeType":"VariableDeclaration","scope":17859,"src":"1322:19:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17828,"name":"address","nodeType":"ElementaryTypeName","src":"1322:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17831,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":17859,"src":"1351:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17830,"name":"uint32","nodeType":"ElementaryTypeName","src":"1351:6:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":17833,"mutability":"mutable","name":"targetNetwork","nodeType":"VariableDeclaration","scope":17859,"src":"1376:27:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17832,"name":"string","nodeType":"ElementaryTypeName","src":"1376:6:105","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1199:210:105"},"returnParameters":{"id":17849,"nodeType":"ParameterList","parameters":[],"src":"1559:0:105"},"scope":17915,"src":"1188:441:105","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1081],"body":{"id":17868,"nodeType":"Block","src":"1809:33:105","statements":[{"expression":{"id":17866,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17817,"src":"1826:9:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":17865,"id":17867,"nodeType":"Return","src":"1819:16:105"}]},"documentation":{"id":17860,"nodeType":"StructuredDocumentation","src":"1635:98:105","text":" @notice Returns the gas limit for the Optimism side of the bridging transaction"},"functionSelector":"a0566e72","id":17869,"implemented":true,"kind":"function","modifiers":[],"name":"getOptimismGasLimit","nodeType":"FunctionDefinition","overrides":{"id":17862,"nodeType":"OverrideSpecifier","overrides":[],"src":"1783:8:105"},"parameters":{"id":17861,"nodeType":"ParameterList","parameters":[],"src":"1766:2:105"},"returnParameters":{"id":17865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17864,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17869,"src":"1801:6:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17863,"name":"uint32","nodeType":"ElementaryTypeName","src":"1801:6:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1800:8:105"},"scope":17915,"src":"1738:104:105","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17895,"nodeType":"Block","src":"2408:150:105","statements":[{"assignments":[17880],"declarations":[{"constant":false,"id":17880,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":17895,"src":"2418:13:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17879,"name":"address","nodeType":"ElementaryTypeName","src":"2418:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17883,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17881,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"2434:7:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":17882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2434:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2418:25:105"},{"expression":{"arguments":[{"id":17888,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17872,"src":"2491:9:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17889,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17874,"src":"2502:17:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17890,"name":"NETWORK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17815,"src":"2521:7:105","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"arguments":[{"id":17885,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17880,"src":"2473:5:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17884,"name":"OptimisticRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17801,"src":"2453:19:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OptimisticRootGauge_$17801_$","typeString":"type(contract OptimisticRootGauge)"}},"id":17886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2453:26:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimisticRootGauge_$17801","typeString":"contract OptimisticRootGauge"}},"id":17887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":17742,"src":"2453:37:105","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,uint256,string memory) external"}},"id":17891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2453:76:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17892,"nodeType":"ExpressionStatement","src":"2453:76:105"},{"expression":{"id":17893,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17880,"src":"2546:5:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17878,"id":17894,"nodeType":"Return","src":"2539:12:105"}]},"documentation":{"id":17870,"nodeType":"StructuredDocumentation","src":"1848:466:105","text":" @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Optimism.\n @dev Care must be taken to ensure that gauges deployed from this factory are\n suitable before they are added to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":17896,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":17875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17872,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17896,"src":"2335:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17871,"name":"address","nodeType":"ElementaryTypeName","src":"2335:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17874,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17896,"src":"2354:25:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17873,"name":"uint256","nodeType":"ElementaryTypeName","src":"2354:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2334:46:105"},"returnParameters":{"id":17878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17877,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17896,"src":"2399:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17876,"name":"address","nodeType":"ElementaryTypeName","src":"2399:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2398:9:105"},"scope":17915,"src":"2319:239:105","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1086],"body":{"id":17913,"nodeType":"Block","src":"2740:86:105","statements":[{"expression":{"id":17907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17905,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17817,"src":"2750:9:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17906,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17899,"src":"2762:8:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2750:20:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":17908,"nodeType":"ExpressionStatement","src":"2750:20:105"},{"eventCall":{"arguments":[{"id":17910,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17899,"src":"2810:8:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":17909,"name":"OptimismGasLimitModified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17821,"src":"2785:24:105","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":17911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2785:34:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17912,"nodeType":"EmitStatement","src":"2780:39:105"}]},"documentation":{"id":17897,"nodeType":"StructuredDocumentation","src":"2564:94:105","text":" @notice Set the gas limit for the Optimism side of the bridging transaction"},"functionSelector":"bf5fa772","id":17914,"implemented":true,"kind":"function","modifiers":[{"id":17903,"modifierName":{"id":17902,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"2727:12:105","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2727:12:105"}],"name":"setOptimismGasLimit","nodeType":"FunctionDefinition","overrides":{"id":17901,"nodeType":"OverrideSpecifier","overrides":[],"src":"2718:8:105"},"parameters":{"id":17900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17899,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":17914,"src":"2692:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17898,"name":"uint32","nodeType":"ElementaryTypeName","src":"2692:6:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2691:17:105"},"returnParameters":{"id":17904,"nodeType":"ParameterList","parameters":[],"src":"2740:0:105"},"scope":17915,"src":"2663:163:105","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17916,"src":"908:1920:105"}],"src":"688:2141:105"},"id":105},"contracts/gauges/polygon/PolygonRootGauge.sol":{"ast":{"absolutePath":"contracts/gauges/polygon/PolygonRootGauge.sol","exportedSymbols":{"IPolygonRootChainManager":[17929],"PolygonRootGauge":[18028]},"id":18029,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17917,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:106"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":17918,"nodeType":"ImportDirective","scope":18029,"sourceUnit":7342,"src":"713:79:106","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":17919,"nodeType":"ImportDirective","scope":18029,"sourceUnit":15197,"src":"794:31:106","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":17929,"linearizedBaseContracts":[17929],"name":"IPolygonRootChainManager","nodeType":"ContractDefinition","nodes":[{"functionSelector":"e3dec8fb","id":17928,"implemented":false,"kind":"function","modifiers":[],"name":"depositFor","nodeType":"FunctionDefinition","parameters":{"id":17926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17921,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":17928,"src":"897:12:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17920,"name":"address","nodeType":"ElementaryTypeName","src":"897:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17923,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":17928,"src":"919:12:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":17922,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"919:6:106","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17925,"mutability":"mutable","name":"depositData","nodeType":"VariableDeclaration","scope":17928,"src":"941:26:106","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":17924,"name":"bytes","nodeType":"ElementaryTypeName","src":"941:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"887:86:106"},"returnParameters":{"id":17927,"nodeType":"ParameterList","parameters":[],"src":"982:0:106"},"scope":17929,"src":"868:115:106","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18029,"src":"827:158:106"},{"abstract":false,"baseContracts":[{"baseName":{"id":17930,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"1016:14:106","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":17931,"nodeType":"InheritanceSpecifier","src":"1016:14:106"}],"contractDependencies":[928,1239,7187,15196],"contractKind":"contract","fullyImplemented":true,"id":18028,"linearizedBaseContracts":[18028,15196,7187,1239,928],"name":"PolygonRootGauge","nodeType":"ContractDefinition","nodes":[{"id":17934,"libraryName":{"id":17932,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"1043:9:106","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1037:27:106","typeName":{"id":17933,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1057:6:106","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":false,"id":17936,"mutability":"immutable","name":"_polygonRootChainManager","nodeType":"VariableDeclaration","scope":18028,"src":"1070:67:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"},"typeName":{"id":17935,"name":"IPolygonRootChainManager","nodeType":"UserDefinedTypeName","referencedDeclaration":17929,"src":"1070:24:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"visibility":"private"},{"constant":false,"id":17938,"mutability":"immutable","name":"_polygonERC20Predicate","nodeType":"VariableDeclaration","scope":18028,"src":"1143:48:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17937,"name":"address","nodeType":"ElementaryTypeName","src":"1143:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":17940,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":18028,"src":"1301:26:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17939,"name":"address","nodeType":"ElementaryTypeName","src":"1301:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":17960,"nodeType":"Block","src":"1511:123:106","statements":[{"expression":{"id":17954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17952,"name":"_polygonRootChainManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17936,"src":"1521:24:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17953,"name":"polygonRootChainManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17944,"src":"1548:23:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"src":"1521:50:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"id":17955,"nodeType":"ExpressionStatement","src":"1521:50:106"},{"expression":{"id":17958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17956,"name":"_polygonERC20Predicate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17938,"src":"1581:22:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17957,"name":"polygonERC20Predicate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17946,"src":"1606:21:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1581:46:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17959,"nodeType":"ExpressionStatement","src":"1581:46:106"}]},"id":17961,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":17949,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17942,"src":"1503:6:106","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":17950,"modifierName":{"id":17948,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"1488:14:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"1488:22:106"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17942,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17961,"src":"1355:29:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17941,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1355:22:106","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17944,"mutability":"mutable","name":"polygonRootChainManager","nodeType":"VariableDeclaration","scope":17961,"src":"1394:48:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"},"typeName":{"id":17943,"name":"IPolygonRootChainManager","nodeType":"UserDefinedTypeName","referencedDeclaration":17929,"src":"1394:24:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"visibility":"internal"},{"constant":false,"id":17946,"mutability":"mutable","name":"polygonERC20Predicate","nodeType":"VariableDeclaration","scope":17961,"src":"1452:29:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17945,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1345:142:106"},"returnParameters":{"id":17951,"nodeType":"ParameterList","parameters":[],"src":"1511:0:106"},"scope":18028,"src":"1334:300:106","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17976,"nodeType":"Block","src":"1715:152:106","statements":[{"expression":{"arguments":[{"id":17969,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17965,"src":"1809:17:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17968,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"1787:21:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":17970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1787:40:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17971,"nodeType":"ExpressionStatement","src":"1787:40:106"},{"expression":{"id":17974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17972,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17940,"src":"1838:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17973,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17963,"src":"1851:9:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1838:22:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17975,"nodeType":"ExpressionStatement","src":"1838:22:106"}]},"functionSelector":"cd6dc687","id":17977,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":17966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17963,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17977,"src":"1660:17:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17962,"name":"address","nodeType":"ElementaryTypeName","src":"1660:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17965,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17977,"src":"1679:25:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17964,"name":"uint256","nodeType":"ElementaryTypeName","src":"1679:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1659:46:106"},"returnParameters":{"id":17967,"nodeType":"ParameterList","parameters":[],"src":"1715:0:106"},"scope":18028,"src":"1640:227:106","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":17985,"nodeType":"Block","src":"1938:34:106","statements":[{"expression":{"id":17983,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17940,"src":"1955:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17982,"id":17984,"nodeType":"Return","src":"1948:17:106"}]},"functionSelector":"1b88094d","id":17986,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":17979,"nodeType":"OverrideSpecifier","overrides":[],"src":"1911:8:106"},"parameters":{"id":17978,"nodeType":"ParameterList","parameters":[],"src":"1894:2:106"},"returnParameters":{"id":17982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17981,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17986,"src":"1929:7:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17980,"name":"address","nodeType":"ElementaryTypeName","src":"1929:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1928:9:106"},"scope":18028,"src":"1873:99:106","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17993,"nodeType":"Block","src":"2055:48:106","statements":[{"expression":{"id":17991,"name":"_polygonRootChainManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17936,"src":"2072:24:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"functionReturnParameters":17990,"id":17992,"nodeType":"Return","src":"2065:31:106"}]},"functionSelector":"fe022cc9","id":17994,"implemented":true,"kind":"function","modifiers":[],"name":"getPolygonBridge","nodeType":"FunctionDefinition","parameters":{"id":17987,"nodeType":"ParameterList","parameters":[],"src":"2003:2:106"},"returnParameters":{"id":17990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17989,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17994,"src":"2029:24:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"},"typeName":{"id":17988,"name":"IPolygonRootChainManager","nodeType":"UserDefinedTypeName","referencedDeclaration":17929,"src":"2029:24:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"visibility":"internal"}],"src":"2028:26:106"},"scope":18028,"src":"1978:125:106","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18001,"nodeType":"Block","src":"2177:46:106","statements":[{"expression":{"id":17999,"name":"_polygonERC20Predicate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17938,"src":"2194:22:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17998,"id":18000,"nodeType":"Return","src":"2187:29:106"}]},"functionSelector":"fe33859e","id":18002,"implemented":true,"kind":"function","modifiers":[],"name":"getPolygonERC20Predicate","nodeType":"FunctionDefinition","parameters":{"id":17995,"nodeType":"ParameterList","parameters":[],"src":"2142:2:106"},"returnParameters":{"id":17998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17997,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18002,"src":"2168:7:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17996,"name":"address","nodeType":"ElementaryTypeName","src":"2168:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2167:9:106"},"scope":18028,"src":"2109:114:106","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[15040],"body":{"id":18026,"nodeType":"Block","src":"2292:322:106","statements":[{"expression":{"arguments":[{"id":18011,"name":"_polygonERC20Predicate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17938,"src":"2408:22:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18012,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18004,"src":"2432:10:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18008,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2386:9:106","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":18010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"2386:21:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":18013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2386:57:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18014,"nodeType":"ExpressionStatement","src":"2386:57:106"},{"expression":{"arguments":[{"id":18018,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17940,"src":"2561:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18019,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2573:9:106","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"arguments":[{"id":18022,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18004,"src":"2595:10:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18020,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2584:3:106","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2584:10:106","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2584:22:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":18015,"name":"_polygonRootChainManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17936,"src":"2525:24:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"id":18017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"depositFor","nodeType":"MemberAccess","referencedDeclaration":17928,"src":"2525:35:106","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_contract$_IERC20_$2447_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,contract IERC20,bytes memory) external"}},"id":18024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2525:82:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18025,"nodeType":"ExpressionStatement","src":"2525:82:106"}]},"id":18027,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":18006,"nodeType":"OverrideSpecifier","overrides":[],"src":"2283:8:106"},"parameters":{"id":18005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18004,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":18027,"src":"2254:18:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18003,"name":"uint256","nodeType":"ElementaryTypeName","src":"2254:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2253:20:106"},"returnParameters":{"id":18007,"nodeType":"ParameterList","parameters":[],"src":"2292:0:106"},"scope":18028,"src":"2229:385:106","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":18029,"src":"987:1629:106"}],"src":"688:1929:106"},"id":106},"contracts/gauges/polygon/PolygonRootGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/polygon/PolygonRootGaugeFactory.sol","exportedSymbols":{"PolygonRootGaugeFactory":[18083]},"id":18084,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18030,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:107"},{"id":18031,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:107"},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":18032,"nodeType":"ImportDirective","scope":18084,"sourceUnit":13897,"src":"747:33:107","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/polygon/PolygonRootGauge.sol","file":"./PolygonRootGauge.sol","id":18033,"nodeType":"ImportDirective","scope":18084,"sourceUnit":18029,"src":"781:32:107","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18034,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"851:16:107","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":18035,"nodeType":"InheritanceSpecifier","src":"851:16:107"}],"contractDependencies":[941,13896,18028],"contractKind":"contract","fullyImplemented":true,"id":18083,"linearizedBaseContracts":[18083,13896,941],"name":"PolygonRootGaugeFactory","nodeType":"ContractDefinition","nodes":[{"body":{"id":18055,"nodeType":"Block","src":"1132:64:107","statements":[]},"id":18056,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"id":18048,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18037,"src":"1074:6:107","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":18049,"name":"polygonRootChainManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18039,"src":"1082:23:107","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},{"id":18050,"name":"polygonERC20Predicate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18041,"src":"1107:21:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"},{"typeIdentifier":"t_address","typeString":"address"}],"id":18047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1053:20:107","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$_t_contract$_IPolygonRootChainManager_$17929_$_t_address_$returns$_t_contract$_PolygonRootGauge_$18028_$","typeString":"function (contract IMainnetBalancerMinter,contract IPolygonRootChainManager,address) returns (contract PolygonRootGauge)"},"typeName":{"id":18046,"name":"PolygonRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":18028,"src":"1057:16:107","typeDescriptions":{"typeIdentifier":"t_contract$_PolygonRootGauge_$18028","typeString":"contract PolygonRootGauge"}}},"id":18051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1053:76:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PolygonRootGauge_$18028","typeString":"contract PolygonRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PolygonRootGauge_$18028","typeString":"contract PolygonRootGauge"}],"id":18045,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1045:7:107","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18044,"name":"address","nodeType":"ElementaryTypeName","src":"1045:7:107","typeDescriptions":{}}},"id":18052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1045:85:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":18053,"modifierName":{"id":18043,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1028:16:107","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"1028:103:107"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18037,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":18056,"src":"895:29:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":18036,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"895:22:107","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":18039,"mutability":"mutable","name":"polygonRootChainManager","nodeType":"VariableDeclaration","scope":18056,"src":"934:48:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"},"typeName":{"id":18038,"name":"IPolygonRootChainManager","nodeType":"UserDefinedTypeName","referencedDeclaration":17929,"src":"934:24:107","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"visibility":"internal"},{"constant":false,"id":18041,"mutability":"mutable","name":"polygonERC20Predicate","nodeType":"VariableDeclaration","scope":18056,"src":"992:29:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18040,"name":"address","nodeType":"ElementaryTypeName","src":"992:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"885:142:107"},"returnParameters":{"id":18054,"nodeType":"ParameterList","parameters":[],"src":"1132:0:107"},"scope":18083,"src":"874:322:107","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18081,"nodeType":"Block","src":"1761:138:107","statements":[{"assignments":[18067],"declarations":[{"constant":false,"id":18067,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18081,"src":"1771:13:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18066,"name":"address","nodeType":"ElementaryTypeName","src":"1771:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":18070,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":18068,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"1787:7:107","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":18069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1787:9:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1771:25:107"},{"expression":{"arguments":[{"id":18075,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18059,"src":"1841:9:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18076,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18061,"src":"1852:17:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":18072,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18067,"src":"1823:5:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18071,"name":"PolygonRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18028,"src":"1806:16:107","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PolygonRootGauge_$18028_$","typeString":"type(contract PolygonRootGauge)"}},"id":18073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1806:23:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PolygonRootGauge_$18028","typeString":"contract PolygonRootGauge"}},"id":18074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":17977,"src":"1806:34:107","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":18077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1806:64:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18078,"nodeType":"ExpressionStatement","src":"1806:64:107"},{"expression":{"id":18079,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18067,"src":"1887:5:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":18065,"id":18080,"nodeType":"Return","src":"1880:12:107"}]},"documentation":{"id":18057,"nodeType":"StructuredDocumentation","src":"1202:465:107","text":" @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Polygon.\n @dev Care must be taken to ensure that gauges deployed from this factory are\n suitable before they are added to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":18082,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":18062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18059,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":18082,"src":"1688:17:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18058,"name":"address","nodeType":"ElementaryTypeName","src":"1688:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18061,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":18082,"src":"1707:25:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18060,"name":"uint256","nodeType":"ElementaryTypeName","src":"1707:7:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1687:46:107"},"returnParameters":{"id":18065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18064,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18082,"src":"1752:7:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18063,"name":"address","nodeType":"ElementaryTypeName","src":"1752:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1751:9:107"},"scope":18083,"src":"1672:227:107","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18084,"src":"815:1086:107"}],"src":"688:1214:107"},"id":107},"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol":{"ast":{"absolutePath":"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol","exportedSymbols":{"IPolygonZkEVMBridge":[18103],"PolygonZkEVMRootGauge":[18199]},"id":18200,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18085,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:108"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":18086,"nodeType":"ImportDirective","scope":18200,"sourceUnit":7342,"src":"713:79:108","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":18087,"nodeType":"ImportDirective","scope":18200,"sourceUnit":15197,"src":"794:31:108","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":18103,"linearizedBaseContracts":[18103],"name":"IPolygonZkEVMBridge","nodeType":"ContractDefinition","nodes":[{"functionSelector":"cd586579","id":18102,"implemented":false,"kind":"function","modifiers":[],"name":"bridgeAsset","nodeType":"FunctionDefinition","parameters":{"id":18100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18089,"mutability":"mutable","name":"destinationNetwork","nodeType":"VariableDeclaration","scope":18102,"src":"893:25:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":18088,"name":"uint32","nodeType":"ElementaryTypeName","src":"893:6:108","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":18091,"mutability":"mutable","name":"destinationAddress","nodeType":"VariableDeclaration","scope":18102,"src":"928:26:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18090,"name":"address","nodeType":"ElementaryTypeName","src":"928:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18093,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":18102,"src":"964:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18092,"name":"uint256","nodeType":"ElementaryTypeName","src":"964:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18095,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":18102,"src":"988:13:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18094,"name":"address","nodeType":"ElementaryTypeName","src":"988:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18097,"mutability":"mutable","name":"forceUpdateGlobalExitRoot","nodeType":"VariableDeclaration","scope":18102,"src":"1011:30:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18096,"name":"bool","nodeType":"ElementaryTypeName","src":"1011:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":18099,"mutability":"mutable","name":"permitData","nodeType":"VariableDeclaration","scope":18102,"src":"1051:25:108","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":18098,"name":"bytes","nodeType":"ElementaryTypeName","src":"1051:5:108","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"883:199:108"},"returnParameters":{"id":18101,"nodeType":"ParameterList","parameters":[],"src":"1091:0:108"},"scope":18103,"src":"863:229:108","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18200,"src":"827:267:108"},{"abstract":false,"baseContracts":[{"baseName":{"id":18105,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"1280:14:108","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":18106,"nodeType":"InheritanceSpecifier","src":"1280:14:108"}],"contractDependencies":[928,1239,7187,15196],"contractKind":"contract","documentation":{"id":18104,"nodeType":"StructuredDocumentation","src":"1096:149:108","text":" @notice Root Gauge for the Polygon zkEVM network.\n @dev Documentation is at https://zkevm.polygon.technology/docs/category/zkevm-bridge."},"fullyImplemented":true,"id":18199,"linearizedBaseContracts":[18199,15196,7187,1239,928],"name":"PolygonZkEVMRootGauge","nodeType":"ContractDefinition","nodes":[{"id":18109,"libraryName":{"id":18107,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"1307:9:108","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1301:27:108","typeName":{"id":18108,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1321:6:108","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":true,"id":18112,"mutability":"constant","name":"_FORCE_UPDATE_GLOBAL_EXIT_ROOT","nodeType":"VariableDeclaration","scope":18199,"src":"1334:59:108","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18110,"name":"bool","nodeType":"ElementaryTypeName","src":"1334:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":{"hexValue":"74727565","id":18111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1389:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"visibility":"private"},{"constant":true,"id":18115,"mutability":"constant","name":"_POLYGON_ZKEVM_NETWORK","nodeType":"VariableDeclaration","scope":18199,"src":"1399:50:108","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":18113,"name":"uint32","nodeType":"ElementaryTypeName","src":"1399:6:108","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"31","id":18114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1448:1:108","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":false,"id":18117,"mutability":"immutable","name":"_polygonZkEVMBridge","nodeType":"VariableDeclaration","scope":18199,"src":"1456:57:108","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"},"typeName":{"id":18116,"name":"IPolygonZkEVMBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":18103,"src":"1456:19:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"visibility":"private"},{"constant":false,"id":18119,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":18199,"src":"1623:26:108","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18118,"name":"address","nodeType":"ElementaryTypeName","src":"1623:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":18133,"nodeType":"Block","src":"1762:57:108","statements":[{"expression":{"id":18131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18129,"name":"_polygonZkEVMBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18117,"src":"1772:19:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18130,"name":"polygonZkEVMBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18123,"src":"1794:18:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"src":"1772:40:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"id":18132,"nodeType":"ExpressionStatement","src":"1772:40:108"}]},"id":18134,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18126,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18121,"src":"1754:6:108","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":18127,"modifierName":{"id":18125,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"1739:14:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"1739:22:108"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18121,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":18134,"src":"1668:29:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":18120,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1668:22:108","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":18123,"mutability":"mutable","name":"polygonZkEVMBridge","nodeType":"VariableDeclaration","scope":18134,"src":"1699:38:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"},"typeName":{"id":18122,"name":"IPolygonZkEVMBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":18103,"src":"1699:19:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"visibility":"internal"}],"src":"1667:71:108"},"returnParameters":{"id":18128,"nodeType":"ParameterList","parameters":[],"src":"1762:0:108"},"scope":18199,"src":"1656:163:108","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18149,"nodeType":"Block","src":"1900:152:108","statements":[{"expression":{"arguments":[{"id":18142,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18138,"src":"1994:17:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18141,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"1972:21:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":18143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1972:40:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18144,"nodeType":"ExpressionStatement","src":"1972:40:108"},{"expression":{"id":18147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18145,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18119,"src":"2023:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18146,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18136,"src":"2036:9:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2023:22:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18148,"nodeType":"ExpressionStatement","src":"2023:22:108"}]},"functionSelector":"cd6dc687","id":18150,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":18139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18136,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":18150,"src":"1845:17:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18135,"name":"address","nodeType":"ElementaryTypeName","src":"1845:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18138,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":18150,"src":"1864:25:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18137,"name":"uint256","nodeType":"ElementaryTypeName","src":"1864:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1844:46:108"},"returnParameters":{"id":18140,"nodeType":"ParameterList","parameters":[],"src":"1900:0:108"},"scope":18199,"src":"1825:227:108","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":18158,"nodeType":"Block","src":"2123:34:108","statements":[{"expression":{"id":18156,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18119,"src":"2140:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":18155,"id":18157,"nodeType":"Return","src":"2133:17:108"}]},"functionSelector":"1b88094d","id":18159,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":18152,"nodeType":"OverrideSpecifier","overrides":[],"src":"2096:8:108"},"parameters":{"id":18151,"nodeType":"ParameterList","parameters":[],"src":"2079:2:108"},"returnParameters":{"id":18155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18154,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18159,"src":"2114:7:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18153,"name":"address","nodeType":"ElementaryTypeName","src":"2114:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2113:9:108"},"scope":18199,"src":"2058:99:108","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18166,"nodeType":"Block","src":"2240:43:108","statements":[{"expression":{"id":18164,"name":"_polygonZkEVMBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18117,"src":"2257:19:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"functionReturnParameters":18163,"id":18165,"nodeType":"Return","src":"2250:26:108"}]},"functionSelector":"04ceb300","id":18167,"implemented":true,"kind":"function","modifiers":[],"name":"getPolygonZkEVMBridge","nodeType":"FunctionDefinition","parameters":{"id":18160,"nodeType":"ParameterList","parameters":[],"src":"2193:2:108"},"returnParameters":{"id":18163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18162,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18167,"src":"2219:19:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"},"typeName":{"id":18161,"name":"IPolygonZkEVMBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":18103,"src":"2219:19:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"visibility":"internal"}],"src":"2218:21:108"},"scope":18199,"src":"2163:120:108","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[15040],"body":{"id":18197,"nodeType":"Block","src":"2352:419:108","statements":[{"expression":{"arguments":[{"arguments":[{"id":18178,"name":"_polygonZkEVMBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18117,"src":"2392:19:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}],"id":18177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2384:7:108","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18176,"name":"address","nodeType":"ElementaryTypeName","src":"2384:7:108","typeDescriptions":{}}},"id":18179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2384:28:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18180,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18169,"src":"2414:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18173,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2362:9:108","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":18175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"2362:21:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":18181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2362:63:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18182,"nodeType":"ExpressionStatement","src":"2362:63:108"},{"expression":{"arguments":[{"id":18186,"name":"_POLYGON_ZKEVM_NETWORK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18115,"src":"2592:22:108","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":18187,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18119,"src":"2628:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18188,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18169,"src":"2652:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":18191,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2684:9:108","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":18190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2676:7:108","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18189,"name":"address","nodeType":"ElementaryTypeName","src":"2676:7:108","typeDescriptions":{}}},"id":18192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2676:18:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18193,"name":"_FORCE_UPDATE_GLOBAL_EXIT_ROOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18112,"src":"2708:30:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"","id":18194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2752:2:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":18183,"name":"_polygonZkEVMBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18117,"src":"2547:19:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"id":18185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"bridgeAsset","nodeType":"MemberAccess","referencedDeclaration":18102,"src":"2547:31:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint32_$_t_address_$_t_uint256_$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint32,address,uint256,address,bool,bytes memory) external"}},"id":18195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2547:217:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18196,"nodeType":"ExpressionStatement","src":"2547:217:108"}]},"id":18198,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":18171,"nodeType":"OverrideSpecifier","overrides":[],"src":"2343:8:108"},"parameters":{"id":18170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18169,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":18198,"src":"2314:18:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18168,"name":"uint256","nodeType":"ElementaryTypeName","src":"2314:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2313:20:108"},"returnParameters":{"id":18172,"nodeType":"ParameterList","parameters":[],"src":"2352:0:108"},"scope":18199,"src":"2289:482:108","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":18200,"src":"1246:1527:108"}],"src":"688:2086:108"},"id":108},"contracts/gauges/zkevm/PolygonZkEVMRootGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/zkevm/PolygonZkEVMRootGaugeFactory.sol","exportedSymbols":{"PolygonZkEVMRootGaugeFactory":[18251]},"id":18252,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18201,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:109"},{"id":18202,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:109"},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":18203,"nodeType":"ImportDirective","scope":18252,"sourceUnit":13897,"src":"747:33:109","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol","file":"./PolygonZkEVMRootGauge.sol","id":18204,"nodeType":"ImportDirective","scope":18252,"sourceUnit":18200,"src":"781:37:109","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18205,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"861:16:109","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":18206,"nodeType":"InheritanceSpecifier","src":"861:16:109"}],"contractDependencies":[941,13896,18199],"contractKind":"contract","fullyImplemented":true,"id":18251,"linearizedBaseContracts":[18251,13896,941],"name":"PolygonZkEVMRootGaugeFactory","nodeType":"ContractDefinition","nodes":[{"body":{"id":18223,"nodeType":"Block","src":"1046:64:109","statements":[]},"id":18224,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"id":18217,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18208,"src":"1019:6:109","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":18218,"name":"zkEVMBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18210,"src":"1027:11:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}],"id":18216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"993:25:109","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$_t_contract$_IPolygonZkEVMBridge_$18103_$returns$_t_contract$_PolygonZkEVMRootGauge_$18199_$","typeString":"function (contract IMainnetBalancerMinter,contract IPolygonZkEVMBridge) returns (contract PolygonZkEVMRootGauge)"},"typeName":{"id":18215,"name":"PolygonZkEVMRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":18199,"src":"997:21:109","typeDescriptions":{"typeIdentifier":"t_contract$_PolygonZkEVMRootGauge_$18199","typeString":"contract PolygonZkEVMRootGauge"}}},"id":18219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"993:46:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PolygonZkEVMRootGauge_$18199","typeString":"contract PolygonZkEVMRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PolygonZkEVMRootGauge_$18199","typeString":"contract PolygonZkEVMRootGauge"}],"id":18214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"985:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18213,"name":"address","nodeType":"ElementaryTypeName","src":"985:7:109","typeDescriptions":{}}},"id":18220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"985:55:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":18221,"modifierName":{"id":18212,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"968:16:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"968:73:109"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18208,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":18224,"src":"896:29:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":18207,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"896:22:109","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":18210,"mutability":"mutable","name":"zkEVMBridge","nodeType":"VariableDeclaration","scope":18224,"src":"927:31:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"},"typeName":{"id":18209,"name":"IPolygonZkEVMBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":18103,"src":"927:19:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"visibility":"internal"}],"src":"895:64:109"},"returnParameters":{"id":18222,"nodeType":"ParameterList","parameters":[],"src":"1046:0:109"},"scope":18251,"src":"884:226:109","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18249,"nodeType":"Block","src":"1681:143:109","statements":[{"assignments":[18235],"declarations":[{"constant":false,"id":18235,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18249,"src":"1691:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18234,"name":"address","nodeType":"ElementaryTypeName","src":"1691:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":18238,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":18236,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"1707:7:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":18237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1707:9:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1691:25:109"},{"expression":{"arguments":[{"id":18243,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18227,"src":"1766:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18244,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18229,"src":"1777:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":18240,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18235,"src":"1748:5:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18239,"name":"PolygonZkEVMRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18199,"src":"1726:21:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PolygonZkEVMRootGauge_$18199_$","typeString":"type(contract PolygonZkEVMRootGauge)"}},"id":18241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1726:28:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PolygonZkEVMRootGauge_$18199","typeString":"contract PolygonZkEVMRootGauge"}},"id":18242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":18150,"src":"1726:39:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":18245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1726:69:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18246,"nodeType":"ExpressionStatement","src":"1726:69:109"},{"expression":{"id":18247,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18235,"src":"1812:5:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":18233,"id":18248,"nodeType":"Return","src":"1805:12:109"}]},"documentation":{"id":18225,"nodeType":"StructuredDocumentation","src":"1116:471:109","text":" @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Polygon ZkEVM.\n @dev Care must be taken to ensure that gauges deployed from this factory are suitable before they are added\n to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":18250,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":18230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18227,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":18250,"src":"1608:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18226,"name":"address","nodeType":"ElementaryTypeName","src":"1608:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18229,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":18250,"src":"1627:25:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18228,"name":"uint256","nodeType":"ElementaryTypeName","src":"1627:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1607:46:109"},"returnParameters":{"id":18233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18232,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18250,"src":"1672:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18231,"name":"address","nodeType":"ElementaryTypeName","src":"1672:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1671:9:109"},"scope":18251,"src":"1592:232:109","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18252,"src":"820:1006:109"}],"src":"688:1139:109"},"id":109},"contracts/test/MockAvalancheRootGauge.sol":{"ast":{"absolutePath":"contracts/test/MockAvalancheRootGauge.sol","exportedSymbols":{"MockAvalancheRootGauge":[18282]},"id":18283,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18253,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:110"},{"id":18254,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:110"},{"absolutePath":"contracts/gauges/avalanche/AvalancheRootGauge.sol","file":"../gauges/avalanche/AvalancheRootGauge.sol","id":18255,"nodeType":"ImportDirective","scope":18283,"sourceUnit":17010,"src":"747:52:110","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18257,"name":"AvalancheRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":17009,"src":"977:18:110","typeDescriptions":{"typeIdentifier":"t_contract$_AvalancheRootGauge_$17009","typeString":"contract AvalancheRootGauge"}},"id":18258,"nodeType":"InheritanceSpecifier","src":"977:18:110"}],"contractDependencies":[928,1239,7187,15196,17009],"contractKind":"contract","documentation":{"id":18256,"nodeType":"StructuredDocumentation","src":"801:140:110","text":" @dev This is used by the Avalanche Root Gauge deployment task in the deployments repo, and is referenced there.\n Do not delete."},"fullyImplemented":true,"id":18282,"linearizedBaseContracts":[18282,17009,15196,7187,1239,928],"name":"MockAvalancheRootGauge","nodeType":"ContractDefinition","nodes":[{"body":{"id":18269,"nodeType":"Block","src":"1115:64:110","statements":[]},"id":18270,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18265,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18260,"src":"1095:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":18266,"name":"lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18262,"src":"1103:10:110","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}}],"id":18267,"modifierName":{"id":18264,"name":"AvalancheRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17009,"src":"1076:18:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AvalancheRootGauge_$17009_$","typeString":"type(contract AvalancheRootGauge)"}},"nodeType":"ModifierInvocation","src":"1076:38:110"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18260,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":18270,"src":"1014:29:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":18259,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1014:22:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":18262,"mutability":"mutable","name":"lzBALProxy","nodeType":"VariableDeclaration","scope":18270,"src":"1045:29:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"},"typeName":{"id":18261,"name":"ILayerZeroBALProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":16738,"src":"1045:18:110","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"visibility":"internal"}],"src":"1013:62:110"},"returnParameters":{"id":18268,"nodeType":"ParameterList","parameters":[],"src":"1115:0:110"},"scope":18282,"src":"1002:177:110","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18280,"nodeType":"Block","src":"1552:44:110","statements":[{"expression":{"arguments":[{"id":18277,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18273,"src":"1578:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18276,"name":"_postMintAction","nodeType":"Identifier","overloadedDeclarations":[16977],"referencedDeclaration":16977,"src":"1562:15:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":18278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1562:27:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18279,"nodeType":"ExpressionStatement","src":"1562:27:110"}]},"documentation":{"id":18271,"nodeType":"StructuredDocumentation","src":"1185:309:110","text":" @dev It would be very difficult to contrive a fork test that set the mintAmount to a precise value,\n so the bridge limits are best tested with a mock and unit tests.\n It must be payable to send ETH to pay for gas in the child chain.\n @param mintAmount Amount to be bridged"},"functionSelector":"90fd50b3","id":18281,"implemented":true,"kind":"function","modifiers":[],"name":"bridge","nodeType":"FunctionDefinition","parameters":{"id":18274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18273,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":18281,"src":"1515:18:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18272,"name":"uint256","nodeType":"ElementaryTypeName","src":"1515:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1514:20:110"},"returnParameters":{"id":18275,"nodeType":"ParameterList","parameters":[],"src":"1552:0:110"},"scope":18282,"src":"1499:97:110","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":18283,"src":"942:656:110"}],"src":"688:911:110"},"id":110},"contracts/test/MockBalancerMinter.sol":{"ast":{"absolutePath":"contracts/test/MockBalancerMinter.sol","exportedSymbols":{"MockBalancerMinter":[18394]},"id":18395,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18284,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:111"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","id":18285,"nodeType":"ImportDirective","scope":18395,"sourceUnit":328,"src":"713:89:111","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","id":18286,"nodeType":"ImportDirective","scope":18395,"sourceUnit":822,"src":"803:86:111","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","id":18287,"nodeType":"ImportDirective","scope":18395,"sourceUnit":929,"src":"890:85:111","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol","id":18288,"nodeType":"ImportDirective","scope":18395,"sourceUnit":952,"src":"976:92:111","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","id":18289,"nodeType":"ImportDirective","scope":18395,"sourceUnit":7420,"src":"1069:78:111","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/BalancerMinter.sol","file":"../BalancerMinter.sol","id":18290,"nodeType":"ImportDirective","scope":18395,"sourceUnit":7867,"src":"1149:31:111","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18291,"name":"BalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":7866,"src":"1213:14:111","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerMinter_$7866","typeString":"contract BalancerMinter"}},"id":18292,"nodeType":"InheritanceSpecifier","src":"1213:14:111"}],"contractDependencies":[197,2311,3308,6021,7187,7866],"contractKind":"contract","fullyImplemented":true,"id":18394,"linearizedBaseContracts":[18394,7866,3308,6021,2311,7187,197],"name":"MockBalancerMinter","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":18298,"name":"MintFor","nodeType":"EventDefinition","parameters":{"id":18297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18294,"indexed":false,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18298,"src":"1248:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18293,"name":"address","nodeType":"ElementaryTypeName","src":"1248:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18296,"indexed":false,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18298,"src":"1263:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18295,"name":"address","nodeType":"ElementaryTypeName","src":"1263:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1247:29:111"},"src":"1234:43:111"},{"anonymous":false,"id":18305,"name":"MintForMany","nodeType":"EventDefinition","parameters":{"id":18304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18301,"indexed":false,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":18305,"src":"1300:16:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18299,"name":"address","nodeType":"ElementaryTypeName","src":"1300:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18300,"nodeType":"ArrayTypeName","src":"1300:9:111","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":18303,"indexed":false,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18305,"src":"1318:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18302,"name":"address","nodeType":"ElementaryTypeName","src":"1318:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1299:32:111"},"src":"1282:50:111"},{"constant":false,"id":18307,"mutability":"mutable","name":"_mintForReturn","nodeType":"VariableDeclaration","scope":18394,"src":"1338:30:111","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18306,"name":"uint256","nodeType":"ElementaryTypeName","src":"1338:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":18309,"mutability":"mutable","name":"_mintForManyReturn","nodeType":"VariableDeclaration","scope":18394,"src":"1374:34:111","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18308,"name":"uint256","nodeType":"ElementaryTypeName","src":"1374:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":18319,"nodeType":"Block","src":"1487:64:111","statements":[]},"id":18320,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18314,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18311,"src":"1456:5:111","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"42616c616e636572204d696e746572","id":18315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1463:17:111","typeDescriptions":{"typeIdentifier":"t_stringliteral_63c05625ac5a06c4bd34bf8f76d2a8cb0f02c3d329e03eae3da16e084ba60ddc","typeString":"literal_string \"Balancer Minter\""},"value":"Balancer Minter"},{"hexValue":"31","id":18316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1482:3:111","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":18317,"modifierName":{"id":18313,"name":"BalancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7866,"src":"1441:14:111","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalancerMinter_$7866_$","typeString":"type(contract BalancerMinter)"}},"nodeType":"ModifierInvocation","src":"1441:45:111"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18311,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":18320,"src":"1427:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":18310,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1427:6:111","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1426:14:111"},"returnParameters":{"id":18318,"nodeType":"ParameterList","parameters":[],"src":"1487:0:111"},"scope":18394,"src":"1415:136:111","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18329,"nodeType":"Block","src":"1613:47:111","statements":[{"expression":{"id":18327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18325,"name":"_mintForReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18307,"src":"1623:14:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18326,"name":"mintForReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18322,"src":"1640:13:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1623:30:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18328,"nodeType":"ExpressionStatement","src":"1623:30:111"}]},"functionSelector":"95c3d17c","id":18330,"implemented":true,"kind":"function","modifiers":[],"name":"setMockMintFor","nodeType":"FunctionDefinition","parameters":{"id":18323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18322,"mutability":"mutable","name":"mintForReturn","nodeType":"VariableDeclaration","scope":18330,"src":"1581:21:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18321,"name":"uint256","nodeType":"ElementaryTypeName","src":"1581:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1580:23:111"},"returnParameters":{"id":18324,"nodeType":"ParameterList","parameters":[],"src":"1613:0:111"},"scope":18394,"src":"1557:103:111","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18339,"nodeType":"Block","src":"1730:55:111","statements":[{"expression":{"id":18337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18335,"name":"_mintForManyReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18309,"src":"1740:18:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18336,"name":"mintForManyReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18332,"src":"1761:17:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1740:38:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18338,"nodeType":"ExpressionStatement","src":"1740:38:111"}]},"functionSelector":"e96ff983","id":18340,"implemented":true,"kind":"function","modifiers":[],"name":"setMockMintForMany","nodeType":"FunctionDefinition","parameters":{"id":18333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18332,"mutability":"mutable","name":"mintForManyReturn","nodeType":"VariableDeclaration","scope":18340,"src":"1694:25:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18331,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1693:27:111"},"returnParameters":{"id":18334,"nodeType":"ParameterList","parameters":[],"src":"1730:0:111"},"scope":18394,"src":"1666:119:111","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18355,"nodeType":"Block","src":"1893:54:111","statements":[{"expression":{"arguments":[{"id":18350,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18342,"src":"1921:4:111","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18351,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18344,"src":"1927:5:111","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18352,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18346,"src":"1934:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18349,"name":"_setMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7741,"src":"1910:10:111","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":18353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1910:30:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":18348,"id":18354,"nodeType":"Return","src":"1903:37:111"}]},"functionSelector":"484935a2","id":18356,"implemented":true,"kind":"function","modifiers":[],"name":"setMinted","nodeType":"FunctionDefinition","parameters":{"id":18347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18342,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18356,"src":"1819:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18341,"name":"address","nodeType":"ElementaryTypeName","src":"1819:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18344,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18356,"src":"1841:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18343,"name":"address","nodeType":"ElementaryTypeName","src":"1841:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18346,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":18356,"src":"1864:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18345,"name":"uint256","nodeType":"ElementaryTypeName","src":"1864:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1809:74:111"},"returnParameters":{"id":18348,"nodeType":"ParameterList","parameters":[],"src":"1893:0:111"},"scope":18394,"src":"1791:156:111","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[7750],"body":{"id":18373,"nodeType":"Block","src":"2076:73:111","statements":[{"eventCall":{"arguments":[{"id":18367,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18358,"src":"2099:5:111","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18368,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18360,"src":"2106:4:111","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":18366,"name":"MintFor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18298,"src":"2091:7:111","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":18369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2091:20:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18370,"nodeType":"EmitStatement","src":"2086:25:111"},{"expression":{"id":18371,"name":"_mintForReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18307,"src":"2128:14:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18365,"id":18372,"nodeType":"Return","src":"2121:21:111"}]},"id":18374,"implemented":true,"kind":"function","modifiers":[],"name":"_mintFor","nodeType":"FunctionDefinition","overrides":{"id":18362,"nodeType":"OverrideSpecifier","overrides":[],"src":"2036:8:111"},"parameters":{"id":18361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18358,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18374,"src":"1998:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18357,"name":"address","nodeType":"ElementaryTypeName","src":"1998:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18360,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18374,"src":"2013:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18359,"name":"address","nodeType":"ElementaryTypeName","src":"2013:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1997:29:111"},"returnParameters":{"id":18365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18364,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":18374,"src":"2054:20:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18363,"name":"uint256","nodeType":"ElementaryTypeName","src":"2054:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2053:22:111"},"scope":18394,"src":"1980:169:111","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[7760],"body":{"id":18392,"nodeType":"Block","src":"2267:82:111","statements":[{"eventCall":{"arguments":[{"id":18386,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18377,"src":"2294:6:111","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":18387,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18379,"src":"2302:4:111","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":18385,"name":"MintForMany","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18305,"src":"2282:11:111","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (address[] memory,address)"}},"id":18388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2282:25:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18389,"nodeType":"EmitStatement","src":"2277:30:111"},{"expression":{"id":18390,"name":"_mintForManyReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18309,"src":"2324:18:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18384,"id":18391,"nodeType":"Return","src":"2317:25:111"}]},"id":18393,"implemented":true,"kind":"function","modifiers":[],"name":"_mintForMany","nodeType":"FunctionDefinition","overrides":{"id":18381,"nodeType":"OverrideSpecifier","overrides":[],"src":"2227:8:111"},"parameters":{"id":18380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18377,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":18393,"src":"2177:25:111","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18375,"name":"address","nodeType":"ElementaryTypeName","src":"2177:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18376,"nodeType":"ArrayTypeName","src":"2177:9:111","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":18379,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18393,"src":"2204:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18378,"name":"address","nodeType":"ElementaryTypeName","src":"2204:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2176:41:111"},"returnParameters":{"id":18384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18383,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":18393,"src":"2245:20:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18382,"name":"uint256","nodeType":"ElementaryTypeName","src":"2245:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2244:22:111"},"scope":18394,"src":"2155:194:111","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":18395,"src":"1182:1169:111"}],"src":"688:1664:111"},"id":111},"contracts/test/MockBalancerTokenAdmin.sol":{"ast":{"absolutePath":"contracts/test/MockBalancerTokenAdmin.sol","exportedSymbols":{"MockBalancerTokenAdmin":[18522]},"id":18523,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18396,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:112"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","id":18397,"nodeType":"ImportDirective","scope":18523,"sourceUnit":275,"src":"713:84:112","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":18398,"nodeType":"ImportDirective","scope":18523,"sourceUnit":3052,"src":"798:65:112","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":18399,"nodeType":"StructuredDocumentation","src":"865:171:112","text":" @dev This is an incomplete implementation of the token admin. It provides just enough functionality to be able to\n instantiate Liquidity and Stakeless gauges."},"fullyImplemented":true,"id":18522,"linearizedBaseContracts":[18522],"name":"MockBalancerTokenAdmin","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"4dbac733","id":18410,"mutability":"constant","name":"INITIAL_RATE","nodeType":"VariableDeclaration","scope":18522,"src":"1075:73:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18400,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_145000000000000000000000_by_1","typeString":"int_const 145000000000000000000000"},"id":18403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"313435303030","id":18401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1115:6:112","typeDescriptions":{"typeIdentifier":"t_rational_145000_by_1","typeString":"int_const 145000"},"value":"145000"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31653138","id":18402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1124:4:112","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"1115:13:112","typeDescriptions":{"typeIdentifier":"t_rational_145000000000000000000000_by_1","typeString":"int_const 145000000000000000000000"}}],"id":18404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1114:15:112","typeDescriptions":{"typeIdentifier":"t_rational_145000000000000000000000_by_1","typeString":"int_const 145000000000000000000000"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"hexValue":"31","id":18407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1140:7:112","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"}],"id":18406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1132:7:112","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":18405,"name":"uint256","nodeType":"ElementaryTypeName","src":"1132:7:112","typeDescriptions":{}}},"id":18408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1132:16:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1114:34:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"functionSelector":"b87b5616","id":18413,"mutability":"constant","name":"RATE_REDUCTION_TIME","nodeType":"VariableDeclaration","scope":18522,"src":"1177:54:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18411,"name":"uint256","nodeType":"ElementaryTypeName","src":"1177:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333635","id":18412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1223:8:112","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"value":"365"},"visibility":"public"},{"constant":true,"functionSelector":"21609bbf","id":18416,"mutability":"constant","name":"RATE_REDUCTION_COEFFICIENT","nodeType":"VariableDeclaration","scope":18522,"src":"1237:72:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18414,"name":"uint256","nodeType":"ElementaryTypeName","src":"1237:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31313839323037313135303032373231303234","id":18415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1290:19:112","typeDescriptions":{"typeIdentifier":"t_rational_1189207115002721024_by_1","typeString":"int_const 1189207115002721024"},"value":"1189207115002721024"},"visibility":"public"},{"constant":true,"functionSelector":"7efad8e0","id":18419,"mutability":"constant","name":"RATE_DENOMINATOR","nodeType":"VariableDeclaration","scope":18522,"src":"1336:47:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18417,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":18418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1379:4:112","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"public"},{"constant":false,"id":18421,"mutability":"mutable","name":"_vault","nodeType":"VariableDeclaration","scope":18522,"src":"1390:21:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":18420,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1390:6:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":18423,"mutability":"mutable","name":"_balancerToken","nodeType":"VariableDeclaration","scope":18522,"src":"1417:37:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"},"typeName":{"id":18422,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":274,"src":"1417:14:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"visibility":"private"},{"constant":false,"id":18425,"mutability":"mutable","name":"_startEpochTime","nodeType":"VariableDeclaration","scope":18522,"src":"1460:31:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18424,"name":"uint256","nodeType":"ElementaryTypeName","src":"1460:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":18427,"mutability":"immutable","name":"_rate","nodeType":"VariableDeclaration","scope":18522,"src":"1497:31:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18426,"name":"uint256","nodeType":"ElementaryTypeName","src":"1497:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":18451,"nodeType":"Block","src":"1591:198:112","statements":[{"expression":{"id":18436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18434,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18421,"src":"1601:6:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18435,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18429,"src":"1610:5:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"src":"1601:14:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"id":18437,"nodeType":"ExpressionStatement","src":"1601:14:112"},{"expression":{"id":18440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18438,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18423,"src":"1625:14:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18439,"name":"balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18431,"src":"1642:13:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"src":"1625:30:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":18441,"nodeType":"ExpressionStatement","src":"1625:30:112"},{"expression":{"id":18445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18442,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18425,"src":"1719:15:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":18443,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1737:5:112","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":18444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"1737:15:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1719:33:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18446,"nodeType":"ExpressionStatement","src":"1719:33:112"},{"expression":{"id":18449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18447,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18427,"src":"1762:5:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18448,"name":"INITIAL_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18410,"src":"1770:12:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1762:20:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18450,"nodeType":"ExpressionStatement","src":"1762:20:112"}]},"id":18452,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18429,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":18452,"src":"1547:12:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":18428,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1547:6:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":18431,"mutability":"mutable","name":"balancerToken","nodeType":"VariableDeclaration","scope":18452,"src":"1561:28:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"},"typeName":{"id":18430,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":274,"src":"1561:14:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"1546:44:112"},"returnParameters":{"id":18433,"nodeType":"ParameterList","parameters":[],"src":"1591:0:112"},"scope":18522,"src":"1535:254:112","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18459,"nodeType":"Block","src":"1846:30:112","statements":[{"expression":{"id":18457,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18421,"src":"1863:6:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"functionReturnParameters":18456,"id":18458,"nodeType":"Return","src":"1856:13:112"}]},"functionSelector":"8d928af8","id":18460,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":18453,"nodeType":"ParameterList","parameters":[],"src":"1812:2:112"},"returnParameters":{"id":18456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18455,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18460,"src":"1838:6:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":18454,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1838:6:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1837:8:112"},"scope":18522,"src":"1795:81:112","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18467,"nodeType":"Block","src":"1949:38:112","statements":[{"expression":{"id":18465,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18423,"src":"1966:14:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"functionReturnParameters":18464,"id":18466,"nodeType":"Return","src":"1959:21:112"}]},"functionSelector":"c0039699","id":18468,"implemented":true,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":18461,"nodeType":"ParameterList","parameters":[],"src":"1907:2:112"},"returnParameters":{"id":18464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18463,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18468,"src":"1933:14:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"},"typeName":{"id":18462,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":274,"src":"1933:14:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"1932:16:112"},"scope":18522,"src":"1882:105:112","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18476,"nodeType":"Block","src":"2051:37:112","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18473,"name":"_epochWrite","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18506,"src":"2068:11:112","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":18474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2068:13:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18472,"id":18475,"nodeType":"Return","src":"2061:20:112"}]},"functionSelector":"a228bced","id":18477,"implemented":true,"kind":"function","modifiers":[],"name":"startEpochTimeWrite","nodeType":"FunctionDefinition","parameters":{"id":18469,"nodeType":"ParameterList","parameters":[],"src":"2021:2:112"},"returnParameters":{"id":18472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18471,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18477,"src":"2042:7:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18470,"name":"uint256","nodeType":"ElementaryTypeName","src":"2042:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2041:9:112"},"scope":18522,"src":"1993:95:112","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18485,"nodeType":"Block","src":"2200:37:112","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18482,"name":"_epochWrite","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18506,"src":"2217:11:112","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":18483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2217:13:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18481,"id":18484,"nodeType":"Return","src":"2210:20:112"}]},"functionSelector":"b26b238e","id":18486,"implemented":true,"kind":"function","modifiers":[],"name":"future_epoch_time_write","nodeType":"FunctionDefinition","parameters":{"id":18478,"nodeType":"ParameterList","parameters":[],"src":"2170:2:112"},"returnParameters":{"id":18481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18480,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18486,"src":"2191:7:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18479,"name":"uint256","nodeType":"ElementaryTypeName","src":"2191:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2190:9:112"},"scope":18522,"src":"2138:99:112","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18493,"nodeType":"Block","src":"2291:29:112","statements":[{"expression":{"id":18491,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18427,"src":"2308:5:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18490,"id":18492,"nodeType":"Return","src":"2301:12:112"}]},"functionSelector":"2c4e722e","id":18494,"implemented":true,"kind":"function","modifiers":[],"name":"rate","nodeType":"FunctionDefinition","parameters":{"id":18487,"nodeType":"ParameterList","parameters":[],"src":"2256:2:112"},"returnParameters":{"id":18490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18489,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18494,"src":"2282:7:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18488,"name":"uint256","nodeType":"ElementaryTypeName","src":"2282:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2281:9:112"},"scope":18522,"src":"2243:77:112","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18505,"nodeType":"Block","src":"2376:69:112","statements":[{"expression":{"id":18501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18499,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18425,"src":"2386:15:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":18500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2405:1:112","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2386:20:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18502,"nodeType":"ExpressionStatement","src":"2386:20:112"},{"expression":{"id":18503,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18425,"src":"2423:15:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18498,"id":18504,"nodeType":"Return","src":"2416:22:112"}]},"id":18506,"implemented":true,"kind":"function","modifiers":[],"name":"_epochWrite","nodeType":"FunctionDefinition","parameters":{"id":18495,"nodeType":"ParameterList","parameters":[],"src":"2346:2:112"},"returnParameters":{"id":18498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18497,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18506,"src":"2367:7:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18496,"name":"uint256","nodeType":"ElementaryTypeName","src":"2367:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2366:9:112"},"scope":18522,"src":"2326:119:112","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":18520,"nodeType":"Block","src":"2502:48:112","statements":[{"expression":{"arguments":[{"id":18516,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18508,"src":"2532:2:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18517,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18510,"src":"2536:6:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18513,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18423,"src":"2512:14:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":18515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":209,"src":"2512:19:112","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":18518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2512:31:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18519,"nodeType":"ExpressionStatement","src":"2512:31:112"}]},"functionSelector":"40c10f19","id":18521,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":18511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18508,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":18521,"src":"2465:10:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18507,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18510,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":18521,"src":"2477:14:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18509,"name":"uint256","nodeType":"ElementaryTypeName","src":"2477:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2464:28:112"},"returnParameters":{"id":18512,"nodeType":"ParameterList","parameters":[],"src":"2502:0:112"},"scope":18522,"src":"2451:99:112","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18523,"src":"1037:1515:112"}],"src":"688:1865:112"},"id":112},"contracts/test/MockBaseRootGauge.sol":{"ast":{"absolutePath":"contracts/test/MockBaseRootGauge.sol","exportedSymbols":{"MockBaseRootGauge":[18556]},"id":18557,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18524,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:113"},{"id":18525,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:113"},{"absolutePath":"contracts/gauges/base/BaseRootGauge.sol","file":"../gauges/base/BaseRootGauge.sol","id":18526,"nodeType":"ImportDirective","scope":18557,"sourceUnit":17228,"src":"747:42:113","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18528,"name":"BaseRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":17227,"src":"957:13:113","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRootGauge_$17227","typeString":"contract BaseRootGauge"}},"id":18529,"nodeType":"InheritanceSpecifier","src":"957:13:113"}],"contractDependencies":[928,1239,7187,15196,17227],"contractKind":"contract","documentation":{"id":18527,"nodeType":"StructuredDocumentation","src":"791:135:113","text":" @dev This is used by the Base Root Gauge deployment task in the deployments repo, and is referenced there.\n Do not delete."},"fullyImplemented":true,"id":18556,"linearizedBaseContracts":[18556,17227,15196,7187,1239,928],"name":"MockBaseRootGauge","nodeType":"ContractDefinition","nodes":[{"body":{"id":18543,"nodeType":"Block","src":"1140:64:113","statements":[]},"id":18544,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18538,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18531,"src":"1111:6:113","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":18539,"name":"baseBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18533,"src":"1119:10:113","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},{"id":18540,"name":"baseBAL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18535,"src":"1131:7:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":18541,"modifierName":{"id":18537,"name":"BaseRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17227,"src":"1097:13:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseRootGauge_$17227_$","typeString":"type(contract BaseRootGauge)"}},"nodeType":"ModifierInvocation","src":"1097:42:113"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18531,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":18544,"src":"998:29:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":18530,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"998:22:113","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":18533,"mutability":"mutable","name":"baseBridge","nodeType":"VariableDeclaration","scope":18544,"src":"1037:28:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":18532,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"1037:17:113","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"internal"},{"constant":false,"id":18535,"mutability":"mutable","name":"baseBAL","nodeType":"VariableDeclaration","scope":18544,"src":"1075:15:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18534,"name":"address","nodeType":"ElementaryTypeName","src":"1075:7:113","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"988:108:113"},"returnParameters":{"id":18542,"nodeType":"ParameterList","parameters":[],"src":"1140:0:113"},"scope":18556,"src":"977:227:113","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18554,"nodeType":"Block","src":"1577:44:113","statements":[{"expression":{"arguments":[{"id":18551,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18547,"src":"1603:10:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18550,"name":"_postMintAction","nodeType":"Identifier","overloadedDeclarations":[17226],"referencedDeclaration":17226,"src":"1587:15:113","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":18552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1587:27:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18553,"nodeType":"ExpressionStatement","src":"1587:27:113"}]},"documentation":{"id":18545,"nodeType":"StructuredDocumentation","src":"1210:309:113","text":" @dev It would be very difficult to contrive a fork test that set the mintAmount to a precise value,\n so the bridge limits are best tested with a mock and unit tests.\n It must be payable to send ETH to pay for gas in the child chain.\n @param mintAmount Amount to be bridged"},"functionSelector":"90fd50b3","id":18555,"implemented":true,"kind":"function","modifiers":[],"name":"bridge","nodeType":"FunctionDefinition","parameters":{"id":18548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18547,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":18555,"src":"1540:18:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18546,"name":"uint256","nodeType":"ElementaryTypeName","src":"1540:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1539:20:113"},"returnParameters":{"id":18549,"nodeType":"ParameterList","parameters":[],"src":"1577:0:113"},"scope":18556,"src":"1524:97:113","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":18557,"src":"927:696:113"}],"src":"688:936:113"},"id":113},"contracts/test/MockChildChainGauge.sol":{"ast":{"absolutePath":"contracts/test/MockChildChainGauge.sol","exportedSymbols":{"MockChildChainGauge":[18679]},"id":18680,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18558,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:114"},{"id":18559,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:114"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","id":18560,"nodeType":"ImportDirective","scope":18680,"sourceUnit":365,"src":"747:86:114","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":18561,"nodeType":"ImportDirective","scope":18680,"sourceUnit":2249,"src":"834:90:114","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","id":18562,"nodeType":"ImportDirective","scope":18680,"sourceUnit":7420,"src":"925:78:114","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18563,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"1076:16:114","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":18564,"nodeType":"InheritanceSpecifier","src":"1076:16:114"}],"contractDependencies":[364,2340],"contractKind":"contract","fullyImplemented":true,"id":18679,"linearizedBaseContracts":[18679,364,2340],"name":"MockChildChainGauge","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":18568,"name":"UserCheckpoint","nodeType":"EventDefinition","parameters":{"id":18567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18566,"indexed":false,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18568,"src":"1120:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18565,"name":"address","nodeType":"ElementaryTypeName","src":"1120:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1119:14:114"},"src":"1099:35:114"},{"id":18571,"libraryName":{"id":18569,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7419,"src":"1146:8:114","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7419","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"1140:27:114","typeName":{"id":18570,"name":"uint256","nodeType":"ElementaryTypeName","src":"1159:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"functionSelector":"82c63066","id":18573,"mutability":"mutable","name":"lp_token","nodeType":"VariableDeclaration","scope":18679,"src":"1225:23:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18572,"name":"address","nodeType":"ElementaryTypeName","src":"1225:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[363],"constant":false,"functionSelector":"c45a0155","id":18576,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","overrides":{"id":18575,"nodeType":"OverrideSpecifier","overrides":[],"src":"1284:8:114"},"scope":18679,"src":"1254:46:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":18574,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"1254:22:114","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"public"},{"baseFunctions":[2339],"constant":false,"functionSelector":"54fd4d50","id":18579,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","overrides":{"id":18578,"nodeType":"OverrideSpecifier","overrides":[],"src":"1320:8:114"},"scope":18679,"src":"1306:30:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":18577,"name":"string","nodeType":"ElementaryTypeName","src":"1306:6:114","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"constant":false,"id":18581,"mutability":"mutable","name":"_checkpointStep","nodeType":"VariableDeclaration","scope":18679,"src":"1343:31:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18580,"name":"uint256","nodeType":"ElementaryTypeName","src":"1343:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":18585,"mutability":"mutable","name":"_integrateFraction","nodeType":"VariableDeclaration","scope":18679,"src":"1380:54:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":18584,"keyType":{"id":18582,"name":"address","nodeType":"ElementaryTypeName","src":"1388:7:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1380:27:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":18583,"name":"uint256","nodeType":"ElementaryTypeName","src":"1399:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"body":{"id":18594,"nodeType":"Block","src":"1477:35:114","statements":[{"expression":{"id":18592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18590,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18579,"src":"1487:7:114","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18591,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18587,"src":"1497:8:114","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1487:18:114","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":18593,"nodeType":"ExpressionStatement","src":"1487:18:114"}]},"id":18595,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18587,"mutability":"mutable","name":"_version","nodeType":"VariableDeclaration","scope":18595,"src":"1453:22:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18586,"name":"string","nodeType":"ElementaryTypeName","src":"1453:6:114","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1452:24:114"},"returnParameters":{"id":18589,"nodeType":"ParameterList","parameters":[],"src":"1477:0:114"},"scope":18679,"src":"1441:71:114","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[341],"body":{"id":18618,"nodeType":"Block","src":"1594:114:114","statements":[{"expression":{"id":18605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18603,"name":"lp_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18573,"src":"1604:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18604,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18597,"src":"1615:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1604:15:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18606,"nodeType":"ExpressionStatement","src":"1604:15:114"},{"expression":{"id":18612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18607,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18576,"src":"1629:7:114","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":18609,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1662:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1662:10:114","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":18608,"name":"ILiquidityGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":941,"src":"1639:22:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"type(contract ILiquidityGaugeFactory)"}},"id":18611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1639:34:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"src":"1629:44:114","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":18613,"nodeType":"ExpressionStatement","src":"1629:44:114"},{"expression":{"id":18616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18614,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18579,"src":"1683:7:114","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18615,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18599,"src":"1693:8:114","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1683:18:114","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":18617,"nodeType":"ExpressionStatement","src":"1683:18:114"}]},"functionSelector":"f399e22e","id":18619,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","overrides":{"id":18601,"nodeType":"OverrideSpecifier","overrides":[],"src":"1585:8:114"},"parameters":{"id":18600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18597,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":18619,"src":"1538:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18596,"name":"address","nodeType":"ElementaryTypeName","src":"1538:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18599,"mutability":"mutable","name":"_version","nodeType":"VariableDeclaration","scope":18619,"src":"1552:22:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18598,"name":"string","nodeType":"ElementaryTypeName","src":"1552:6:114","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1537:38:114"},"returnParameters":{"id":18602,"nodeType":"ParameterList","parameters":[],"src":"1594:0:114"},"scope":18679,"src":"1518:190:114","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18628,"nodeType":"Block","src":"1778:49:114","statements":[{"expression":{"id":18626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18624,"name":"_checkpointStep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18581,"src":"1788:15:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18625,"name":"checkpointStep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18621,"src":"1806:14:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1788:32:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18627,"nodeType":"ExpressionStatement","src":"1788:32:114"}]},"functionSelector":"554fc806","id":18629,"implemented":true,"kind":"function","modifiers":[],"name":"setMockCheckpointStep","nodeType":"FunctionDefinition","parameters":{"id":18622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18621,"mutability":"mutable","name":"checkpointStep","nodeType":"VariableDeclaration","scope":18629,"src":"1745:22:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18620,"name":"uint256","nodeType":"ElementaryTypeName","src":"1745:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1744:24:114"},"returnParameters":{"id":18623,"nodeType":"ParameterList","parameters":[],"src":"1778:0:114"},"scope":18679,"src":"1714:113:114","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18638,"nodeType":"Block","src":"1899:35:114","statements":[{"expression":{"id":18636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18634,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18576,"src":"1909:7:114","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18635,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18631,"src":"1919:8:114","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"src":"1909:18:114","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":18637,"nodeType":"ExpressionStatement","src":"1909:18:114"}]},"functionSelector":"83d9ddb0","id":18639,"implemented":true,"kind":"function","modifiers":[],"name":"setMockFactory","nodeType":"FunctionDefinition","parameters":{"id":18632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18631,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":18639,"src":"1857:31:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":18630,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"1857:22:114","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"1856:33:114"},"returnParameters":{"id":18633,"nodeType":"ParameterList","parameters":[],"src":"1899:0:114"},"scope":18679,"src":"1833:101:114","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[349],"body":{"id":18651,"nodeType":"Block","src":"2023:48:114","statements":[{"expression":{"baseExpression":{"id":18647,"name":"_integrateFraction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18585,"src":"2040:18:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":18649,"indexExpression":{"id":18648,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18641,"src":"2059:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2040:24:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18646,"id":18650,"nodeType":"Return","src":"2033:31:114"}]},"functionSelector":"09400707","id":18652,"implemented":true,"kind":"function","modifiers":[],"name":"integrate_fraction","nodeType":"FunctionDefinition","overrides":{"id":18643,"nodeType":"OverrideSpecifier","overrides":[],"src":"1996:8:114"},"parameters":{"id":18642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18641,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18652,"src":"1968:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18640,"name":"address","nodeType":"ElementaryTypeName","src":"1968:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1967:14:114"},"returnParameters":{"id":18646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18645,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18652,"src":"2014:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18644,"name":"uint256","nodeType":"ElementaryTypeName","src":"2014:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2013:9:114"},"scope":18679,"src":"1940:131:114","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[357],"body":{"id":18677,"nodeType":"Block","src":"2149:145:114","statements":[{"expression":{"id":18669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18660,"name":"_integrateFraction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18585,"src":"2159:18:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":18662,"indexExpression":{"id":18661,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18654,"src":"2178:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2159:24:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":18667,"name":"_checkpointStep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18581,"src":"2215:15:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":18663,"name":"_integrateFraction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18585,"src":"2186:18:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":18665,"indexExpression":{"id":18664,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18654,"src":"2205:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2186:24:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7372,"src":"2186:28:114","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2186:45:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2159:72:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18670,"nodeType":"ExpressionStatement","src":"2159:72:114"},{"eventCall":{"arguments":[{"id":18672,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18654,"src":"2261:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18671,"name":"UserCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18568,"src":"2246:14:114","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":18673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2246:20:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18674,"nodeType":"EmitStatement","src":"2241:25:114"},{"expression":{"hexValue":"74727565","id":18675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2283:4:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":18659,"id":18676,"nodeType":"Return","src":"2276:11:114"}]},"functionSelector":"4b820093","id":18678,"implemented":true,"kind":"function","modifiers":[],"name":"user_checkpoint","nodeType":"FunctionDefinition","overrides":{"id":18656,"nodeType":"OverrideSpecifier","overrides":[],"src":"2125:8:114"},"parameters":{"id":18655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18654,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18678,"src":"2102:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18653,"name":"address","nodeType":"ElementaryTypeName","src":"2102:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2101:14:114"},"returnParameters":{"id":18659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18658,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18678,"src":"2143:4:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18657,"name":"bool","nodeType":"ElementaryTypeName","src":"2143:4:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2142:6:114"},"scope":18679,"src":"2077:217:114","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18680,"src":"1044:1252:114"}],"src":"688:1609:114"},"id":114},"contracts/test/MockGaugeController.sol":{"ast":{"absolutePath":"contracts/test/MockGaugeController.sol","exportedSymbols":{"MockGaugeController":[18919]},"id":18920,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18681,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:115"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","id":18682,"nodeType":"ImportDirective","scope":18920,"sourceUnit":822,"src":"713:86:115","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18683,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1011:16:115","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":18684,"nodeType":"InheritanceSpecifier","src":"1011:16:115"}],"contractDependencies":[821],"contractKind":"contract","fullyImplemented":true,"id":18919,"linearizedBaseContracts":[18919,821],"name":"MockGaugeController","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":18686,"mutability":"mutable","name":"_numGaugeTypes","nodeType":"VariableDeclaration","scope":18919,"src":"1034:29:115","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":18685,"name":"int128","nodeType":"ElementaryTypeName","src":"1034:6:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"private"},{"constant":false,"id":18690,"mutability":"mutable","name":"_validGauge","nodeType":"VariableDeclaration","scope":18919,"src":"1069:44:115","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":18689,"keyType":{"id":18687,"name":"address","nodeType":"ElementaryTypeName","src":"1077:7:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1069:24:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":18688,"name":"bool","nodeType":"ElementaryTypeName","src":"1088:4:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"constant":false,"id":18694,"mutability":"mutable","name":"_gaugeType","nodeType":"VariableDeclaration","scope":18919,"src":"1119:45:115","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_int128_$","typeString":"mapping(address => int128)"},"typeName":{"id":18693,"keyType":{"id":18691,"name":"address","nodeType":"ElementaryTypeName","src":"1127:7:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1119:26:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_int128_$","typeString":"mapping(address => int128)"},"valueType":{"id":18692,"name":"int128","nodeType":"ElementaryTypeName","src":"1138:6:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}},"visibility":"private"},{"constant":false,"id":18698,"mutability":"mutable","name":"_weights","nodeType":"VariableDeclaration","scope":18919,"src":"1170:44:115","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":18697,"keyType":{"id":18695,"name":"address","nodeType":"ElementaryTypeName","src":"1178:7:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1170:27:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":18696,"name":"uint256","nodeType":"ElementaryTypeName","src":"1189:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":18700,"mutability":"mutable","name":"_gaugeWeightBias","nodeType":"VariableDeclaration","scope":18919,"src":"1220:32:115","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18699,"name":"uint256","nodeType":"ElementaryTypeName","src":"1220:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"baseFunctions":[806],"constant":false,"functionSelector":"f851a440","id":18703,"mutability":"mutable","name":"admin","nodeType":"VariableDeclaration","overrides":{"id":18702,"nodeType":"OverrideSpecifier","overrides":[],"src":"1285:8:115"},"scope":18919,"src":"1259:40:115","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":18701,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1259:18:115","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"public"},{"baseFunctions":[763],"constant":false,"functionSelector":"dfe05031","id":18706,"mutability":"mutable","name":"voting_escrow","nodeType":"VariableDeclaration","overrides":{"id":18705,"nodeType":"OverrideSpecifier","overrides":[],"src":"1378:8:115"},"scope":18919,"src":"1357:43:115","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":18704,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"1357:13:115","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"public"},{"anonymous":false,"id":18714,"name":"NewGauge","nodeType":"EventDefinition","parameters":{"id":18713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18708,"indexed":false,"mutability":"mutable","name":"addr","nodeType":"VariableDeclaration","scope":18714,"src":"1501:12:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18707,"name":"address","nodeType":"ElementaryTypeName","src":"1501:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18710,"indexed":false,"mutability":"mutable","name":"gauge_type","nodeType":"VariableDeclaration","scope":18714,"src":"1515:17:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":18709,"name":"int128","nodeType":"ElementaryTypeName","src":"1515:6:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":18712,"indexed":false,"mutability":"mutable","name":"weight","nodeType":"VariableDeclaration","scope":18714,"src":"1534:14:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18711,"name":"uint256","nodeType":"ElementaryTypeName","src":"1534:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1500:49:115"},"src":"1486:64:115"},{"body":{"id":18729,"nodeType":"Block","src":"1634:80:115","statements":[{"expression":{"id":18723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18721,"name":"voting_escrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18706,"src":"1644:13:115","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18722,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18716,"src":"1660:12:115","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"src":"1644:28:115","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":18724,"nodeType":"ExpressionStatement","src":"1644:28:115"},{"expression":{"id":18727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18725,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18703,"src":"1682:5:115","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18726,"name":"authorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18718,"src":"1690:17:115","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"src":"1682:25:115","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":18728,"nodeType":"ExpressionStatement","src":"1682:25:115"}]},"id":18730,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18716,"mutability":"mutable","name":"votingEscrow","nodeType":"VariableDeclaration","scope":18730,"src":"1568:26:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":18715,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"1568:13:115","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"},{"constant":false,"id":18718,"mutability":"mutable","name":"authorizerAdaptor","nodeType":"VariableDeclaration","scope":18730,"src":"1596:36:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":18717,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1596:18:115","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"1567:66:115"},"returnParameters":{"id":18720,"nodeType":"ParameterList","parameters":[],"src":"1634:0:115"},"scope":18919,"src":"1556:158:115","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[794],"body":{"id":18738,"nodeType":"Block","src":"1785:38:115","statements":[{"expression":{"id":18736,"name":"_numGaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18686,"src":"1802:14:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"functionReturnParameters":18735,"id":18737,"nodeType":"Return","src":"1795:21:115"}]},"functionSelector":"9fba03a1","id":18739,"implemented":true,"kind":"function","modifiers":[],"name":"n_gauge_types","nodeType":"FunctionDefinition","overrides":{"id":18732,"nodeType":"OverrideSpecifier","overrides":[],"src":"1759:8:115"},"parameters":{"id":18731,"nodeType":"ParameterList","parameters":[],"src":"1742:2:115"},"returnParameters":{"id":18735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18734,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18739,"src":"1777:6:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":18733,"name":"int128","nodeType":"ElementaryTypeName","src":"1777:6:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1776:8:115"},"scope":18919,"src":"1720:103:115","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[801],"body":{"id":18758,"nodeType":"Block","src":"1905:115:115","statements":[{"expression":{"arguments":[{"baseExpression":{"id":18748,"name":"_validGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18690,"src":"1923:11:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":18750,"indexExpression":{"id":18749,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18741,"src":"1935:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1923:18:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520646f65736e2774206578697374206f6e20636f6e74726f6c6c6572","id":18751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1943:35:115","typeDescriptions":{"typeIdentifier":"t_stringliteral_5f98f0056a2a2d36597d519e41a523d365a021c79810a9edf58e600e7fd69ca4","typeString":"literal_string \"Gauge doesn't exist on controller\""},"value":"Gauge doesn't exist on controller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5f98f0056a2a2d36597d519e41a523d365a021c79810a9edf58e600e7fd69ca4","typeString":"literal_string \"Gauge doesn't exist on controller\""}],"id":18747,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1915:7:115","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":18752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1915:64:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18753,"nodeType":"ExpressionStatement","src":"1915:64:115"},{"expression":{"baseExpression":{"id":18754,"name":"_gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18694,"src":"1996:10:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_int128_$","typeString":"mapping(address => int128)"}},"id":18756,"indexExpression":{"id":18755,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18741,"src":"2007:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1996:17:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"functionReturnParameters":18746,"id":18757,"nodeType":"Return","src":"1989:24:115"}]},"functionSelector":"3f9095b7","id":18759,"implemented":true,"kind":"function","modifiers":[],"name":"gauge_types","nodeType":"FunctionDefinition","overrides":{"id":18743,"nodeType":"OverrideSpecifier","overrides":[],"src":"1879:8:115"},"parameters":{"id":18742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18741,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18759,"src":"1850:13:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18740,"name":"address","nodeType":"ElementaryTypeName","src":"1850:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1849:15:115"},"returnParameters":{"id":18746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18745,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18759,"src":"1897:6:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":18744,"name":"int128","nodeType":"ElementaryTypeName","src":"1897:6:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1896:8:115"},"scope":18919,"src":"1829:191:115","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[789],"body":{"id":18798,"nodeType":"Block","src":"2096:247:115","statements":[{"expression":{"arguments":[{"id":18771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2114:19:115","subExpression":{"baseExpression":{"id":18768,"name":"_validGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18690,"src":"2115:11:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":18770,"indexExpression":{"id":18769,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18761,"src":"2127:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2115:18:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520616c726561647920657869737473206f6e20636f6e74726f6c6c6572","id":18772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2135:36:115","typeDescriptions":{"typeIdentifier":"t_stringliteral_5c13c9fbfc091c81e4c335ae6e8019c9f881cfa5f4d6c852d65a3b51304c1acc","typeString":"literal_string \"Gauge already exists on controller\""},"value":"Gauge already exists on controller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5c13c9fbfc091c81e4c335ae6e8019c9f881cfa5f4d6c852d65a3b51304c1acc","typeString":"literal_string \"Gauge already exists on controller\""}],"id":18767,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2106:7:115","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":18773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2106:66:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18774,"nodeType":"ExpressionStatement","src":"2106:66:115"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":18782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":18778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18776,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18763,"src":"2190:9:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":18777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2203:1:115","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2190:14:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":18781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18779,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18763,"src":"2208:9:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":18780,"name":"_numGaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18686,"src":"2220:14:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"2208:26:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2190:44:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c69642067617567652074797065","id":18783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2236:20:115","typeDescriptions":{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""},"value":"Invalid gauge type"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""}],"id":18775,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2182:7:115","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":18784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2182:75:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18785,"nodeType":"ExpressionStatement","src":"2182:75:115"},{"expression":{"id":18790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18786,"name":"_validGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18690,"src":"2267:11:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":18788,"indexExpression":{"id":18787,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18761,"src":"2279:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2267:18:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":18789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2288:4:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2267:25:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18791,"nodeType":"ExpressionStatement","src":"2267:25:115"},{"eventCall":{"arguments":[{"id":18793,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18761,"src":"2316:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18794,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18763,"src":"2323:9:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"hexValue":"30","id":18795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2334:1:115","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":18792,"name":"NewGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18714,"src":"2307:8:115","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_int128_$_t_uint256_$returns$__$","typeString":"function (address,int128,uint256)"}},"id":18796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2307:29:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18797,"nodeType":"EmitStatement","src":"2302:34:115"}]},"functionSelector":"3a04f900","id":18799,"implemented":true,"kind":"function","modifiers":[],"name":"add_gauge","nodeType":"FunctionDefinition","overrides":{"id":18765,"nodeType":"OverrideSpecifier","overrides":[],"src":"2087:8:115"},"parameters":{"id":18764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18761,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18799,"src":"2045:13:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18760,"name":"address","nodeType":"ElementaryTypeName","src":"2045:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18763,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":18799,"src":"2060:16:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":18762,"name":"int128","nodeType":"ElementaryTypeName","src":"2060:6:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"2044:33:115"},"returnParameters":{"id":18766,"nodeType":"ParameterList","parameters":[],"src":"2096:0:115"},"scope":18919,"src":"2026:317:115","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[775],"body":{"id":18811,"nodeType":"Block","src":"2411:36:115","statements":[{"expression":{"id":18809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18807,"name":"_numGaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18686,"src":"2421:14:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":18808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2439:1:115","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2421:19:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":18810,"nodeType":"ExpressionStatement","src":"2421:19:115"}]},"functionSelector":"92d0d232","id":18812,"implemented":true,"kind":"function","modifiers":[],"name":"add_type","nodeType":"FunctionDefinition","overrides":{"id":18805,"nodeType":"OverrideSpecifier","overrides":[],"src":"2402:8:115"},"parameters":{"id":18804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18801,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18812,"src":"2367:15:115","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":18800,"name":"string","nodeType":"ElementaryTypeName","src":"2367:6:115","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18803,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18812,"src":"2384:7:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18802,"name":"uint256","nodeType":"ElementaryTypeName","src":"2384:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2366:26:115"},"returnParameters":{"id":18806,"nodeType":"ParameterList","parameters":[],"src":"2411:0:115"},"scope":18919,"src":"2349:98:115","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[768],"body":{"id":18822,"nodeType":"Block","src":"2510:33:115","statements":[{"expression":{"arguments":[{"hexValue":"30","id":18819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2534:1:115","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":18818,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2447,"src":"2527:6:115","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2447_$","typeString":"type(contract IERC20)"}},"id":18820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2527:9:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"functionReturnParameters":18817,"id":18821,"nodeType":"Return","src":"2520:16:115"}]},"functionSelector":"fc0c546a","id":18823,"implemented":true,"kind":"function","modifiers":[],"name":"token","nodeType":"FunctionDefinition","overrides":{"id":18814,"nodeType":"OverrideSpecifier","overrides":[],"src":"2484:8:115"},"parameters":{"id":18813,"nodeType":"ParameterList","parameters":[],"src":"2467:2:115"},"returnParameters":{"id":18817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18816,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18823,"src":"2502:6:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":18815,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2502:6:115","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2501:8:115"},"scope":18919,"src":"2453:90:115","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[749],"body":{"id":18829,"nodeType":"Block","src":"2602:64:115","statements":[]},"functionSelector":"615e5237","id":18830,"implemented":true,"kind":"function","modifiers":[],"name":"checkpoint_gauge","nodeType":"FunctionDefinition","overrides":{"id":18827,"nodeType":"OverrideSpecifier","overrides":[],"src":"2593:8:115"},"parameters":{"id":18826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18825,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18830,"src":"2575:7:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18824,"name":"address","nodeType":"ElementaryTypeName","src":"2575:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2574:9:115"},"returnParameters":{"id":18828,"nodeType":"ParameterList","parameters":[],"src":"2602:0:115"},"scope":18919,"src":"2549:117:115","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[758],"body":{"id":18846,"nodeType":"Block","src":"2768:58:115","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":18840,"name":"_weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18698,"src":"2785:8:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":18842,"indexExpression":{"id":18841,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18832,"src":"2794:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2785:15:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":18843,"name":"_gaugeWeightBias","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18700,"src":"2803:16:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2785:34:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18839,"id":18845,"nodeType":"Return","src":"2778:41:115"}]},"functionSelector":"d3078c94","id":18847,"implemented":true,"kind":"function","modifiers":[],"name":"gauge_relative_weight","nodeType":"FunctionDefinition","overrides":{"id":18836,"nodeType":"OverrideSpecifier","overrides":[],"src":"2741:8:115"},"parameters":{"id":18835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18832,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18847,"src":"2703:13:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18831,"name":"address","nodeType":"ElementaryTypeName","src":"2703:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18834,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18847,"src":"2718:7:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18833,"name":"uint256","nodeType":"ElementaryTypeName","src":"2718:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2702:24:115"},"returnParameters":{"id":18839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18838,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18847,"src":"2759:7:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18837,"name":"uint256","nodeType":"ElementaryTypeName","src":"2759:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2758:9:115"},"scope":18919,"src":"2672:154:115","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[782],"body":{"id":18855,"nodeType":"Block","src":"2895:64:115","statements":[]},"functionSelector":"db1ca260","id":18856,"implemented":true,"kind":"function","modifiers":[],"name":"change_type_weight","nodeType":"FunctionDefinition","overrides":{"id":18853,"nodeType":"OverrideSpecifier","overrides":[],"src":"2886:8:115"},"parameters":{"id":18852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18849,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18856,"src":"2860:6:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":18848,"name":"int128","nodeType":"ElementaryTypeName","src":"2860:6:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":18851,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18856,"src":"2868:7:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18850,"name":"uint256","nodeType":"ElementaryTypeName","src":"2868:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2859:17:115"},"returnParameters":{"id":18854,"nodeType":"ParameterList","parameters":[],"src":"2895:0:115"},"scope":18919,"src":"2832:127:115","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[813],"body":{"id":18868,"nodeType":"Block","src":"3040:42:115","statements":[{"expression":{"baseExpression":{"id":18864,"name":"_validGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18690,"src":"3057:11:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":18866,"indexExpression":{"id":18865,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18858,"src":"3069:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3057:18:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":18863,"id":18867,"nodeType":"Return","src":"3050:25:115"}]},"functionSelector":"61df1bf9","id":18869,"implemented":true,"kind":"function","modifiers":[],"name":"gauge_exists","nodeType":"FunctionDefinition","overrides":{"id":18860,"nodeType":"OverrideSpecifier","overrides":[],"src":"3016:8:115"},"parameters":{"id":18859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18858,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18869,"src":"2987:13:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18857,"name":"address","nodeType":"ElementaryTypeName","src":"2987:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2986:15:115"},"returnParameters":{"id":18863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18862,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18869,"src":"3034:4:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18861,"name":"bool","nodeType":"ElementaryTypeName","src":"3034:4:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3033:6:115"},"scope":18919,"src":"2965:117:115","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18889,"nodeType":"Block","src":"3152:116:115","statements":[{"expression":{"arguments":[{"baseExpression":{"id":18877,"name":"_validGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18690,"src":"3170:11:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":18879,"indexExpression":{"id":18878,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18871,"src":"3182:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3170:18:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520646f6573206e6f74206578697374206f6e20636f6e74726f6c6c6572","id":18880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3190:36:115","typeDescriptions":{"typeIdentifier":"t_stringliteral_10ed277e0923dd8ee0600a0c78a0728c0a9bfe8bf9a7a37d50adf19e09000ff1","typeString":"literal_string \"Gauge does not exist on controller\""},"value":"Gauge does not exist on controller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_10ed277e0923dd8ee0600a0c78a0728c0a9bfe8bf9a7a37d50adf19e09000ff1","typeString":"literal_string \"Gauge does not exist on controller\""}],"id":18876,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3162:7:115","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":18881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3162:65:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18882,"nodeType":"ExpressionStatement","src":"3162:65:115"},{"expression":{"id":18887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18883,"name":"_weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18698,"src":"3237:8:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":18885,"indexExpression":{"id":18884,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18871,"src":"3246:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3237:15:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18886,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18873,"src":"3255:6:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3237:24:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18888,"nodeType":"ExpressionStatement","src":"3237:24:115"}]},"functionSelector":"8d57bba4","id":18890,"implemented":true,"kind":"function","modifiers":[],"name":"setGaugeWeight","nodeType":"FunctionDefinition","parameters":{"id":18874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18871,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18890,"src":"3112:13:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18870,"name":"address","nodeType":"ElementaryTypeName","src":"3112:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18873,"mutability":"mutable","name":"weight","nodeType":"VariableDeclaration","scope":18890,"src":"3127:14:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18872,"name":"uint256","nodeType":"ElementaryTypeName","src":"3127:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3111:31:115"},"returnParameters":{"id":18875,"nodeType":"ParameterList","parameters":[],"src":"3152:0:115"},"scope":18919,"src":"3088:180:115","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18906,"nodeType":"Block","src":"3325:88:115","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18896,"name":"bias","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"3343:4:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31653138","id":18897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3351:4:115","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"3343:12:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4269617320746f6f2068696768","id":18899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3357:15:115","typeDescriptions":{"typeIdentifier":"t_stringliteral_9e37896e7c30bb7b7cb21a03a66c759359a490a0b69523dbb894e4207a9ea147","typeString":"literal_string \"Bias too high\""},"value":"Bias too high"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9e37896e7c30bb7b7cb21a03a66c759359a490a0b69523dbb894e4207a9ea147","typeString":"literal_string \"Bias too high\""}],"id":18895,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3335:7:115","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":18900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3335:38:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18901,"nodeType":"ExpressionStatement","src":"3335:38:115"},{"expression":{"id":18904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18902,"name":"_gaugeWeightBias","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18700,"src":"3383:16:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18903,"name":"bias","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"3402:4:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3383:23:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18905,"nodeType":"ExpressionStatement","src":"3383:23:115"}]},"functionSelector":"72a5d062","id":18907,"implemented":true,"kind":"function","modifiers":[],"name":"setGaugeWeightBias","nodeType":"FunctionDefinition","parameters":{"id":18893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18892,"mutability":"mutable","name":"bias","nodeType":"VariableDeclaration","scope":18907,"src":"3302:12:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18891,"name":"uint256","nodeType":"ElementaryTypeName","src":"3302:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3301:14:115"},"returnParameters":{"id":18894,"nodeType":"ParameterList","parameters":[],"src":"3325:0:115"},"scope":18919,"src":"3274:139:115","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[820],"body":{"id":18917,"nodeType":"Block","src":"3490:25:115","statements":[{"expression":{"hexValue":"30","id":18915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3507:1:115","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":18914,"id":18916,"nodeType":"Return","src":"3500:8:115"}]},"functionSelector":"a4d7a250","id":18918,"implemented":true,"kind":"function","modifiers":[],"name":"time_weight","nodeType":"FunctionDefinition","overrides":{"id":18911,"nodeType":"OverrideSpecifier","overrides":[],"src":"3463:8:115"},"parameters":{"id":18910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18909,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18918,"src":"3440:7:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18908,"name":"address","nodeType":"ElementaryTypeName","src":"3440:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3439:9:115"},"returnParameters":{"id":18914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18913,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18918,"src":"3481:7:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18912,"name":"uint256","nodeType":"ElementaryTypeName","src":"3481:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3480:9:115"},"scope":18919,"src":"3419:96:115","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":18920,"src":"979:2538:115"}],"src":"688:2830:115"},"id":115},"contracts/test/MockL2LayerZeroDelegation.sol":{"ast":{"absolutePath":"contracts/test/MockL2LayerZeroDelegation.sol","exportedSymbols":{"MockL2LayerZeroDelegation":[18950]},"id":18951,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18921,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:116"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol","id":18922,"nodeType":"ImportDirective","scope":18951,"sourceUnit":855,"src":"713:92:116","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18923,"name":"IL2LayerZeroDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":854,"src":"845:22:116","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"id":18924,"nodeType":"InheritanceSpecifier","src":"845:22:116"}],"contractDependencies":[854],"contractKind":"contract","fullyImplemented":true,"id":18950,"linearizedBaseContracts":[18950,854],"name":"MockL2LayerZeroDelegation","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":18928,"name":"OnVeBalBridged","nodeType":"EventDefinition","parameters":{"id":18927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18926,"indexed":false,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18928,"src":"895:12:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18925,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:116","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"894:14:116"},"src":"874:35:116"},{"anonymous":false,"id":18930,"name":"OnVeBalSupplyUpdate","nodeType":"EventDefinition","parameters":{"id":18929,"nodeType":"ParameterList","parameters":[],"src":"939:2:116"},"src":"914:28:116"},{"baseFunctions":[849],"body":{"id":18940,"nodeType":"Block","src":"1004:42:116","statements":[{"eventCall":{"arguments":[{"id":18937,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18932,"src":"1034:4:116","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18936,"name":"OnVeBalBridged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18928,"src":"1019:14:116","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":18938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1019:20:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18939,"nodeType":"EmitStatement","src":"1014:25:116"}]},"functionSelector":"df130bfe","id":18941,"implemented":true,"kind":"function","modifiers":[],"name":"onVeBalBridged","nodeType":"FunctionDefinition","overrides":{"id":18934,"nodeType":"OverrideSpecifier","overrides":[],"src":"995:8:116"},"parameters":{"id":18933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18932,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18941,"src":"972:12:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18931,"name":"address","nodeType":"ElementaryTypeName","src":"972:7:116","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"971:14:116"},"returnParameters":{"id":18935,"nodeType":"ParameterList","parameters":[],"src":"1004:0:116"},"scope":18950,"src":"948:98:116","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[853],"body":{"id":18948,"nodeType":"Block","src":"1101:43:116","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":18945,"name":"OnVeBalSupplyUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18930,"src":"1116:19:116","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":18946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1116:21:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18947,"nodeType":"EmitStatement","src":"1111:26:116"}]},"functionSelector":"96345fb5","id":18949,"implemented":true,"kind":"function","modifiers":[],"name":"onVeBalSupplyUpdate","nodeType":"FunctionDefinition","overrides":{"id":18943,"nodeType":"OverrideSpecifier","overrides":[],"src":"1092:8:116"},"parameters":{"id":18942,"nodeType":"ParameterList","parameters":[],"src":"1080:2:116"},"returnParameters":{"id":18944,"nodeType":"ParameterList","parameters":[],"src":"1101:0:116"},"scope":18950,"src":"1052:92:116","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18951,"src":"807:339:116"}],"src":"688:459:116"},"id":116},"contracts/test/MockLiquidityGauge.sol":{"ast":{"absolutePath":"contracts/test/MockLiquidityGauge.sol","exportedSymbols":{"MockLiquidityGauge":[19071]},"id":19072,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18952,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:117"},{"id":18953,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:117"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","id":18954,"nodeType":"ImportDirective","scope":19072,"sourceUnit":929,"src":"747:85:117","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":18955,"nodeType":"ImportDirective","scope":19072,"sourceUnit":2249,"src":"833:90:117","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18956,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"995:15:117","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"id":18957,"nodeType":"InheritanceSpecifier","src":"995:15:117"}],"contractDependencies":[928],"contractKind":"contract","fullyImplemented":true,"id":19071,"linearizedBaseContracts":[19071,928],"name":"MockLiquidityGauge","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"82c63066","id":18959,"mutability":"mutable","name":"lp_token","nodeType":"VariableDeclaration","scope":19071,"src":"1069:23:117","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18958,"name":"address","nodeType":"ElementaryTypeName","src":"1069:7:117","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"id":18961,"mutability":"mutable","name":"_isKilled","nodeType":"VariableDeclaration","scope":19071,"src":"1098:22:117","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18960,"name":"bool","nodeType":"ElementaryTypeName","src":"1098:4:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"body":{"id":18964,"nodeType":"Block","src":"1141:64:117","statements":[]},"id":18965,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18962,"nodeType":"ParameterList","parameters":[],"src":"1138:2:117"},"returnParameters":{"id":18963,"nodeType":"ParameterList","parameters":[],"src":"1141:0:117"},"scope":19071,"src":"1127:78:117","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18976,"nodeType":"Block","src":"1263:32:117","statements":[{"expression":{"id":18974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18972,"name":"lp_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18959,"src":"1273:8:117","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18973,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18967,"src":"1284:4:117","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1273:15:117","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18975,"nodeType":"ExpressionStatement","src":"1273:15:117"}]},"functionSelector":"cd6dc687","id":18977,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":18970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18967,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":18977,"src":"1231:12:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18966,"name":"address","nodeType":"ElementaryTypeName","src":"1231:7:117","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18969,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18977,"src":"1245:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18968,"name":"uint256","nodeType":"ElementaryTypeName","src":"1245:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1230:23:117"},"returnParameters":{"id":18971,"nodeType":"ParameterList","parameters":[],"src":"1263:0:117"},"scope":19071,"src":"1211:84:117","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[899],"body":{"id":18985,"nodeType":"Block","src":"1360:33:117","statements":[{"expression":{"id":18983,"name":"_isKilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18961,"src":"1377:9:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":18982,"id":18984,"nodeType":"Return","src":"1370:16:117"}]},"functionSelector":"9c868ac0","id":18986,"implemented":true,"kind":"function","modifiers":[],"name":"is_killed","nodeType":"FunctionDefinition","overrides":{"id":18979,"nodeType":"OverrideSpecifier","overrides":[],"src":"1336:8:117"},"parameters":{"id":18978,"nodeType":"ParameterList","parameters":[],"src":"1319:2:117"},"returnParameters":{"id":18982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18981,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18986,"src":"1354:4:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18980,"name":"bool","nodeType":"ElementaryTypeName","src":"1354:4:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1353:6:117"},"scope":19071,"src":"1301:92:117","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[903],"body":{"id":18994,"nodeType":"Block","src":"1438:33:117","statements":[{"expression":{"id":18992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18990,"name":"_isKilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18961,"src":"1448:9:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":18991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1460:4:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1448:16:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18993,"nodeType":"ExpressionStatement","src":"1448:16:117"}]},"functionSelector":"ab8f0945","id":18995,"implemented":true,"kind":"function","modifiers":[],"name":"killGauge","nodeType":"FunctionDefinition","overrides":{"id":18988,"nodeType":"OverrideSpecifier","overrides":[],"src":"1429:8:117"},"parameters":{"id":18987,"nodeType":"ParameterList","parameters":[],"src":"1417:2:117"},"returnParameters":{"id":18989,"nodeType":"ParameterList","parameters":[],"src":"1438:0:117"},"scope":19071,"src":"1399:72:117","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[907],"body":{"id":19003,"nodeType":"Block","src":"1518:34:117","statements":[{"expression":{"id":19001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18999,"name":"_isKilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18961,"src":"1528:9:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":19000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1540:5:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"1528:17:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19002,"nodeType":"ExpressionStatement","src":"1528:17:117"}]},"functionSelector":"d34fb267","id":19004,"implemented":true,"kind":"function","modifiers":[],"name":"unkillGauge","nodeType":"FunctionDefinition","overrides":{"id":18997,"nodeType":"OverrideSpecifier","overrides":[],"src":"1509:8:117"},"parameters":{"id":18996,"nodeType":"ParameterList","parameters":[],"src":"1497:2:117"},"returnParameters":{"id":18998,"nodeType":"ParameterList","parameters":[],"src":"1518:0:117"},"scope":19071,"src":"1477:75:117","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[885],"body":{"id":19017,"nodeType":"Block","src":"1803:46:117","statements":[{"expression":{"arguments":[{"expression":{"id":19013,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1821:6:117","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":19014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"1821:20:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19012,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"1813:7:117","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":19015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1813:29:117","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19016,"nodeType":"ExpressionStatement","src":"1813:29:117"}]},"functionSelector":"09400707","id":19018,"implemented":true,"kind":"function","modifiers":[],"name":"integrate_fraction","nodeType":"FunctionDefinition","overrides":{"id":19008,"nodeType":"OverrideSpecifier","overrides":[],"src":"1776:8:117"},"parameters":{"id":19007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19006,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19018,"src":"1753:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19005,"name":"address","nodeType":"ElementaryTypeName","src":"1753:7:117","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1752:9:117"},"returnParameters":{"id":19011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19010,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19018,"src":"1794:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19009,"name":"uint256","nodeType":"ElementaryTypeName","src":"1794:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1793:9:117"},"scope":19071,"src":"1725:124:117","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[893],"body":{"id":19031,"nodeType":"Block","src":"1927:46:117","statements":[{"expression":{"arguments":[{"expression":{"id":19027,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1945:6:117","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":19028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"1945:20:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19026,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"1937:7:117","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":19029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1937:29:117","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19030,"nodeType":"ExpressionStatement","src":"1937:29:117"}]},"functionSelector":"4b820093","id":19032,"implemented":true,"kind":"function","modifiers":[],"name":"user_checkpoint","nodeType":"FunctionDefinition","overrides":{"id":19022,"nodeType":"OverrideSpecifier","overrides":[],"src":"1903:8:117"},"parameters":{"id":19021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19020,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19032,"src":"1880:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19019,"name":"address","nodeType":"ElementaryTypeName","src":"1880:7:117","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1879:9:117"},"returnParameters":{"id":19025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19024,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19032,"src":"1921:4:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19023,"name":"bool","nodeType":"ElementaryTypeName","src":"1921:4:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1920:6:117"},"scope":19071,"src":"1855:118:117","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[913],"body":{"id":19043,"nodeType":"Block","src":"2041:46:117","statements":[{"expression":{"arguments":[{"expression":{"id":19039,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2059:6:117","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":19040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"2059:20:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19038,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"2051:7:117","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":19041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2051:29:117","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19042,"nodeType":"ExpressionStatement","src":"2051:29:117"}]},"functionSelector":"10d3eb04","id":19044,"implemented":true,"kind":"function","modifiers":[],"name":"setRelativeWeightCap","nodeType":"FunctionDefinition","overrides":{"id":19036,"nodeType":"OverrideSpecifier","overrides":[],"src":"2032:8:117"},"parameters":{"id":19035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19034,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19044,"src":"2009:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19033,"name":"uint256","nodeType":"ElementaryTypeName","src":"2009:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2008:9:117"},"returnParameters":{"id":19037,"nodeType":"ParameterList","parameters":[],"src":"2041:0:117"},"scope":19071,"src":"1979:108:117","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[919],"body":{"id":19055,"nodeType":"Block","src":"2166:46:117","statements":[{"expression":{"arguments":[{"expression":{"id":19051,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2184:6:117","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":19052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"2184:20:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19050,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"2176:7:117","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":19053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2176:29:117","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19054,"nodeType":"ExpressionStatement","src":"2176:29:117"}]},"functionSelector":"83f5c39b","id":19056,"implemented":true,"kind":"function","modifiers":[],"name":"getRelativeWeightCap","nodeType":"FunctionDefinition","overrides":{"id":19046,"nodeType":"OverrideSpecifier","overrides":[],"src":"2139:8:117"},"parameters":{"id":19045,"nodeType":"ParameterList","parameters":[],"src":"2122:2:117"},"returnParameters":{"id":19049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19048,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19056,"src":"2157:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19047,"name":"uint256","nodeType":"ElementaryTypeName","src":"2157:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2156:9:117"},"scope":19071,"src":"2093:119:117","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[927],"body":{"id":19069,"nodeType":"Block","src":"2301:46:117","statements":[{"expression":{"arguments":[{"expression":{"id":19065,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2319:6:117","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":19066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"2319:20:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19064,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"2311:7:117","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":19067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2311:29:117","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19068,"nodeType":"ExpressionStatement","src":"2311:29:117"}]},"functionSelector":"14e956f5","id":19070,"implemented":true,"kind":"function","modifiers":[],"name":"getCappedRelativeWeight","nodeType":"FunctionDefinition","overrides":{"id":19060,"nodeType":"OverrideSpecifier","overrides":[],"src":"2274:8:117"},"parameters":{"id":19059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19058,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19070,"src":"2251:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19057,"name":"uint256","nodeType":"ElementaryTypeName","src":"2251:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2250:9:117"},"returnParameters":{"id":19063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19062,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19070,"src":"2292:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19061,"name":"uint256","nodeType":"ElementaryTypeName","src":"2292:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2291:9:117"},"scope":19071,"src":"2218:129:117","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":19072,"src":"964:1385:117"}],"src":"688:1662:117"},"id":117},"contracts/test/MockLiquidityGaugeFactory.sol":{"ast":{"absolutePath":"contracts/test/MockLiquidityGaugeFactory.sol","exportedSymbols":{"MockLiquidityGaugeFactory":[19116]},"id":19117,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19073,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:118"},{"id":19074,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:118"},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../gauges/BaseGaugeFactory.sol","id":19075,"nodeType":"ImportDirective","scope":19117,"sourceUnit":13897,"src":"747:40:118","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/test/MockLiquidityGauge.sol","file":"./MockLiquidityGauge.sol","id":19076,"nodeType":"ImportDirective","scope":19117,"sourceUnit":19072,"src":"788:34:118","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19077,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"862:16:118","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":19078,"nodeType":"InheritanceSpecifier","src":"862:16:118"}],"contractDependencies":[941,13896],"contractKind":"contract","fullyImplemented":true,"id":19116,"linearizedBaseContracts":[19116,13896,941],"name":"MockLiquidityGaugeFactory","nodeType":"ContractDefinition","nodes":[{"body":{"id":19089,"nodeType":"Block","src":"984:64:118","statements":[]},"id":19090,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"id":19085,"name":"gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19080,"src":"962:19:118","typeDescriptions":{"typeIdentifier":"t_contract$_MockLiquidityGauge_$19071","typeString":"contract MockLiquidityGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockLiquidityGauge_$19071","typeString":"contract MockLiquidityGauge"}],"id":19084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"954:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19083,"name":"address","nodeType":"ElementaryTypeName","src":"954:7:118","typeDescriptions":{}}},"id":19086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"954:28:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":19087,"modifierName":{"id":19082,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"937:16:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"937:46:118"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19080,"mutability":"mutable","name":"gaugeImplementation","nodeType":"VariableDeclaration","scope":19090,"src":"897:38:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_MockLiquidityGauge_$19071","typeString":"contract MockLiquidityGauge"},"typeName":{"id":19079,"name":"MockLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":19071,"src":"897:18:118","typeDescriptions":{"typeIdentifier":"t_contract$_MockLiquidityGauge_$19071","typeString":"contract MockLiquidityGauge"}},"visibility":"internal"}],"src":"896:40:118"},"returnParameters":{"id":19088,"nodeType":"ParameterList","parameters":[],"src":"984:0:118"},"scope":19116,"src":"885:163:118","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":19114,"nodeType":"Block","src":"1138:137:118","statements":[{"assignments":[19100],"declarations":[{"constant":false,"id":19100,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":19114,"src":"1148:13:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19099,"name":"address","nodeType":"ElementaryTypeName","src":"1148:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":19103,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":19101,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"1164:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":19102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1164:9:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1148:25:118"},{"expression":{"arguments":[{"id":19108,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19092,"src":"1221:4:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19109,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19094,"src":"1227:17:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":19105,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19100,"src":"1203:5:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19104,"name":"MockLiquidityGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19071,"src":"1184:18:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MockLiquidityGauge_$19071_$","typeString":"type(contract MockLiquidityGauge)"}},"id":19106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1184:25:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_MockLiquidityGauge_$19071","typeString":"contract MockLiquidityGauge"}},"id":19107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":18977,"src":"1184:36:118","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":19110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1184:61:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19111,"nodeType":"ExpressionStatement","src":"1184:61:118"},{"expression":{"id":19112,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19100,"src":"1263:5:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19098,"id":19113,"nodeType":"Return","src":"1256:12:118"}]},"functionSelector":"0ecaea73","id":19115,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":19095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19092,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":19115,"src":"1070:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19091,"name":"address","nodeType":"ElementaryTypeName","src":"1070:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19094,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":19115,"src":"1084:25:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19093,"name":"uint256","nodeType":"ElementaryTypeName","src":"1084:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1069:41:118"},"returnParameters":{"id":19098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19097,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19115,"src":"1129:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19096,"name":"address","nodeType":"ElementaryTypeName","src":"1129:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1128:9:118"},"scope":19116,"src":"1054:221:118","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":19117,"src":"824:453:118"}],"src":"688:590:118"},"id":118},"contracts/test/MockOmniVotingEscrow.sol":{"ast":{"absolutePath":"contracts/test/MockOmniVotingEscrow.sol","exportedSymbols":{"MockOmniVotingEscrow":[19203]},"id":19204,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19118,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:119"},{"id":19119,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:119"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol","id":19120,"nodeType":"ImportDirective","scope":19204,"sourceUnit":982,"src":"747:87:119","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19121,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"869:17:119","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"id":19122,"nodeType":"InheritanceSpecifier","src":"869:17:119"}],"contractDependencies":[981],"contractKind":"contract","fullyImplemented":true,"id":19203,"linearizedBaseContracts":[19203,981],"name":"MockOmniVotingEscrow","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":19136,"name":"SendUserBalance","nodeType":"EventDefinition","parameters":{"id":19135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19124,"indexed":false,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":19136,"src":"924:12:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19123,"name":"address","nodeType":"ElementaryTypeName","src":"924:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19126,"indexed":false,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":19136,"src":"946:14:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19125,"name":"uint16","nodeType":"ElementaryTypeName","src":"946:6:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19128,"indexed":false,"mutability":"mutable","name":"refundAddress","nodeType":"VariableDeclaration","scope":19136,"src":"970:21:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19127,"name":"address","nodeType":"ElementaryTypeName","src":"970:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19130,"indexed":false,"mutability":"mutable","name":"zroPaymentAddress","nodeType":"VariableDeclaration","scope":19136,"src":"1001:25:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19129,"name":"address","nodeType":"ElementaryTypeName","src":"1001:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19132,"indexed":false,"mutability":"mutable","name":"adapterParams","nodeType":"VariableDeclaration","scope":19136,"src":"1036:19:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19131,"name":"bytes","nodeType":"ElementaryTypeName","src":"1036:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":19134,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":19136,"src":"1065:13:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19133,"name":"uint256","nodeType":"ElementaryTypeName","src":"1065:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"914:170:119"},"src":"893:192:119"},{"constant":false,"id":19140,"mutability":"mutable","name":"_nativeFee","nodeType":"VariableDeclaration","scope":19203,"src":"1122:45:119","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_uint256_$","typeString":"mapping(uint16 => uint256)"},"typeName":{"id":19139,"keyType":{"id":19137,"name":"uint16","nodeType":"ElementaryTypeName","src":"1130:6:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Mapping","src":"1122:26:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_uint256_$","typeString":"mapping(uint16 => uint256)"},"valueType":{"id":19138,"name":"uint256","nodeType":"ElementaryTypeName","src":"1140:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":19142,"mutability":"mutable","name":"_zroFee","nodeType":"VariableDeclaration","scope":19203,"src":"1173:23:119","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19141,"name":"uint256","nodeType":"ElementaryTypeName","src":"1173:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"baseFunctions":[967],"body":{"id":19162,"nodeType":"Block","src":"1371:54:119","statements":[{"expression":{"components":[{"baseExpression":{"id":19156,"name":"_nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19140,"src":"1389:10:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_uint256_$","typeString":"mapping(uint16 => uint256)"}},"id":19158,"indexExpression":{"id":19157,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19144,"src":"1400:7:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1389:19:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19159,"name":"_zroFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19142,"src":"1410:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19160,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1388:30:119","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":19155,"id":19161,"nodeType":"Return","src":"1381:37:119"}]},"functionSelector":"65d092d0","id":19163,"implemented":true,"kind":"function","modifiers":[],"name":"estimateSendUserBalance","nodeType":"FunctionDefinition","overrides":{"id":19150,"nodeType":"OverrideSpecifier","overrides":[],"src":"1318:8:119"},"parameters":{"id":19149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19144,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":19163,"src":"1245:14:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19143,"name":"uint16","nodeType":"ElementaryTypeName","src":"1245:6:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19146,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19163,"src":"1269:4:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19145,"name":"bool","nodeType":"ElementaryTypeName","src":"1269:4:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":19148,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19163,"src":"1283:14:119","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":19147,"name":"bytes","nodeType":"ElementaryTypeName","src":"1283:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1235:68:119"},"returnParameters":{"id":19155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19152,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":19163,"src":"1336:17:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19151,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19154,"mutability":"mutable","name":"zroFee","nodeType":"VariableDeclaration","scope":19163,"src":"1355:14:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19153,"name":"uint256","nodeType":"ElementaryTypeName","src":"1355:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1335:35:119"},"scope":19203,"src":"1203:222:119","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[980],"body":{"id":19187,"nodeType":"Block","src":"1652:120:119","statements":[{"eventCall":{"arguments":[{"id":19178,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19165,"src":"1683:5:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19179,"name":"_dstChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19167,"src":"1690:11:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":19180,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19169,"src":"1703:14:119","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":19181,"name":"_zroPaymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19171,"src":"1719:18:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19182,"name":"_adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19173,"src":"1739:14:119","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":19183,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1755:3:119","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1755:9:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19177,"name":"SendUserBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19136,"src":"1667:15:119","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint16_$_t_address_$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,uint16,address,address,bytes memory,uint256)"}},"id":19185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1667:98:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19186,"nodeType":"EmitStatement","src":"1662:103:119"}]},"functionSelector":"4a759489","id":19188,"implemented":true,"kind":"function","modifiers":[],"name":"sendUserBalance","nodeType":"FunctionDefinition","overrides":{"id":19175,"nodeType":"OverrideSpecifier","overrides":[],"src":"1643:8:119"},"parameters":{"id":19174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19165,"mutability":"mutable","name":"_user","nodeType":"VariableDeclaration","scope":19188,"src":"1465:13:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19164,"name":"address","nodeType":"ElementaryTypeName","src":"1465:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19167,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":19188,"src":"1488:18:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19166,"name":"uint16","nodeType":"ElementaryTypeName","src":"1488:6:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19169,"mutability":"mutable","name":"_refundAddress","nodeType":"VariableDeclaration","scope":19188,"src":"1516:30:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":19168,"name":"address","nodeType":"ElementaryTypeName","src":"1516:15:119","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":19171,"mutability":"mutable","name":"_zroPaymentAddress","nodeType":"VariableDeclaration","scope":19188,"src":"1556:26:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19170,"name":"address","nodeType":"ElementaryTypeName","src":"1556:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19173,"mutability":"mutable","name":"_adapterParams","nodeType":"VariableDeclaration","scope":19188,"src":"1592:27:119","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19172,"name":"bytes","nodeType":"ElementaryTypeName","src":"1592:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1455:170:119"},"returnParameters":{"id":19176,"nodeType":"ParameterList","parameters":[],"src":"1652:0:119"},"scope":19203,"src":"1431:341:119","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":19201,"nodeType":"Block","src":"1844:48:119","statements":[{"expression":{"id":19199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19195,"name":"_nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19140,"src":"1854:10:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_uint256_$","typeString":"mapping(uint16 => uint256)"}},"id":19197,"indexExpression":{"id":19196,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19192,"src":"1865:7:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1854:19:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19198,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19190,"src":"1876:9:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1854:31:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19200,"nodeType":"ExpressionStatement","src":"1854:31:119"}]},"functionSelector":"916c4eb5","id":19202,"implemented":true,"kind":"function","modifiers":[],"name":"setNativeFee","nodeType":"FunctionDefinition","parameters":{"id":19193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19190,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":19202,"src":"1800:17:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19189,"name":"uint256","nodeType":"ElementaryTypeName","src":"1800:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19192,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":19202,"src":"1819:14:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19191,"name":"uint16","nodeType":"ElementaryTypeName","src":"1819:6:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1799:35:119"},"returnParameters":{"id":19194,"nodeType":"ParameterList","parameters":[],"src":"1844:0:119"},"scope":19203,"src":"1778:114:119","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":19204,"src":"836:1058:119"}],"src":"688:1207:119"},"id":119},"contracts/test/MockRewardTokenDistributor.sol":{"ast":{"absolutePath":"contracts/test/MockRewardTokenDistributor.sol","exportedSymbols":{"MockRewardTokenDistributor":[19373]},"id":19374,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19205,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:120"},{"id":19206,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:120"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":19207,"nodeType":"ImportDirective","scope":19374,"sourceUnit":7342,"src":"747:79:120","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":19208,"nodeType":"ImportDirective","scope":19374,"sourceUnit":2448,"src":"828:87:120","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","id":19209,"nodeType":"ImportDirective","scope":19374,"sourceUnit":1164,"src":"916:93:120","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19211,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"1241:23:120","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"id":19212,"nodeType":"InheritanceSpecifier","src":"1241:23:120"}],"contractDependencies":[1163],"contractKind":"contract","documentation":{"id":19210,"nodeType":"StructuredDocumentation","src":"1089:112:120","text":" @dev This contract is designed to mock LiquidityGaugeV5's interface for distributing external tokens."},"fullyImplemented":true,"id":19373,"linearizedBaseContracts":[19373,1163],"name":"MockRewardTokenDistributor","nodeType":"ContractDefinition","nodes":[{"id":19215,"libraryName":{"id":19213,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"1277:9:120","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1271:27:120","typeName":{"id":19214,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1291:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":false,"id":19217,"mutability":"mutable","name":"_rewardCount","nodeType":"VariableDeclaration","scope":19373,"src":"1304:28:120","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19216,"name":"uint256","nodeType":"ElementaryTypeName","src":"1304:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":19221,"mutability":"mutable","name":"_rewardTokens","nodeType":"VariableDeclaration","scope":19373,"src":"1338:31:120","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_storage","typeString":"contract IERC20[8]"},"typeName":{"baseType":{"id":19218,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1338:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":19220,"length":{"hexValue":"38","id":19219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1345:1:120","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"ArrayTypeName","src":"1338:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_storage_ptr","typeString":"contract IERC20[8]"}},"visibility":"private"},{"constant":false,"id":19225,"mutability":"mutable","name":"_rewardData","nodeType":"VariableDeclaration","scope":19373,"src":"1375:45:120","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_Reward_$1104_storage_$","typeString":"mapping(contract IERC20 => struct IRewardTokenDistributor.Reward)"},"typeName":{"id":19224,"keyType":{"id":19222,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1383:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"1375:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_Reward_$1104_storage_$","typeString":"mapping(contract IERC20 => struct IRewardTokenDistributor.Reward)"},"valueType":{"id":19223,"name":"Reward","nodeType":"UserDefinedTypeName","referencedDeclaration":1104,"src":"1393:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage_ptr","typeString":"struct IRewardTokenDistributor.Reward"}}},"visibility":"private"},{"baseFunctions":[1111],"body":{"id":19237,"nodeType":"Block","src":"1505:44:120","statements":[{"expression":{"baseExpression":{"id":19233,"name":"_rewardTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19221,"src":"1522:13:120","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_storage","typeString":"contract IERC20[8] storage ref"}},"id":19235,"indexExpression":{"id":19234,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19227,"src":"1536:5:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1522:20:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"functionReturnParameters":19232,"id":19236,"nodeType":"Return","src":"1515:27:120"}]},"functionSelector":"54c49fe9","id":19238,"implemented":true,"kind":"function","modifiers":[],"name":"reward_tokens","nodeType":"FunctionDefinition","overrides":{"id":19229,"nodeType":"OverrideSpecifier","overrides":[],"src":"1479:8:120"},"parameters":{"id":19228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19227,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":19238,"src":"1450:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19226,"name":"uint256","nodeType":"ElementaryTypeName","src":"1450:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1449:15:120"},"returnParameters":{"id":19232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19231,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19238,"src":"1497:6:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":19230,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1497:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1496:8:120"},"scope":19373,"src":"1427:122:120","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1118],"body":{"id":19250,"nodeType":"Block","src":"1637:42:120","statements":[{"expression":{"baseExpression":{"id":19246,"name":"_rewardData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19225,"src":"1654:11:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_Reward_$1104_storage_$","typeString":"mapping(contract IERC20 => struct IRewardTokenDistributor.Reward storage ref)"}},"id":19248,"indexExpression":{"id":19247,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19240,"src":"1666:5:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1654:18:120","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage","typeString":"struct IRewardTokenDistributor.Reward storage ref"}},"functionReturnParameters":19245,"id":19249,"nodeType":"Return","src":"1647:25:120"}]},"functionSelector":"48e9c65e","id":19251,"implemented":true,"kind":"function","modifiers":[],"name":"reward_data","nodeType":"FunctionDefinition","overrides":{"id":19242,"nodeType":"OverrideSpecifier","overrides":[],"src":"1604:8:120"},"parameters":{"id":19241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19240,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":19251,"src":"1576:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":19239,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1576:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1575:14:120"},"returnParameters":{"id":19245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19244,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19251,"src":"1622:13:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_memory_ptr","typeString":"struct IRewardTokenDistributor.Reward"},"typeName":{"id":19243,"name":"Reward","nodeType":"UserDefinedTypeName","referencedDeclaration":1104,"src":"1622:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage_ptr","typeString":"struct IRewardTokenDistributor.Reward"}},"visibility":"internal"}],"src":"1621:15:120"},"scope":19373,"src":"1555:124:120","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1130],"body":{"id":19290,"nodeType":"Block","src":"1764:390:120","statements":[{"expression":{"id":19263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19259,"name":"_rewardTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19221,"src":"1774:13:120","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_storage","typeString":"contract IERC20[8] storage ref"}},"id":19261,"indexExpression":{"id":19260,"name":"_rewardCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19217,"src":"1788:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1774:27:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19262,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19253,"src":"1804:11:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"1774:41:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":19264,"nodeType":"ExpressionStatement","src":"1774:41:120"},{"expression":{"id":19277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19265,"name":"_rewardData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19225,"src":"1825:11:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_Reward_$1104_storage_$","typeString":"mapping(contract IERC20 => struct IRewardTokenDistributor.Reward storage ref)"}},"id":19267,"indexExpression":{"id":19266,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19253,"src":"1837:11:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1825:24:120","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage","typeString":"struct IRewardTokenDistributor.Reward storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19269,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19253,"src":"1880:11:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":19270,"name":"distributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19255,"src":"1918:11:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":19271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1958:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":19272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1979:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":19273,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2007:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":19274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"2007:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":19275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2046:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":19268,"name":"Reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1104,"src":"1852:6:120","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Reward_$1104_storage_ptr_$","typeString":"type(struct IRewardTokenDistributor.Reward storage pointer)"}},"id":19276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token","distributor","period_finish","rate","last_update","integral"],"nodeType":"FunctionCall","src":"1852:206:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_memory_ptr","typeString":"struct IRewardTokenDistributor.Reward memory"}},"src":"1825:233:120","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage","typeString":"struct IRewardTokenDistributor.Reward storage ref"}},"id":19278,"nodeType":"ExpressionStatement","src":"1825:233:120"},{"expression":{"id":19281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19279,"name":"_rewardCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19217,"src":"2069:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":19280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2085:1:120","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2069:17:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19282,"nodeType":"ExpressionStatement","src":"2069:17:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19284,"name":"_rewardCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19217,"src":"2104:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"38","id":19285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2119:1:120","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"2104:16:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6f206d616e792072657761726420746f6b656e73","id":19287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2122:24:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_83203493ea391d6bbbaa1b906bb34cd117892c68ada4ec61cd9ab95294c7a64f","typeString":"literal_string \"Too many reward tokens\""},"value":"Too many reward tokens"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_83203493ea391d6bbbaa1b906bb34cd117892c68ada4ec61cd9ab95294c7a64f","typeString":"literal_string \"Too many reward tokens\""}],"id":19283,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2096:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2096:51:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19289,"nodeType":"ExpressionStatement","src":"2096:51:120"}]},"functionSelector":"e8de0d4d","id":19291,"implemented":true,"kind":"function","modifiers":[],"name":"add_reward","nodeType":"FunctionDefinition","overrides":{"id":19257,"nodeType":"OverrideSpecifier","overrides":[],"src":"1755:8:120"},"parameters":{"id":19256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19253,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":19291,"src":"1705:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":19252,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1705:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":19255,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":19291,"src":"1725:19:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19254,"name":"address","nodeType":"ElementaryTypeName","src":"1725:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1704:41:120"},"returnParameters":{"id":19258,"nodeType":"ParameterList","parameters":[],"src":"1764:0:120"},"scope":19373,"src":"1685:469:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1137],"body":{"id":19306,"nodeType":"Block","src":"2251:67:120","statements":[{"expression":{"id":19304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":19299,"name":"_rewardData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19225,"src":"2261:11:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_Reward_$1104_storage_$","typeString":"mapping(contract IERC20 => struct IRewardTokenDistributor.Reward storage ref)"}},"id":19301,"indexExpression":{"id":19300,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19293,"src":"2273:11:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2261:24:120","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage","typeString":"struct IRewardTokenDistributor.Reward storage ref"}},"id":19302,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"distributor","nodeType":"MemberAccess","referencedDeclaration":1095,"src":"2261:36:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19303,"name":"distributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19295,"src":"2300:11:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2261:50:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19305,"nodeType":"ExpressionStatement","src":"2261:50:120"}]},"functionSelector":"058a3a24","id":19307,"implemented":true,"kind":"function","modifiers":[],"name":"set_reward_distributor","nodeType":"FunctionDefinition","overrides":{"id":19297,"nodeType":"OverrideSpecifier","overrides":[],"src":"2242:8:120"},"parameters":{"id":19296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19293,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":19307,"src":"2192:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":19292,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2192:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":19295,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":19307,"src":"2212:19:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19294,"name":"address","nodeType":"ElementaryTypeName","src":"2212:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2191:41:120"},"returnParameters":{"id":19298,"nodeType":"ParameterList","parameters":[],"src":"2251:0:120"},"scope":19373,"src":"2160:158:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1144],"body":{"id":19338,"nodeType":"Block","src":"2408:244:120","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":19316,"name":"_rewardData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19225,"src":"2426:11:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_Reward_$1104_storage_$","typeString":"mapping(contract IERC20 => struct IRewardTokenDistributor.Reward storage ref)"}},"id":19318,"indexExpression":{"id":19317,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19309,"src":"2438:11:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2426:24:120","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage","typeString":"struct IRewardTokenDistributor.Reward storage ref"}},"id":19319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"distributor","nodeType":"MemberAccess","referencedDeclaration":1095,"src":"2426:36:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":19320,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2466:3:120","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2466:10:120","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2426:50:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c792063616c6c61626c6520627920726577617264206469737472696275746f72","id":19323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2478:37:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_8fe65f43f4fb2e61b1698a7bc8a9236fae68b8ef299ce00a6e0d31324a0fdbe1","typeString":"literal_string \"Only callable by reward distributor\""},"value":"Only callable by reward distributor"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8fe65f43f4fb2e61b1698a7bc8a9236fae68b8ef299ce00a6e0d31324a0fdbe1","typeString":"literal_string \"Only callable by reward distributor\""}],"id":19315,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2418:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2418:98:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19325,"nodeType":"ExpressionStatement","src":"2418:98:120"},{"expression":{"arguments":[{"expression":{"id":19329,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2555:3:120","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2555:10:120","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":19333,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2575:4:120","typeDescriptions":{"typeIdentifier":"t_contract$_MockRewardTokenDistributor_$19373","typeString":"contract MockRewardTokenDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockRewardTokenDistributor_$19373","typeString":"contract MockRewardTokenDistributor"}],"id":19332,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2567:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19331,"name":"address","nodeType":"ElementaryTypeName","src":"2567:7:120","typeDescriptions":{}}},"id":19334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2567:13:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19335,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19311,"src":"2582:6:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19326,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19309,"src":"2526:11:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":19328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":7304,"src":"2526:28:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":19336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2526:63:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19337,"nodeType":"ExpressionStatement","src":"2526:63:120"}]},"functionSelector":"93f7aa67","id":19339,"implemented":true,"kind":"function","modifiers":[],"name":"deposit_reward_token","nodeType":"FunctionDefinition","overrides":{"id":19313,"nodeType":"OverrideSpecifier","overrides":[],"src":"2399:8:120"},"parameters":{"id":19312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19309,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":19339,"src":"2354:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":19308,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2354:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":19311,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":19339,"src":"2374:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19310,"name":"uint256","nodeType":"ElementaryTypeName","src":"2374:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2353:36:120"},"returnParameters":{"id":19314,"nodeType":"ParameterList","parameters":[],"src":"2408:0:120"},"scope":19373,"src":"2324:328:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1123],"body":{"id":19345,"nodeType":"Block","src":"2713:64:120","statements":[]},"functionSelector":"84e9bd7e","id":19346,"implemented":true,"kind":"function","modifiers":[],"name":"claim_rewards","nodeType":"FunctionDefinition","overrides":{"id":19343,"nodeType":"OverrideSpecifier","overrides":[],"src":"2704:8:120"},"parameters":{"id":19342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19341,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":19346,"src":"2681:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19340,"name":"address","nodeType":"ElementaryTypeName","src":"2681:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2680:14:120"},"returnParameters":{"id":19344,"nodeType":"ParameterList","parameters":[],"src":"2713:0:120"},"scope":19373,"src":"2658:119:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1153],"body":{"id":19358,"nodeType":"Block","src":"2868:25:120","statements":[{"expression":{"hexValue":"30","id":19356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2885:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":19355,"id":19357,"nodeType":"Return","src":"2878:8:120"}]},"functionSelector":"33fd6f74","id":19359,"implemented":true,"kind":"function","modifiers":[],"name":"claimable_reward","nodeType":"FunctionDefinition","overrides":{"id":19352,"nodeType":"OverrideSpecifier","overrides":[],"src":"2841:8:120"},"parameters":{"id":19351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19348,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19359,"src":"2809:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19347,"name":"address","nodeType":"ElementaryTypeName","src":"2809:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19350,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19359,"src":"2818:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19349,"name":"address","nodeType":"ElementaryTypeName","src":"2818:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2808:18:120"},"returnParameters":{"id":19355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19354,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19359,"src":"2859:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19353,"name":"uint256","nodeType":"ElementaryTypeName","src":"2859:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2858:9:120"},"scope":19373,"src":"2783:110:120","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[1162],"body":{"id":19371,"nodeType":"Block","src":"2990:25:120","statements":[{"expression":{"hexValue":"30","id":19369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3007:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":19368,"id":19370,"nodeType":"Return","src":"3000:8:120"}]},"functionSelector":"59b7e409","id":19372,"implemented":true,"kind":"function","modifiers":[],"name":"claimable_reward_write","nodeType":"FunctionDefinition","overrides":{"id":19365,"nodeType":"OverrideSpecifier","overrides":[],"src":"2963:8:120"},"parameters":{"id":19364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19361,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19372,"src":"2931:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19360,"name":"address","nodeType":"ElementaryTypeName","src":"2931:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19363,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19372,"src":"2940:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19362,"name":"address","nodeType":"ElementaryTypeName","src":"2940:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2930:18:120"},"returnParameters":{"id":19368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19367,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19372,"src":"2981:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19366,"name":"uint256","nodeType":"ElementaryTypeName","src":"2981:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2980:9:120"},"scope":19373,"src":"2899:116:120","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":19374,"src":"1202:1815:120"}],"src":"688:2330:120"},"id":120},"contracts/test/MockVeDelegation.sol":{"ast":{"absolutePath":"contracts/test/MockVeDelegation.sol","exportedSymbols":{"MockVeDelegation":[19403]},"id":19404,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19375,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:121"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol","id":19376,"nodeType":"ImportDirective","scope":19404,"sourceUnit":1470,"src":"713:83:121","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19377,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"1005:13:121","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":19378,"nodeType":"InheritanceSpecifier","src":"1005:13:121"}],"contractDependencies":[1469],"contractKind":"contract","fullyImplemented":true,"id":19403,"linearizedBaseContracts":[19403,1469],"name":"MockVeDelegation","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":19380,"mutability":"mutable","name":"_adjustedBalance","nodeType":"VariableDeclaration","scope":19403,"src":"1025:32:121","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19379,"name":"uint256","nodeType":"ElementaryTypeName","src":"1025:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":19382,"mutability":"mutable","name":"_totalSupply","nodeType":"VariableDeclaration","scope":19403,"src":"1063:28:121","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19381,"name":"uint256","nodeType":"ElementaryTypeName","src":"1063:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"baseFunctions":[1463],"body":{"id":19392,"nodeType":"Block","src":"1177:40:121","statements":[{"expression":{"id":19390,"name":"_adjustedBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19380,"src":"1194:16:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19389,"id":19391,"nodeType":"Return","src":"1187:23:121"}]},"functionSelector":"bbf7408a","id":19393,"implemented":true,"kind":"function","modifiers":[],"name":"adjusted_balance_of","nodeType":"FunctionDefinition","overrides":{"id":19386,"nodeType":"OverrideSpecifier","overrides":[],"src":"1150:8:121"},"parameters":{"id":19385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19384,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19393,"src":"1127:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19383,"name":"address","nodeType":"ElementaryTypeName","src":"1127:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1126:9:121"},"returnParameters":{"id":19389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19388,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19393,"src":"1168:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19387,"name":"uint256","nodeType":"ElementaryTypeName","src":"1168:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1167:9:121"},"scope":19403,"src":"1098:119:121","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1468],"body":{"id":19401,"nodeType":"Block","src":"1287:36:121","statements":[{"expression":{"id":19399,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19382,"src":"1304:12:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19398,"id":19400,"nodeType":"Return","src":"1297:19:121"}]},"functionSelector":"18160ddd","id":19402,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":19395,"nodeType":"OverrideSpecifier","overrides":[],"src":"1260:8:121"},"parameters":{"id":19394,"nodeType":"ParameterList","parameters":[],"src":"1243:2:121"},"returnParameters":{"id":19398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19397,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19402,"src":"1278:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19396,"name":"uint256","nodeType":"ElementaryTypeName","src":"1278:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1277:9:121"},"scope":19403,"src":"1223:100:121","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":19404,"src":"976:349:121"}],"src":"688:638:121"},"id":121},"contracts/test/MockVotingEscrow.sol":{"ast":{"absolutePath":"contracts/test/MockVotingEscrow.sol","exportedSymbols":{"MockVotingEscrow":[19538]},"id":19539,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19405,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:122"},{"id":19406,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:122"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol","id":19407,"nodeType":"ImportDirective","scope":19539,"sourceUnit":1216,"src":"755:89:122","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","id":19408,"nodeType":"ImportDirective","scope":19539,"sourceUnit":1560,"src":"845:83:122","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":19409,"nodeType":"StructuredDocumentation","src":"1008:218:122","text":" @dev Mock voting escrow with setters to manipulate its inner state.\n Points are represented as mappings just for convenience, while keeping the same API for the public members\n as the real voting escrow."},"fullyImplemented":true,"id":19538,"linearizedBaseContracts":[19538],"name":"MockVotingEscrow","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"900cf0cf","id":19411,"mutability":"mutable","name":"epoch","nodeType":"VariableDeclaration","scope":19538,"src":"1259:20:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19410,"name":"uint256","nodeType":"ElementaryTypeName","src":"1259:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"d1febfb9","id":19415,"mutability":"mutable","name":"point_history","nodeType":"VariableDeclaration","scope":19538,"src":"1308:60:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$","typeString":"mapping(uint256 => struct IVotingEscrow.Point)"},"typeName":{"id":19414,"keyType":{"id":19412,"name":"uint256","nodeType":"ElementaryTypeName","src":"1316:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1308:39:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$","typeString":"mapping(uint256 => struct IVotingEscrow.Point)"},"valueType":{"id":19413,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"1327:19:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}}},"visibility":"public"},{"constant":false,"functionSelector":"28d09d47","id":19421,"mutability":"mutable","name":"user_point_history","nodeType":"VariableDeclaration","scope":19538,"src":"1406:85:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct IVotingEscrow.Point))"},"typeName":{"id":19420,"keyType":{"id":19416,"name":"address","nodeType":"ElementaryTypeName","src":"1414:7:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1406:59:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct IVotingEscrow.Point))"},"valueType":{"id":19419,"keyType":{"id":19417,"name":"uint256","nodeType":"ElementaryTypeName","src":"1433:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1425:39:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$","typeString":"mapping(uint256 => struct IVotingEscrow.Point)"},"valueType":{"id":19418,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"1444:19:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}}}},"visibility":"public"},{"constant":false,"functionSelector":"010ae757","id":19425,"mutability":"mutable","name":"user_point_epoch","nodeType":"VariableDeclaration","scope":19538,"src":"1519:51:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":19424,"keyType":{"id":19422,"name":"address","nodeType":"ElementaryTypeName","src":"1527:7:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1519:27:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":19423,"name":"uint256","nodeType":"ElementaryTypeName","src":"1538:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"functionSelector":"adc63589","id":19429,"mutability":"mutable","name":"locked__end","nodeType":"VariableDeclaration","scope":19538,"src":"1603:46:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":19428,"keyType":{"id":19426,"name":"address","nodeType":"ElementaryTypeName","src":"1611:7:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1603:27:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":19427,"name":"uint256","nodeType":"ElementaryTypeName","src":"1622:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"functionSelector":"70a08231","id":19433,"mutability":"mutable","name":"balanceOf","nodeType":"VariableDeclaration","scope":19538,"src":"1679:44:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":19432,"keyType":{"id":19430,"name":"address","nodeType":"ElementaryTypeName","src":"1687:7:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1679:27:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":19431,"name":"uint256","nodeType":"ElementaryTypeName","src":"1698:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"id":19435,"mutability":"mutable","name":"_smartWalletChecker","nodeType":"VariableDeclaration","scope":19538,"src":"1730:47:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"},"typeName":{"id":19434,"name":"ISmartWalletChecker","nodeType":"UserDefinedTypeName","referencedDeclaration":1215,"src":"1730:19:122","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"visibility":"private"},{"body":{"id":19444,"nodeType":"Block","src":"1836:57:122","statements":[{"expression":{"id":19442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19440,"name":"_smartWalletChecker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19435,"src":"1846:19:122","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19441,"name":"smartWalletChecker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19437,"src":"1868:18:122","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"src":"1846:40:122","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"id":19443,"nodeType":"ExpressionStatement","src":"1846:40:122"}]},"id":19445,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19437,"mutability":"mutable","name":"smartWalletChecker","nodeType":"VariableDeclaration","scope":19445,"src":"1796:38:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"},"typeName":{"id":19436,"name":"ISmartWalletChecker","nodeType":"UserDefinedTypeName","referencedDeclaration":1215,"src":"1796:19:122","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"visibility":"internal"}],"src":"1795:40:122"},"returnParameters":{"id":19439,"nodeType":"ParameterList","parameters":[],"src":"1836:0:122"},"scope":19538,"src":"1784:109:122","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":19452,"nodeType":"Block","src":"1975:43:122","statements":[{"expression":{"id":19450,"name":"_smartWalletChecker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19435,"src":"1992:19:122","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"functionReturnParameters":19449,"id":19451,"nodeType":"Return","src":"1985:26:122"}]},"functionSelector":"7175d4f7","id":19453,"implemented":true,"kind":"function","modifiers":[],"name":"smart_wallet_checker","nodeType":"FunctionDefinition","parameters":{"id":19446,"nodeType":"ParameterList","parameters":[],"src":"1928:2:122"},"returnParameters":{"id":19449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19448,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19453,"src":"1954:19:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"},"typeName":{"id":19447,"name":"ISmartWalletChecker","nodeType":"UserDefinedTypeName","referencedDeclaration":1215,"src":"1954:19:122","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"visibility":"internal"}],"src":"1953:21:122"},"scope":19538,"src":"1899:119:122","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19462,"nodeType":"Block","src":"2067:31:122","statements":[{"expression":{"id":19460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19458,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19411,"src":"2077:5:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19459,"name":"_epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19455,"src":"2085:6:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2077:14:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19461,"nodeType":"ExpressionStatement","src":"2077:14:122"}]},"functionSelector":"0ceb2cef","id":19463,"implemented":true,"kind":"function","modifiers":[],"name":"setEpoch","nodeType":"FunctionDefinition","parameters":{"id":19456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19455,"mutability":"mutable","name":"_epoch","nodeType":"VariableDeclaration","scope":19463,"src":"2042:14:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19454,"name":"uint256","nodeType":"ElementaryTypeName","src":"2042:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2041:16:122"},"returnParameters":{"id":19457,"nodeType":"ParameterList","parameters":[],"src":"2067:0:122"},"scope":19538,"src":"2024:74:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19476,"nodeType":"Block","src":"2188:46:122","statements":[{"expression":{"id":19474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19470,"name":"point_history","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19415,"src":"2198:13:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$","typeString":"mapping(uint256 => struct IVotingEscrow.Point storage ref)"}},"id":19472,"indexExpression":{"id":19471,"name":"_epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19465,"src":"2212:6:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2198:21:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage","typeString":"struct IVotingEscrow.Point storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19473,"name":"point","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19467,"src":"2222:5:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"src":"2198:29:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage","typeString":"struct IVotingEscrow.Point storage ref"}},"id":19475,"nodeType":"ExpressionStatement","src":"2198:29:122"}]},"functionSelector":"b67672ab","id":19477,"implemented":true,"kind":"function","modifiers":[],"name":"setPointHistory","nodeType":"FunctionDefinition","parameters":{"id":19468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19465,"mutability":"mutable","name":"_epoch","nodeType":"VariableDeclaration","scope":19477,"src":"2129:14:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19464,"name":"uint256","nodeType":"ElementaryTypeName","src":"2129:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19467,"mutability":"mutable","name":"point","nodeType":"VariableDeclaration","scope":19477,"src":"2145:32:122","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":19466,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"2145:19:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"2128:50:122"},"returnParameters":{"id":19469,"nodeType":"ParameterList","parameters":[],"src":"2188:0:122"},"scope":19538,"src":"2104:130:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19490,"nodeType":"Block","src":"2306:48:122","statements":[{"expression":{"id":19488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19484,"name":"user_point_epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19425,"src":"2316:16:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":19486,"indexExpression":{"id":19485,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19479,"src":"2333:4:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2316:22:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19487,"name":"_epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19481,"src":"2341:6:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2316:31:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19489,"nodeType":"ExpressionStatement","src":"2316:31:122"}]},"functionSelector":"3dc6f15b","id":19491,"implemented":true,"kind":"function","modifiers":[],"name":"setUserPointEpoch","nodeType":"FunctionDefinition","parameters":{"id":19482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19479,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":19491,"src":"2267:12:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19478,"name":"address","nodeType":"ElementaryTypeName","src":"2267:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19481,"mutability":"mutable","name":"_epoch","nodeType":"VariableDeclaration","scope":19491,"src":"2281:14:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19480,"name":"uint256","nodeType":"ElementaryTypeName","src":"2281:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2266:30:122"},"returnParameters":{"id":19483,"nodeType":"ParameterList","parameters":[],"src":"2306:0:122"},"scope":19538,"src":"2240:114:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19508,"nodeType":"Block","src":"2492:57:122","statements":[{"expression":{"id":19506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":19500,"name":"user_point_history","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19421,"src":"2502:18:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct IVotingEscrow.Point storage ref))"}},"id":19503,"indexExpression":{"id":19501,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19493,"src":"2521:4:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2502:24:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$","typeString":"mapping(uint256 => struct IVotingEscrow.Point storage ref)"}},"id":19504,"indexExpression":{"id":19502,"name":"_epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19495,"src":"2527:6:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2502:32:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage","typeString":"struct IVotingEscrow.Point storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19505,"name":"point","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19497,"src":"2537:5:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"src":"2502:40:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage","typeString":"struct IVotingEscrow.Point storage ref"}},"id":19507,"nodeType":"ExpressionStatement","src":"2502:40:122"}]},"functionSelector":"af8de871","id":19509,"implemented":true,"kind":"function","modifiers":[],"name":"setUserPointHistory","nodeType":"FunctionDefinition","parameters":{"id":19498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19493,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":19509,"src":"2398:12:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19492,"name":"address","nodeType":"ElementaryTypeName","src":"2398:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19495,"mutability":"mutable","name":"_epoch","nodeType":"VariableDeclaration","scope":19509,"src":"2420:14:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19494,"name":"uint256","nodeType":"ElementaryTypeName","src":"2420:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19497,"mutability":"mutable","name":"point","nodeType":"VariableDeclaration","scope":19509,"src":"2444:32:122","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":19496,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"2444:19:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"2388:94:122"},"returnParameters":{"id":19499,"nodeType":"ParameterList","parameters":[],"src":"2492:0:122"},"scope":19538,"src":"2360:189:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19522,"nodeType":"Block","src":"2613:40:122","statements":[{"expression":{"id":19520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19516,"name":"locked__end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19429,"src":"2623:11:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":19518,"indexExpression":{"id":19517,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19511,"src":"2635:4:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2623:17:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19519,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19513,"src":"2643:3:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2623:23:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19521,"nodeType":"ExpressionStatement","src":"2623:23:122"}]},"functionSelector":"36aeef2a","id":19523,"implemented":true,"kind":"function","modifiers":[],"name":"setLockedEnd","nodeType":"FunctionDefinition","parameters":{"id":19514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19511,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":19523,"src":"2577:12:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19510,"name":"address","nodeType":"ElementaryTypeName","src":"2577:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19513,"mutability":"mutable","name":"end","nodeType":"VariableDeclaration","scope":19523,"src":"2591:11:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19512,"name":"uint256","nodeType":"ElementaryTypeName","src":"2591:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2576:27:122"},"returnParameters":{"id":19515,"nodeType":"ParameterList","parameters":[],"src":"2613:0:122"},"scope":19538,"src":"2555:98:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19536,"nodeType":"Block","src":"2721:42:122","statements":[{"expression":{"id":19534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19530,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19433,"src":"2731:9:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":19532,"indexExpression":{"id":19531,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19525,"src":"2741:4:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2731:15:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19533,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19527,"src":"2749:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2731:25:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19535,"nodeType":"ExpressionStatement","src":"2731:25:122"}]},"functionSelector":"b46310f6","id":19537,"implemented":true,"kind":"function","modifiers":[],"name":"setBalanceOf","nodeType":"FunctionDefinition","parameters":{"id":19528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19525,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":19537,"src":"2681:12:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19524,"name":"address","nodeType":"ElementaryTypeName","src":"2681:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19527,"mutability":"mutable","name":"balance","nodeType":"VariableDeclaration","scope":19537,"src":"2695:15:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19526,"name":"uint256","nodeType":"ElementaryTypeName","src":"2695:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2680:31:122"},"returnParameters":{"id":19529,"nodeType":"ParameterList","parameters":[],"src":"2721:0:122"},"scope":19538,"src":"2659:104:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":19539,"src":"1227:1538:122"}],"src":"688:2078:122"},"id":122},"contracts/test/TestAccessControl.sol":{"ast":{"absolutePath":"contracts/test/TestAccessControl.sol","exportedSymbols":{"TestAccessControl":[19818]},"id":19819,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":19540,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:123"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","id":19541,"nodeType":"ImportDirective","scope":19819,"sourceUnit":7132,"src":"58:83:123","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":19542,"nodeType":"ImportDirective","scope":19819,"sourceUnit":5851,"src":"142:77:123","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":19543,"nodeType":"StructuredDocumentation","src":"336:1276:123","text":" @dev Contract module that allows children to implement role-based access\n control mechanisms.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\n ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it."},"fullyImplemented":true,"id":19818,"linearizedBaseContracts":[19818],"name":"TestAccessControl","nodeType":"ContractDefinition","nodes":[{"id":19546,"libraryName":{"id":19544,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7131,"src":"1661:13:123","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$7131","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"1655:49:123","typeName":{"id":19545,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1679:24:123","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"id":19549,"libraryName":{"id":19547,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":5850,"src":"1715:7:123","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$5850","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1709:26:123","typeName":{"id":19548,"name":"address","nodeType":"ElementaryTypeName","src":"1727:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"canonicalName":"TestAccessControl.RoleData","id":19554,"members":[{"constant":false,"id":19551,"mutability":"mutable","name":"members","nodeType":"VariableDeclaration","scope":19554,"src":"1767:32:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":19550,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1767:24:123","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":19553,"mutability":"mutable","name":"adminRole","nodeType":"VariableDeclaration","scope":19554,"src":"1809:17:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19552,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1809:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RoleData","nodeType":"StructDefinition","scope":19818,"src":"1741:92:123","visibility":"public"},{"constant":false,"id":19558,"mutability":"mutable","name":"_roles","nodeType":"VariableDeclaration","scope":19818,"src":"1839:43:123","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData)"},"typeName":{"id":19557,"keyType":{"id":19555,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1847:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1839:28:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData)"},"valueType":{"id":19556,"name":"RoleData","nodeType":"UserDefinedTypeName","referencedDeclaration":19554,"src":"1858:8:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage_ptr","typeString":"struct TestAccessControl.RoleData"}}},"visibility":"private"},{"constant":true,"functionSelector":"a217fddf","id":19561,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nodeType":"VariableDeclaration","scope":19818,"src":"1889:49:123","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19559,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1889:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":19560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1934:4:123","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"anonymous":false,"documentation":{"id":19562,"nodeType":"StructuredDocumentation","src":"1945:292:123","text":" @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this.\n _Available since v3.1._"},"id":19570,"name":"RoleAdminChanged","nodeType":"EventDefinition","parameters":{"id":19569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19564,"indexed":true,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19570,"src":"2265:20:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19563,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2265:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19566,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nodeType":"VariableDeclaration","scope":19570,"src":"2287:33:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19565,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2287:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19568,"indexed":true,"mutability":"mutable","name":"newAdminRole","nodeType":"VariableDeclaration","scope":19570,"src":"2322:28:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19567,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2322:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2264:87:123"},"src":"2242:110:123"},{"anonymous":false,"documentation":{"id":19571,"nodeType":"StructuredDocumentation","src":"2358:198:123","text":" @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {_setupRole}."},"id":19579,"name":"RoleGranted","nodeType":"EventDefinition","parameters":{"id":19578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19573,"indexed":true,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19579,"src":"2579:20:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19572,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2579:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19575,"indexed":true,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19579,"src":"2601:23:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19574,"name":"address","nodeType":"ElementaryTypeName","src":"2601:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19577,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":19579,"src":"2626:22:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19576,"name":"address","nodeType":"ElementaryTypeName","src":"2626:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2578:71:123"},"src":"2561:89:123"},{"anonymous":false,"documentation":{"id":19580,"nodeType":"StructuredDocumentation","src":"2656:275:123","text":" @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n - if using `revokeRole`, it is the admin role bearer\n - if using `renounceRole`, it is the role bearer (i.e. `account`)"},"id":19588,"name":"RoleRevoked","nodeType":"EventDefinition","parameters":{"id":19587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19582,"indexed":true,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19588,"src":"2954:20:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19581,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2954:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19584,"indexed":true,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19588,"src":"2976:23:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19583,"name":"address","nodeType":"ElementaryTypeName","src":"2976:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19586,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":19588,"src":"3001:22:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19585,"name":"address","nodeType":"ElementaryTypeName","src":"3001:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2953:71:123"},"src":"2936:89:123"},{"body":{"id":19606,"nodeType":"Block","src":"3187:62:123","statements":[{"expression":{"arguments":[{"id":19603,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19593,"src":"3234:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"baseExpression":{"id":19598,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"3204:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19600,"indexExpression":{"id":19599,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19591,"src":"3211:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3204:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19601,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"members","nodeType":"MemberAccess","referencedDeclaration":19551,"src":"3204:20:123","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":19602,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":6834,"src":"3204:29:123","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"}},"id":19604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3204:38:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":19597,"id":19605,"nodeType":"Return","src":"3197:45:123"}]},"documentation":{"id":19589,"nodeType":"StructuredDocumentation","src":"3031:76:123","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":19607,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nodeType":"FunctionDefinition","parameters":{"id":19594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19591,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19607,"src":"3129:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19590,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3129:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19593,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19607,"src":"3143:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19592,"name":"address","nodeType":"ElementaryTypeName","src":"3143:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3128:31:123"},"returnParameters":{"id":19597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19596,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19607,"src":"3181:4:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19595,"name":"bool","nodeType":"ElementaryTypeName","src":"3181:4:123","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3180:6:123"},"scope":19818,"src":"3112:137:123","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":19622,"nodeType":"Block","src":"3489:53:123","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"baseExpression":{"id":19615,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"3506:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19617,"indexExpression":{"id":19616,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19610,"src":"3513:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3506:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19618,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"members","nodeType":"MemberAccess","referencedDeclaration":19551,"src":"3506:20:123","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":19619,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6847,"src":"3506:27:123","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":19620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3506:29:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19614,"id":19621,"nodeType":"Return","src":"3499:36:123"}]},"documentation":{"id":19608,"nodeType":"StructuredDocumentation","src":"3255:157:123","text":" @dev Returns the number of accounts that have `role`. Can be used\n together with {getRoleMember} to enumerate all bearers of a role."},"functionSelector":"ca15c873","id":19623,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleMemberCount","nodeType":"FunctionDefinition","parameters":{"id":19611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19610,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19623,"src":"3445:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19609,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3445:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3444:14:123"},"returnParameters":{"id":19614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19613,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19623,"src":"3480:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19612,"name":"uint256","nodeType":"ElementaryTypeName","src":"3480:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3479:9:123"},"scope":19818,"src":"3417:125:123","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":19641,"nodeType":"Block","src":"4286:54:123","statements":[{"expression":{"arguments":[{"id":19638,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19628,"src":"4327:5:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"baseExpression":{"id":19633,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"4303:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19635,"indexExpression":{"id":19634,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19626,"src":"4310:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4303:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19636,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"members","nodeType":"MemberAccess","referencedDeclaration":19551,"src":"4303:20:123","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":19637,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":6873,"src":"4303:23:123","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":19639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4303:30:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19632,"id":19640,"nodeType":"Return","src":"4296:37:123"}]},"documentation":{"id":19624,"nodeType":"StructuredDocumentation","src":"3587:574:123","text":" @dev Returns one of the accounts that have `role`. `index` must be a\n value between 0 and {getRoleMemberCount}, non-inclusive.\n Role bearers are not sorted in any particular way, and their ordering may\n change at any point.\n WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n you perform all queries on the same block. See the following\n https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n for more information."},"functionSelector":"9010d07c","id":19642,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleMember","nodeType":"FunctionDefinition","parameters":{"id":19629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19626,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19642,"src":"4227:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19625,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4227:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19628,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":19642,"src":"4241:13:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19627,"name":"uint256","nodeType":"ElementaryTypeName","src":"4241:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4226:29:123"},"returnParameters":{"id":19632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19631,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19642,"src":"4277:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19630,"name":"address","nodeType":"ElementaryTypeName","src":"4277:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4276:9:123"},"scope":19818,"src":"4204:136:123","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":19655,"nodeType":"Block","src":"4587:46:123","statements":[{"expression":{"expression":{"baseExpression":{"id":19650,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"4604:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19652,"indexExpression":{"id":19651,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19645,"src":"4611:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4604:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19653,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":19553,"src":"4604:22:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":19649,"id":19654,"nodeType":"Return","src":"4597:29:123"}]},"documentation":{"id":19643,"nodeType":"StructuredDocumentation","src":"4346:170:123","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."},"functionSelector":"248a9ca3","id":19656,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nodeType":"FunctionDefinition","parameters":{"id":19646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19645,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19656,"src":"4543:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19644,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4543:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4542:14:123"},"returnParameters":{"id":19649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19648,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19656,"src":"4578:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19647,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4578:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4577:9:123"},"scope":19818,"src":"4521:112:123","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":19681,"nodeType":"Block","src":"4948:156:123","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"baseExpression":{"id":19666,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"4974:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19668,"indexExpression":{"id":19667,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19659,"src":"4981:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4974:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19669,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":19553,"src":"4974:22:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":19670,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4998:3:123","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4998:10:123","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":19665,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19607,"src":"4966:7:123","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":19672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4966:43:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74","id":19673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5011:49:123","typeDescriptions":{"typeIdentifier":"t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811","typeString":"literal_string \"AccessControl: sender must be an admin to grant\""},"value":"AccessControl: sender must be an admin to grant"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811","typeString":"literal_string \"AccessControl: sender must be an admin to grant\""}],"id":19664,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4958:7:123","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4958:103:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19675,"nodeType":"ExpressionStatement","src":"4958:103:123"},{"expression":{"arguments":[{"id":19677,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19659,"src":"5083:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19678,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19661,"src":"5089:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19676,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19793,"src":"5072:10:123","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":19679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5072:25:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19680,"nodeType":"ExpressionStatement","src":"5072:25:123"}]},"documentation":{"id":19657,"nodeType":"StructuredDocumentation","src":"4639:239:123","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"2f2ff15d","id":19682,"implemented":true,"kind":"function","modifiers":[],"name":"grantRole","nodeType":"FunctionDefinition","parameters":{"id":19662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19659,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19682,"src":"4902:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19658,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4902:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19661,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19682,"src":"4916:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19660,"name":"address","nodeType":"ElementaryTypeName","src":"4916:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4901:31:123"},"returnParameters":{"id":19663,"nodeType":"ParameterList","parameters":[],"src":"4948:0:123"},"scope":19818,"src":"4883:221:123","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":19707,"nodeType":"Block","src":"5404:158:123","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"baseExpression":{"id":19692,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"5430:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19694,"indexExpression":{"id":19693,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19685,"src":"5437:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5430:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19695,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":19553,"src":"5430:22:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":19696,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5454:3:123","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5454:10:123","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":19691,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19607,"src":"5422:7:123","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":19698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5422:43:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65","id":19699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5467:50:123","typeDescriptions":{"typeIdentifier":"t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3","typeString":"literal_string \"AccessControl: sender must be an admin to revoke\""},"value":"AccessControl: sender must be an admin to revoke"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3","typeString":"literal_string \"AccessControl: sender must be an admin to revoke\""}],"id":19690,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5414:7:123","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5414:104:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19701,"nodeType":"ExpressionStatement","src":"5414:104:123"},{"expression":{"arguments":[{"id":19703,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19685,"src":"5541:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19704,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19687,"src":"5547:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19702,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19817,"src":"5529:11:123","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":19705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5529:26:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19706,"nodeType":"ExpressionStatement","src":"5529:26:123"}]},"documentation":{"id":19683,"nodeType":"StructuredDocumentation","src":"5110:223:123","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"d547741f","id":19708,"implemented":true,"kind":"function","modifiers":[],"name":"revokeRole","nodeType":"FunctionDefinition","parameters":{"id":19688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19685,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19708,"src":"5358:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19684,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5358:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19687,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19708,"src":"5372:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19686,"name":"address","nodeType":"ElementaryTypeName","src":"5372:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5357:31:123"},"returnParameters":{"id":19689,"nodeType":"ParameterList","parameters":[],"src":"5404:0:123"},"scope":19818,"src":"5338:224:123","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":19729,"nodeType":"Block","src":"6121:135:123","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19717,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19713,"src":"6139:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":19718,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6150:3:123","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6150:10:123","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6139:21:123","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66","id":19721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6162:49:123","typeDescriptions":{"typeIdentifier":"t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b","typeString":"literal_string \"AccessControl: can only renounce roles for self\""},"value":"AccessControl: can only renounce roles for self"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b","typeString":"literal_string \"AccessControl: can only renounce roles for self\""}],"id":19716,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6131:7:123","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6131:81:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19723,"nodeType":"ExpressionStatement","src":"6131:81:123"},{"expression":{"arguments":[{"id":19725,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19711,"src":"6235:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19726,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19713,"src":"6241:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19724,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19817,"src":"6223:11:123","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":19727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6223:26:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19728,"nodeType":"ExpressionStatement","src":"6223:26:123"}]},"documentation":{"id":19709,"nodeType":"StructuredDocumentation","src":"5568:480:123","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `account`."},"functionSelector":"36568abe","id":19730,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nodeType":"FunctionDefinition","parameters":{"id":19714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19711,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19730,"src":"6075:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19710,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6075:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19713,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19730,"src":"6089:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19712,"name":"address","nodeType":"ElementaryTypeName","src":"6089:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6074:31:123"},"returnParameters":{"id":19715,"nodeType":"ParameterList","parameters":[],"src":"6121:0:123"},"scope":19818,"src":"6053:203:123","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":19743,"nodeType":"Block","src":"6889:42:123","statements":[{"expression":{"arguments":[{"id":19739,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19733,"src":"6910:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19740,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19735,"src":"6916:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19738,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19793,"src":"6899:10:123","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":19741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6899:25:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19742,"nodeType":"ExpressionStatement","src":"6899:25:123"}]},"documentation":{"id":19731,"nodeType":"StructuredDocumentation","src":"6262:554:123","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event. Note that unlike {grantRole}, this function doesn't perform any\n checks on the calling account.\n [WARNING]\n ====\n This function should only be called from the constructor when setting\n up the initial roles for the system.\n Using this function in any other way is effectively circumventing the admin\n system imposed by {AccessControl}.\n ===="},"id":19744,"implemented":true,"kind":"function","modifiers":[],"name":"_setupRole","nodeType":"FunctionDefinition","parameters":{"id":19736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19733,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19744,"src":"6841:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19732,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6841:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19735,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19744,"src":"6855:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19734,"name":"address","nodeType":"ElementaryTypeName","src":"6855:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6840:31:123"},"returnParameters":{"id":19737,"nodeType":"ParameterList","parameters":[],"src":"6889:0:123"},"scope":19818,"src":"6821:110:123","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":19768,"nodeType":"Block","src":"7129:123:123","statements":[{"eventCall":{"arguments":[{"id":19753,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19747,"src":"7161:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"baseExpression":{"id":19754,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"7167:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19756,"indexExpression":{"id":19755,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19747,"src":"7174:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7167:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19757,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":19553,"src":"7167:22:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19758,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19749,"src":"7191:9:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":19752,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19570,"src":"7144:16:123","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":19759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7144:57:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19760,"nodeType":"EmitStatement","src":"7139:62:123"},{"expression":{"id":19766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":19761,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"7211:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19763,"indexExpression":{"id":19762,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19747,"src":"7218:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7211:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19764,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":19553,"src":"7211:22:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19765,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19749,"src":"7236:9:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7211:34:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":19767,"nodeType":"ExpressionStatement","src":"7211:34:123"}]},"documentation":{"id":19745,"nodeType":"StructuredDocumentation","src":"6937:114:123","text":" @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."},"id":19769,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nodeType":"FunctionDefinition","parameters":{"id":19750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19747,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19769,"src":"7079:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19746,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7079:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19749,"mutability":"mutable","name":"adminRole","nodeType":"VariableDeclaration","scope":19769,"src":"7093:17:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19748,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7093:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7078:33:123"},"returnParameters":{"id":19751,"nodeType":"ParameterList","parameters":[],"src":"7129:0:123"},"scope":19818,"src":"7056:196:123","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":19792,"nodeType":"Block","src":"7317:123:123","statements":[{"condition":{"arguments":[{"id":19781,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19773,"src":"7356:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"baseExpression":{"id":19776,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"7331:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19778,"indexExpression":{"id":19777,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19771,"src":"7338:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7331:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19779,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"members","nodeType":"MemberAccess","referencedDeclaration":19551,"src":"7331:20:123","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":19780,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":6731,"src":"7331:24:123","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":19782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7331:33:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19791,"nodeType":"IfStatement","src":"7327:107:123","trueBody":{"id":19790,"nodeType":"Block","src":"7366:68:123","statements":[{"eventCall":{"arguments":[{"id":19784,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19771,"src":"7397:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19785,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19773,"src":"7403:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":19786,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7412:3:123","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7412:10:123","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":19783,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19579,"src":"7385:11:123","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":19788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7385:38:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19789,"nodeType":"EmitStatement","src":"7380:43:123"}]}}]},"id":19793,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nodeType":"FunctionDefinition","parameters":{"id":19774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19771,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19793,"src":"7278:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19770,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7278:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19773,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19793,"src":"7292:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19772,"name":"address","nodeType":"ElementaryTypeName","src":"7292:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7277:31:123"},"returnParameters":{"id":19775,"nodeType":"ParameterList","parameters":[],"src":"7317:0:123"},"scope":19818,"src":"7258:182:123","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":19816,"nodeType":"Block","src":"7506:126:123","statements":[{"condition":{"arguments":[{"id":19805,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19797,"src":"7548:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"baseExpression":{"id":19800,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"7520:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19802,"indexExpression":{"id":19801,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19795,"src":"7527:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7520:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"members","nodeType":"MemberAccess","referencedDeclaration":19551,"src":"7520:20:123","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":19804,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":6816,"src":"7520:27:123","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":19806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7520:36:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19815,"nodeType":"IfStatement","src":"7516:110:123","trueBody":{"id":19814,"nodeType":"Block","src":"7558:68:123","statements":[{"eventCall":{"arguments":[{"id":19808,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19795,"src":"7589:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19809,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19797,"src":"7595:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":19810,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7604:3:123","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7604:10:123","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":19807,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19588,"src":"7577:11:123","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":19812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7577:38:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19813,"nodeType":"EmitStatement","src":"7572:43:123"}]}}]},"id":19817,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nodeType":"FunctionDefinition","parameters":{"id":19798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19795,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19817,"src":"7467:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19794,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7467:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19797,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19817,"src":"7481:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19796,"name":"address","nodeType":"ElementaryTypeName","src":"7481:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7466:31:123"},"returnParameters":{"id":19799,"nodeType":"ParameterList","parameters":[],"src":"7506:0:123"},"scope":19818,"src":"7446:186:123","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":19819,"src":"1613:6021:123"}],"src":"33:7602:123"},"id":123},"contracts/test/TestBalancerToken.sol":{"ast":{"absolutePath":"contracts/test/TestBalancerToken.sol","exportedSymbols":{"TestBalancerToken":[19922]},"id":19923,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19820,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:124"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","id":19821,"nodeType":"ImportDirective","scope":19923,"sourceUnit":6513,"src":"713:75:124","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol","id":19822,"nodeType":"ImportDirective","scope":19923,"sourceUnit":6570,"src":"789:83:124","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol","id":19823,"nodeType":"ImportDirective","scope":19923,"sourceUnit":6679,"src":"873:81:124","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/test/TestAccessControl.sol","file":"./TestAccessControl.sol","id":19824,"nodeType":"ImportDirective","scope":19923,"sourceUnit":19819,"src":"956:33:124","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19825,"name":"TestAccessControl","nodeType":"UserDefinedTypeName","referencedDeclaration":19818,"src":"1021:17:124","typeDescriptions":{"typeIdentifier":"t_contract$_TestAccessControl_$19818","typeString":"contract TestAccessControl"}},"id":19826,"nodeType":"InheritanceSpecifier","src":"1021:17:124"},{"baseName":{"id":19827,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":6512,"src":"1040:5:124","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$6512","typeString":"contract ERC20"}},"id":19828,"nodeType":"InheritanceSpecifier","src":"1040:5:124"},{"baseName":{"id":19829,"name":"ERC20Burnable","nodeType":"UserDefinedTypeName","referencedDeclaration":6569,"src":"1047:13:124","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Burnable_$6569","typeString":"contract ERC20Burnable"}},"id":19830,"nodeType":"InheritanceSpecifier","src":"1047:13:124"},{"baseName":{"id":19831,"name":"ERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":6678,"src":"1062:11:124","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Permit_$6678","typeString":"contract ERC20Permit"}},"id":19832,"nodeType":"InheritanceSpecifier","src":"1062:11:124"}],"contractDependencies":[2311,2447,2483,3308,6021,6512,6569,6678,19818],"contractKind":"contract","fullyImplemented":true,"id":19922,"linearizedBaseContracts":[19922,6678,3308,6021,2311,2483,6569,6512,2447,19818],"name":"TestBalancerToken","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"d5391393","id":19837,"mutability":"constant","name":"MINTER_ROLE","nodeType":"VariableDeclaration","scope":19922,"src":"1080:62:124","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19833,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1080:7:124","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"4d494e5445525f524f4c45","id":19835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1128:13:124","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6","typeString":"literal_string \"MINTER_ROLE\""},"value":"MINTER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6","typeString":"literal_string \"MINTER_ROLE\""}],"id":19834,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1118:9:124","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":19836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1118:24:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"7028e2cd","id":19842,"mutability":"constant","name":"SNAPSHOT_ROLE","nodeType":"VariableDeclaration","scope":19922,"src":"1148:66:124","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19838,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1148:7:124","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"534e415053484f545f524f4c45","id":19840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1198:15:124","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f","typeString":"literal_string \"SNAPSHOT_ROLE\""},"value":"SNAPSHOT_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f","typeString":"literal_string \"SNAPSHOT_ROLE\""}],"id":19839,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1188:9:124","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":19841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1188:26:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"anonymous":false,"id":19846,"name":"Snapshot","nodeType":"EventDefinition","parameters":{"id":19845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19844,"indexed":false,"mutability":"mutable","name":"id","nodeType":"VariableDeclaration","scope":19846,"src":"1236:10:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19843,"name":"uint256","nodeType":"ElementaryTypeName","src":"1236:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1235:12:124"},"src":"1221:27:124"},{"body":{"id":19881,"nodeType":"Block","src":"1391:164:124","statements":[{"expression":{"arguments":[{"hexValue":"3138","id":19863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1416:2:124","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"}],"id":19862,"name":"_setupDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6500,"src":"1401:14:124","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":19864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1401:18:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19865,"nodeType":"ExpressionStatement","src":"1401:18:124"},{"expression":{"arguments":[{"id":19867,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19561,"src":"1440:18:124","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19868,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19848,"src":"1460:5:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19866,"name":"_setupRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19744,"src":"1429:10:124","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":19869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1429:37:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19870,"nodeType":"ExpressionStatement","src":"1429:37:124"},{"expression":{"arguments":[{"id":19872,"name":"MINTER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19837,"src":"1487:11:124","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19873,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19848,"src":"1500:5:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19871,"name":"_setupRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19744,"src":"1476:10:124","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":19874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1476:30:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19875,"nodeType":"ExpressionStatement","src":"1476:30:124"},{"expression":{"arguments":[{"id":19877,"name":"SNAPSHOT_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19842,"src":"1527:13:124","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19878,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19848,"src":"1542:5:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19876,"name":"_setupRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19744,"src":"1516:10:124","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":19879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1516:32:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19880,"nodeType":"ExpressionStatement","src":"1516:32:124"}]},"id":19882,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":19855,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19850,"src":"1359:4:124","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":19856,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19852,"src":"1365:6:124","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":19857,"modifierName":{"id":19854,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6512,"src":"1353:5:124","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$6512_$","typeString":"type(contract ERC20)"}},"nodeType":"ModifierInvocation","src":"1353:19:124"},{"arguments":[{"id":19859,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19850,"src":"1385:4:124","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":19860,"modifierName":{"id":19858,"name":"ERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6678,"src":"1373:11:124","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Permit_$6678_$","typeString":"type(contract ERC20Permit)"}},"nodeType":"ModifierInvocation","src":"1373:17:124"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19848,"mutability":"mutable","name":"admin","nodeType":"VariableDeclaration","scope":19882,"src":"1275:13:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19847,"name":"address","nodeType":"ElementaryTypeName","src":"1275:7:124","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19850,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":19882,"src":"1298:18:124","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19849,"name":"string","nodeType":"ElementaryTypeName","src":"1298:6:124","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19852,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":19882,"src":"1326:20:124","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19851,"name":"string","nodeType":"ElementaryTypeName","src":"1326:6:124","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1265:87:124"},"returnParameters":{"id":19861,"nodeType":"ParameterList","parameters":[],"src":"1391:0:124"},"scope":19922,"src":"1254:301:124","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":19903,"nodeType":"Block","src":"1619:106:124","statements":[{"expression":{"arguments":[{"arguments":[{"id":19891,"name":"MINTER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19837,"src":"1645:11:124","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":19892,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1658:3:124","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1658:10:124","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":19890,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19607,"src":"1637:7:124","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":19894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1637:32:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f545f4d494e544552","id":19895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1671:12:124","typeDescriptions":{"typeIdentifier":"t_stringliteral_4c0c5d721c8b7b55b3e9849de342348c28ccdebf6d5421ee0bcc928e5487b778","typeString":"literal_string \"NOT_MINTER\""},"value":"NOT_MINTER"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4c0c5d721c8b7b55b3e9849de342348c28ccdebf6d5421ee0bcc928e5487b778","typeString":"literal_string \"NOT_MINTER\""}],"id":19889,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1629:7:124","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1629:55:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19897,"nodeType":"ExpressionStatement","src":"1629:55:124"},{"expression":{"arguments":[{"id":19899,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19884,"src":"1700:9:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19900,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19886,"src":"1711:6:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19898,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6405,"src":"1694:5:124","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":19901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1694:24:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19902,"nodeType":"ExpressionStatement","src":"1694:24:124"}]},"functionSelector":"40c10f19","id":19904,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":19887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19884,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":19904,"src":"1575:17:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19883,"name":"address","nodeType":"ElementaryTypeName","src":"1575:7:124","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19886,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":19904,"src":"1594:14:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19885,"name":"uint256","nodeType":"ElementaryTypeName","src":"1594:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1574:35:124"},"returnParameters":{"id":19888,"nodeType":"ParameterList","parameters":[],"src":"1619:0:124"},"scope":19922,"src":"1561:164:124","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19920,"nodeType":"Block","src":"1760:105:124","statements":[{"expression":{"arguments":[{"arguments":[{"id":19909,"name":"SNAPSHOT_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19842,"src":"1786:13:124","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":19910,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1801:3:124","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1801:10:124","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":19908,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19607,"src":"1778:7:124","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":19912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1778:34:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f545f534e415053484f54544552","id":19913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1814:17:124","typeDescriptions":{"typeIdentifier":"t_stringliteral_57f285acbdfdaa12fc36b96a6f326bbbad439d962847f5b589c5ef66d041cd35","typeString":"literal_string \"NOT_SNAPSHOTTER\""},"value":"NOT_SNAPSHOTTER"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_57f285acbdfdaa12fc36b96a6f326bbbad439d962847f5b589c5ef66d041cd35","typeString":"literal_string \"NOT_SNAPSHOTTER\""}],"id":19907,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1770:7:124","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1770:62:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19915,"nodeType":"ExpressionStatement","src":"1770:62:124"},{"eventCall":{"arguments":[{"hexValue":"30","id":19917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1856:1:124","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":19916,"name":"Snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19846,"src":"1847:8:124","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":19918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1847:11:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19919,"nodeType":"EmitStatement","src":"1842:16:124"}]},"functionSelector":"9711715a","id":19921,"implemented":true,"kind":"function","modifiers":[],"name":"snapshot","nodeType":"FunctionDefinition","parameters":{"id":19905,"nodeType":"ParameterList","parameters":[],"src":"1748:2:124"},"returnParameters":{"id":19906,"nodeType":"ParameterList","parameters":[],"src":"1760:0:124"},"scope":19922,"src":"1731:134:124","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":19923,"src":"991:876:124"}],"src":"688:1180:124"},"id":124},"contracts/test/TestFeeDistributor.sol":{"ast":{"absolutePath":"contracts/test/TestFeeDistributor.sol","exportedSymbols":{"TestFeeDistributor":[19954]},"id":19955,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19924,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:125"},{"id":19925,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:125"},{"absolutePath":"contracts/fee-distribution/FeeDistributor.sol","file":"../fee-distribution/FeeDistributor.sol","id":19926,"nodeType":"ImportDirective","scope":19955,"sourceUnit":13821,"src":"747:48:125","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19927,"name":"FeeDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":13820,"src":"828:14:125","typeDescriptions":{"typeIdentifier":"t_contract$_FeeDistributor_$13820","typeString":"contract FeeDistributor"}},"id":19928,"nodeType":"InheritanceSpecifier","src":"828:14:125"}],"contractDependencies":[624,2293,2311,3308,3553,3603,6021,7187,13820],"contractKind":"contract","fullyImplemented":true,"id":19954,"linearizedBaseContracts":[19954,13820,7187,3553,3603,3308,6021,2311,2293,624],"name":"TestFeeDistributor","nodeType":"ContractDefinition","nodes":[{"body":{"id":19939,"nodeType":"Block","src":"948:64:125","statements":[]},"id":19940,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":19935,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19930,"src":"923:12:125","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},{"id":19936,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19932,"src":"937:9:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19937,"modifierName":{"id":19934,"name":"FeeDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13820,"src":"908:14:125","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FeeDistributor_$13820_$","typeString":"type(contract FeeDistributor)"}},"nodeType":"ModifierInvocation","src":"908:39:125"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19930,"mutability":"mutable","name":"votingEscrow","nodeType":"VariableDeclaration","scope":19940,"src":"861:26:125","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":19929,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"861:13:125","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"},{"constant":false,"id":19932,"mutability":"mutable","name":"startTime","nodeType":"VariableDeclaration","scope":19940,"src":"889:17:125","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19931,"name":"uint256","nodeType":"ElementaryTypeName","src":"889:7:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"860:47:125"},"returnParameters":{"id":19938,"nodeType":"ParameterList","parameters":[],"src":"948:0:125"},"scope":19954,"src":"849:163:125","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":19952,"nodeType":"Block","src":"1102:62:125","statements":[{"expression":{"expression":{"baseExpression":{"id":19947,"name":"_userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12426,"src":"1119:10:125","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserState_$12422_storage_$","typeString":"mapping(address => struct FeeDistributor.UserState storage ref)"}},"id":19949,"indexExpression":{"id":19948,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19942,"src":"1130:4:125","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1119:16:125","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage","typeString":"struct FeeDistributor.UserState storage ref"}},"id":19950,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"lastEpochCheckpointed","nodeType":"MemberAccess","referencedDeclaration":12421,"src":"1119:38:125","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":19946,"id":19951,"nodeType":"Return","src":"1112:45:125"}]},"functionSelector":"286d5e7f","id":19953,"implemented":true,"kind":"function","modifiers":[],"name":"getUserLastEpochCheckpointed","nodeType":"FunctionDefinition","parameters":{"id":19943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19942,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":19953,"src":"1056:12:125","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19941,"name":"address","nodeType":"ElementaryTypeName","src":"1056:7:125","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1055:14:125"},"returnParameters":{"id":19946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19945,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19953,"src":"1093:7:125","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19944,"name":"uint256","nodeType":"ElementaryTypeName","src":"1093:7:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1092:9:125"},"scope":19954,"src":"1018:146:125","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":19955,"src":"797:369:125"}],"src":"688:479:125"},"id":125}},"contracts":{"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol":{"IArbitrumFeeProvider":{"abi":[{"inputs":[],"name":"getArbitrumFees","outputs":[{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"gasLimit","type":"uint64"},{"internalType":"uint64","name":"gasPrice","type":"uint64"},{"internalType":"uint64","name":"maxSubmissionCost","type":"uint64"}],"name":"setArbitrumFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getArbitrumFees()":"ac8288c0","setArbitrumFees(uint64,uint64,uint64)":"e9bde604"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getArbitrumFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasPrice\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxSubmissionCost\",\"type\":\"uint64\"}],\"name\":\"setArbitrumFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol\":\"IArbitrumFeeProvider\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol\":{\"keccak256\":\"0xc534a9120b1e85fdc2e40ae24a5264d4bb6fdbd458fe287fd8fe25a852bebe6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ba7317f70be2cdf2cdf81b1c2178a8297497e7bff697d9a001f7bdb01363d2b\",\"dweb:/ipfs/QmWBysYby5rywAfN6JQ9Dd6gdJf9jwLsQUyBPybnVvXe5z\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol":{"IAuthorizerAdaptor":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getVault()":"8d928af8","performAction(address,bytes)":"4036176a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"performAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"performAction(address,bytes)\":{\"params\":{\"data\":\"- Calldata to be sent to the target contract\",\"target\":\"- Address of the contract to be called\"},\"returns\":{\"_0\":\"The bytes encoded return value from the performed function call\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"performAction(address,bytes)\":{\"notice\":\"Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":\"IAuthorizerAdaptor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol":{"IAuthorizerAdaptorEntrypoint":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizerAdaptor","outputs":[{"internalType":"contract IAuthorizerAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getAuthorizerAdaptor()":"e758d36b","getVault()":"8d928af8","performAction(address,bytes)":"4036176a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizerAdaptor\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"performAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"performAction(address,bytes)\":{\"params\":{\"data\":\"- Calldata to be sent to the target contract\",\"target\":\"- Address of the contract to be called\"},\"returns\":{\"_0\":\"The bytes encoded return value from the performed function call\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getAuthorizerAdaptor()\":{\"notice\":\"Returns the Authorizer Adaptor\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"performAction(address,bytes)\":{\"notice\":\"Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\"}},\"notice\":\"Interface for `AuthorizerAdaptorEntrypoint`.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":\"IAuthorizerAdaptorEntrypoint\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x25b2a2ad63f9aa59c45f1a81a2f79733b8dcdce268cc9b1ac03866396f4b0d17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://efe9f30e6cab81587b738089165050d35533926703f4ad1da0f86452a69874ce\",\"dweb:/ipfs/QmcJoNP8NAEefchpG3qs3CwMw1qhxBJTgBMY4KY6g6qfUa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol":{"IBalancerMinter":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"uint256","name":"minted","type":"uint256"}],"name":"Minted","type":"event"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"allowed_to_mint_for","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getMinterApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"mintManyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mint_for","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[8]","name":"gauges","type":"address[8]"}],"name":"mint_many","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"}],"name":"setMinterApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"setMinterApprovalWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"toggle_approve_mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowed_to_mint_for(address,address)":"a0990033","getBalancerToken()":"c0039699","getMinterApproval(address,address)":"3c543bc6","mint(address)":"6a627842","mintFor(address,address)":"7504a15d","mintMany(address[])":"397ada21","mintManyFor(address[],address)":"3b9f7384","mint_for(address,address)":"27f18ae3","mint_many(address[8])":"a51e1904","minted(address,address)":"8b752bb0","setMinterApproval(address,bool)":"0de54ba0","setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)":"c6542794","toggle_approve_mint(address)":"dd289d60"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed_to_mint_for\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinterApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"mintMany\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintManyFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mint_for\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[8]\",\"name\":\"gauges\",\"type\":\"address[8]\"}],\"name\":\"mint_many\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"minted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMinterApprovalWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"toggle_approve_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Base minter interface, applicable to Mainnet minter or L2 pseudo minters.\",\"kind\":\"dev\",\"methods\":{\"mint(address)\":{\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\"}},\"mintFor(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mintMany(address[])\":{\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"mintManyFor(address[],address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\",\"user\":\"Address to mint to\"}},\"mint_for(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mint_many(address[8])\":{\"details\":\"This function is not recommended as `mintMany()` is more flexible and gas efficient\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowed_to_mint_for(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"},\"getMinterApproval(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"mint(address)\":{\"notice\":\"Mint everything which belongs to `msg.sender` and send to them\"},\"mintFor(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mintMany(address[])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"mintManyFor(address[],address)\":{\"notice\":\"Mint tokens for `user` across multiple gauges\"},\"mint_for(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mint_many(address[8])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"minted(address,address)\":{\"notice\":\"The total number of tokens minted for `user` from `gauge`\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on your behalf\"},\"setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing them.\"},\"toggle_approve_mint(address)\":{\"notice\":\"Toggle whether `minter` is approved to mint tokens for `user`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":\"IBalancerMinter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol":{"IBalancerToken":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNAPSHOT_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","MINTER_ROLE()":"d5391393","SNAPSHOT_ROLE()":"7028e2cd","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","mint(address,uint256)":"40c10f19","revokeRole(bytes32,address)":"d547741f","snapshot()":"9711715a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNAPSHOT_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":\"IBalancerToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol":{"IBalancerTokenAdmin":{"abi":[{"inputs":[],"name":"INITIAL_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startEpochTimeWrite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"INITIAL_RATE()":"4dbac733","RATE_DENOMINATOR()":"7efad8e0","RATE_REDUCTION_COEFFICIENT()":"21609bbf","RATE_REDUCTION_TIME()":"b87b5616","activate()":"0f15f4c0","getActionId(bytes4)":"851c1bb3","getBalancerToken()":"c0039699","mint(address,uint256)":"40c10f19","rate()":"2c4e722e","startEpochTimeWrite()":"a228bced"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"INITIAL_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_COEFFICIENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startEpochTimeWrite\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":\"IBalancerTokenAdmin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol":{"IChildChainGauge":{"abi":[{"inputs":[],"name":"factory","outputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lpToken","type":"address"},{"internalType":"string","name":"version","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"factory()":"c45a0155","initialize(address,string)":"f399e22e","integrate_fraction(address)":"09400707","user_checkpoint(address)":"4b820093","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lpToken\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"initialize(address,string)\":{\"params\":{\"lpToken\":\"Pool allowed to stake in this gauge.\",\"version\":\"Gauge version string identifier.\"}},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}},\"version()\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"factory()\":{\"notice\":\"Returns gauge factory address.\"},\"initialize(address,string)\":{\"notice\":\"Proxy constructor.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"user_checkpoint(address)\":{\"notice\":\"Records a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\":\"IChildChainGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\":{\"keccak256\":\"0xffafd017b9f43c8cc47f59e85e8a5354e4028110fb6c7fdbaeb569018f35e4d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bf250a0d068a2c8203dda057beabbf49705114e51086e885d7dc283a0cf3a249\",\"dweb:/ipfs/QmTBZvND9qY9k4EQYkfA9hYVSP3DxaXgKwuvDAQFDfxic2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol":{"IChildChainLiquidityGaugeFactory":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"streamer","type":"address"}],"name":"RewardsOnlyGaugeCreated","type":"event"},{"inputs":[],"name":"getChildChainStreamerImplementation","outputs":[{"internalType":"contract IChildChainStreamer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"contract ILiquidityGauge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"getGaugePool","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"getGaugeStreamer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolGauge","outputs":[{"internalType":"contract ILiquidityGauge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolStreamer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"streamer","type":"address"}],"name":"isStreamerFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getChildChainStreamerImplementation()":"f9e0a13e","getGaugeImplementation()":"39312dee","getGaugePool(address)":"744a65dd","getGaugeStreamer(address)":"90b20087","getPoolGauge(address)":"a8ea6875","getPoolStreamer(address)":"8a4ffeb0","isGaugeFromFactory(address)":"ce3cc8bd","isStreamerFromFactory(address)":"cbda9327"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"streamer\",\"type\":\"address\"}],\"name\":\"RewardsOnlyGaugeCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getChildChainStreamerImplementation\",\"outputs\":[{\"internalType\":\"contract IChildChainStreamer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"contract ILiquidityGauge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"getGaugePool\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"getGaugeStreamer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolGauge\",\"outputs\":[{\"internalType\":\"contract ILiquidityGauge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolStreamer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"streamer\",\"type\":\"address\"}],\"name\":\"isStreamerFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getChildChainStreamerImplementation()\":{\"notice\":\"Returns the address of the implementation used for streamer deployments.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"getGaugePool(address)\":{\"notice\":\"Returns the address of the pool which `gauge` belongs.\"},\"getGaugeStreamer(address)\":{\"notice\":\"Returns the address of the streamer belonging to `gauge`.\"},\"getPoolGauge(address)\":{\"notice\":\"Returns the address of the gauge belonging to `pool`.\"},\"getPoolStreamer(address)\":{\"notice\":\"Returns the address of the streamer belonging to `pool`'s gauge.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"},\"isStreamerFromFactory(address)\":{\"notice\":\"Returns true if `streamer` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol\":\"IChildChainLiquidityGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol\":{\"keccak256\":\"0x842d0fc23e9bc0c59c2c11d042a409328533e4424578c96727d33db8092bf51a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://50a546df376e1772a1611dfa17d0e35adf29cdae502df736f65c67c4b94c0188\",\"dweb:/ipfs/QmatAq7AvGfnZQ7xDYgPUk5obubqJkJWpFoLE8LPFqccsf\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\":{\"keccak256\":\"0x3cf2370032a789025cffe8d0c613274213fd4e1ceb88cef1c2b039a6d0d08261\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1788ecb804b061fa04678ce311020d66e25b201cf18d452ea290bbc9af12e504\",\"dweb:/ipfs/Qmf84ANUiZtoZHEsbymn7NSZSGikMovYZUVqiPHwVrbBPJ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol\":{\"keccak256\":\"0x8c09c3f372e07adf790d55607401dfa60d8ec2b591f39de772efdf887d965d11\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6cbfa8f8f004ec1cc00739f51bd00763d08600e0bf827c1be4cc21a4afb26874\",\"dweb:/ipfs/QmTxDYJA8y2cJdxHfCq6NLK812WGnxFehTF9bW4n8xa1zx\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol":{"IChildChainStreamer":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"add_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"get_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_reward(address,address,uint256)":"661ab0b2","get_reward()":"1afe22a6","initialize(address)":"c4d66de8","reward_tokens(uint256)":"54c49fe9"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"add_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"get_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\":\"IChildChainStreamer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\":{\"keccak256\":\"0x3cf2370032a789025cffe8d0c613274213fd4e1ceb88cef1c2b039a6d0d08261\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1788ecb804b061fa04678ce311020d66e25b201cf18d452ea290bbc9af12e504\",\"dweb:/ipfs/Qmf84ANUiZtoZHEsbymn7NSZSGikMovYZUVqiPHwVrbBPJ\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol":{"IFeeDistributor":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastCheckpointTimestamp","type":"uint256"}],"name":"TokenCheckpointed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"userTokenTimeCursor","type":"uint256"}],"name":"TokensClaimed","type":"event"},{"inputs":[],"name":"checkpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"checkpointToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"checkpointTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkpointUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"claimToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"claimTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"depositTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenLastBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getTokensDistributedInWeek","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getTotalSupplyAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getUserBalanceAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getUserTokenTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"checkpoint()":"c2c4c5c1","checkpointToken(address)":"3902b9bc","checkpointTokens(address[])":"905d10ac","checkpointUser(address)":"14866e08","claimToken(address,address)":"ca31879d","claimTokens(address,address[])":"88720467","depositToken(address,uint256)":"338b5dea","depositTokens(address[],uint256[])":"7b8d6221","getTimeCursor()":"82aa5ad4","getTokenLastBalance(address)":"2308805b","getTokenTimeCursor(address)":"acbc1428","getTokensDistributedInWeek(address,uint256)":"d3dc4ca1","getTotalSupplyAtTimestamp(uint256)":"4f3c5090","getUserBalanceAtTimestamp(address,uint256)":"de681faf","getUserTimeCursor(address)":"876e69a1","getUserTokenTimeCursor(address,address)":"8050a7ee","getVotingEscrow()":"08b0308a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastCheckpointTimestamp\",\"type\":\"uint256\"}],\"name\":\"TokenCheckpointed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"userTokenTimeCursor\",\"type\":\"uint256\"}],\"name\":\"TokensClaimed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"checkpointToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"checkpointTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"checkpointUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"depositTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenLastBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getTokensDistributedInWeek\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getTotalSupplyAtTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getUserBalanceAtTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getUserTokenTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Supports distributing arbitrarily many different tokens. In order to start distributing a new token to veBAL holders simply transfer the tokens to the `FeeDistributor` contract and then call `checkpointToken`.\",\"kind\":\"dev\",\"methods\":{\"checkpointToken(address)\":{\"details\":\"Any `token` balance held by the FeeDistributor above that which is returned by `getTokenLastBalance` will be distributed evenly across the time period since `token` was last checkpointed. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\",\"params\":{\"token\":\"- The ERC20 token address to be checkpointed.\"}},\"checkpointTokens(address[])\":{\"details\":\"A version of `checkpointToken` which supports checkpointing multiple tokens. See `checkpointToken` for more details.\",\"params\":{\"tokens\":\"- An array of ERC20 token addresses to be checkpointed.\"}},\"checkpointUser(address)\":{\"params\":{\"user\":\"- The address of the user to be checkpointed.\"}},\"claimToken(address,address)\":{\"details\":\"It's not necessary to explicitly checkpoint before calling this function, it will ensure the FeeDistributor is up to date before calculating the amount of tokens to be claimed.\",\"params\":{\"token\":\"- The ERC20 token address to be claimed.\",\"user\":\"- The user on behalf of which to claim.\"},\"returns\":{\"_0\":\"The amount of `token` sent to `user` as a result of claiming.\"}},\"claimTokens(address,address[])\":{\"details\":\"A version of `claimToken` which supports claiming multiple `tokens` on behalf of `user`. See `claimToken` for more details.\",\"params\":{\"tokens\":\"- An array of ERC20 token addresses to be claimed.\",\"user\":\"- The user on behalf of which to claim.\"},\"returns\":{\"_0\":\"An array of the amounts of each token in `tokens` sent to `user` as a result of claiming.\"}},\"depositToken(address,uint256)\":{\"details\":\"Sending tokens directly to the FeeDistributor instead of using `depositTokens` may result in tokens being retroactively distributed to past weeks, or for the distribution to carry over to future weeks. If for some reason `depositTokens` cannot be called, in order to ensure that all tokens are correctly distributed manually call `checkpointToken` before and after the token transfer.\",\"params\":{\"amount\":\"- The amount of tokens to deposit.\",\"token\":\"- The ERC20 token address to distribute.\"}},\"depositTokens(address[],uint256[])\":{\"details\":\"A version of `depositToken` which supports depositing multiple `tokens` at once. See `depositToken` for more details.\",\"params\":{\"amounts\":\"- An array of token amounts to deposit.\",\"tokens\":\"- An array of ERC20 token addresses to distribute.\"}},\"getTokenTimeCursor(address)\":{\"params\":{\"token\":\"- The ERC20 token address to query.\"}},\"getTokensDistributedInWeek(address,uint256)\":{\"params\":{\"timestamp\":\"- The timestamp corresponding to the beginning of the week of interest.\",\"token\":\"- The ERC20 token address to query.\"}},\"getTotalSupplyAtTimestamp(uint256)\":{\"details\":\"Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values. This function requires the contract to have been checkpointed past `timestamp` so that the supply is cached.\",\"params\":{\"timestamp\":\"- The timestamp at which to read the cached total supply at.\"}},\"getUserBalanceAtTimestamp(address,uint256)\":{\"details\":\"Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values. This function requires `user` to have been checkpointed past `timestamp` so that their balance is cached.\",\"params\":{\"timestamp\":\"- The timestamp at which to read the `user`'s cached balance at.\",\"user\":\"- The address of the user of which to read the cached balance of.\"}},\"getUserTimeCursor(address)\":{\"params\":{\"user\":\"- The address of the user to query.\"}},\"getUserTokenTimeCursor(address,address)\":{\"params\":{\"token\":\"- The ERC20 token address to query.\",\"user\":\"- The address of the user to query.\"}}},\"title\":\"Fee Distributor\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"checkpoint()\":{\"notice\":\"Caches the total supply of veBAL at the beginning of each week. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\"},\"checkpointToken(address)\":{\"notice\":\"Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\"},\"checkpointTokens(address[])\":{\"notice\":\"Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\"},\"checkpointUser(address)\":{\"notice\":\"Caches the user's balance of veBAL at the beginning of each week. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\"},\"claimToken(address,address)\":{\"notice\":\"Claims all pending distributions of the provided token for a user.\"},\"claimTokens(address,address[])\":{\"notice\":\"Claims a number of tokens on behalf of a user.\"},\"depositToken(address,uint256)\":{\"notice\":\"Deposits tokens to be distributed in the current week.\"},\"depositTokens(address[],uint256[])\":{\"notice\":\"Deposits tokens to be distributed in the current week.\"},\"getTimeCursor()\":{\"notice\":\"Returns the global time cursor representing the most earliest uncheckpointed week.\"},\"getTokenLastBalance(address)\":{\"notice\":\"Returns the FeeDistributor's cached balance of `token`.\"},\"getTokenTimeCursor(address)\":{\"notice\":\"Returns the token-level time cursor storing the timestamp at up to which tokens have been distributed.\"},\"getTokensDistributedInWeek(address,uint256)\":{\"notice\":\"Returns the amount of `token` which the FeeDistributor received in the week beginning at `timestamp`.\"},\"getTotalSupplyAtTimestamp(uint256)\":{\"notice\":\"Returns the cached total supply of veBAL as of the provided timestamp.\"},\"getUserBalanceAtTimestamp(address,uint256)\":{\"notice\":\"Returns the user's cached balance of veBAL as of the provided timestamp.\"},\"getUserTimeCursor(address)\":{\"notice\":\"Returns the user-level time cursor representing the most earliest uncheckpointed week.\"},\"getUserTokenTimeCursor(address,address)\":{\"notice\":\"Returns the user-level time cursor storing the timestamp of the latest token distribution claimed.\"},\"getVotingEscrow()\":{\"notice\":\"Returns the VotingEscrow (veBAL) token contract\"}},\"notice\":\"Distributes any tokens transferred to the contract (e.g. Protocol fees and any BAL emissions) among veBAL holders proportionally based on a snapshot of the week at which the tokens are sent to the FeeDistributor contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\":\"IFeeDistributor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\":{\"keccak256\":\"0x250e4e6dcde3cf83d4d2822e9593c3138f6518ca95d88a0156a292557605640e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a2596b2242650aade0987677bfee7f4ee1359d588244b03cd1b65542f4f06252\",\"dweb:/ipfs/Qmbrb2Lp6suCPngH9sBzmaDBxET6YD6pBH1T8crGw29Cqi\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol":{"IGaugeAdder":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"},{"indexed":false,"internalType":"contract ILiquidityGaugeFactory","name":"gaugeFactory","type":"address"}],"name":"GaugeFactorySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"}],"name":"GaugeTypeAdded","type":"event"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"string","name":"gaugeType","type":"string"}],"name":"addGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"addGaugeType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizerAdaptorEntrypoint","outputs":[{"internalType":"contract IAuthorizerAdaptorEntrypoint","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"getFactoryForGaugeType","outputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeController","outputs":[{"internalType":"contract IGaugeController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getGaugeTypeAtIndex","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeTypes","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeTypesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"string","name":"gaugeType","type":"string"}],"name":"isGaugeFromValidFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"isValidGaugeType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"factory","type":"address"},{"internalType":"string","name":"gaugeType","type":"string"}],"name":"setGaugeFactory","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addGauge(address,string)":"5bf71434","addGaugeType(string)":"231856fa","getActionId(bytes4)":"851c1bb3","getAuthorizerAdaptorEntrypoint()":"7afcf0e6","getFactoryForGaugeType(string)":"572cb6a5","getGaugeController()":"58de9ade","getGaugeTypeAtIndex(uint256)":"08ceb030","getGaugeTypes()":"afcb1a86","getGaugeTypesCount()":"96432aeb","isGaugeFromValidFactory(address,string)":"a0ade33e","isValidGaugeType(string)":"16e772bc","setGaugeFactory(address,string)":"066edd7a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"gaugeFactory\",\"type\":\"address\"}],\"name\":\"GaugeFactorySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"GaugeTypeAdded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"addGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"addGaugeType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizerAdaptorEntrypoint\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptorEntrypoint\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"getFactoryForGaugeType\",\"outputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeController\",\"outputs\":[{\"internalType\":\"contract IGaugeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getGaugeTypeAtIndex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeTypes\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeTypesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"isGaugeFromValidFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"isValidGaugeType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"setGaugeFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addGauge(address,string)\":{\"details\":\"When adding gauges for L2 networks or sidechains, this must be called with the address of the *root* gauge which is deployed on Ethereum. It should *not* be called with the address of the child gauge which is deployed on the L2 / sidechain. If the gauge added is an Ethereum gauge, it cannot be a gauge for the 80BAL-20WETH pool.\"},\"addGaugeType(string)\":{\"params\":{\"gaugeType\":\"Name of the new gauge type.\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"setGaugeFactory(address,string)\":{\"details\":\"This function can either set a new factory or replace an existing one.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addGauge(address,string)\":{\"notice\":\"Adds a new gauge to the GaugeController for the given `gaugeType` type.\"},\"addGaugeType(string)\":{\"notice\":\"Adds a new `gaugeType` corresponding to a new network, which allows setting a factory and adding gauges for the type later on.\"},\"getAuthorizerAdaptorEntrypoint()\":{\"notice\":\"Returns the address of the Authorizer adaptor entrypoint contract.\"},\"getFactoryForGaugeType(string)\":{\"notice\":\"Returns the factory for gauge type `gaugeType`.\"},\"getGaugeController()\":{\"notice\":\"Returns the address of the Gauge Controller\"},\"getGaugeTypeAtIndex(uint256)\":{\"notice\":\"Returns gauge type name registered at the given index.\"},\"getGaugeTypes()\":{\"notice\":\"Returns the list of gauge types.\"},\"getGaugeTypesCount()\":{\"notice\":\"Returns the number of gauge types.\"},\"isGaugeFromValidFactory(address,string)\":{\"notice\":\"Returns true if `gauge` has been deployed by the factory for the gauge type `gaugeType`. Note that if a gauge type's factory changes then this function will start returning false for previously valid gauges.\"},\"isValidGaugeType(string)\":{\"notice\":\"Returns true if the given gauge type is valid; false otherwise.\"},\"setGaugeFactory(address,string)\":{\"notice\":\"Sets `factory` as the allowlisted factory contract for gauges with type `gaugeType`.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol\":\"IGaugeAdder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x25b2a2ad63f9aa59c45f1a81a2f79733b8dcdce268cc9b1ac03866396f4b0d17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://efe9f30e6cab81587b738089165050d35533926703f4ad1da0f86452a69874ce\",\"dweb:/ipfs/QmcJoNP8NAEefchpG3qs3CwMw1qhxBJTgBMY4KY6g6qfUa\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol\":{\"keccak256\":\"0x50d40373e50d13566dbb624ac65494f70835aa52ff553e1185df480feae6ecd8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6038ec50171ea847ca9aeeec4af6e9721bcba35223d364f832da5f269e8a722\",\"dweb:/ipfs/QmdvyixjrpFud1kAS8un3wje2xUjrY82BRL7sUHqKvLJq2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol":{"IGaugeController":{"abi":[{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"int128","name":"gaugeType","type":"int128"}],"name":"add_gauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"weight","type":"uint256"}],"name":"add_type","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"contract IAuthorizerAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int128","name":"typeId","type":"int128"},{"internalType":"uint256","name":"weight","type":"uint256"}],"name":"change_type_weight","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"checkpoint_gauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"gauge_exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"gauge_relative_weight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"gauge_types","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"n_gauge_types","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"time_weight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"voting_escrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_gauge(address,int128)":"3a04f900","add_type(string,uint256)":"92d0d232","admin()":"f851a440","change_type_weight(int128,uint256)":"db1ca260","checkpoint_gauge(address)":"615e5237","gauge_exists(address)":"61df1bf9","gauge_relative_weight(address,uint256)":"d3078c94","gauge_types(address)":"3f9095b7","n_gauge_types()":"9fba03a1","time_weight(address)":"a4d7a250","token()":"fc0c546a","voting_escrow()":"dfe05031"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"int128\",\"name\":\"gaugeType\",\"type\":\"int128\"}],\"name\":\"add_gauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"add_type\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"typeId\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"change_type_weight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"checkpoint_gauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"gauge_exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"gauge_relative_weight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"gauge_types\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n_gauge_types\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"time_weight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"voting_escrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":\"IGaugeController\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol":{"IL1StandardBridge":{"abi":[{"inputs":[{"internalType":"address","name":"_l1Token","type":"address"},{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_l2Gas","type":"uint32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"depositERC20To","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"depositERC20To(address,address,address,uint256,uint32,bytes)":"838b2520"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_l2Gas\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"depositERC20To\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Standard token bridging interface, common to Optimism and Base networks.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\":\"IL1StandardBridge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\":{\"keccak256\":\"0x31b489cbd755b3c789115af4cf3d7af2da15f59030345ac29ecf26a033fc806a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2cc164ca032440222b7984aebbad6a46a6c82eef33564d1c6d78408bafab9934\",\"dweb:/ipfs/QmdgixtcWUX8CFhrTkUiAAmSkpMG2FsZnK18QywDhFoFcp\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol":{"IL2LayerZeroDelegation":{"abi":[{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"onVeBalBridged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"onVeBalSupplyUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"onVeBalBridged(address)":"df130bfe","onVeBalSupplyUpdate()":"96345fb5"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"onVeBalBridged\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onVeBalSupplyUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onVeBalBridged(address)\":{\"params\":{\"user\":\"The user whose veBAL balance was updated.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onVeBalBridged(address)\":{\"notice\":\"Called whenever the veBAL balance of a user is updated in a L2 chain.\"},\"onVeBalSupplyUpdate()\":{\"notice\":\"Called whenever the total veBAL supply is updated in a L2 chain.\"}},\"notice\":\"Minimal hook interface to be called whenever the veBAL balance of a user is updated in a L2 chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\":\"IL2LayerZeroDelegation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\":{\"keccak256\":\"0xbeed8a8a1802aede5aa6670554125c5938ea06fc5a96c1b75dbc93d1dd586048\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5cf7cef349eba6938df4d8993dcab2b16775b2daf0cc0d5ad71d91f27221eb00\",\"dweb:/ipfs/QmS22HyJFUggLjLx9WABDcMPq6XqC3f4Q23NrKv6CmnkL5\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol":{"ILMGetters":{"abi":[{"inputs":[],"name":"getBalancerTokenAdmin","outputs":[{"internalType":"contract IBalancerTokenAdmin","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeController","outputs":[{"internalType":"contract IGaugeController","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getBalancerTokenAdmin()":"e6dec36f","getGaugeController()":"58de9ade"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getBalancerTokenAdmin\",\"outputs\":[{\"internalType\":\"contract IBalancerTokenAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeController\",\"outputs\":[{\"internalType\":\"contract IGaugeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getBalancerTokenAdmin()\":{\"notice\":\"Returns the address of the Balancer Token Admin contract\"},\"getGaugeController()\":{\"notice\":\"Returns the address of the Gauge Controller\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":\"ILMGetters\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol":{"ILiquidityGauge":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getCappedRelativeWeight(uint256)":"14e956f5","getRelativeWeightCap()":"83f5c39b","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"},\"user_checkpoint(address)\":{\"notice\":\"Record a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":\"ILiquidityGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol":{"ILiquidityGaugeFactory":{"abi":[{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":\"ILiquidityGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol":{"IMainnetBalancerMinter":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"uint256","name":"minted","type":"uint256"}],"name":"Minted","type":"event"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"allowed_to_mint_for","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerTokenAdmin","outputs":[{"internalType":"contract IBalancerTokenAdmin","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeController","outputs":[{"internalType":"contract IGaugeController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getMinterApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"mintManyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mint_for","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[8]","name":"gauges","type":"address[8]"}],"name":"mint_many","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"}],"name":"setMinterApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"setMinterApprovalWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"toggle_approve_mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowed_to_mint_for(address,address)":"a0990033","getBalancerToken()":"c0039699","getBalancerTokenAdmin()":"e6dec36f","getGaugeController()":"58de9ade","getMinterApproval(address,address)":"3c543bc6","mint(address)":"6a627842","mintFor(address,address)":"7504a15d","mintMany(address[])":"397ada21","mintManyFor(address[],address)":"3b9f7384","mint_for(address,address)":"27f18ae3","mint_many(address[8])":"a51e1904","minted(address,address)":"8b752bb0","setMinterApproval(address,bool)":"0de54ba0","setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)":"c6542794","toggle_approve_mint(address)":"dd289d60"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed_to_mint_for\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerTokenAdmin\",\"outputs\":[{\"internalType\":\"contract IBalancerTokenAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeController\",\"outputs\":[{\"internalType\":\"contract IGaugeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinterApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"mintMany\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintManyFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mint_for\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[8]\",\"name\":\"gauges\",\"type\":\"address[8]\"}],\"name\":\"mint_many\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"minted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMinterApprovalWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"toggle_approve_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Full L1 Balancer minter interface with singleton getters.\",\"kind\":\"dev\",\"methods\":{\"mint(address)\":{\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\"}},\"mintFor(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mintMany(address[])\":{\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"mintManyFor(address[],address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\",\"user\":\"Address to mint to\"}},\"mint_for(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mint_many(address[8])\":{\"details\":\"This function is not recommended as `mintMany()` is more flexible and gas efficient\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowed_to_mint_for(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"},\"getBalancerTokenAdmin()\":{\"notice\":\"Returns the address of the Balancer Token Admin contract\"},\"getGaugeController()\":{\"notice\":\"Returns the address of the Gauge Controller\"},\"getMinterApproval(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"mint(address)\":{\"notice\":\"Mint everything which belongs to `msg.sender` and send to them\"},\"mintFor(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mintMany(address[])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"mintManyFor(address[],address)\":{\"notice\":\"Mint tokens for `user` across multiple gauges\"},\"mint_for(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mint_many(address[8])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"minted(address,address)\":{\"notice\":\"The total number of tokens minted for `user` from `gauge`\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on your behalf\"},\"setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing them.\"},\"toggle_approve_mint(address)\":{\"notice\":\"Toggle whether `minter` is approved to mint tokens for `user`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":\"IMainnetBalancerMinter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol":{"IOmniVotingEscrow":{"abi":[{"inputs":[{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"bool","name":"_useZro","type":"bool"},{"internalType":"bytes","name":"_adapterParams","type":"bytes"}],"name":"estimateSendUserBalance","outputs":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"zroFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"address payable","name":"_refundAddress","type":"address"},{"internalType":"address","name":"_zroPaymentAddress","type":"address"},{"internalType":"bytes","name":"_adapterParams","type":"bytes"}],"name":"sendUserBalance","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"estimateSendUserBalance(uint16,bool,bytes)":"65d092d0","sendUserBalance(address,uint16,address,address,bytes)":"4a759489"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"_useZro\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_adapterParams\",\"type\":\"bytes\"}],\"name\":\"estimateSendUserBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zroFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"},{\"internalType\":\"address payable\",\"name\":\"_refundAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zroPaymentAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_adapterParams\",\"type\":\"bytes\"}],\"name\":\"sendUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Partial voting escrow bridge interface. See https://github.com/LayerZero-Labs/lz_gauges/blob/main/contracts/OmniVotingEscrow.sol for reference.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol\":\"IOmniVotingEscrow\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol\":{\"keccak256\":\"0xd15a09a7f4b4cca895c325a5d4f5469d368ea95fcf81139c6f9b7a6ff98ebf58\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f5ee21f5ff34cf4f4fb65bbef37229a84cce97e7ae2c46f26b6b5356db04fa56\",\"dweb:/ipfs/Qmc5Lukprx5rxNq4om9uyJR1jiNVFMxQxbWQrpGuZhGtsW\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol":{"IOmniVotingEscrowAdaptor":{"abi":[{"inputs":[{"internalType":"uint16","name":"_dstChainId","type":"uint16"}],"name":"estimateSendUserBalance","outputs":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"zroFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"address payable","name":"_refundAddress","type":"address"}],"name":"sendUserBalance","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"estimateSendUserBalance(uint16)":"ecc4c583","sendUserBalance(address,uint16,address)":"57fb8345"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"}],\"name\":\"estimateSendUserBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zroFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"},{\"internalType\":\"address payable\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"sendUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for `OmniVotingEscrowAdaptor`.\",\"kind\":\"dev\",\"methods\":{\"estimateSendUserBalance(uint16)\":{\"details\":\"Reverts if `OmniVotingEscrow` is not set.\",\"params\":{\"_dstChainId\":\"- Destination chain ID.\"},\"returns\":{\"nativeFee\":\"- Native fee reported by the omni voting escrow.\",\"zroFee\":\"- Layer zero fee reported by the omni voting escrow.\"}},\"sendUserBalance(address,uint16,address)\":{\"details\":\"Reverts if `OmniVotingEscrow` is not set.\",\"params\":{\"_dstChainId\":\"- Destination chain ID.\",\"_refundAddress\":\"- Address where to return excess ETH.\",\"_user\":\"- User to bridge the balance from.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"estimateSendUserBalance(uint16)\":{\"notice\":\"Forwards `estimateSendUserBalance` call to omni voting escrow.\"},\"sendUserBalance(address,uint16,address)\":{\"notice\":\"Forwards `sendUserBalance` call to omni voting escrow.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol\":\"IOmniVotingEscrowAdaptor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol\":{\"keccak256\":\"0xd3a86f1eb7aadba25221c8935ae888816487ea6ba4d04c3a5f4789d7b061ac90\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ca65ef1eebc274a1b28abee0d1514f4c18334583c13e39672a80201f0481304f\",\"dweb:/ipfs/QmSs5kDN8rGfbCmkQihP1uUbTtAc9wfSzSuPTpp6dErVWk\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol":{"IOmniVotingEscrowAdaptorSettings":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"newAdapterParams","type":"bytes"}],"name":"AdapterParamsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IOmniVotingEscrow","name":"newOmniVotingEscrow","type":"address"}],"name":"OmniVotingEscrowUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"newUseZero","type":"bool"}],"name":"UseZeroUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newZeroPaymentAddress","type":"address"}],"name":"ZeroPaymentAddressUpdated","type":"event"},{"inputs":[],"name":"getAdapterParams","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOmniVotingEscrow","outputs":[{"internalType":"contract IOmniVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUseZero","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getZeroPaymentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"adapterParams","type":"bytes"}],"name":"setAdapterParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IOmniVotingEscrow","name":"omniVotingEscrow","type":"address"}],"name":"setOmniVotingEscrow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"useZro","type":"bool"}],"name":"setUseZero","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"paymentAddress","type":"address"}],"name":"setZeroPaymentAddress","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getAdapterParams()":"4cfde448","getOmniVotingEscrow()":"550f2f7f","getUseZero()":"00986fe0","getZeroPaymentAddress()":"0943b7b8","setAdapterParams(bytes)":"d56b6a4a","setOmniVotingEscrow(address)":"09d401f9","setUseZero(bool)":"299fd6fc","setZeroPaymentAddress(address)":"e241e489"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newAdapterParams\",\"type\":\"bytes\"}],\"name\":\"AdapterParamsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IOmniVotingEscrow\",\"name\":\"newOmniVotingEscrow\",\"type\":\"address\"}],\"name\":\"OmniVotingEscrowUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"newUseZero\",\"type\":\"bool\"}],\"name\":\"UseZeroUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newZeroPaymentAddress\",\"type\":\"address\"}],\"name\":\"ZeroPaymentAddressUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAdapterParams\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOmniVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IOmniVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUseZero\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getZeroPaymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adapterParams\",\"type\":\"bytes\"}],\"name\":\"setAdapterParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IOmniVotingEscrow\",\"name\":\"omniVotingEscrow\",\"type\":\"address\"}],\"name\":\"setOmniVotingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"useZro\",\"type\":\"bool\"}],\"name\":\"setUseZero\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"paymentAddress\",\"type\":\"address\"}],\"name\":\"setZeroPaymentAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for `OmniVotingEscrowAdaptor` settings.\",\"kind\":\"dev\",\"methods\":{\"setAdapterParams(bytes)\":{\"details\":\"Emits `AdapterParamsUpdated` event.\"},\"setOmniVotingEscrow(address)\":{\"details\":\"This step is required before creating any remapping in the `VotingEscrowRemapper`. Omni voting escrow is not set in the constructor to avoid circular dependencies. Emits `OmniVotingEscrowUpdated` event.\",\"params\":{\"omniVotingEscrow\":\"- Address of the omni voting escrow contract.\"}},\"setUseZero(bool)\":{\"details\":\"Emits `UseZeroUpdated` event.\"},\"setZeroPaymentAddress(address)\":{\"details\":\"Emits `ZeroPaymentAddressUpdated` event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAdapterParams()\":{\"notice\":\"Returns `_adapterParams` parameter used in `estimateSendUserBalance` and `sendUserBalance`.\"},\"getOmniVotingEscrow()\":{\"notice\":\"Returns Omni Voting Escrow contract address, which is the gateway to bridge veBAL balances to L2s.\"},\"getUseZero()\":{\"notice\":\"Returns `_useZro` parameter used in `estimateSendUserBalance`.\"},\"getZeroPaymentAddress()\":{\"notice\":\"Returns `_zroPaymentAddress` parameter used in `sendUserBalance`.\"},\"setAdapterParams(bytes)\":{\"notice\":\"Sets `_adapterParams` parameter for `estimateSendUserBalance` and `sendUserBalance` when forwarding calls.\"},\"setOmniVotingEscrow(address)\":{\"notice\":\"Sets omni voting escrow address.\"},\"setUseZero(bool)\":{\"notice\":\"Sets `_useZro` parameter for `estimateSendUserBalance` when forwarding calls.\"},\"setZeroPaymentAddress(address)\":{\"notice\":\"Sets `_zroPaymentAddress` parameter for `sendUserBalance` when forwarding calls.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol\":\"IOmniVotingEscrowAdaptorSettings\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol\":{\"keccak256\":\"0xd15a09a7f4b4cca895c325a5d4f5469d368ea95fcf81139c6f9b7a6ff98ebf58\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f5ee21f5ff34cf4f4fb65bbef37229a84cce97e7ae2c46f26b6b5356db04fa56\",\"dweb:/ipfs/Qmc5Lukprx5rxNq4om9uyJR1jiNVFMxQxbWQrpGuZhGtsW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol\":{\"keccak256\":\"0x3d1316d3c24f099fb364359085778d5e520dc1fd5377b0e2220dfbc00e179ae2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a1545ec71c26156470189d49ee027d265c67f4bcedab5dfc1e52ae1eb4d6b4e0\",\"dweb:/ipfs/QmNfBM6JAXbJYbzfBMb6mpuqvDiHZbQhDiyU1gXvzCzcb6\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol":{"IOptimismGasLimitProvider":{"abi":[{"inputs":[],"name":"getOptimismGasLimit","outputs":[{"internalType":"uint32","name":"gasLimit","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"gasLimit","type":"uint32"}],"name":"setOptimismGasLimit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getOptimismGasLimit()":"a0566e72","setOptimismGasLimit(uint32)":"bf5fa772"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getOptimismGasLimit\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"setOptimismGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol\":\"IOptimismGasLimitProvider\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol\":{\"keccak256\":\"0x1208fef15dbb96160469c256a19f69d7f7f4798882a3504252ad25f89e36afcb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://556fc28a88f4798c5dd23cb4b25d8640bb0175e85d6a3093ec185e1d096e2924\",\"dweb:/ipfs/QmTyxuE1mPRSbn6XHm52qcHj78QrMUpXNHUUF3ZdENtQXU\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol":{"IRewardTokenDistributor":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"add_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claim_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit_reward_token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"reward_data","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"period_finish","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"last_update","type":"uint256"},{"internalType":"uint256","name":"integral","type":"uint256"}],"internalType":"struct IRewardTokenDistributor.Reward","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"set_reward_distributor","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_reward(address,address)":"e8de0d4d","claim_rewards(address)":"84e9bd7e","claimable_reward(address,address)":"33fd6f74","claimable_reward_write(address,address)":"59b7e409","deposit_reward_token(address,uint256)":"93f7aa67","reward_data(address)":"48e9c65e","reward_tokens(uint256)":"54c49fe9","set_reward_distributor(address,address)":"058a3a24"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"add_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claim_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit_reward_token\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"reward_data\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"period_finish\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_update\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"integral\",\"type\":\"uint256\"}],\"internalType\":\"struct IRewardTokenDistributor.Reward\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"set_reward_distributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":\"IRewardTokenDistributor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol":{"IRewardsOnlyGauge":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"add_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claim_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit_reward_token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"streamer","type":"address"},{"internalType":"bytes32","name":"claimSignature","type":"bytes32"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"last_claim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lp_token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reward_contract","outputs":[{"internalType":"contract IChildChainStreamer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"reward_data","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"period_finish","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"last_update","type":"uint256"},{"internalType":"uint256","name":"integral","type":"uint256"}],"internalType":"struct IRewardTokenDistributor.Reward","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"set_reward_distributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"childChainStreamer","type":"address"},{"internalType":"bytes32","name":"claimSig","type":"bytes32"},{"internalType":"address[8]","name":"rewardTokens","type":"address[8]"}],"name":"set_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_reward(address,address)":"e8de0d4d","claim_rewards(address)":"84e9bd7e","claimable_reward(address,address)":"33fd6f74","claimable_reward_write(address,address)":"59b7e409","deposit_reward_token(address,uint256)":"93f7aa67","initialize(address,address,bytes32)":"6133f985","last_claim()":"3488bd19","lp_token()":"82c63066","reward_contract()":"bf88a6ff","reward_data(address)":"48e9c65e","reward_tokens(uint256)":"54c49fe9","set_reward_distributor(address,address)":"058a3a24","set_rewards(address,bytes32,address[8])":"47d2d5d3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"add_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claim_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit_reward_token\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"streamer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"claimSignature\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"last_claim\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lp_token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reward_contract\",\"outputs\":[{\"internalType\":\"contract IChildChainStreamer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"reward_data\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"period_finish\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_update\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"integral\",\"type\":\"uint256\"}],\"internalType\":\"struct IRewardTokenDistributor.Reward\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"set_reward_distributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"childChainStreamer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"claimSig\",\"type\":\"bytes32\"},{\"internalType\":\"address[8]\",\"name\":\"rewardTokens\",\"type\":\"address[8]\"}],\"name\":\"set_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol\":\"IRewardsOnlyGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\":{\"keccak256\":\"0x3cf2370032a789025cffe8d0c613274213fd4e1ceb88cef1c2b039a6d0d08261\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1788ecb804b061fa04678ce311020d66e25b201cf18d452ea290bbc9af12e504\",\"dweb:/ipfs/Qmf84ANUiZtoZHEsbymn7NSZSGikMovYZUVqiPHwVrbBPJ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol\":{\"keccak256\":\"0x8c09c3f372e07adf790d55607401dfa60d8ec2b591f39de772efdf887d965d11\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6cbfa8f8f004ec1cc00739f51bd00763d08600e0bf827c1be4cc21a4afb26874\",\"dweb:/ipfs/QmTxDYJA8y2cJdxHfCq6NLK812WGnxFehTF9bW4n8xa1zx\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol":{"ISmartWalletChecker":{"abi":[{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"check","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"check(address)":"c23697a8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"check\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":\"ISmartWalletChecker\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol":{"IStakelessGauge":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"},\"user_checkpoint(address)\":{\"notice\":\"Record a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":\"IStakelessGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol":{"IStakelessGaugeCheckpointer":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IStakelessGauge","name":"gauge","type":"address"},{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"}],"name":"GaugeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IStakelessGauge","name":"gauge","type":"address"},{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"}],"name":"GaugeRemoved","type":"event"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"addGauges","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"addGaugesWithVerifiedType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"checkpointAllGaugesAboveRelativeWeight","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string[]","name":"gaugeTypes","type":"string[]"},{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"checkpointGaugesOfTypesAboveRelativeWeight","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string[]","name":"gaugeTypes","type":"string[]"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"checkpointMultipleGauges","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"checkpointMultipleGaugesOfMatchingType","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge","name":"gauge","type":"address"}],"name":"checkpointSingleGauge","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getGaugeAdder","outputs":[{"internalType":"contract IGaugeAdder","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getGaugeAtIndex","outputs":[{"internalType":"contract IStakelessGauge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeTypes","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"gaugeTypes","type":"string[]"},{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"getGaugeTypesBridgeCost","outputs":[{"internalType":"uint256","name":"totalCost","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRoundedDownBlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge","name":"gauge","type":"address"}],"name":"getSingleBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"getTotalGauges","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge","name":"gauge","type":"address"}],"name":"hasGauge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"isValidGaugeType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"removeGauges","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addGauges(string,address[])":"f7178b88","addGaugesWithVerifiedType(string,address[])":"d8dba2ce","checkpointAllGaugesAboveRelativeWeight(uint256)":"804d17dc","checkpointGaugesOfTypesAboveRelativeWeight(string[],uint256)":"97510496","checkpointMultipleGauges(string[],address[])":"4a3a1e11","checkpointMultipleGaugesOfMatchingType(string,address[])":"43590308","checkpointSingleGauge(string,address)":"7d0a6616","getGaugeAdder()":"7c1fef51","getGaugeAtIndex(string,uint256)":"27cb2a3b","getGaugeTypes()":"afcb1a86","getGaugeTypesBridgeCost(string[],uint256)":"a9a7f87e","getRoundedDownBlockTimestamp()":"46583adf","getSingleBridgeCost(string,address)":"2adbe5ac","getTotalBridgeCost(uint256)":"27f79107","getTotalGauges(string)":"4db34d2a","hasGauge(string,address)":"c91be043","isValidGaugeType(string)":"16e772bc","removeGauges(string,address[])":"73ebd060"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"GaugeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"GaugeRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"addGauges\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"addGaugesWithVerifiedType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"checkpointAllGaugesAboveRelativeWeight\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"gaugeTypes\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"checkpointGaugesOfTypesAboveRelativeWeight\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"gaugeTypes\",\"type\":\"string[]\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"checkpointMultipleGauges\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"checkpointMultipleGaugesOfMatchingType\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"checkpointSingleGauge\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeAdder\",\"outputs\":[{\"internalType\":\"contract IGaugeAdder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getGaugeAtIndex\",\"outputs\":[{\"internalType\":\"contract IStakelessGauge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeTypes\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"gaugeTypes\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"getGaugeTypesBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRoundedDownBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"getSingleBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"getTotalGauges\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"hasGauge\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"isValidGaugeType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"removeGauges\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Supports gauge types registered in `GaugeAdder`. Gauges to be checkpointed need to be added to the controller beforehand.\",\"kind\":\"dev\",\"methods\":{\"addGauges(string,address[])\":{\"details\":\"Gauges added will be considered when performing checkpoints. The gauges to add should meet the following preconditions: - They must have been created in a valid `GaugeFactory`, according to `GaugeAdder#isGaugeFromValidFactory`. - They must exist in the `GaugeController`, according to `GaugeController#gauge_exists`. - They must not be killed. - They must not have been previously added to the checkpointer.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"gauges\":\"Gauges to add.\"}},\"addGaugesWithVerifiedType(string,address[])\":{\"details\":\"Gauges added will be considered when performing checkpoints. The gauges to add should meet the following preconditions: - They must exist in the GaugeController, according to GaugeController#gauge_exists. - They must not be killed. - They must not have been previously added to the checkpointer. Unlike `addGauges`, this function can add gauges that were created by factories registered in a deprecated `GaugeAdder`, and therefore cannot be validated by the current `GaugeAdder`.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"gauges\":\"Gauges to add.\"}},\"checkpointAllGaugesAboveRelativeWeight(uint256)\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getTotalBridgeCost` to determine the required amount of ETH for the execution to succeed.\",\"params\":{\"minRelativeWeight\":\"Threshold to filter out gauges below it.\"}},\"checkpointGaugesOfTypesAboveRelativeWeight(string[],uint256)\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getGaugeTypesBridgeCost` to determine the required amount of ETH for the execution to succeed. Reverts if invalid gauge types are given.\",\"params\":{\"gaugeTypes\":\"Types of the gauges to checkpoint.\",\"minRelativeWeight\":\"Threshold to filter out gauges below it.\"}},\"checkpointMultipleGauges(string[],address[])\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Reverts if the gauges were not added to the checkpointer beforehand, or if invalid gauge types are given. Reverts if the types array does not have the same length as the gauges array.\",\"params\":{\"gaugeTypes\":\"Types of the gauges to be checkpointed, in the same order as the gauges to be checkpointed.\",\"gauges\":\"Addresses of the gauges to checkpoint.\"}},\"checkpointMultipleGaugesOfMatchingType(string,address[])\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Reverts if the gauges were not added to the checkpointer beforehand, or if an invalid gauge type is given.\",\"params\":{\"gaugeType\":\"Type of the gauges to be checkpointed.\",\"gauges\":\"Addresses of the gauges to checkpoint.\"}},\"checkpointSingleGauge(string,address)\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getSingleBridgeCost` to determine the required amount of ETH for the execution to succeed. Reverts if the gauge was not added to the checkpointer beforehand.\",\"params\":{\"gauge\":\"Address of the gauge to checkpoint.\",\"gaugeType\":\"Type of the gauge.\"}},\"getGaugeAtIndex(string,uint256)\":{\"details\":\"Reverts if the index is greater than or equal to the amount of added gauges for the given type.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"index\":\"- Index of the added gauge.\"}},\"getGaugeTypesBridgeCost(string[],uint256)\":{\"details\":\"A lower minimum relative weight might return higher costs, since more gauges could potentially be included in the checkpoint. Reverts for invalid gauge types.\",\"params\":{\"gaugeTypes\":\"Types of the gauges.\",\"minRelativeWeight\":\"Minimum relative weight filter: gauges below this value do not add to the bridge cost.\"}},\"getSingleBridgeCost(string,address)\":{\"details\":\"Reverts if the gauge was not added to the checkpointer beforehand, or if the gauge type is invalid.\",\"params\":{\"gauge\":\"Address of the gauge to check the bridge costs.\",\"gaugeType\":\"Type of the gauge.\"}},\"getTotalBridgeCost(uint256)\":{\"details\":\"A lower minimum relative weight might return higher costs, since more gauges could potentially be included in the checkpoint.\",\"params\":{\"minRelativeWeight\":\"Minimum relative weight filter: gauges below this value do not add to the bridge cost.\"}},\"getTotalGauges(string)\":{\"params\":{\"gaugeType\":\"Type of the gauge.\"}},\"hasGauge(string,address)\":{\"params\":{\"gauge\":\"Gauge to check.\",\"gaugeType\":\"Type of the gauge.\"}},\"removeGauges(string,address[])\":{\"details\":\"Removed gauges will not be considered when performing checkpoints. To remove gauges: - They must be killed. - They must have been previously added to the checkpointer.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"gauges\":\"Gauges to remove.\"}}},\"title\":\"Stakeless Gauge Checkpointer interface\",\"version\":1},\"userdoc\":{\"events\":{\"GaugeAdded(address,string,string)\":{\"notice\":\"Emitted when a gauge is added to the checkpointer.\"},\"GaugeRemoved(address,string,string)\":{\"notice\":\"Emitted when a gauge is removed from the checkpointer.\"}},\"kind\":\"user\",\"methods\":{\"addGauges(string,address[])\":{\"notice\":\"Adds an array of gauges from the given type.\"},\"addGaugesWithVerifiedType(string,address[])\":{\"notice\":\"Adds an array of gauges from the given type. This is a permissioned function.\"},\"checkpointAllGaugesAboveRelativeWeight(uint256)\":{\"notice\":\"Performs a checkpoint for all added gauges above the given relative weight threshold.\"},\"checkpointGaugesOfTypesAboveRelativeWeight(string[],uint256)\":{\"notice\":\"Performs a checkpoint for all added gauges above the given relative weight threshold for the given types.\"},\"checkpointMultipleGauges(string[],address[])\":{\"notice\":\"Performs a checkpoint for a multiple added gauges of the given types.\"},\"checkpointMultipleGaugesOfMatchingType(string,address[])\":{\"notice\":\"Performs a checkpoint for a multiple added gauges of the given types.\"},\"checkpointSingleGauge(string,address)\":{\"notice\":\"Performs a checkpoint for a single added gauge of a given type.\"},\"getGaugeAdder()\":{\"notice\":\"Returns `GaugeAdder` contract.\"},\"getGaugeAtIndex(string,uint256)\":{\"notice\":\"Returns the gauge of a given type at the given index.\"},\"getGaugeTypes()\":{\"notice\":\"Returns gauge types available in the checkpointer.\"},\"getGaugeTypesBridgeCost(string[],uint256)\":{\"notice\":\"Returns the ETH cost to checkpoint all gauges from the given types.\"},\"getRoundedDownBlockTimestamp()\":{\"notice\":\"Returns the timestamp corresponding to the start of the previous week of the current block.\"},\"getSingleBridgeCost(string,address)\":{\"notice\":\"Returns the ETH cost to checkpoint a single given gauge.\"},\"getTotalBridgeCost(uint256)\":{\"notice\":\"Returns the ETH cost to checkpoint all gauges for a given minimum relative weight.\"},\"getTotalGauges(string)\":{\"notice\":\"Returns the amount of added gauges for a given type.\"},\"hasGauge(string,address)\":{\"notice\":\"Returns true if the given gauge was added for the given type; false otherwise.\"},\"isValidGaugeType(string)\":{\"notice\":\"Returns true if gauge type is valid; false otherwise.\"},\"removeGauges(string,address[])\":{\"notice\":\"Removes an array of gauges from the given type.\"}},\"notice\":\"Manages checkpoints for L2 and mainnet stakeless root gauges, allowing to perform mutiple checkpoints in a single call.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol\":\"IStakelessGaugeCheckpointer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x25b2a2ad63f9aa59c45f1a81a2f79733b8dcdce268cc9b1ac03866396f4b0d17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://efe9f30e6cab81587b738089165050d35533926703f4ad1da0f86452a69874ce\",\"dweb:/ipfs/QmcJoNP8NAEefchpG3qs3CwMw1qhxBJTgBMY4KY6g6qfUa\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol\":{\"keccak256\":\"0x50d40373e50d13566dbb624ac65494f70835aa52ff553e1185df480feae6ecd8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6038ec50171ea847ca9aeeec4af6e9721bcba35223d364f832da5f269e8a722\",\"dweb:/ipfs/QmdvyixjrpFud1kAS8un3wje2xUjrY82BRL7sUHqKvLJq2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol\":{\"keccak256\":\"0x09ff99f18e34cb0c794c080694581755503db45d8486bead830ec32dc1471226\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://620fbf404a1fd3ee079562de30b56d018bdef1aeb3e060fc73c31dc0e9ea0162\",\"dweb:/ipfs/QmeXPa87gfhbCa2y5XugFCC47Ea5aPLEsZuAaQMa7o8YXX\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol":{"IStakingLiquidityGauge":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"add_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claim_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit_reward_token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lpToken","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lp_token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"reward_data","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"period_finish","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"last_update","type":"uint256"},{"internalType":"uint256","name":"integral","type":"uint256"}],"internalType":"struct IRewardTokenDistributor.Reward","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"set_reward_distributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_reward(address,address)":"e8de0d4d","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","claim_rewards(address)":"84e9bd7e","claimable_reward(address,address)":"33fd6f74","claimable_reward_write(address,address)":"59b7e409","deposit(uint256,address)":"6e553f65","deposit_reward_token(address,uint256)":"93f7aa67","getCappedRelativeWeight(uint256)":"14e956f5","getRelativeWeightCap()":"83f5c39b","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","lp_token()":"82c63066","reward_data(address)":"48e9c65e","reward_tokens(uint256)":"54c49fe9","setRelativeWeightCap(uint256)":"10d3eb04","set_reward_distributor(address,address)":"058a3a24","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"add_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claim_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit_reward_token\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lpToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lp_token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"reward_data\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"period_finish\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_update\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"integral\",\"type\":\"uint256\"}],\"internalType\":\"struct IRewardTokenDistributor.Reward\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"set_reward_distributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"},\"user_checkpoint(address)\":{\"notice\":\"Record a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":\"IStakingLiquidityGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol":{"IVeDelegation":{"abi":[{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"adjusted_balance_of","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"adjusted_balance_of(address)":"bbf7408a","totalSupply()":"18160ddd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"adjusted_balance_of\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\":\"IVeDelegation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\":{\"keccak256\":\"0xd4ebf4ceca6fa99ec2149d60b36084674621ae87e8a7786b23501749da8cc581\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7dd20ed7be933a3d8ec0be284b8f7f123e69ecb29731e35f70c371eb4f5e26c8\",\"dweb:/ipfs/QmfPp5sBxn92hg32fPFTDBB5kuHP9qU4jN3bSfip8uCnQ6\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol":{"IVotingEscrow":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"contract IAuthorizerAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"apply_smart_wallet_checker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSmartWalletChecker","type":"address"}],"name":"commit_smart_wallet_checker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"locked__end","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"point_history","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"smart_wallet_checker","outputs":[{"internalType":"contract ISmartWalletChecker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_point_epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"user_point_history","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"admin()":"f851a440","allowance(address,address)":"dd62ed3e","apply_smart_wallet_checker()":"8e5b490f","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOf(address,uint256)":"00fdd58e","checkpoint()":"c2c4c5c1","commit_smart_wallet_checker(address)":"57f901e2","epoch()":"900cf0cf","locked__end(address)":"adc63589","point_history(uint256)":"d1febfb9","smart_wallet_checker()":"7175d4f7","totalSupply()":"18160ddd","totalSupply(uint256)":"bd85b039","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","user_point_epoch(address)":"010ae757","user_point_history(address,uint256)":"28d09d47"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"apply_smart_wallet_checker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newSmartWalletChecker\",\"type\":\"address\"}],\"name\":\"commit_smart_wallet_checker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"locked__end\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"point_history\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"smart_wallet_checker\",\"outputs\":[{\"internalType\":\"contract ISmartWalletChecker\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_point_epoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"user_point_history\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":\"IVotingEscrow\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol":{"IVotingEscrowRemapper":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"localUser","type":"address"},{"indexed":true,"internalType":"address","name":"delegate","type":"address"}],"name":"AddressDelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"localUser","type":"address"},{"indexed":true,"internalType":"address","name":"remoteUser","type":"address"},{"indexed":true,"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"AddressMappingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"remoteUser","type":"address"},{"indexed":true,"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"RemoteAddressMappingCleared","type":"event"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"clearNetworkRemapping","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"remoteUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"getLocalUser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getLockedEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOmniVotingEscrowAdaptor","outputs":[{"internalType":"contract IOmniVotingEscrowAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"}],"name":"getRemappingManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"getRemoteUser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalSupplyPoint","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserPoint","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"address","name":"remoteUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"setNetworkRemapping","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"setNetworkRemappingManager","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"clearNetworkRemapping(address,uint16)":"76601a18","getLocalUser(address,uint16)":"70d1bd17","getLockedEnd(address)":"3e7df7c8","getOmniVotingEscrowAdaptor()":"5e5543be","getRemappingManager(address)":"ee98b1e7","getRemoteUser(address,uint16)":"bda75c38","getTotalSupplyPoint()":"f6f4a332","getUserPoint(address)":"71628bfd","getVotingEscrow()":"08b0308a","setNetworkRemapping(address,address,uint16)":"21861fde","setNetworkRemappingManager(address,address)":"a9f3f44e"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"AddressDelegateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"AddressMappingUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"RemoteAddressMappingCleared\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"clearNetworkRemapping\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"getLocalUser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getLockedEnd\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOmniVotingEscrowAdaptor\",\"outputs\":[{\"internalType\":\"contract IOmniVotingEscrowAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"}],\"name\":\"getRemappingManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"getRemoteUser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalSupplyPoint\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserPoint\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"setNetworkRemapping\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"setNetworkRemappingManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"For each network (chainId), we maintain a mapping between local (Ethereum) and remote (L2) addresses. This contract remaps balance queries on remote network addresses to their corresponding local addresses. Users able to call this contract can set their own mappings, or delegate this function to another account if they cannot.\",\"kind\":\"dev\",\"methods\":{\"clearNetworkRemapping(address,uint16)\":{\"details\":\"This is intended to discourage and also allow recovery from griefing attacks. If griefing occurs then the griefer can be removed from Smart Wallet Checker and have their remappings erased. The local user can always clear their own mapping, regardless the state of the Smart Wallet Checker.\",\"params\":{\"chainId\":\"- The chain id of the network to erase.\",\"localUser\":\"- The address of the local user to erase.\"}},\"getLocalUser(address,uint16)\":{\"details\":\"Returns `address(0)` if the remapping does not exist for the given remote user.\",\"params\":{\"chainId\":\"- The chain ID of the remote network.\",\"remoteUser\":\"- Address of the user on the remote chain corresponding to the local address.\"}},\"getLockedEnd(address)\":{\"details\":\"The returned value is taken directly from the voting escrow.\"},\"getRemappingManager(address)\":{\"params\":{\"localUser\":\"- Address of the user on the local chain with a remapping manager.\"}},\"getRemoteUser(address,uint16)\":{\"details\":\"Returns `address(0)` if the remapping does not exist for the given local user.\",\"params\":{\"chainId\":\"- The chain ID of the remote network.\",\"localUser\":\"- Address of the user on the local chain corresponding to the remote address.\"}},\"getTotalSupplyPoint()\":{\"details\":\"We return the total supply as a Point to allow extrapolating this into the future. Note that this extrapolation will become invalid when crossing weeks, since we're not taking into account veBAL locks that expire then.\"},\"getUserPoint(address)\":{\"details\":\"We return the balance as a Point to allow extrapolating this into the future.\"},\"setNetworkRemapping(address,address,uint16)\":{\"details\":\"In order to set up a remapping on this contract, `localUser` must be a smart contract which has been allowlisted to hold veBAL. EOAs are expected to set up any delegation of their veBAL on L2s directly.\",\"params\":{\"chainId\":\"- The chain id of the remote chain on which `remoteUser` resides.\",\"localUser\":\"- The address of a contract allowlisted on the `SmartWalletChecker`.\",\"remoteUser\":\"- The address to receive `localUser`'s balance of veBAL on the remote chain.\"}},\"setNetworkRemappingManager(address,address)\":{\"details\":\"This is intended to handle contracts which cannot interact with this contract directly.\",\"params\":{\"delegate\":\"- The address which is allowed to manage remote users to be linked to `localUser`.\",\"localUser\":\"- The address of a contract allowlisted on the `SmartWalletChecker`.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"clearNetworkRemapping(address,uint16)\":{\"notice\":\"Clears a local user's mapping for a particular network.\"},\"getLocalUser(address,uint16)\":{\"notice\":\"Returns the local user corresponding to an address on a remote chain.\"},\"getLockedEnd(address)\":{\"notice\":\"Get timestamp when `user`'s lock finishes.\"},\"getOmniVotingEscrowAdaptor()\":{\"notice\":\"Returns Omni Voting Escrow Adaptor contract address, which interfaces with the gateway to bridge veBAL balances to L2s.\"},\"getRemappingManager(address)\":{\"notice\":\"Gets the account that can set a remapping for a given local user.\"},\"getRemoteUser(address,uint16)\":{\"notice\":\"Returns the remote user corresponding to an address on the local chain.\"},\"getTotalSupplyPoint()\":{\"notice\":\"Returns the current total supply of veBAL as a Point.\"},\"getUserPoint(address)\":{\"notice\":\"Returns a user's current veBAL balance as a Point. Note that we don't apply any remappings in this query. The returned value is taken directly from the voting escrow.\"},\"getVotingEscrow()\":{\"notice\":\"Returns Voting Escrow contract address.\"},\"setNetworkRemapping(address,address,uint16)\":{\"notice\":\"Sets up a mapping from `localUser`'s veBAL balance to `remoteUser` for chain `chainId`.\"},\"setNetworkRemappingManager(address,address)\":{\"notice\":\"Sets an address to manage the mapping for a given local user on their behalf.\"}},\"notice\":\"This contract allows veBAL holders on Ethereum to assign their balance to designated addresses on each L2. This is intended for smart contracts that are not deployed to the same address on all networks. EOA's are expected to either use the same address, or manage delegation on L2 networks themselves.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol\":\"IVotingEscrowRemapper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol\":{\"keccak256\":\"0xd3a86f1eb7aadba25221c8935ae888816487ea6ba4d04c3a5f4789d7b061ac90\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ca65ef1eebc274a1b28abee0d1514f4c18334583c13e39672a80201f0481304f\",\"dweb:/ipfs/QmSs5kDN8rGfbCmkQihP1uUbTtAc9wfSzSuPTpp6dErVWk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol\":{\"keccak256\":\"0x357cb8cbb0bb993b47725e25f19af79410e289c368ef29a7a5effbead655c4ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9c9742ce6bf697f8083621b91f63b1f3232b571232dc8c56d5444e59cb7f0fe9\",\"dweb:/ipfs/QmRqTLCZ6vBjhbqVySxqeWXMpyULKZYTsDKHgvfGN3cz2y\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol":{"Errors":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad732bec7ee0141d291da266d1fa87f23aa8562af21d6abb73ad7a770e108cce64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD PUSH20 0x2BEC7EE0141D291DA266D1FA87F23AA8562AF21D PUSH11 0xBB73AD7A770E108CCE6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"5072:10023:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad732bec7ee0141d291da266d1fa87f23aa8562af21d6abb73ad7a770e108cce64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD PUSH20 0x2BEC7EE0141D291DA266D1FA87F23AA8562AF21D PUSH11 0xBB73AD7A770E108CCE6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"5072:10023:31:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":\"Errors\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"IAuthentication":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":\"IAuthentication\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol":{"IOptionalOnlyCaller":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"OnlyCallerOptIn","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isOnlyCallerEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setOnlyCallerCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"setOnlyCallerCheckWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"isOnlyCallerEnabled(address)":"a1648aa5","setOnlyCallerCheck(bool)":"e811f44b","setOnlyCallerCheckWithSignature(address,bool,bytes)":"fcaa54ee"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"OnlyCallerOptIn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isOnlyCallerEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setOnlyCallerCheck\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"setOnlyCallerCheckWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the OptionalOnlyCaller helper, used to opt in to a caller verification for a given address to methods that are otherwise callable by any address.\",\"events\":{\"OnlyCallerOptIn(address,bool)\":{\"details\":\"Emitted every time setOnlyCallerCheck is called.\"}},\"kind\":\"dev\",\"methods\":{\"isOnlyCallerEnabled(address)\":{\"details\":\"Returns true if caller verification is enabled for the given user, false otherwise.\"},\"setOnlyCallerCheck(bool)\":{\"details\":\"Enables / disables verification mechanism for caller.\",\"params\":{\"enabled\":\"- True if caller verification shall be enabled, false otherwise.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol\":\"IOptionalOnlyCaller\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol\":{\"keccak256\":\"0x7bab0494ee39fb988722edd20b3e5ff747b4acfe93a62d0726c5d63ae3f6e472\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://23e1d154f2fa589cbfa51338c285cf1862edcd6172fdbb26db17a6fcf9581ee2\",\"dweb:/ipfs/Qmbu8wgFjYqZvvv84MKbLiHMSKv3THZuFHCjRchPHLjCdY\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol":{"ISignaturesValidator":{"abi":[{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the SignatureValidator helper, used to support meta-transactions.\",\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getNextNonce(address)\":{\"details\":\"Returns the next nonce used by an address to sign messages.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":\"ISignaturesValidator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol":{"ITemporarilyPausable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStateChanged","type":"event"},{"inputs":[],"name":"getPausedState","outputs":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint256","name":"pauseWindowEndTime","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodEndTime","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getPausedState()":"1c0de051"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStateChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the TemporarilyPausable helper.\",\"events\":{\"PausedStateChanged(bool)\":{\"details\":\"Emitted every time the pause state changes by `_setPaused`.\"}},\"kind\":\"dev\",\"methods\":{\"getPausedState()\":{\"details\":\"Returns the current paused state.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":\"ITemporarilyPausable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol":{"IVersion":{"abi":[{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"version()\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple interface to retrieve the version of a deployed contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":\"IVersion\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"IWETH":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","deposit()":"d0e30db0","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for WETH9. See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":\"IWETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol":{"IERC1271":{"abi":[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC1271 standard signature validation method for contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"Should return whether the signature provided is valid for the provided data\",\"params\":{\"hash\":\"Hash of the data to be signed\",\"signature\":\"Signature byte array associated with _data\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol\":{\"keccak256\":\"0xf82dab09a38bfdaf0983b69829de462c62359bc0bfaa37c4447408d93bd367c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d0172b678ca594e95b7e5d881fd1280b3792052861ca98d77fa6194b524d188\",\"dweb:/ipfs/QmZ3bYEGTrfruXNYAzuFjJeg9Hx6UQw8ZyBzyM72BVGXfT\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol":{"IERC20Permit":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over `owner`'s tokens, given `owner`'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol":{"IAsset":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like types. This concept is unrelated to a Pool's Asset Managers.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":\"IAsset\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol":{"IAuthorizer":{"abi":[{"inputs":[{"internalType":"bytes32","name":"actionId","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"where","type":"address"}],"name":"canPerform","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"canPerform(bytes32,address,address)":"9be2a884"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"actionId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"canPerform\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"canPerform(bytes32,address,address)\":{\"details\":\"Returns true if `account` can perform the action described by `actionId` in the contract `where`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":\"IAuthorizer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol":{"IFlashLoanRecipient":{"abi":[{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"receiveFlashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"receiveFlashLoan(address[],uint256[],uint256[],bytes)":"f04f2707"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"receiveFlashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"receiveFlashLoan(address[],uint256[],uint256[],bytes)\":{\"details\":\"When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient. At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the Vault, or else the entire flash loan will revert. `userData` is the same value passed in the `IVault.flashLoan` call.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":\"IFlashLoanRecipient\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol":{"IProtocolFeesCollector":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newFlashLoanFeePercentage","type":"uint256"}],"name":"FlashLoanFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newSwapFeePercentage","type":"uint256"}],"name":"SwapFeePercentageChanged","type":"event"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"getCollectedFeeAmounts","outputs":[{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFlashLoanFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFlashLoanFeePercentage","type":"uint256"}],"name":"setFlashLoanFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapFeePercentage","type":"uint256"}],"name":"setSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawCollectedFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getAuthorizer()":"aaabadc5","getCollectedFeeAmounts(address[])":"e42abf35","getFlashLoanFeePercentage()":"d877845c","getSwapFeePercentage()":"55c67628","setFlashLoanFeePercentage(uint256)":"6b6b9f69","setSwapFeePercentage(uint256)":"38e9922e","vault()":"fbfa77cf","withdrawCollectedFees(address[],uint256[],address)":"6daefab6"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFlashLoanFeePercentage\",\"type\":\"uint256\"}],\"name\":\"FlashLoanFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getCollectedFeeAmounts\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFlashLoanFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setFlashLoanFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawCollectedFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":\"IProtocolFeesCollector\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol":{"IVault":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"AuthorizerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ExternalBalanceTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IFlashLoanRecipient","name":"recipient","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeAmount","type":"uint256"}],"name":"FlashLoan","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"int256","name":"delta","type":"int256"}],"name":"InternalBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"indexed":false,"internalType":"int256[]","name":"deltas","type":"int256[]"},{"indexed":false,"internalType":"uint256[]","name":"protocolFeeAmounts","type":"uint256[]"}],"name":"PoolBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"assetManager","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"int256","name":"cashDelta","type":"int256"},{"indexed":false,"internalType":"int256","name":"managedDelta","type":"int256"}],"name":"PoolBalanceManaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"poolAddress","type":"address"},{"indexed":false,"internalType":"enum IVault.PoolSpecialization","name":"specialization","type":"uint8"}],"name":"PoolRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayer","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"RelayerApprovalChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"TokensDeregistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"indexed":false,"internalType":"address[]","name":"assetManagers","type":"address[]"}],"name":"TokensRegistered","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"batchSwap","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"deregisterTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"}],"name":"exitPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IFlashLoanRecipient","name":"recipient","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"flashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"getInternalBalance","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPausedState","outputs":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint256","name":"pauseWindowEndTime","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodEndTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getPool","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"enum IVault.PoolSpecialization","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getPoolTokenInfo","outputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"managed","type":"uint256"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"address","name":"assetManager","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getPoolTokens","outputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeesCollector","outputs":[{"internalType":"contract IProtocolFeesCollector","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"relayer","type":"address"}],"name":"hasApprovedRelayer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"}],"name":"joinPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.PoolBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IVault.PoolBalanceOp[]","name":"ops","type":"tuple[]"}],"name":"managePoolBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.UserBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}],"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]"}],"name":"manageUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"queryBatchSwap","outputs":[{"internalType":"int256[]","name":"assetDeltas","type":"int256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IVault.PoolSpecialization","name":"specialization","type":"uint8"}],"name":"registerPool","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"assetManagers","type":"address[]"}],"name":"registerTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"setAuthorizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"WETH()":"ad5c4648","batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256)":"945bcec9","deregisterTokens(bytes32,address[])":"7d3aeb96","exitPool(bytes32,address,address,(address[],uint256[],bytes,bool))":"8bdb3913","flashLoan(address,address[],uint256[],bytes)":"5c38449e","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDomainSeparator()":"ed24911d","getInternalBalance(address,address[])":"0f5a6efa","getNextNonce(address)":"90193b7c","getPausedState()":"1c0de051","getPool(bytes32)":"f6c00927","getPoolTokenInfo(bytes32,address)":"b05f8e48","getPoolTokens(bytes32)":"f94d4668","getProtocolFeesCollector()":"d2946c2b","hasApprovedRelayer(address,address)":"fec90d72","joinPool(bytes32,address,address,(address[],uint256[],bytes,bool))":"b95cac28","managePoolBalance((uint8,bytes32,address,uint256)[])":"e6c46092","manageUserBalance((uint8,address,uint256,address,address)[])":"0e8e3e84","queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))":"f84d066e","registerPool(uint8)":"09b2760f","registerTokens(bytes32,address[],address[])":"66a9c7d2","setAuthorizer(address)":"058a628f","setPaused(bool)":"16c38b3c","setRelayerApproval(address,address,bool)":"fa6e671d","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)":"52bbbe29"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ExternalBalanceTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IFlashLoanRecipient\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"InternalBalanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"deltas\",\"type\":\"int256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"protocolFeeAmounts\",\"type\":\"uint256[]\"}],\"name\":\"PoolBalanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assetManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"cashDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"managedDelta\",\"type\":\"int256\"}],\"name\":\"PoolBalanceManaged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"poolAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IVault.PoolSpecialization\",\"name\":\"specialization\",\"type\":\"uint8\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"RelayerApprovalChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"TokensDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"assetManagers\",\"type\":\"address[]\"}],\"name\":\"TokensRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"contract IWETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"batchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"deregisterTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IFlashLoanRecipient\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getInternalBalance\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"enum IVault.PoolSpecialization\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolTokenInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"managed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"assetManager\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesCollector\",\"outputs\":[{\"internalType\":\"contract IProtocolFeesCollector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"hasApprovedRelayer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.PoolBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IVault.PoolBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"}],\"name\":\"managePoolBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"queryBatchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"assetDeltas\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.PoolSpecialization\",\"name\":\"specialization\",\"type\":\"uint8\"}],\"name\":\"registerPool\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"assetManagers\",\"type\":\"address[]\"}],\"name\":\"registerTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"setAuthorizer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Full external interface for the Vault core contract - no external or public methods exist in the contract that don't override one of these declarations.\",\"events\":{\"AuthorizerChanged(address)\":{\"details\":\"Emitted when a new authorizer is set by `setAuthorizer`.\"},\"ExternalBalanceTransfer(address,address,address,uint256)\":{\"details\":\"Emitted when a user's Vault ERC20 allowance is used by the Vault to transfer tokens to an external account.\"},\"FlashLoan(address,address,uint256,uint256)\":{\"details\":\"Emitted for each individual flash loan performed by `flashLoan`.\"},\"InternalBalanceChanged(address,address,int256)\":{\"details\":\"Emitted when a user's Internal Balance changes, either from calls to `manageUserBalance`, or through interacting with Pools using Internal Balance. Because Internal Balance works exclusively with ERC20 tokens, ETH deposits and withdrawals will use the WETH address.\"},\"PoolBalanceChanged(bytes32,address,address[],int256[],uint256[])\":{\"details\":\"Emitted when a user joins or exits a Pool by calling `joinPool` or `exitPool`, respectively.\"},\"PoolBalanceManaged(bytes32,address,address,int256,int256)\":{\"details\":\"Emitted when a Pool's token Asset Manager alters its balance via `managePoolBalance`.\"},\"PoolRegistered(bytes32,address,uint8)\":{\"details\":\"Emitted when a Pool is registered by calling `registerPool`.\"},\"RelayerApprovalChanged(address,address,bool)\":{\"details\":\"Emitted every time a relayer is approved or disapproved by `setRelayerApproval`.\"},\"Swap(bytes32,address,address,uint256,uint256)\":{\"details\":\"Emitted for each individual swap performed by `swap` or `batchSwap`.\"},\"TokensDeregistered(bytes32,address[])\":{\"details\":\"Emitted when a Pool deregisters tokens by calling `deregisterTokens`.\"},\"TokensRegistered(bytes32,address[],address[])\":{\"details\":\"Emitted when a Pool registers tokens by calling `registerTokens`.\"}},\"kind\":\"dev\",\"methods\":{\"WETH()\":{\"details\":\"Returns the Vault's WETH instance.\"},\"batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256)\":{\"details\":\"Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either the amount of tokens sent to or received from the Pool, depending on the `kind` value. Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at the same index in the `assets` array. Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or `amountOut` depending on the swap kind. Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`. The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses, or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to or unwrapped from WETH by the Vault. Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies the minimum or maximum amount of each token the vault is allowed to transfer. `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the equivalent `swap` call. Emits `Swap` events.\"},\"deregisterTokens(bytes32,address[])\":{\"details\":\"Deregisters `tokens` for the `poolId` Pool. Must be called by the Pool's contract. Only registered tokens (via `registerTokens`) can be deregistered. Additionally, they must have zero total balance. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens must be deregistered in the same `deregisterTokens` call. A deregistered token can be re-registered later on, possibly with a different Asset Manager. Emits a `TokensDeregistered` event.\"},\"exitPool(bytes32,address,address,(address[],uint256[],bytes,bool))\":{\"details\":\"Called by users to exit a Pool, which transfers tokens from the Pool's balance to `recipient`. This will trigger custom Pool behavior, which will typically ask for something in return from `sender` - often tokenized Pool shares. The amount of tokens that can be withdrawn is limited by the Pool's `cash` balance (see `getPoolTokenInfo`). If the caller is not `sender`, it must be an authorized relayer for them. The `tokens` and `minAmountsOut` arrays must have the same length, and each entry in these indicates the minimum token amount to receive for each token contract. The amounts to send are decided by the Pool and not the Vault: it just enforces these minimums. If exiting a Pool that holds WETH, it is possible to receive ETH directly: the Vault will do the unwrapping. To enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the WETH address. Note that it is not possible to combine ETH and WETH in the same exit. `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when interacting with Pools that register and deregister tokens frequently. If receiving ETH however, the array must be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final `assets` array might not be sorted. Pools with no registered tokens cannot be exited. If `toInternalBalance` is true, the tokens will be deposited to `recipient`'s Internal Balance. Otherwise, an ERC20 transfer will be performed. Note that ETH cannot be deposited to Internal Balance: attempting to do so will trigger a revert. `minAmountsOut` is the minimum amount of tokens the user expects to get out of the Pool, for each token in the `tokens` array. This array must match the Pool's registered tokens. This causes the Vault to call the `IBasePool.onExitPool` hook on the Pool's contract, where Pools implement their own custom logic. This typically requires additional information from the user (such as the expected number of Pool shares to return). This can be encoded in the `userData` argument, which is ignored by the Vault and passed directly to the Pool's contract. Emits a `PoolBalanceChanged` event.\"},\"flashLoan(address,address[],uint256[],bytes)\":{\"details\":\"Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it, and then reverting unless the tokens plus a proportional protocol fee have been returned. The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount for each token contract. `tokens` must be sorted in ascending order. The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the `receiveFlashLoan` call. Emits `FlashLoan` events.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAuthorizer()\":{\"details\":\"Returns the Vault's Authorizer.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getInternalBalance(address,address[])\":{\"details\":\"Returns `user`'s Internal Balance for a set of tokens.\"},\"getNextNonce(address)\":{\"details\":\"Returns the next nonce used by an address to sign messages.\"},\"getPausedState()\":{\"details\":\"Returns the current paused state.\"},\"getPool(bytes32)\":{\"details\":\"Returns a Pool's contract address and specialization setting.\"},\"getPoolTokenInfo(bytes32,address)\":{\"details\":\"Returns detailed information for a Pool's registered token. `cash` is the number of tokens the Vault currently holds for the Pool. `managed` is the number of tokens withdrawn and held outside the Vault by the Pool's token Asset Manager. The Pool's total balance for `token` equals the sum of `cash` and `managed`. Internally, `cash` and `managed` are stored using 112 bits. No action can ever cause a Pool's token `cash`, `managed` or `total` balance to be greater than 2^112 - 1. `lastChangeBlock` is the number of the block in which `token`'s total balance was last modified (via either a join, exit, swap, or Asset Manager update). This value is useful to avoid so-called 'sandwich attacks', for example when developing price oracles. A change of zero (e.g. caused by a swap with amount zero) is considered a change for this purpose, and will update `lastChangeBlock`. `assetManager` is the Pool's token Asset Manager.\"},\"getPoolTokens(bytes32)\":{\"details\":\"Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of the tokens' `balances` changed. The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order. If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same order as passed to `registerTokens`. Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo` instead.\"},\"getProtocolFeesCollector()\":{\"details\":\"Returns the current protocol fee module.\"},\"hasApprovedRelayer(address,address)\":{\"details\":\"Returns true if `user` has approved `relayer` to act as a relayer for them.\"},\"joinPool(bytes32,address,address,(address[],uint256[],bytes,bool))\":{\"details\":\"Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized Pool shares. If the caller is not `sender`, it must be an authorized relayer for them. The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces these maximums. If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent back to the caller (not the sender, which is important for relayers). `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final `assets` array might not be sorted. Pools with no registered tokens cannot be joined. If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be withdrawn from Internal Balance: attempting to do so will trigger a revert. This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement their own custom logic. This typically requires additional information from the user (such as the expected number of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed directly to the Pool's contract, as is `recipient`. Emits a `PoolBalanceChanged` event.\"},\"managePoolBalance((uint8,bytes32,address,uint256)[])\":{\"details\":\"Performs a set of Pool balance operations, which may be either withdrawals, deposits or updates. Pool Balance management features batching, which means a single contract call can be used to perform multiple operations of different kinds, with different Pools and tokens, at once. For each operation, the caller must be registered as the Asset Manager for `token` in `poolId`.\"},\"manageUserBalance((uint8,address,uint256,address,address)[])\":{\"details\":\"Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer) and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as it lets integrators reuse a user's Vault allowance. For each operation, if the caller is not `sender`, it must be an authorized relayer for them.\"},\"queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))\":{\"details\":\"Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result. Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH) the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it receives are the same that an equivalent `batchSwap` call would receive. Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct. This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens, approve them for the Vault, or even know a user's address. Note that this function is not 'view' (due to implementation details): the client code must explicitly execute eth_call instead of eth_sendTransaction.\"},\"registerPool(uint8)\":{\"details\":\"Registers the caller account as a Pool with a given specialization setting. Returns the Pool's ID, which is used in all Pool-related functions. Pools cannot be deregistered, nor can the Pool's specialization be changed. The caller is expected to be a smart contract that implements either `IGeneralPool` or `IMinimalSwapInfoPool`, depending on the chosen specialization setting. This contract is known as the Pool's contract. Note that the same contract may register itself as multiple Pools with unique Pool IDs, or in other words, multiple Pools may share the same contract. Emits a `PoolRegistered` event.\"},\"registerTokens(bytes32,address[],address[])\":{\"details\":\"Registers `tokens` for the `poolId` Pool. Must be called by the Pool's contract. Pools can only interact with tokens they have registered. Users join a Pool by transferring registered tokens, exit by receiving registered tokens, and can only swap registered tokens. Each token can only be registered once. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens must be registered in the same `registerTokens` call, and they must be sorted in ascending order. The `tokens` and `assetManagers` arrays must have the same length, and each entry in these indicates the Asset Manager for the corresponding token. Asset Managers can manage a Pool's tokens via `managePoolBalance`, depositing and withdrawing them directly, and can even set their balance to arbitrary amounts. They are therefore expected to be highly secured smart contracts with sound design principles, and the decision to register an Asset Manager should not be made lightly. Pools can choose not to assign an Asset Manager to a given token by passing in the zero address. Once an Asset Manager is set, it cannot be changed except by deregistering the associated token and registering again with a different Asset Manager. Emits a `TokensRegistered` event.\"},\"setAuthorizer(address)\":{\"details\":\"Sets a new Authorizer for the Vault. The caller must be allowed by the current Authorizer to do this. Emits an `AuthorizerChanged` event.\"},\"setPaused(bool)\":{\"details\":\"Safety mechanism to pause most Vault operations in the event of an emergency - typically detection of an error in some part of the system. The Vault can only be paused during an initial time period, after which pausing is forever disabled. While the contract is paused, the following features are disabled: - depositing and transferring internal balance - transferring external balance (using the Vault's allowance) - swaps - joining Pools - Asset Manager interactions Internal Balance can still be withdrawn, and Pools exited.\"},\"setRelayerApproval(address,address,bool)\":{\"details\":\"Allows `relayer` to act as a relayer for `sender` if `approved` is true, and disallows it otherwise. Emits a `RelayerApprovalChanged` event.\"},\"swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)\":{\"details\":\"Performs a swap with a single Pool. If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens taken from the Pool, which must be greater than or equal to `limit`. If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens sent to the Pool, which must be less than or equal to `limit`. Internal Balance usage and the recipient are determined by the `funds` struct. Emits a `Swap` event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":\"IVault\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol":{"Authentication":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Building block for performing access control on external functions. This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied to external functions to only make them callable by authorized accounts. Derived contracts must implement the `_canPerform` function, which holds the actual access control logic.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in multi contract systems. There are two main uses for it: - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers unique. The contract's own address is a good option. - if the contract belongs to a family that shares action identifiers for the same functions, an identifier shared by the entire family (and no other contract) should be used instead.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":\"Authentication\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol":{"EOASignaturesValidator":{"abi":[{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Utility for signing Solidity function calls.\",\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":\"EOASignaturesValidator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol":{"InputHelpers":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c2e0ea22385e6a2569a34672c5f22125c8b47548296ecba0af88b51b352d0a9764736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 0xE0 0xEA 0x22 CODESIZE 0x5E PUSH11 0x2569A34672C5F22125C8B4 PUSH22 0x48296ECBA0AF88B51B352D0A9764736F6C6343000701 STOP CALLER ","sourceMap":"893:1008:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c2e0ea22385e6a2569a34672c5f22125c8b47548296ecba0af88b51b352d0a9764736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 0xE0 0xEA 0x22 CODESIZE 0x5E PUSH11 0x2569A34672C5F22125C8B4 PUSH22 0x48296ECBA0AF88B51B352D0A9764736F6C6343000701 STOP CALLER ","sourceMap":"893:1008:48:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":\"InputHelpers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol":{"OptionalOnlyCaller":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"OnlyCallerOptIn","type":"event"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isOnlyCallerEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setOnlyCallerCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"setOnlyCallerCheckWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","isOnlyCallerEnabled(address)":"a1648aa5","setOnlyCallerCheck(bool)":"e811f44b","setOnlyCallerCheckWithSignature(address,bool,bytes)":"fcaa54ee"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"OnlyCallerOptIn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isOnlyCallerEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setOnlyCallerCheck\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"setOnlyCallerCheckWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"isOnlyCallerEnabled(address)\":{\"details\":\"Returns true if caller verification is enabled for the given user, false otherwise.\"},\"setOnlyCallerCheck(bool)\":{\"details\":\"Enables / disables verification mechanism for caller.\",\"params\":{\"enabled\":\"- True if caller verification shall be enabled, false otherwise.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol\":\"OptionalOnlyCaller\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol\":{\"keccak256\":\"0x7bab0494ee39fb988722edd20b3e5ff747b4acfe93a62d0726c5d63ae3f6e472\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://23e1d154f2fa589cbfa51338c285cf1862edcd6172fdbb26db17a6fcf9581ee2\",\"dweb:/ipfs/Qmbu8wgFjYqZvvv84MKbLiHMSKv3THZuFHCjRchPHLjCdY\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol\":{\"keccak256\":\"0xf82dab09a38bfdaf0983b69829de462c62359bc0bfaa37c4447408d93bd367c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d0172b678ca594e95b7e5d881fd1280b3792052861ca98d77fa6194b524d188\",\"dweb:/ipfs/QmZ3bYEGTrfruXNYAzuFjJeg9Hx6UQw8ZyBzyM72BVGXfT\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol\":{\"keccak256\":\"0xc3a9b8d78e475f0290fa6f660b63f42ed4834dfcb61d7935b4b034fd31ef33f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1793575373e2214ceee3aecbd68b8b1a3ff24070b63bf36acb5d7e2bbb700d71\",\"dweb:/ipfs/QmVGYzndTDp2z25g6WqPze1PV5okh7MGBkP3XL2CTggAcM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol\":{\"keccak256\":\"0x028adc486d4df66cfc3157049ebd2772f1033be7159b27173225459d8d833e93\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5a67c6db6916df2ace5765995f45bf03e9ed07dd6e6164a196642ba4d52aa8b4\",\"dweb:/ipfs/QmYkhoC75YFywYqQPCMbj9iWyauVLczE7Db2NLisJR2vqu\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol":{"SignaturesValidator":{"abi":[{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Utility for signing Solidity function calls.\",\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol\":\"SignaturesValidator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol\":{\"keccak256\":\"0xf82dab09a38bfdaf0983b69829de462c62359bc0bfaa37c4447408d93bd367c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d0172b678ca594e95b7e5d881fd1280b3792052861ca98d77fa6194b524d188\",\"dweb:/ipfs/QmZ3bYEGTrfruXNYAzuFjJeg9Hx6UQw8ZyBzyM72BVGXfT\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol\":{\"keccak256\":\"0x028adc486d4df66cfc3157049ebd2772f1033be7159b27173225459d8d833e93\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5a67c6db6916df2ace5765995f45bf03e9ed07dd6e6164a196642ba4d52aa8b4\",\"dweb:/ipfs/QmYkhoC75YFywYqQPCMbj9iWyauVLczE7Db2NLisJR2vqu\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol":{"SingletonAuthentication":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getVault()":"8d928af8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":\"SingletonAuthentication\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol":{"Version":{"abi":[{"inputs":[{"internalType":"string","name":"version","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516103483803806103488339818101604052602081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b506040525050506100f2816100f860201b60201c565b506101a2565b805161010b90600090602084019061010f565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061015057805160ff191683800117855561017d565b8280016001018555821561017d579182015b8281111561017d578251825591602001919060010190610162565b5061018992915061018d565b5090565b5b80821115610189576000815560010161018e565b610197806101b16000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806354fd4d5014610030575b600080fd5b6100386100ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007257818101518382015260200161005a565b50505050905090810190601f16801561009f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101575780601f1061012c57610100808354040283529160200191610157565b820191906000526020600020905b81548152906001019060200180831161013a57829003601f168201915b505050505090509056fea2646970667358221220dff94d9847a91038ebfc464039b18ce76da3fb93a753f9b70a71167f0419acc164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x348 CODESIZE SUB DUP1 PUSH2 0x348 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x97 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP POP PUSH2 0xF2 DUP2 PUSH2 0xF8 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH2 0x1A2 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10B SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x10F JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x150 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x17D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x17D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x17D JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x162 JUMP JUMPDEST POP PUSH2 0x189 SWAP3 SWAP2 POP PUSH2 0x18D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x189 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x18E JUMP JUMPDEST PUSH2 0x197 DUP1 PUSH2 0x1B1 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38 PUSH2 0xAD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x72 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x9F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x157 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x12C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x157 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x13A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF 0xF9 0x4D SWAP9 SELFBALANCE 0xA9 LT CODESIZE 0xEB 0xFC CHAINID BLOCKHASH CODECOPY 0xB1 DUP13 0xE7 PUSH14 0xA3FB93A753F9B70A71167F0419AC 0xC1 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"884:436:52:-:0;;;949:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;949:72:52;;;;;;;;;;-1:-1:-1;949:72:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;994:20;1006:7;994:11;;;:20;;:::i;:::-;949:72;884:436;;1224:94;1290:21;;;;:8;;:21;;;;;:::i;:::-;;1224:94;:::o;884:436::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;884:436:52;;;-1:-1:-1;884:436:52;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c806354fd4d5014610030575b600080fd5b6100386100ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007257818101518382015260200161005a565b50505050905090810190601f16801561009f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101575780601f1061012c57610100808354040283529160200191610157565b820191906000526020600020905b81548152906001019060200180831161013a57829003601f168201915b505050505090509056fea2646970667358221220dff94d9847a91038ebfc464039b18ce76da3fb93a753f9b70a71167f0419acc164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38 PUSH2 0xAD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x72 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x9F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x157 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x12C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x157 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x13A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF 0xF9 0x4D SWAP9 SELFBALANCE 0xA9 LT CODESIZE 0xEB 0xFC CHAINID BLOCKHASH CODECOPY 0xB1 DUP13 0xE7 PUSH14 0xA3FB93A753F9B70A71167F0419AC 0xC1 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"884:436:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1027:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:13;;1103:15;;1110:8;;1103:15;;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1027:98;:::o"},"methodIdentifiers":{"version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"version()\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Retrieves a contract's version set at creation time from storage.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":\"Version\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0x95fe58d2b75267e6068077264da8f0ce358f0f9e18167ea902bb1d29e9636ad5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8eb074a823f7cd09f9e73f52af4c6d2602b71ec127ca08acb67336f79dfdc79b\",\"dweb:/ipfs/QmbyDXinvkw5P2KBa7menkS6jp8cdWGg1qhAu5CEYi3vdE\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol":{"FixedPoint":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4640ea1d7c89bdb767eef0d980d2e9cf18ea1dcafd3d3c15b055496927fbf0b64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 PUSH5 0xEA1D7C89B 0xDB PUSH23 0x7EEF0D980D2E9CF18EA1DCAFD3D3C15B055496927FBF0B PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"888:5321:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4640ea1d7c89bdb767eef0d980d2e9cf18ea1dcafd3d3c15b055496927fbf0b64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 PUSH5 0xEA1D7C89B 0xDB PUSH23 0x7EEF0D980D2E9CF18EA1DCAFD3D3C15B055496927FBF0B PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"888:5321:53:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":\"FixedPoint\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol":{"LogExpMath":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2f1f5a5744ba84ba902f5d8ce63788485b6aa0b1c41d070ae31d351d0d04aac64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLCODE CALL CREATE2 0xA5 PUSH21 0x4BA84BA902F5D8CE63788485B6AA0B1C41D070AE31 0xD3 MLOAD 0xD0 0xD0 0x4A 0xAC PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1681:19465:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2f1f5a5744ba84ba902f5d8ce63788485b6aa0b1c41d070ae31d351d0d04aac64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLCODE CALL CREATE2 0xA5 PUSH21 0x4BA84BA902F5D8CE63788485B6AA0B1C41D070AE31 0xD3 MLOAD 0xD0 0xD0 0x4A 0xAC PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1681:19465:54:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Fernando Martinelli - @fernandomartinelliSergio Yuhjtman - @sergioyuhjtmanDaniel Fernandez - @dmf7z\",\"details\":\"Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument). Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural exponentiation and logarithm (where the base is Euler's number).\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":\"LogExpMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220846111d7cfb69da2fca580e8b2ab6b6addf04f185e6d02f1a1c3a10d7361155964736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 PUSH2 0x11D7 0xCF 0xB6 SWAP14 LOG2 0xFC 0xA5 DUP1 0xE8 0xB2 0xAB PUSH12 0x6ADDF04F185E6D02F1A1C3A1 0xD PUSH20 0x61155964736F6C63430007010033000000000000 ","sourceMap":"290:2995:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220846111d7cfb69da2fca580e8b2ab6b6addf04f185e6d02f1a1c3a10d7361155964736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 PUSH2 0x11D7 0xCF 0xB6 SWAP14 LOG2 0xFC 0xA5 DUP1 0xE8 0xB2 0xAB PUSH12 0x6ADDF04F185E6D02F1A1C3A1 0xD PUSH20 0x61155964736F6C63430007010033000000000000 ","sourceMap":"290:2995:55:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Adapted from OpenZeppelin's SafeMath library.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":\"Math\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122014c317e5c7ffec06df50079a25a550396b9c6d54a220da98ca140dabbf742d7664736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0xC3 OR 0xE5 0xC7 SELFDESTRUCT 0xEC MOD 0xDF POP SMOD SWAP11 0x25 0xA5 POP CODECOPY PUSH12 0x9C6D54A220DA98CA140DABBF PUSH21 0x2D7664736F6C634300070100330000000000000000 ","sourceMap":"439:5334:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122014c317e5c7ffec06df50079a25a550396b9c6d54a220da98ca140dabbf742d7664736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0xC3 OR 0xE5 0xC7 SELFDESTRUCT 0xEC MOD 0xDF POP SMOD SWAP11 0x25 0xA5 POP CODECOPY PUSH12 0x9C6D54A220DA98CA140DABBF PUSH21 0x2D7664736F6C634300070100330000000000000000 ","sourceMap":"439:5334:56:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol":{"Clones":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220af9f5b777bf25b05273bbebc82b2f38fc7e9b6af7f1c9f68f1b7dea7bc7749e164736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAF SWAP16 JUMPDEST PUSH24 0x7BF25B05273BBEBC82B2F38FC7E9B6AF7F1C9F68F1B7DEA7 0xBC PUSH24 0x49E164736F6C634300070100330000000000000000000000 ","sourceMap":"740:2860:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220af9f5b777bf25b05273bbebc82b2f38fc7e9b6af7f1c9f68f1b7dea7bc7749e164736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAF SWAP16 JUMPDEST PUSH24 0x7BF25B05273BBEBC82B2F38FC7E9B6AF7F1C9F68F1B7DEA7 0xBC PUSH24 0x49E164736F6C634300070100330000000000000000000000 ","sourceMap":"740:2860:57:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for deploying minimal proxy contracts, also known as \\\"clones\\\". > To simply and cheaply clone contract functionality in an immutable way, this standard specifies > a minimal bytecode implementation that delegates all calls to a known, fixed address. The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the deterministic method. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":\"Clones\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol":{"EIP712":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in their contracts using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":\"EIP712\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051610b0c380380610b0c8339818101604052604081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156100ff57600080fd5b90830190602082018581111561011457600080fd5b825164010000000081118282018810171561012e57600080fd5b82525081516020918201929091019080838360005b8381101561015b578181015183820152602001610143565b50505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b50604052505082516101a2915060039060208501906101cb565b5080516101b69060049060208401906101cb565b50506005805460ff191660121790555061025e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061020c57805160ff1916838001178555610239565b82800160010185558215610239579182015b8281111561023957825182559160200191906001019061021e565b50610245929150610249565b5090565b5b80821115610245576000815560010161024a565b61089f8061026d6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a06103fe565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610404565b6101fd610465565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561046e565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104b1565b6100d66104d9565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610558565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561059e565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166105ab565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103f53384846105e3565b50600192915050565b60025490565b6000610411848484610652565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461045b918691610456908661019e61077b565b6105e3565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f59185906104569086610791565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f5918590610456908661019f61077b565b60006103f5338484610652565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61067673ffffffffffffffffffffffffffffffffffffffff841615156101986107aa565b61069a73ffffffffffffffffffffffffffffffffffffffff831615156101996107aa565b6106a58383836107bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020546106d890826101a061077b565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107149082610791565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061078a84841115836107aa565b5050900390565b60008282016107a384821015836107aa565b9392505050565b816107b8576107b8816107c1565b5050565b505050565b6107eb817f42414c00000000000000000000000000000000000000000000000000000000006107ee565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea26469706673582212202c86193fc6961e0e4117c460b7e51cd045ea11118a221b0580d8a077a6e6300a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB0C CODESIZE SUB DUP1 PUSH2 0xB0C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x97 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x143 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x188 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP DUP3 MLOAD PUSH2 0x1A2 SWAP2 POP PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x1CB JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x1B6 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1CB JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH2 0x25E JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x20C JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x239 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x239 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x239 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x21E JUMP JUMPDEST POP PUSH2 0x245 SWAP3 SWAP2 POP PUSH2 0x249 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x245 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x24A JUMP JUMPDEST PUSH2 0x89F DUP1 PUSH2 0x26D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x404 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4B1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x558 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x59E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5AB JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x411 DUP5 DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x45B SWAP2 DUP7 SWAP2 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x77B JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x77B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x676 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x69A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x6A5 DUP4 DUP4 DUP4 PUSH2 0x7BC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x6D8 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x77B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x714 SWAP1 DUP3 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78A DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x7A3 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x7B8 JUMPI PUSH2 0x7B8 DUP2 PUSH2 0x7C1 JUMP JUMPDEST POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x7EB DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7EE JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C DUP7 NOT EXTCODEHASH 0xC6 SWAP7 0x1E 0xE COINBASE OR 0xC4 PUSH1 0xB7 0xE5 SHR 0xD0 GASLIMIT 0xEA GT GT DUP11 0x22 SHL SDIV DUP1 0xD8 LOG0 PUSH24 0xA6E6300A64736F6C63430007010033000000000000000000 ","sourceMap":"1427:10003:59:-:0;;;2052:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2052:137:59;;;;;;;;;;-1:-1:-1;2052:137:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2052:137:59;;;;;;;;;;-1:-1:-1;2052:137:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2052:137:59;;-1:-1:-1;;2118:13:59;;;;-1:-1:-1;2118:5:59;;:13;;;;;:::i;:::-;-1:-1:-1;2141:17:59;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:59;:14;;-1:-1:-1;;2168:14:59;2180:2;2168:14;;;-1:-1:-1;1427:10003:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1427:10003:59;;;-1:-1:-1;1427:10003:59;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a06103fe565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610404565b6101fd610465565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561046e565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104b1565b6100d66104d9565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610558565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561059e565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166105ab565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103f53384846105e3565b50600192915050565b60025490565b6000610411848484610652565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461045b918691610456908661019e61077b565b6105e3565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f59185906104569086610791565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f5918590610456908661019f61077b565b60006103f5338484610652565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61067673ffffffffffffffffffffffffffffffffffffffff841615156101986107aa565b61069a73ffffffffffffffffffffffffffffffffffffffff831615156101996107aa565b6106a58383836107bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020546106d890826101a061077b565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107149082610791565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061078a84841115836107aa565b5050900390565b60008282016107a384821015836107aa565b9392505050565b816107b8576107b8816107c1565b5050565b505050565b6107eb817f42414c00000000000000000000000000000000000000000000000000000000006107ee565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea26469706673582212202c86193fc6961e0e4117c460b7e51cd045ea11118a221b0580d8a077a6e6300a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x404 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4B1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x558 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x59E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5AB JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x411 DUP5 DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x45B SWAP2 DUP7 SWAP2 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x77B JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x77B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x676 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x69A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x6A5 DUP4 DUP4 DUP4 PUSH2 0x7BC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x6D8 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x77B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x714 SWAP1 DUP3 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78A DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x7A3 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x7B8 JUMPI PUSH2 0x7B8 DUP2 PUSH2 0x7C1 JUMP JUMPDEST POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x7EB DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7EE JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C DUP7 NOT EXTCODEHASH 0xC6 SWAP7 0x1E 0xE COINBASE OR 0xC4 PUSH1 0xB7 0xE5 SHR 0xD0 GASLIMIT 0xEA GT GT DUP11 0x22 SHL SDIV DUP1 0xD8 LOG0 PUSH24 0xA6E6300A64736F6C63430007010033000000000000000000 ","sourceMap":"1427:10003:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:59;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:59;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6269:211;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:59;;;;;;;;;:::i;4022:117::-;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:59;;;;:::i;2448:85::-;;;:::i;6967:312::-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:59;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:59;;;;;;;;;:::i;4570:149::-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:59;;;;;;;;;;;:::i;2254:81::-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:59;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:31;5752:35:59;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:59;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;6269:211::-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;4022:117::-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;2448:85::-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:31;7143:36:59;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;4570:149::-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;10034:213::-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10687:3:31;7880:8:59;:71::i;:::-;7961:72;7970:23;;;;;10755:3:31;7961:8:59;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:31;8122:21:59;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:65:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:65;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:65:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;11245:183:59:-;;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}, initializes {decimals} with a default value of 18. To select a different value for {decimals}, use {_setupDecimals}. All three of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol":{"ERC20Burnable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {ERC20} that allows token holders to destroy both their own tokens and those that they have an allowance for, in a way that can be recognized off-chain (via event analysis).\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":\"ERC20Burnable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol":{"ERC20Permit":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\\\"1\\\"`. It's a good idea to use the same `name` that is defined as the ERC20 token name.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":\"ERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol":{"EnumerableSet":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b4f362195304bca0268523dcc31b851609b69f5144c5a8abcb6fa240af5462c264736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 RETURN PUSH3 0x195304 0xBC LOG0 0x26 DUP6 0x23 0xDC 0xC3 SHL DUP6 AND MULMOD 0xB6 SWAP16 MLOAD DIFFICULTY 0xC5 0xA8 0xAB 0xCB PUSH16 0xA240AF5462C264736F6C634300070100 CALLER ","sourceMap":"1210:8346:62:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b4f362195304bca0268523dcc31b851609b69f5144c5a8abcb6fa240af5462c264736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 RETURN PUSH3 0x195304 0xBC LOG0 0x26 DUP6 0x23 0xDC 0xC3 SHL DUP6 AND MULMOD 0xB6 SWAP16 MLOAD DIFFICULTY 0xC5 0xA8 0xAB 0xCB PUSH16 0xA240AF5462C264736F6C634300070100 CALLER ","sourceMap":"1210:8346:62:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example { // Add the library methods using EnumerableSet for EnumerableSet.AddressSet; // Declare a set state variable EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol":{"ReentrancyGuard":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol":{"SafeERC20":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220101cb10a10a8826c3ccbc0d7a1e0802d146095a5c909637362c78e01ce5ff54c64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT SHR 0xB1 EXP LT 0xA8 DUP3 PUSH13 0x3CCBC0D7A1E0802D146095A5C9 MULMOD PUSH4 0x7362C78E ADD 0xCE 0x5F CREATE2 0x4C PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"976:2264:64:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220101cb10a10a8826c3ccbc0d7a1e0802d146095a5c909637362c78e01ce5ff54c64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT SHR 0xB1 EXP LT 0xA8 DUP3 PUSH13 0x3CCBC0D7A1E0802D146095A5C9 MULMOD PUSH4 0x7362C78E ADD 0xCE 0x5F CREATE2 0x4C PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"976:2264:64:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol":{"SafeMath":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204078142f28de1c3e58fcb44f4a2b4e02c951ae80e8d6c98d6075eb00a9c736b364736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOCKHASH PUSH25 0x142F28DE1C3E58FCB44F4A2B4E02C951AE80E8D6C98D6075EB STOP 0xA9 0xC7 CALLDATASIZE 0xB3 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"714:1310:65:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204078142f28de1c3e58fcb44f4a2b4e02c951ae80e8d6c98d6075eb00a9c736b364736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOCKHASH PUSH25 0x142F28DE1C3E58FCB44F4A2B4E02C951AE80E8D6C98D6075EB STOP 0xA9 0xC7 CALLDATASIZE 0xB3 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"714:1310:65:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"contracts/BalancerMinter.sol":{"BalancerMinter":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"uint256","name":"minted","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"bool","name":"approval","type":"bool"}],"name":"MinterApprovalSet","type":"event"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"allowed_to_mint_for","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getMinterApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"mintManyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mint_for","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[8]","name":"gauges","type":"address[8]"}],"name":"mint_many","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"}],"name":"setMinterApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"setMinterApprovalWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"toggle_approve_mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowed_to_mint_for(address,address)":"a0990033","getBalancerToken()":"c0039699","getDomainSeparator()":"ed24911d","getMinterApproval(address,address)":"3c543bc6","getNextNonce(address)":"90193b7c","mint(address)":"6a627842","mintFor(address,address)":"7504a15d","mintMany(address[])":"397ada21","mintManyFor(address[],address)":"3b9f7384","mint_for(address,address)":"27f18ae3","mint_many(address[8])":"a51e1904","minted(address,address)":"8b752bb0","setMinterApproval(address,bool)":"0de54ba0","setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)":"c6542794","toggle_approve_mint(address)":"dd289d60"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"MinterApprovalSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed_to_mint_for\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinterApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"mintMany\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintManyFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mint_for\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[8]\",\"name\":\"gauges\",\"type\":\"address[8]\"}],\"name\":\"mint_many\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"minted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMinterApprovalWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"toggle_approve_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"mint(address)\":{\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\"}},\"mintFor(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mintMany(address[])\":{\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"mintManyFor(address[],address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\",\"user\":\"Address to mint to\"}},\"mint_for(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mint_many(address[8])\":{\"details\":\"This function is not recommended as `mintMany()` is more flexible and gas efficient\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowed_to_mint_for(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"},\"getMinterApproval(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"mint(address)\":{\"notice\":\"Mint everything which belongs to `msg.sender` and send to them\"},\"mintFor(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mintMany(address[])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"mintManyFor(address[],address)\":{\"notice\":\"Mint tokens for `user` across multiple gauges\"},\"mint_for(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mint_many(address[8])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"minted(address,address)\":{\"notice\":\"The total number of tokens minted for `user` from `gauge`\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on your behalf\"},\"setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing them.\"},\"toggle_approve_mint(address)\":{\"notice\":\"Toggle whether `minter` is approved to mint tokens for `user`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerMinter.sol\":\"BalancerMinter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/BalancerMinter.sol\":{\"keccak256\":\"0xbacdfde61937f9cea9166c7e492ac8d65261fb6bdfb621f1f258852799204cc8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3e68da1f25c0211654bb0b04c4ac1a789cb3dfabd7f5db54d6bfbeb49414e0c\",\"dweb:/ipfs/QmRnvBWovj9HNZsEfvrZpbJcs3K7ikwrY8fkX68F7rdxQK\"]}},\"version\":1}"}},"contracts/BalancerTokenAdmin.sol":{"BalancerTokenAdmin":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IBalancerToken","name":"balancerToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"supply","type":"uint256"}],"name":"MiningParametersUpdated","type":"event"},{"inputs":[],"name":"INITIAL_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"available_supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"futureEpochTimeWrite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"future_epoch_time_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAvailableSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFutureEpochTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInflationRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMiningEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStartEpochSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStartEpochTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"mintableInTimeframe","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"mintable_in_timeframe","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startEpochTimeWrite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"start_epoch_time_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateMiningParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"update_mining_parameters","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e060405260001960025534801561001657600080fd5b506040516120713803806120718339818101604052604081101561003957600080fd5b508051602090910151306080526001600160601b0319606092831b811660a0526001600055911b1660c05260805160a05160601c60c05160601c611f5e610113600039806103d052806104a6528061055e528061062052806106d2528061077e5280610874528061093052806109935280610a3f5280610b355280610bf15280610c545280610d015280610dc55280610ecd5280610f2e528061106852806111625280611211528061130252806113f35280611562528061163752806117a552806118b952508061177952508061170c5250611f5e6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c8063851c1bb3116100f9578063b87b561611610097578063c3b03fa811610071578063c3b03fa8146102fb578063cb626ae21461031e578063d43b40fa1461031e578063d725a9ca146102fb576101b9565b8063b87b5616146102eb578063c0039699146102f3578063c167d1cd146101f2576101b9565b8063a228bced116100d3578063a228bced146102db578063aaabadc5146102e3578063adc4cf43146102db578063b26b238e146101fa576101b9565b8063851c1bb3146102635780638d928af8146102a25780639711715a146102d3576101b9565b80632c4e722e116101665780634dbac733116101405780634dbac7331461024b57806355f74176146102535780637efad8e01461025b578063819df2c414610202576101b9565b80632c4e722e1461020257806340c10f191461020a5780634d2fa41314610243576101b9565b806321609bbf1161019757806321609bbf146101ea57806324f92a25146101f2578063277dbafb146101fa576101b9565b8063087905c9146101be5780630dfbdce4146101d85780630f15f4c0146101e0575b600080fd5b6101c6610326565b60408051918252519081900360200190f35b6101c661032d565b6101e8610346565b005b6101c66114f9565b6101c6611505565b6101c661150f565b6101c6611527565b6101e86004803603604081101561022057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561152d565b6101c66116e2565b6101c66116e8565b6101c66116f4565b6101c66116fa565b6101c66004803603602081101561027957600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016611706565b6102aa611777565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101e861179b565b6101c6611825565b6102aa61182f565b6101c66118af565b6102aa6118b7565b6101c66004803603604081101561031157600080fd5b50803590602001356118db565b6101e86118ee565b6001545b90565b600254600090610341906301e1338061195b565b905090565b61034e61196d565b610356611986565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600254146103cc576040805162461bcd60e51b815260206004820152601160248201527f416c726561647920616374697661746564000000000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d53913936040518163ffffffff1660e01b815260040160206040518083038186803b15801561043457600080fd5b505afa158015610448573d6000803e3d6000fd5b505050506040513d602081101561045e57600080fd5b5051604080517f7028e2cd000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691637028e2cd916004808301926020929190829003018186803b1580156104ec57600080fd5b505afa158015610500573d6000803e3d6000fd5b505050506040513d602081101561051657600080fd5b5051604080517fa217fddf000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163a217fddf916004808301926020929190829003018186803b1580156105a457600080fd5b505afa1580156105b8573d6000803e3d6000fd5b505050506040513d60208110156105ce57600080fd5b5051604080517f91d1485400000000000000000000000000000000000000000000000000000000815260048101839052306024820152905191925073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916391d1485491604480820192602092909190829003018186803b15801561066757600080fd5b505afa15801561067b573d6000803e3d6000fd5b505050506040513d602081101561069157600080fd5b50516106ce5760405162461bcd60e51b8152600401808060200182810382526022815260200180611e906022913960400191505060405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561074157600080fd5b505afa158015610755573d6000803e3d6000fd5b505050506040513d602081101561076b57600080fd5b5051905060005b818110156108e25760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639010d07c8760006040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156107f657600080fd5b505afa15801561080a573d6000803e3d6000fd5b505050506040513d602081101561082057600080fd5b5051604080517fd547741f0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff808416602483015291519293507f00000000000000000000000000000000000000000000000000000000000000009091169163d547741f9160448082019260009290919082900301818387803b1580156108be57600080fd5b505af11580156108d2573d6000803e3d6000fd5b5050505050806001019050610772565b50604080517f2f2ff15d00000000000000000000000000000000000000000000000000000000815260048101869052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691632f2ff15d91604480830192600092919082900301818387803b15801561097757600080fd5b505af115801561098b573d6000803e3d6000fd5b5050505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a0257600080fd5b505afa158015610a16573d6000803e3d6000fd5b505050506040513d6020811015610a2c57600080fd5b5051905060005b81811015610ba35760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639010d07c8760006040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610ab757600080fd5b505afa158015610acb573d6000803e3d6000fd5b505050506040513d6020811015610ae157600080fd5b5051604080517fd547741f0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff808416602483015291519293507f00000000000000000000000000000000000000000000000000000000000000009091169163d547741f9160448082019260009290919082900301818387803b158015610b7f57600080fd5b505af1158015610b93573d6000803e3d6000fd5b5050505050806001019050610a33565b50604080517f2f2ff15d00000000000000000000000000000000000000000000000000000000815260048101869052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691632f2ff15d91604480830192600092919082900301818387803b158015610c3857600080fd5b505af1158015610c4c573d6000803e3d6000fd5b5050505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610cc357600080fd5b505afa158015610cd7573d6000803e3d6000fd5b505050506040513d6020811015610ced57600080fd5b505190506000805b82811015610e7f5760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639010d07c88856040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610d7857600080fd5b505afa158015610d8c573d6000803e3d6000fd5b505050506040513d6020811015610da257600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81163014610e71577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d547741f88836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015610e5457600080fd5b505af1158015610e68573d6000803e3d6000fd5b50505050610e76565b600192505b50600101610cf5565b50604080517fd547741f00000000000000000000000000000000000000000000000000000000815260048101879052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163d547741f91604480830192600092919082900301818387803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f9d57600080fd5b505afa158015610fb1573d6000803e3d6000fd5b505050506040513d6020811015610fc757600080fd5b50511561101b576040805162461bcd60e51b815260206004820181905260248201527f416464726573732065786973747320776974682061646d696e20726967687473604482015290519081900360640190fd5b604080517f91d1485400000000000000000000000000000000000000000000000000000000815260048101899052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916391d14854916044808301926020929190829003018186803b1580156110ae57600080fd5b505afa1580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b50516111155760405162461bcd60e51b8152600401808060200182810382526022815260200180611f076022913960400191505060405180910390fd5b604080517f91d1485400000000000000000000000000000000000000000000000000000000815260048101889052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916391d14854916044808301926020929190829003018186803b1580156111a857600080fd5b505afa1580156111bc573d6000803e3d6000fd5b505050506040513d60208110156111d257600080fd5b505161120f5760405162461bcd60e51b8152600401808060200182810382526027815260200180611eb26027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561128057600080fd5b505afa158015611294573d6000803e3d6000fd5b505050506040513d60208110156112aa57600080fd5b5051600114611300576040805162461bcd60e51b815260206004820152601660248201527f4d756c7469706c65206d696e7465727320657869737400000000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561137157600080fd5b505afa158015611385573d6000803e3d6000fd5b505050506040513d602081101561139b57600080fd5b50516001146113f1576040805162461bcd60e51b815260206004820152601b60248201527f4d756c7469706c6520736e617073686f74746572732065786973740000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561145757600080fd5b505afa15801561146b573d6000803e3d6000fd5b505050506040513d602081101561148157600080fd5b50516003554260025562093a80691eb4773b6d1318a00000046004557fa96ad9a0b81b29565fbe231714a2f2c152b759e603c91bf87144a3f61944f0a562093a80691eb4773b6d1318a000006003546040805193909204835260208301528051918290030190a1505050505050506114f76119cf565b565b671080e992061ab30081565b60006103416119d6565b60006103416301e13380611521611a10565b9061195b565b60045490565b611535611986565b600254611546906301e1338061195b565b421061155457611554611a3c565b61155c6119d6565b6115f8827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115c657600080fd5b505afa1580156115da573d6000803e3d6000fd5b505050506040513d60208110156115f057600080fd5b50519061195b565b11156116355760405162461bcd60e51b815260040180806020018281038252602e815260200180611ed9602e913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156116c657600080fd5b505af11580156116da573d6000803e3d6000fd5b505050505050565b60025490565b670353c226d6c6f58081565b60035490565b670de0b6b3a764000081565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6117a3611986565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639711715a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561180b57600080fd5b505af115801561181f573d6000803e3d6000fd5b50505050565b6000610341611a10565b6000611839611777565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561187e57600080fd5b505afa158015611892573d6000803e3d6000fd5b505050506040513d60208110156118a857600080fd5b5051905090565b6301e1338081565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006118e78383611af8565b9392505050565b6002546118ff906301e1338061195b565b421015611953576040805162461bcd60e51b815260206004820152601a60248201527f45706f636820686173206e6f742066696e697368656420796574000000000000604482015290519081900360640190fd5b6114f7611a3c565b60008282016118e78482101583611ce5565b61197f60026000541415610190611ce5565b6002600055565b60006119b56000357fffffffff0000000000000000000000000000000000000000000000000000000016611706565b90506119cc6119c48233611cf7565b610191611ce5565b50565b6001600055565b6000806119fa6004546119f460025442611dc090919063ffffffff16565b90611dd6565b600354909150611a0a908261195b565b91505090565b600254600090611a24816301e1338061195b565b421061034157611a32611a3c565b505060025461032a565b6004546000611a5b611a52836301e13380611dd6565b6003549061195b565b9050611a81671080e992061ab300611a7b84670de0b6b3a7640000611dd6565b90611dfa565b9150611a986001805461195b90919063ffffffff16565b600155600254611aac906301e1338061195b565b60025560048290556003819055604080518381526020810183905281517fa96ad9a0b81b29565fbe231714a2f2c152b759e603c91bf87144a3f61944f0a5929181900390910190a15050565b600081831115611b4f576040805162461bcd60e51b815260206004820152600b60248201527f7374617274203e20656e64000000000000000000000000000000000000000000604482015290519081900360640190fd5b600254600454611b63826301e1338061195b565b841115611b9b57611b78826301e1338061195b565b9150611b98671080e992061ab300611a7b83670de0b6b3a7640000611dd6565b90505b611ba9826301e1338061195b565b841115611bfd576040805162461bcd60e51b815260206004820152601160248201527f746f6f2066617220696e20667574757265000000000000000000000000000000604482015290519081900360640190fd5b6000805b6103e7811015611cdb57838610611c915785611c21856301e1338061195b565b811115611c3957611c36856301e1338061195b565b90505b87611c48866301e1338061195b565b8110611c55575050611cdb565b85811015611c605750845b611c7e611c77611c708484611dc0565b8790611dd6565b859061195b565b9350858910611c8e575050611cdb565b50505b611c9f846301e13380611dc0565b9350611cbf670de0b6b3a7640000611a7b85671080e992061ab300611dd6565b9250670353c226d6c6f580831115611cd357fe5b600101611c01565b5095945050505050565b81611cf357611cf381611e1a565b5050565b6000611d0161182f565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611d8d57600080fd5b505afa158015611da1573d6000803e3d6000fd5b505050506040513d6020811015611db757600080fd5b50519392505050565b6000611dd0838311156001611ce5565b50900390565b60008282026118e7841580611df3575083858381611df057fe5b04145b6003611ce5565b6000611e098215156004611ce5565b818381611e1257fe5b049392505050565b62461bcd60e51b600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526119cc917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe42616c616e636572546f6b656e41646d696e206973206e6f7420616e2061646d696e42616c616e636572546f6b656e41646d696e206973206e6f74206120736e617073686f747465724d696e7420616d6f756e7420657863656564732072656d61696e696e6720617661696c61626c6520737570706c7942616c616e636572546f6b656e41646d696e206973206e6f742061206d696e746572a264697066735822122054a0fd74db370789a186086df3b364da5c6e1a227b2e9a48c1c97fd98a0e96b264736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE PUSH1 0x0 NOT PUSH1 0x2 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2071 CODESIZE SUB DUP1 PUSH2 0x2071 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE SWAP2 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x1F5E PUSH2 0x113 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x3D0 MSTORE DUP1 PUSH2 0x4A6 MSTORE DUP1 PUSH2 0x55E MSTORE DUP1 PUSH2 0x620 MSTORE DUP1 PUSH2 0x6D2 MSTORE DUP1 PUSH2 0x77E MSTORE DUP1 PUSH2 0x874 MSTORE DUP1 PUSH2 0x930 MSTORE DUP1 PUSH2 0x993 MSTORE DUP1 PUSH2 0xA3F MSTORE DUP1 PUSH2 0xB35 MSTORE DUP1 PUSH2 0xBF1 MSTORE DUP1 PUSH2 0xC54 MSTORE DUP1 PUSH2 0xD01 MSTORE DUP1 PUSH2 0xDC5 MSTORE DUP1 PUSH2 0xECD MSTORE DUP1 PUSH2 0xF2E MSTORE DUP1 PUSH2 0x1068 MSTORE DUP1 PUSH2 0x1162 MSTORE DUP1 PUSH2 0x1211 MSTORE DUP1 PUSH2 0x1302 MSTORE DUP1 PUSH2 0x13F3 MSTORE DUP1 PUSH2 0x1562 MSTORE DUP1 PUSH2 0x1637 MSTORE DUP1 PUSH2 0x17A5 MSTORE DUP1 PUSH2 0x18B9 MSTORE POP DUP1 PUSH2 0x1779 MSTORE POP DUP1 PUSH2 0x170C MSTORE POP PUSH2 0x1F5E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xB87B5616 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xC3B03FA8 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC3B03FA8 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xCB626AE2 EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0xD43B40FA EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0xD725A9CA EQ PUSH2 0x2FB JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xB87B5616 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xC167D1CD EQ PUSH2 0x1F2 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xA228BCED GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA228BCED EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0xADC4CF43 EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xB26B238E EQ PUSH2 0x1FA JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x9711715A EQ PUSH2 0x2D3 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x2C4E722E GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x4DBAC733 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x4DBAC733 EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0x55F74176 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x7EFAD8E0 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x819DF2C4 EQ PUSH2 0x202 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x4D2FA413 EQ PUSH2 0x243 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x21609BBF GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x21609BBF EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x24F92A25 EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x277DBAFB EQ PUSH2 0x1FA JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x87905C9 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0xDFBDCE4 EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0xF15F4C0 EQ PUSH2 0x1E0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C6 PUSH2 0x326 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C6 PUSH2 0x32D JUMP JUMPDEST PUSH2 0x1E8 PUSH2 0x346 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C6 PUSH2 0x14F9 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x1505 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x150F JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x1527 JUMP JUMPDEST PUSH2 0x1E8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x152D JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16E2 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16E8 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16F4 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16FA JUMP JUMPDEST PUSH2 0x1C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1706 JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x1777 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1E8 PUSH2 0x179B JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x1825 JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x182F JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x18AF JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x18B7 JUMP JUMPDEST PUSH2 0x1C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x18DB JUMP JUMPDEST PUSH2 0x1E8 PUSH2 0x18EE JUMP JUMPDEST PUSH1 0x1 SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x341 SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x34E PUSH2 0x196D JUMP JUMPDEST PUSH2 0x356 PUSH2 0x1986 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x2 SLOAD EQ PUSH2 0x3CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920616374697661746564000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD5391393 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x448 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x7028E2CD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x7028E2CD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x500 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA217FDDF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0xA217FDDF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x91D1485400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x91D14854 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x67B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x6CE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E90 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x741 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x755 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x76B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x8E2 JUMPI PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9010D07C DUP8 PUSH1 0x0 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x80A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x820 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xD547741F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0xD547741F SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x772 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x2F2FF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x2F2FF15D SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x977 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x98B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xBA3 JUMPI PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9010D07C DUP8 PUSH1 0x0 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xACB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xD547741F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0xD547741F SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB93 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0xA33 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x2F2FF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x2F2FF15D SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC4C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xE7F JUMPI PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9010D07C DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ PUSH2 0xE71 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD547741F DUP9 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE68 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xE76 JUMP JUMPDEST PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xCF5 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xD547741F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0xD547741F SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF28 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO PUSH2 0x101B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573732065786973747320776974682061646D696E20726967687473 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x91D1485400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x91D14854 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1115 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F07 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x91D1485400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x91D14854 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1EB2 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1294 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 EQ PUSH2 0x1300 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D756C7469706C65206D696E7465727320657869737400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1371 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1385 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x139B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 EQ PUSH2 0x13F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D756C7469706C6520736E617073686F74746572732065786973740000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x146B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE TIMESTAMP PUSH1 0x2 SSTORE PUSH3 0x93A80 PUSH10 0x1EB4773B6D1318A00000 DIV PUSH1 0x4 SSTORE PUSH32 0xA96AD9A0B81B29565FBE231714A2F2C152B759E603C91BF87144A3F61944F0A5 PUSH3 0x93A80 PUSH10 0x1EB4773B6D1318A00000 PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP4 SWAP1 SWAP3 DIV DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP POP POP POP POP POP POP PUSH2 0x14F7 PUSH2 0x19CF JUMP JUMPDEST JUMP JUMPDEST PUSH8 0x1080E992061AB300 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x341 PUSH2 0x19D6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x341 PUSH4 0x1E13380 PUSH2 0x1521 PUSH2 0x1A10 JUMP JUMPDEST SWAP1 PUSH2 0x195B JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1535 PUSH2 0x1986 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x1546 SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST TIMESTAMP LT PUSH2 0x1554 JUMPI PUSH2 0x1554 PUSH2 0x1A3C JUMP JUMPDEST PUSH2 0x155C PUSH2 0x19D6 JUMP JUMPDEST PUSH2 0x15F8 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x195B JUMP JUMPDEST GT ISZERO PUSH2 0x1635 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1ED9 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40C10F19 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH8 0x353C226D6C6F580 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x17A3 PUSH2 0x1986 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9711715A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x180B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x181F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x341 PUSH2 0x1A10 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1839 PUSH2 0x1777 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x187E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1892 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH4 0x1E13380 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18E7 DUP4 DUP4 PUSH2 0x1AF8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x18FF SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST TIMESTAMP LT ISZERO PUSH2 0x1953 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45706F636820686173206E6F742066696E697368656420796574000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x14F7 PUSH2 0x1A3C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x18E7 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x1CE5 JUMP JUMPDEST PUSH2 0x197F PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1CE5 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19B5 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1706 JUMP JUMPDEST SWAP1 POP PUSH2 0x19CC PUSH2 0x19C4 DUP3 CALLER PUSH2 0x1CF7 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x1CE5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19FA PUSH1 0x4 SLOAD PUSH2 0x19F4 PUSH1 0x2 SLOAD TIMESTAMP PUSH2 0x1DC0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x1DD6 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 SWAP2 POP PUSH2 0x1A0A SWAP1 DUP3 PUSH2 0x195B JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1A24 DUP2 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST TIMESTAMP LT PUSH2 0x341 JUMPI PUSH2 0x1A32 PUSH2 0x1A3C JUMP JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH2 0x32A JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 PUSH2 0x1A5B PUSH2 0x1A52 DUP4 PUSH4 0x1E13380 PUSH2 0x1DD6 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 PUSH2 0x195B JUMP JUMPDEST SWAP1 POP PUSH2 0x1A81 PUSH8 0x1080E992061AB300 PUSH2 0x1A7B DUP5 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DD6 JUMP JUMPDEST SWAP1 PUSH2 0x1DFA JUMP JUMPDEST SWAP2 POP PUSH2 0x1A98 PUSH1 0x1 DUP1 SLOAD PUSH2 0x195B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH1 0x2 SLOAD PUSH2 0x1AAC SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x4 DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xA96AD9A0B81B29565FBE231714A2F2C152B759E603C91BF87144A3F61944F0A5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x1B4F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7374617274203E20656E64000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH2 0x1B63 DUP3 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1B9B JUMPI PUSH2 0x1B78 DUP3 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST SWAP2 POP PUSH2 0x1B98 PUSH8 0x1080E992061AB300 PUSH2 0x1A7B DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DD6 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x1BA9 DUP3 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1BFD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F6F2066617220696E20667574757265000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST PUSH2 0x3E7 DUP2 LT ISZERO PUSH2 0x1CDB JUMPI DUP4 DUP7 LT PUSH2 0x1C91 JUMPI DUP6 PUSH2 0x1C21 DUP6 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x1C39 JUMPI PUSH2 0x1C36 DUP6 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST SWAP1 POP JUMPDEST DUP8 PUSH2 0x1C48 DUP7 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP2 LT PUSH2 0x1C55 JUMPI POP POP PUSH2 0x1CDB JUMP JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1C60 JUMPI POP DUP5 JUMPDEST PUSH2 0x1C7E PUSH2 0x1C77 PUSH2 0x1C70 DUP5 DUP5 PUSH2 0x1DC0 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x1DD6 JUMP JUMPDEST DUP6 SWAP1 PUSH2 0x195B JUMP JUMPDEST SWAP4 POP DUP6 DUP10 LT PUSH2 0x1C8E JUMPI POP POP PUSH2 0x1CDB JUMP JUMPDEST POP POP JUMPDEST PUSH2 0x1C9F DUP5 PUSH4 0x1E13380 PUSH2 0x1DC0 JUMP JUMPDEST SWAP4 POP PUSH2 0x1CBF PUSH8 0xDE0B6B3A7640000 PUSH2 0x1A7B DUP6 PUSH8 0x1080E992061AB300 PUSH2 0x1DD6 JUMP JUMPDEST SWAP3 POP PUSH8 0x353C226D6C6F580 DUP4 GT ISZERO PUSH2 0x1CD3 JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x1C01 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x1CF3 JUMPI PUSH2 0x1CF3 DUP2 PUSH2 0x1E1A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D01 PUSH2 0x182F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD0 DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x1CE5 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x18E7 DUP5 ISZERO DUP1 PUSH2 0x1DF3 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x1DF0 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x1CE5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E09 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x1CE5 JUMP JUMPDEST DUP2 DUP4 DUP2 PUSH2 0x1E12 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x19CC SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID TIMESTAMP PUSH2 0x6C61 PUSH15 0x636572546F6B656E41646D696E2069 PUSH20 0x206E6F7420616E2061646D696E42616C616E6365 PUSH19 0x546F6B656E41646D696E206973206E6F742061 KECCAK256 PUSH20 0x6E617073686F747465724D696E7420616D6F756E PUSH21 0x20657863656564732072656D61696E696E67206176 PUSH2 0x696C PUSH2 0x626C PUSH6 0x20737570706C PUSH26 0x42616C616E636572546F6B656E41646D696E206973206E6F7420 PUSH2 0x206D PUSH10 0x6E746572A26469706673 PC 0x22 SLT KECCAK256 SLOAD LOG0 REVERT PUSH21 0xDB370789A186086DF3B364DA5C6E1A227B2E9A48C1 0xC9 PUSH32 0xD98A0E96B264736F6C6343000701003300000000000000000000000000000000 ","sourceMap":"1910:14868:67:-:0;;;-1:-1:-1;;2619:51:67;;2794:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:134:67;;;;;;;1054:4:51;2049:46:46;;-1:-1:-1;;;;;;1073:14:51::1;::::0;;;;;::::1;::::0;2070:1:63;1030:31:51;2175:22:63;2891:30:67;;;::::1;::::0;1910:14868;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":5900}],"3611":[{"length":32,"start":6009}],"7909":[{"length":32,"start":976},{"length":32,"start":1190},{"length":32,"start":1374},{"length":32,"start":1568},{"length":32,"start":1746},{"length":32,"start":1918},{"length":32,"start":2164},{"length":32,"start":2352},{"length":32,"start":2451},{"length":32,"start":2623},{"length":32,"start":2869},{"length":32,"start":3057},{"length":32,"start":3156},{"length":32,"start":3329},{"length":32,"start":3525},{"length":32,"start":3789},{"length":32,"start":3886},{"length":32,"start":4200},{"length":32,"start":4450},{"length":32,"start":4625},{"length":32,"start":4866},{"length":32,"start":5107},{"length":32,"start":5474},{"length":32,"start":5687},{"length":32,"start":6053},{"length":32,"start":6329}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101b95760003560e01c8063851c1bb3116100f9578063b87b561611610097578063c3b03fa811610071578063c3b03fa8146102fb578063cb626ae21461031e578063d43b40fa1461031e578063d725a9ca146102fb576101b9565b8063b87b5616146102eb578063c0039699146102f3578063c167d1cd146101f2576101b9565b8063a228bced116100d3578063a228bced146102db578063aaabadc5146102e3578063adc4cf43146102db578063b26b238e146101fa576101b9565b8063851c1bb3146102635780638d928af8146102a25780639711715a146102d3576101b9565b80632c4e722e116101665780634dbac733116101405780634dbac7331461024b57806355f74176146102535780637efad8e01461025b578063819df2c414610202576101b9565b80632c4e722e1461020257806340c10f191461020a5780634d2fa41314610243576101b9565b806321609bbf1161019757806321609bbf146101ea57806324f92a25146101f2578063277dbafb146101fa576101b9565b8063087905c9146101be5780630dfbdce4146101d85780630f15f4c0146101e0575b600080fd5b6101c6610326565b60408051918252519081900360200190f35b6101c661032d565b6101e8610346565b005b6101c66114f9565b6101c6611505565b6101c661150f565b6101c6611527565b6101e86004803603604081101561022057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561152d565b6101c66116e2565b6101c66116e8565b6101c66116f4565b6101c66116fa565b6101c66004803603602081101561027957600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016611706565b6102aa611777565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101e861179b565b6101c6611825565b6102aa61182f565b6101c66118af565b6102aa6118b7565b6101c66004803603604081101561031157600080fd5b50803590602001356118db565b6101e86118ee565b6001545b90565b600254600090610341906301e1338061195b565b905090565b61034e61196d565b610356611986565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600254146103cc576040805162461bcd60e51b815260206004820152601160248201527f416c726561647920616374697661746564000000000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d53913936040518163ffffffff1660e01b815260040160206040518083038186803b15801561043457600080fd5b505afa158015610448573d6000803e3d6000fd5b505050506040513d602081101561045e57600080fd5b5051604080517f7028e2cd000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691637028e2cd916004808301926020929190829003018186803b1580156104ec57600080fd5b505afa158015610500573d6000803e3d6000fd5b505050506040513d602081101561051657600080fd5b5051604080517fa217fddf000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163a217fddf916004808301926020929190829003018186803b1580156105a457600080fd5b505afa1580156105b8573d6000803e3d6000fd5b505050506040513d60208110156105ce57600080fd5b5051604080517f91d1485400000000000000000000000000000000000000000000000000000000815260048101839052306024820152905191925073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916391d1485491604480820192602092909190829003018186803b15801561066757600080fd5b505afa15801561067b573d6000803e3d6000fd5b505050506040513d602081101561069157600080fd5b50516106ce5760405162461bcd60e51b8152600401808060200182810382526022815260200180611e906022913960400191505060405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561074157600080fd5b505afa158015610755573d6000803e3d6000fd5b505050506040513d602081101561076b57600080fd5b5051905060005b818110156108e25760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639010d07c8760006040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156107f657600080fd5b505afa15801561080a573d6000803e3d6000fd5b505050506040513d602081101561082057600080fd5b5051604080517fd547741f0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff808416602483015291519293507f00000000000000000000000000000000000000000000000000000000000000009091169163d547741f9160448082019260009290919082900301818387803b1580156108be57600080fd5b505af11580156108d2573d6000803e3d6000fd5b5050505050806001019050610772565b50604080517f2f2ff15d00000000000000000000000000000000000000000000000000000000815260048101869052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691632f2ff15d91604480830192600092919082900301818387803b15801561097757600080fd5b505af115801561098b573d6000803e3d6000fd5b5050505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a0257600080fd5b505afa158015610a16573d6000803e3d6000fd5b505050506040513d6020811015610a2c57600080fd5b5051905060005b81811015610ba35760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639010d07c8760006040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610ab757600080fd5b505afa158015610acb573d6000803e3d6000fd5b505050506040513d6020811015610ae157600080fd5b5051604080517fd547741f0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff808416602483015291519293507f00000000000000000000000000000000000000000000000000000000000000009091169163d547741f9160448082019260009290919082900301818387803b158015610b7f57600080fd5b505af1158015610b93573d6000803e3d6000fd5b5050505050806001019050610a33565b50604080517f2f2ff15d00000000000000000000000000000000000000000000000000000000815260048101869052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691632f2ff15d91604480830192600092919082900301818387803b158015610c3857600080fd5b505af1158015610c4c573d6000803e3d6000fd5b5050505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610cc357600080fd5b505afa158015610cd7573d6000803e3d6000fd5b505050506040513d6020811015610ced57600080fd5b505190506000805b82811015610e7f5760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639010d07c88856040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610d7857600080fd5b505afa158015610d8c573d6000803e3d6000fd5b505050506040513d6020811015610da257600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81163014610e71577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d547741f88836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015610e5457600080fd5b505af1158015610e68573d6000803e3d6000fd5b50505050610e76565b600192505b50600101610cf5565b50604080517fd547741f00000000000000000000000000000000000000000000000000000000815260048101879052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163d547741f91604480830192600092919082900301818387803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f9d57600080fd5b505afa158015610fb1573d6000803e3d6000fd5b505050506040513d6020811015610fc757600080fd5b50511561101b576040805162461bcd60e51b815260206004820181905260248201527f416464726573732065786973747320776974682061646d696e20726967687473604482015290519081900360640190fd5b604080517f91d1485400000000000000000000000000000000000000000000000000000000815260048101899052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916391d14854916044808301926020929190829003018186803b1580156110ae57600080fd5b505afa1580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b50516111155760405162461bcd60e51b8152600401808060200182810382526022815260200180611f076022913960400191505060405180910390fd5b604080517f91d1485400000000000000000000000000000000000000000000000000000000815260048101889052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916391d14854916044808301926020929190829003018186803b1580156111a857600080fd5b505afa1580156111bc573d6000803e3d6000fd5b505050506040513d60208110156111d257600080fd5b505161120f5760405162461bcd60e51b8152600401808060200182810382526027815260200180611eb26027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561128057600080fd5b505afa158015611294573d6000803e3d6000fd5b505050506040513d60208110156112aa57600080fd5b5051600114611300576040805162461bcd60e51b815260206004820152601660248201527f4d756c7469706c65206d696e7465727320657869737400000000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561137157600080fd5b505afa158015611385573d6000803e3d6000fd5b505050506040513d602081101561139b57600080fd5b50516001146113f1576040805162461bcd60e51b815260206004820152601b60248201527f4d756c7469706c6520736e617073686f74746572732065786973740000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561145757600080fd5b505afa15801561146b573d6000803e3d6000fd5b505050506040513d602081101561148157600080fd5b50516003554260025562093a80691eb4773b6d1318a00000046004557fa96ad9a0b81b29565fbe231714a2f2c152b759e603c91bf87144a3f61944f0a562093a80691eb4773b6d1318a000006003546040805193909204835260208301528051918290030190a1505050505050506114f76119cf565b565b671080e992061ab30081565b60006103416119d6565b60006103416301e13380611521611a10565b9061195b565b60045490565b611535611986565b600254611546906301e1338061195b565b421061155457611554611a3c565b61155c6119d6565b6115f8827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115c657600080fd5b505afa1580156115da573d6000803e3d6000fd5b505050506040513d60208110156115f057600080fd5b50519061195b565b11156116355760405162461bcd60e51b815260040180806020018281038252602e815260200180611ed9602e913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156116c657600080fd5b505af11580156116da573d6000803e3d6000fd5b505050505050565b60025490565b670353c226d6c6f58081565b60035490565b670de0b6b3a764000081565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6117a3611986565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639711715a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561180b57600080fd5b505af115801561181f573d6000803e3d6000fd5b50505050565b6000610341611a10565b6000611839611777565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561187e57600080fd5b505afa158015611892573d6000803e3d6000fd5b505050506040513d60208110156118a857600080fd5b5051905090565b6301e1338081565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006118e78383611af8565b9392505050565b6002546118ff906301e1338061195b565b421015611953576040805162461bcd60e51b815260206004820152601a60248201527f45706f636820686173206e6f742066696e697368656420796574000000000000604482015290519081900360640190fd5b6114f7611a3c565b60008282016118e78482101583611ce5565b61197f60026000541415610190611ce5565b6002600055565b60006119b56000357fffffffff0000000000000000000000000000000000000000000000000000000016611706565b90506119cc6119c48233611cf7565b610191611ce5565b50565b6001600055565b6000806119fa6004546119f460025442611dc090919063ffffffff16565b90611dd6565b600354909150611a0a908261195b565b91505090565b600254600090611a24816301e1338061195b565b421061034157611a32611a3c565b505060025461032a565b6004546000611a5b611a52836301e13380611dd6565b6003549061195b565b9050611a81671080e992061ab300611a7b84670de0b6b3a7640000611dd6565b90611dfa565b9150611a986001805461195b90919063ffffffff16565b600155600254611aac906301e1338061195b565b60025560048290556003819055604080518381526020810183905281517fa96ad9a0b81b29565fbe231714a2f2c152b759e603c91bf87144a3f61944f0a5929181900390910190a15050565b600081831115611b4f576040805162461bcd60e51b815260206004820152600b60248201527f7374617274203e20656e64000000000000000000000000000000000000000000604482015290519081900360640190fd5b600254600454611b63826301e1338061195b565b841115611b9b57611b78826301e1338061195b565b9150611b98671080e992061ab300611a7b83670de0b6b3a7640000611dd6565b90505b611ba9826301e1338061195b565b841115611bfd576040805162461bcd60e51b815260206004820152601160248201527f746f6f2066617220696e20667574757265000000000000000000000000000000604482015290519081900360640190fd5b6000805b6103e7811015611cdb57838610611c915785611c21856301e1338061195b565b811115611c3957611c36856301e1338061195b565b90505b87611c48866301e1338061195b565b8110611c55575050611cdb565b85811015611c605750845b611c7e611c77611c708484611dc0565b8790611dd6565b859061195b565b9350858910611c8e575050611cdb565b50505b611c9f846301e13380611dc0565b9350611cbf670de0b6b3a7640000611a7b85671080e992061ab300611dd6565b9250670353c226d6c6f580831115611cd357fe5b600101611c01565b5095945050505050565b81611cf357611cf381611e1a565b5050565b6000611d0161182f565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611d8d57600080fd5b505afa158015611da1573d6000803e3d6000fd5b505050506040513d6020811015611db757600080fd5b50519392505050565b6000611dd0838311156001611ce5565b50900390565b60008282026118e7841580611df3575083858381611df057fe5b04145b6003611ce5565b6000611e098215156004611ce5565b818381611e1257fe5b049392505050565b62461bcd60e51b600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526119cc917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe42616c616e636572546f6b656e41646d696e206973206e6f7420616e2061646d696e42616c616e636572546f6b656e41646d696e206973206e6f74206120736e617073686f747465724d696e7420616d6f756e7420657863656564732072656d61696e696e6720617661696c61626c6520737570706c7942616c616e636572546f6b656e41646d696e206973206e6f742061206d696e746572a264697066735822122054a0fd74db370789a186086df3b364da5c6e1a227b2e9a48c1c97fd98a0e96b264736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xB87B5616 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xC3B03FA8 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC3B03FA8 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xCB626AE2 EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0xD43B40FA EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0xD725A9CA EQ PUSH2 0x2FB JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xB87B5616 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xC167D1CD EQ PUSH2 0x1F2 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xA228BCED GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA228BCED EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0xADC4CF43 EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xB26B238E EQ PUSH2 0x1FA JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x9711715A EQ PUSH2 0x2D3 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x2C4E722E GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x4DBAC733 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x4DBAC733 EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0x55F74176 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x7EFAD8E0 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x819DF2C4 EQ PUSH2 0x202 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x4D2FA413 EQ PUSH2 0x243 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x21609BBF GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x21609BBF EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x24F92A25 EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x277DBAFB EQ PUSH2 0x1FA JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x87905C9 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0xDFBDCE4 EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0xF15F4C0 EQ PUSH2 0x1E0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C6 PUSH2 0x326 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C6 PUSH2 0x32D JUMP JUMPDEST PUSH2 0x1E8 PUSH2 0x346 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C6 PUSH2 0x14F9 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x1505 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x150F JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x1527 JUMP JUMPDEST PUSH2 0x1E8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x152D JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16E2 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16E8 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16F4 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16FA JUMP JUMPDEST PUSH2 0x1C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1706 JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x1777 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1E8 PUSH2 0x179B JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x1825 JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x182F JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x18AF JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x18B7 JUMP JUMPDEST PUSH2 0x1C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x18DB JUMP JUMPDEST PUSH2 0x1E8 PUSH2 0x18EE JUMP JUMPDEST PUSH1 0x1 SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x341 SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x34E PUSH2 0x196D JUMP JUMPDEST PUSH2 0x356 PUSH2 0x1986 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x2 SLOAD EQ PUSH2 0x3CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920616374697661746564000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD5391393 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x448 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x7028E2CD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x7028E2CD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x500 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA217FDDF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0xA217FDDF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x91D1485400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x91D14854 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x67B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x6CE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E90 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x741 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x755 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x76B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x8E2 JUMPI PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9010D07C DUP8 PUSH1 0x0 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x80A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x820 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xD547741F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0xD547741F SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x772 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x2F2FF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x2F2FF15D SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x977 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x98B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xBA3 JUMPI PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9010D07C DUP8 PUSH1 0x0 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xACB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xD547741F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0xD547741F SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB93 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0xA33 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x2F2FF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x2F2FF15D SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC4C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xE7F JUMPI PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9010D07C DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ PUSH2 0xE71 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD547741F DUP9 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE68 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xE76 JUMP JUMPDEST PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xCF5 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xD547741F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0xD547741F SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF28 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO PUSH2 0x101B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573732065786973747320776974682061646D696E20726967687473 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x91D1485400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x91D14854 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1115 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F07 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x91D1485400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x91D14854 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1EB2 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1294 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 EQ PUSH2 0x1300 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D756C7469706C65206D696E7465727320657869737400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1371 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1385 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x139B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 EQ PUSH2 0x13F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D756C7469706C6520736E617073686F74746572732065786973740000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x146B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE TIMESTAMP PUSH1 0x2 SSTORE PUSH3 0x93A80 PUSH10 0x1EB4773B6D1318A00000 DIV PUSH1 0x4 SSTORE PUSH32 0xA96AD9A0B81B29565FBE231714A2F2C152B759E603C91BF87144A3F61944F0A5 PUSH3 0x93A80 PUSH10 0x1EB4773B6D1318A00000 PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP4 SWAP1 SWAP3 DIV DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP POP POP POP POP POP POP PUSH2 0x14F7 PUSH2 0x19CF JUMP JUMPDEST JUMP JUMPDEST PUSH8 0x1080E992061AB300 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x341 PUSH2 0x19D6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x341 PUSH4 0x1E13380 PUSH2 0x1521 PUSH2 0x1A10 JUMP JUMPDEST SWAP1 PUSH2 0x195B JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1535 PUSH2 0x1986 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x1546 SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST TIMESTAMP LT PUSH2 0x1554 JUMPI PUSH2 0x1554 PUSH2 0x1A3C JUMP JUMPDEST PUSH2 0x155C PUSH2 0x19D6 JUMP JUMPDEST PUSH2 0x15F8 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x195B JUMP JUMPDEST GT ISZERO PUSH2 0x1635 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1ED9 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40C10F19 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH8 0x353C226D6C6F580 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x17A3 PUSH2 0x1986 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9711715A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x180B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x181F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x341 PUSH2 0x1A10 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1839 PUSH2 0x1777 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x187E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1892 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH4 0x1E13380 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18E7 DUP4 DUP4 PUSH2 0x1AF8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x18FF SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST TIMESTAMP LT ISZERO PUSH2 0x1953 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45706F636820686173206E6F742066696E697368656420796574000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x14F7 PUSH2 0x1A3C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x18E7 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x1CE5 JUMP JUMPDEST PUSH2 0x197F PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1CE5 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19B5 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1706 JUMP JUMPDEST SWAP1 POP PUSH2 0x19CC PUSH2 0x19C4 DUP3 CALLER PUSH2 0x1CF7 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x1CE5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19FA PUSH1 0x4 SLOAD PUSH2 0x19F4 PUSH1 0x2 SLOAD TIMESTAMP PUSH2 0x1DC0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x1DD6 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 SWAP2 POP PUSH2 0x1A0A SWAP1 DUP3 PUSH2 0x195B JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1A24 DUP2 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST TIMESTAMP LT PUSH2 0x341 JUMPI PUSH2 0x1A32 PUSH2 0x1A3C JUMP JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH2 0x32A JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 PUSH2 0x1A5B PUSH2 0x1A52 DUP4 PUSH4 0x1E13380 PUSH2 0x1DD6 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 PUSH2 0x195B JUMP JUMPDEST SWAP1 POP PUSH2 0x1A81 PUSH8 0x1080E992061AB300 PUSH2 0x1A7B DUP5 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DD6 JUMP JUMPDEST SWAP1 PUSH2 0x1DFA JUMP JUMPDEST SWAP2 POP PUSH2 0x1A98 PUSH1 0x1 DUP1 SLOAD PUSH2 0x195B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH1 0x2 SLOAD PUSH2 0x1AAC SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x4 DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xA96AD9A0B81B29565FBE231714A2F2C152B759E603C91BF87144A3F61944F0A5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x1B4F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7374617274203E20656E64000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH2 0x1B63 DUP3 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1B9B JUMPI PUSH2 0x1B78 DUP3 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST SWAP2 POP PUSH2 0x1B98 PUSH8 0x1080E992061AB300 PUSH2 0x1A7B DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DD6 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x1BA9 DUP3 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1BFD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F6F2066617220696E20667574757265000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST PUSH2 0x3E7 DUP2 LT ISZERO PUSH2 0x1CDB JUMPI DUP4 DUP7 LT PUSH2 0x1C91 JUMPI DUP6 PUSH2 0x1C21 DUP6 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x1C39 JUMPI PUSH2 0x1C36 DUP6 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST SWAP1 POP JUMPDEST DUP8 PUSH2 0x1C48 DUP7 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP2 LT PUSH2 0x1C55 JUMPI POP POP PUSH2 0x1CDB JUMP JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1C60 JUMPI POP DUP5 JUMPDEST PUSH2 0x1C7E PUSH2 0x1C77 PUSH2 0x1C70 DUP5 DUP5 PUSH2 0x1DC0 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x1DD6 JUMP JUMPDEST DUP6 SWAP1 PUSH2 0x195B JUMP JUMPDEST SWAP4 POP DUP6 DUP10 LT PUSH2 0x1C8E JUMPI POP POP PUSH2 0x1CDB JUMP JUMPDEST POP POP JUMPDEST PUSH2 0x1C9F DUP5 PUSH4 0x1E13380 PUSH2 0x1DC0 JUMP JUMPDEST SWAP4 POP PUSH2 0x1CBF PUSH8 0xDE0B6B3A7640000 PUSH2 0x1A7B DUP6 PUSH8 0x1080E992061AB300 PUSH2 0x1DD6 JUMP JUMPDEST SWAP3 POP PUSH8 0x353C226D6C6F580 DUP4 GT ISZERO PUSH2 0x1CD3 JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x1C01 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x1CF3 JUMPI PUSH2 0x1CF3 DUP2 PUSH2 0x1E1A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D01 PUSH2 0x182F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD0 DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x1CE5 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x18E7 DUP5 ISZERO DUP1 PUSH2 0x1DF3 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x1DF0 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x1CE5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E09 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x1CE5 JUMP JUMPDEST DUP2 DUP4 DUP2 PUSH2 0x1E12 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x19CC SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID TIMESTAMP PUSH2 0x6C61 PUSH15 0x636572546F6B656E41646D696E2069 PUSH20 0x206E6F7420616E2061646D696E42616C616E6365 PUSH19 0x546F6B656E41646D696E206973206E6F742061 KECCAK256 PUSH20 0x6E617073686F747465724D696E7420616D6F756E PUSH21 0x20657863656564732072656D61696E696E67206176 PUSH2 0x696C PUSH2 0x626C PUSH6 0x20737570706C PUSH26 0x42616C616E636572546F6B656E41646D696E206973206E6F7420 PUSH2 0x206D PUSH10 0x6E746572A26469706673 PC 0x22 SLT KECCAK256 SLOAD LOG0 REVERT PUSH21 0xDB370789A186086DF3B364DA5C6E1A227B2E9A48C1 0xC9 PUSH32 0xD98A0E96B264736F6C6343000701003300000000000000000000000000000000 ","sourceMap":"1910:14868:67:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8778:94;;;:::i;:::-;;;;;;;;;;;;;;;;9143:126;;;:::i;3291:4464::-;;;:::i;:::-;;2270:81;;;:::i;15236:102::-;;;:::i;10334:130::-;;;:::i;15144:86::-;;;:::i;7933:529::-;;;;;;;;;;;;;;;;-1:-1:-1;7933:529:67;;;;;;;;;:::i;8959:100::-;;;:::i;2090:82::-;;;:::i;9374:104::-;;;:::i;2378:56::-;;;:::i;2607:430:46:-;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:46;;;;:::i;1158:79:51:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8623:84:67;;;:::i;10048:113::-;;;:::i;1297:109:51:-;;;:::i;2201:63:67:-;;;:::i;2990:114::-;;;:::i;11161:145::-;;;;;;;;;;;;;;;;-1:-1:-1;11161:145:67;;;;;;;:::i;10694:193::-;;;:::i;8778:94::-;8853:12;;8778:94;;:::o;9143:126::-;9222:15;;9196:7;;9222:40;;2256:8;9222:19;:40::i;:::-;9215:47;;9143:126;:::o;3291:4464::-;2613:20:63;:18;:20::i;:::-;2276:21:46::1;:19;:21::i;:::-;3392:17:67::2;3373:15;;:36;3365:66;;;::::0;;-1:-1:-1;;;3365:66:67;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;4023:18;4044:14;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;4044:28:67;4105:30:::2;::::0;;;;;;;4044:28;;-1:-1:-1;4082:20:67::2;::::0;4105:28:::2;:14;:28;::::0;::::2;::::0;:30:::2;::::0;;::::2;::::0;4044:28:::2;::::0;4105:30;;;;;;;:28;:30;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;4105:30:67;4165:35:::2;::::0;;;;;;;4105:30;;-1:-1:-1;4145:17:67::2;::::0;4165:33:::2;:14;:33;::::0;::::2;::::0;:35:::2;::::0;;::::2;::::0;4105:30:::2;::::0;4165:35;;;;;;;:33;:35;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;4165:35:67;4219:48:::2;::::0;;;;;::::2;::::0;::::2;::::0;;;4261:4:::2;4219:48:::0;;;;;;4165:35;;-1:-1:-1;4219:22:67::2;:14;:22;::::0;::::2;::::0;:48;;;;;4165:35:::2;::::0;4219:48;;;;;;;;:22;:48;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;4219:48:67;4211:95:::2;;;;-1:-1:-1::0;;;4211:95:67::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4418:23;4444:14;:33;;;4478:10;4444:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;4444:45:67;;-1:-1:-1;4504:9:67::2;4499:190;4523:15;4519:1;:19;4499:190;;;4559:14;4576;:28;;;4605:10;4617:1;4576:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;4576:43:67;4633:45:::2;::::0;;;;;::::2;::::0;::::2;::::0;;;:25:::2;:45:::0;;::::2;::::0;;;;;;4576:43;;-1:-1:-1;4633:14:67::2;:25:::0;;::::2;::::0;::::2;::::0;:45;;;;;-1:-1:-1;;4633:45:67;;;;;;;;-1:-1:-1;4633:25:67;:45;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;4499:190;4540:3;;;;;4499:190;;;-1:-1:-1::0;4762:51:67::2;::::0;;;;;::::2;::::0;::::2;::::0;;;4807:4:::2;4762:51:::0;;;;;;:24:::2;:14;:24;::::0;::::2;::::0;:51;;;;;-1:-1:-1;;4762:51:67;;;;;;;-1:-1:-1;4762:24:67;:51;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;5139:28;5170:14;:33;;;5204:12;5170:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;5170:47:67;;-1:-1:-1;5232:9:67::2;5227:209;5251:20;5247:1;:24;5227:209;;;5292:19;5314:14;:28;;;5343:12;5357:1;5314:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;5314:45:67;5373:52:::2;::::0;;;;;::::2;::::0;::::2;::::0;;;:25:::2;:52:::0;;::::2;::::0;;;;;;5314:45;;-1:-1:-1;5373:14:67::2;:25:::0;;::::2;::::0;::::2;::::0;:52;;;;;-1:-1:-1;;5373:52:67;;;;;;;;-1:-1:-1;5373:25:67;:52;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;5227:209;5273:3;;;;;5227:209;;;-1:-1:-1::0;5514:53:67::2;::::0;;;;;::::2;::::0;::::2;::::0;;;5561:4:::2;5514:53:::0;;;;;;:24:::2;:14;:24;::::0;::::2;::::0;:53;;;;;-1:-1:-1;;5514:53:67;;;;;;;-1:-1:-1;5514:24:67;:53;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;6016:22;6041:14;:33;;;6075:9;6041:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;6041:44:67;;-1:-1:-1;6095:16:67::2;::::0;6125:414:::2;6149:14;6145:1;:18;6125:414;;;6184:13;6200:14;:28;;;6229:9;6240:8;6200:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;6200:49:67;;-1:-1:-1;6267:22:67::2;::::0;::::2;6284:4;6267:22;6263:266;;6309:14;:25;;;6335:9;6346:5;6309:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;6263:266;;;6513:1;6502:12;;6263:266;-1:-1:-1::0;6165:3:67::2;;6125:414;;;-1:-1:-1::0;6778:51:67::2;::::0;;;;;::::2;::::0;::::2;::::0;;;6823:4:::2;6778:51:::0;;;;;;:25:::2;:14;:25;::::0;::::2;::::0;:51;;;;;-1:-1:-1;;6778:51:67;;;;;;;-1:-1:-1;6778:25:67;:51;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;6940:14;:33;;;6974:9;6940:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;6940:44:67;:49;6932:94:::2;;;::::0;;-1:-1:-1;;;6932:94:67;;::::2;;::::0;::::2;::::0;;;;;;;::::2;::::0;;;;;;;;;;;;;::::2;;7044:49;::::0;;;;;::::2;::::0;::::2;::::0;;;7087:4:::2;7044:49:::0;;;;;;:22:::2;:14;:22;::::0;::::2;::::0;:49;;;;;::::2;::::0;;;;;;;;:22;:49;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;7044:49:67;7036:96:::2;;;;-1:-1:-1::0;;;7036:96:67::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7150:51;::::0;;;;;::::2;::::0;::::2;::::0;;;7195:4:::2;7150:51:::0;;;;;;:22:::2;:14;:22;::::0;::::2;::::0;:51;;;;;::::2;::::0;;;;;;;;:22;:51;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;7150:51:67;7142:103:::2;;;;-1:-1:-1::0;;;7142:103:67::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7263:14;:33;;;7297:10;7263:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;7263:45:67;7312:1:::2;7263:50;7255:85;;;::::0;;-1:-1:-1;;;7255:85:67;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;7358:14;:33;;;7392:12;7358:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;7358:47:67;7409:1:::2;7358:52;7350:92;;;::::0;;-1:-1:-1;;;7350:92:67;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;7576:14;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;7576:28:67;7556:17:::2;:48:::0;7632:15:::2;7614;:33:::0;2164:7:::2;2139:13;2138:34;7657:5;:20:::0;7692:56:::2;2164:7;2139:13;7730:17;::::0;7692:56:::2;::::0;;2138:34;;;::::2;7692:56:::0;;::::2;::::0;::::2;::::0;;;;;;;;;::::2;2307:1:46;;;;;;;2654:19:63::0;:17;:19::i;:::-;3291:4464:67:o;2270:81::-;2332:19;2270:81;:::o;15236:102::-;15287:7;15313:18;:16;:18::i;10334:130::-;10384:7;10410:47;2256:8;10410:22;:20;:22::i;:::-;:26;;:47::i;15144:86::-;15218:5;;15144:86;:::o;7933:529::-;2276:21:46;:19;:21::i;:::-;8157:15:67::1;::::0;:40:::1;::::0;2256:8:::1;8157:19;:40::i;:::-;8138:15;:59;8134:115;;8213:25;:23;:25::i;:::-;8324:18;:16;:18::i;:::-;8280:40;8313:6;8280:14;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8280:28:67;;:32:::1;:40::i;:::-;:62;;8259:155;;;;-1:-1:-1::0;;;8259:155:67::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8424:14;:19;;;8444:2;8448:6;8424:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7933:529:::0;;:::o;8959:100::-;9037:15;;8959:100;:::o;2090:82::-;2138:34;2090:82;:::o;9374:104::-;9454:17;;9374:104;:::o;2378:56::-;2430:4;2378:56;:::o;2607:430:46:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;8623:84:67:-;2276:21:46;:19;:21::i;:::-;8675:14:67::1;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8623:84::o:0;10048:113::-;10106:7;10132:22;:20;:22::i;1297:109:51:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:51;;-1:-1:-1;1297:109:51;:::o;2201:63:67:-;2256:8;2201:63;:::o;2990:114::-;3083:14;2990:114;:::o;11161:145::-;11241:7;11267:32;11288:5;11295:3;11267:20;:32::i;:::-;11260:39;11161:145;-1:-1:-1;;;11161:145:67:o;10694:193::-;10774:15;;:40;;2256:8;10774:19;:40::i;:::-;10755:15;:59;;10747:98;;;;;-1:-1:-1;;;10747:98:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;10855:25;:23;:25::i;794:166:55:-;852:7;883:5;;;898:37;907:6;;;;852:7;898:8;:37::i;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;:::-;2420:181;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;11441:227:67:-;11492:7;11511:33;11547:49;11590:5;;11548:36;11568:15;;11548;:19;;:36;;;;:::i;:::-;11547:42;;:49::i;:::-;11613:17;;11511:85;;-1:-1:-1;11613:48:67;;11511:85;11613:21;:48::i;:::-;11606:55;;;11441:227;:::o;11847:306::-;11941:15;;11897:7;;11989:39;11941:15;2256:8;11989:18;:39::i;:::-;11970:15;:58;11966:150;;12044:25;:23;:25::i;:::-;-1:-1:-1;;12090:15:67;;12083:22;;12159:547;12237:5;;12213:21;12279:61;12301:38;12237:5;2256:8;12301:17;:38::i;:::-;12279:17;;;:21;:61::i;:::-;12252:88;-1:-1:-1;12366:71:67;2332:19;12366:35;:13;2430:4;12366:17;:35::i;:::-;:43;;:71::i;:::-;12350:87;;12463:19;12480:1;12463:12;;:16;;:19;;;;:::i;:::-;12448:12;:34;12510:15;;:40;;2256:8;12510:19;:40::i;:::-;12492:15;:58;12560:5;:21;;;12591:17;:36;;;12643:56;;;;;;;;;;;;;;;;;;;;;;;;;12159:547;;:::o;12980:1949::-;13061:7;13097:3;13088:5;:12;;13080:36;;;;;-1:-1:-1;;;13080:36:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;13154:15;;13201:5;;13393:41;13154:15;2256:8;13393:20;:41::i;:::-;13387:3;:47;13383:235;;;13469:41;:16;2256:8;13469:20;:41::i;:::-;13450:60;-1:-1:-1;13538:69:67;2332:19;13538:33;:11;2430:4;13538:15;:33::i;:69::-;13524:83;;13383:235;13643:41;:16;2256:8;13643:20;:41::i;:::-;13636:3;:48;;13628:78;;;;;-1:-1:-1;;;13628:78:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;13717:14;13750:13;13745:1154;13777:3;13769:5;:11;13745:1154;;;13816:16;13809:3;:23;13805:789;;13873:3;13911:41;:16;2256:8;13911:20;:41::i;:::-;13898:10;:54;13894:155;;;13989:41;:16;2256:8;13989:20;:41::i;:::-;13976:54;;13894:155;14090:5;14133:41;:16;2256:8;14133:20;:41::i;:::-;14117:12;:57;14113:287;;14261:5;;;;14113:287;14310:16;14295:12;:31;14291:109;;;-1:-1:-1;14365:16:67;14291:109;14427:57;14438:45;14454:28;:10;14469:12;14454:14;:28::i;:::-;14438:11;;:15;:45::i;:::-;14427:6;;:10;:57::i;:::-;14418:66;;14516:16;14507:5;:25;14503:77;;14556:5;;;;14503:77;13805:789;;;14627:41;:16;2256:8;14627:20;:41::i;:::-;14608:60;-1:-1:-1;14770:69:67;2430:4;14770:43;:11;2332:19;14770:15;:43::i;:69::-;14756:83;-1:-1:-1;2138:34:67;14860:27;;;14853:35;;;;13782:7;;13745:1154;;;-1:-1:-1;14916:6:67;12980:1949;-1:-1:-1;;;;;12980:1949:67:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1523:60:51;;1412:178;-1:-1:-1;;;1412:178:51:o;1375:166:55:-;1433:7;1452:37;1466:1;1461;:6;;5194:1:31;1452:8:55;:37::i;:::-;-1:-1:-1;1511:5:55;;;1375:166::o;2456:180::-;2514:7;2545:5;;;2560:51;2569:6;;;:20;;;2588:1;2583;2579;:5;;;;;;:10;2569:20;5291:1:31;2560:8:55;:51::i;2820:148::-;2882:7;2901:38;2910:6;;;5340:1:31;2901:8:55;:38::i;:::-;2960:1;2956;:5;;;;;;;2820:148;-1:-1:-1;;;2820:148:55:o;1459:126:31:-;-1:-1:-1;;;1754:18:31;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"INITIAL_RATE()":"4dbac733","RATE_DENOMINATOR()":"7efad8e0","RATE_REDUCTION_COEFFICIENT()":"21609bbf","RATE_REDUCTION_TIME()":"b87b5616","activate()":"0f15f4c0","available_supply()":"24f92a25","futureEpochTimeWrite()":"277dbafb","future_epoch_time_write()":"b26b238e","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getAvailableSupply()":"c167d1cd","getBalancerToken()":"c0039699","getFutureEpochTime()":"0dfbdce4","getInflationRate()":"819df2c4","getMiningEpoch()":"087905c9","getStartEpochSupply()":"55f74176","getStartEpochTime()":"4d2fa413","getVault()":"8d928af8","mint(address,uint256)":"40c10f19","mintableInTimeframe(uint256,uint256)":"c3b03fa8","mintable_in_timeframe(uint256,uint256)":"d725a9ca","rate()":"2c4e722e","snapshot()":"9711715a","startEpochTimeWrite()":"a228bced","start_epoch_time_write()":"adc4cf43","updateMiningParameters()":"cb626ae2","update_mining_parameters()":"d43b40fa"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IBalancerToken\",\"name\":\"balancerToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"supply\",\"type\":\"uint256\"}],\"name\":\"MiningParametersUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"INITIAL_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_COEFFICIENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"available_supply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"futureEpochTimeWrite\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"future_epoch_time_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAvailableSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFutureEpochTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getInflationRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMiningEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStartEpochSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStartEpochTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"mintableInTimeframe\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"mintable_in_timeframe\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startEpochTimeWrite\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"start_epoch_time_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateMiningParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"update_mining_parameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract exists as a consequence of the gauge systems needing to know a fixed inflation schedule in order to know how much BAL a gauge is allowed to mint. As this does not exist within the BAL token itself it is defined here, we must then wrap the token's minting functionality in order for this to be meaningful.\",\"kind\":\"dev\",\"methods\":{\"activate()\":{\"details\":\"Reverts if contract does not have sole minting powers over BAL (and no other minters can be added).\"},\"futureEpochTimeWrite()\":{\"returns\":{\"_0\":\"Timestamp of the next epoch\"}},\"future_epoch_time_write()\":{\"returns\":{\"_0\":\"Timestamp of the next epoch\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getBalancerToken()\":{\"details\":\"Returns the Balancer token.\"},\"mint(address,uint256)\":{\"details\":\"Callable only by addresses defined in the Balancer Authorizer contract\"},\"mintableInTimeframe(uint256,uint256)\":{\"params\":{\"end\":\"End of the time interval (timestamp)\",\"start\":\"Start of the time interval (timestamp)\"},\"returns\":{\"_0\":\"Tokens mintable from `start` till `end`\"}},\"mintable_in_timeframe(uint256,uint256)\":{\"params\":{\"end\":\"End of the time interval (timestamp)\",\"start\":\"Start of the time interval (timestamp)\"},\"returns\":{\"_0\":\"Tokens mintable from `start` till `end`\"}},\"snapshot()\":{\"details\":\"Callable only by addresses defined in the Balancer Authorizer contract\"},\"startEpochTimeWrite()\":{\"returns\":{\"_0\":\"Timestamp of the current epoch\"}},\"start_epoch_time_write()\":{\"returns\":{\"_0\":\"Timestamp of the current epoch\"}},\"updateMiningParameters()\":{\"details\":\"Callable by any address, but only once per epoch Total supply becomes slightly larger if this function is called late\"},\"update_mining_parameters()\":{\"details\":\"Callable by any address, but only once per epoch Total supply becomes slightly larger if this function is called late\"}},\"title\":\"Balancer Token Admin\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"activate()\":{\"notice\":\"Initiate BAL token inflation schedule\"},\"futureEpochTimeWrite()\":{\"notice\":\"Get timestamp of the next mining epoch start while simultaneously updating mining parameters\"},\"future_epoch_time_write()\":{\"notice\":\"Get timestamp of the next mining epoch start while simultaneously updating mining parameters\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getAvailableSupply()\":{\"notice\":\"Maximum allowable number of tokens in existence (claimed or unclaimed)\"},\"getFutureEpochTime()\":{\"notice\":\"Returns the start timestamp of the next epoch.\"},\"getInflationRate()\":{\"notice\":\"Returns the current inflation rate of BAL per second\"},\"getMiningEpoch()\":{\"notice\":\"Returns the current epoch number.\"},\"getStartEpochSupply()\":{\"notice\":\"Returns the available supply at the beginning of the current epoch.\"},\"getStartEpochTime()\":{\"notice\":\"Returns the start timestamp of the current epoch.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"mint(address,uint256)\":{\"notice\":\"Mint BAL tokens subject to the defined inflation schedule\"},\"mintableInTimeframe(uint256,uint256)\":{\"notice\":\"How much supply is mintable from start timestamp till end timestamp\"},\"mintable_in_timeframe(uint256,uint256)\":{\"notice\":\"How much supply is mintable from start timestamp till end timestamp\"},\"snapshot()\":{\"notice\":\"Perform a snapshot of BAL token balances\"},\"startEpochTimeWrite()\":{\"notice\":\"Get timestamp of the current mining epoch start while simultaneously updating mining parameters\"},\"start_epoch_time_write()\":{\"notice\":\"Get timestamp of the current mining epoch start while simultaneously updating mining parameters\"},\"updateMiningParameters()\":{\"notice\":\"Update mining rate and supply at the start of the epoch\"},\"update_mining_parameters()\":{\"notice\":\"Update mining rate and supply at the start of the epoch\"}},\"notice\":\"This contract holds all admin powers over the BAL token passing through calls while delegating access control to the Balancer Authorizer In addition, calls to the mint function must respect the inflation schedule as defined in this contract. As this contract is the only way to mint BAL tokens this ensures that the maximum allowed supply is enforced\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerTokenAdmin.sol\":\"BalancerTokenAdmin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/BalancerTokenAdmin.sol\":{\"keccak256\":\"0x0845e1c626af8ef5232b9ad016284ad5398ff74fb22b8e7693a0c80a787b0c9a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2ad3057cac2c04c1f13002f3ee7ff33912b495a268eaf9fdf80d97d05653a9ed\",\"dweb:/ipfs/QmQAFmPhMUkmib6Yt1acK8kgpKCT2mHWWutWURwC9B6GjB\"]}},\"version\":1}"}},"contracts/GaugeWorkingBalanceHelper.sol":{"GaugeWorkingBalanceHelper":{"abi":[{"inputs":[{"internalType":"contract IVeDelegationProxy","name":"veDelegationProxy","type":"address"},{"internalType":"bool","name":"readTotalSupplyFromVE","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrowDelegationProxy","outputs":[{"internalType":"contract IVeDelegation","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IGauge","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getWorkingBalanceToSupplyRatios","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IGauge","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getWorkingBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"readsTotalSupplyFromVE","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e060405234801561001057600080fd5b506040516109813803806109818339818101604052604081101561003357600080fd5b5080516020918201516001600160601b0319606083901b1660805260408051630458184560e11b81529051929391926001600160a01b038516926308b0308a9260048082019391829003018186803b15801561008e57600080fd5b505afa1580156100a2573d6000803e3d6000fd5b505050506040513d60208110156100b857600080fd5b50516001600160601b031960609190911b1660a052151560f81b60c0525060805160601c60a05160601c60c05160f81c61086761011a6000398061025f528061035652508061015252806103f2525080610176528061033352506108676000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063ce5a7e7d11610050578063ce5a7e7d146100a5578063daf02aff146100f9578063fd655c841461011557610067565b806308b0308a1461006c5780635f6e28f61461009d575b600080fd5b610074610150565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610074610174565b6100e0600480360360408110156100bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610198565b6040805192835260208301919091528051918290030190f35b61010161025d565b604080519115158252519081900360200190f35b6100e06004803603604081101561012b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610281565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000806000806101a88686610281565b9150915060008673ffffffffffffffffffffffffffffffffffffffff166317e280896040518163ffffffff1660e01b815260040160206040518083038186803b1580156101f457600080fd5b505afa158015610208573d6000803e3d6000fd5b505050506040513d602081101561021e57600080fd5b5051905060006102388461023284866106a4565b906106bd565b905061024484836106d3565b61024e84836106d3565b95509550505050509250929050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60008060008473ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156102ed57600080fd5b505afa158015610301573d6000803e3d6000fd5b505050506040513d602081101561031757600080fd5b50519050600061032f8267058d15e176280000610726565b90507f000000000000000000000000000000000000000000000000000000000000000060007f00000000000000000000000000000000000000000000000000000000000000006103f0578173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103bf57600080fd5b505afa1580156103d3573d6000803e3d6000fd5b505050506040513d60208110156103e957600080fd5b5051610483565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561045657600080fd5b505afa15801561046a573d6000803e3d6000fd5b505050506040513d602081101561048057600080fd5b50515b905080156106035760008273ffffffffffffffffffffffffffffffffffffffff1663bbf7408a896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156104f457600080fd5b505afa158015610508573d6000803e3d6000fd5b505050506040513d602081101561051e57600080fd5b5051604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff8c16916318160ddd916004808301926020929190829003018186803b15801561058c57600080fd5b505afa1580156105a0573d6000803e3d6000fd5b505050506040513d60208110156105b657600080fd5b505190506105f26105eb846105e56105d567058d15e176280000610759565b6105df8688610726565b90610726565b906106d3565b86906106a4565b94506105fe868661076b565b945050505b8773ffffffffffffffffffffffffffffffffffffffff166313ecb1ca886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561066a57600080fd5b505afa15801561067e573d6000803e3d6000fd5b505050506040513d602081101561069457600080fd5b5051989297509195505050505050565b60008282016106b68482101583610777565b9392505050565b60006106cd838311156001610777565b50900390565b60006106e28215156004610777565b670de0b6b3a7640000830261071484158061070d5750670de0b6b3a764000085838161070a57fe5b04145b6005610777565b82818161071d57fe5b04949350505050565b600082820261074a84158061074357508385838161074057fe5b04145b6003610777565b670de0b6b3a76400008161071d565b670de0b6b3a764000081810391100290565b80820390821102900390565b816107855761078581610789565b5050565b6107b3817f42414c00000000000000000000000000000000000000000000000000000000006107b6565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220e6abff5bbc8414acdb5d36a62489810d8808e964516e5a475259a0a0050f816d64736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x981 CODESIZE SUB DUP1 PUSH2 0x981 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0x80 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x4581845 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0x8B0308A SWAP3 PUSH1 0x4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH1 0xA0 MSTORE ISZERO ISZERO PUSH1 0xF8 SHL PUSH1 0xC0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0xF8 SHR PUSH2 0x867 PUSH2 0x11A PUSH1 0x0 CODECOPY DUP1 PUSH2 0x25F MSTORE DUP1 PUSH2 0x356 MSTORE POP DUP1 PUSH2 0x152 MSTORE DUP1 PUSH2 0x3F2 MSTORE POP DUP1 PUSH2 0x176 MSTORE DUP1 PUSH2 0x333 MSTORE POP PUSH2 0x867 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xCE5A7E7D GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xCE5A7E7D EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0xDAF02AFF EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0xFD655C84 EQ PUSH2 0x115 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x5F6E28F6 EQ PUSH2 0x9D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x74 PUSH2 0x174 JUMP JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x198 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x101 PUSH2 0x25D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x281 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1A8 DUP7 DUP7 PUSH2 0x281 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E28089 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x208 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x238 DUP5 PUSH2 0x232 DUP5 DUP7 PUSH2 0x6A4 JUMP JUMPDEST SWAP1 PUSH2 0x6BD JUMP JUMPDEST SWAP1 POP PUSH2 0x244 DUP5 DUP4 PUSH2 0x6D3 JUMP JUMPDEST PUSH2 0x24E DUP5 DUP4 PUSH2 0x6D3 JUMP JUMPDEST SWAP6 POP SWAP6 POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x301 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x32F DUP3 PUSH8 0x58D15E176280000 PUSH2 0x726 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x0 PUSH32 0x0 PUSH2 0x3F0 JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x483 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x46A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x603 JUMPI PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBBF7408A DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x508 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x18160DDD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP2 PUSH4 0x18160DDD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x58C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x5F2 PUSH2 0x5EB DUP5 PUSH2 0x5E5 PUSH2 0x5D5 PUSH8 0x58D15E176280000 PUSH2 0x759 JUMP JUMPDEST PUSH2 0x5DF DUP7 DUP9 PUSH2 0x726 JUMP JUMPDEST SWAP1 PUSH2 0x726 JUMP JUMPDEST SWAP1 PUSH2 0x6D3 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x6A4 JUMP JUMPDEST SWAP5 POP PUSH2 0x5FE DUP7 DUP7 PUSH2 0x76B JUMP JUMPDEST SWAP5 POP POP POP JUMPDEST DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x13ECB1CA DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x67E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP9 SWAP3 SWAP8 POP SWAP2 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x6B6 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x777 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6CD DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x777 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E2 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x777 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x714 DUP5 ISZERO DUP1 PUSH2 0x70D JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x70A JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x777 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x71D JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x74A DUP5 ISZERO DUP1 PUSH2 0x743 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x740 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x777 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 PUSH2 0x71D JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP2 LT MUL SWAP1 JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x785 JUMPI PUSH2 0x785 DUP2 PUSH2 0x789 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x7B3 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7B6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 0xAB SELFDESTRUCT JUMPDEST 0xBC DUP5 EQ 0xAC 0xDB 0x5D CALLDATASIZE 0xA6 0x24 DUP10 DUP2 0xD DUP9 ADDMOD 0xE9 PUSH5 0x516E5A4752 MSIZE LOG0 LOG0 SDIV 0xF DUP2 PUSH14 0x64736F6C63430007010033000000 ","sourceMap":"2115:4200:68:-:0;;;2640:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2640:244:68;;;;;;;-1:-1:-1;;;;;;2728:38:68;;;;;;;2640:244;2785:35;;-1:-1:-1;;;2785:35:68;;;;2640:244;;;;-1:-1:-1;;;;;2728:38:68;;;2785:33;;:35;;;;;;;;;;;2728:38;2785:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2785:35:68;-1:-1:-1;;;;;;2776:44:68;;;;;;;;2831:46;;;;;;-1:-1:-1;2115:4200:68;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"8798":[{"length":32,"start":374},{"length":32,"start":819}],"8800":[{"length":32,"start":338},{"length":32,"start":1010}],"8802":[{"length":32,"start":607},{"length":32,"start":854}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c8063ce5a7e7d11610050578063ce5a7e7d146100a5578063daf02aff146100f9578063fd655c841461011557610067565b806308b0308a1461006c5780635f6e28f61461009d575b600080fd5b610074610150565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610074610174565b6100e0600480360360408110156100bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610198565b6040805192835260208301919091528051918290030190f35b61010161025d565b604080519115158252519081900360200190f35b6100e06004803603604081101561012b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610281565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000806000806101a88686610281565b9150915060008673ffffffffffffffffffffffffffffffffffffffff166317e280896040518163ffffffff1660e01b815260040160206040518083038186803b1580156101f457600080fd5b505afa158015610208573d6000803e3d6000fd5b505050506040513d602081101561021e57600080fd5b5051905060006102388461023284866106a4565b906106bd565b905061024484836106d3565b61024e84836106d3565b95509550505050509250929050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60008060008473ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156102ed57600080fd5b505afa158015610301573d6000803e3d6000fd5b505050506040513d602081101561031757600080fd5b50519050600061032f8267058d15e176280000610726565b90507f000000000000000000000000000000000000000000000000000000000000000060007f00000000000000000000000000000000000000000000000000000000000000006103f0578173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103bf57600080fd5b505afa1580156103d3573d6000803e3d6000fd5b505050506040513d60208110156103e957600080fd5b5051610483565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561045657600080fd5b505afa15801561046a573d6000803e3d6000fd5b505050506040513d602081101561048057600080fd5b50515b905080156106035760008273ffffffffffffffffffffffffffffffffffffffff1663bbf7408a896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156104f457600080fd5b505afa158015610508573d6000803e3d6000fd5b505050506040513d602081101561051e57600080fd5b5051604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff8c16916318160ddd916004808301926020929190829003018186803b15801561058c57600080fd5b505afa1580156105a0573d6000803e3d6000fd5b505050506040513d60208110156105b657600080fd5b505190506105f26105eb846105e56105d567058d15e176280000610759565b6105df8688610726565b90610726565b906106d3565b86906106a4565b94506105fe868661076b565b945050505b8773ffffffffffffffffffffffffffffffffffffffff166313ecb1ca886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561066a57600080fd5b505afa15801561067e573d6000803e3d6000fd5b505050506040513d602081101561069457600080fd5b5051989297509195505050505050565b60008282016106b68482101583610777565b9392505050565b60006106cd838311156001610777565b50900390565b60006106e28215156004610777565b670de0b6b3a7640000830261071484158061070d5750670de0b6b3a764000085838161070a57fe5b04145b6005610777565b82818161071d57fe5b04949350505050565b600082820261074a84158061074357508385838161074057fe5b04145b6003610777565b670de0b6b3a76400008161071d565b670de0b6b3a764000081810391100290565b80820390821102900390565b816107855761078581610789565b5050565b6107b3817f42414c00000000000000000000000000000000000000000000000000000000006107b6565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220e6abff5bbc8414acdb5d36a62489810d8808e964516e5a475259a0a0050f816d64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xCE5A7E7D GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xCE5A7E7D EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0xDAF02AFF EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0xFD655C84 EQ PUSH2 0x115 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x5F6E28F6 EQ PUSH2 0x9D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x74 PUSH2 0x174 JUMP JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x198 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x101 PUSH2 0x25D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x281 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1A8 DUP7 DUP7 PUSH2 0x281 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E28089 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x208 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x238 DUP5 PUSH2 0x232 DUP5 DUP7 PUSH2 0x6A4 JUMP JUMPDEST SWAP1 PUSH2 0x6BD JUMP JUMPDEST SWAP1 POP PUSH2 0x244 DUP5 DUP4 PUSH2 0x6D3 JUMP JUMPDEST PUSH2 0x24E DUP5 DUP4 PUSH2 0x6D3 JUMP JUMPDEST SWAP6 POP SWAP6 POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x301 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x32F DUP3 PUSH8 0x58D15E176280000 PUSH2 0x726 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x0 PUSH32 0x0 PUSH2 0x3F0 JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x483 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x46A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x603 JUMPI PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBBF7408A DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x508 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x18160DDD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP2 PUSH4 0x18160DDD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x58C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x5F2 PUSH2 0x5EB DUP5 PUSH2 0x5E5 PUSH2 0x5D5 PUSH8 0x58D15E176280000 PUSH2 0x759 JUMP JUMPDEST PUSH2 0x5DF DUP7 DUP9 PUSH2 0x726 JUMP JUMPDEST SWAP1 PUSH2 0x726 JUMP JUMPDEST SWAP1 PUSH2 0x6D3 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x6A4 JUMP JUMPDEST SWAP5 POP PUSH2 0x5FE DUP7 DUP7 PUSH2 0x76B JUMP JUMPDEST SWAP5 POP POP POP JUMPDEST DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x13ECB1CA DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x67E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP9 SWAP3 SWAP8 POP SWAP2 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x6B6 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x777 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6CD DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x777 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E2 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x777 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x714 DUP5 ISZERO DUP1 PUSH2 0x70D JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x70A JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x777 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x71D JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x74A DUP5 ISZERO DUP1 PUSH2 0x743 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x740 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x777 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 PUSH2 0x71D JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP2 LT MUL SWAP1 JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x785 JUMPI PUSH2 0x785 DUP2 PUSH2 0x789 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x7B3 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7B6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 0xAB SELFDESTRUCT JUMPDEST 0xBC DUP5 EQ 0xAC 0xDB 0x5D CALLDATASIZE 0xA6 0x24 DUP10 DUP2 0xD DUP9 ADDMOD 0xE9 PUSH5 0x516E5A4752 MSIZE LOG0 LOG0 SDIV 0xF DUP2 PUSH14 0x64736F6C63430007010033000000 ","sourceMap":"2115:4200:68:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3217:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3000:122;;;:::i;5743:570::-;;;;;;;;;;;;;;;;-1:-1:-1;5743:570:68;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3485:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;4097:990;;;;;;;;;;;;;;;;-1:-1:-1;4097:990:68;;;;;;;;;;;:::i;3217:88::-;3292:6;3217:88;:::o;3000:122::-;3097:18;3000:122;:::o;5743:570::-;5835:7;5844;5864:29;5895:31;5930;5949:5;5956:4;5930:18;:31::i;:::-;5863:98;;;;5971:28;6002:5;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6002:22:68;;-1:-1:-1;6035:30:68;6068:76;6122:21;6068:49;6002:22;6093:23;6068:24;:49::i;:::-;:53;;:76::i;:::-;6035:109;-1:-1:-1;6176:51:68;:21;6206:20;6176:29;:51::i;:::-;6241:55;:23;6273:22;6241:31;:55::i;:::-;6155:151;;;;;;;;5743:570;;;;;:::o;3485:109::-;3565:22;3485:109;:::o;4097:990::-;4174:7;4183;4202:24;4229:5;:15;;;4245:4;4229:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4229:21:68;;-1:-1:-1;4260:31:68;4294:47;4229:21;2284:5;4294:24;:47::i;:::-;4260:81;-1:-1:-1;4378:18:68;4351:24;4431:22;:67;;4479:5;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4479:19:68;4431:67;;;4456:6;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4456:20:68;4431:67;4407:91;-1:-1:-1;4513:17:68;;4509:499;;4546:21;4570:5;:25;;;4596:4;4570:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4570:31:68;4642:19;;;;;;;;4570:31;;-1:-1:-1;4615:24:68;;4642:17;;;;;;:19;;;;;4570:31;;4642:19;;;;;;;:17;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4642:19:68;;-1:-1:-1;4702:203:68;4747:144;4860:13;4747:83;4795:34;2284:5;4795:32;:34::i;:::-;4747:39;:16;4772:13;4747:24;:39::i;:::-;:47;;:83::i;:::-;:91;;:144::i;:::-;4702:23;;:27;:203::i;:::-;4676:229;;4946:51;4955:16;4973:23;4946:8;:51::i;:::-;4920:77;;4509:499;;;5026:5;:22;;;5049:4;5026:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5026:28:68;;5056:23;;-1:-1:-1;4097:990:68;;-1:-1:-1;;;;;;4097:990:68:o;1343:239:53:-;1401:7;1505:5;;;1520:37;1529:6;;;;1401:7;1520:8;:37::i;:::-;1574:1;1343:239;-1:-1:-1;;;1343:239:53:o;1588:::-;1646:7;1738:37;1752:1;1747;:6;;5194:1:31;1738:8:53;:37::i;:::-;-1:-1:-1;1797:5:53;;;1588:239::o;2768:282::-;2830:7;2849:38;2858:6;;;5340:1:31;2849:8:53;:38::i;:::-;988:4;2918:7;;2935:61;2944:6;;;:30;;;988:4;2966:1;2954:9;:13;;;;;;:20;2944:30;5388:1:31;2935:8:53;:61::i;:::-;3042:1;3030:9;:13;;;;;;;2768:282;-1:-1:-1;;;;2768:282:53:o;1833:209::-;1895:7;1932:5;;;1947:57;1956:6;;;:26;;;1981:1;1976;1966:7;:11;;;;;;:16;1956:26;5291:1:31;1947:8:53;:57::i;:::-;988:4;2022:7;:13;;5977:230;6183:3;6179:11;;;6167:10;;6163:28;;6139:62::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"getVotingEscrow()":"08b0308a","getVotingEscrowDelegationProxy()":"5f6e28f6","getWorkingBalanceToSupplyRatios(address,address)":"ce5a7e7d","getWorkingBalances(address,address)":"fd655c84","readsTotalSupplyFromVE()":"daf02aff"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVeDelegationProxy\",\"name\":\"veDelegationProxy\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"readTotalSupplyFromVE\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrowDelegationProxy\",\"outputs\":[{\"internalType\":\"contract IVeDelegation\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getWorkingBalanceToSupplyRatios\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getWorkingBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"readsTotalSupplyFromVE\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The `working_balance` can range between 40% and 100% of the nominal user balance on a gauge, depending on the veBAL \\\"voting power\\\" of the user with respect to the total \\\"voting power\\\" supply. This value generally decays over time, but will increase with additional veBAL locking. Also computes the working balance ratios: balance/supply, which is more informative when deciding whether it would be advantageous for the user to checkpoint a gauge.\",\"kind\":\"dev\",\"methods\":{\"getVotingEscrow()\":{\"details\":\"Returns the VotingEscrow contract associated with the proxy.\"},\"getVotingEscrowDelegationProxy()\":{\"details\":\"Returns the VotingEscrowDelegationProxy (as an IVeDelegation, which is exported).\"},\"getWorkingBalanceToSupplyRatios(address,address)\":{\"details\":\"There is also a \\\"working\\\" supply, needed to ensure that all the emissions are allocated. Compute and return the balance/supply ratios. This captures the behavior of other users, and more accurately reflects this user's relative position.\",\"params\":{\"gauge\":\"- address of a gauge (L1 or L2).\",\"user\":\"- address of a user.\"},\"returns\":{\"_0\":\"ratio of the current `working_balance` of the user to the current `working_supply` of the gauge.\",\"_1\":\"ratio of the projected `working_balance` of the user (after `user_checkpoint`), to the projected `working_supply` of the gauge.\"}},\"getWorkingBalances(address,address)\":{\"details\":\"The gauge allocates 60% of the emissions it receives to veBAL holders, which it accomplishes by computing an effective \\\"working\\\" balance for each user, starting with 40% of the true balance (i.e., BPT deposited in the gauge), and adding a \\\"boost\\\" proportional to that user's share of the total voting power.\",\"params\":{\"gauge\":\"- address of a gauge (L1 or L2).\",\"user\":\"- address of a user.\"},\"returns\":{\"_0\":\"current and projected balances.\"}},\"readsTotalSupplyFromVE()\":{\"details\":\"Returns whether the total supply will be read from the VotingEscrow contract. If false, it will be read from the delegation proxy instead.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Get the current and projected `working_balance` (effective veBAL boosted balance) for a user on a gauge.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/GaugeWorkingBalanceHelper.sol\":\"GaugeWorkingBalanceHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\":{\"keccak256\":\"0xd4ebf4ceca6fa99ec2149d60b36084674621ae87e8a7786b23501749da8cc581\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7dd20ed7be933a3d8ec0be284b8f7f123e69ecb29731e35f70c371eb4f5e26c8\",\"dweb:/ipfs/QmfPp5sBxn92hg32fPFTDBB5kuHP9qU4jN3bSfip8uCnQ6\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"contracts/GaugeWorkingBalanceHelper.sol\":{\"keccak256\":\"0xcbc734e03f299bcabaedbd92e8960bffd49392e4c1d7c73cc7736f8884bf976a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f1a7bd26135a5cd6069f9c9b843b0e14f3162157f838d823ce5d71a9bfcf936e\",\"dweb:/ipfs/QmWQeGYp9Ukoccd8RhRjUvsR1EBC1hG5VQ3x66TkvFUtSP\"]}},\"version\":1}"},"IGauge":{"abi":[{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"working_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"working_supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"balanceOf(address)":"70a08231","totalSupply()":"18160ddd","working_balances(address)":"13ecb1ca","working_supply()":"17e28089"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"working_balances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"working_supply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/GaugeWorkingBalanceHelper.sol\":\"IGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\":{\"keccak256\":\"0xd4ebf4ceca6fa99ec2149d60b36084674621ae87e8a7786b23501749da8cc581\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7dd20ed7be933a3d8ec0be284b8f7f123e69ecb29731e35f70c371eb4f5e26c8\",\"dweb:/ipfs/QmfPp5sBxn92hg32fPFTDBB5kuHP9qU4jN3bSfip8uCnQ6\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"contracts/GaugeWorkingBalanceHelper.sol\":{\"keccak256\":\"0xcbc734e03f299bcabaedbd92e8960bffd49392e4c1d7c73cc7736f8884bf976a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f1a7bd26135a5cd6069f9c9b843b0e14f3162157f838d823ce5d71a9bfcf936e\",\"dweb:/ipfs/QmWQeGYp9Ukoccd8RhRjUvsR1EBC1hG5VQ3x66TkvFUtSP\"]}},\"version\":1}"},"IVeDelegationProxy":{"abi":[{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"adjusted_balance_of","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"adjusted_balance_of(address)":"bbf7408a","getVotingEscrow()":"08b0308a","totalSupply()":"18160ddd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"adjusted_balance_of\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/GaugeWorkingBalanceHelper.sol\":\"IVeDelegationProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\":{\"keccak256\":\"0xd4ebf4ceca6fa99ec2149d60b36084674621ae87e8a7786b23501749da8cc581\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7dd20ed7be933a3d8ec0be284b8f7f123e69ecb29731e35f70c371eb4f5e26c8\",\"dweb:/ipfs/QmfPp5sBxn92hg32fPFTDBB5kuHP9qU4jN3bSfip8uCnQ6\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"contracts/GaugeWorkingBalanceHelper.sol\":{\"keccak256\":\"0xcbc734e03f299bcabaedbd92e8960bffd49392e4c1d7c73cc7736f8884bf976a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f1a7bd26135a5cd6069f9c9b843b0e14f3162157f838d823ce5d71a9bfcf936e\",\"dweb:/ipfs/QmWQeGYp9Ukoccd8RhRjUvsR1EBC1hG5VQ3x66TkvFUtSP\"]}},\"version\":1}"}},"contracts/L2BalancerPseudoMinter.sol":{"L2BalancerPseudoMinter":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IERC20","name":"balancerToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ILiquidityGaugeFactory","name":"factory","type":"address"}],"name":"GaugeFactoryAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ILiquidityGaugeFactory","name":"factory","type":"address"}],"name":"GaugeFactoryRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"uint256","name":"minted","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"bool","name":"approval","type":"bool"}],"name":"MinterApprovalSet","type":"event"},{"inputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"factory","type":"address"}],"name":"addGaugeFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"allowed_to_mint_for","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getMinterApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"factory","type":"address"}],"name":"isValidGaugeFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"mintManyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mint_for","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[8]","name":"gauges","type":"address[8]"}],"name":"mint_many","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"factory","type":"address"}],"name":"removeGaugeFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"}],"name":"setMinterApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"setMinterApprovalWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"toggle_approve_mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"61014060405234801561001157600080fd5b5060405161186a38038061186a8339818101604052604081101561003457600080fd5b508051602091820151604080518082018252601681527f42616c616e6365722050736575646f204d696e7465720000000000000000000081860190815282518084019093526001808452603160f81b968401968752600055905190206080525190922060a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526001600160601b0319606092831b811660e0523061010052911b166101205260805160a05160c05160e05160601c610100516101205160601c61173e61012c600039806109eb525080610953525080610b19525080610e25525080610e67525080610e46525061173e6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c8063851c1bb3116100d8578063a51e19041161008c578063c654279411610066578063c6542794146104c1578063dd289d6014610512578063ed24911d1461053857610177565b8063a51e190414610494578063aaabadc5146104b1578063c0039699146104b957610177565b80638d928af8116100bd5780638d928af81461044a57806390193b7c1461046e578063a0990033146102fb57610177565b8063851c1bb3146103dd5780638b752bb01461041c57610177565b80633c543bc61161012f5780636c71e920116101145780636c71e920146103635780637504a15d146103895780637a60e63a146103b757610177565b80633c543bc6146102fb5780636a6278421461033d57610177565b806338f121521161016057806338f12152146101da578063397ada21146102005780633b9f73841461028257610177565b80630de54ba01461017c57806327f18ae3146101ac575b600080fd5b6101aa6004803603604081101561019257600080fd5b506001600160a01b0381351690602001351515610540565b005b6101aa600480360360408110156101c257600080fd5b506001600160a01b038135811691602001351661054f565b6101aa600480360360208110156101f057600080fd5b50356001600160a01b0316610597565b6102706004803603602081101561021657600080fd5b81019060208101813564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184602083028401116401000000008311171561026557600080fd5b509092509050610691565b60408051918252519081900360200190f35b6102706004803603604081101561029857600080fd5b8101906020810181356401000000008111156102b357600080fd5b8201836020820111156102c557600080fd5b803590602001918460208302840111640100000000831117156102e757600080fd5b9193509150356001600160a01b03166106b6565b6103296004803603604081101561031157600080fd5b506001600160a01b0381358116916020013516610758565b604080519115158252519081900360200190f35b6102706004803603602081101561035357600080fd5b50356001600160a01b0316610786565b6103296004803603602081101561037957600080fd5b50356001600160a01b03166107a9565b6102706004803603604081101561039f57600080fd5b506001600160a01b03813581169160200135166107c7565b6101aa600480360360208110156103cd57600080fd5b50356001600160a01b0316610857565b610270600480360360208110156103f357600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661094d565b6102706004803603604081101561043257600080fd5b506001600160a01b03813581169160200135166109be565b6104526109e9565b604080516001600160a01b039092168252519081900360200190f35b6102706004803603602081101561048457600080fd5b50356001600160a01b0316610a0d565b6101aa60048036036101008110156104ab57600080fd5b50610a28565b610452610aa4565b610452610b17565b6101aa600480360360e08110156104d757600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060ff6080820135169060a08101359060c00135610b3b565b6101aa6004803603602081101561052857600080fd5b50356001600160a01b0316610be0565b610270610c13565b61054b823383610c22565b5050565b610557610cb1565b3360009081526003602090815260408083206001600160a01b038516845290915290205460ff161561058f5761058d8282610cca565b505b61054b610ce2565b61059f610ce9565b6001600160a01b03811660009081526004602052604090205460ff161561062757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464143544f52595f414c52454144595f41444445440000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f8e2924dc08a7879532dca0c2c0460bd67eb431ab342df45afd2c4f7288aab9b79190a250565b600061069b610cb1565b6106a6838333610d2f565b90506106b0610ce2565b92915050565b60006106c0610cb1565b3360009081526003602090815260408083206001600160a01b038616845290915290205460ff1661073c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116e66023913960400191505060405180910390fd5b610747848484610d2f565b9050610751610ce2565b9392505050565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6000610790610cb1565b61079a8233610cca565b90506107a4610ce2565b919050565b6001600160a01b031660009081526004602052604090205460ff1690565b60006107d1610cb1565b3360009081526003602090815260408083206001600160a01b038616845290915290205460ff1661084d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116e66023913960400191505060405180910390fd5b6106a68383610cca565b61085f610ce9565b6001600160a01b03811660009081526004602052604090205460ff166108e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f464143544f52595f4e4f545f4144444544000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fdc66290a40b716cd9557c1d6c84315e06de88697ee252b89e1a9a9b053dc307b9190a250565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031660009081526001602052604090205490565b610a30610cb1565b60005b6008811015610a98576000828260088110610a4a57fe5b60200201356001600160a01b03166001600160a01b03161415610a6c57610a98565b610a8f828260088110610a7b57fe5b60200201356001600160a01b031633610cca565b50600101610a33565b50610aa1610ce2565b50565b6000610aae6109e9565b6001600160a01b031663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae657600080fd5b505afa158015610afa573d6000803e3d6000fd5b505050506040513d6020811015610b1057600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007fc87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd8153808888610b6989610a0d565b604080516020808201969096526001600160a01b03909416848201529115156060840152608083015260a08083018990528151808403909101815260c0909201905280519101209050610bcb8682610bc2878787610d88565b886101f8610dc7565b610bd6888789610c22565b5050505050505050565b6001600160a01b0381166000908152600360209081526040808320338452909152902054610aa190829060ff1615610540565b6000610c1d610e21565b905090565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291519293927fa3ffb51320bbca4e61e7423e3c97dd7bd7e31b6ea7429eb26ef92780e84572a09281900390910190a3505050565b610cc360026000541415610190610edf565b6002600055565b6000610cd68383610eed565b90506106b082826111f1565b6001600055565b6000610d186000357fffffffff000000000000000000000000000000000000000000000000000000001661094d565b9050610aa1610d278233611214565b610191610edf565b600082815b81811015610d7557610d6b610d64878784818110610d4e57fe5b905060200201356001600160a01b031686610eed565b84906112b6565b9250600101610d34565b50610d8083836111f1565b509392505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610dd2856112c8565b9050610de8610de287838761132f565b83610edf565b610df7428410156101b8610edf565b5050506001600160a01b039092166000908152600160208190526040909120805490910190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610e8e61141a565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b8161054b5761054b8161141e565b6000808390506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2e57600080fd5b505afa158015610f42573d6000803e3d6000fd5b505050506040513d6020811015610f5857600080fd5b50519050610f65816107a9565b610fd057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e56414c49445f47415547455f464143544f52590000000000000000000000604482015290519081900360640190fd5b806001600160a01b031663ce3cc8bd866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561101d57600080fd5b505afa158015611031573d6000803e3d6000fd5b505050506040513d602081101561104757600080fd5b50516110b457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f474155474500000000000000000000000000000000000000604482015290519081900360640190fd5b816001600160a01b0316634b820093856040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561110357600080fd5b505af1158015611117573d6000803e3d6000fd5b505050506040513d602081101561112d57600080fd5b5050604080517f094007070000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291516000928516916309400707916024808301926020929190829003018186803b15801561119357600080fd5b505afa1580156111a7573d6000803e3d6000fd5b505050506040513d60208110156111bd57600080fd5b505190506111d56111ce86886109be565b8290611448565b935083156111e8576111e8858783611456565b50505092915050565b801561054b5761054b8282611204610b17565b6001600160a01b031691906114c0565b600061121e610aa4565b6001600160a01b0316639be2a8848484306040518463ffffffff1660e01b815260040180848152602001836001600160a01b03168152602001826001600160a01b03168152602001935050505060206040518083038186803b15801561128357600080fd5b505afa158015611297573d6000803e3d6000fd5b505050506040513d60208110156112ad57600080fd5b50519392505050565b60008282016107518482101583610edf565b60006112d2610e21565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061134182516041146101b9610edf565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113ba573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b0381161580159061140e5750876001600160a01b0316816001600160a01b0316145b98975050505050505050565b4690565b610aa1817f42414c0000000000000000000000000000000000000000000000000000000000611545565b6000610751838360016115c0565b6001600160a01b0380841660008181526002602090815260408083209487168084529482529182902085905581519384528301849052805191927f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0929081900390910190a2505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526115409084906115d6565b505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006115cf8484111583610edf565b5050900390565b60006060836001600160a01b0316836040518082805190602001908083835b6020831061163257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016115f5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611694576040519150601f19603f3d011682016040523d82523d6000602084013e611699565b606091505b509150915060008214156116b1573d6000803e3d6000fd5b6116df8151600014806116d757508180602001905160208110156116d457600080fd5b50515b6101a2610edf565b5050505056fe43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572a264697066735822122005677f94e7ea6a2444d7f4fbf5d6ed58b909bbe2f899066c14189e624a34d2ff64736f6c63430007010033","opcodes":"PUSH2 0x140 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x186A CODESIZE SUB DUP1 PUSH2 0x186A DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH32 0x42616C616E6365722050736575646F204D696E74657200000000000000000000 DUP2 DUP7 ADD SWAP1 DUP2 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP1 DUP5 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP7 DUP5 ADD SWAP7 DUP8 MSTORE PUSH1 0x0 SSTORE SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE MLOAD SWAP1 SWAP3 KECCAK256 PUSH1 0xA0 MSTORE PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0xE0 MSTORE ADDRESS PUSH2 0x100 MSTORE SWAP2 SHL AND PUSH2 0x120 MSTORE PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x173E PUSH2 0x12C PUSH1 0x0 CODECOPY DUP1 PUSH2 0x9EB MSTORE POP DUP1 PUSH2 0x953 MSTORE POP DUP1 PUSH2 0xB19 MSTORE POP DUP1 PUSH2 0xE25 MSTORE POP DUP1 PUSH2 0xE67 MSTORE POP DUP1 PUSH2 0xE46 MSTORE POP PUSH2 0x173E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x177 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xA51E1904 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC6542794 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC6542794 EQ PUSH2 0x4C1 JUMPI DUP1 PUSH4 0xDD289D60 EQ PUSH2 0x512 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x538 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0xA51E1904 EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x4B9 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x44A JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0xA0990033 EQ PUSH2 0x2FB JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x3DD JUMPI DUP1 PUSH4 0x8B752BB0 EQ PUSH2 0x41C JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x6C71E920 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x6C71E920 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x7504A15D EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x7A60E63A EQ PUSH2 0x3B7 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x33D JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x38F12152 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x38F12152 EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x397ADA21 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x3B9F7384 EQ PUSH2 0x282 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0xDE54BA0 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x27F18AE3 EQ PUSH2 0x1AC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x540 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x54F JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x597 JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x691 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6B6 JUMP JUMPDEST PUSH2 0x329 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x758 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x786 JUMP JUMPDEST PUSH2 0x329 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7A9 JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7C7 JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x857 JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x94D JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9BE JUMP JUMPDEST PUSH2 0x452 PUSH2 0x9E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0D JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA28 JUMP JUMPDEST PUSH2 0x452 PUSH2 0xAA4 JUMP JUMPDEST PUSH2 0x452 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xB3B JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBE0 JUMP JUMPDEST PUSH2 0x270 PUSH2 0xC13 JUMP JUMPDEST PUSH2 0x54B DUP3 CALLER DUP4 PUSH2 0xC22 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x557 PUSH2 0xCB1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x58F JUMPI PUSH2 0x58D DUP3 DUP3 PUSH2 0xCCA JUMP JUMPDEST POP JUMPDEST PUSH2 0x54B PUSH2 0xCE2 JUMP JUMPDEST PUSH2 0x59F PUSH2 0xCE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x627 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x464143544F52595F414C52454144595F41444445440000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x8E2924DC08A7879532DCA0C2C0460BD67EB431AB342DF45AFD2C4F7288AAB9B7 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x69B PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0x6A6 DUP4 DUP4 CALLER PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP PUSH2 0x6B0 PUSH2 0xCE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C0 PUSH2 0xCB1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16E6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x747 DUP5 DUP5 DUP5 PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP PUSH2 0x751 PUSH2 0xCE2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x790 PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0x79A DUP3 CALLER PUSH2 0xCCA JUMP JUMPDEST SWAP1 POP PUSH2 0x7A4 PUSH2 0xCE2 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D1 PUSH2 0xCB1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x84D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16E6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6A6 DUP4 DUP4 PUSH2 0xCCA JUMP JUMPDEST PUSH2 0x85F PUSH2 0xCE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x8E6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x464143544F52595F4E4F545F4144444544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE MLOAD PUSH32 0xDC66290A40B716CD9557C1D6C84315E06DE88697EE252B89E1A9A9B053DC307B SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xA30 PUSH2 0xCB1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0xA98 JUMPI PUSH1 0x0 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0xA4A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xA6C JUMPI PUSH2 0xA98 JUMP JUMPDEST PUSH2 0xA8F DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0xA7B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0xCCA JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xA33 JUMP JUMPDEST POP PUSH2 0xAA1 PUSH2 0xCE2 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAAE PUSH2 0x9E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAFA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xC87351A089BBDC3B2B9299D2CE29F08FD982826B275B3642939A2F7FDD815380 DUP9 DUP9 PUSH2 0xB69 DUP10 PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP10 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH2 0xBCB DUP7 DUP3 PUSH2 0xBC2 DUP8 DUP8 DUP8 PUSH2 0xD88 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xDC7 JUMP JUMPDEST PUSH2 0xBD6 DUP9 DUP8 DUP10 PUSH2 0xC22 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xAA1 SWAP1 DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x540 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC1D PUSH2 0xE21 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xA3FFB51320BBCA4E61E7423E3C97DD7BD7E31B6EA7429EB26EF92780E84572A0 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xCC3 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCD6 DUP4 DUP4 PUSH2 0xEED JUMP JUMPDEST SWAP1 POP PUSH2 0x6B0 DUP3 DUP3 PUSH2 0x11F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD18 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x94D JUMP JUMPDEST SWAP1 POP PUSH2 0xAA1 PUSH2 0xD27 DUP3 CALLER PUSH2 0x1214 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD75 JUMPI PUSH2 0xD6B PUSH2 0xD64 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0xD4E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH2 0xEED JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x12B6 JUMP JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xD34 JUMP JUMPDEST POP PUSH2 0xD80 DUP4 DUP4 PUSH2 0x11F1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD2 DUP6 PUSH2 0x12C8 JUMP JUMPDEST SWAP1 POP PUSH2 0xDE8 PUSH2 0xDE2 DUP8 DUP4 DUP8 PUSH2 0x132F JUMP JUMPDEST DUP4 PUSH2 0xEDF JUMP JUMPDEST PUSH2 0xDF7 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xEDF JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xE8E PUSH2 0x141A JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x54B JUMPI PUSH2 0x54B DUP2 PUSH2 0x141E JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC45A0155 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0xF65 DUP2 PUSH2 0x7A9 JUMP JUMPDEST PUSH2 0xFD0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F47415547455F464143544F52590000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCE3CC8BD DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1031 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1047 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x10B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F474155474500000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4B820093 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1117 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x112D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x940070700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP6 AND SWAP2 PUSH4 0x9400707 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x11D5 PUSH2 0x11CE DUP7 DUP9 PUSH2 0x9BE JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x1448 JUMP JUMPDEST SWAP4 POP DUP4 ISZERO PUSH2 0x11E8 JUMPI PUSH2 0x11E8 DUP6 DUP8 DUP4 PUSH2 0x1456 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x54B JUMPI PUSH2 0x54B DUP3 DUP3 PUSH2 0x1204 PUSH2 0xB17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x14C0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x121E PUSH2 0xAA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1297 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x751 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12D2 PUSH2 0xE21 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1341 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x140E JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH2 0xAA1 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1545 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x751 DUP4 DUP4 PUSH1 0x1 PUSH2 0x15C0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE DUP4 ADD DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 PUSH32 0x9D228D69B5FDB8D273A2336F8FB8612D039631024EA9BF09C424A9503AA078F0 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1540 SWAP1 DUP5 SWAP1 PUSH2 0x15D6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x15CF DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xEDF JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1632 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x15F5 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1694 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1699 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x16B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x16DF DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x16D7 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0xEDF JUMP JUMPDEST POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6C6C PUSH6 0x72206E6F7420 PUSH2 0x6C6C PUSH16 0x77656420746F206D696E7420666F7220 PUSH22 0x736572A264697066735822122005677F94E7EA6A2444 0xD7 DELEGATECALL 0xFB CREATE2 0xD6 0xED PC 0xB9 MULMOD 0xBB 0xE2 0xF8 SWAP10 MOD PUSH13 0x14189E624A34D2FF64736F6C63 NUMBER STOP SMOD ADD STOP CALLER ","sourceMap":"2123:4144:69:-:0;;;2480:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2480:224:69;;;;;;;;1821:152:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1821:152:66;;;;;;1030:31:51;2175:22:63;2100::58;;;;2085:37;;2150:25;;;;2132:43;;2198:95;2185:108;;-1:-1:-1;;;;;;1952:14:66::1;::::0;;;;;::::1;::::0;1054:4:51;2049:46:46;;1073:14:51;;;::::1;::::0;2123:4144:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":2387}],"3611":[{"length":32,"start":2539}],"5935":[{"length":32,"start":3654}],"5937":[{"length":32,"start":3687}],"5939":[{"length":32,"start":3621}],"7437":[{"length":32,"start":2841}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101775760003560e01c8063851c1bb3116100d8578063a51e19041161008c578063c654279411610066578063c6542794146104c1578063dd289d6014610512578063ed24911d1461053857610177565b8063a51e190414610494578063aaabadc5146104b1578063c0039699146104b957610177565b80638d928af8116100bd5780638d928af81461044a57806390193b7c1461046e578063a0990033146102fb57610177565b8063851c1bb3146103dd5780638b752bb01461041c57610177565b80633c543bc61161012f5780636c71e920116101145780636c71e920146103635780637504a15d146103895780637a60e63a146103b757610177565b80633c543bc6146102fb5780636a6278421461033d57610177565b806338f121521161016057806338f12152146101da578063397ada21146102005780633b9f73841461028257610177565b80630de54ba01461017c57806327f18ae3146101ac575b600080fd5b6101aa6004803603604081101561019257600080fd5b506001600160a01b0381351690602001351515610540565b005b6101aa600480360360408110156101c257600080fd5b506001600160a01b038135811691602001351661054f565b6101aa600480360360208110156101f057600080fd5b50356001600160a01b0316610597565b6102706004803603602081101561021657600080fd5b81019060208101813564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184602083028401116401000000008311171561026557600080fd5b509092509050610691565b60408051918252519081900360200190f35b6102706004803603604081101561029857600080fd5b8101906020810181356401000000008111156102b357600080fd5b8201836020820111156102c557600080fd5b803590602001918460208302840111640100000000831117156102e757600080fd5b9193509150356001600160a01b03166106b6565b6103296004803603604081101561031157600080fd5b506001600160a01b0381358116916020013516610758565b604080519115158252519081900360200190f35b6102706004803603602081101561035357600080fd5b50356001600160a01b0316610786565b6103296004803603602081101561037957600080fd5b50356001600160a01b03166107a9565b6102706004803603604081101561039f57600080fd5b506001600160a01b03813581169160200135166107c7565b6101aa600480360360208110156103cd57600080fd5b50356001600160a01b0316610857565b610270600480360360208110156103f357600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661094d565b6102706004803603604081101561043257600080fd5b506001600160a01b03813581169160200135166109be565b6104526109e9565b604080516001600160a01b039092168252519081900360200190f35b6102706004803603602081101561048457600080fd5b50356001600160a01b0316610a0d565b6101aa60048036036101008110156104ab57600080fd5b50610a28565b610452610aa4565b610452610b17565b6101aa600480360360e08110156104d757600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060ff6080820135169060a08101359060c00135610b3b565b6101aa6004803603602081101561052857600080fd5b50356001600160a01b0316610be0565b610270610c13565b61054b823383610c22565b5050565b610557610cb1565b3360009081526003602090815260408083206001600160a01b038516845290915290205460ff161561058f5761058d8282610cca565b505b61054b610ce2565b61059f610ce9565b6001600160a01b03811660009081526004602052604090205460ff161561062757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464143544f52595f414c52454144595f41444445440000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f8e2924dc08a7879532dca0c2c0460bd67eb431ab342df45afd2c4f7288aab9b79190a250565b600061069b610cb1565b6106a6838333610d2f565b90506106b0610ce2565b92915050565b60006106c0610cb1565b3360009081526003602090815260408083206001600160a01b038616845290915290205460ff1661073c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116e66023913960400191505060405180910390fd5b610747848484610d2f565b9050610751610ce2565b9392505050565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6000610790610cb1565b61079a8233610cca565b90506107a4610ce2565b919050565b6001600160a01b031660009081526004602052604090205460ff1690565b60006107d1610cb1565b3360009081526003602090815260408083206001600160a01b038616845290915290205460ff1661084d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116e66023913960400191505060405180910390fd5b6106a68383610cca565b61085f610ce9565b6001600160a01b03811660009081526004602052604090205460ff166108e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f464143544f52595f4e4f545f4144444544000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fdc66290a40b716cd9557c1d6c84315e06de88697ee252b89e1a9a9b053dc307b9190a250565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031660009081526001602052604090205490565b610a30610cb1565b60005b6008811015610a98576000828260088110610a4a57fe5b60200201356001600160a01b03166001600160a01b03161415610a6c57610a98565b610a8f828260088110610a7b57fe5b60200201356001600160a01b031633610cca565b50600101610a33565b50610aa1610ce2565b50565b6000610aae6109e9565b6001600160a01b031663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae657600080fd5b505afa158015610afa573d6000803e3d6000fd5b505050506040513d6020811015610b1057600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007fc87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd8153808888610b6989610a0d565b604080516020808201969096526001600160a01b03909416848201529115156060840152608083015260a08083018990528151808403909101815260c0909201905280519101209050610bcb8682610bc2878787610d88565b886101f8610dc7565b610bd6888789610c22565b5050505050505050565b6001600160a01b0381166000908152600360209081526040808320338452909152902054610aa190829060ff1615610540565b6000610c1d610e21565b905090565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291519293927fa3ffb51320bbca4e61e7423e3c97dd7bd7e31b6ea7429eb26ef92780e84572a09281900390910190a3505050565b610cc360026000541415610190610edf565b6002600055565b6000610cd68383610eed565b90506106b082826111f1565b6001600055565b6000610d186000357fffffffff000000000000000000000000000000000000000000000000000000001661094d565b9050610aa1610d278233611214565b610191610edf565b600082815b81811015610d7557610d6b610d64878784818110610d4e57fe5b905060200201356001600160a01b031686610eed565b84906112b6565b9250600101610d34565b50610d8083836111f1565b509392505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610dd2856112c8565b9050610de8610de287838761132f565b83610edf565b610df7428410156101b8610edf565b5050506001600160a01b039092166000908152600160208190526040909120805490910190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610e8e61141a565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b8161054b5761054b8161141e565b6000808390506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2e57600080fd5b505afa158015610f42573d6000803e3d6000fd5b505050506040513d6020811015610f5857600080fd5b50519050610f65816107a9565b610fd057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e56414c49445f47415547455f464143544f52590000000000000000000000604482015290519081900360640190fd5b806001600160a01b031663ce3cc8bd866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561101d57600080fd5b505afa158015611031573d6000803e3d6000fd5b505050506040513d602081101561104757600080fd5b50516110b457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f474155474500000000000000000000000000000000000000604482015290519081900360640190fd5b816001600160a01b0316634b820093856040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561110357600080fd5b505af1158015611117573d6000803e3d6000fd5b505050506040513d602081101561112d57600080fd5b5050604080517f094007070000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291516000928516916309400707916024808301926020929190829003018186803b15801561119357600080fd5b505afa1580156111a7573d6000803e3d6000fd5b505050506040513d60208110156111bd57600080fd5b505190506111d56111ce86886109be565b8290611448565b935083156111e8576111e8858783611456565b50505092915050565b801561054b5761054b8282611204610b17565b6001600160a01b031691906114c0565b600061121e610aa4565b6001600160a01b0316639be2a8848484306040518463ffffffff1660e01b815260040180848152602001836001600160a01b03168152602001826001600160a01b03168152602001935050505060206040518083038186803b15801561128357600080fd5b505afa158015611297573d6000803e3d6000fd5b505050506040513d60208110156112ad57600080fd5b50519392505050565b60008282016107518482101583610edf565b60006112d2610e21565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061134182516041146101b9610edf565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113ba573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b0381161580159061140e5750876001600160a01b0316816001600160a01b0316145b98975050505050505050565b4690565b610aa1817f42414c0000000000000000000000000000000000000000000000000000000000611545565b6000610751838360016115c0565b6001600160a01b0380841660008181526002602090815260408083209487168084529482529182902085905581519384528301849052805191927f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0929081900390910190a2505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526115409084906115d6565b505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006115cf8484111583610edf565b5050900390565b60006060836001600160a01b0316836040518082805190602001908083835b6020831061163257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016115f5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611694576040519150601f19603f3d011682016040523d82523d6000602084013e611699565b606091505b509150915060008214156116b1573d6000803e3d6000fd5b6116df8151600014806116d757508180602001905160208110156116d457600080fd5b50515b6101a2610edf565b5050505056fe43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572a264697066735822122005677f94e7ea6a2444d7f4fbf5d6ed58b909bbe2f899066c14189e624a34d2ff64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x177 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xA51E1904 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC6542794 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC6542794 EQ PUSH2 0x4C1 JUMPI DUP1 PUSH4 0xDD289D60 EQ PUSH2 0x512 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x538 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0xA51E1904 EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x4B9 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x44A JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0xA0990033 EQ PUSH2 0x2FB JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x3DD JUMPI DUP1 PUSH4 0x8B752BB0 EQ PUSH2 0x41C JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x6C71E920 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x6C71E920 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x7504A15D EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x7A60E63A EQ PUSH2 0x3B7 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x33D JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x38F12152 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x38F12152 EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x397ADA21 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x3B9F7384 EQ PUSH2 0x282 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0xDE54BA0 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x27F18AE3 EQ PUSH2 0x1AC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x540 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x54F JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x597 JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x691 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6B6 JUMP JUMPDEST PUSH2 0x329 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x758 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x786 JUMP JUMPDEST PUSH2 0x329 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7A9 JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7C7 JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x857 JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x94D JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9BE JUMP JUMPDEST PUSH2 0x452 PUSH2 0x9E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0D JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA28 JUMP JUMPDEST PUSH2 0x452 PUSH2 0xAA4 JUMP JUMPDEST PUSH2 0x452 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xB3B JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBE0 JUMP JUMPDEST PUSH2 0x270 PUSH2 0xC13 JUMP JUMPDEST PUSH2 0x54B DUP3 CALLER DUP4 PUSH2 0xC22 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x557 PUSH2 0xCB1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x58F JUMPI PUSH2 0x58D DUP3 DUP3 PUSH2 0xCCA JUMP JUMPDEST POP JUMPDEST PUSH2 0x54B PUSH2 0xCE2 JUMP JUMPDEST PUSH2 0x59F PUSH2 0xCE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x627 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x464143544F52595F414C52454144595F41444445440000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x8E2924DC08A7879532DCA0C2C0460BD67EB431AB342DF45AFD2C4F7288AAB9B7 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x69B PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0x6A6 DUP4 DUP4 CALLER PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP PUSH2 0x6B0 PUSH2 0xCE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C0 PUSH2 0xCB1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16E6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x747 DUP5 DUP5 DUP5 PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP PUSH2 0x751 PUSH2 0xCE2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x790 PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0x79A DUP3 CALLER PUSH2 0xCCA JUMP JUMPDEST SWAP1 POP PUSH2 0x7A4 PUSH2 0xCE2 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D1 PUSH2 0xCB1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x84D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16E6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6A6 DUP4 DUP4 PUSH2 0xCCA JUMP JUMPDEST PUSH2 0x85F PUSH2 0xCE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x8E6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x464143544F52595F4E4F545F4144444544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE MLOAD PUSH32 0xDC66290A40B716CD9557C1D6C84315E06DE88697EE252B89E1A9A9B053DC307B SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xA30 PUSH2 0xCB1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0xA98 JUMPI PUSH1 0x0 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0xA4A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xA6C JUMPI PUSH2 0xA98 JUMP JUMPDEST PUSH2 0xA8F DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0xA7B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0xCCA JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xA33 JUMP JUMPDEST POP PUSH2 0xAA1 PUSH2 0xCE2 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAAE PUSH2 0x9E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAFA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xC87351A089BBDC3B2B9299D2CE29F08FD982826B275B3642939A2F7FDD815380 DUP9 DUP9 PUSH2 0xB69 DUP10 PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP10 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH2 0xBCB DUP7 DUP3 PUSH2 0xBC2 DUP8 DUP8 DUP8 PUSH2 0xD88 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xDC7 JUMP JUMPDEST PUSH2 0xBD6 DUP9 DUP8 DUP10 PUSH2 0xC22 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xAA1 SWAP1 DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x540 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC1D PUSH2 0xE21 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xA3FFB51320BBCA4E61E7423E3C97DD7BD7E31B6EA7429EB26EF92780E84572A0 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xCC3 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCD6 DUP4 DUP4 PUSH2 0xEED JUMP JUMPDEST SWAP1 POP PUSH2 0x6B0 DUP3 DUP3 PUSH2 0x11F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD18 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x94D JUMP JUMPDEST SWAP1 POP PUSH2 0xAA1 PUSH2 0xD27 DUP3 CALLER PUSH2 0x1214 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD75 JUMPI PUSH2 0xD6B PUSH2 0xD64 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0xD4E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH2 0xEED JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x12B6 JUMP JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xD34 JUMP JUMPDEST POP PUSH2 0xD80 DUP4 DUP4 PUSH2 0x11F1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD2 DUP6 PUSH2 0x12C8 JUMP JUMPDEST SWAP1 POP PUSH2 0xDE8 PUSH2 0xDE2 DUP8 DUP4 DUP8 PUSH2 0x132F JUMP JUMPDEST DUP4 PUSH2 0xEDF JUMP JUMPDEST PUSH2 0xDF7 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xEDF JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xE8E PUSH2 0x141A JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x54B JUMPI PUSH2 0x54B DUP2 PUSH2 0x141E JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC45A0155 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0xF65 DUP2 PUSH2 0x7A9 JUMP JUMPDEST PUSH2 0xFD0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F47415547455F464143544F52590000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCE3CC8BD DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1031 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1047 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x10B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F474155474500000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4B820093 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1117 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x112D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x940070700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP6 AND SWAP2 PUSH4 0x9400707 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x11D5 PUSH2 0x11CE DUP7 DUP9 PUSH2 0x9BE JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x1448 JUMP JUMPDEST SWAP4 POP DUP4 ISZERO PUSH2 0x11E8 JUMPI PUSH2 0x11E8 DUP6 DUP8 DUP4 PUSH2 0x1456 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x54B JUMPI PUSH2 0x54B DUP3 DUP3 PUSH2 0x1204 PUSH2 0xB17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x14C0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x121E PUSH2 0xAA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1297 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x751 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12D2 PUSH2 0xE21 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1341 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x140E JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH2 0xAA1 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1545 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x751 DUP4 DUP4 PUSH1 0x1 PUSH2 0x15C0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE DUP4 ADD DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 PUSH32 0x9D228D69B5FDB8D273A2336F8FB8612D039631024EA9BF09C424A9503AA078F0 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1540 SWAP1 DUP5 SWAP1 PUSH2 0x15D6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x15CF DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xEDF JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1632 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x15F5 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1694 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1699 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x16B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x16DF DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x16D7 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0xEDF JUMP JUMPDEST POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6C6C PUSH6 0x72206E6F7420 PUSH2 0x6C6C PUSH16 0x77656420746F206D696E7420666F7220 PUSH22 0x736572A264697066735822122005677F94E7EA6A2444 0xD7 DELEGATECALL 0xFB CREATE2 0xD6 0xED PC 0xB9 MULMOD 0xBB 0xE2 0xF8 SWAP10 MOD PUSH13 0x14189E624A34D2FF64736F6C63 NUMBER STOP SMOD ADD STOP CALLER ","sourceMap":"2123:4144:69:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3440:139:66;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3440:139:66;;;;;;;;;;:::i;:::-;;5582:178;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5582:178:66;;;;;;;;;;:::i;2947:237:69:-;;;;;;;;;;;;;;;;-1:-1:-1;2947:237:69;-1:-1:-1;;;;;2947:237:69;;:::i;2324:150:66:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2324:150:66;;-1:-1:-1;2324:150:66;-1:-1:-1;2324:150:66;:::i;:::-;;;;;;;;;;;;;;;;2788:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2788:251:66;-1:-1:-1;2788:251:66;-1:-1:-1;;;;;2788:251:66;;:::i;3251:147::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3251:147:66;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2153:129;;;;;;;;;;;;;;;;-1:-1:-1;2153:129:66;-1:-1:-1;;;;;2153:129:66;;:::i;3808:136:69:-;;;;;;;;;;;;;;;;-1:-1:-1;3808:136:69;-1:-1:-1;;;;;3808:136:69;;:::i;2516:230:66:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2516:230:66;;;;;;;;;;:::i;3443:238:69:-;;;;;;;;;;;;;;;;-1:-1:-1;3443:238:69;-1:-1:-1;;;;;3443:238:69;;:::i;2607:430:46:-;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:46;;;;:::i;3081:128:66:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3081:128:66;;;;;;;;;;:::i;1158:79:51:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1158:79:51;;;;;;;;;;;;;;1303:121:47;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:47;-1:-1:-1;;;;;1303:121:47;;:::i;5278:262:66:-;;;;;;;;;;;;;;;;-1:-1:-1;5278:262:66;:::i;1297:109:51:-;;;:::i;2015:96:66:-;;;:::i;3621:541::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3621:541:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5802:142::-;;;;;;;;;;;;;;;;-1:-1:-1;5802:142:66;-1:-1:-1;;;;;5802:142:66;;:::i;1184:113:47:-;;;:::i;3440:139:66:-;3524:48;3543:6;3551:10;3563:8;3524:18;:48::i;:::-;3440:139;;:::o;5582:178::-;2613:20:63;:18;:20::i;:::-;5689:10:66::1;5674:26;::::0;;;:14:::1;:26;::::0;;;;;;;-1:-1:-1;;;;;5674:32:66;::::1;::::0;;;;;;;;::::1;;5670:84;;;5722:21;5731:5;5738:4;5722:8;:21::i;:::-;;5670:84;2654:19:63::0;:17;:19::i;2947:237:69:-;2276:21:46;:19;:21::i;:::-;-1:-1:-1;;;;;3045:24:69;::::1;;::::0;;;:15:::1;:24;::::0;;;;;::::1;;3044:25;3036:59;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;3105:24:69;::::1;;::::0;;;:15:::1;:24;::::0;;;;;:31;;;::::1;3132:4;3105:31;::::0;;3151:26;::::1;::::0;3105:24;3151:26:::1;2947:237:::0;:::o;2324:150:66:-;2409:7;2613:20:63;:18;:20::i;:::-;2435:32:66::1;2448:6;;2456:10;2435:12;:32::i;:::-;2428:39;;2654:19:63::0;:17;:19::i;:::-;2324:150:66;;;;:::o;2788:251::-;2890:7;2613:20:63;:18;:20::i;:::-;2932:10:66::1;2917:26;::::0;;;:14:::1;:26;::::0;;;;;;;-1:-1:-1;;;;;2917:32:66;::::1;::::0;;;;;;;;::::1;;2909:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3006:26;3019:6;;3027:4;3006:12;:26::i;:::-;2999:33;;2654:19:63::0;:17;:19::i;:::-;2788:251:66;;;;;:::o;3251:147::-;-1:-1:-1;;;;;3363:22:66;;;3340:4;3363:22;;;:14;:22;;;;;;;;:28;;;;;;;;;;;;;;;3251:147::o;2153:129::-;2222:7;2613:20:63;:18;:20::i;:::-;2248:27:66::1;2257:5;2264:10;2248:8;:27::i;:::-;2241:34;;2654:19:63::0;:17;:19::i;:::-;2153:129:66;;;:::o;3808:136:69:-;-1:-1:-1;;;;;3913:24:69;3890:4;3913:24;;;:15;:24;;;;;;;;;3808:136::o;2516:230:66:-;2602:7;2613:20:63;:18;:20::i;:::-;2644:10:66::1;2629:26;::::0;;;:14:::1;:26;::::0;;;;;;;-1:-1:-1;;;;;2629:32:66;::::1;::::0;;;;;;;;::::1;;2621:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2718:21;2727:5;2734:4;2718:8;:21::i;3443:238:69:-:0;2276:21:46;:19;:21::i;:::-;-1:-1:-1;;;;;3543:24:69;::::1;;::::0;;;:15:::1;:24;::::0;;;;;::::1;;3535:54;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;3599:24:69;::::1;3626:5;3599:24:::0;;;:15:::1;:24;::::0;;;;;:32;;;::::1;::::0;;3646:28;::::1;::::0;3626:5;3646:28:::1;3443:238:::0;:::o;2607:430:46:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;3081:128:66:-;-1:-1:-1;;;;;3182:13:66;;;3156:7;3182:13;;;:7;:13;;;;;;;;:20;;;;;;;;;;;;;3081:128::o;1158:79:51:-;1224:6;1158:79;:::o;1303:121:47:-;-1:-1:-1;;;;;1398:19:47;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;5278:262:66:-;2613:20:63;:18;:20::i;:::-;5371:9:66::1;5366:168;5390:1;5386;:5;5366:168;;;5437:1;5416:6:::0;5423:1;5416:9:::1;::::0;::::1;;;;;;;;;-1:-1:-1::0;;;;;5416:9:66::1;-1:-1:-1::0;;;;;5416:23:66::1;;5412:67;;;5459:5;;5412:67;5492:31;5501:6;5508:1;5501:9;;;;;;;;;;;-1:-1:-1::0;;;;;5501:9:66::1;5512:10;5492:8;:31::i;:::-;-1:-1:-1::0;5393:3:66::1;;5366:168;;;;2654:19:63::0;:17;:19::i;:::-;5278:262:66;:::o;1297:109:51:-;1343:11;1373:10;:8;:10::i;:::-;-1:-1:-1;;;;;1373:24:51;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:51;;-1:-1:-1;1297:109:51;:::o;2015:96:66:-;2098:6;2015:96;:::o;3621:541::-;3845:18;1618:105;3931:6;3939:8;3949:18;3962:4;3949:12;:18::i;:::-;3889:89;;;;;;;;;;;-1:-1:-1;;;;;3889:89:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3866:122;;;;;;-1:-1:-1;3999:103:66;4021:4;3866:122;4039:26;4057:1;4060;4063;4039:17;:26::i;:::-;4067:8;13190:3:31;3999:21:66;:103::i;:::-;4113:42;4132:6;4140:4;4146:8;4113:18;:42::i;:::-;3621:541;;;;;;;;:::o;5802:142::-;-1:-1:-1;;;;;5902:22:66;;;;;;:14;:22;;;;;;;;5925:10;5902:34;;;;;;;;5875:62;;5893:6;;5902:34;;5901:35;5875:17;:62::i;1184:113:47:-;1244:7;1270:20;:18;:20::i;:::-;1263:27;;1184:113;:::o;4168:223:66:-;-1:-1:-1;;;;;4289:22:66;;;;;;;:14;:22;;;;;;;;:28;;;;;;;;;;;;;:39;;;;;;;;;;;;;4343:41;;;;;;;4289:22;;:28;4343:41;;;;;;;;;;4168:223;;;:::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;3977:194:69:-;4051:20;4098:25;4111:5;4118:4;4098:12;:25::i;:::-;4083:40;;4133:31;4145:4;4151:12;4133:11;:31::i;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;4177:333:69:-;4267:20;4316:6;4267:20;4339:124;4363:6;4359:1;:10;4339:124;;;4405:47;4422:29;4435:6;;4442:1;4435:9;;;;;;;;;;;;;-1:-1:-1;;;;;4435:9:69;4446:4;4422:12;:29::i;:::-;4405:12;;:16;:47::i;:::-;4390:62;-1:-1:-1;4371:3:69;;4339:124;;;;4472:31;4484:4;4490:12;4472:11;:31::i;:::-;4177:333;;;;;;:::o;3803:419:47:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:47;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:47:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:31;2487:8:47;:63::i;:::-;-1:-1:-1;;;;;;;;2884:19:47;;;;;;;2907:1;2884:19;;;;;;;;:24;;;;;;;-1:-1:-1;;1701:1214:47:o;2386:188:58:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2483:83:58;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;5070:923:69:-;5139:20;5483:24;5527:5;5483:50;;5543:30;5576:7;-1:-1:-1;;;;;5576:15:69;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5576:17:69;;-1:-1:-1;5611:28:69;5576:17;5611:19;:28::i;:::-;5603:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5683:7;-1:-1:-1;;;;;5683:26:69;;5710:5;5683:33;;;;;;;;;;;;;-1:-1:-1;;;;;5683:33:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5683:33:69;5675:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5745:7;-1:-1:-1;;;;;5745:23:69;;5769:4;5745:29;;;;;;;;;;;;;-1:-1:-1;;;;;5745:29:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5804:32:69;;;;;;-1:-1:-1;;;;;5804:32:69;;;;;;;;;5784:17;;5804:26;;;;;:32;;;;;5745:29;;5804:32;;;;;;;:26;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5804:32:69;;-1:-1:-1;5861:34:69;5875:19;5882:4;5888:5;5875:6;:19::i;:::-;5861:9;;:13;:34::i;:::-;5846:49;-1:-1:-1;5910:16:69;;5906:81;;5942:34;5953:4;5959:5;5966:9;5942:10;:34::i;:::-;5070:923;;;;;;;:::o;6085:180::-;6165:16;;6161:98;;6197:51;6229:4;6235:12;6197:18;:16;:18::i;:::-;-1:-1:-1;;;;;6197:31:69;;:51;:31;:51::i;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;-1:-1:-1;;;;;1523:26:51;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1523:60:51;;;;;;-1:-1:-1;;;;;1523:60:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1523:60:51;;1412:178;-1:-1:-1;;;1412:178:51:o;966:167:65:-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;3199:183:58:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:47:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:31;3082:8:47;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:47;;;;;;-1:-1:-1;;;;;;;3728:30:47;;;;;;:61;;;3782:7;-1:-1:-1;;;;;3762:27:47;:16;-1:-1:-1;;;;;3762:27:47;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:47:o;3433:187:58:-;3595:9;;3570:44::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;1404:121:65:-;1462:7;1488:30;1492:1;1495;5194::31;1488:3:65;:30::i;4424:189:66:-;-1:-1:-1;;;;;4537:13:66;;;;;;;:7;:13;;;;;;;;:20;;;;;;;;;;;;;:28;;;4580:26;;;;;;;;;;;;4537:13;;4580:26;;;;;;;;;;;4424:189;;;:::o;1514:214:64:-;1662:58;;;-1:-1:-1;;;;;1662:58:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;1626:19;:95::i;:::-;1514:214;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1816:206:65;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:65;;;1816:206::o;2324:914:64:-;2626:12;2640:23;2667:5;-1:-1:-1;;;;;2667:10:64;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:64;3143:56;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o"},"methodIdentifiers":{"addGaugeFactory(address)":"38f12152","allowed_to_mint_for(address,address)":"a0990033","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getBalancerToken()":"c0039699","getDomainSeparator()":"ed24911d","getMinterApproval(address,address)":"3c543bc6","getNextNonce(address)":"90193b7c","getVault()":"8d928af8","isValidGaugeFactory(address)":"6c71e920","mint(address)":"6a627842","mintFor(address,address)":"7504a15d","mintMany(address[])":"397ada21","mintManyFor(address[],address)":"3b9f7384","mint_for(address,address)":"27f18ae3","mint_many(address[8])":"a51e1904","minted(address,address)":"8b752bb0","removeGaugeFactory(address)":"7a60e63a","setMinterApproval(address,bool)":"0de54ba0","setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)":"c6542794","toggle_approve_mint(address)":"dd289d60"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"balancerToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"GaugeFactoryAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"GaugeFactoryRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"MinterApprovalSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"addGaugeFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed_to_mint_for\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinterApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"isValidGaugeFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"mintMany\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintManyFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mint_for\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[8]\",\"name\":\"gauges\",\"type\":\"address[8]\"}],\"name\":\"mint_many\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"minted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"removeGaugeFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMinterApprovalWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"toggle_approve_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Distributes bridged BAL tokens in child chains, using the same interface as the mainnet Balancer minter. This contract is analogous to the mainnet minter: it has the same interface and interacts with (L2) gauges in a similar manner, keeping track of how many tokens were already distributed to each gauge and user. The difference with the mainnet minter is that this contract does not have a way of minting BAL directly: the tokens are only minted in mainnet, and then bridged to L2s. Then, this contract accumulates the emissions received by child chain gauges and distributes them to users. Every time the tokens are 'minted' (i.e. distributed) from a gauge to a given user, the pseudo minter will query the child chain gauge for the total amount of tokes that need to be distributed to that user. By keeping track of the amount that it has already distributed for that gauge / user, the pseudo minter can then transfer the difference to the user and update the total transferred amount.\",\"kind\":\"dev\",\"methods\":{\"addGaugeFactory(address)\":{\"details\":\"This is a permissioned function. Reverts if the given factory was added beforehand; emits `GaugeFactoryAdded` event upon success.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"mint(address)\":{\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\"}},\"mintFor(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mintMany(address[])\":{\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"mintManyFor(address[],address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\",\"user\":\"Address to mint to\"}},\"mint_for(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mint_many(address[8])\":{\"details\":\"This function is not recommended as `mintMany()` is more flexible and gas efficient\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"removeGaugeFactory(address)\":{\"details\":\"This is a permissioned function. Reverts if the given factory had not been added beforehand; emits `GaugeFactoryRemoved` event upon success.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addGaugeFactory(address)\":{\"notice\":\"Adds a given child chain gauge factory to the allowlist.\"},\"allowed_to_mint_for(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"},\"getMinterApproval(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isValidGaugeFactory(address)\":{\"notice\":\"Returns true if the given child chain gauge factory is in the allowlist; false otherwise.\"},\"mint(address)\":{\"notice\":\"Mint everything which belongs to `msg.sender` and send to them\"},\"mintFor(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mintMany(address[])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"mintManyFor(address[],address)\":{\"notice\":\"Mint tokens for `user` across multiple gauges\"},\"mint_for(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mint_many(address[8])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"minted(address,address)\":{\"notice\":\"The total number of tokens minted for `user` from `gauge`\"},\"removeGaugeFactory(address)\":{\"notice\":\"Removes a given child chain gauge factory from the allowlist.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on your behalf\"},\"setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing them.\"},\"toggle_approve_mint(address)\":{\"notice\":\"Toggle whether `minter` is approved to mint tokens for `user`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/L2BalancerPseudoMinter.sol\":\"L2BalancerPseudoMinter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\":{\"keccak256\":\"0xffafd017b9f43c8cc47f59e85e8a5354e4028110fb6c7fdbaeb569018f35e4d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bf250a0d068a2c8203dda057beabbf49705114e51086e885d7dc283a0cf3a249\",\"dweb:/ipfs/QmTBZvND9qY9k4EQYkfA9hYVSP3DxaXgKwuvDAQFDfxic2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/BalancerMinter.sol\":{\"keccak256\":\"0xbacdfde61937f9cea9166c7e492ac8d65261fb6bdfb621f1f258852799204cc8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3e68da1f25c0211654bb0b04c4ac1a789cb3dfabd7f5db54d6bfbeb49414e0c\",\"dweb:/ipfs/QmRnvBWovj9HNZsEfvrZpbJcs3K7ikwrY8fkX68F7rdxQK\"]},\"contracts/L2BalancerPseudoMinter.sol\":{\"keccak256\":\"0x5b9ddeebb5accdd9e94e89a68004301f4f92c42ccd8be2f1dc5158ffa15665ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae10ff0f3cfff31f80435ac23e95b1e03d547441e7c44f84aa238363493f93bb\",\"dweb:/ipfs/Qmbrk9GBcRu8pBG3kPsGafCJ3RE5Uvyh4toAnjph4kKs3L\"]}},\"version\":1}"}},"contracts/L2LayerZeroBridgeForwarder.sol":{"L2LayerZeroBridgeForwarder":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IL2LayerZeroDelegation","name":"newImplementation","type":"address"}],"name":"DelegationImplementationUpdated","type":"event"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDelegationImplementation","outputs":[{"internalType":"contract IL2LayerZeroDelegation","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"onVeBalBridged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"onVeBalSupplyUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IL2LayerZeroDelegation","name":"delegation","type":"address"}],"name":"setDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b506040516106cf3803806106cf8339818101604052602081101561003357600080fd5b5051306080819052606082901b6001600160601b03191660a052906001600160a01b031661065b610074600039806102135250806101a6525061065b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806396345fb51161005b57806396345fb51461010c578063aaabadc514610116578063df130bfe1461011e578063e6b3e704146101515761007d565b806363408a9014610082578063851c1bb3146100b35780638d928af814610104575b600080fd5b61008a610184565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f2600480360360208110156100c957600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166101a0565b60408051918252519081900360200190f35b61008a610211565b610114610235565b005b61008a6102d5565b6101146004803603602081101561013457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610355565b6101146004803603602081101561016757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610400565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60005473ffffffffffffffffffffffffffffffffffffffff16156102d35760008054604080517f96345fb5000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216926396345fb59260048084019382900301818387803b1580156102ba57600080fd5b505af11580156102ce573d6000803e3d6000fd5b505050505b565b60006102df610211565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561032457600080fd5b505afa158015610338573d6000803e3d6000fd5b505050506040513d602081101561034e57600080fd5b5051905090565b60005473ffffffffffffffffffffffffffffffffffffffff16156103fd5760008054604080517fdf130bfe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529151919092169263df130bfe926024808201939182900301818387803b1580156103e457600080fd5b505af11580156103f8573d6000803e3d6000fd5b505050505b50565b610408610475565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917fb2f6d9cc189e4fc02519ab5ba6d9455bedc32091e375e8a6383ed45f40653e7491a250565b60006104a46000357fffffffff00000000000000000000000000000000000000000000000000000000166101a0565b90506103fd6104b382336104bb565b610191610584565b60006104c56102d5565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561055157600080fd5b505afa158015610565573d6000803e3d6000fd5b505050506040513d602081101561057b57600080fd5b50519392505050565b816105925761059281610596565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526103fd917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea26469706673582212209e70a13ad6e6e0fbcfa910fca5d1a8d5d178c6c18e8bf647fc49bcab3e0863be64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6CF CODESIZE SUB DUP1 PUSH2 0x6CF DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x65B PUSH2 0x74 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x213 MSTORE POP DUP1 PUSH2 0x1A6 MSTORE POP PUSH2 0x65B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96345FB5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x96345FB5 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x116 JUMPI DUP1 PUSH4 0xDF130BFE EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xE6B3E704 EQ PUSH2 0x151 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x63408A90 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x104 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x184 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x211 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x235 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8A PUSH2 0x2D5 JUMP JUMPDEST PUSH2 0x114 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x355 JUMP JUMPDEST PUSH2 0x114 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x400 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x96345FB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0x96345FB5 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DF PUSH2 0x211 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x338 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xDF130BFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0xDF130BFE SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH2 0x408 PUSH2 0x475 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xB2F6D9CC189E4FC02519AB5BA6D9455BEDC32091E375E8A6383ED45F40653E74 SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A4 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x3FD PUSH2 0x4B3 DUP3 CALLER PUSH2 0x4BB JUMP JUMPDEST PUSH2 0x191 PUSH2 0x584 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C5 PUSH2 0x2D5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x565 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x592 JUMPI PUSH2 0x592 DUP2 PUSH2 0x596 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x3FD SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP15 PUSH17 0xA13AD6E6E0FBCFA910FCA5D1A8D5D178C6 0xC1 DUP15 DUP12 0xF6 SELFBALANCE 0xFC 0x49 0xBC 0xAB RETURNDATACOPY ADDMOD PUSH4 0xBE64736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1255:1390:70:-:0;;;1491:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1491:121:70;1054:4:51;2049:46:46;;;;1073:14:51::1;::::0;;;-1:-1:-1;;;;;;1073:14:51;::::1;::::0;1054:4;-1:-1:-1;;;;;1255:1390:70;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":422}],"3611":[{"length":32,"start":531}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c806396345fb51161005b57806396345fb51461010c578063aaabadc514610116578063df130bfe1461011e578063e6b3e704146101515761007d565b806363408a9014610082578063851c1bb3146100b35780638d928af814610104575b600080fd5b61008a610184565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f2600480360360208110156100c957600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166101a0565b60408051918252519081900360200190f35b61008a610211565b610114610235565b005b61008a6102d5565b6101146004803603602081101561013457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610355565b6101146004803603602081101561016757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610400565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60005473ffffffffffffffffffffffffffffffffffffffff16156102d35760008054604080517f96345fb5000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216926396345fb59260048084019382900301818387803b1580156102ba57600080fd5b505af11580156102ce573d6000803e3d6000fd5b505050505b565b60006102df610211565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561032457600080fd5b505afa158015610338573d6000803e3d6000fd5b505050506040513d602081101561034e57600080fd5b5051905090565b60005473ffffffffffffffffffffffffffffffffffffffff16156103fd5760008054604080517fdf130bfe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529151919092169263df130bfe926024808201939182900301818387803b1580156103e457600080fd5b505af11580156103f8573d6000803e3d6000fd5b505050505b50565b610408610475565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917fb2f6d9cc189e4fc02519ab5ba6d9455bedc32091e375e8a6383ed45f40653e7491a250565b60006104a46000357fffffffff00000000000000000000000000000000000000000000000000000000166101a0565b90506103fd6104b382336104bb565b610191610584565b60006104c56102d5565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561055157600080fd5b505afa158015610565573d6000803e3d6000fd5b505050506040513d602081101561057b57600080fd5b50519392505050565b816105925761059281610596565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526103fd917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea26469706673582212209e70a13ad6e6e0fbcfa910fca5d1a8d5d178c6c18e8bf647fc49bcab3e0863be64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96345FB5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x96345FB5 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x116 JUMPI DUP1 PUSH4 0xDF130BFE EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xE6B3E704 EQ PUSH2 0x151 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x63408A90 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x104 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x184 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x211 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x235 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8A PUSH2 0x2D5 JUMP JUMPDEST PUSH2 0x114 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x355 JUMP JUMPDEST PUSH2 0x114 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x400 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x96345FB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0x96345FB5 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DF PUSH2 0x211 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x338 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xDF130BFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0xDF130BFE SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH2 0x408 PUSH2 0x475 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xB2F6D9CC189E4FC02519AB5BA6D9455BEDC32091E375E8A6383ED45F40653E74 SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A4 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x3FD PUSH2 0x4B3 DUP3 CALLER PUSH2 0x4BB JUMP JUMPDEST PUSH2 0x191 PUSH2 0x584 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C5 PUSH2 0x2D5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x565 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x592 JUMPI PUSH2 0x592 DUP2 PUSH2 0x596 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x3FD SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP15 PUSH17 0xA13AD6E6E0FBCFA910FCA5D1A8D5D178C6 0xC1 DUP15 DUP12 0xF6 SELFBALANCE 0xFC 0x49 0xBC 0xAB RETURNDATACOPY ADDMOD PUSH4 0xBE64736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1255:1390:70:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1705:121;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2607:430:46;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:46;;;;:::i;:::-;;;;;;;;;;;;;;;;1158:79:51;;;:::i;2198:169:70:-;;;:::i;:::-;;1297:109:51;;;:::i;1930:175:70:-;;;;;;;;;;;;;;;;-1:-1:-1;1930:175:70;;;;:::i;2463:180::-;;;;;;;;;;;;;;;;-1:-1:-1;2463:180:70;;;;:::i;1705:121::-;1767:22;1808:11;;;1705:121;:::o;2607:430:46:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;2198:169:70:-;2299:1;2261:11;:40;:11;:40;2257:104;;2317:11;;;:33;;;;;;;;:11;;;;;:31;;:33;;;;;;;;;;:11;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2257:104;2198:169::o;1297:109:51:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:51;;-1:-1:-1;1297:109:51;:::o;1930:175:70:-;2038:1;2000:11;:40;:11;:40;1996:103;;2056:11;;;:32;;;;;;:11;:32;;;;;;;;;:11;;;;;:26;;:32;;;;;;;;;;;:11;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1996:103;1930:175;:::o;2463:180::-;2276:21:46;:19;:21::i;:::-;2553:11:70::1;:24:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;2593:43:::1;::::0;2553:24;;2593:43:::1;::::0;::::1;2463:180:::0;:::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1523:60:51;;1412:178;-1:-1:-1;;;1412:178:51:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDelegationImplementation()":"63408a90","getVault()":"8d928af8","onVeBalBridged(address)":"df130bfe","onVeBalSupplyUpdate()":"96345fb5","setDelegation(address)":"e6b3e704"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IL2LayerZeroDelegation\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"DelegationImplementationUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDelegationImplementation\",\"outputs\":[{\"internalType\":\"contract IL2LayerZeroDelegation\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"onVeBalBridged\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onVeBalSupplyUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IL2LayerZeroDelegation\",\"name\":\"delegation\",\"type\":\"address\"}],\"name\":\"setDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The delegation contract can be set so that e.g. Child Chain Gauges are updated automatically whenever there is a veBAL balance update.\",\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getDelegationImplementation()\":{\"notice\":\"Returns the current delegation implementation contract.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"onVeBalBridged(address)\":{\"notice\":\"Hook to be called whenever the veBAL balance of a user is updated.\"},\"onVeBalSupplyUpdate()\":{\"notice\":\"Hook to be called whenever the veBAL supply is updated.\"},\"setDelegation(address)\":{\"notice\":\"Sets a new delegation implementation for `onVeBalBridged`.\"}},\"notice\":\"Forwards calls from LayerZero's system to a custom hook whenever a veBAL balance is updated for a given user in a L2 chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/L2LayerZeroBridgeForwarder.sol\":\"L2LayerZeroBridgeForwarder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\":{\"keccak256\":\"0xbeed8a8a1802aede5aa6670554125c5938ea06fc5a96c1b75dbc93d1dd586048\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5cf7cef349eba6938df4d8993dcab2b16775b2daf0cc0d5ad71d91f27221eb00\",\"dweb:/ipfs/QmS22HyJFUggLjLx9WABDcMPq6XqC3f4Q23NrKv6CmnkL5\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"contracts/L2LayerZeroBridgeForwarder.sol\":{\"keccak256\":\"0x80ebea37e47c4bda44d5ffbb28e44eda4436dbb935528b67adb4290ff353de6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://07f435c5d99730b1ca22e46317d8efb63bed3be22ce511c5b5651f4f6d9491cf\",\"dweb:/ipfs/QmRAjwpBPh9soxR5pqcigcxkoYAmhpRZrXrTEUuRYUNJt1\"]}},\"version\":1}"}},"contracts/MainnetBalancerMinter.sol":{"MainnetBalancerMinter":{"abi":[{"inputs":[{"internalType":"contract IBalancerTokenAdmin","name":"tokenAdmin","type":"address"},{"internalType":"contract IGaugeController","name":"gaugeController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"uint256","name":"minted","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"bool","name":"approval","type":"bool"}],"name":"MinterApprovalSet","type":"event"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"allowed_to_mint_for","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerTokenAdmin","outputs":[{"internalType":"contract IBalancerTokenAdmin","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeController","outputs":[{"internalType":"contract IGaugeController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getMinterApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"mintManyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mint_for","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[8]","name":"gauges","type":"address[8]"}],"name":"mint_many","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"}],"name":"setMinterApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"setMinterApprovalWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"toggle_approve_mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"61014060405234801561001157600080fd5b506040516114cc3803806114cc8339818101604052604081101561003457600080fd5b5080516020918201516040805163c003969960e01b81529051929391926001600160a01b0385169263c00396999260048082019391829003018186803b15801561007d57600080fd5b505afa158015610091573d6000803e3d6000fd5b505050506040513d60208110156100a757600080fd5b5051604080518082018252600f81526e2130b630b731b2b91026b4b73a32b960891b602082810191825283518085019094526001808552603160f81b918501918252600055915190206080529051902060a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526001600160601b0319606091821b811660e05292811b8316610100521b166101205260805160a05160c05160e05160601c6101005160601c6101205160601c61132b6101a1600039806106375280610d745250806109345280610a305280610b4052508061081e525080610c9a525080610cdc525080610cbb525061132b6000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80638b752bb0116100b2578063c003969911610081578063dd289d6011610066578063dd289d601461047f578063e6dec36f146104b2578063ed24911d146104ba5761011b565b8063c003969914610419578063c6542794146104215761011b565b80638b752bb01461038e57806390193b7c146103c9578063a0990033146102a0578063a51e1904146103fc5761011b565b80633c543bc6116100ee5780633c543bc6146102a057806358de9ade146102ef5780636a627842146103205780637504a15d146103535761011b565b80630de54ba01461012057806327f18ae31461015d578063397ada21146101985780633b9f73841461021a575b600080fd5b61015b6004803603604081101561013657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013515156104c2565b005b61015b6004803603604081101561017357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166104d1565b610208600480360360208110156101ae57600080fd5b8101906020810181356401000000008111156101c957600080fd5b8201836020820111156101db57600080fd5b803590602001918460208302840111640100000000831117156101fd57600080fd5b509092509050610526565b60408051918252519081900360200190f35b6102086004803603604081101561023057600080fd5b81019060208101813564010000000081111561024b57600080fd5b82018360208201111561025d57600080fd5b8035906020019184602083028401116401000000008311171561027f57600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff1661054b565b6102db600480360360408110156102b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166105fa565b604080519115158252519081900360200190f35b6102f7610635565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102086004803603602081101561033657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610659565b6102086004803603604081101561036957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661067c565b610208600480360360408110156103a457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610719565b610208600480360360208110156103df57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610751565b61015b600480360361010081101561041357600080fd5b50610779565b6102f761081c565b61015b600480360360e081101561043757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101351515916040820135169060608101359060ff6080820135169060a08101359060c00135610840565b61015b6004803603602081101561049557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108f2565b6102f7610932565b610208610956565b6104cd823383610965565b5050565b6104d9610a01565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561051e5761051c8282610a1a565b505b6104cd610add565b6000610530610a01565b61053b838333610ae4565b9050610545610add565b92915050565b6000610555610a01565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff166105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806112b16023913960400191505060405180910390fd5b6105e9848484610ae4565b90506105f3610add565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260036020908152604080832093909416825291909152205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610663610a01565b61066d8233610a1a565b9050610677610add565b919050565b6000610686610a01565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff1661070f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806112b16023913960400191505060405180910390fd5b61053b8383610a1a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610781610a01565b60005b600881101561081057600082826008811061079b57fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156107d757610810565b6108078282600881106107e657fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1633610a1a565b50600101610784565b50610819610add565b50565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007fc87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd815380888861086e89610751565b6040805160208082019690965273ffffffffffffffffffffffffffffffffffffffff909416848201529115156060840152608083015260a08083018990528151808403909101815260c09092019052805191012090506108dd86826108d4878787610bf0565b886101f8610c2f565b6108e8888789610965565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020908152604080832033845290915290205461081990829060ff16156104c2565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610960610c96565b905090565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291519293927fa3ffb51320bbca4e61e7423e3c97dd7bd7e31b6ea7429eb26ef92780e84572a09281900390910190a3505050565b610a1360026000541415610190610d61565b6002600055565b6000610a268383610d6f565b90508015610545577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610abf57600080fd5b505af1158015610ad3573d6000803e3d6000fd5b5050505092915050565b6001600055565b600082815b81811015610b3757610b2d610b26878784818110610b0357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1686610d6f565b8490610fe1565b9250600101610ae9565b508115610be8577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1984846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050505b509392505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610c3a85610ff3565b9050610c50610c4a87838761105a565b83610d61565b610c5f428410156101b8610d61565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600160208190526040909120805490910190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610d0361116c565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816104cd576104cd81611170565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633f9095b7856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610df957600080fd5b505afa158015610e0d573d6000803e3d6000fd5b505050506040513d6020811015610e2357600080fd5b5051600f0b1215610e7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112d46022913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16634b820093836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6020811015610f1257600080fd5b5050604080517f0940070700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291516000928616916309400707916024808301926020929190829003018186803b158015610f8557600080fd5b505afa158015610f99573d6000803e3d6000fd5b505050506040513d6020811015610faf57600080fd5b50519050610fc7610fc08486610719565b829061119a565b91508115610fda57610fda8385836111a8565b5092915050565b60008282016105f38482101583610d61565b6000610ffd610c96565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061106c82516041146101b9610d61565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156110e5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061116057508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b610819817f42414c000000000000000000000000000000000000000000000000000000000061121f565b60006105f38383600161129a565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526002602090815260408083209487168084529482529182902085905581519384528301849052805191927f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0929081900390910190a2505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006112a98484111583610d61565b505090039056fe43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572476175676520646f6573206e6f74206578697374206f6e20436f6e74726f6c6c6572a2646970667358221220bf30e091a81a9894c39995074c9d44608ba6fe63b76aa04a90365a7f77421b3664736f6c63430007010033","opcodes":"PUSH2 0x140 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x14CC CODESIZE SUB DUP1 PUSH2 0x14CC DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xC0039699 SWAP3 PUSH1 0x4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x91 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xF DUP2 MSTORE PUSH15 0x2130B630B731B2B91026B4B73A32B9 PUSH1 0x89 SHL PUSH1 0x20 DUP3 DUP2 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x1 DUP1 DUP6 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP2 DUP6 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 SSTORE SWAP2 MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xA0 MSTORE PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP3 DUP2 SHL DUP4 AND PUSH2 0x100 MSTORE SHL AND PUSH2 0x120 MSTORE PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x132B PUSH2 0x1A1 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x637 MSTORE DUP1 PUSH2 0xD74 MSTORE POP DUP1 PUSH2 0x934 MSTORE DUP1 PUSH2 0xA30 MSTORE DUP1 PUSH2 0xB40 MSTORE POP DUP1 PUSH2 0x81E MSTORE POP DUP1 PUSH2 0xC9A MSTORE POP DUP1 PUSH2 0xCDC MSTORE POP DUP1 PUSH2 0xCBB MSTORE POP PUSH2 0x132B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8B752BB0 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xC0039699 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xDD289D60 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDD289D60 EQ PUSH2 0x47F JUMPI DUP1 PUSH4 0xE6DEC36F EQ PUSH2 0x4B2 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x4BA JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xC0039699 EQ PUSH2 0x419 JUMPI DUP1 PUSH4 0xC6542794 EQ PUSH2 0x421 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x8B752BB0 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x3C9 JUMPI DUP1 PUSH4 0xA0990033 EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0xA51E1904 EQ PUSH2 0x3FC JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x3C543BC6 EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x58DE9ADE EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x7504A15D EQ PUSH2 0x353 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xDE54BA0 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x27F18AE3 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x397ADA21 EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x3B9F7384 EQ PUSH2 0x21A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x4C2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x4D1 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x54B JUMP JUMPDEST PUSH2 0x2DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F7 PUSH2 0x635 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x659 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x67C JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x719 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x751 JUMP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x779 JUMP JUMPDEST PUSH2 0x2F7 PUSH2 0x81C JUMP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x840 JUMP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x2F7 PUSH2 0x932 JUMP JUMPDEST PUSH2 0x208 PUSH2 0x956 JUMP JUMPDEST PUSH2 0x4CD DUP3 CALLER DUP4 PUSH2 0x965 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x4D9 PUSH2 0xA01 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x51E JUMPI PUSH2 0x51C DUP3 DUP3 PUSH2 0xA1A JUMP JUMPDEST POP JUMPDEST PUSH2 0x4CD PUSH2 0xADD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x530 PUSH2 0xA01 JUMP JUMPDEST PUSH2 0x53B DUP4 DUP4 CALLER PUSH2 0xAE4 JUMP JUMPDEST SWAP1 POP PUSH2 0x545 PUSH2 0xADD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x555 PUSH2 0xA01 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x5DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12B1 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5E9 DUP5 DUP5 DUP5 PUSH2 0xAE4 JUMP JUMPDEST SWAP1 POP PUSH2 0x5F3 PUSH2 0xADD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x663 PUSH2 0xA01 JUMP JUMPDEST PUSH2 0x66D DUP3 CALLER PUSH2 0xA1A JUMP JUMPDEST SWAP1 POP PUSH2 0x677 PUSH2 0xADD JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x686 PUSH2 0xA01 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x70F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12B1 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x53B DUP4 DUP4 PUSH2 0xA1A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x781 PUSH2 0xA01 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x79B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x7D7 JUMPI PUSH2 0x810 JUMP JUMPDEST PUSH2 0x807 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x7E6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0xA1A JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x784 JUMP JUMPDEST POP PUSH2 0x819 PUSH2 0xADD JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xC87351A089BBDC3B2B9299D2CE29F08FD982826B275B3642939A2F7FDD815380 DUP9 DUP9 PUSH2 0x86E DUP10 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP10 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH2 0x8DD DUP7 DUP3 PUSH2 0x8D4 DUP8 DUP8 DUP8 PUSH2 0xBF0 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xC2F JUMP JUMPDEST PUSH2 0x8E8 DUP9 DUP8 DUP10 PUSH2 0x965 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x819 SWAP1 DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x4C2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x960 PUSH2 0xC96 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xA3FFB51320BBCA4E61E7423E3C97DD7BD7E31B6EA7429EB26EF92780E84572A0 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xA13 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xD61 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA26 DUP4 DUP4 PUSH2 0xD6F JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x545 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40C10F19 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xABF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB37 JUMPI PUSH2 0xB2D PUSH2 0xB26 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0xB03 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH2 0xD6F JUMP JUMPDEST DUP5 SWAP1 PUSH2 0xFE1 JUMP JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xAE9 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0xBE8 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40C10F19 DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC3A DUP6 PUSH2 0xFF3 JUMP JUMPDEST SWAP1 POP PUSH2 0xC50 PUSH2 0xC4A DUP8 DUP4 DUP8 PUSH2 0x105A JUMP JUMPDEST DUP4 PUSH2 0xD61 JUMP JUMPDEST PUSH2 0xC5F TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xD61 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xD03 PUSH2 0x116C JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x4CD JUMPI PUSH2 0x4CD DUP2 PUSH2 0x1170 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3F9095B7 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE0D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0xE7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12D4 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B820093 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x940070700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP7 AND SWAP2 PUSH4 0x9400707 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0xFC7 PUSH2 0xFC0 DUP5 DUP7 PUSH2 0x719 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x119A JUMP JUMPDEST SWAP2 POP DUP2 ISZERO PUSH2 0xFDA JUMPI PUSH2 0xFDA DUP4 DUP6 DUP4 PUSH2 0x11A8 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x5F3 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xD61 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFD PUSH2 0xC96 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x106C DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xD61 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1160 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH2 0x819 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x121F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F3 DUP4 DUP4 PUSH1 0x1 PUSH2 0x129A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE DUP4 ADD DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 PUSH32 0x9D228D69B5FDB8D273A2336F8FB8612D039631024EA9BF09C424A9503AA078F0 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12A9 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xD61 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP INVALID NUMBER PUSH2 0x6C6C PUSH6 0x72206E6F7420 PUSH2 0x6C6C PUSH16 0x77656420746F206D696E7420666F7220 PUSH22 0x736572476175676520646F6573206E6F742065786973 PUSH21 0x206F6E20436F6E74726F6C6C6572A2646970667358 0x22 SLT KECCAK256 0xBF ADDRESS 0xE0 SWAP2 0xA8 BYTE SWAP9 SWAP5 0xC3 SWAP10 SWAP6 SMOD 0x4C SWAP14 DIFFICULTY PUSH1 0x8B 0xA6 INVALID PUSH4 0xB76AA04A SWAP1 CALLDATASIZE GAS PUSH32 0x77421B3664736F6C634300070100330000000000000000000000000000000000 ","sourceMap":"1181:1939:71:-:0;;;1406:245;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1406:245:71;;;;;;;;1507:29;;-1:-1:-1;;;1507:29:71;;;;1406:245;;;;-1:-1:-1;;;;;1507:27:71;;;;;:29;;;;;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1507:29:71;1821:152:66;;;;;;;;;;;-1:-1:-1;;;1507:29:71;1821:152:66;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1821:152:66;;;;;;-1:-1:-1;2175:22:63;2100::58;;;;2085:37;;2150:25;;;;2132:43;;2198:95;2185:108;;-1:-1:-1;;;;;;1952:14:66::1;::::0;;;;;::::1;::::0;1576:24:71;;;;;::::1;::::0;1610:34;;::::1;::::0;1181:1939;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"5935":[{"length":32,"start":3259}],"5937":[{"length":32,"start":3292}],"5939":[{"length":32,"start":3226}],"7437":[{"length":32,"start":2078}],"9376":[{"length":32,"start":2356},{"length":32,"start":2608},{"length":32,"start":2880}],"9378":[{"length":32,"start":1591},{"length":32,"start":3444}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061011b5760003560e01c80638b752bb0116100b2578063c003969911610081578063dd289d6011610066578063dd289d601461047f578063e6dec36f146104b2578063ed24911d146104ba5761011b565b8063c003969914610419578063c6542794146104215761011b565b80638b752bb01461038e57806390193b7c146103c9578063a0990033146102a0578063a51e1904146103fc5761011b565b80633c543bc6116100ee5780633c543bc6146102a057806358de9ade146102ef5780636a627842146103205780637504a15d146103535761011b565b80630de54ba01461012057806327f18ae31461015d578063397ada21146101985780633b9f73841461021a575b600080fd5b61015b6004803603604081101561013657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013515156104c2565b005b61015b6004803603604081101561017357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166104d1565b610208600480360360208110156101ae57600080fd5b8101906020810181356401000000008111156101c957600080fd5b8201836020820111156101db57600080fd5b803590602001918460208302840111640100000000831117156101fd57600080fd5b509092509050610526565b60408051918252519081900360200190f35b6102086004803603604081101561023057600080fd5b81019060208101813564010000000081111561024b57600080fd5b82018360208201111561025d57600080fd5b8035906020019184602083028401116401000000008311171561027f57600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff1661054b565b6102db600480360360408110156102b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166105fa565b604080519115158252519081900360200190f35b6102f7610635565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102086004803603602081101561033657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610659565b6102086004803603604081101561036957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661067c565b610208600480360360408110156103a457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610719565b610208600480360360208110156103df57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610751565b61015b600480360361010081101561041357600080fd5b50610779565b6102f761081c565b61015b600480360360e081101561043757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101351515916040820135169060608101359060ff6080820135169060a08101359060c00135610840565b61015b6004803603602081101561049557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108f2565b6102f7610932565b610208610956565b6104cd823383610965565b5050565b6104d9610a01565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561051e5761051c8282610a1a565b505b6104cd610add565b6000610530610a01565b61053b838333610ae4565b9050610545610add565b92915050565b6000610555610a01565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff166105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806112b16023913960400191505060405180910390fd5b6105e9848484610ae4565b90506105f3610add565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260036020908152604080832093909416825291909152205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610663610a01565b61066d8233610a1a565b9050610677610add565b919050565b6000610686610a01565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff1661070f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806112b16023913960400191505060405180910390fd5b61053b8383610a1a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610781610a01565b60005b600881101561081057600082826008811061079b57fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156107d757610810565b6108078282600881106107e657fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1633610a1a565b50600101610784565b50610819610add565b50565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007fc87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd815380888861086e89610751565b6040805160208082019690965273ffffffffffffffffffffffffffffffffffffffff909416848201529115156060840152608083015260a08083018990528151808403909101815260c09092019052805191012090506108dd86826108d4878787610bf0565b886101f8610c2f565b6108e8888789610965565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020908152604080832033845290915290205461081990829060ff16156104c2565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610960610c96565b905090565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291519293927fa3ffb51320bbca4e61e7423e3c97dd7bd7e31b6ea7429eb26ef92780e84572a09281900390910190a3505050565b610a1360026000541415610190610d61565b6002600055565b6000610a268383610d6f565b90508015610545577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610abf57600080fd5b505af1158015610ad3573d6000803e3d6000fd5b5050505092915050565b6001600055565b600082815b81811015610b3757610b2d610b26878784818110610b0357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1686610d6f565b8490610fe1565b9250600101610ae9565b508115610be8577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1984846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050505b509392505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610c3a85610ff3565b9050610c50610c4a87838761105a565b83610d61565b610c5f428410156101b8610d61565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600160208190526040909120805490910190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610d0361116c565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816104cd576104cd81611170565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633f9095b7856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610df957600080fd5b505afa158015610e0d573d6000803e3d6000fd5b505050506040513d6020811015610e2357600080fd5b5051600f0b1215610e7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112d46022913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16634b820093836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6020811015610f1257600080fd5b5050604080517f0940070700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291516000928616916309400707916024808301926020929190829003018186803b158015610f8557600080fd5b505afa158015610f99573d6000803e3d6000fd5b505050506040513d6020811015610faf57600080fd5b50519050610fc7610fc08486610719565b829061119a565b91508115610fda57610fda8385836111a8565b5092915050565b60008282016105f38482101583610d61565b6000610ffd610c96565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061106c82516041146101b9610d61565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156110e5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061116057508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b610819817f42414c000000000000000000000000000000000000000000000000000000000061121f565b60006105f38383600161129a565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526002602090815260408083209487168084529482529182902085905581519384528301849052805191927f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0929081900390910190a2505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006112a98484111583610d61565b505090039056fe43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572476175676520646f6573206e6f74206578697374206f6e20436f6e74726f6c6c6572a2646970667358221220bf30e091a81a9894c39995074c9d44608ba6fe63b76aa04a90365a7f77421b3664736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8B752BB0 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xC0039699 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xDD289D60 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDD289D60 EQ PUSH2 0x47F JUMPI DUP1 PUSH4 0xE6DEC36F EQ PUSH2 0x4B2 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x4BA JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xC0039699 EQ PUSH2 0x419 JUMPI DUP1 PUSH4 0xC6542794 EQ PUSH2 0x421 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x8B752BB0 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x3C9 JUMPI DUP1 PUSH4 0xA0990033 EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0xA51E1904 EQ PUSH2 0x3FC JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x3C543BC6 EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x58DE9ADE EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x7504A15D EQ PUSH2 0x353 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xDE54BA0 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x27F18AE3 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x397ADA21 EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x3B9F7384 EQ PUSH2 0x21A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x4C2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x4D1 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x54B JUMP JUMPDEST PUSH2 0x2DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F7 PUSH2 0x635 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x659 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x67C JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x719 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x751 JUMP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x779 JUMP JUMPDEST PUSH2 0x2F7 PUSH2 0x81C JUMP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x840 JUMP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x2F7 PUSH2 0x932 JUMP JUMPDEST PUSH2 0x208 PUSH2 0x956 JUMP JUMPDEST PUSH2 0x4CD DUP3 CALLER DUP4 PUSH2 0x965 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x4D9 PUSH2 0xA01 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x51E JUMPI PUSH2 0x51C DUP3 DUP3 PUSH2 0xA1A JUMP JUMPDEST POP JUMPDEST PUSH2 0x4CD PUSH2 0xADD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x530 PUSH2 0xA01 JUMP JUMPDEST PUSH2 0x53B DUP4 DUP4 CALLER PUSH2 0xAE4 JUMP JUMPDEST SWAP1 POP PUSH2 0x545 PUSH2 0xADD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x555 PUSH2 0xA01 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x5DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12B1 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5E9 DUP5 DUP5 DUP5 PUSH2 0xAE4 JUMP JUMPDEST SWAP1 POP PUSH2 0x5F3 PUSH2 0xADD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x663 PUSH2 0xA01 JUMP JUMPDEST PUSH2 0x66D DUP3 CALLER PUSH2 0xA1A JUMP JUMPDEST SWAP1 POP PUSH2 0x677 PUSH2 0xADD JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x686 PUSH2 0xA01 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x70F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12B1 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x53B DUP4 DUP4 PUSH2 0xA1A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x781 PUSH2 0xA01 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x79B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x7D7 JUMPI PUSH2 0x810 JUMP JUMPDEST PUSH2 0x807 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x7E6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0xA1A JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x784 JUMP JUMPDEST POP PUSH2 0x819 PUSH2 0xADD JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xC87351A089BBDC3B2B9299D2CE29F08FD982826B275B3642939A2F7FDD815380 DUP9 DUP9 PUSH2 0x86E DUP10 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP10 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH2 0x8DD DUP7 DUP3 PUSH2 0x8D4 DUP8 DUP8 DUP8 PUSH2 0xBF0 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xC2F JUMP JUMPDEST PUSH2 0x8E8 DUP9 DUP8 DUP10 PUSH2 0x965 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x819 SWAP1 DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x4C2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x960 PUSH2 0xC96 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xA3FFB51320BBCA4E61E7423E3C97DD7BD7E31B6EA7429EB26EF92780E84572A0 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xA13 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xD61 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA26 DUP4 DUP4 PUSH2 0xD6F JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x545 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40C10F19 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xABF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB37 JUMPI PUSH2 0xB2D PUSH2 0xB26 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0xB03 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH2 0xD6F JUMP JUMPDEST DUP5 SWAP1 PUSH2 0xFE1 JUMP JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xAE9 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0xBE8 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40C10F19 DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC3A DUP6 PUSH2 0xFF3 JUMP JUMPDEST SWAP1 POP PUSH2 0xC50 PUSH2 0xC4A DUP8 DUP4 DUP8 PUSH2 0x105A JUMP JUMPDEST DUP4 PUSH2 0xD61 JUMP JUMPDEST PUSH2 0xC5F TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xD61 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xD03 PUSH2 0x116C JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x4CD JUMPI PUSH2 0x4CD DUP2 PUSH2 0x1170 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3F9095B7 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE0D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0xE7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12D4 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B820093 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x940070700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP7 AND SWAP2 PUSH4 0x9400707 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0xFC7 PUSH2 0xFC0 DUP5 DUP7 PUSH2 0x719 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x119A JUMP JUMPDEST SWAP2 POP DUP2 ISZERO PUSH2 0xFDA JUMPI PUSH2 0xFDA DUP4 DUP6 DUP4 PUSH2 0x11A8 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x5F3 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xD61 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFD PUSH2 0xC96 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x106C DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xD61 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1160 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH2 0x819 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x121F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F3 DUP4 DUP4 PUSH1 0x1 PUSH2 0x129A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE DUP4 ADD DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 PUSH32 0x9D228D69B5FDB8D273A2336F8FB8612D039631024EA9BF09C424A9503AA078F0 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12A9 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xD61 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP INVALID NUMBER PUSH2 0x6C6C PUSH6 0x72206E6F7420 PUSH2 0x6C6C PUSH16 0x77656420746F206D696E7420666F7220 PUSH22 0x736572476175676520646F6573206E6F742065786973 PUSH21 0x206F6E20436F6E74726F6C6C6572A2646970667358 0x22 SLT KECCAK256 0xBF ADDRESS 0xE0 SWAP2 0xA8 BYTE SWAP9 SWAP5 0xC3 SWAP10 SWAP6 SMOD 0x4C SWAP14 DIFFICULTY PUSH1 0x8B 0xA6 INVALID PUSH4 0xB76AA04A SWAP1 CALLDATASIZE GAS PUSH32 0x77421B3664736F6C634300070100330000000000000000000000000000000000 ","sourceMap":"1181:1939:71:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3440:139:66;;;;;;;;;;;;;;;;-1:-1:-1;3440:139:66;;;;;;;;;;;:::i;:::-;;5582:178;;;;;;;;;;;;;;;;-1:-1:-1;5582:178:66;;;;;;;;;;;:::i;2324:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2324:150:66;;-1:-1:-1;2324:150:66;-1:-1:-1;2324:150:66;:::i;:::-;;;;;;;;;;;;;;;;2788:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2788:251:66;-1:-1:-1;2788:251:66;;;;:::i;3251:147::-;;;;;;;;;;;;;;;;-1:-1:-1;3251:147:66;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1846:120:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2153:129:66;;;;;;;;;;;;;;;;-1:-1:-1;2153:129:66;;;;:::i;2516:230::-;;;;;;;;;;;;;;;;-1:-1:-1;2516:230:66;;;;;;;;;;;:::i;3081:128::-;;;;;;;;;;;;;;;;-1:-1:-1;3081:128:66;;;;;;;;;;;:::i;1303:121:47:-;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:47;;;;:::i;5278:262:66:-;;;;;;;;;;;;;;;;-1:-1:-1;5278:262:66;:::i;2015:96::-;;;:::i;3621:541::-;;;;;;;;;;;;;;;;-1:-1:-1;3621:541:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5802:142::-;;;;;;;;;;;;;;;;-1:-1:-1;5802:142:66;;;;:::i;1688:121:71:-;;;:::i;1184:113:47:-;;;:::i;3440:139:66:-;3524:48;3543:6;3551:10;3563:8;3524:18;:48::i;:::-;3440:139;;:::o;5582:178::-;2613:20:63;:18;:20::i;:::-;5689:10:66::1;5674:26;::::0;;;:14:::1;:26;::::0;;;;;;;::::1;:32:::0;::::1;::::0;;;;;;;;::::1;;5670:84;;;5722:21;5731:5;5738:4;5722:8;:21::i;:::-;;5670:84;2654:19:63::0;:17;:19::i;2324:150:66:-;2409:7;2613:20:63;:18;:20::i;:::-;2435:32:66::1;2448:6;;2456:10;2435:12;:32::i;:::-;2428:39;;2654:19:63::0;:17;:19::i;:::-;2324:150:66;;;;:::o;2788:251::-;2890:7;2613:20:63;:18;:20::i;:::-;2932:10:66::1;2917:26;::::0;;;:14:::1;:26;::::0;;;;;;;::::1;:32:::0;::::1;::::0;;;;;;;;::::1;;2909:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3006:26;3019:6;;3027:4;3006:12;:26::i;:::-;2999:33;;2654:19:63::0;:17;:19::i;:::-;2788:251:66;;;;;:::o;3251:147::-;3363:22;;;;3340:4;3363:22;;;:14;:22;;;;;;;;:28;;;;;;;;;;;;;;;3251:147::o;1846:120:71:-;1943:16;1846:120;:::o;2153:129:66:-;2222:7;2613:20:63;:18;:20::i;:::-;2248:27:66::1;2257:5;2264:10;2248:8;:27::i;:::-;2241:34;;2654:19:63::0;:17;:19::i;:::-;2153:129:66;;;:::o;2516:230::-;2602:7;2613:20:63;:18;:20::i;:::-;2644:10:66::1;2629:26;::::0;;;:14:::1;:26;::::0;;;;;;;::::1;:32:::0;::::1;::::0;;;;;;;;::::1;;2621:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2718:21;2727:5;2734:4;2718:8;:21::i;3081:128::-:0;3182:13;;;;3156:7;3182:13;;;:7;:13;;;;;;;;:20;;;;;;;;;;;;;3081:128::o;1303:121:47:-;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;5278:262:66:-;2613:20:63;:18;:20::i;:::-;5371:9:66::1;5366:168;5390:1;5386;:5;5366:168;;;5437:1;5416:6:::0;5423:1;5416:9:::1;::::0;::::1;;;;;;;;;;;:23;;;5412:67;;;5459:5;;5412:67;5492:31;5501:6;5508:1;5501:9;;;;;;;;;;;;;5512:10;5492:8;:31::i;:::-;-1:-1:-1::0;5393:3:66::1;;5366:168;;;;2654:19:63::0;:17;:19::i;:::-;5278:262:66;:::o;2015:96::-;2098:6;2015:96;:::o;3621:541::-;3845:18;1618:105;3931:6;3939:8;3949:18;3962:4;3949:12;:18::i;:::-;3889:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3866:122;;;;;;-1:-1:-1;3999:103:66;4021:4;3866:122;4039:26;4057:1;4060;4063;4039:17;:26::i;:::-;4067:8;13190:3:31;3999:21:66;:103::i;:::-;4113:42;4132:6;4140:4;4146:8;4113:18;:42::i;:::-;3621:541;;;;;;;;:::o;5802:142::-;5902:22;;;;;;;:14;:22;;;;;;;;5925:10;5902:34;;;;;;;;5875:62;;5893:6;;5902:34;;5901:35;5875:17;:62::i;1688:121:71:-;1791:11;1688:121;:::o;1184:113:47:-;1244:7;1270:20;:18;:20::i;:::-;1263:27;;1184:113;:::o;4168:223:66:-;4289:22;;;;;;;;:14;:22;;;;;;;;:28;;;;;;;;;;;;;:39;;;;;;;;;;;;;4343:41;;;;;;;4289:22;;:28;4343:41;;;;;;;;;;4168:223;;;:::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;1999:245:71:-;2073:20;2120:25;2133:5;2140:4;2120:12;:25::i;:::-;2105:40;-1:-1:-1;2159:16:71;;2155:83;;2191:11;:16;;;2208:4;2214:12;2191:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1999:245;;;;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;2250:385:71:-;2340:20;2389:6;2340:20;2412:124;2436:6;2432:1;:10;2412:124;;;2478:47;2495:29;2508:6;;2515:1;2508:9;;;;;;;;;;;;;;;2519:4;2495:12;:29::i;:::-;2478:12;;:16;:47::i;:::-;2463:62;-1:-1:-1;2444:3:71;;2412:124;;;-1:-1:-1;2550:16:71;;2546:83;;2582:11;:16;;;2599:4;2605:12;2582:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2546:83;2250:385;;;;;;:::o;3803:419:47:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:47;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:47:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:31;2487:8:47;:63::i;:::-;-1:-1:-1;;;2884:19:47;;;;;;;;2907:1;2884:19;;;;;;;;:24;;;;;;;-1:-1:-1;;1701:1214:47:o;2386:188:58:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;2641:477:71:-;2710:20;2789:1;2750:16;:28;;;2779:5;2750:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2750:35:71;:40;;;;2742:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2856:5;2840:38;;;2879:4;2840:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2914:47:71;;;;;;:41;:47;;;;;;;;;2894:17;;2914:41;;;;;:47;;;;;2840:44;;2914:47;;;;;;;:41;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2914:47:71;;-1:-1:-1;2986:34:71;3000:19;3007:4;3013:5;3000:6;:19::i;:::-;2986:9;;:13;:34::i;:::-;2971:49;-1:-1:-1;3035:16:71;;3031:81;;3067:34;3078:4;3084:5;3091:9;3067:10;:34::i;:::-;2641:477;;;;;:::o;966:167:65:-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;3199:183:58:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:47:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:31;3082:8:47;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:47;;;;;;-1:-1:-1;;3728:30:47;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:47:o;3433:187:58:-;3595:9;;3570:44::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;1404:121:65:-;1462:7;1488:30;1492:1;1495;5194::31;1488:3:65;:30::i;4424:189:66:-;4537:13;;;;;;;;:7;:13;;;;;;;;:20;;;;;;;;;;;;;:28;;;4580:26;;;;;;;;;;;;4537:13;;4580:26;;;;;;;;;;;4424:189;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1816:206:65;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:65;;;1816:206::o"},"methodIdentifiers":{"allowed_to_mint_for(address,address)":"a0990033","getBalancerToken()":"c0039699","getBalancerTokenAdmin()":"e6dec36f","getDomainSeparator()":"ed24911d","getGaugeController()":"58de9ade","getMinterApproval(address,address)":"3c543bc6","getNextNonce(address)":"90193b7c","mint(address)":"6a627842","mintFor(address,address)":"7504a15d","mintMany(address[])":"397ada21","mintManyFor(address[],address)":"3b9f7384","mint_for(address,address)":"27f18ae3","mint_many(address[8])":"a51e1904","minted(address,address)":"8b752bb0","setMinterApproval(address,bool)":"0de54ba0","setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)":"c6542794","toggle_approve_mint(address)":"dd289d60"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IBalancerTokenAdmin\",\"name\":\"tokenAdmin\",\"type\":\"address\"},{\"internalType\":\"contract IGaugeController\",\"name\":\"gaugeController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"MinterApprovalSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed_to_mint_for\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerTokenAdmin\",\"outputs\":[{\"internalType\":\"contract IBalancerTokenAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeController\",\"outputs\":[{\"internalType\":\"contract IGaugeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinterApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"mintMany\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintManyFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mint_for\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[8]\",\"name\":\"gauges\",\"type\":\"address[8]\"}],\"name\":\"mint_many\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"minted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMinterApprovalWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"toggle_approve_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"mint(address)\":{\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\"}},\"mintFor(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mintMany(address[])\":{\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"mintManyFor(address[],address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\",\"user\":\"Address to mint to\"}},\"mint_for(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mint_many(address[8])\":{\"details\":\"This function is not recommended as `mintMany()` is more flexible and gas efficient\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowed_to_mint_for(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"},\"getBalancerTokenAdmin()\":{\"notice\":\"Returns the address of the Balancer Token Admin contract\"},\"getGaugeController()\":{\"notice\":\"Returns the address of the Gauge Controller\"},\"getMinterApproval(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"mint(address)\":{\"notice\":\"Mint everything which belongs to `msg.sender` and send to them\"},\"mintFor(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mintMany(address[])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"mintManyFor(address[],address)\":{\"notice\":\"Mint tokens for `user` across multiple gauges\"},\"mint_for(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mint_many(address[8])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"minted(address,address)\":{\"notice\":\"The total number of tokens minted for `user` from `gauge`\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on your behalf\"},\"setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing them.\"},\"toggle_approve_mint(address)\":{\"notice\":\"Toggle whether `minter` is approved to mint tokens for `user`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MainnetBalancerMinter.sol\":\"MainnetBalancerMinter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/BalancerMinter.sol\":{\"keccak256\":\"0xbacdfde61937f9cea9166c7e492ac8d65261fb6bdfb621f1f258852799204cc8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3e68da1f25c0211654bb0b04c4ac1a789cb3dfabd7f5db54d6bfbeb49414e0c\",\"dweb:/ipfs/QmRnvBWovj9HNZsEfvrZpbJcs3K7ikwrY8fkX68F7rdxQK\"]},\"contracts/MainnetBalancerMinter.sol\":{\"keccak256\":\"0x97d3bb040125bc72090563215acafecf1cec500edc5865bb547a26e8b633d5bd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a74065e8ff779e3a14186ceb14ad339e229d2c1f3c5d02f9a0b6d693248d9814\",\"dweb:/ipfs/QmbsoYowFpmcfxwnj6d57iSuBibtgxGU4q1EKoBnb4qpAe\"]}},\"version\":1}"}},"contracts/NullVotingEscrow.sol":{"NullVotingEscrow":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506102a7806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806370a082311161005057806370a0823114610121578063a9059cbb14610077578063dd62ed3e1461015457610072565b8063095ea7b31461007757806318160ddd146100c457806323b872dd146100de575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561018f565b604080519115158252519081900360200190f35b6100cc6101a2565b60408051918252519081900360200190f35b6100b0600480360360608110156100f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356101a7565b6100cc6004803603602081101561013757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101bb565b6100cc6004803603604081101561016a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166101c1565b600061019c6103e66101c9565b92915050565b600090565b60006101b46103e66101c9565b9392505050565b50600090565b600092915050565b6101f3817f42414c00000000000000000000000000000000000000000000000000000000006101f6565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea26469706673582212205cdff8c9f1978d0900522b46a4d20ed4b492c28d00ac56065785352b3be111e064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A7 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x154 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xDE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x18F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x1A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1A7 JUMP JUMPDEST PUSH2 0xCC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1BB JUMP JUMPDEST PUSH2 0xCC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1C1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19C PUSH2 0x3E6 PUSH2 0x1C9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B4 PUSH2 0x3E6 PUSH2 0x1C9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1F3 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1F6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5C 0xDF 0xF8 0xC9 CALL SWAP8 DUP14 MULMOD STOP MSTORE 0x2B CHAINID LOG4 0xD2 0xE 0xD4 0xB4 SWAP3 0xC2 DUP14 STOP 0xAC JUMP MOD JUMPI DUP6 CALLDATALOAD 0x2B EXTCODESIZE 0xE1 GT 0xE0 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1396:762:72:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c806370a082311161005057806370a0823114610121578063a9059cbb14610077578063dd62ed3e1461015457610072565b8063095ea7b31461007757806318160ddd146100c457806323b872dd146100de575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561018f565b604080519115158252519081900360200190f35b6100cc6101a2565b60408051918252519081900360200190f35b6100b0600480360360608110156100f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356101a7565b6100cc6004803603602081101561013757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101bb565b6100cc6004803603604081101561016a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166101c1565b600061019c6103e66101c9565b92915050565b600090565b60006101b46103e66101c9565b9392505050565b50600090565b600092915050565b6101f3817f42414c00000000000000000000000000000000000000000000000000000000006101f6565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea26469706673582212205cdff8c9f1978d0900522b46a4d20ed4b492c28d00ac56065785352b3be111e064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x154 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xDE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x18F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x1A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1A7 JUMP JUMPDEST PUSH2 0xCC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1BB JUMP JUMPDEST PUSH2 0xCC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1C1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19C PUSH2 0x3E6 PUSH2 0x1C9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B4 PUSH2 0x3E6 PUSH2 0x1C9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1F3 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1F6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5C 0xDF 0xF8 0xC9 CALL SWAP8 DUP14 MULMOD STOP MSTORE 0x2B CHAINID LOG4 0xD2 0xE 0xD4 0xB4 SWAP3 0xC2 DUP14 STOP 0xAC JUMP MOD JUMPI DUP6 CALLDATALOAD 0x2B EXTCODESIZE 0xE1 GT 0xE0 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1396:762:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1742:119;;;;;;;;;;;;;;;;-1:-1:-1;1742:119:72;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1438:89;;;:::i;:::-;;;;;;;;;;;;;;;;1993:163;;;;;;;;;;;;;;;;-1:-1:-1;1993:163:72;;;;;;;;;;;;;;;;;;:::i;1533:94::-;;;;;;;;;;;;;;;;-1:-1:-1;1533:94:72;;;;:::i;1633:103::-;;;;;;;;;;;;;;;;-1:-1:-1;1633:103:72;;;;;;;;;;;:::i;1742:119::-;1809:4;1825:29;15034:3:31;1825:7:72;:29::i;:::-;1742:119;;;;:::o;1438:89::-;1493:7;1438:89;:::o;1993:163::-;2104:4;2120:29;15034:3:31;2120:7:72;:29::i;:::-;1993:163;;;;;:::o;1533:94::-;-1:-1:-1;1593:7:72;;1533:94::o;1633:103::-;1702:7;1633:103;;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is to be used as the fallback `VotingEscrow` on chains other than Ethereum mainnet. In the situation where boosts are not properly relayed from Ethereum mainnet to a chain and the veBoost implementation is killed, values will be read from here which will have the effect of zeroing out any boosts.\",\"kind\":\"dev\",\"methods\":{\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"}},\"title\":\"Null VotingEscrow\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This contract fulfils the role of a `VotingEscrow` contract where no accounts hold a balance for the purposes of gauge boosts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/NullVotingEscrow.sol\":\"NullVotingEscrow\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"contracts/NullVotingEscrow.sol\":{\"keccak256\":\"0x4ed33901c3bacc0128fa1802dd10c44d81208ee4b50c605f3665a863cbf77643\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://176dc6ac382825bef6b7b1d31249a45d34789339d9ca50d67bac54975e794fbe\",\"dweb:/ipfs/QmNzka2jCZihZ9haFGrF2KCLjrEYpwpkSTPHtPbfsQqdWL\"]}},\"version\":1}"}},"contracts/OmniVotingEscrowAdaptor.sol":{"OmniVotingEscrowAdaptor":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"newAdapterParams","type":"bytes"}],"name":"AdapterParamsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IOmniVotingEscrow","name":"newOmniVotingEscrow","type":"address"}],"name":"OmniVotingEscrowUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"newUseZero","type":"bool"}],"name":"UseZeroUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newZeroPaymentAddress","type":"address"}],"name":"ZeroPaymentAddressUpdated","type":"event"},{"inputs":[{"internalType":"uint16","name":"_dstChainId","type":"uint16"}],"name":"estimateSendUserBalance","outputs":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"zroFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAdapterParams","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOmniVotingEscrow","outputs":[{"internalType":"contract IOmniVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUseZero","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getZeroPaymentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"address payable","name":"_refundAddress","type":"address"}],"name":"sendUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"adapterParams","type":"bytes"}],"name":"setAdapterParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IOmniVotingEscrow","name":"omniVotingEscrow","type":"address"}],"name":"setOmniVotingEscrow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"useZro","type":"bool"}],"name":"setUseZero","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"paymentAddress","type":"address"}],"name":"setZeroPaymentAddress","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b50604051610f77380380610f778339818101604052602081101561003357600080fd5b5051306080819052606082901b6001600160601b03191660a052906001600160a01b0316610f03610074600039806108b35250806108465250610f036000f3fe6080604052600436106100d15760003560e01c806357fb83451161007f578063aaabadc511610059578063aaabadc514610304578063d56b6a4a14610319578063e241e489146103cc578063ecc4c5831461040c576100d1565b806357fb83451461024a578063851c1bb3146102915780638d928af8146102ef576100d1565b8063299fd6fc116100b0578063299fd6fc1461017f5780634cfde448146101ab578063550f2f7f14610235576100d1565b8062986fe0146100d65780630943b7b8146100ff57806309d401f91461013d575b600080fd5b3480156100e257600080fd5b506100eb610453565b604080519115158252519081900360200190f35b34801561010b57600080fd5b50610114610474565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561014957600080fd5b5061017d6004803603602081101561016057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610490565b005b34801561018b57600080fd5b5061017d600480360360208110156101a257600080fd5b50351515610505565b3480156101b757600080fd5b506101c061058c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101fa5781810151838201526020016101e2565b50505050905090810190601f1680156102275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024157600080fd5b5061011461063f565b61017d6004803603606081101561026057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169161ffff602082013516916040909101351661065b565b34801561029d57600080fd5b506102dd600480360360208110156102b457600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610840565b60408051918252519081900360200190f35b3480156102fb57600080fd5b506101146108b1565b34801561031057600080fd5b506101146108d5565b34801561032557600080fd5b5061017d6004803603602081101561033c57600080fd5b81019060208101813564010000000081111561035757600080fd5b82018360208201111561036957600080fd5b8035906020019184600183028401116401000000008311171561038b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610955945050505050565b3480156103d857600080fd5b5061017d600480360360208110156103ef57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a0d565b34801561041857600080fd5b5061043a6004803603602081101561042f57600080fd5b503561ffff16610a84565b6040805192835260208301919091528051918290030190f35b60005474010000000000000000000000000000000000000000900460ff1690565b60025473ffffffffffffffffffffffffffffffffffffffff1690565b610498610c87565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917fe8bb344458d00606347f5b2f5b6f6de2a6f0beeb7aa331c6b90549adc7c093c091a250565b61050d610c87565b600080548215157401000000000000000000000000000000000000000081027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790915560408051918252517fc22a8ea88c11878d4bbc93fc8deeaae9120fa8540716f449ba01e0b79a1b020c9181900360200190a150565b60018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156106355780601f1061060a57610100808354040283529160200191610635565b820191906000526020600020905b81548152906001019060200180831161061857829003601f168201915b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b600061066561063f565b905073ffffffffffffffffffffffffffffffffffffffff81166106e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f6d6e6920766f74696e6720657363726f77206e6f7420736574000000000000604482015290519081900360640190fd5b600280546040517f4a75948900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830190815261ffff8816602484015286821660448401529281166064830181905260a060848401908152600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316156101000201169690960460a4850181905292871695634a7594899534958c958c958c9590949392909160c490910190849080156107fe5780601f106107d3576101008083540402835291602001916107fe565b820191906000526020600020905b8154815290600101906020018083116107e157829003601f168201915b505096505050505050506000604051808303818588803b15801561082157600080fd5b505af1158015610835573d6000803e3d6000fd5b505050505050505050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006108df6108b1565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561092457600080fd5b505afa158015610938573d6000803e3d6000fd5b505050506040513d602081101561094e57600080fd5b5051905090565b61095d610c87565b8051610970906001906020840190610e3a565b507f89eee6f0981b5afc30154f85e504f26bc7b53645844dcb29588946e5cf35d9f4816040518080602001828103825283818151815260200191508051906020019080838360005b838110156109d05781810151838201526020016109b8565b50505050905090810190601f1680156109fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b610a15610c87565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fa7bee2b81c8995421ba22c824cb2b9a80372d577f8220162fe395c089a2782ca90600090a250565b6000806000610a9161063f565b905073ffffffffffffffffffffffffffffffffffffffff8116610b1557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f6d6e6920766f74696e6720657363726f77206e6f7420736574000000000000604482015290519081900360640190fd5b6000546040517f65d092d000000000000000000000000000000000000000000000000000000000815261ffff8616600482019081527401000000000000000000000000000000000000000090920460ff16801515602483015260606044830190815260018054600261010082841615027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909116046064850181905273ffffffffffffffffffffffffffffffffffffffff8716956365d092d0958b9594919260849091019084908015610c2a5780601f10610bff57610100808354040283529160200191610c2a565b820191906000526020600020905b815481529060010190602001808311610c0d57829003601f168201915b5050945050505050604080518083038186803b158015610c4957600080fd5b505afa158015610c5d573d6000803e3d6000fd5b505050506040513d6040811015610c7357600080fd5b508051602090910151909350915050915091565b6000610cb66000357fffffffff0000000000000000000000000000000000000000000000000000000016610840565b9050610ccd610cc58233610cd0565b610191610d99565b50565b6000610cda6108d5565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610d6657600080fd5b505afa158015610d7a573d6000803e3d6000fd5b505050506040513d6020811015610d9057600080fd5b50519392505050565b81610da757610da781610dab565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610ccd917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e7b57805160ff1916838001178555610ea8565b82800160010185558215610ea8579182015b82811115610ea8578251825591602001919060010190610e8d565b50610eb4929150610eb8565b5090565b5b80821115610eb45760008155600101610eb956fea26469706673582212200e11e19cd82f550c13e5ee1ac2d25366eb3988683915731a4fae5ab9d2db479a64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xF77 CODESIZE SUB DUP1 PUSH2 0xF77 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF03 PUSH2 0x74 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x8B3 MSTORE POP DUP1 PUSH2 0x846 MSTORE POP PUSH2 0xF03 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD1 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x57FB8345 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x304 JUMPI DUP1 PUSH4 0xD56B6A4A EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0xE241E489 EQ PUSH2 0x3CC JUMPI DUP1 PUSH4 0xECC4C583 EQ PUSH2 0x40C JUMPI PUSH2 0xD1 JUMP JUMPDEST DUP1 PUSH4 0x57FB8345 EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x2EF JUMPI PUSH2 0xD1 JUMP JUMPDEST DUP1 PUSH4 0x299FD6FC GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x299FD6FC EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x4CFDE448 EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0x550F2F7F EQ PUSH2 0x235 JUMPI PUSH2 0xD1 JUMP JUMPDEST DUP1 PUSH3 0x986FE0 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0x943B7B8 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x9D401F9 EQ PUSH2 0x13D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xEB PUSH2 0x453 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x474 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x160 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x490 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x505 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x58C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1FA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x227 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x63F JUMP JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH2 0xFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x65B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x840 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x8B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x8D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x357 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x38B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x955 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFFFF AND PUSH2 0xA84 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x498 PUSH2 0xC87 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xE8BB344458D00606347F5B2F5B6F6DE2A6F0BEEB7AA331C6B90549ADC7C093C0 SWAP2 LOG2 POP JUMP JUMPDEST PUSH2 0x50D PUSH2 0xC87 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP3 ISZERO ISZERO PUSH21 0x10000000000000000000000000000000000000000 DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0xC22A8EA88C11878D4BBC93FC8DEEAAE9120FA8540716F449BA01E0B79A1B020C SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x635 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x60A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x635 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x618 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x665 PUSH2 0x63F JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x6E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6D6E6920766F74696E6720657363726F77206E6F7420736574000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x4A75948900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD SWAP1 DUP2 MSTORE PUSH2 0xFFFF DUP9 AND PUSH1 0x24 DUP5 ADD MSTORE DUP7 DUP3 AND PUSH1 0x44 DUP5 ADD MSTORE SWAP3 DUP2 AND PUSH1 0x64 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP4 AND ISZERO PUSH2 0x100 MUL ADD AND SWAP7 SWAP1 SWAP7 DIV PUSH1 0xA4 DUP6 ADD DUP2 SWAP1 MSTORE SWAP3 DUP8 AND SWAP6 PUSH4 0x4A759489 SWAP6 CALLVALUE SWAP6 DUP13 SWAP6 DUP13 SWAP6 DUP13 SWAP6 SWAP1 SWAP5 SWAP4 SWAP3 SWAP1 SWAP2 PUSH1 0xC4 SWAP1 SWAP2 ADD SWAP1 DUP5 SWAP1 DUP1 ISZERO PUSH2 0x7FE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7FE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7E1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x835 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8DF PUSH2 0x8B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x938 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x94E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x95D PUSH2 0xC87 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x970 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xE3A JUMP JUMPDEST POP PUSH32 0x89EEE6F0981B5AFC30154F85E504F26BC7B53645844DCB29588946E5CF35D9F4 DUP2 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9D0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9B8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x9FD JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xA15 PUSH2 0xC87 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA7BEE2B81C8995421BA22C824CB2B9A80372D577F8220162FE395C089A2782CA SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA91 PUSH2 0x63F JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xB15 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6D6E6920766F74696E6720657363726F77206E6F7420736574000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x65D092D000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0xFFFF DUP7 AND PUSH1 0x4 DUP3 ADD SWAP1 DUP2 MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH1 0xFF AND DUP1 ISZERO ISZERO PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x44 DUP4 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0x2 PUSH2 0x100 DUP3 DUP5 AND ISZERO MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP2 AND DIV PUSH1 0x64 DUP6 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP6 PUSH4 0x65D092D0 SWAP6 DUP12 SWAP6 SWAP5 SWAP2 SWAP3 PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 DUP5 SWAP1 DUP1 ISZERO PUSH2 0xC2A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xBFF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC2A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC0D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP5 POP POP POP POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP4 POP SWAP2 POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB6 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x840 JUMP JUMPDEST SWAP1 POP PUSH2 0xCCD PUSH2 0xCC5 DUP3 CALLER PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xD99 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCDA PUSH2 0x8D5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xDA7 JUMPI PUSH2 0xDA7 DUP2 PUSH2 0xDAB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0xCCD SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xE7B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xEA8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xEA8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xEA8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xE8D JUMP JUMPDEST POP PUSH2 0xEB4 SWAP3 SWAP2 POP PUSH2 0xEB8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEB4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xEB9 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE GT 0xE1 SWAP13 0xD8 0x2F SSTORE 0xC SGT 0xE5 0xEE BYTE 0xC2 0xD2 MSTORE8 PUSH7 0xEB398868391573 BYTE 0x4F 0xAE GAS 0xB9 0xD2 0xDB SELFBALANCE SWAP11 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1382:3073:73:-:0;;;1670:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1670:121:73;1054:4:51;2049:46:46;;;;1073:14:51::1;::::0;;;-1:-1:-1;;;;;;1073:14:51;::::1;::::0;1054:4;-1:-1:-1;;;;;1382:3073:73;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":2118}],"3611":[{"length":32,"start":2227}]},"linkReferences":{},"object":"6080604052600436106100d15760003560e01c806357fb83451161007f578063aaabadc511610059578063aaabadc514610304578063d56b6a4a14610319578063e241e489146103cc578063ecc4c5831461040c576100d1565b806357fb83451461024a578063851c1bb3146102915780638d928af8146102ef576100d1565b8063299fd6fc116100b0578063299fd6fc1461017f5780634cfde448146101ab578063550f2f7f14610235576100d1565b8062986fe0146100d65780630943b7b8146100ff57806309d401f91461013d575b600080fd5b3480156100e257600080fd5b506100eb610453565b604080519115158252519081900360200190f35b34801561010b57600080fd5b50610114610474565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561014957600080fd5b5061017d6004803603602081101561016057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610490565b005b34801561018b57600080fd5b5061017d600480360360208110156101a257600080fd5b50351515610505565b3480156101b757600080fd5b506101c061058c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101fa5781810151838201526020016101e2565b50505050905090810190601f1680156102275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024157600080fd5b5061011461063f565b61017d6004803603606081101561026057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169161ffff602082013516916040909101351661065b565b34801561029d57600080fd5b506102dd600480360360208110156102b457600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610840565b60408051918252519081900360200190f35b3480156102fb57600080fd5b506101146108b1565b34801561031057600080fd5b506101146108d5565b34801561032557600080fd5b5061017d6004803603602081101561033c57600080fd5b81019060208101813564010000000081111561035757600080fd5b82018360208201111561036957600080fd5b8035906020019184600183028401116401000000008311171561038b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610955945050505050565b3480156103d857600080fd5b5061017d600480360360208110156103ef57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a0d565b34801561041857600080fd5b5061043a6004803603602081101561042f57600080fd5b503561ffff16610a84565b6040805192835260208301919091528051918290030190f35b60005474010000000000000000000000000000000000000000900460ff1690565b60025473ffffffffffffffffffffffffffffffffffffffff1690565b610498610c87565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917fe8bb344458d00606347f5b2f5b6f6de2a6f0beeb7aa331c6b90549adc7c093c091a250565b61050d610c87565b600080548215157401000000000000000000000000000000000000000081027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790915560408051918252517fc22a8ea88c11878d4bbc93fc8deeaae9120fa8540716f449ba01e0b79a1b020c9181900360200190a150565b60018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156106355780601f1061060a57610100808354040283529160200191610635565b820191906000526020600020905b81548152906001019060200180831161061857829003601f168201915b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b600061066561063f565b905073ffffffffffffffffffffffffffffffffffffffff81166106e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f6d6e6920766f74696e6720657363726f77206e6f7420736574000000000000604482015290519081900360640190fd5b600280546040517f4a75948900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830190815261ffff8816602484015286821660448401529281166064830181905260a060848401908152600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316156101000201169690960460a4850181905292871695634a7594899534958c958c958c9590949392909160c490910190849080156107fe5780601f106107d3576101008083540402835291602001916107fe565b820191906000526020600020905b8154815290600101906020018083116107e157829003601f168201915b505096505050505050506000604051808303818588803b15801561082157600080fd5b505af1158015610835573d6000803e3d6000fd5b505050505050505050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006108df6108b1565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561092457600080fd5b505afa158015610938573d6000803e3d6000fd5b505050506040513d602081101561094e57600080fd5b5051905090565b61095d610c87565b8051610970906001906020840190610e3a565b507f89eee6f0981b5afc30154f85e504f26bc7b53645844dcb29588946e5cf35d9f4816040518080602001828103825283818151815260200191508051906020019080838360005b838110156109d05781810151838201526020016109b8565b50505050905090810190601f1680156109fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b610a15610c87565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fa7bee2b81c8995421ba22c824cb2b9a80372d577f8220162fe395c089a2782ca90600090a250565b6000806000610a9161063f565b905073ffffffffffffffffffffffffffffffffffffffff8116610b1557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f6d6e6920766f74696e6720657363726f77206e6f7420736574000000000000604482015290519081900360640190fd5b6000546040517f65d092d000000000000000000000000000000000000000000000000000000000815261ffff8616600482019081527401000000000000000000000000000000000000000090920460ff16801515602483015260606044830190815260018054600261010082841615027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909116046064850181905273ffffffffffffffffffffffffffffffffffffffff8716956365d092d0958b9594919260849091019084908015610c2a5780601f10610bff57610100808354040283529160200191610c2a565b820191906000526020600020905b815481529060010190602001808311610c0d57829003601f168201915b5050945050505050604080518083038186803b158015610c4957600080fd5b505afa158015610c5d573d6000803e3d6000fd5b505050506040513d6040811015610c7357600080fd5b508051602090910151909350915050915091565b6000610cb66000357fffffffff0000000000000000000000000000000000000000000000000000000016610840565b9050610ccd610cc58233610cd0565b610191610d99565b50565b6000610cda6108d5565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610d6657600080fd5b505afa158015610d7a573d6000803e3d6000fd5b505050506040513d6020811015610d9057600080fd5b50519392505050565b81610da757610da781610dab565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610ccd917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e7b57805160ff1916838001178555610ea8565b82800160010185558215610ea8579182015b82811115610ea8578251825591602001919060010190610e8d565b50610eb4929150610eb8565b5090565b5b80821115610eb45760008155600101610eb956fea26469706673582212200e11e19cd82f550c13e5ee1ac2d25366eb3988683915731a4fae5ab9d2db479a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD1 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x57FB8345 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x304 JUMPI DUP1 PUSH4 0xD56B6A4A EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0xE241E489 EQ PUSH2 0x3CC JUMPI DUP1 PUSH4 0xECC4C583 EQ PUSH2 0x40C JUMPI PUSH2 0xD1 JUMP JUMPDEST DUP1 PUSH4 0x57FB8345 EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x2EF JUMPI PUSH2 0xD1 JUMP JUMPDEST DUP1 PUSH4 0x299FD6FC GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x299FD6FC EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x4CFDE448 EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0x550F2F7F EQ PUSH2 0x235 JUMPI PUSH2 0xD1 JUMP JUMPDEST DUP1 PUSH3 0x986FE0 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0x943B7B8 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x9D401F9 EQ PUSH2 0x13D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xEB PUSH2 0x453 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x474 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x160 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x490 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x505 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x58C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1FA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x227 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x63F JUMP JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH2 0xFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x65B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x840 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x8B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x8D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x357 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x38B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x955 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFFFF AND PUSH2 0xA84 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x498 PUSH2 0xC87 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xE8BB344458D00606347F5B2F5B6F6DE2A6F0BEEB7AA331C6B90549ADC7C093C0 SWAP2 LOG2 POP JUMP JUMPDEST PUSH2 0x50D PUSH2 0xC87 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP3 ISZERO ISZERO PUSH21 0x10000000000000000000000000000000000000000 DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0xC22A8EA88C11878D4BBC93FC8DEEAAE9120FA8540716F449BA01E0B79A1B020C SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x635 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x60A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x635 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x618 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x665 PUSH2 0x63F JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x6E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6D6E6920766F74696E6720657363726F77206E6F7420736574000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x4A75948900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD SWAP1 DUP2 MSTORE PUSH2 0xFFFF DUP9 AND PUSH1 0x24 DUP5 ADD MSTORE DUP7 DUP3 AND PUSH1 0x44 DUP5 ADD MSTORE SWAP3 DUP2 AND PUSH1 0x64 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP4 AND ISZERO PUSH2 0x100 MUL ADD AND SWAP7 SWAP1 SWAP7 DIV PUSH1 0xA4 DUP6 ADD DUP2 SWAP1 MSTORE SWAP3 DUP8 AND SWAP6 PUSH4 0x4A759489 SWAP6 CALLVALUE SWAP6 DUP13 SWAP6 DUP13 SWAP6 DUP13 SWAP6 SWAP1 SWAP5 SWAP4 SWAP3 SWAP1 SWAP2 PUSH1 0xC4 SWAP1 SWAP2 ADD SWAP1 DUP5 SWAP1 DUP1 ISZERO PUSH2 0x7FE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7FE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7E1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x835 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8DF PUSH2 0x8B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x938 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x94E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x95D PUSH2 0xC87 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x970 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xE3A JUMP JUMPDEST POP PUSH32 0x89EEE6F0981B5AFC30154F85E504F26BC7B53645844DCB29588946E5CF35D9F4 DUP2 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9D0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9B8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x9FD JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xA15 PUSH2 0xC87 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA7BEE2B81C8995421BA22C824CB2B9A80372D577F8220162FE395C089A2782CA SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA91 PUSH2 0x63F JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xB15 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6D6E6920766F74696E6720657363726F77206E6F7420736574000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x65D092D000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0xFFFF DUP7 AND PUSH1 0x4 DUP3 ADD SWAP1 DUP2 MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH1 0xFF AND DUP1 ISZERO ISZERO PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x44 DUP4 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0x2 PUSH2 0x100 DUP3 DUP5 AND ISZERO MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP2 AND DIV PUSH1 0x64 DUP6 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP6 PUSH4 0x65D092D0 SWAP6 DUP12 SWAP6 SWAP5 SWAP2 SWAP3 PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 DUP5 SWAP1 DUP1 ISZERO PUSH2 0xC2A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xBFF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC2A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC0D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP5 POP POP POP POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP4 POP SWAP2 POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB6 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x840 JUMP JUMPDEST SWAP1 POP PUSH2 0xCCD PUSH2 0xCC5 DUP3 CALLER PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xD99 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCDA PUSH2 0x8D5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xDA7 JUMPI PUSH2 0xDA7 DUP2 PUSH2 0xDAB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0xCCD SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xE7B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xEA8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xEA8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xEA8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xE8D JUMP JUMPDEST POP PUSH2 0xEB4 SWAP3 SWAP2 POP PUSH2 0xEB8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEB4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xEB9 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE GT 0xE1 SWAP13 0xD8 0x2F SSTORE 0xC SGT 0xE5 0xEE BYTE 0xC2 0xD2 MSTORE8 PUSH7 0xEB398868391573 BYTE 0x4F 0xAE GAS 0xB9 0xD2 0xDB SELFBALANCE SWAP11 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1382:3073:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2030:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2351:116;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3561:205;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3561:205:73;;;;:::i;:::-;;3825:134;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3825:134:73;;;;:::i;2180:112::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1850:121;;;;;;;;;;;;;:::i;2985:517::-;;;;;;;;;;;;;;;;-1:-1:-1;2985:517:73;;;;;;;;;;;;;;;;;;;;:::i;2607:430:46:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:46;;;;:::i;:::-;;;;;;;;;;;;;;;;1158:79:51;;;;;;;;;;;;;:::i;1297:109::-;;;;;;;;;;;;;:::i;4018:182:73:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4018:182:73;;-1:-1:-1;4018:182:73;;-1:-1:-1;;;;;4018:182:73:i;4259:194::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4259:194:73;;;;:::i;2518:416::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2518:416:73;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2030:91;2084:4;2107:7;;;;;;;2030:91::o;2351:116::-;2442:18;;;;2351:116;:::o;3561:205::-;2276:21:46;:19;:21::i;:::-;3667:17:73::1;:36:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;3718:41:::1;::::0;3667:36;;3718:41:::1;::::0;::::1;3561:205:::0;:::o;3825:134::-;2276:21:46;:19;:21::i;:::-;3899:7:73::1;:16:::0;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;3930:22:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;3825:134:::0;:::o;2180:112::-;2271:14;2264:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2240:12;;2264:21;;2271:14;;2264:21;;2271:14;2264:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:112;:::o;1850:121::-;1911:17;1947;;;1850:121;:::o;2985:517::-;3143:34;3180:21;:19;:21::i;:::-;3143:58;-1:-1:-1;3219:40:73;;;3211:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3439:18;;;3301:194;;;;;:32;:194;;;;;;;;;;;;;;;;;;;;;;;3439:18;;;3301:194;;;;;;;;;;;;;3439:18;3301:194;;;;;;;3439:18;3301:194;;;;;;;;;;;;;:32;;;;;;3342:9;;3367:5;;3386:11;;3411:14;;3439:18;;;3301:194;;;;;;;;3439:18;;3301:194;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2985:517;;;;:::o;2607:430:46:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;1297:109::-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:51;;-1:-1:-1;1297:109:51;:::o;4018:182:73:-;2276:21:46;:19;:21::i;:::-;4113:30:73;;::::1;::::0;:14:::1;::::0;:30:::1;::::0;::::1;::::0;::::1;:::i;:::-;;4158:35;4179:13;4158:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4018:182:::0;:::o;4259:194::-;2276:21:46;:19;:21::i;:::-;4355:18:73::1;:35:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;4405:41:::1;::::0;::::1;::::0;-1:-1:-1;;4405:41:73::1;4259:194:::0;:::o;2518:416::-;2635:17;2654:14;2684:34;2721:21;:19;:21::i;:::-;2684:58;-1:-1:-1;2760:40:73;;;2752:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2903:7;;2849:78;;;;;;;;;;;;;;2903:7;;;;;;2849:78;;;;;;;;;;;;;;2912:14;2849:78;;;2903:7;2849:78;;;;;;;;;;;;;;;;;:40;;;;;;:78;;2903:7;2849:78;;;;;;;2912:14;;2849:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2849:78:73;;;;;;;;;-1:-1:-1;2849:78:73;-1:-1:-1;;2518:416:73;;;:::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;:::-;2420:181;:::o;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1523:60:51;;1412:178;-1:-1:-1;;;1412:178:51:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;"},"methodIdentifiers":{"estimateSendUserBalance(uint16)":"ecc4c583","getActionId(bytes4)":"851c1bb3","getAdapterParams()":"4cfde448","getAuthorizer()":"aaabadc5","getOmniVotingEscrow()":"550f2f7f","getUseZero()":"00986fe0","getVault()":"8d928af8","getZeroPaymentAddress()":"0943b7b8","sendUserBalance(address,uint16,address)":"57fb8345","setAdapterParams(bytes)":"d56b6a4a","setOmniVotingEscrow(address)":"09d401f9","setUseZero(bool)":"299fd6fc","setZeroPaymentAddress(address)":"e241e489"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newAdapterParams\",\"type\":\"bytes\"}],\"name\":\"AdapterParamsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IOmniVotingEscrow\",\"name\":\"newOmniVotingEscrow\",\"type\":\"address\"}],\"name\":\"OmniVotingEscrowUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"newUseZero\",\"type\":\"bool\"}],\"name\":\"UseZeroUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newZeroPaymentAddress\",\"type\":\"address\"}],\"name\":\"ZeroPaymentAddressUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"}],\"name\":\"estimateSendUserBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zroFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAdapterParams\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOmniVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IOmniVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUseZero\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getZeroPaymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"},{\"internalType\":\"address payable\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"sendUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adapterParams\",\"type\":\"bytes\"}],\"name\":\"setAdapterParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IOmniVotingEscrow\",\"name\":\"omniVotingEscrow\",\"type\":\"address\"}],\"name\":\"setOmniVotingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"useZro\",\"type\":\"bool\"}],\"name\":\"setUseZero\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"paymentAddress\",\"type\":\"address\"}],\"name\":\"setZeroPaymentAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Provides the remapper a stable interface to forward requests to the omni voting escrow, while allowing to configure optional parameters and even swap the target omni voting escrow contract.\",\"kind\":\"dev\",\"methods\":{\"estimateSendUserBalance(uint16)\":{\"details\":\"Reverts if `OmniVotingEscrow` is not set.\",\"params\":{\"_dstChainId\":\"- Destination chain ID.\"},\"returns\":{\"nativeFee\":\"- Native fee reported by the omni voting escrow.\",\"zroFee\":\"- Layer zero fee reported by the omni voting escrow.\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"sendUserBalance(address,uint16,address)\":{\"details\":\"Reverts if `OmniVotingEscrow` is not set.\",\"params\":{\"_dstChainId\":\"- Destination chain ID.\",\"_refundAddress\":\"- Address where to return excess ETH.\",\"_user\":\"- User to bridge the balance from.\"}},\"setAdapterParams(bytes)\":{\"details\":\"Emits `AdapterParamsUpdated` event.\"},\"setOmniVotingEscrow(address)\":{\"details\":\"This step is required before creating any remapping in the `VotingEscrowRemapper`. Omni voting escrow is not set in the constructor to avoid circular dependencies. Emits `OmniVotingEscrowUpdated` event.\",\"params\":{\"omniVotingEscrow\":\"- Address of the omni voting escrow contract.\"}},\"setUseZero(bool)\":{\"details\":\"Emits `UseZeroUpdated` event.\"},\"setZeroPaymentAddress(address)\":{\"details\":\"Emits `ZeroPaymentAddressUpdated` event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"estimateSendUserBalance(uint16)\":{\"notice\":\"Forwards `estimateSendUserBalance` call to omni voting escrow.\"},\"getAdapterParams()\":{\"notice\":\"Returns `_adapterParams` parameter used in `estimateSendUserBalance` and `sendUserBalance`.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getOmniVotingEscrow()\":{\"notice\":\"Returns Omni Voting Escrow contract address, which is the gateway to bridge veBAL balances to L2s.\"},\"getUseZero()\":{\"notice\":\"Returns `_useZro` parameter used in `estimateSendUserBalance`.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"getZeroPaymentAddress()\":{\"notice\":\"Returns `_zroPaymentAddress` parameter used in `sendUserBalance`.\"},\"sendUserBalance(address,uint16,address)\":{\"notice\":\"Forwards `sendUserBalance` call to omni voting escrow.\"},\"setAdapterParams(bytes)\":{\"notice\":\"Sets `_adapterParams` parameter for `estimateSendUserBalance` and `sendUserBalance` when forwarding calls.\"},\"setOmniVotingEscrow(address)\":{\"notice\":\"Sets omni voting escrow address.\"},\"setUseZero(bool)\":{\"notice\":\"Sets `_useZro` parameter for `estimateSendUserBalance` when forwarding calls.\"},\"setZeroPaymentAddress(address)\":{\"notice\":\"Sets `_zroPaymentAddress` parameter for `sendUserBalance` when forwarding calls.\"}},\"notice\":\"Adaptor contract between `VotingEscrowRemapper` and `OmniVotingEscrow`.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/OmniVotingEscrowAdaptor.sol\":\"OmniVotingEscrowAdaptor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol\":{\"keccak256\":\"0xd15a09a7f4b4cca895c325a5d4f5469d368ea95fcf81139c6f9b7a6ff98ebf58\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f5ee21f5ff34cf4f4fb65bbef37229a84cce97e7ae2c46f26b6b5356db04fa56\",\"dweb:/ipfs/Qmc5Lukprx5rxNq4om9uyJR1jiNVFMxQxbWQrpGuZhGtsW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol\":{\"keccak256\":\"0xd3a86f1eb7aadba25221c8935ae888816487ea6ba4d04c3a5f4789d7b061ac90\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ca65ef1eebc274a1b28abee0d1514f4c18334583c13e39672a80201f0481304f\",\"dweb:/ipfs/QmSs5kDN8rGfbCmkQihP1uUbTtAc9wfSzSuPTpp6dErVWk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol\":{\"keccak256\":\"0x3d1316d3c24f099fb364359085778d5e520dc1fd5377b0e2220dfbc00e179ae2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a1545ec71c26156470189d49ee027d265c67f4bcedab5dfc1e52ae1eb4d6b4e0\",\"dweb:/ipfs/QmNfBM6JAXbJYbzfBMb6mpuqvDiHZbQhDiyU1gXvzCzcb6\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"contracts/OmniVotingEscrowAdaptor.sol\":{\"keccak256\":\"0xaf616ff58f109bcda23e13db1ee9a8602582e67c5ebd902a14918b6c62154312\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4d8273312461e7b8cf274873a7639b7edd1d3e4c891856a4715b46d46f5cfcd8\",\"dweb:/ipfs/Qmafyb1xuUNe3xbUZjuidiioKSgEurHXz7Te8VWHL9cW63\"]}},\"version\":1}"}},"contracts/SmartWalletChecker.sol":{"SmartWalletChecker":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"address[]","name":"initialAllowedAddresses","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"}],"name":"ContractAddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"}],"name":"ContractAddressRemoved","type":"event"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"allowlistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"check","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"denylistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getAllowlistedAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllowlistedAddressesLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b50604051610bed380380610bed8339818101604052604081101561003357600080fd5b81516020830180516040519294929383019291908464010000000082111561005a57600080fd5b90830190602082018581111561006f57600080fd5b825186602082028301116401000000008211171561008c57600080fd5b82525081516020918201928201910280838360005b838110156100b95781810151838201526020016100a1565b505050509190910160405250503060805250506001600160601b0319606083901b1660a052805160005b818110156101155761010d8382815181106100fa57fe5b602002602001015161011e60201b60201c565b6001016100e3565b5050505061024c565b6101368160006101c660201b61040d1790919060201c565b610187576040805162461bcd60e51b815260206004820152601b60248201527f4164647265737320616c726561647920616c6c6f776c69737465640000000000604482015290519081900360640190fd5b604080516001600160a01b038316815290517fc1fafd2633d2190fbc0bd1e0e993dc44495d77bd7a5bc0a4951b5edb0d58254e9181900360200190a150565b60006101d2838361022b565b61022157508154600180820184556000848152602080822090930180546001600160a01b0319166001600160a01b03861690811790915585549082528286019093526040902091909155610225565b5060005b92915050565b6001600160a01b031660009081526001919091016020526040902054151590565b60805160a05160601c61097b61027260003980610270525080610203525061097b6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063aaabadc51161005b578063aaabadc514610161578063c23697a814610169578063c7abf7e2146101b0578063f191aad0146101b857610088565b80632ee7ca641461008d578063851c1bb3146100d35780638d928af814610124578063a5ee4e711461012c575b600080fd5b6100aa600480360360208110156100a357600080fd5b50356101eb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610112600480360360208110156100e957600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166101fd565b60408051918252519081900360200190f35b6100aa61026e565b61015f6004803603602081101561014257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610292565b005b6100aa61035c565b61019c6004803603602081101561017f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103dc565b604080519115158252519081900360200190f35b6101126103e8565b61015f600480360360208110156101ce57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103f9565b60006101f78183610496565b92915050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b61029a6104b9565b6102a56000826104ff565b61031057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f41646472657373206973206e6f7420616c6c6f776c6973746564000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f6b7e0fe40ab6dde83349106ff5b5ce7689d5912a704a21a972034191d182de329181900360200190a150565b600061036661026e565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ab57600080fd5b505afa1580156103bf573d6000803e3d6000fd5b505050506040513d60208110156103d557600080fd5b5051905090565b60006101f781836106ad565b60006103f460006106db565b905090565b6104016104b9565b61040a816106df565b50565b600061041983836106ad565b61048d57508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155855490825282860190935260409020919091556101f7565b50600092915050565b81546000906104a890831060646107a1565b6104b283836107b3565b9392505050565b60006104e86000357fffffffff00000000000000000000000000000000000000000000000000000000166101fd565b905061040a6104f782336107ed565b6101916107a1565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205480156106a35783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808301910180821461060857600086600001828154811061056d57fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff909116915081908890859081106105a357fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b855486908061061357fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff871682526001888101909152604082209190915593506101f792505050565b60009150506101f7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b5490565b6106ea60008261040d565b61075557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4164647265737320616c726561647920616c6c6f776c69737465640000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517fc1fafd2633d2190fbc0bd1e0e993dc44495d77bd7a5bc0a4951b5edb0d58254e9181900360200190a150565b816107af576107af816108b6565b5050565b60008260000182815481106107c457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b60006107f761035c565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561088357600080fd5b505afa158015610897573d6000803e3d6000fd5b505050506040513d60208110156108ad57600080fd5b50519392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261040a917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220d6174f8f987983c5601b2d84347ab4ce592636d31d307eac33051f8395aef5b164736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xBED CODESIZE SUB DUP1 PUSH2 0xBED DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 MSTORE POP POP ADDRESS PUSH1 0x80 MSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0xA0 MSTORE DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH2 0x10D DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xFA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x11E PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xE3 JUMP JUMPDEST POP POP POP POP PUSH2 0x24C JUMP JUMPDEST PUSH2 0x136 DUP2 PUSH1 0x0 PUSH2 0x1C6 PUSH1 0x20 SHL PUSH2 0x40D OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x187 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4164647265737320616C726561647920616C6C6F776C69737465640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xC1FAFD2633D2190FBC0BD1E0E993DC44495D77BD7A5BC0A4951B5EDB0D58254E SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D2 DUP4 DUP4 PUSH2 0x22B JUMP JUMPDEST PUSH2 0x221 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x225 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x97B PUSH2 0x272 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x270 MSTORE POP DUP1 PUSH2 0x203 MSTORE POP PUSH2 0x97B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0xC23697A8 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0xC7ABF7E2 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xF191AAD0 EQ PUSH2 0x1B8 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x2EE7CA64 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0xA5EE4E71 EQ PUSH2 0x12C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAA PUSH2 0x26E JUMP JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x292 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH2 0x35C JUMP JUMPDEST PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3DC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH2 0x3E8 JUMP JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3F9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F7 DUP2 DUP4 PUSH2 0x496 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x29A PUSH2 0x4B9 JUMP JUMPDEST PUSH2 0x2A5 PUSH1 0x0 DUP3 PUSH2 0x4FF JUMP JUMPDEST PUSH2 0x310 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206973206E6F7420616C6C6F776C6973746564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x6B7E0FE40AB6DDE83349106FF5B5CE7689D5912A704A21A972034191D182DE32 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x366 PUSH2 0x26E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F7 DUP2 DUP4 PUSH2 0x6AD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F4 PUSH1 0x0 PUSH2 0x6DB JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x401 PUSH2 0x4B9 JUMP JUMPDEST PUSH2 0x40A DUP2 PUSH2 0x6DF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x419 DUP4 DUP4 PUSH2 0x6AD JUMP JUMPDEST PUSH2 0x48D JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1F7 JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x4A8 SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0x4B2 DUP4 DUP4 PUSH2 0x7B3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E8 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1FD JUMP JUMPDEST SWAP1 POP PUSH2 0x40A PUSH2 0x4F7 DUP3 CALLER PUSH2 0x7ED JUMP JUMPDEST PUSH2 0x191 PUSH2 0x7A1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x6A3 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x608 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x56D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x5A3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x613 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x1F7 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x1F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6EA PUSH1 0x0 DUP3 PUSH2 0x40D JUMP JUMPDEST PUSH2 0x755 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4164647265737320616C726561647920616C6C6F776C69737465640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xC1FAFD2633D2190FBC0BD1E0E993DC44495D77BD7A5BC0A4951B5EDB0D58254E SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP2 PUSH2 0x7AF JUMPI PUSH2 0x7AF DUP2 PUSH2 0x8B6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x7C4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F7 PUSH2 0x35C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x897 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x40A SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD6 OR 0x4F DUP16 SWAP9 PUSH26 0x83C5601B2D84347AB4CE592636D31D307EAC33051F8395AEF5B1 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1044:1649:74:-:0;;;1359:297;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1359:297:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1359:297:74;;;;;;-1:-1:-1;;1054:4:51;2049:46:46;;-1:-1:-1;;;;;;;;1073:14:51::1;::::0;;;;::::1;::::0;1494:30:74;;1030:31:51;1534:116:74::1;1558:15;1554:1;:19;1534:116;;;1594:45;1612:23;1636:1;1612:26;;;;;;;;;;;;;;1594:17;;;:45;;:::i;:::-;1575:3;;1534:116;;;;1359:297;::::0;;1044:1649;;2479:212;2558:42;2584:15;2558:21;:25;;;;;;:42;;;;:::i;:::-;2550:82;;;;;-1:-1:-1;;;2550:82:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;2647:37;;;-1:-1:-1;;;;;2647:37:74;;;;;;;;;;;;;;;2479:212;:::o;1851:410:62:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:62;;;;;;;;-1:-1:-1;1978:23:62;;;;;;;;;;;;-1:-1:-1;;;;;;1978:23:62;-1:-1:-1;;;;;1978:23:62;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:62;1937:318;1851:410;;;;:::o;3977:134::-;-1:-1:-1;;;;;4080:19:62;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;1044:1649:74:-;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":515}],"3611":[{"length":32,"start":624}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c8063aaabadc51161005b578063aaabadc514610161578063c23697a814610169578063c7abf7e2146101b0578063f191aad0146101b857610088565b80632ee7ca641461008d578063851c1bb3146100d35780638d928af814610124578063a5ee4e711461012c575b600080fd5b6100aa600480360360208110156100a357600080fd5b50356101eb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610112600480360360208110156100e957600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166101fd565b60408051918252519081900360200190f35b6100aa61026e565b61015f6004803603602081101561014257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610292565b005b6100aa61035c565b61019c6004803603602081101561017f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103dc565b604080519115158252519081900360200190f35b6101126103e8565b61015f600480360360208110156101ce57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103f9565b60006101f78183610496565b92915050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b61029a6104b9565b6102a56000826104ff565b61031057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f41646472657373206973206e6f7420616c6c6f776c6973746564000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f6b7e0fe40ab6dde83349106ff5b5ce7689d5912a704a21a972034191d182de329181900360200190a150565b600061036661026e565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ab57600080fd5b505afa1580156103bf573d6000803e3d6000fd5b505050506040513d60208110156103d557600080fd5b5051905090565b60006101f781836106ad565b60006103f460006106db565b905090565b6104016104b9565b61040a816106df565b50565b600061041983836106ad565b61048d57508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155855490825282860190935260409020919091556101f7565b50600092915050565b81546000906104a890831060646107a1565b6104b283836107b3565b9392505050565b60006104e86000357fffffffff00000000000000000000000000000000000000000000000000000000166101fd565b905061040a6104f782336107ed565b6101916107a1565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205480156106a35783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808301910180821461060857600086600001828154811061056d57fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff909116915081908890859081106105a357fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b855486908061061357fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff871682526001888101909152604082209190915593506101f792505050565b60009150506101f7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b5490565b6106ea60008261040d565b61075557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4164647265737320616c726561647920616c6c6f776c69737465640000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517fc1fafd2633d2190fbc0bd1e0e993dc44495d77bd7a5bc0a4951b5edb0d58254e9181900360200190a150565b816107af576107af816108b6565b5050565b60008260000182815481106107c457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b60006107f761035c565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561088357600080fd5b505afa158015610897573d6000803e3d6000fd5b505050506040513d60208110156108ad57600080fd5b50519392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261040a917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220d6174f8f987983c5601b2d84347ab4ce592636d31d307eac33051f8395aef5b164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0xC23697A8 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0xC7ABF7E2 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xF191AAD0 EQ PUSH2 0x1B8 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x2EE7CA64 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0xA5EE4E71 EQ PUSH2 0x12C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAA PUSH2 0x26E JUMP JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x292 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH2 0x35C JUMP JUMPDEST PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3DC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH2 0x3E8 JUMP JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3F9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F7 DUP2 DUP4 PUSH2 0x496 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x29A PUSH2 0x4B9 JUMP JUMPDEST PUSH2 0x2A5 PUSH1 0x0 DUP3 PUSH2 0x4FF JUMP JUMPDEST PUSH2 0x310 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206973206E6F7420616C6C6F776C6973746564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x6B7E0FE40AB6DDE83349106FF5B5CE7689D5912A704A21A972034191D182DE32 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x366 PUSH2 0x26E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F7 DUP2 DUP4 PUSH2 0x6AD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F4 PUSH1 0x0 PUSH2 0x6DB JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x401 PUSH2 0x4B9 JUMP JUMPDEST PUSH2 0x40A DUP2 PUSH2 0x6DF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x419 DUP4 DUP4 PUSH2 0x6AD JUMP JUMPDEST PUSH2 0x48D JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1F7 JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x4A8 SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0x4B2 DUP4 DUP4 PUSH2 0x7B3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E8 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1FD JUMP JUMPDEST SWAP1 POP PUSH2 0x40A PUSH2 0x4F7 DUP3 CALLER PUSH2 0x7ED JUMP JUMPDEST PUSH2 0x191 PUSH2 0x7A1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x6A3 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x608 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x56D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x5A3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x613 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x1F7 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x1F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6EA PUSH1 0x0 DUP3 PUSH2 0x40D JUMP JUMPDEST PUSH2 0x755 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4164647265737320616C726561647920616C6C6F776C69737465640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xC1FAFD2633D2190FBC0BD1E0E993DC44495D77BD7A5BC0A4951B5EDB0D58254E SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP2 PUSH2 0x7AF JUMPI PUSH2 0x7AF DUP2 PUSH2 0x8B6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x7C4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F7 PUSH2 0x35C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x897 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x40A SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD6 OR 0x4F DUP16 SWAP9 PUSH26 0x83C5601B2D84347AB4CE592636D31D307EAC33051F8395AEF5B1 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1044:1649:74:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1817:133;;;;;;;;;;;;;;;;-1:-1:-1;1817:133:74;;:::i;:::-;;;;;;;;;;;;;;;;;;;2607:430:46;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:46;;;;:::i;:::-;;;;;;;;;;;;;;;;1158:79:51;;;:::i;2219:227:74:-;;;;;;;;;;;;;;;;-1:-1:-1;2219:227:74;;;;:::i;:::-;;1297:109:51;;;:::i;1662:149:74:-;;;;;;;;;;;;;;;;-1:-1:-1;1662:149:74;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1956:127;;;:::i;2089:124::-;;;;;;;;;;;;;;;;-1:-1:-1;2089:124:74;;;;:::i;1817:133::-;1886:7;1912:31;1886:7;1937:5;1912:24;:31::i;:::-;1905:38;1817:133;-1:-1:-1;;1817:133:74:o;2607:430:46:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;2219:227:74:-;2276:21:46;:19;:21::i;:::-;2309:45:74::1;:21;2338:15:::0;2309:28:::1;:45::i;:::-;2301:84;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;2400:39;::::0;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;2219:227:::0;:::o;1297:109:51:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:51;;-1:-1:-1;1297:109:51;:::o;1662:149:74:-;1734:4;1757:47;1734:4;1788:15;1757:30;:47::i;1956:127::-;2020:7;2046:30;:21;:28;:30::i;:::-;2039:37;;1956:127;:::o;2089:124::-;2276:21:46;:19;:21::i;:::-;2172:34:74::1;2190:15;2172:17;:34::i;:::-;2089:124:::0;:::o;1851:410:62:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:62;;;;;;;;-1:-1:-1;1978:23:62;;;;;;;;;;;;;;;;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:62;1851:410;;;;:::o;4648:199::-;4750:18;;4722:7;;4741:58;;4750:26;-1:-1:-1;5662:3:31;4741:8:62;:58::i;:::-;4816:24;4829:3;4834:5;4816:12;:24::i;:::-;4809:31;4648:199;-1:-1:-1;;;4648:199:62:o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;2429:1467:62:-;2639:19;;;2502:4;2639:19;;;:12;;;:19;;;;;;2673:15;;2669:1221;;3114:18;;3066:14;;;;;3114:22;3236:26;;;3232:389;;3282:17;3302:3;:11;;3314:9;3302:22;;;;;;;;;;;;;;;;;;3424:26;;3302:22;;;;;-1:-1:-1;3302:22:62;;3424:3;;3436:13;;3424:26;;;;;;;;;;;;;;;;;;:38;;;;;;;;;;;3536:23;;;;;;-1:-1:-1;3536:12:62;;;:23;;;;;;3562:17;;;3536:43;;3232:389;3699:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3791:19;;;;3699:17;3791:12;;;:19;;;;;;3784:26;;;;3699:17;-1:-1:-1;3825:11:62;;-1:-1:-1;;;3825:11:62;2669:1221;3874:5;3867:12;;;;;3977:134;4080:19;;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;4192:114::-;4281:18;;4192:114::o;2479:212:74:-;2558:42;:21;2584:15;2558:25;:42::i;:::-;2550:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2647:37;;;;;;;;;;;;;;;;;;;2479:212;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;5212:135:62:-;5296:7;5322:3;:11;;5334:5;5322:18;;;;;;;;;;;;;;;;;;;;;5212:135;-1:-1:-1;;;5212:135:62:o;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1523:60:51;;1412:178;-1:-1:-1;;;1412:178:51:o;1459:126:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"allowlistAddress(address)":"f191aad0","check(address)":"c23697a8","denylistAddress(address)":"a5ee4e71","getActionId(bytes4)":"851c1bb3","getAllowlistedAddress(uint256)":"2ee7ca64","getAllowlistedAddressesLength()":"c7abf7e2","getAuthorizer()":"aaabadc5","getVault()":"8d928af8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"initialAllowedAddresses\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"ContractAddressAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"ContractAddressRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"allowlistAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"check\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"denylistAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getAllowlistedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllowlistedAddressesLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SmartWalletChecker.sol\":\"SmartWalletChecker\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"contracts/SmartWalletChecker.sol\":{\"keccak256\":\"0x5ec19305a257fa4563b087f7b06f87cc365f36ea3793ddb5c77d3db024fd6658\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://13c187398fdcdfb16491ea6c1a773d9ab83d4c28986d650008619b2f8315b8ea\",\"dweb:/ipfs/QmXojnLyB7Aq9aFaEK8NLueNPMkK88ALGSg9U6GkjTcByu\"]}},\"version\":1}"}},"contracts/VotingEscrowDelegationProxy.sol":{"VotingEscrowDelegationProxy":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IERC20","name":"votingEscrow","type":"address"},{"internalType":"contract IVeDelegation","name":"delegation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newImplementation","type":"address"}],"name":"DelegationImplementationUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"adjustedBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"adjusted_balance_of","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDelegationImplementation","outputs":[{"internalType":"contract IVeDelegation","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IVeDelegation","name":"delegation","type":"address"}],"name":"setDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e060405234801561001057600080fd5b506040516109b93803806109b98339818101604052606081101561003357600080fd5b5080516020820151604090920151306080819052606083811b6001600160601b031990811660a0529085901b1660c052600080546001600160a01b0319166001600160a01b039384161781559093928216929190911690610902906100b79039806101d7528061021b52806105f85250806104285250806103bb52506109026000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063851c1bb311610076578063aaabadc51161005b578063aaabadc51461019a578063bbf7408a1461010e578063e6b3e704146101a2576100be565b8063851c1bb3146101535780638d928af814610192576100be565b806325798418116100a7578063257984181461010e57806363408a90146101415780636448a3ab14610149576100be565b806308b0308a146100c357806318160ddd146100f4575b600080fd5b6100cb6101d5565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100fc6101fa565b60408051918252519081900360200190f35b6100fc6004803603602081101561012457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661032c565b6100cb61033f565b61015161035b565b005b6100fc6004803603602081101561016957600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166103b5565b6100cb610426565b6100cb61044a565b610151600480360360208110156101b857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104ca565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b6000805473ffffffffffffffffffffffffffffffffffffffff16806102b4577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027f57600080fd5b505afa158015610293573d6000803e3d6000fd5b505050506040513d60208110156102a957600080fd5b505191506101f79050565b8073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102fa57600080fd5b505afa15801561030e573d6000803e3d6000fd5b505050506040513d602081101561032457600080fd5b505191505090565b6000610337826105d7565b90505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b61036361074c565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556040517fb2f6d9cc189e4fc02519ab5ba6d9455bedc32091e375e8a6383ed45f40653e74908290a2565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610454610426565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049957600080fd5b505afa1580156104ad573d6000803e3d6000fd5b505050506040513d60208110156104c357600080fd5b5051905090565b6104d261074c565b604080517fbbf7408a000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff83169163bbf7408a916024808301926020929190829003018186803b15801561053e57600080fd5b505afa158015610552573d6000803e3d6000fd5b505050506040513d602081101561056857600080fd5b5050600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917fb2f6d9cc189e4fc02519ab5ba6d9455bedc32091e375e8a6383ed45f40653e7491a250565b6000805473ffffffffffffffffffffffffffffffffffffffff16806106b2577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561067d57600080fd5b505afa158015610691573d6000803e3d6000fd5b505050506040513d60208110156106a757600080fd5b5051915061033a9050565b8073ffffffffffffffffffffffffffffffffffffffff1663bbf7408a846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561071957600080fd5b505afa15801561072d573d6000803e3d6000fd5b505050506040513d602081101561074357600080fd5b50519392505050565b600061077b6000357fffffffff00000000000000000000000000000000000000000000000000000000166103b5565b905061079261078a8233610795565b61019161082b565b50565b600061079f61044a565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561071957600080fd5b81610839576108398161083d565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610792917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220f600a9a29fd20890b9dedaf51147513c68cfb43f9a689dd2e86f716c14531aff64736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x9B9 CODESIZE SUB DUP1 PUSH2 0x9B9 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD ADDRESS PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH1 0x60 DUP4 DUP2 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0xA0 MSTORE SWAP1 DUP6 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND OR DUP2 SSTORE SWAP1 SWAP4 SWAP3 DUP3 AND SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH2 0x902 SWAP1 PUSH2 0xB7 SWAP1 CODECOPY DUP1 PUSH2 0x1D7 MSTORE DUP1 PUSH2 0x21B MSTORE DUP1 PUSH2 0x5F8 MSTORE POP DUP1 PUSH2 0x428 MSTORE POP DUP1 PUSH2 0x3BB MSTORE POP PUSH2 0x902 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xBBF7408A EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0xE6B3E704 EQ PUSH2 0x1A2 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x192 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x25798418 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x25798418 EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0x63408A90 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0x6448A3AB EQ PUSH2 0x149 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xF4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB PUSH2 0x1D5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFC PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x32C JUMP JUMPDEST PUSH2 0xCB PUSH2 0x33F JUMP JUMPDEST PUSH2 0x151 PUSH2 0x35B JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x3B5 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x426 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x44A JUMP JUMPDEST PUSH2 0x151 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4CA JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x2B4 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x293 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH2 0x1F7 SWAP1 POP JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x337 DUP3 PUSH2 0x5D7 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x363 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xB2F6D9CC189E4FC02519AB5BA6D9455BEDC32091E375E8A6383ED45F40653E74 SWAP1 DUP3 SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x454 PUSH2 0x426 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x4D2 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xBBF7408A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0xBBF7408A SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x552 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xB2F6D9CC189E4FC02519AB5BA6D9455BEDC32091E375E8A6383ED45F40653E74 SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x6B2 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x691 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH2 0x33A SWAP1 POP JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBBF7408A DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x72D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77B PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x3B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x792 PUSH2 0x78A DUP3 CALLER PUSH2 0x795 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x82B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79F PUSH2 0x44A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x839 JUMPI PUSH2 0x839 DUP2 PUSH2 0x83D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x792 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 STOP 0xA9 LOG2 SWAP16 0xD2 ADDMOD SWAP1 0xB9 0xDE 0xDA CREATE2 GT SELFBALANCE MLOAD EXTCODECOPY PUSH9 0xCFB43F9A689DD2E86F PUSH18 0x6C14531AFF64736F6C634300070100330000 ","sourceMap":"954:2786:75:-:0;;;1187:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1187:213:75;;;;;;;;;;;1054:4:51;2049:46:46;;;;1187:213:75;1073:14:51;;;-1:-1:-1;;;;;;1073:14:51;;;::::1;::::0;1331:28:75;;;;;::::1;::::0;1030:31:51;1369:24:75;;-1:-1:-1;;;;;;1369:24:75::1;-1:-1:-1::0;;;;;1369:24:75;;::::1;;::::0;;1054:4:51;;954:2786:75;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":955}],"3611":[{"length":32,"start":1064}],"10023":[{"length":32,"start":471},{"length":32,"start":539},{"length":32,"start":1528}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100be5760003560e01c8063851c1bb311610076578063aaabadc51161005b578063aaabadc51461019a578063bbf7408a1461010e578063e6b3e704146101a2576100be565b8063851c1bb3146101535780638d928af814610192576100be565b806325798418116100a7578063257984181461010e57806363408a90146101415780636448a3ab14610149576100be565b806308b0308a146100c357806318160ddd146100f4575b600080fd5b6100cb6101d5565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100fc6101fa565b60408051918252519081900360200190f35b6100fc6004803603602081101561012457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661032c565b6100cb61033f565b61015161035b565b005b6100fc6004803603602081101561016957600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166103b5565b6100cb610426565b6100cb61044a565b610151600480360360208110156101b857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104ca565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b6000805473ffffffffffffffffffffffffffffffffffffffff16806102b4577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027f57600080fd5b505afa158015610293573d6000803e3d6000fd5b505050506040513d60208110156102a957600080fd5b505191506101f79050565b8073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102fa57600080fd5b505afa15801561030e573d6000803e3d6000fd5b505050506040513d602081101561032457600080fd5b505191505090565b6000610337826105d7565b90505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b61036361074c565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556040517fb2f6d9cc189e4fc02519ab5ba6d9455bedc32091e375e8a6383ed45f40653e74908290a2565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610454610426565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049957600080fd5b505afa1580156104ad573d6000803e3d6000fd5b505050506040513d60208110156104c357600080fd5b5051905090565b6104d261074c565b604080517fbbf7408a000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff83169163bbf7408a916024808301926020929190829003018186803b15801561053e57600080fd5b505afa158015610552573d6000803e3d6000fd5b505050506040513d602081101561056857600080fd5b5050600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917fb2f6d9cc189e4fc02519ab5ba6d9455bedc32091e375e8a6383ed45f40653e7491a250565b6000805473ffffffffffffffffffffffffffffffffffffffff16806106b2577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561067d57600080fd5b505afa158015610691573d6000803e3d6000fd5b505050506040513d60208110156106a757600080fd5b5051915061033a9050565b8073ffffffffffffffffffffffffffffffffffffffff1663bbf7408a846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561071957600080fd5b505afa15801561072d573d6000803e3d6000fd5b505050506040513d602081101561074357600080fd5b50519392505050565b600061077b6000357fffffffff00000000000000000000000000000000000000000000000000000000166103b5565b905061079261078a8233610795565b61019161082b565b50565b600061079f61044a565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561071957600080fd5b81610839576108398161083d565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610792917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220f600a9a29fd20890b9dedaf51147513c68cfb43f9a689dd2e86f716c14531aff64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xBBF7408A EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0xE6B3E704 EQ PUSH2 0x1A2 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x192 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x25798418 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x25798418 EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0x63408A90 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0x6448A3AB EQ PUSH2 0x149 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xF4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB PUSH2 0x1D5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFC PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x32C JUMP JUMPDEST PUSH2 0xCB PUSH2 0x33F JUMP JUMPDEST PUSH2 0x151 PUSH2 0x35B JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x3B5 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x426 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x44A JUMP JUMPDEST PUSH2 0x151 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4CA JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x2B4 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x293 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH2 0x1F7 SWAP1 POP JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x337 DUP3 PUSH2 0x5D7 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x363 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xB2F6D9CC189E4FC02519AB5BA6D9455BEDC32091E375E8A6383ED45F40653E74 SWAP1 DUP3 SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x454 PUSH2 0x426 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x4D2 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xBBF7408A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0xBBF7408A SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x552 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xB2F6D9CC189E4FC02519AB5BA6D9455BEDC32091E375E8A6383ED45F40653E74 SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x6B2 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x691 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH2 0x33A SWAP1 POP JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBBF7408A DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x72D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77B PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x3B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x792 PUSH2 0x78A DUP3 CALLER PUSH2 0x795 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x82B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79F PUSH2 0x44A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x839 JUMPI PUSH2 0x839 DUP2 PUSH2 0x83D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x792 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 STOP 0xA9 LOG2 SWAP16 0xD2 ADDMOD SWAP1 0xB9 0xDE 0xDA CREATE2 GT SELFBALANCE MLOAD EXTCODECOPY PUSH9 0xCFB43F9A689DD2E86F PUSH18 0x6C14531AFF64736F6C634300070100330000 ","sourceMap":"954:2786:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1686:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2641:275;;;:::i;:::-;;;;;;;;;;;;;;;;1987:121;;;;;;;;;;;;;;;;-1:-1:-1;1987:121:75;;;;:::i;1493:112::-;;;:::i;3585:153::-;;;:::i;:::-;;2607:430:46;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:46;;;;:::i;1158:79:51:-;;;:::i;1297:109::-;;;:::i;3287:292:75:-;;;;;;;;;;;;;;;;-1:-1:-1;3287:292:75;;;;:::i;1686:95::-;1761:13;1686:95;;:::o;2641:275::-;2687:7;2737:11;;;;2762:34;2758:107;;2826:13;2819:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2819:35:75;;-1:-1:-1;2812:42:75;;-1:-1:-1;2812:42:75;2758:107;2881:14;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2881:28:75;;-1:-1:-1;;2641:275:75;:::o;1987:121::-;2051:7;2077:24;2096:4;2077:18;:24::i;:::-;2070:31;;1987:121;;;;:::o;1493:112::-;1555:13;1587:11;;;1493:112;:::o;3585:153::-;2276:21:46;:19;:21::i;:::-;3671:1:75::1;3643:30:::0;;;::::1;::::0;;3688:43:::1;::::0;::::1;::::0;3671:1;;3688:43:::1;3585:153::o:0;2607:430:46:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;1297:109::-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:51;;-1:-1:-1;1297:109:51;:::o;3287:292:75:-;2276:21:46;:19;:21::i;:::-;3428:42:75::1;::::0;;;;;3459:10:::1;3428:42;::::0;::::1;::::0;;;:30:::1;::::0;::::1;::::0;::::1;::::0;:42;;;;;::::1;::::0;;;;;;;;:30;:42;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;3481:11:75::1;:24:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;3520:52:::1;::::0;3481:24;;3520:52:::1;::::0;::::1;3287:292:::0;:::o;2949:308::-;3014:7;3064:11;;;;3089:34;3085:109;;3153:13;3146:31;;;3178:4;3146:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3146:37:75;;-1:-1:-1;3139:44:75;;-1:-1:-1;3139:44:75;3085:109;3210:14;:34;;;3245:4;3210:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3210:40:75;;2949:308;-1:-1:-1;;;2949:308:75:o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;:::-;2420:181;:::o;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;926:101:31;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"adjustedBalanceOf(address)":"25798418","adjusted_balance_of(address)":"bbf7408a","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDelegationImplementation()":"63408a90","getVault()":"8d928af8","getVotingEscrow()":"08b0308a","killDelegation()":"6448a3ab","setDelegation(address)":"e6b3e704","totalSupply()":"18160ddd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"votingEscrow\",\"type\":\"address\"},{\"internalType\":\"contract IVeDelegation\",\"name\":\"delegation\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"DelegationImplementationUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"adjustedBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"adjusted_balance_of\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDelegationImplementation\",\"outputs\":[{\"internalType\":\"contract IVeDelegation\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IVeDelegation\",\"name\":\"delegation\",\"type\":\"address\"}],\"name\":\"setDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"adjustedBalanceOf(address)\":{\"params\":{\"user\":\"The user to query the adjusted veBAL balance of\"},\"returns\":{\"_0\":\"veBAL balance\"}},\"adjusted_balance_of(address)\":{\"params\":{\"user\":\"The user to query the adjusted veBAL balance of\"},\"returns\":{\"_0\":\"veBAL balance\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"totalSupply()\":{\"returns\":{\"_0\":\"The current veBAL total supply.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"adjustedBalanceOf(address)\":{\"notice\":\"Get the adjusted veBAL balance from the active boost delegation contract\"},\"adjusted_balance_of(address)\":{\"notice\":\"Get the adjusted veBAL balance from the active boost delegation contract\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getDelegationImplementation()\":{\"notice\":\"Returns the current delegation implementation contract.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"getVotingEscrow()\":{\"notice\":\"Returns the Voting Escrow (veBAL) contract.\"},\"totalSupply()\":{\"notice\":\"Get the current veBAL total supply from the votingEscrow contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/VotingEscrowDelegationProxy.sol\":\"VotingEscrowDelegationProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\":{\"keccak256\":\"0xd4ebf4ceca6fa99ec2149d60b36084674621ae87e8a7786b23501749da8cc581\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7dd20ed7be933a3d8ec0be284b8f7f123e69ecb29731e35f70c371eb4f5e26c8\",\"dweb:/ipfs/QmfPp5sBxn92hg32fPFTDBB5kuHP9qU4jN3bSfip8uCnQ6\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"contracts/VotingEscrowDelegationProxy.sol\":{\"keccak256\":\"0x83275376fdb523aff81b8199f128d3d79c148a5d65733dd43abc777fb239786a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3599291c10b6a6b499fb1f40bb62e1a0d78e74283d6861a76669e78d003b1144\",\"dweb:/ipfs/QmPpBaKv3urnHffzYKU128cFmpaze5P2p9SACpDL7LT6VT\"]}},\"version\":1}"}},"contracts/VotingEscrowRemapper.sol":{"VotingEscrowRemapper":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IVotingEscrow","name":"votingEscrow","type":"address"},{"internalType":"contract IOmniVotingEscrowAdaptor","name":"omniVotingEscrowAdaptor","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"localUser","type":"address"},{"indexed":true,"internalType":"address","name":"delegate","type":"address"}],"name":"AddressDelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"localUser","type":"address"},{"indexed":true,"internalType":"address","name":"remoteUser","type":"address"},{"indexed":true,"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"AddressMappingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"remoteUser","type":"address"},{"indexed":true,"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"RemoteAddressMappingCleared","type":"event"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"clearNetworkRemapping","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"remoteUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"getLocalUser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getLockedEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOmniVotingEscrowAdaptor","outputs":[{"internalType":"contract IOmniVotingEscrowAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"}],"name":"getRemappingManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"getRemoteUser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalSupplyPoint","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserPoint","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"address","name":"remoteUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"setNetworkRemapping","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"setNetworkRemappingManager","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b5060405162001e1b38038062001e1b833981016040819052620000349162000080565b30608052606092831b6001600160601b031990811660a052600160008190559290931b90921660c05280546001600160a01b0319166001600160a01b03909216919091179055620000ec565b60008060006060848603121562000095578283fd5b8351620000a281620000d3565b6020850151909350620000b581620000d3565b6040850151909250620000c881620000d3565b809150509250925092565b6001600160a01b0381168114620000e957600080fd5b50565b60805160a05160601c60c05160601c611cf7620001246000398061028552806104ab525080610f56525080610f065250611cf76000f3fe6080604052600436106100dd5760003560e01c8063851c1bb31161007f578063aaabadc511610059578063aaabadc514610219578063bda75c381461022e578063ee98b1e71461024e578063f6f4a3321461026e576100dd565b8063851c1bb3146101c45780638d928af8146101e4578063a9f3f44e146101f9576100dd565b80635e5543be116100bb5780635e5543be1461014f57806370d1bd171461016457806371628bfd1461018457806376601a18146101b1576100dd565b806308b0308a146100e257806321861fde1461010d5780633e7df7c814610122575b600080fd5b3480156100ee57600080fd5b506100f7610283565b60405161010491906117d3565b60405180910390f35b61012061011b3660046115fe565b6102a7565b005b34801561012e57600080fd5b5061014261013d3660046115aa565b6108f8565b604051610104919061184e565b34801561015b57600080fd5b506100f7610990565b34801561017057600080fd5b506100f761017f366004611645565b6109ac565b34801561019057600080fd5b506101a461019f3660046115aa565b6109e5565b6040516101049190611c5a565b6101206101bf366004611645565b610b33565b3480156101d057600080fd5b506101426101df36600461169a565b610f02565b3480156101f057600080fd5b506100f7610f54565b34801561020557600080fd5b506101206102143660046115c6565b610f78565b34801561022557600080fd5b506100f761102d565b34801561023a57600080fd5b506100f7610249366004611645565b6110b9565b34801561025a57600080fd5b506100f76102693660046115aa565b6110f2565b34801561027a57600080fd5b506101a461111d565b7f000000000000000000000000000000000000000000000000000000000000000090565b6102af61125d565b6103043373ffffffffffffffffffffffffffffffffffffffff851614806102fc575073ffffffffffffffffffffffffffffffffffffffff8481166000908152600460205260409020541633145b610191611276565b61030d83611284565b6103325760405162461bcd60e51b815260040161032990611ae6565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166103655760405162461bcd60e51b815260040161032990611b43565b600061036f610990565b61ffff8316600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff888116855292529091205491925016156103c65760405162461bcd60e51b815260040161032990611bfd565b61ffff8216600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8781168552925290912054161561041a5760405162461bcd60e51b8152600401610329906119cf565b61ffff8216600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8881168552925290912054161561046e5760405162461bcd60e51b815260040161032990611a2c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906104e09086906004016117d3565b60206040518083038186803b1580156104f857600080fd5b505afa15801561050c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105309190611765565b1561054d5760405162461bcd60e51b8152600401610329906118e0565b61ffff8216600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff808916855292529091205416801561060c5761ffff8316600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555190917f8bbec57d3a3f4c2e45c921fd17cbddb674ae1a51e01ca960b8251463c5907f6391a35b61ffff8316600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff808a168086529184528285208054918c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790915586865260028552838620818752909452828520805490911682179055905190927f632b3b16accd727b982fb08251e873b41265cc9976166f1111fd6ddd49c8b9d391a46040517fecc4c58300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063ecc4c58390610709908790600401611c90565b604080518083038186803b15801561072057600080fd5b505afa158015610734573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610758919061177d565b50905073ffffffffffffffffffffffffffffffffffffffff821615610829578060020234101561079a5760405162461bcd60e51b815260040161032990611972565b6040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906357fb83459083906107f2908690899033906004016117f4565b6000604051808303818588803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b5050505050610849565b803410156108495760405162461bcd60e51b815260040161032990611972565b6040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906357fb83459083906108a1908a90899033906004016117f4565b6000604051808303818588803b1580156108ba57600080fd5b505af11580156108ce573d6000803e3d6000fd5b5047935050821591506108e79050576108e733826113b8565b505050506108f361143f565b505050565b6000610902610283565b73ffffffffffffffffffffffffffffffffffffffff1663adc63589836040518263ffffffff1660e01b815260040161093a91906117d3565b60206040518083038186803b15801561095257600080fd5b505afa158015610966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098a9190611765565b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b61ffff16600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff94851684529091529020541690565b6109ed611558565b60006109f7610283565b905060008173ffffffffffffffffffffffffffffffffffffffff1663010ae757856040518263ffffffff1660e01b8152600401610a3491906117d3565b60206040518083038186803b158015610a4c57600080fd5b505afa158015610a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a849190611765565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906328d09d4790610adb9087908590600401611828565b60806040518083038186803b158015610af357600080fd5b505afa158015610b07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2b91906116f6565b949350505050565b610b3b61125d565b73ffffffffffffffffffffffffffffffffffffffff8216610b6e5760405162461bcd60e51b81526004016103299061193d565b610b7782611284565b1580610b98575073ffffffffffffffffffffffffffffffffffffffff821633145b610bb45760405162461bcd60e51b815260040161032990611883565b6000610bbe610990565b61ffff8316600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff80891685529252909120549192501680610c155760405162461bcd60e51b815260040161032990611a89565b61ffff8316600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff808716855290835281842080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915585855260028452828520918a16808652919093528184208054909316909255517f632b3b16accd727b982fb08251e873b41265cc9976166f1111fd6ddd49c8b9d3908390a460405161ffff84169073ffffffffffffffffffffffffffffffffffffffff8316907f8bbec57d3a3f4c2e45c921fd17cbddb674ae1a51e01ca960b8251463c5907f6390600090a36040517fecc4c58300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063ecc4c58390610d55908790600401611c90565b604080518083038186803b158015610d6c57600080fd5b505afa158015610d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da4919061177d565b50905080600202341015610dca5760405162461bcd60e51b815260040161032990611972565b6040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906357fb8345908390610e22908990899033906004016117f4565b6000604051808303818588803b158015610e3b57600080fd5b505af1158015610e4f573d6000803e3d6000fd5b50506040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871693506357fb83459250849150610eac908690899033906004016117f4565b6000604051808303818588803b158015610ec557600080fd5b505af1158015610ed9573d6000803e3d6000fd5b504793505082159150610ef2905057610ef233826113b8565b50505050610efe61143f565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610f379291906117a0565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610f80611446565b610f8861125d565b610f9182611284565b610fad5760405162461bcd60e51b815260040161032990611ba0565b73ffffffffffffffffffffffffffffffffffffffff82811660008181526004602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055517f72cff3a94768f9930e59d7a01948e45bea689391918693c8d164c16f271c46d99190a3610efe61143f565b6000611037610f54565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561107c57600080fd5b505afa158015611090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b491906116da565b905090565b61ffff16600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff94851684529091529020541690565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600460205260409020541690565b611125611558565b600061112f610283565b905060008173ffffffffffffffffffffffffffffffffffffffff1663900cf0cf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561117957600080fd5b505afa15801561118d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b19190611765565b6040517fd1febfb900000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d1febfb99061120690849060040161184e565b60806040518083038186803b15801561121e57600080fd5b505afa158015611232573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125691906116f6565b9250505090565b61126f60026000541415610190611276565b6002600055565b81610efe57610efe81611487565b60008061128f610283565b73ffffffffffffffffffffffffffffffffffffffff16637175d4f76040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d457600080fd5b505afa1580156112e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130c91906116da565b6040517fc23697a800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063c23697a8906113619086906004016117d3565b60206040518083038186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b1919061167a565b9392505050565b6113c7814710156101a3611276565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516113ed906117d0565b60006040518083038185875af1925050503d806000811461142a576040519150601f19603f3d011682016040523d82523d6000602084013e61142f565b606091505b505090506108f3816101a4611276565b6001600055565b60006114756000357fffffffff0000000000000000000000000000000000000000000000000000000016610f02565b90506114846102fc82336114b1565b50565b611484817f42414c00000000000000000000000000000000000000000000000000000000006114f7565b60006114bb61102d565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161136193929190611857565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525090565b8051600f81900b811461098a57600080fd5b803561ffff8116811461098a57600080fd5b6000602082840312156115bb578081fd5b81356113b181611c9f565b600080604083850312156115d8578081fd5b82356115e381611c9f565b915060208301356115f381611c9f565b809150509250929050565b600080600060608486031215611612578081fd5b833561161d81611c9f565b9250602084013561162d81611c9f565b915061163c8560408601611598565b90509250925092565b60008060408385031215611657578182fd5b823561166281611c9f565b91506116718460208501611598565b90509250929050565b60006020828403121561168b578081fd5b815180151581146113b1578182fd5b6000602082840312156116ab578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146113b1578182fd5b6000602082840312156116eb578081fd5b81516113b181611c9f565b600060808284031215611707578081fd5b6040516080810181811067ffffffffffffffff82111715611726578283fd5b6040526117338484611586565b81526117428460208501611586565b602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215611776578081fd5b5051919050565b6000806040838503121561178f578182fd5b505080516020909101519092909150565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff938416815261ffff929092166020830152909116604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60208082526023908201527f6c6f63616c55736572206973207374696c6c20696e20676f6f64207374616e6460408201527f696e670000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526030908201527f5461726765742072656d6f7465206164647265737320686173206e6f6e2d7a6560408201527f726f20766542414c2062616c616e636500000000000000000000000000000000606082015260800190565b6020808252818101527f6c6f63616c557365722063616e6e6f74206265207a65726f2061646472657373604082015260600190565b60208082526027908201527f496e73756666696369656e742045544820746f2062726964676520757365722060408201527f62616c616e636500000000000000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f43616e6e6f742072656d617020746f20616e206164647265737320746861742060408201527f697320696e20757365206c6f63616c6c79000000000000000000000000000000606082015260800190565b60208082526032908201527f43616e6e6f742072656d617020746f20616e206164647265737320746861742060408201527f697320696e207573652072656d6f74656c790000000000000000000000000000606082015260800190565b60208082526021908201527f52656d617070696e6720746f20636c65617220646f6573206e6f74206578697360408201527f7400000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526038908201527f4f6e6c7920636f6e7472616374732077686963682063616e20686f6c6420766560408201527f42414c2063616e207365742075702061206d617070696e670000000000000000606082015260800190565b6020808252602a908201527f5a65726f20616464726573732063616e6e6f742062652075736564206173207260408201527f656d6f7465207573657200000000000000000000000000000000000000000000606082015260800190565b60208082526037908201527f4f6e6c7920636f6e7472616374732077686963682063616e20686f6c6420766560408201527f42414c206d6179206861766520612064656c6567617465000000000000000000606082015260800190565b60208082526034908201527f43616e6e6f74206f766572777269746520616e206578697374696e67206d617060408201527f70696e6720627920616e6f746865722075736572000000000000000000000000606082015260800190565b60006080820190508251600f0b82526020830151600f0b6020830152604083015160408301526060830151606083015292915050565b61ffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461148457600080fdfea26469706673582212206e46f69b4bbafcaa72cd9c6ecf34139d0b3719256f7fd7f30998ddf7aa926a5264736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1E1B CODESIZE SUB DUP1 PUSH3 0x1E1B DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x80 JUMP JUMPDEST ADDRESS PUSH1 0x80 MSTORE PUSH1 0x60 SWAP3 DUP4 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 SSTORE SWAP3 SWAP1 SWAP4 SHL SWAP1 SWAP3 AND PUSH1 0xC0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH3 0xEC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x95 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0xA2 DUP2 PUSH3 0xD3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0xB5 DUP2 PUSH3 0xD3 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0xC8 DUP2 PUSH3 0xD3 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x1CF7 PUSH3 0x124 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x285 MSTORE DUP1 PUSH2 0x4AB MSTORE POP DUP1 PUSH2 0xF56 MSTORE POP DUP1 PUSH2 0xF06 MSTORE POP PUSH2 0x1CF7 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x219 JUMPI DUP1 PUSH4 0xBDA75C38 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0xEE98B1E7 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0xF6F4A332 EQ PUSH2 0x26E JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1C4 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1E4 JUMPI DUP1 PUSH4 0xA9F3F44E EQ PUSH2 0x1F9 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x5E5543BE GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x5E5543BE EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x70D1BD17 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x71628BFD EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x76601A18 EQ PUSH2 0x1B1 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x21861FDE EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x3E7DF7C8 EQ PUSH2 0x122 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x283 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x15FE JUMP JUMPDEST PUSH2 0x2A7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0x15AA JUMP JUMPDEST PUSH2 0x8F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x184E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x990 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0x1645 JUMP JUMPDEST PUSH2 0x9AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A4 PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0x15AA JUMP JUMPDEST PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x1C5A JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1BF CALLDATASIZE PUSH1 0x4 PUSH2 0x1645 JUMP JUMPDEST PUSH2 0xB33 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x1DF CALLDATASIZE PUSH1 0x4 PUSH2 0x169A JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH2 0x214 CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0xF78 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x102D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x249 CALLDATASIZE PUSH1 0x4 PUSH2 0x1645 JUMP JUMPDEST PUSH2 0x10B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x269 CALLDATASIZE PUSH1 0x4 PUSH2 0x15AA JUMP JUMPDEST PUSH2 0x10F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A4 PUSH2 0x111D JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x2AF PUSH2 0x125D JUMP JUMPDEST PUSH2 0x304 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EQ DUP1 PUSH2 0x2FC JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND CALLER EQ JUMPDEST PUSH2 0x191 PUSH2 0x1276 JUMP JUMPDEST PUSH2 0x30D DUP4 PUSH2 0x1284 JUMP JUMPDEST PUSH2 0x332 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1AE6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x365 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1B43 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36F PUSH2 0x990 JUMP JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP AND ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0xFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND ISZERO PUSH2 0x41A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x19CF JUMP JUMPDEST PUSH2 0xFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND ISZERO PUSH2 0x46E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1A2C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x50C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x530 SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST ISZERO PUSH2 0x54D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x18E0 JUMP JUMPDEST PUSH2 0xFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP1 ISZERO PUSH2 0x60C JUMPI PUSH2 0xFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE MLOAD SWAP1 SWAP2 PUSH32 0x8BBEC57D3A3F4C2E45C921FD17CBDDB674AE1A51E01CA960B8251463C5907F63 SWAP2 LOG3 JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP2 DUP13 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND DUP2 OR SWAP1 SWAP2 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP2 DUP8 MSTORE SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND DUP3 OR SWAP1 SSTORE SWAP1 MLOAD SWAP1 SWAP3 PUSH32 0x632B3B16ACCD727B982FB08251E873B41265CC9976166F1111FD6DDD49C8B9D3 SWAP2 LOG4 PUSH1 0x40 MLOAD PUSH32 0xECC4C58300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xECC4C583 SWAP1 PUSH2 0x709 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1C90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x734 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x758 SWAP2 SWAP1 PUSH2 0x177D JUMP JUMPDEST POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x829 JUMPI DUP1 PUSH1 0x2 MUL CALLVALUE LT ISZERO PUSH2 0x79A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1972 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x57FB8345 SWAP1 DUP4 SWAP1 PUSH2 0x7F2 SWAP1 DUP7 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x80B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x849 JUMP JUMPDEST DUP1 CALLVALUE LT ISZERO PUSH2 0x849 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1972 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x57FB8345 SWAP1 DUP4 SWAP1 PUSH2 0x8A1 SWAP1 DUP11 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SELFBALANCE SWAP4 POP POP DUP3 ISZERO SWAP2 POP PUSH2 0x8E7 SWAP1 POP JUMPI PUSH2 0x8E7 CALLER DUP3 PUSH2 0x13B8 JUMP JUMPDEST POP POP POP POP PUSH2 0x8F3 PUSH2 0x143F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x902 PUSH2 0x283 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xADC63589 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x93A SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x966 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x98A SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH2 0x9ED PUSH2 0x1558 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9F7 PUSH2 0x283 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10AE757 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA34 SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA84 SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xADB SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1828 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB2B SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB3B PUSH2 0x125D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB6E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x193D JUMP JUMPDEST PUSH2 0xB77 DUP3 PUSH2 0x1284 JUMP JUMPDEST ISZERO DUP1 PUSH2 0xB98 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND CALLER EQ JUMPDEST PUSH2 0xBB4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1883 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBE PUSH2 0x990 JUMP JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP AND DUP1 PUSH2 0xC15 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1A89 JUMP JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE DUP6 DUP6 MSTORE PUSH1 0x2 DUP5 MSTORE DUP3 DUP6 KECCAK256 SWAP2 DUP11 AND DUP1 DUP7 MSTORE SWAP2 SWAP1 SWAP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 AND SWAP1 SWAP3 SSTORE MLOAD PUSH32 0x632B3B16ACCD727B982FB08251E873B41265CC9976166F1111FD6DDD49C8B9D3 SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP5 AND SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH32 0x8BBEC57D3A3F4C2E45C921FD17CBDDB674AE1A51E01CA960B8251463C5907F63 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x40 MLOAD PUSH32 0xECC4C58300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xECC4C583 SWAP1 PUSH2 0xD55 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1C90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDA4 SWAP2 SWAP1 PUSH2 0x177D JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x2 MUL CALLVALUE LT ISZERO PUSH2 0xDCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1972 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x57FB8345 SWAP1 DUP4 SWAP1 PUSH2 0xE22 SWAP1 DUP10 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE4F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP4 POP PUSH4 0x57FB8345 SWAP3 POP DUP5 SWAP2 POP PUSH2 0xEAC SWAP1 DUP7 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xED9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SELFBALANCE SWAP4 POP POP DUP3 ISZERO SWAP2 POP PUSH2 0xEF2 SWAP1 POP JUMPI PUSH2 0xEF2 CALLER DUP3 PUSH2 0x13B8 JUMP JUMPDEST POP POP POP POP PUSH2 0xEFE PUSH2 0x143F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF37 SWAP3 SWAP2 SWAP1 PUSH2 0x17A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xF80 PUSH2 0x1446 JUMP JUMPDEST PUSH2 0xF88 PUSH2 0x125D JUMP JUMPDEST PUSH2 0xF91 DUP3 PUSH2 0x1284 JUMP JUMPDEST PUSH2 0xFAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1BA0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP5 DUP7 AND SWAP5 DUP6 OR SWAP1 SSTORE MLOAD PUSH32 0x72CFF3A94768F9930E59D7A01948E45BEA689391918693C8D164C16F271C46D9 SWAP2 SWAP1 LOG3 PUSH2 0xEFE PUSH2 0x143F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1037 PUSH2 0xF54 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x107C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1090 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10B4 SWAP2 SWAP1 PUSH2 0x16DA JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH2 0x1125 PUSH2 0x1558 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x112F PUSH2 0x283 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x900CF0CF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x118D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B1 SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD1FEBFB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0xD1FEBFB9 SWAP1 PUSH2 0x1206 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x184E JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x121E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1232 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1256 SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x126F PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1276 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST DUP2 PUSH2 0xEFE JUMPI PUSH2 0xEFE DUP2 PUSH2 0x1487 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x128F PUSH2 0x283 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7175D4F7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x130C SWAP2 SWAP1 PUSH2 0x16DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC23697A800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xC23697A8 SWAP1 PUSH2 0x1361 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13B1 SWAP2 SWAP1 PUSH2 0x167A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x13C7 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x1276 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x13ED SWAP1 PUSH2 0x17D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x142A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x142F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x8F3 DUP2 PUSH2 0x1A4 PUSH2 0x1276 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1475 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0xF02 JUMP JUMPDEST SWAP1 POP PUSH2 0x1484 PUSH2 0x2FC DUP3 CALLER PUSH2 0x14B1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1484 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x14F7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14BB PUSH2 0x102D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1361 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1857 JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x98A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x98A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15BB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13B1 DUP2 PUSH2 0x1C9F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15D8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x15E3 DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x15F3 DUP2 PUSH2 0x1C9F JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1612 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x161D DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x162D DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP2 POP PUSH2 0x163C DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x1598 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1657 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1662 DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP2 POP PUSH2 0x1671 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1598 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x168B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x13B1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16AB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x13B1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16EB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x13B1 DUP2 PUSH2 0x1C9F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1707 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1726 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x1733 DUP5 DUP5 PUSH2 0x1586 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1742 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1586 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1776 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x178F JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE PUSH2 0xFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x6C6F63616C55736572206973207374696C6C20696E20676F6F64207374616E64 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x696E670000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x30 SWAP1 DUP3 ADD MSTORE PUSH32 0x5461726765742072656D6F7465206164647265737320686173206E6F6E2D7A65 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x726F20766542414C2062616C616E636500000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x6C6F63616C557365722063616E6E6F74206265207A65726F2061646472657373 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742045544820746F20627269646765207573657220 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x62616C616E636500000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x31 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742072656D617020746F20616E2061646472657373207468617420 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x697320696E20757365206C6F63616C6C79000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742072656D617020746F20616E2061646472657373207468617420 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x697320696E207573652072656D6F74656C790000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656D617070696E6720746F20636C65617220646F6573206E6F742065786973 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920636F6E7472616374732077686963682063616E20686F6C64207665 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x42414C2063616E207365742075702061206D617070696E670000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5A65726F20616464726573732063616E6E6F7420626520757365642061732072 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656D6F7465207573657200000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x37 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920636F6E7472616374732077686963682063616E20686F6C64207665 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x42414C206D6179206861766520612064656C6567617465000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F74206F766572777269746520616E206578697374696E67206D6170 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x70696E6720627920616E6F746865722075736572000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP DUP3 MLOAD PUSH1 0xF SIGNEXTEND DUP3 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0xF SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1484 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x46F69B4BBAFCAA72CD9C6ECF34139D SIGNEXTEND CALLDATACOPY NOT 0x25 PUSH16 0x7FD7F30998DDF7AA926A5264736F6C63 NUMBER STOP SMOD ADD STOP CALLER ","sourceMap":"1865:10228:76:-:0;;;2426:270;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1054:4:51;2049:46:46;;1073:14:51::1;::::0;;;-1:-1:-1;;;;;;1073:14:51;;;::::1;::::0;2070:1:63;1030:31:51;2175:22:63;;;2601:28:76;;;;;;;::::1;::::0;2639:50;;-1:-1:-1;;;;;;2639:50:76::1;-1:-1:-1::0;;;;;2639:50:76;;::::1;::::0;;;::::1;::::0;;1865:10228;;568:675:-1;;;;787:2;775:9;766:7;762:23;758:32;755:2;;;-1:-1;;793:12;755:2;311:6;305:13;323:48;365:5;323:48;:::i;:::-;971:2;1043:22;;483:13;845:89;;-1:-1;501:55;483:13;501:55;:::i;:::-;1112:2;1195:22;;116:13;979:96;;-1:-1;134:66;116:13;134:66;:::i;:::-;1120:107;;;;749:494;;;;;:::o;1840:183::-;-1:-1;;;;;1774:54;;1932:68;;1922:2;;2014:1;;2004:12;1922:2;1916:107;:::o;:::-;1865:10228:76;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":3846}],"3611":[{"length":32,"start":3926}],"10216":[{"length":32,"start":645},{"length":32,"start":1195}]},"linkReferences":{},"object":"6080604052600436106100dd5760003560e01c8063851c1bb31161007f578063aaabadc511610059578063aaabadc514610219578063bda75c381461022e578063ee98b1e71461024e578063f6f4a3321461026e576100dd565b8063851c1bb3146101c45780638d928af8146101e4578063a9f3f44e146101f9576100dd565b80635e5543be116100bb5780635e5543be1461014f57806370d1bd171461016457806371628bfd1461018457806376601a18146101b1576100dd565b806308b0308a146100e257806321861fde1461010d5780633e7df7c814610122575b600080fd5b3480156100ee57600080fd5b506100f7610283565b60405161010491906117d3565b60405180910390f35b61012061011b3660046115fe565b6102a7565b005b34801561012e57600080fd5b5061014261013d3660046115aa565b6108f8565b604051610104919061184e565b34801561015b57600080fd5b506100f7610990565b34801561017057600080fd5b506100f761017f366004611645565b6109ac565b34801561019057600080fd5b506101a461019f3660046115aa565b6109e5565b6040516101049190611c5a565b6101206101bf366004611645565b610b33565b3480156101d057600080fd5b506101426101df36600461169a565b610f02565b3480156101f057600080fd5b506100f7610f54565b34801561020557600080fd5b506101206102143660046115c6565b610f78565b34801561022557600080fd5b506100f761102d565b34801561023a57600080fd5b506100f7610249366004611645565b6110b9565b34801561025a57600080fd5b506100f76102693660046115aa565b6110f2565b34801561027a57600080fd5b506101a461111d565b7f000000000000000000000000000000000000000000000000000000000000000090565b6102af61125d565b6103043373ffffffffffffffffffffffffffffffffffffffff851614806102fc575073ffffffffffffffffffffffffffffffffffffffff8481166000908152600460205260409020541633145b610191611276565b61030d83611284565b6103325760405162461bcd60e51b815260040161032990611ae6565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166103655760405162461bcd60e51b815260040161032990611b43565b600061036f610990565b61ffff8316600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff888116855292529091205491925016156103c65760405162461bcd60e51b815260040161032990611bfd565b61ffff8216600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8781168552925290912054161561041a5760405162461bcd60e51b8152600401610329906119cf565b61ffff8216600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8881168552925290912054161561046e5760405162461bcd60e51b815260040161032990611a2c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906104e09086906004016117d3565b60206040518083038186803b1580156104f857600080fd5b505afa15801561050c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105309190611765565b1561054d5760405162461bcd60e51b8152600401610329906118e0565b61ffff8216600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff808916855292529091205416801561060c5761ffff8316600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555190917f8bbec57d3a3f4c2e45c921fd17cbddb674ae1a51e01ca960b8251463c5907f6391a35b61ffff8316600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff808a168086529184528285208054918c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790915586865260028552838620818752909452828520805490911682179055905190927f632b3b16accd727b982fb08251e873b41265cc9976166f1111fd6ddd49c8b9d391a46040517fecc4c58300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063ecc4c58390610709908790600401611c90565b604080518083038186803b15801561072057600080fd5b505afa158015610734573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610758919061177d565b50905073ffffffffffffffffffffffffffffffffffffffff821615610829578060020234101561079a5760405162461bcd60e51b815260040161032990611972565b6040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906357fb83459083906107f2908690899033906004016117f4565b6000604051808303818588803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b5050505050610849565b803410156108495760405162461bcd60e51b815260040161032990611972565b6040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906357fb83459083906108a1908a90899033906004016117f4565b6000604051808303818588803b1580156108ba57600080fd5b505af11580156108ce573d6000803e3d6000fd5b5047935050821591506108e79050576108e733826113b8565b505050506108f361143f565b505050565b6000610902610283565b73ffffffffffffffffffffffffffffffffffffffff1663adc63589836040518263ffffffff1660e01b815260040161093a91906117d3565b60206040518083038186803b15801561095257600080fd5b505afa158015610966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098a9190611765565b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b61ffff16600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff94851684529091529020541690565b6109ed611558565b60006109f7610283565b905060008173ffffffffffffffffffffffffffffffffffffffff1663010ae757856040518263ffffffff1660e01b8152600401610a3491906117d3565b60206040518083038186803b158015610a4c57600080fd5b505afa158015610a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a849190611765565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906328d09d4790610adb9087908590600401611828565b60806040518083038186803b158015610af357600080fd5b505afa158015610b07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2b91906116f6565b949350505050565b610b3b61125d565b73ffffffffffffffffffffffffffffffffffffffff8216610b6e5760405162461bcd60e51b81526004016103299061193d565b610b7782611284565b1580610b98575073ffffffffffffffffffffffffffffffffffffffff821633145b610bb45760405162461bcd60e51b815260040161032990611883565b6000610bbe610990565b61ffff8316600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff80891685529252909120549192501680610c155760405162461bcd60e51b815260040161032990611a89565b61ffff8316600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff808716855290835281842080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915585855260028452828520918a16808652919093528184208054909316909255517f632b3b16accd727b982fb08251e873b41265cc9976166f1111fd6ddd49c8b9d3908390a460405161ffff84169073ffffffffffffffffffffffffffffffffffffffff8316907f8bbec57d3a3f4c2e45c921fd17cbddb674ae1a51e01ca960b8251463c5907f6390600090a36040517fecc4c58300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063ecc4c58390610d55908790600401611c90565b604080518083038186803b158015610d6c57600080fd5b505afa158015610d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da4919061177d565b50905080600202341015610dca5760405162461bcd60e51b815260040161032990611972565b6040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906357fb8345908390610e22908990899033906004016117f4565b6000604051808303818588803b158015610e3b57600080fd5b505af1158015610e4f573d6000803e3d6000fd5b50506040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871693506357fb83459250849150610eac908690899033906004016117f4565b6000604051808303818588803b158015610ec557600080fd5b505af1158015610ed9573d6000803e3d6000fd5b504793505082159150610ef2905057610ef233826113b8565b50505050610efe61143f565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610f379291906117a0565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610f80611446565b610f8861125d565b610f9182611284565b610fad5760405162461bcd60e51b815260040161032990611ba0565b73ffffffffffffffffffffffffffffffffffffffff82811660008181526004602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055517f72cff3a94768f9930e59d7a01948e45bea689391918693c8d164c16f271c46d99190a3610efe61143f565b6000611037610f54565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561107c57600080fd5b505afa158015611090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b491906116da565b905090565b61ffff16600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff94851684529091529020541690565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600460205260409020541690565b611125611558565b600061112f610283565b905060008173ffffffffffffffffffffffffffffffffffffffff1663900cf0cf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561117957600080fd5b505afa15801561118d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b19190611765565b6040517fd1febfb900000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d1febfb99061120690849060040161184e565b60806040518083038186803b15801561121e57600080fd5b505afa158015611232573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125691906116f6565b9250505090565b61126f60026000541415610190611276565b6002600055565b81610efe57610efe81611487565b60008061128f610283565b73ffffffffffffffffffffffffffffffffffffffff16637175d4f76040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d457600080fd5b505afa1580156112e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130c91906116da565b6040517fc23697a800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063c23697a8906113619086906004016117d3565b60206040518083038186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b1919061167a565b9392505050565b6113c7814710156101a3611276565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516113ed906117d0565b60006040518083038185875af1925050503d806000811461142a576040519150601f19603f3d011682016040523d82523d6000602084013e61142f565b606091505b505090506108f3816101a4611276565b6001600055565b60006114756000357fffffffff0000000000000000000000000000000000000000000000000000000016610f02565b90506114846102fc82336114b1565b50565b611484817f42414c00000000000000000000000000000000000000000000000000000000006114f7565b60006114bb61102d565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161136193929190611857565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525090565b8051600f81900b811461098a57600080fd5b803561ffff8116811461098a57600080fd5b6000602082840312156115bb578081fd5b81356113b181611c9f565b600080604083850312156115d8578081fd5b82356115e381611c9f565b915060208301356115f381611c9f565b809150509250929050565b600080600060608486031215611612578081fd5b833561161d81611c9f565b9250602084013561162d81611c9f565b915061163c8560408601611598565b90509250925092565b60008060408385031215611657578182fd5b823561166281611c9f565b91506116718460208501611598565b90509250929050565b60006020828403121561168b578081fd5b815180151581146113b1578182fd5b6000602082840312156116ab578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146113b1578182fd5b6000602082840312156116eb578081fd5b81516113b181611c9f565b600060808284031215611707578081fd5b6040516080810181811067ffffffffffffffff82111715611726578283fd5b6040526117338484611586565b81526117428460208501611586565b602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215611776578081fd5b5051919050565b6000806040838503121561178f578182fd5b505080516020909101519092909150565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff938416815261ffff929092166020830152909116604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60208082526023908201527f6c6f63616c55736572206973207374696c6c20696e20676f6f64207374616e6460408201527f696e670000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526030908201527f5461726765742072656d6f7465206164647265737320686173206e6f6e2d7a6560408201527f726f20766542414c2062616c616e636500000000000000000000000000000000606082015260800190565b6020808252818101527f6c6f63616c557365722063616e6e6f74206265207a65726f2061646472657373604082015260600190565b60208082526027908201527f496e73756666696369656e742045544820746f2062726964676520757365722060408201527f62616c616e636500000000000000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f43616e6e6f742072656d617020746f20616e206164647265737320746861742060408201527f697320696e20757365206c6f63616c6c79000000000000000000000000000000606082015260800190565b60208082526032908201527f43616e6e6f742072656d617020746f20616e206164647265737320746861742060408201527f697320696e207573652072656d6f74656c790000000000000000000000000000606082015260800190565b60208082526021908201527f52656d617070696e6720746f20636c65617220646f6573206e6f74206578697360408201527f7400000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526038908201527f4f6e6c7920636f6e7472616374732077686963682063616e20686f6c6420766560408201527f42414c2063616e207365742075702061206d617070696e670000000000000000606082015260800190565b6020808252602a908201527f5a65726f20616464726573732063616e6e6f742062652075736564206173207260408201527f656d6f7465207573657200000000000000000000000000000000000000000000606082015260800190565b60208082526037908201527f4f6e6c7920636f6e7472616374732077686963682063616e20686f6c6420766560408201527f42414c206d6179206861766520612064656c6567617465000000000000000000606082015260800190565b60208082526034908201527f43616e6e6f74206f766572777269746520616e206578697374696e67206d617060408201527f70696e6720627920616e6f746865722075736572000000000000000000000000606082015260800190565b60006080820190508251600f0b82526020830151600f0b6020830152604083015160408301526060830151606083015292915050565b61ffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461148457600080fdfea26469706673582212206e46f69b4bbafcaa72cd9c6ecf34139d0b3719256f7fd7f30998ddf7aa926a5264736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x219 JUMPI DUP1 PUSH4 0xBDA75C38 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0xEE98B1E7 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0xF6F4A332 EQ PUSH2 0x26E JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1C4 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1E4 JUMPI DUP1 PUSH4 0xA9F3F44E EQ PUSH2 0x1F9 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x5E5543BE GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x5E5543BE EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x70D1BD17 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x71628BFD EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x76601A18 EQ PUSH2 0x1B1 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x21861FDE EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x3E7DF7C8 EQ PUSH2 0x122 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x283 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x15FE JUMP JUMPDEST PUSH2 0x2A7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0x15AA JUMP JUMPDEST PUSH2 0x8F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x184E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x990 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0x1645 JUMP JUMPDEST PUSH2 0x9AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A4 PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0x15AA JUMP JUMPDEST PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x1C5A JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1BF CALLDATASIZE PUSH1 0x4 PUSH2 0x1645 JUMP JUMPDEST PUSH2 0xB33 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x1DF CALLDATASIZE PUSH1 0x4 PUSH2 0x169A JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH2 0x214 CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0xF78 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x102D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x249 CALLDATASIZE PUSH1 0x4 PUSH2 0x1645 JUMP JUMPDEST PUSH2 0x10B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x269 CALLDATASIZE PUSH1 0x4 PUSH2 0x15AA JUMP JUMPDEST PUSH2 0x10F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A4 PUSH2 0x111D JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x2AF PUSH2 0x125D JUMP JUMPDEST PUSH2 0x304 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EQ DUP1 PUSH2 0x2FC JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND CALLER EQ JUMPDEST PUSH2 0x191 PUSH2 0x1276 JUMP JUMPDEST PUSH2 0x30D DUP4 PUSH2 0x1284 JUMP JUMPDEST PUSH2 0x332 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1AE6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x365 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1B43 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36F PUSH2 0x990 JUMP JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP AND ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0xFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND ISZERO PUSH2 0x41A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x19CF JUMP JUMPDEST PUSH2 0xFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND ISZERO PUSH2 0x46E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1A2C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x50C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x530 SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST ISZERO PUSH2 0x54D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x18E0 JUMP JUMPDEST PUSH2 0xFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP1 ISZERO PUSH2 0x60C JUMPI PUSH2 0xFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE MLOAD SWAP1 SWAP2 PUSH32 0x8BBEC57D3A3F4C2E45C921FD17CBDDB674AE1A51E01CA960B8251463C5907F63 SWAP2 LOG3 JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP2 DUP13 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND DUP2 OR SWAP1 SWAP2 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP2 DUP8 MSTORE SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND DUP3 OR SWAP1 SSTORE SWAP1 MLOAD SWAP1 SWAP3 PUSH32 0x632B3B16ACCD727B982FB08251E873B41265CC9976166F1111FD6DDD49C8B9D3 SWAP2 LOG4 PUSH1 0x40 MLOAD PUSH32 0xECC4C58300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xECC4C583 SWAP1 PUSH2 0x709 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1C90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x734 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x758 SWAP2 SWAP1 PUSH2 0x177D JUMP JUMPDEST POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x829 JUMPI DUP1 PUSH1 0x2 MUL CALLVALUE LT ISZERO PUSH2 0x79A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1972 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x57FB8345 SWAP1 DUP4 SWAP1 PUSH2 0x7F2 SWAP1 DUP7 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x80B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x849 JUMP JUMPDEST DUP1 CALLVALUE LT ISZERO PUSH2 0x849 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1972 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x57FB8345 SWAP1 DUP4 SWAP1 PUSH2 0x8A1 SWAP1 DUP11 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SELFBALANCE SWAP4 POP POP DUP3 ISZERO SWAP2 POP PUSH2 0x8E7 SWAP1 POP JUMPI PUSH2 0x8E7 CALLER DUP3 PUSH2 0x13B8 JUMP JUMPDEST POP POP POP POP PUSH2 0x8F3 PUSH2 0x143F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x902 PUSH2 0x283 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xADC63589 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x93A SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x966 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x98A SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH2 0x9ED PUSH2 0x1558 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9F7 PUSH2 0x283 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10AE757 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA34 SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA84 SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xADB SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1828 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB2B SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB3B PUSH2 0x125D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB6E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x193D JUMP JUMPDEST PUSH2 0xB77 DUP3 PUSH2 0x1284 JUMP JUMPDEST ISZERO DUP1 PUSH2 0xB98 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND CALLER EQ JUMPDEST PUSH2 0xBB4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1883 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBE PUSH2 0x990 JUMP JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP AND DUP1 PUSH2 0xC15 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1A89 JUMP JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE DUP6 DUP6 MSTORE PUSH1 0x2 DUP5 MSTORE DUP3 DUP6 KECCAK256 SWAP2 DUP11 AND DUP1 DUP7 MSTORE SWAP2 SWAP1 SWAP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 AND SWAP1 SWAP3 SSTORE MLOAD PUSH32 0x632B3B16ACCD727B982FB08251E873B41265CC9976166F1111FD6DDD49C8B9D3 SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP5 AND SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH32 0x8BBEC57D3A3F4C2E45C921FD17CBDDB674AE1A51E01CA960B8251463C5907F63 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x40 MLOAD PUSH32 0xECC4C58300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xECC4C583 SWAP1 PUSH2 0xD55 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1C90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDA4 SWAP2 SWAP1 PUSH2 0x177D JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x2 MUL CALLVALUE LT ISZERO PUSH2 0xDCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1972 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x57FB8345 SWAP1 DUP4 SWAP1 PUSH2 0xE22 SWAP1 DUP10 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE4F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP4 POP PUSH4 0x57FB8345 SWAP3 POP DUP5 SWAP2 POP PUSH2 0xEAC SWAP1 DUP7 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xED9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SELFBALANCE SWAP4 POP POP DUP3 ISZERO SWAP2 POP PUSH2 0xEF2 SWAP1 POP JUMPI PUSH2 0xEF2 CALLER DUP3 PUSH2 0x13B8 JUMP JUMPDEST POP POP POP POP PUSH2 0xEFE PUSH2 0x143F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF37 SWAP3 SWAP2 SWAP1 PUSH2 0x17A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xF80 PUSH2 0x1446 JUMP JUMPDEST PUSH2 0xF88 PUSH2 0x125D JUMP JUMPDEST PUSH2 0xF91 DUP3 PUSH2 0x1284 JUMP JUMPDEST PUSH2 0xFAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1BA0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP5 DUP7 AND SWAP5 DUP6 OR SWAP1 SSTORE MLOAD PUSH32 0x72CFF3A94768F9930E59D7A01948E45BEA689391918693C8D164C16F271C46D9 SWAP2 SWAP1 LOG3 PUSH2 0xEFE PUSH2 0x143F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1037 PUSH2 0xF54 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x107C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1090 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10B4 SWAP2 SWAP1 PUSH2 0x16DA JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH2 0x1125 PUSH2 0x1558 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x112F PUSH2 0x283 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x900CF0CF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x118D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B1 SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD1FEBFB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0xD1FEBFB9 SWAP1 PUSH2 0x1206 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x184E JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x121E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1232 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1256 SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x126F PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1276 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST DUP2 PUSH2 0xEFE JUMPI PUSH2 0xEFE DUP2 PUSH2 0x1487 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x128F PUSH2 0x283 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7175D4F7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x130C SWAP2 SWAP1 PUSH2 0x16DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC23697A800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xC23697A8 SWAP1 PUSH2 0x1361 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13B1 SWAP2 SWAP1 PUSH2 0x167A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x13C7 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x1276 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x13ED SWAP1 PUSH2 0x17D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x142A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x142F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x8F3 DUP2 PUSH2 0x1A4 PUSH2 0x1276 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1475 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0xF02 JUMP JUMPDEST SWAP1 POP PUSH2 0x1484 PUSH2 0x2FC DUP3 CALLER PUSH2 0x14B1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1484 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x14F7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14BB PUSH2 0x102D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1361 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1857 JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x98A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x98A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15BB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13B1 DUP2 PUSH2 0x1C9F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15D8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x15E3 DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x15F3 DUP2 PUSH2 0x1C9F JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1612 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x161D DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x162D DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP2 POP PUSH2 0x163C DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x1598 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1657 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1662 DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP2 POP PUSH2 0x1671 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1598 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x168B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x13B1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16AB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x13B1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16EB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x13B1 DUP2 PUSH2 0x1C9F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1707 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1726 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x1733 DUP5 DUP5 PUSH2 0x1586 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1742 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1586 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1776 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x178F JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE PUSH2 0xFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x6C6F63616C55736572206973207374696C6C20696E20676F6F64207374616E64 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x696E670000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x30 SWAP1 DUP3 ADD MSTORE PUSH32 0x5461726765742072656D6F7465206164647265737320686173206E6F6E2D7A65 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x726F20766542414C2062616C616E636500000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x6C6F63616C557365722063616E6E6F74206265207A65726F2061646472657373 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742045544820746F20627269646765207573657220 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x62616C616E636500000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x31 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742072656D617020746F20616E2061646472657373207468617420 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x697320696E20757365206C6F63616C6C79000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742072656D617020746F20616E2061646472657373207468617420 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x697320696E207573652072656D6F74656C790000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656D617070696E6720746F20636C65617220646F6573206E6F742065786973 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920636F6E7472616374732077686963682063616E20686F6C64207665 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x42414C2063616E207365742075702061206D617070696E670000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5A65726F20616464726573732063616E6E6F7420626520757365642061732072 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656D6F7465207573657200000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x37 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920636F6E7472616374732077686963682063616E20686F6C64207665 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x42414C206D6179206861766520612064656C6567617465000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F74206F766572777269746520616E206578697374696E67206D6170 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x70696E6720627920616E6F746865722075736572000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP DUP3 MLOAD PUSH1 0xF SIGNEXTEND DUP3 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0xF SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1484 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x46F69B4BBAFCAA72CD9C6ECF34139D SIGNEXTEND CALLDATACOPY NOT 0x25 PUSH16 0x7FD7F30998DDF7AA926A5264736F6C63 NUMBER STOP SMOD ADD STOP CALLER ","sourceMap":"1865:10228:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4577:4873;;;;;;:::i;:::-;;:::i;:::-;;3748:136;;;;;;;;;;-1:-1:-1;3748:136:76;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2901:142::-;;;;;;;;;;;;;:::i;3932:166::-;;;;;;;;;;-1:-1:-1;3932:166:76;;;;;:::i;:::-;;:::i;3411:289::-;;;;;;;;;;-1:-1:-1;3411:289:76;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9926:1718::-;;;;;;:::i;:::-;;:::i;2607:430:46:-;;;;;;;;;;-1:-1:-1;2607:430:46;;;;;:::i;:::-;;:::i;1158:79:51:-;;;;;;;;;;;;;:::i;9498:380:76:-;;;;;;;;;;-1:-1:-1;9498:380:76;;;;;:::i;:::-;;:::i;1297:109:51:-;;;;;;;;;;;;;:::i;4146:165:76:-;;;;;;;;;;-1:-1:-1;4146:165:76;;;;;:::i;:::-;;:::i;4359:144::-;;;;;;;;;;-1:-1:-1;4359:144:76;;;;;:::i;:::-;;:::i;3091:272::-;;;;;;;;;;;;;:::i;2744:109::-;2833:13;2744:109;:::o;4577:4873::-;2613:20:63;:18;:20::i;:::-;4740:111:76::1;4749:10;:23;::::0;::::1;;::::0;:74:::1;;-1:-1:-1::0;4790:33:76::1;::::0;;::::1;;::::0;;;:22:::1;:33;::::0;;;;;::::1;4776:10;:47;4749:74;10270:3:31;4740:8:76;:111::i;:::-;4869:29;4888:9;4869:18;:29::i;:::-;4861:98;;;;-1:-1:-1::0;;;4861:98:76::1;;;;;;;:::i;:::-;;;;;;;;;4977:24;::::0;::::1;4969:79;;;;-1:-1:-1::0;;;4969:79:76::1;;;;;;;:::i;:::-;5058:48;5109:28;:26;:28::i;:::-;6480:33;::::0;::::1;6537:1;6480:33:::0;;;:24:::1;:33;::::0;;;;;;;:59:::1;:45:::0;;::::1;::::0;;;;;;;;5058:79;;-1:-1:-1;6480:45:76::1;:59:::0;6459:158:::1;;;;-1:-1:-1::0;;;6459:158:76::1;;;;;;;:::i;:::-;6821:33;::::0;::::1;6878:1;6821:33:::0;;;:24:::1;:33;::::0;;;;;;;:59:::1;:45:::0;;::::1;::::0;;;;;;;;::::1;:59:::0;6800:155:::1;;;;-1:-1:-1::0;;;6800:155:76::1;;;;;;;:::i;:::-;7165:33;::::0;::::1;7221:1;7165:33:::0;;;:24:::1;:33;::::0;;;;;;;:58:::1;:44:::0;;::::1;::::0;;;;;;;;::::1;:58:::0;7144:155:::1;;;;-1:-1:-1::0;;;7144:155:76::1;;;;;;;:::i;:::-;7508:35;::::0;;;;:23:::1;:13;:23;::::0;::::1;::::0;:35:::1;::::0;7532:10;;7508:35:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40:::0;7500:101:::1;;;;-1:-1:-1::0;;;7500:101:76::1;;;;;;;:::i;:::-;7704:33;::::0;::::1;7680:21;7704:33:::0;;;:24:::1;:33;::::0;;;;;;;:44:::1;::::0;;::::1;::::0;;;;;;;;::::1;7762:27:::0;;7758:189:::1;;7805:33;::::0;::::1;7864:1;7805:33:::0;;;:24:::1;:33;::::0;;;;;;;:48:::1;::::0;::::1;::::0;;;;;;;;:61;;;::::1;::::0;;7885:51;7805:48;;7885:51:::1;::::0;::::1;7758:189;7990:33;::::0;::::1;;::::0;;;:24:::1;:33;::::0;;;;;;;:45:::1;::::0;;::::1;::::0;;;;;;;;;:57;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;8057:33;;;:24:::1;:33:::0;;;;;:44;;;;;;;;;:57;;;;::::1;::::0;::::1;::::0;;8130:53;;7990:45;;8130:53:::1;::::0;::::1;8411:56;::::0;;;;8388:17:::1;::::0;8411:47:::1;::::0;::::1;::::0;::::1;::::0;:56:::1;::::0;8459:7;;8411:56:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8387:80:76;-1:-1:-1;8481:27:76::1;::::0;::::1;::::0;8477:569:::1;;8545:9;8557:1;8545:13;8532:9;:26;;8524:78;;;;-1:-1:-1::0;;;8524:78:76::1;;;;;;;:::i;:::-;8826:104;::::0;;;;:39:::1;::::0;::::1;::::0;::::1;::::0;8874:9;;8826:104:::1;::::0;8886:13;;8901:7;;8918:10:::1;::::0;8826:104:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;8477:569;;;8982:9;8969;:22;;8961:74;;;;-1:-1:-1::0;;;8961:74:76::1;;;;;;;:::i;:::-;9124:100;::::0;;;;:39:::1;::::0;::::1;::::0;::::1;::::0;9172:9;;9124:100:::1;::::0;9184:9;;9195:7;;9212:10:::1;::::0;9124:100:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;9315:21:76::1;::::0;-1:-1:-1;;9350:20:76;;;-1:-1:-1;9346:98:76::1;::::0;-1:-1:-1;9346:98:76::1;9386:47;9404:10;9416:16;9386:17;:47::i;:::-;2643:1:63;;;;2654:19:::0;:17;:19::i;:::-;4577:4873:76;;;:::o;3748:136::-;3816:7;3842:17;:15;:17::i;:::-;:29;;;3872:4;3842:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3835:42;3748:136;-1:-1:-1;;3748:136:76:o;2901:142::-;3012:24;;;;2901:142;:::o;3932:166::-;4046:33;;4020:7;4046:33;;;:24;:33;;;;;;;;:45;;;;;;;;;;;;;;3932:166::o;3411:289::-;3479:26;;:::i;:::-;3517;3546:17;:15;:17::i;:::-;3517:46;;3573:17;3593:12;:29;;;3623:4;3593:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3645:48;;;;;3573:55;;-1:-1:-1;3645:31:76;;;;;;:48;;3677:4;;3573:55;;3645:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3638:55;3411:289;-1:-1:-1;;;;3411:289:76:o;9926:1718::-;2613:20:63;:18;:20::i;:::-;10049:23:76::1;::::0;::::1;10041:68;;;;-1:-1:-1::0;;;10041:68:76::1;;;;;;;:::i;:::-;10128:29;10147:9;10128:18;:29::i;:::-;10127:30;:57;;;-1:-1:-1::0;10161:23:76::1;::::0;::::1;10174:10;10161:23;10127:57;10119:105;;;;-1:-1:-1::0;;;10119:105:76::1;;;;;;;:::i;:::-;10234:48;10285:28;:26;:28::i;:::-;10345:33;::::0;::::1;10324:18;10345:33:::0;;;:24:::1;:33;::::0;;;;;;;:44:::1;::::0;;::::1;::::0;;;;;;;;10234:79;;-1:-1:-1;10345:44:76::1;10407:24:::0;10399:70:::1;;;;-1:-1:-1::0;;;10399:70:76::1;;;;;;;:::i;:::-;10480:33;::::0;::::1;10536:1;10480:33:::0;;;:24:::1;:33;::::0;;;;;;;:45:::1;::::0;;::::1;::::0;;;;;;;;:58;;;;;::::1;::::0;;;10548:33;;;:24:::1;:33:::0;;;;;:44;;::::1;::::0;;;;;;;;;;:57;;;;::::1;::::0;;;10621:53;::::1;::::0;10536:1;;10621:53:::1;10689:48;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;11052:56;::::0;;;;11029:17:::1;::::0;11052:47:::1;::::0;::::1;::::0;::::1;::::0;:56:::1;::::0;11100:7;;11052:56:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11028:80;;;11139:9;11151:1;11139:13;11126:9;:26;;11118:78;;;;-1:-1:-1::0;;;11118:78:76::1;;;;;;;:::i;:::-;11207:100;::::0;;;;:39:::1;::::0;::::1;::::0;::::1;::::0;11255:9;;11207:100:::1;::::0;11267:9;;11278:7;;11295:10:::1;::::0;11207:100:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11317:101:76::1;::::0;;;;:39:::1;::::0;::::1;::::0;-1:-1:-1;11317:39:76::1;::::0;-1:-1:-1;11365:9:76;;-1:-1:-1;11317:101:76::1;::::0;11377:10;;11389:7;;11406:10:::1;::::0;11317:101:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;11509:21:76::1;::::0;-1:-1:-1;;11544:20:76;;;-1:-1:-1;11540:98:76::1;::::0;-1:-1:-1;11540:98:76::1;11580:47;11598:10;11610:16;11580:17;:47::i;:::-;2643:1:63;;;;2654:19:::0;:17;:19::i;:::-;9926:1718:76;;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;9498:380:76:-;2276:21:46;:19;:21::i;:::-;2613:20:63::1;:18;:20::i;:::-;9669:29:76::2;9688:9;9669:18;:29::i;:::-;9661:97;;;;-1:-1:-1::0;;;9661:97:76::2;;;;;;;:::i;:::-;9769:33;::::0;;::::2;;::::0;;;:22:::2;:33;::::0;;;;;:44;;;::::2;::::0;;::::2;::::0;;::::2;::::0;;9828:43;::::2;::::0;9769:33;9828:43:::2;2654:19:63::1;:17;:19::i;1297:109:51:-:0;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;4146:165:76:-;4260:33;;4234:7;4260:33;;;:24;:33;;;;;;;;:44;;;;;;;;;;;;;;4146:165::o;4359:144::-;4463:33;;;;4437:7;4463:33;;;:22;:33;;;;;;;;4359:144::o;3091:272::-;3154:26;;:::i;:::-;3192;3221:17;:15;:17::i;:::-;3192:46;;3248:24;3275:12;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3312:44;;;;;3248:47;;-1:-1:-1;3312:26:76;;;;;;:44;;3248:47;;3312:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3305:51;;;;3091:272;:::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;11866:225:76:-;11935:4;11951:38;11992:17;:15;:17::i;:::-;:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12049:35;;;;;11951:81;;-1:-1:-1;12049:24:76;;;;;;:35;;12074:9;;12049:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12042:42;11866:225;-1:-1:-1;;;11866:225:76:o;2421:369:56:-;2502:78;2536:6;2511:21;:31;;11425:3:31;2502:8:56;:78::i;:::-;2669:12;2687:9;:14;;2710:6;2687:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:54;;;2732:51;2741:7;11488:3:31;2732:8:56;:51::i;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;2524:70::-;2420:181;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;1692:3378:31:-;-1:-1:-1;;;1754:18:31;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;790:132::-;867:13;;23412:2;23401:21;;;25901:34;;25891:2;;25949:1;;25939:12;1773:128;1839:20;;23506:6;23495:18;;26023:34;;26013:2;;26071:1;;26061:12;2049:241;;2153:2;2141:9;2132:7;2128:23;2124:32;2121:2;;;-1:-1;;2159:12;2121:2;85:6;72:20;97:33;124:5;97:33;:::i;2297:366::-;;;2418:2;2406:9;2397:7;2393:23;2389:32;2386:2;;;-1:-1;;2424:12;2386:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2476:63;-1:-1;2576:2;2615:22;;72:20;97:33;72:20;97:33;:::i;:::-;2584:63;;;;2380:283;;;;;:::o;2670:489::-;;;;2807:2;2795:9;2786:7;2782:23;2778:32;2775:2;;;-1:-1;;2813:12;2775:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2865:63;-1:-1;2965:2;3004:22;;72:20;97:33;72:20;97:33;:::i;:::-;2973:63;-1:-1;3091:52;3135:7;3073:2;3111:22;;3091:52;:::i;:::-;3081:62;;2769:390;;;;;:::o;3166:364::-;;;3286:2;3274:9;3265:7;3261:23;3257:32;3254:2;;;-1:-1;;3292:12;3254:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3344:63;-1:-1;3462:52;3506:7;3444:2;3482:22;;3462:52;:::i;:::-;3452:62;;3248:282;;;;;:::o;3537:257::-;;3649:2;3637:9;3628:7;3624:23;3620:32;3617:2;;;-1:-1;;3655:12;3617:2;223:6;217:13;25340:5;22840:13;22833:21;25318:5;25315:32;25305:2;;-1:-1;;25351:12;3801:239;;3904:2;3892:9;3883:7;3879:23;3875:32;3872:2;;;-1:-1;;3910:12;3872:2;356:6;343:20;23017:66;25462:5;23006:78;25438:5;25435:34;25425:2;;-1:-1;;25473:12;4047:303;;4182:2;4170:9;4161:7;4157:23;4153:32;4150:2;;;-1:-1;;4188:12;4150:2;516:6;510:13;528:53;575:5;528:53;:::i;4683:310::-;;4821:3;4809:9;4800:7;4796:23;4792:33;4789:2;;;-1:-1;;4828:12;4789:2;22044;22038:9;4821:3;22074:6;22070:17;22181:6;22169:10;22166:22;22145:18;22133:10;22130:34;22127:62;22124:2;;;-1:-1;;22192:12;22124:2;22044;22211:22;1223:59;1278:3;1254:22;1223:59;:::i;:::-;1205:16;1198:85;1378:59;1433:3;1345:2;1413:9;1409:22;1378:59;:::i;:::-;1345:2;1364:5;1360:16;1353:85;22044:2;1566:9;1562:22;1986:13;22044:2;1516:5;1512:16;1505:86;1651:2;1720:9;1716:22;1986:13;1651:2;1670:5;1666:16;1659:86;4880:97;;;;4783:210;;;;:::o;5000:263::-;;5115:2;5103:9;5094:7;5090:23;5086:32;5083:2;;;-1:-1;;5121:12;5083:2;-1:-1;1986:13;;5077:186;-1:-1;5077:186::o;5270:399::-;;;5402:2;5390:9;5381:7;5377:23;5373:32;5370:2;;;-1:-1;;5408:12;5370:2;-1:-1;;1986:13;;5571:2;5621:22;;;1986:13;;;;;-1:-1;5364:305::o;12949:387::-;6011:37;;;23017:66;23006:78;13200:2;13191:12;;6306:56;13300:11;;;13091:245::o;13343:379::-;13707:10;13531:191::o;13729:222::-;23598:42;23587:54;;;;5763:45;;13856:2;13841:18;;13827:124::o;13958:472::-;23598:42;23587:54;;;5763:45;;23506:6;23495:18;;;;14317:2;14302:18;;12671:36;23587:54;;;14416:2;14401:18;;5763:45;14155:2;14140:18;;14126:304::o;14437:333::-;23598:42;23587:54;;;;5763:45;;14756:2;14741:18;;6011:37;14592:2;14577:18;;14563:207::o;14777:222::-;6011:37;;;14904:2;14889:18;;14875:124::o;15006:444::-;6011:37;;;23598:42;23587:54;;;15353:2;15338:18;;5763:45;23587:54;15436:2;15421:18;;5763:45;15189:2;15174:18;;15160:290::o;16553:416::-;16753:2;16767:47;;;7418:2;16738:18;;;22502:19;7454:34;22542:14;;;7434:55;7523:5;7509:12;;;7502:27;7548:12;;;16724:245::o;16976:416::-;17176:2;17190:47;;;7799:2;17161:18;;;22502:19;7835:34;22542:14;;;7815:55;7904:18;7890:12;;;7883:40;7942:12;;;17147:245::o;17399:416::-;17599:2;17613:47;;;17584:18;;;22502:19;8229:34;22542:14;;;8209:55;8283:12;;;17570:245::o;17822:416::-;18022:2;18036:47;;;8534:2;18007:18;;;22502:19;8570:34;22542:14;;;8550:55;8639:9;8625:12;;;8618:31;8668:12;;;17993:245::o;18245:416::-;18445:2;18459:47;;;8919:2;18430:18;;;22502:19;8955:34;22542:14;;;8935:55;9024:19;9010:12;;;9003:41;9063:12;;;18416:245::o;18668:416::-;18868:2;18882:47;;;9314:2;18853:18;;;22502:19;9350:34;22542:14;;;9330:55;9419:20;9405:12;;;9398:42;9459:12;;;18839:245::o;19091:416::-;19291:2;19305:47;;;9710:2;19276:18;;;22502:19;9746:34;22542:14;;;9726:55;9815:3;9801:12;;;9794:25;9838:12;;;19262:245::o;19514:416::-;19714:2;19728:47;;;10089:2;19699:18;;;22502:19;10125:34;22542:14;;;10105:55;10194:26;10180:12;;;10173:48;10240:12;;;19685:245::o;19937:416::-;20137:2;20151:47;;;10491:2;20122:18;;;22502:19;10527:34;22542:14;;;10507:55;10596:12;10582;;;10575:34;10628:12;;;20108:245::o;20360:416::-;20560:2;20574:47;;;10879:2;20545:18;;;22502:19;10915:34;22542:14;;;10895:55;10984:25;10970:12;;;10963:47;11029:12;;;20531:245::o;20783:416::-;20983:2;20997:47;;;11585:2;20968:18;;;22502:19;11621:34;22542:14;;;11601:55;11690:22;11676:12;;;11669:44;11732:12;;;20954:245::o;21206:315::-;;21379:3;21368:9;21364:19;21356:27;;12032:16;12026:23;23412:2;23401:21;7152:3;7145:36;12196:4;12189:5;12185:16;12179:23;23412:2;23401:21;12196:4;12258:3;12254:14;7145:36;12346:4;12339:5;12335:16;12329:23;12346:4;12410:3;12406:14;6011:37;12499:4;12492:5;12488:16;12482:23;12499:4;12563:3;12559:14;6011:37;21350:171;;;;:::o;21528:218::-;23506:6;23495:18;;;;12671:36;;21653:2;21638:18;;21624:122::o;25135:117::-;23598:42;25222:5;23587:54;25197:5;25194:35;25184:2;;25243:1;;25233:12"},"methodIdentifiers":{"clearNetworkRemapping(address,uint16)":"76601a18","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getLocalUser(address,uint16)":"70d1bd17","getLockedEnd(address)":"3e7df7c8","getOmniVotingEscrowAdaptor()":"5e5543be","getRemappingManager(address)":"ee98b1e7","getRemoteUser(address,uint16)":"bda75c38","getTotalSupplyPoint()":"f6f4a332","getUserPoint(address)":"71628bfd","getVault()":"8d928af8","getVotingEscrow()":"08b0308a","setNetworkRemapping(address,address,uint16)":"21861fde","setNetworkRemappingManager(address,address)":"a9f3f44e"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IVotingEscrow\",\"name\":\"votingEscrow\",\"type\":\"address\"},{\"internalType\":\"contract IOmniVotingEscrowAdaptor\",\"name\":\"omniVotingEscrowAdaptor\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"AddressDelegateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"AddressMappingUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"RemoteAddressMappingCleared\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"clearNetworkRemapping\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"getLocalUser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getLockedEnd\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOmniVotingEscrowAdaptor\",\"outputs\":[{\"internalType\":\"contract IOmniVotingEscrowAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"}],\"name\":\"getRemappingManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"getRemoteUser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalSupplyPoint\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserPoint\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"setNetworkRemapping\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"setNetworkRemappingManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"For each network (chainId), we maintain a mapping between local (Ethereum) and remote (L2) addresses. This contract remaps balance queries on remote network addresses to their corresponding local addresses. Users able to call this contract can set their own mappings, or delegate this function to another account if they cannot.\",\"kind\":\"dev\",\"methods\":{\"clearNetworkRemapping(address,uint16)\":{\"details\":\"This is intended to discourage and also allow recovery from griefing attacks. If griefing occurs then the griefer can be removed from Smart Wallet Checker and have their remappings erased. The local user can always clear their own mapping, regardless the state of the Smart Wallet Checker.\",\"params\":{\"chainId\":\"- The chain id of the network to erase.\",\"localUser\":\"- The address of the local user to erase.\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getLocalUser(address,uint16)\":{\"details\":\"Returns `address(0)` if the remapping does not exist for the given remote user.\",\"params\":{\"chainId\":\"- The chain ID of the remote network.\",\"remoteUser\":\"- Address of the user on the remote chain corresponding to the local address.\"}},\"getLockedEnd(address)\":{\"details\":\"The returned value is taken directly from the voting escrow.\"},\"getRemappingManager(address)\":{\"params\":{\"localUser\":\"- Address of the user on the local chain with a remapping manager.\"}},\"getRemoteUser(address,uint16)\":{\"details\":\"Returns `address(0)` if the remapping does not exist for the given local user.\",\"params\":{\"chainId\":\"- The chain ID of the remote network.\",\"localUser\":\"- Address of the user on the local chain corresponding to the remote address.\"}},\"getTotalSupplyPoint()\":{\"details\":\"We return the total supply as a Point to allow extrapolating this into the future. Note that this extrapolation will become invalid when crossing weeks, since we're not taking into account veBAL locks that expire then.\"},\"getUserPoint(address)\":{\"details\":\"We return the balance as a Point to allow extrapolating this into the future.\"},\"setNetworkRemapping(address,address,uint16)\":{\"details\":\"In order to set up a remapping on this contract, `localUser` must be a smart contract which has been allowlisted to hold veBAL. EOAs are expected to set up any delegation of their veBAL on L2s directly.\",\"params\":{\"chainId\":\"- The chain id of the remote chain on which `remoteUser` resides.\",\"localUser\":\"- The address of a contract allowlisted on the `SmartWalletChecker`.\",\"remoteUser\":\"- The address to receive `localUser`'s balance of veBAL on the remote chain.\"}},\"setNetworkRemappingManager(address,address)\":{\"details\":\"This is intended to handle contracts which cannot interact with this contract directly.\",\"params\":{\"delegate\":\"- The address which is allowed to manage remote users to be linked to `localUser`.\",\"localUser\":\"- The address of a contract allowlisted on the `SmartWalletChecker`.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"clearNetworkRemapping(address,uint16)\":{\"notice\":\"Clears a local user's mapping for a particular network.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getLocalUser(address,uint16)\":{\"notice\":\"Returns the local user corresponding to an address on a remote chain.\"},\"getLockedEnd(address)\":{\"notice\":\"Get timestamp when `user`'s lock finishes.\"},\"getOmniVotingEscrowAdaptor()\":{\"notice\":\"Returns Omni Voting Escrow Adaptor contract address, which interfaces with the gateway to bridge veBAL balances to L2s.\"},\"getRemappingManager(address)\":{\"notice\":\"Gets the account that can set a remapping for a given local user.\"},\"getRemoteUser(address,uint16)\":{\"notice\":\"Returns the remote user corresponding to an address on the local chain.\"},\"getTotalSupplyPoint()\":{\"notice\":\"Returns the current total supply of veBAL as a Point.\"},\"getUserPoint(address)\":{\"notice\":\"Returns a user's current veBAL balance as a Point. Note that we don't apply any remappings in this query. The returned value is taken directly from the voting escrow.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"getVotingEscrow()\":{\"notice\":\"Returns Voting Escrow contract address.\"},\"setNetworkRemapping(address,address,uint16)\":{\"notice\":\"Sets up a mapping from `localUser`'s veBAL balance to `remoteUser` for chain `chainId`.\"},\"setNetworkRemappingManager(address,address)\":{\"notice\":\"Sets an address to manage the mapping for a given local user on their behalf.\"}},\"notice\":\"This contract allows veBAL holders on Ethereum to assign their balance to designated addresses on each L2. This is intended for smart contracts that are not deployed to the same address on all networks. EOA's are expected to either use the same address, or manage delegation on L2 networks themselves.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/VotingEscrowRemapper.sol\":\"VotingEscrowRemapper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol\":{\"keccak256\":\"0xd3a86f1eb7aadba25221c8935ae888816487ea6ba4d04c3a5f4789d7b061ac90\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ca65ef1eebc274a1b28abee0d1514f4c18334583c13e39672a80201f0481304f\",\"dweb:/ipfs/QmSs5kDN8rGfbCmkQihP1uUbTtAc9wfSzSuPTpp6dErVWk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol\":{\"keccak256\":\"0x357cb8cbb0bb993b47725e25f19af79410e289c368ef29a7a5effbead655c4ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9c9742ce6bf697f8083621b91f63b1f3232b571232dc8c56d5444e59cb7f0fe9\",\"dweb:/ipfs/QmRqTLCZ6vBjhbqVySxqeWXMpyULKZYTsDKHgvfGN3cz2y\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/VotingEscrowRemapper.sol\":{\"keccak256\":\"0x65ad3c681d61656d73b877a5c6d7975666e12386ae9bde9d97e33921fbea512b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b6f098acf9056f0efd3a6b1b25be887c07f0f21dbcde2d648e3294299a30c4b9\",\"dweb:/ipfs/QmTNZygNXTrmSitTG2Jo86k99uV29V5vBCfwAf5zWDLbUE\"]}},\"version\":1}"}},"contracts/admin/AuthorizerAdaptor.sol":{"AuthorizerAdaptor":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b5060405161070e38038061070e8339818101604052602081101561003357600080fd5b50516001600055306080526001600160601b031960609190911b1660a05260805160a05160601c610697610077600039806102ff52508061029252506106976000f3fe60806040526004361061003f5760003560e01c80634036176a14610044578063851c1bb3146101465780638d928af8146101a4578063aaabadc5146101e2575b600080fd5b6100d16004803603604081101561005a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561009257600080fd5b8201836020820111156100a457600080fd5b803590602001918460018302840111640100000000831117156100c657600080fd5b5090925090506101f7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561010b5781810151838201526020016100f3565b50505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015257600080fd5b506101926004803603602081101561016957600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661028c565b60408051918252519081900360200190f35b3480156101b057600080fd5b506101b96102fd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101ee57600080fd5b506101b9610321565b60606102016103a1565b60643561022261021a6102138361028c565b33886103ba565b610191610484565b61027a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505073ffffffffffffffffffffffffffffffffffffffff881691905034610496565b915050610285610582565b9392505050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061032b6102fd565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561037057600080fd5b505afa158015610384573d6000803e3d6000fd5b505050506040513d602081101561039a57600080fd5b5051905090565b6103b360026000541415610190610484565b6002600055565b60006103c4610321565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848585856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561045057600080fd5b505afa158015610464573d6000803e3d6000fd5b505050506040513d602081101561047a57600080fd5b5051949350505050565b816104925761049281610589565b5050565b6060600060608573ffffffffffffffffffffffffffffffffffffffff1684866040518082805190602001908083835b6020831061050257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016104c5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610564576040519150601f19603f3d011682016040523d82523d6000602084013e610569565b606091505b509150915061057882826105b6565b9695505050505050565b6001600055565b6105b3817f42414c00000000000000000000000000000000000000000000000000000000006105e6565b50565b606082156105c55750806105e0565b8151156105d55781518083602001fd5b6105e06101ae610589565b92915050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea264697066735822122089acb3cfb6556c8140f79bef2040ac142b1e91400d1bdadcf04c70f24f58173664736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x70E CODESIZE SUB DUP1 PUSH2 0x70E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x0 SSTORE ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x697 PUSH2 0x77 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2FF MSTORE POP DUP1 PUSH2 0x292 MSTORE POP PUSH2 0x697 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4036176A EQ PUSH2 0x44 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1E2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x138 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x192 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x28C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x321 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x201 PUSH2 0x3A1 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD PUSH2 0x222 PUSH2 0x21A PUSH2 0x213 DUP4 PUSH2 0x28C JUMP JUMPDEST CALLER DUP9 PUSH2 0x3BA JUMP JUMPDEST PUSH2 0x191 PUSH2 0x484 JUMP JUMPDEST PUSH2 0x27A DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 SWAP1 POP CALLVALUE PUSH2 0x496 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x285 PUSH2 0x582 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32B PUSH2 0x2FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x384 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3B3 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x484 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C4 PUSH2 0x321 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x450 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x464 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x47A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x492 JUMPI PUSH2 0x492 DUP2 PUSH2 0x589 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 DUP7 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x502 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4C5 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x564 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x569 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x578 DUP3 DUP3 PUSH2 0x5B6 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x5B3 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x5E6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x5C5 JUMPI POP DUP1 PUSH2 0x5E0 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x5D5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x5E0 PUSH2 0x1AE PUSH2 0x589 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 0xAC 0xB3 0xCF 0xB6 SSTORE PUSH13 0x8140F79BEF2040AC142B1E9140 0xD SHL 0xDA 0xDC CREATE 0x4C PUSH17 0xF24F58173664736F6C6343000701003300 ","sourceMap":"2213:5876:77:-:0;;;2409:237;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2409:237:77;2070:1:63;2175:7;:22;2608:4:77;2559:56;;-1:-1:-1;;;;;;2625:14:77;;;;;;;;2213:5876;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"10865":[{"length":32,"start":658}],"10867":[{"length":32,"start":767}]},"linkReferences":{},"object":"60806040526004361061003f5760003560e01c80634036176a14610044578063851c1bb3146101465780638d928af8146101a4578063aaabadc5146101e2575b600080fd5b6100d16004803603604081101561005a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561009257600080fd5b8201836020820111156100a457600080fd5b803590602001918460018302840111640100000000831117156100c657600080fd5b5090925090506101f7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561010b5781810151838201526020016100f3565b50505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015257600080fd5b506101926004803603602081101561016957600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661028c565b60408051918252519081900360200190f35b3480156101b057600080fd5b506101b96102fd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101ee57600080fd5b506101b9610321565b60606102016103a1565b60643561022261021a6102138361028c565b33886103ba565b610191610484565b61027a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505073ffffffffffffffffffffffffffffffffffffffff881691905034610496565b915050610285610582565b9392505050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061032b6102fd565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561037057600080fd5b505afa158015610384573d6000803e3d6000fd5b505050506040513d602081101561039a57600080fd5b5051905090565b6103b360026000541415610190610484565b6002600055565b60006103c4610321565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848585856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561045057600080fd5b505afa158015610464573d6000803e3d6000fd5b505050506040513d602081101561047a57600080fd5b5051949350505050565b816104925761049281610589565b5050565b6060600060608573ffffffffffffffffffffffffffffffffffffffff1684866040518082805190602001908083835b6020831061050257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016104c5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610564576040519150601f19603f3d011682016040523d82523d6000602084013e610569565b606091505b509150915061057882826105b6565b9695505050505050565b6001600055565b6105b3817f42414c00000000000000000000000000000000000000000000000000000000006105e6565b50565b606082156105c55750806105e0565b8151156105d55781518083602001fd5b6105e06101ae610589565b92915050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea264697066735822122089acb3cfb6556c8140f79bef2040ac142b1e91400d1bdadcf04c70f24f58173664736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4036176A EQ PUSH2 0x44 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1E2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x138 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x192 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x28C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x321 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x201 PUSH2 0x3A1 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD PUSH2 0x222 PUSH2 0x21A PUSH2 0x213 DUP4 PUSH2 0x28C JUMP JUMPDEST CALLER DUP9 PUSH2 0x3BA JUMP JUMPDEST PUSH2 0x191 PUSH2 0x484 JUMP JUMPDEST PUSH2 0x27A DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 SWAP1 POP CALLVALUE PUSH2 0x496 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x285 PUSH2 0x582 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32B PUSH2 0x2FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x384 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3B3 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x484 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C4 PUSH2 0x321 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x450 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x464 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x47A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x492 JUMPI PUSH2 0x492 DUP2 PUSH2 0x589 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 DUP7 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x502 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4C5 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x564 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x569 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x578 DUP3 DUP3 PUSH2 0x5B6 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x5B3 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x5E6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x5C5 JUMPI POP DUP1 PUSH2 0x5E0 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x5D5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x5E0 PUSH2 0x1AE PUSH2 0x589 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 0xAC 0xB3 0xCF 0xB6 SSTORE PUSH13 0x8140F79BEF2040AC142B1E9140 0xD SHL 0xDA 0xDC CREATE 0x4C PUSH17 0xF24F58173664736F6C6343000701003300 ","sourceMap":"2213:5876:77:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4444:3643;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4444:3643:77;;-1:-1:-1;4444:3643:77;-1:-1:-1;4444:3643:77;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3769:162;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3769:162:77;;;;:::i;:::-;;;;;;;;;;;;;;;;2710:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2858:118;;;;;;;;;;;;;:::i;4444:3643::-;4592:12;2613:20:63;:18;:20::i;:::-;7480:3:77::1;7467:17;7835:91;7844:54;7856:21;7467:17:::0;7856:11:::1;:21::i;:::-;7879:10;7891:6;7844:11;:54::i;:::-;10270:3:31;7835:8:77;:91::i;:::-;8035:45;8064:4;;8035:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;8035:28:77::1;::::0;::::1;::::0;;-1:-1:-1;8070:9:77::1;8035:28;:45::i;:::-;8028:52;;;2654:19:63::0;:17;:19::i;:::-;4444:3643:77;;;;;:::o;3769:162::-;3873:50;;;3890:22;3873:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3863:61;;;;;3769:162;;;:::o;2710:88::-;2785:6;2710:88;:::o;2858:118::-;2913:11;2943:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2943:26:77;;-1:-1:-1;2858:118:77;:::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;2982:206:77:-;3106:4;3129:15;:13;:15::i;:::-;:26;;;3156:8;3166:7;3175:5;3129:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3129:52:77;;2982:206;-1:-1:-1;;;;2982:206:77:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;4012:348:56:-;4141:12;4225;4239:23;4266:6;:11;;4286:5;4294:4;4266:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4224:75;;;;4316:37;4333:7;4342:10;4316:16;:37::i;:::-;4309:44;4012:348;-1:-1:-1;;;;;;4012:348:56:o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;5057:714:56:-;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:56;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;12091:3:31;5703:7:56;:37::i;:::-;5057:714;;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getVault()":"8d928af8","performAction(address,bytes)":"4036176a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"performAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"When calculating the actionId to call a function on a target contract, it must be calculated as if it were to be called on this adaptor. This can be done by passing the function selector to the `getActionId` function.\",\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"As the contracts managed by this adaptor don't have action ID disambiguators, we use the adaptor's globally. This means that contracts with the same function selector will have a matching action ID: if granularity is required then permissions must not be granted globally in the Authorizer.\",\"params\":{\"selector\":\"- The 4 byte selector of the function to be called using `performAction`\"},\"returns\":{\"_0\":\"The associated action ID\"}},\"performAction(address,bytes)\":{\"params\":{\"data\":\"- Calldata to be sent to the target contract\",\"target\":\"- Address of the contract to be called\"},\"returns\":{\"_0\":\"The bytes encoded return value from the performed function call\"}}},\"title\":\"Authorizer Adaptor WARNING: this contract contains a *critical bug* that can lead into exploits where it checks for permissions incorrectly. It should *never* be used by itself. We keep a copy of it in the repository, including the bug and all original comments (some of which are incorrect due to the bug), both for historical reasons and because it is part of our immutable infrastructure. See the `AuthorizerAdaptorEntrypoint` contract for more information on how we use this contract safely.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getActionId(bytes4)\":{\"notice\":\"Returns the action ID associated with calling a given function through this adaptor\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"performAction(address,bytes)\":{\"notice\":\"Performs an arbitrary function call on a target contract, provided the caller is authorized to do so. This function should not be called directly as that will result in an unconditional revert: instead, use `AuthorizerAdaptorEntrypoint.performAction`.\"}},\"notice\":\"This contract is intended to act as an adaptor between systems which expect a single admin address and the Balancer Authorizer such that the Authorizer may grant/revoke admin powers to unlimited addresses. The permissions the Authorizer can grant are granular such they may be global or specific to a particular contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/admin/AuthorizerAdaptor.sol\":\"AuthorizerAdaptor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/admin/AuthorizerAdaptor.sol\":{\"keccak256\":\"0xa7214ccaa5b1a2e76bbed39b86745cb54043d64b9c4d765d57cefae03daddad1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cb4359f73d7ab5db66ff98062aae52957508541e0718da028dfde7832d1249ed\",\"dweb:/ipfs/QmY8FUxMgm7bkFXWz8pX5dyNpd4oPo5Z8DecY7m26byQSH\"]}},\"version\":1}"}},"contracts/admin/AuthorizerAdaptorEntrypoint.sol":{"AuthorizerAdaptorEntrypoint":{"abi":[{"inputs":[{"internalType":"contract IAuthorizerAdaptor","name":"adaptor","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"ActionPerformed","type":"event"},{"inputs":[{"internalType":"bytes32","name":"actionId","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"where","type":"address"}],"name":"canPerform","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizerAdaptor","outputs":[{"internalType":"contract IAuthorizerAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b50604051610a54380380610a548339818101604052602081101561003357600080fd5b50516001600160601b0319606082901b16608052604080516311b2515f60e31b815290516001600160a01b03831691638d928af8916004808301926020929190829003018186803b15801561008757600080fd5b505afa15801561009b573d6000803e3d6000fd5b505050506040513d60208110156100b157600080fd5b5051606081811b6001600160601b03191660a052608051901c91506001600160a01b03166109626100f2600039806106e252508061085052506109626000f3fe6080604052600436106100655760003560e01c80639be2a884116100435780639be2a88414610208578063aaabadc51461026a578063e758d36b1461027f57610065565b80634036176a1461006a578063851c1bb31461016c5780638d928af8146101ca575b600080fd5b6100f76004803603604081101561008057600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156100b857600080fd5b8201836020820111156100ca57600080fd5b803590602001918460018302840111640100000000831117156100ec57600080fd5b509092509050610294565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017857600080fd5b506101b86004803603602081101561018f57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610635565b60408051918252519081900360200190f35b3480156101d657600080fd5b506101df6106e0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561021457600080fd5b506102566004803603606081101561022b57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff60208201358116916040013516610704565b604080519115158252519081900360200190f35b34801561027657600080fd5b506101df6107ce565b34801561028b57600080fd5b506101df61084e565b60606102a560048310156069610872565b60006018848460038181106102b657fe5b909101357fff000000000000000000000000000000000000000000000000000000000000001690911c90506010858560028181106102f057fe5b909101357fff000000000000000000000000000000000000000000000000000000000000001690911c905060088686600181811061032a57fe5b909101357fff000000000000000000000000000000000000000000000000000000000000001690911c9050868660008161036057fe5b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191617171790506103af6103a76103a083610635565b3388610704565b610191610872565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167fd4634f1cb58f0ea9cb6e1838192e5c3077115fcc17f0f6af3db4757114f42739878760405180806020018281038252848482818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039550909350505050a461048361084e565b73ffffffffffffffffffffffffffffffffffffffff16634036176a348787876040518563ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509450505050506000604051808303818588803b15801561051f57600080fd5b505af1158015610533573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561057b57600080fd5b810190808051604051939291908464010000000082111561059b57600080fd5b9083019060208201858111156105b057600080fd5b82516401000000008111828201881017156105ca57600080fd5b82525081516020918201929091019080838360005b838110156105f75781810151838201526020016105df565b50505050905090810190601f1680156106245780820380516001836020036101000a031916815260200191505b506040525050509150509392505050565b600061063f61084e565b73ffffffffffffffffffffffffffffffffffffffff1663851c1bb3836040518263ffffffff1660e01b815260040180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060206040518083038186803b1580156106ae57600080fd5b505afa1580156106c2573d6000803e3d6000fd5b505050506040513d60208110156106d857600080fd5b505192915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061070e6107ce565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848585856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561079a57600080fd5b505afa1580156107ae573d6000803e3d6000fd5b505050506040513d60208110156107c457600080fd5b5051949350505050565b60006107d86106e0565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561081d57600080fd5b505afa158015610831573d6000803e3d6000fd5b505050506040513d602081101561084757600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b816108805761088081610884565b5050565b6108ae817f42414c00000000000000000000000000000000000000000000000000000000006108b1565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220f9d4a5a41e93bd4491eb24316a69b41ca4123c15eca1e37164b479096f0f777b64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xA54 CODESIZE SUB DUP1 PUSH2 0xA54 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH1 0x80 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x11B2515F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0x8D928AF8 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 DUP2 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD SWAP1 SHR SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x962 PUSH2 0xF2 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x6E2 MSTORE POP DUP1 PUSH2 0x850 MSTORE POP PUSH2 0x962 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9BE2A884 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x9BE2A884 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x26A JUMPI DUP1 PUSH4 0xE758D36B EQ PUSH2 0x27F JUMPI PUSH2 0x65 JUMP JUMPDEST DUP1 PUSH4 0x4036176A EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1CA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x131 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x635 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DF PUSH2 0x6E0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 ADD CALLDATALOAD AND PUSH2 0x704 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DF PUSH2 0x7CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DF PUSH2 0x84E JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2A5 PUSH1 0x4 DUP4 LT ISZERO PUSH1 0x69 PUSH2 0x872 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x18 DUP5 DUP5 PUSH1 0x3 DUP2 DUP2 LT PUSH2 0x2B6 JUMPI INVALID JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 SWAP2 SHR SWAP1 POP PUSH1 0x10 DUP6 DUP6 PUSH1 0x2 DUP2 DUP2 LT PUSH2 0x2F0 JUMPI INVALID JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 SWAP2 SHR SWAP1 POP PUSH1 0x8 DUP7 DUP7 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x32A JUMPI INVALID JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 SWAP2 SHR SWAP1 POP DUP7 DUP7 PUSH1 0x0 DUP2 PUSH2 0x360 JUMPI INVALID JUMPDEST SWAP1 POP ADD CALLDATALOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND OR OR OR SWAP1 POP PUSH2 0x3AF PUSH2 0x3A7 PUSH2 0x3A0 DUP4 PUSH2 0x635 JUMP JUMPDEST CALLER DUP9 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x872 JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH32 0xD4634F1CB58F0EA9CB6E1838192E5C3077115FCC17F0F6AF3DB4757114F42739 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG4 PUSH2 0x483 PUSH2 0x84E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4036176A CALLVALUE DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP5 POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x533 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x5CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5DF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x624 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP POP SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63F PUSH2 0x84E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x851C1BB3 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH2 0x7CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x79A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D8 PUSH2 0x6E0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x81D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x831 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x880 JUMPI PUSH2 0x880 DUP2 PUSH2 0x884 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x8AE DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x8B1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 0xD4 0xA5 LOG4 0x1E SWAP4 0xBD DIFFICULTY SWAP2 0xEB 0x24 BALANCE PUSH11 0x69B41CA4123C15ECA1E371 PUSH5 0xB479096F0F PUSH24 0x7B64736F6C63430007010033000000000000000000000000 ","sourceMap":"1547:3001:78:-:0;;;1856:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1856:112:78;-1:-1:-1;;;;;;1906:18:78;;;;;;;1943;;;-1:-1:-1;;;1943:18:78;;;;-1:-1:-1;;;;;1906:18:78;;;1943:16;;:18;;;;;1856:112;;1943:18;;;;;;;1906;1943;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1943:18:78;1934:27;;;;-1:-1:-1;;;;;;1934:27:78;;;1547:3001;;;;;-1:-1:-1;;;;;;1547:3001:78;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"11015":[{"length":32,"start":2128}],"11017":[{"length":32,"start":1762}]},"linkReferences":{},"object":"6080604052600436106100655760003560e01c80639be2a884116100435780639be2a88414610208578063aaabadc51461026a578063e758d36b1461027f57610065565b80634036176a1461006a578063851c1bb31461016c5780638d928af8146101ca575b600080fd5b6100f76004803603604081101561008057600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156100b857600080fd5b8201836020820111156100ca57600080fd5b803590602001918460018302840111640100000000831117156100ec57600080fd5b509092509050610294565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017857600080fd5b506101b86004803603602081101561018f57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610635565b60408051918252519081900360200190f35b3480156101d657600080fd5b506101df6106e0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561021457600080fd5b506102566004803603606081101561022b57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff60208201358116916040013516610704565b604080519115158252519081900360200190f35b34801561027657600080fd5b506101df6107ce565b34801561028b57600080fd5b506101df61084e565b60606102a560048310156069610872565b60006018848460038181106102b657fe5b909101357fff000000000000000000000000000000000000000000000000000000000000001690911c90506010858560028181106102f057fe5b909101357fff000000000000000000000000000000000000000000000000000000000000001690911c905060088686600181811061032a57fe5b909101357fff000000000000000000000000000000000000000000000000000000000000001690911c9050868660008161036057fe5b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191617171790506103af6103a76103a083610635565b3388610704565b610191610872565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167fd4634f1cb58f0ea9cb6e1838192e5c3077115fcc17f0f6af3db4757114f42739878760405180806020018281038252848482818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039550909350505050a461048361084e565b73ffffffffffffffffffffffffffffffffffffffff16634036176a348787876040518563ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509450505050506000604051808303818588803b15801561051f57600080fd5b505af1158015610533573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561057b57600080fd5b810190808051604051939291908464010000000082111561059b57600080fd5b9083019060208201858111156105b057600080fd5b82516401000000008111828201881017156105ca57600080fd5b82525081516020918201929091019080838360005b838110156105f75781810151838201526020016105df565b50505050905090810190601f1680156106245780820380516001836020036101000a031916815260200191505b506040525050509150509392505050565b600061063f61084e565b73ffffffffffffffffffffffffffffffffffffffff1663851c1bb3836040518263ffffffff1660e01b815260040180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060206040518083038186803b1580156106ae57600080fd5b505afa1580156106c2573d6000803e3d6000fd5b505050506040513d60208110156106d857600080fd5b505192915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061070e6107ce565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848585856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561079a57600080fd5b505afa1580156107ae573d6000803e3d6000fd5b505050506040513d60208110156107c457600080fd5b5051949350505050565b60006107d86106e0565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561081d57600080fd5b505afa158015610831573d6000803e3d6000fd5b505050506040513d602081101561084757600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b816108805761088081610884565b5050565b6108ae817f42414c00000000000000000000000000000000000000000000000000000000006108b1565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220f9d4a5a41e93bd4491eb24316a69b41ca4123c15eca1e37164b479096f0f777b64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9BE2A884 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x9BE2A884 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x26A JUMPI DUP1 PUSH4 0xE758D36B EQ PUSH2 0x27F JUMPI PUSH2 0x65 JUMP JUMPDEST DUP1 PUSH4 0x4036176A EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1CA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x131 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x635 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DF PUSH2 0x6E0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 ADD CALLDATALOAD AND PUSH2 0x704 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DF PUSH2 0x7CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DF PUSH2 0x84E JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2A5 PUSH1 0x4 DUP4 LT ISZERO PUSH1 0x69 PUSH2 0x872 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x18 DUP5 DUP5 PUSH1 0x3 DUP2 DUP2 LT PUSH2 0x2B6 JUMPI INVALID JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 SWAP2 SHR SWAP1 POP PUSH1 0x10 DUP6 DUP6 PUSH1 0x2 DUP2 DUP2 LT PUSH2 0x2F0 JUMPI INVALID JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 SWAP2 SHR SWAP1 POP PUSH1 0x8 DUP7 DUP7 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x32A JUMPI INVALID JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 SWAP2 SHR SWAP1 POP DUP7 DUP7 PUSH1 0x0 DUP2 PUSH2 0x360 JUMPI INVALID JUMPDEST SWAP1 POP ADD CALLDATALOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND OR OR OR SWAP1 POP PUSH2 0x3AF PUSH2 0x3A7 PUSH2 0x3A0 DUP4 PUSH2 0x635 JUMP JUMPDEST CALLER DUP9 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x872 JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH32 0xD4634F1CB58F0EA9CB6E1838192E5C3077115FCC17F0F6AF3DB4757114F42739 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG4 PUSH2 0x483 PUSH2 0x84E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4036176A CALLVALUE DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP5 POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x533 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x5CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5DF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x624 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP POP SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63F PUSH2 0x84E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x851C1BB3 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH2 0x7CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x79A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D8 PUSH2 0x6E0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x81D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x831 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x880 JUMPI PUSH2 0x880 DUP2 PUSH2 0x884 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x8AE DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x8B1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 0xD4 0xA5 LOG4 0x1E SWAP4 0xBD DIFFICULTY SWAP2 0xEB 0x24 BALANCE PUSH11 0x69B41CA4123C15ECA1E371 PUSH5 0xB479096F0F PUSH24 0x7B64736F6C63430007010033000000000000000000000000 ","sourceMap":"1547:3001:78:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3224:1322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3224:1322:78;;-1:-1:-1;3224:1322:78;-1:-1:-1;3224:1322:78;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3073:145;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3073:145:78;;;;:::i;:::-;;;;;;;;;;;;;;;;1974:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2312:203;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2312:203:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2068:118;;;;;;;;;;;;;:::i;2192:114::-;;;;;;;;;;;;;:::i;3224:1322::-;3319:12;3687:52;3711:1;3696:16;;;5929:3:31;3687:8:78;:52::i;:::-;3749:15;3848:2;3836:4;;3841:1;3836:7;;;;;;;;;;;;;3829:21;;;;-1:-1:-1;3822:2:78;3810:4;;3815:1;3810:7;;;;;;;;;;;;;3803:21;;;;-1:-1:-1;3797:1:78;3785:4;;3790:1;3785:7;;;;;;;;;;;;;3778:20;;;;-1:-1:-1;3767:4:78;;3772:1;3767:4;:7;;;;;;;;;;;;:32;;;;:58;:84;3749:102;;3862:90;3871:53;3882:21;3894:8;3882:11;:21::i;:::-;3905:10;3917:6;3871:10;:53::i;:::-;10270:3:31;3862:8:78;:90::i;:::-;4006:6;3968:51;;3994:10;3968:51;;3984:8;3968:51;;;;4014:4;;3968:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3968:51:78;;-1:-1:-1;;;;3968:51:78;4469:22;:20;:22::i;:::-;:36;;;4514:9;4526:6;4534:4;;4469:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4469:70:78;;;;;;;;;;-1:-1:-1;4469:70:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4462:77;;;3224:1322;;;;;:::o;3073:145::-;3141:7;3167:22;:20;:22::i;:::-;:34;;;3202:8;3167:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3167:44:78;;3073:145;-1:-1:-1;;3073:145:78:o;1974:88::-;2049:6;1974:88;:::o;2312:203::-;2433:4;2456:15;:13;:15::i;:::-;:26;;;2483:8;2493:7;2502:5;2456:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2456:52:78;;2312:203;-1:-1:-1;;;;2312:203:78:o;2068:118::-;2123:11;2153:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2153:26:78;;-1:-1:-1;2068:118:78;:::o;2192:114::-;2291:8;2192:114;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"canPerform(bytes32,address,address)":"9be2a884","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getAuthorizerAdaptor()":"e758d36b","getVault()":"8d928af8","performAction(address,bytes)":"4036176a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"adaptor\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ActionPerformed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"actionId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"canPerform\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizerAdaptor\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"performAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"performAction(address,bytes)\":{\"params\":{\"data\":\"- Calldata to be sent to the target contract\",\"target\":\"- Address of the contract to be called\"},\"returns\":{\"_0\":\"The bytes encoded return value from the performed function call\"}}},\"title\":\"Authorizer Adaptor Entrypoint\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getActionId(bytes4)\":{\"notice\":\"Returns the action ID associated with calling a given function through the `AuthorizerAdaptor`. Note that even though the Adaptor's action IDs are not actually used by it (since the Authorizer ignores those values - see `TimelockAuthorizer.canPerform`), this contract reuses those IDs to simplify migrations and tooling. See `AuthorizerAdaptor.getActionId` for more information on how the action IDs are computed, and how functions with equal selectors are assigned the same action ID.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getAuthorizerAdaptor()\":{\"notice\":\"Returns the Authorizer Adaptor\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"performAction(address,bytes)\":{\"notice\":\"Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\"}},\"notice\":\"This contract exists as a fix for a critical bug in the `AuthorizerAdaptor` that could lead to escalation of privileges. The Entrypoint contract addresses this by working in combination with `TimelockAuthorizer` so that all Adaptor calls that are not made via the Entrypoint fail, while those that do happen through the Entrypoint check for permissions correctly.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/admin/AuthorizerAdaptorEntrypoint.sol\":\"AuthorizerAdaptorEntrypoint\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x25b2a2ad63f9aa59c45f1a81a2f79733b8dcdce268cc9b1ac03866396f4b0d17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://efe9f30e6cab81587b738089165050d35533926703f4ad1da0f86452a69874ce\",\"dweb:/ipfs/QmcJoNP8NAEefchpG3qs3CwMw1qhxBJTgBMY4KY6g6qfUa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/admin/AuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x8b688aa83e9133bc62afebabe7086e1591c1e5722693f52e51e352f2969b96ff\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bb9227c1551a113ffba8d0334dcdf8deffab1313709ad04209f87f62845d5ff1\",\"dweb:/ipfs/QmYfYmMZf6QFYUqe55XPqgegdSh84SUGRtxtSKDXVeG5MD\"]}},\"version\":1}"}},"contracts/admin/ChildChainGaugeTokenAdder.sol":{"ChildChainGaugeTokenAdder":{"abi":[{"inputs":[{"internalType":"contract IChildChainLiquidityGaugeFactory","name":"gaugeFactory","type":"address"},{"internalType":"contract IAuthorizerAdaptorEntrypoint","name":"authorizerAdaptorEntrypoint","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"contract IRewardsOnlyGauge","name":"gauge","type":"address"},{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"addTokenToGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizerAdaptorEntrypoint","outputs":[{"internalType":"contract IAuthorizerAdaptorEntrypoint","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"61010060405234801561001157600080fd5b50604051610eb8380380610eb8833981016040819052610030916100cd565b806001600160a01b0316638d928af86040518163ffffffff1660e01b815260040160206040518083038186803b15801561006957600080fd5b505afa15801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a19190610106565b306080526001600160601b0319606091821b811660a05291811b821660c0529190911b1660e052610141565b600080604083850312156100df578182fd5b82516100ea81610129565b60208401519092506100fb81610129565b809150509250929050565b600060208284031215610117578081fd5b815161012281610129565b9392505050565b6001600160a01b038116811461013e57600080fd5b50565b60805160a05160601c60c05160601c60e05160601c610d2c61018c6000398061023a528061033e52508060d152806105fa528061077a52508061014752508060f75250610d2c6000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80638d928af8116100505780638d928af8146100aa578063aaabadc5146100b2578063d411ee4d146100ba57610067565b80637afcf0e61461006c578063851c1bb31461008a575b600080fd5b6100746100cf565b6040516100819190610ae7565b60405180910390f35b61009d610098366004610974565b6100f3565b6040516100819190610b76565b610074610145565b610074610169565b6100cd6100c8366004610a6d565b6101f5565b005b7f000000000000000000000000000000000000000000000000000000000000000090565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610128929190610ab7565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610173610145565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156101b857600080fd5b505afa1580156101cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f09190610938565b905090565b6101fd6105af565b6040517fce3cc8bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063ce3cc8bd9061026f908690600401610ae7565b60206040518083038186803b15801561028757600080fd5b505afa15801561029b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bf9190610954565b6102fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f590610c71565b60405180910390fd5b6040517f90b2008700000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906390b2008790610373908790600401610ae7565b60206040518083038186803b15801561038b57600080fd5b505afa15801561039f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c39190610938565b90508373ffffffffffffffffffffffffffffffffffffffff1663bf88a6ff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561040b57600080fd5b505afa15801561041f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104439190610938565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146104a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f590610c3a565b6104b28184846105f8565b6104ba610919565b60005b600881101561059c576040517f54c49fe900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906354c49fe990610518908490600401610b76565b60206040518083038186803b15801561053057600080fd5b505afa158015610544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105689190610938565b82826008811061057457fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209290920201526001016104bd565b506105a8858383610760565b5050505050565b60006105de6000357fffffffff00000000000000000000000000000000000000000000000000000000166100f3565b90506105f56105ed82336107db565b610191610878565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634036176a8463661ab0b260e01b858562093a8060405160240161065593929190610c09565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526106e69291600401610b08565b600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261075a91908101906109b4565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690634036176a9085907f47d2d5d30000000000000000000000000000000000000000000000000000000090610655908790631afe22a6908890602401610bab565b60006107e5610169565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161082193929190610b7f565b60206040518083038186803b15801561083957600080fd5b505afa15801561084d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108719190610954565b9392505050565b81610886576108868161088a565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526105f5917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b6040518061010001604052806008906020820280368337509192915050565b600060208284031215610949578081fd5b815161087181610cd4565b600060208284031215610965578081fd5b81518015158114610871578182fd5b600060208284031215610985578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610871578182fd5b6000602082840312156109c5578081fd5b815167ffffffffffffffff808211156109dc578283fd5b818401915084601f8301126109ef578283fd5b8151818111156109fd578384fd5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610a3b578586fd5b604052818152838201602001871015610a52578485fd5b610a63826020830160208701610ca8565b9695505050505050565b600080600060608486031215610a81578182fd5b8335610a8c81610cd4565b92506020840135610a9c81610cd4565b91506040840135610aac81610cd4565b809150509250925092565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff84168252604060208301528251806040840152610b43816060850160208701610ca8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60006101408201905073ffffffffffffffffffffffffffffffffffffffff808616835260208581850152604084018560005b6008811015610bfc578151851683529183019190830190600101610bdd565b5050505050949350505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b6020808252601b908201527f4e6f74206f726967696e616c2067617567652073747265616d65720000000000604082015260600190565b6020808252600d908201527f496e76616c696420676175676500000000000000000000000000000000000000604082015260600190565b60005b83811015610cc3578181015183820152602001610cab565b8381111561075a5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146105f557600080fdfea26469706673582212200ac0acd000db4f5c215a05f2297f9ea83d548984d4c3977c769368cad0b0ec2764736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xEB8 CODESIZE SUB DUP1 PUSH2 0xEB8 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0xCD JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8D928AF8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x106 JUMP JUMPDEST ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE SWAP2 SWAP1 SWAP2 SHL AND PUSH1 0xE0 MSTORE PUSH2 0x141 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDF JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0xEA DUP2 PUSH2 0x129 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0xFB DUP2 PUSH2 0x129 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x117 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x122 DUP2 PUSH2 0x129 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x13E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0xD2C PUSH2 0x18C PUSH1 0x0 CODECOPY DUP1 PUSH2 0x23A MSTORE DUP1 PUSH2 0x33E MSTORE POP DUP1 PUSH1 0xD1 MSTORE DUP1 PUSH2 0x5FA MSTORE DUP1 PUSH2 0x77A MSTORE POP DUP1 PUSH2 0x147 MSTORE POP DUP1 PUSH1 0xF7 MSTORE POP PUSH2 0xD2C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0xD411EE4D EQ PUSH2 0xBA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x7AFCF0E6 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xCF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9D PUSH2 0x98 CALLDATASIZE PUSH1 0x4 PUSH2 0x974 JUMP JUMPDEST PUSH2 0xF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xB76 JUMP JUMPDEST PUSH2 0x74 PUSH2 0x145 JUMP JUMPDEST PUSH2 0x74 PUSH2 0x169 JUMP JUMPDEST PUSH2 0xCD PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6D JUMP JUMPDEST PUSH2 0x1F5 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x128 SWAP3 SWAP2 SWAP1 PUSH2 0xAB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x173 PUSH2 0x145 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F0 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x5AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCE3CC8BD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xCE3CC8BD SWAP1 PUSH2 0x26F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BF SWAP2 SWAP1 PUSH2 0x954 JUMP JUMPDEST PUSH2 0x2FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F5 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x90B2008700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x90B20087 SWAP1 PUSH2 0x373 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C3 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBF88A6FF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x443 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F5 SWAP1 PUSH2 0xC3A JUMP JUMPDEST PUSH2 0x4B2 DUP2 DUP5 DUP5 PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x919 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x59C JUMPI PUSH1 0x40 MLOAD PUSH32 0x54C49FE900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x54C49FE9 SWAP1 PUSH2 0x518 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0xB76 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x544 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x568 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x574 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x4BD JUMP JUMPDEST POP PUSH2 0x5A8 DUP6 DUP4 DUP4 PUSH2 0x760 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DE PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0xF3 JUMP JUMPDEST SWAP1 POP PUSH2 0x5F5 PUSH2 0x5ED DUP3 CALLER PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x191 PUSH2 0x878 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4036176A DUP5 PUSH4 0x661AB0B2 PUSH1 0xE0 SHL DUP6 DUP6 PUSH3 0x93A80 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x655 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP5 DUP6 AND OR SWAP1 MSTORE MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL SWAP1 SWAP3 AND DUP3 MSTORE PUSH2 0x6E6 SWAP3 SWAP2 PUSH1 0x4 ADD PUSH2 0xB08 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x714 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x75A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x9B4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x4036176A SWAP1 DUP6 SWAP1 PUSH32 0x47D2D5D300000000000000000000000000000000000000000000000000000000 SWAP1 PUSH2 0x655 SWAP1 DUP8 SWAP1 PUSH4 0x1AFE22A6 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0xBAB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E5 PUSH2 0x169 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x821 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x84D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x871 SWAP2 SWAP1 PUSH2 0x954 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x886 JUMPI PUSH2 0x886 DUP2 PUSH2 0x88A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x5F5 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x949 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x871 DUP2 PUSH2 0xCD4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x965 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x871 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x985 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x871 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9C5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x9DC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9EF JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x9FD JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0xA3B JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0xA52 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xA63 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xCA8 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA81 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xA8C DUP2 PUSH2 0xCD4 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xA9C DUP2 PUSH2 0xCD4 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xAAC DUP2 PUSH2 0xCD4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0xB43 DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x140 DUP3 ADD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND DUP4 MSTORE PUSH1 0x20 DUP6 DUP2 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0xBFC JUMPI DUP2 MLOAD DUP6 AND DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xBDD JUMP JUMPDEST POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F74206F726967696E616C2067617567652073747265616D65720000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676500000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCC3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCAB JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x75A JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5F5 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP 0xC0 0xAC 0xD0 STOP 0xDB 0x4F 0x5C 0x21 GAS SDIV CALLCODE 0x29 PUSH32 0x9EA83D548984D4C3977C769368CAD0B0EC2764736F6C63430007010033000000 ","sourceMap":"1232:3419:79:-:0;;;1835:306;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1984:27;-1:-1:-1;;;;;1984:36:79;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1054:4:51;2049:46:46;;-1:-1:-1;;;;;;1073:14:51::1;::::0;;;;;::::1;::::0;2038:58:79;;;;;::::1;::::0;2106:28;;;;;::::1;::::0;1232:3419;;608:549:-1;;;815:2;803:9;794:7;790:23;786:32;783:2;;;-1:-1;;821:12;783:2;340:6;334:13;352:73;419:5;352:73;:::i;:::-;1024:2;1109:22;;118:13;873:114;;-1:-1;136:68;118:13;136:68;:::i;:::-;1032:109;;;;777:380;;;;;:::o;1164:293::-;;1294:2;1282:9;1273:7;1269:23;1265:32;1262:2;;;-1:-1;;1300:12;1262:2;536:6;530:13;548:48;590:5;548:48;:::i;:::-;1352:89;1256:201;-1:-1;;;1256:201::o;2074:187::-;-1:-1;;;;;2008:54;;2168:70;;2158:2;;2252:1;;2242:12;2158:2;2152:109;:::o;:::-;1232:3419:79;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":247}],"3611":[{"length":32,"start":327}],"11214":[{"length":32,"start":209},{"length":32,"start":1530},{"length":32,"start":1914}],"11216":[{"length":32,"start":570},{"length":32,"start":830}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c80638d928af8116100505780638d928af8146100aa578063aaabadc5146100b2578063d411ee4d146100ba57610067565b80637afcf0e61461006c578063851c1bb31461008a575b600080fd5b6100746100cf565b6040516100819190610ae7565b60405180910390f35b61009d610098366004610974565b6100f3565b6040516100819190610b76565b610074610145565b610074610169565b6100cd6100c8366004610a6d565b6101f5565b005b7f000000000000000000000000000000000000000000000000000000000000000090565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610128929190610ab7565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610173610145565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156101b857600080fd5b505afa1580156101cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f09190610938565b905090565b6101fd6105af565b6040517fce3cc8bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063ce3cc8bd9061026f908690600401610ae7565b60206040518083038186803b15801561028757600080fd5b505afa15801561029b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bf9190610954565b6102fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f590610c71565b60405180910390fd5b6040517f90b2008700000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906390b2008790610373908790600401610ae7565b60206040518083038186803b15801561038b57600080fd5b505afa15801561039f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c39190610938565b90508373ffffffffffffffffffffffffffffffffffffffff1663bf88a6ff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561040b57600080fd5b505afa15801561041f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104439190610938565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146104a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f590610c3a565b6104b28184846105f8565b6104ba610919565b60005b600881101561059c576040517f54c49fe900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906354c49fe990610518908490600401610b76565b60206040518083038186803b15801561053057600080fd5b505afa158015610544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105689190610938565b82826008811061057457fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209290920201526001016104bd565b506105a8858383610760565b5050505050565b60006105de6000357fffffffff00000000000000000000000000000000000000000000000000000000166100f3565b90506105f56105ed82336107db565b610191610878565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634036176a8463661ab0b260e01b858562093a8060405160240161065593929190610c09565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526106e69291600401610b08565b600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261075a91908101906109b4565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690634036176a9085907f47d2d5d30000000000000000000000000000000000000000000000000000000090610655908790631afe22a6908890602401610bab565b60006107e5610169565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161082193929190610b7f565b60206040518083038186803b15801561083957600080fd5b505afa15801561084d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108719190610954565b9392505050565b81610886576108868161088a565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526105f5917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b6040518061010001604052806008906020820280368337509192915050565b600060208284031215610949578081fd5b815161087181610cd4565b600060208284031215610965578081fd5b81518015158114610871578182fd5b600060208284031215610985578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610871578182fd5b6000602082840312156109c5578081fd5b815167ffffffffffffffff808211156109dc578283fd5b818401915084601f8301126109ef578283fd5b8151818111156109fd578384fd5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610a3b578586fd5b604052818152838201602001871015610a52578485fd5b610a63826020830160208701610ca8565b9695505050505050565b600080600060608486031215610a81578182fd5b8335610a8c81610cd4565b92506020840135610a9c81610cd4565b91506040840135610aac81610cd4565b809150509250925092565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff84168252604060208301528251806040840152610b43816060850160208701610ca8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60006101408201905073ffffffffffffffffffffffffffffffffffffffff808616835260208581850152604084018560005b6008811015610bfc578151851683529183019190830190600101610bdd565b5050505050949350505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b6020808252601b908201527f4e6f74206f726967696e616c2067617567652073747265616d65720000000000604082015260600190565b6020808252600d908201527f496e76616c696420676175676500000000000000000000000000000000000000604082015260600190565b60005b83811015610cc3578181015183820152602001610cab565b8381111561075a5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146105f557600080fdfea26469706673582212200ac0acd000db4f5c215a05f2297f9ea83d548984d4c3977c769368cad0b0ec2764736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0xD411EE4D EQ PUSH2 0xBA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x7AFCF0E6 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xCF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9D PUSH2 0x98 CALLDATASIZE PUSH1 0x4 PUSH2 0x974 JUMP JUMPDEST PUSH2 0xF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xB76 JUMP JUMPDEST PUSH2 0x74 PUSH2 0x145 JUMP JUMPDEST PUSH2 0x74 PUSH2 0x169 JUMP JUMPDEST PUSH2 0xCD PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6D JUMP JUMPDEST PUSH2 0x1F5 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x128 SWAP3 SWAP2 SWAP1 PUSH2 0xAB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x173 PUSH2 0x145 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F0 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x5AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCE3CC8BD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xCE3CC8BD SWAP1 PUSH2 0x26F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BF SWAP2 SWAP1 PUSH2 0x954 JUMP JUMPDEST PUSH2 0x2FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F5 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x90B2008700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x90B20087 SWAP1 PUSH2 0x373 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C3 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBF88A6FF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x443 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F5 SWAP1 PUSH2 0xC3A JUMP JUMPDEST PUSH2 0x4B2 DUP2 DUP5 DUP5 PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x919 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x59C JUMPI PUSH1 0x40 MLOAD PUSH32 0x54C49FE900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x54C49FE9 SWAP1 PUSH2 0x518 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0xB76 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x544 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x568 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x574 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x4BD JUMP JUMPDEST POP PUSH2 0x5A8 DUP6 DUP4 DUP4 PUSH2 0x760 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DE PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0xF3 JUMP JUMPDEST SWAP1 POP PUSH2 0x5F5 PUSH2 0x5ED DUP3 CALLER PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x191 PUSH2 0x878 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4036176A DUP5 PUSH4 0x661AB0B2 PUSH1 0xE0 SHL DUP6 DUP6 PUSH3 0x93A80 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x655 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP5 DUP6 AND OR SWAP1 MSTORE MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL SWAP1 SWAP3 AND DUP3 MSTORE PUSH2 0x6E6 SWAP3 SWAP2 PUSH1 0x4 ADD PUSH2 0xB08 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x714 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x75A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x9B4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x4036176A SWAP1 DUP6 SWAP1 PUSH32 0x47D2D5D300000000000000000000000000000000000000000000000000000000 SWAP1 PUSH2 0x655 SWAP1 DUP8 SWAP1 PUSH4 0x1AFE22A6 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0xBAB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E5 PUSH2 0x169 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x821 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x84D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x871 SWAP2 SWAP1 PUSH2 0x954 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x886 JUMPI PUSH2 0x886 DUP2 PUSH2 0x88A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x5F5 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x949 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x871 DUP2 PUSH2 0xCD4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x965 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x871 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x985 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x871 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9C5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x9DC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9EF JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x9FD JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0xA3B JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0xA52 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xA63 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xCA8 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA81 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xA8C DUP2 PUSH2 0xCD4 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xA9C DUP2 PUSH2 0xCD4 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xAAC DUP2 PUSH2 0xCD4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0xB43 DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x140 DUP3 ADD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND DUP4 MSTORE PUSH1 0x20 DUP6 DUP2 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0xBFC JUMPI DUP2 MLOAD DUP6 AND DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xBDD JUMP JUMPDEST POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F74206F726967696E616C2067617567652073747265616D65720000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676500000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCC3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCAB JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x75A JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5F5 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP 0xC0 0xAC 0xD0 STOP 0xDB 0x4F 0x5C 0x21 GAS SDIV CALLCODE 0x29 PUSH32 0x9EA83D548984D4C3977C769368CAD0B0EC2764736F6C63430007010033000000 ","sourceMap":"1232:3419:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:147;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2607:430:46;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1158:79:51:-;;;:::i;1297:109::-;;;:::i;2675:1226:79:-;;;;;;:::i;:::-;;:::i;:::-;;2245:147;2357:28;2245:147;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;1297:109::-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;2675:1226:79:-;2276:21:46;:19;:21::i;:::-;2836:48:79::1;::::0;;;;:32:::1;:13;:32;::::0;::::1;::::0;:48:::1;::::0;2877:5;;2836:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2828:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;2963:46;::::0;;;;2912:28:::1;::::0;2963:30:::1;:13;:30;::::0;::::1;::::0;:46:::1;::::0;3002:5;;2963:46:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2912:98;;3040:5;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3028:35;;:8;:35;;;3020:75;;;;;;;;;;;;:::i;:::-;3211:55;3231:8;3241:11;3254;3211:19;:55::i;:::-;3613:39;;:::i;:::-;3667:9;3662:106;1618:1;3678;:15;3662:106;;;3732:25;::::0;;;;:22:::1;::::0;::::1;::::0;::::1;::::0;:25:::1;::::0;3755:1;;3732:25:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3714:12;3727:1;3714:15;;;;;;;:43;::::0;;::::1;:15;::::0;;;::::1;;:43:::0;3695:3:::1;;3662:106;;;;3839:55;3864:5;3871:8;3881:12;3839:24;:55::i;:::-;2307:1:46;;2675:1226:79::0;;;:::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;:::-;2420:181;:::o;3907:359:79:-;4055:28;:42;;;4119:8;4165:39;;;4206:11;4219;1669:7;4142:107;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4055:204;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3907:359;;;:::o;4272:377::-;4534:98;;4450:42;:28;:42;;;;4514:5;;4557:38;;4534:98;;4597:8;;1536:37;;4619:12;;4534:98;;;:::i;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1516:67;1412:178;-1:-1:-1;;;1412:178:51:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o;1907:263::-;;2022:2;2010:9;2001:7;1997:23;1993:32;1990:2;;;-1:-1;;2028:12;1990:2;226:6;220:13;238:33;265:5;238:33;:::i;2177:257::-;;2289:2;2277:9;2268:7;2264:23;2260:32;2257:2;;;-1:-1;;2295:12;2257:2;364:6;358:13;18020:5;14778:13;14771:21;17998:5;17995:32;17985:2;;-1:-1;;18031:12;2441:239;;2544:2;2532:9;2523:7;2519:23;2515:32;2512:2;;;-1:-1;;2550:12;2512:2;497:6;484:20;14955:66;18142:5;14944:78;18118:5;18115:34;18105:2;;-1:-1;;18153:12;2687:360;;2811:2;2799:9;2790:7;2786:23;2782:32;2779:2;;;-1:-1;;2817:12;2779:2;2868:17;2862:24;2906:18;;2898:6;2895:30;2892:2;;;-1:-1;;2928:12;2892:2;3014:6;3003:9;2999:22;;;666:3;659:4;651:6;647:17;643:27;633:2;;-1:-1;;674:12;633:2;714:6;708:13;2906:18;13424:6;13421:30;13418:2;;;-1:-1;;13454:12;13418:2;13088;13082:9;2811:2;13527:9;659:4;13512:6;13508:17;13504:33;13118:6;13114:17;;13225:6;13213:10;13210:22;2906:18;13177:10;13174:34;13171:62;13168:2;;;-1:-1;;13236:12;13168:2;13088;13255:22;806:21;;;906:16;;;2811:2;906:16;903:25;-1:-1;900:2;;;-1:-1;;931:12;900:2;951:39;983:6;2811:2;882:5;878:16;2811:2;848:6;844:17;951:39;:::i;:::-;2948:83;2773:274;-1:-1;;;;;;2773:274::o;3988:573::-;;;;4167:2;4155:9;4146:7;4142:23;4138:32;4135:2;;;-1:-1;;4173:12;4135:2;1824:6;1811:20;1836:59;1889:5;1836:59;:::i;:::-;4225:89;-1:-1;4351:2;4405:22;;1462:20;1487:48;1462:20;1487:48;:::i;:::-;4359:78;-1:-1;4474:2;4513:22;;72:20;97:33;72:20;97:33;:::i;:::-;4482:63;;;;4129:432;;;;;:::o;8288:387::-;5755:37;;;14955:66;14944:78;8539:2;8530:12;;6050:56;8639:11;;;8430:245::o;8682:222::-;15587:42;15576:54;;;;4851:37;;8809:2;8794:18;;8780:124::o;8911:417::-;;15587:42;14694:5;15576:54;4858:3;4851:37;9084:2;9202;9191:9;9187:18;9180:48;6260:5;13953:12;14386:6;9084:2;9073:9;9069:18;14374:19;6353:52;6398:6;14414:14;9073:9;14414:14;9202:2;6379:5;6375:16;6353:52;:::i;:::-;17798:2;17778:14;17794:7;17774:28;6417:39;;;;14414:14;6417:39;;9055:273;-1:-1;;;9055:273::o;9335:222::-;5755:37;;;9462:2;9447:18;;9433:124::o;9564:444::-;5755:37;;;15587:42;15576:54;;;9911:2;9896:18;;4851:37;15576:54;9994:2;9979:18;;4851:37;9747:2;9732:18;;9718:290::o;10583:621::-;;10854:3;10843:9;10839:19;10831:27;;15587:42;;14694:5;15576:54;6581:3;6574:85;11046:2;5785:5;11046:2;11035:9;11031:18;5755:37;11190:2;11179:9;11175:18;5349:21;-1:-1;5376:288;13845:4;5398:1;5395:13;5376:288;;;5462:13;;15576:54;;6574:85;;4752:14;;;;14096;;;;5423:1;5416:9;5376:288;;;5380:14;;;;;10825:379;;;;;;:::o;11211:474::-;15587:42;15576:54;;;6574:85;;15576:54;;;;11588:2;11573:18;;4851:37;11671:2;11656:18;;5755:37;;;;11409:2;11394:18;;11380:305::o;11951:416::-;12151:2;12165:47;;;7735:2;12136:18;;;14374:19;7771:29;14414:14;;;7751:50;7820:12;;;12122:245::o;12374:416::-;12574:2;12588:47;;;8071:2;12559:18;;;14374:19;8107:15;14414:14;;;8087:36;8142:12;;;12545:245::o;17273:268::-;17338:1;17345:101;17359:6;17356:1;17353:13;17345:101;;;17426:11;;;17420:18;17407:11;;;17400:39;17381:2;17374:10;17345:101;;;17461:6;17458:1;17455:13;17452:2;;;-1:-1;;17338:1;17508:16;;17501:27;17322:219::o;17815:117::-;15587:42;17902:5;15576:54;17877:5;17874:35;17864:2;;17923:1;;17913:12"},"methodIdentifiers":{"addTokenToGauge(address,address,address)":"d411ee4d","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getAuthorizerAdaptorEntrypoint()":"7afcf0e6","getVault()":"8d928af8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IChildChainLiquidityGaugeFactory\",\"name\":\"gaugeFactory\",\"type\":\"address\"},{\"internalType\":\"contract IAuthorizerAdaptorEntrypoint\",\"name\":\"authorizerAdaptorEntrypoint\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IRewardsOnlyGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"addTokenToGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizerAdaptorEntrypoint\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptorEntrypoint\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addTokenToGauge(address,address,address)\":{\"details\":\"This is a permissioned function.\",\"params\":{\"distributor\":\"- The distributor for the rewards.\",\"gauge\":\"- The gauge we are modifying\",\"rewardToken\":\"- The token to be added.\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"title\":\"ChildChainGaugeTokenAdder\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addTokenToGauge(address,address,address)\":{\"notice\":\"Adds a new token to a RewardsOnlyGauge.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getAuthorizerAdaptorEntrypoint()\":{\"notice\":\"Returns the address of the Authorizer adaptor entrypoint contract.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"notice\":\"Allows atomically adding a new reward token to a RewardsOnlyGauge while ensuring that it remains in sync with its ChildChainStreamer.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/admin/ChildChainGaugeTokenAdder.sol\":\"ChildChainGaugeTokenAdder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x25b2a2ad63f9aa59c45f1a81a2f79733b8dcdce268cc9b1ac03866396f4b0d17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://efe9f30e6cab81587b738089165050d35533926703f4ad1da0f86452a69874ce\",\"dweb:/ipfs/QmcJoNP8NAEefchpG3qs3CwMw1qhxBJTgBMY4KY6g6qfUa\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol\":{\"keccak256\":\"0x842d0fc23e9bc0c59c2c11d042a409328533e4424578c96727d33db8092bf51a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://50a546df376e1772a1611dfa17d0e35adf29cdae502df736f65c67c4b94c0188\",\"dweb:/ipfs/QmatAq7AvGfnZQ7xDYgPUk5obubqJkJWpFoLE8LPFqccsf\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\":{\"keccak256\":\"0x3cf2370032a789025cffe8d0c613274213fd4e1ceb88cef1c2b039a6d0d08261\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1788ecb804b061fa04678ce311020d66e25b201cf18d452ea290bbc9af12e504\",\"dweb:/ipfs/Qmf84ANUiZtoZHEsbymn7NSZSGikMovYZUVqiPHwVrbBPJ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol\":{\"keccak256\":\"0x8c09c3f372e07adf790d55607401dfa60d8ec2b591f39de772efdf887d965d11\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6cbfa8f8f004ec1cc00739f51bd00763d08600e0bf827c1be4cc21a4afb26874\",\"dweb:/ipfs/QmTxDYJA8y2cJdxHfCq6NLK812WGnxFehTF9bW4n8xa1zx\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"contracts/admin/ChildChainGaugeTokenAdder.sol\":{\"keccak256\":\"0x19a4b3abfc1ea5b9f4e4fb8a882e241774d92a529cac5722186ee4a3772603fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://912a06fccfd7a53781a44eda9ac7cc4cec6d851719bc75c3a1d83fb36e9b0656\",\"dweb:/ipfs/QmVV34VePWSUFqQbGsqPJNTVTyjKoRKSHQ1TyN53wBqNpB\"]}},\"version\":1}"}},"contracts/admin/DistributionScheduler.sol":{"DistributionScheduler":{"abi":[{"inputs":[{"internalType":"contract IRewardTokenDistributor","name":"gauge","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getPendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IRewardTokenDistributor","name":"gauge","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getPendingRewardsAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IRewardTokenDistributor","name":"gauge","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getRewardNode","outputs":[{"components":[{"internalType":"uint224","name":"amount","type":"uint224"},{"internalType":"uint32","name":"nextTimestamp","type":"uint32"}],"internalType":"struct DistributionScheduler.RewardNode","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IRewardTokenDistributor","name":"gauge","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"}],"name":"scheduleDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRewardTokenDistributor","name":"gauge","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"startDistributionForToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRewardTokenDistributor","name":"gauge","type":"address"}],"name":"startDistributions","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50611551806100206000396000f3fe608060405234801561001057600080fd5b50600436106100715760003560e01c8063974e98a611610050578063974e98a6146100d4578063d85b7a61146100e7578063e2962564146100fa57610071565b806289fac3146100765780637a27db571461008b57806380723ab3146100b4575b600080fd5b610089610084366004610f66565b61010d565b005b61009e610099366004610f82565b6102c2565b6040516100ab91906114f0565b60405180910390f35b6100c76100c2366004610fba565b6102d6565b6040516100ab91906114b5565b6100896100e2366004610ffa565b610367565b6100896100f5366004610f82565b61068e565b61009e610108366004610fba565b6107d0565b60005b60088110156102be576040517f54c49fe900000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8416906354c49fe99061016e9085906004016114f0565b60206040518083038186803b15801561018657600080fd5b505afa15801561019a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101be9190610f4a565b905073ffffffffffffffffffffffffffffffffffffffff81166101e157506102be565b6040517f48e9c65e00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8516906348e9c65e906102369085906004016111f8565b60c06040518083038186803b15801561024e57600080fd5b505afa158015610262573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610286919061103f565b60200151905073ffffffffffffffffffffffffffffffffffffffff81163014156102b4576102b4848361068e565b5050600101610110565b5050565b60006102cf8383426107d0565b9392505050565b6102de610f13565b6000806102eb8686610807565b81526020808201929092526040908101600090812063ffffffff958616825283528190208151808301909252547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811682527c01000000000000000000000000000000000000000000000000000000009004909316908301525092915050565b600082116103aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611367565b60405180910390fd5b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115610400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906112d3565b63ffffffff81111561043e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906113c4565b6040517f48e9c65e00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906348e9c65e906104939087906004016111f8565b60c06040518083038186803b1580156104ab57600080fd5b505afa1580156104bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e3919061103f565b60200151905073ffffffffffffffffffffffffffffffffffffffff8116610536576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611219565b73ffffffffffffffffffffffffffffffffffffffff81163014610585576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611458565b428210156105bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906113fb565b6105c88261083a565b8214610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611276565b6301e133804283031115610640576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a19061130a565b61066273ffffffffffffffffffffffffffffffffffffffff8516333086610846565b6106876000806106728888610807565b815260200190815260200160002083856108ef565b5050505050565b600080600061069d8585610807565b815260200190815260200160002090506000806106ba8342610bfd565b6000808052602086905260409020805463ffffffff8085167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790915591935091506107439073ffffffffffffffffffffffffffffffffffffffff86169087908490610cc016565b6040517f93f7aa6700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616906393f7aa679061079790879085906004016111d2565b600060405180830381600087803b1580156107b157600080fd5b505af11580156107c5573d6000803e3d6000fd5b505050505050505050565b6000806000806107e08787610807565b8152602001908152602001600020905060006107fc8285610bfd565b979650505050505050565b6000828260405160200161081c929190611117565b60405160208183030381529060405280519060200120905092915050565b62093a80908190040290565b6108e9846323b872dd60e01b85858560405160240161086793929190611178565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610dba565b50505050565b6000808052602084905260408120547c0100000000000000000000000000000000000000000000000000000000900463ffffffff165b8063ffffffff168463ffffffff16118015610945575063ffffffff811615155b1561098b5763ffffffff8082166000908152602087905260409020549192507c010000000000000000000000000000000000000000000000000000000090910416610925565b63ffffffff8116610a555763ffffffff8083166000908152602087815260408083208054858a167c01000000000000000000000000000000000000000000000000000000008181027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff93841617909355835180850185528a83168152808601878152918752948c905292909420925183549251909516029383167fffffffff000000000000000000000000000000000000000000000000000000009190911617909116919091179055610687565b8363ffffffff168163ffffffff161415610b425763ffffffff81166000908152602086905260409020547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081168185160190811115610add576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906112d3565b63ffffffff8216600090815260208790526040902080547fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216919091179055610687565b6040805180820182527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff948516815263ffffffff92831660208083019182529684166000818152989097528288209151825491517fffffffff000000000000000000000000000000000000000000000000000000009092169087161786167c0100000000000000000000000000000000000000000000000000000000918516820217909155929091168552909320805490911692909102919091179055565b60008080526020839052604081205481907c0100000000000000000000000000000000000000000000000000000000900463ffffffff16815b8163ffffffff168510158015610c51575063ffffffff821615155b15610cb55763ffffffff9182166000908152602087905260409020547c01000000000000000000000000000000000000000000000000000000008104909216917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1601610c36565b909590945092505050565b8015801590610d7157506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e90610d1e9030908690600401611151565b60206040518083038186803b158015610d3657600080fd5b505afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e91906110c6565b15155b15610d9657610d968363095ea7b360e01b8460006040516024016108679291906111a9565b610db58363095ea7b360e01b84846040516024016108679291906111d2565b505050565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610de391906110de565b6000604051808303816000865af19150503d8060008114610e20576040519150601f19603f3d011682016040523d82523d6000602084013e610e25565b606091505b50915091506000821415610e3d573d6000803e3d6000fd5b6108e9815160001480610e5f575081806020019051810190610e5f9190610f2a565b6101a2816102be576102be81610e95817f42414c0000000000000000000000000000000000000000000000000000000000610e98565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b604080518082019091526000808252602082015290565b600060208284031215610f3b578081fd5b815180151581146102cf578182fd5b600060208284031215610f5b578081fd5b81516102cf816114f9565b600060208284031215610f77578081fd5b81356102cf816114f9565b60008060408385031215610f94578081fd5b8235610f9f816114f9565b91506020830135610faf816114f9565b809150509250929050565b600080600060608486031215610fce578081fd5b8335610fd9816114f9565b92506020840135610fe9816114f9565b929592945050506040919091013590565b6000806000806080858703121561100f578081fd5b843561101a816114f9565b9350602085013561102a816114f9565b93969395505050506040820135916060013590565b600060c08284031215611050578081fd5b60405160c0810181811067ffffffffffffffff8211171561106f578283fd5b604052825161107d816114f9565b8152602083015161108d816114f9565b8060208301525060408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b6000602082840312156110d7578081fd5b5051919050565b60008251815b818110156110fe57602081860181015185830152016110e4565b8181111561110c5782828501525b509190910192915050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60208082526024908201527f52657761726420746f6b656e20646f6573206e6f74206578697374206f6e206760408201527f6175676500000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526034908201527f446973747269627574696f6e206d75737420737461727420617420746865206260408201527f6567696e6e696e67206f6620746865207765656b000000000000000000000000606082015260800190565b60208082526016908201527f52657761726420616d6f756e74206f766572666c6f7700000000000000000000604082015260600190565b60208082526024908201527f446973747269627574696f6e20746f6f2066617220696e746f2074686520667560408201527f7475726500000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d7573742070726f76696465206e6f6e2d7a65726f206e756d626572206f662060408201527f746f6b656e730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f5265776172642074696d657374616d70206f766572666c6f7700000000000000604082015260600190565b60208082526031908201527f446973747269627574696f6e2063616e206f6e6c79206265207363686564756c60408201527f656420666f722074686520667574757265000000000000000000000000000000606082015260800190565b60208082526037908201527f446973747269627574696f6e5363686564756c6572206973206e6f742072657760408201527f61726420746f6b656e2773206469737472696275746f72000000000000000000606082015260800190565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815260209182015163ffffffff169181019190915260400190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610e9557600080fdfea2646970667358221220cb69ad3ac8f03007bd7a393b8b8b0f28aac7fb88a16b5e681864d1b30e749a8a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1551 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x71 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x974E98A6 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x974E98A6 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xD85B7A61 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0xE2962564 EQ PUSH2 0xFA JUMPI PUSH2 0x71 JUMP JUMPDEST DUP1 PUSH3 0x89FAC3 EQ PUSH2 0x76 JUMPI DUP1 PUSH4 0x7A27DB57 EQ PUSH2 0x8B JUMPI DUP1 PUSH4 0x80723AB3 EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x89 PUSH2 0x84 CALLDATASIZE PUSH1 0x4 PUSH2 0xF66 JUMP JUMPDEST PUSH2 0x10D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x9E PUSH2 0x99 CALLDATASIZE PUSH1 0x4 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAB SWAP2 SWAP1 PUSH2 0x14F0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC7 PUSH2 0xC2 CALLDATASIZE PUSH1 0x4 PUSH2 0xFBA JUMP JUMPDEST PUSH2 0x2D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAB SWAP2 SWAP1 PUSH2 0x14B5 JUMP JUMPDEST PUSH2 0x89 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0xFFA JUMP JUMPDEST PUSH2 0x367 JUMP JUMPDEST PUSH2 0x89 PUSH2 0xF5 CALLDATASIZE PUSH1 0x4 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0x68E JUMP JUMPDEST PUSH2 0x9E PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xFBA JUMP JUMPDEST PUSH2 0x7D0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x54C49FE900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x54C49FE9 SWAP1 PUSH2 0x16E SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x14F0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0xF4A JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1E1 JUMPI POP PUSH2 0x2BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x48E9C65E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x48E9C65E SWAP1 PUSH2 0x236 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x262 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x286 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ ISZERO PUSH2 0x2B4 JUMPI PUSH2 0x2B4 DUP5 DUP4 PUSH2 0x68E JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x110 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CF DUP4 DUP4 TIMESTAMP PUSH2 0x7D0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2DE PUSH2 0xF13 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2EB DUP7 DUP7 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 PUSH4 0xFFFFFFFF SWAP6 DUP7 AND DUP3 MSTORE DUP4 MSTORE DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP3 MSTORE PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV SWAP1 SWAP4 AND SWAP1 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x3AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1367 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x400 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x12D3 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 GT ISZERO PUSH2 0x43E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x13C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x48E9C65E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH4 0x48E9C65E SWAP1 PUSH2 0x493 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4E3 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x536 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1219 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ PUSH2 0x585 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1458 JUMP JUMPDEST TIMESTAMP DUP3 LT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x13FB JUMP JUMPDEST PUSH2 0x5C8 DUP3 PUSH2 0x83A JUMP JUMPDEST DUP3 EQ PUSH2 0x600 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1276 JUMP JUMPDEST PUSH4 0x1E13380 TIMESTAMP DUP4 SUB GT ISZERO PUSH2 0x640 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x662 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND CALLER ADDRESS DUP7 PUSH2 0x846 JUMP JUMPDEST PUSH2 0x687 PUSH1 0x0 DUP1 PUSH2 0x672 DUP9 DUP9 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP6 PUSH2 0x8EF JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x69D DUP6 DUP6 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x6BA DUP4 TIMESTAMP PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP6 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x743 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP8 SWAP1 DUP5 SWAP1 PUSH2 0xCC0 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x93F7AA6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH4 0x93F7AA67 SWAP1 PUSH2 0x797 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x7E0 DUP8 DUP8 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x7FC DUP3 DUP6 PUSH2 0xBFD JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x81C SWAP3 SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH2 0x8E9 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x867 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1178 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0xDBA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND JUMPDEST DUP1 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x945 JUMPI POP PUSH4 0xFFFFFFFF DUP2 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x98B JUMPI PUSH4 0xFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND PUSH2 0x925 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0xA55 JUMPI PUSH4 0xFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP6 DUP11 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP2 DUP2 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND OR SWAP1 SWAP4 SSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE DUP11 DUP4 AND DUP2 MSTORE DUP1 DUP7 ADD DUP8 DUP2 MSTORE SWAP2 DUP8 MSTORE SWAP5 DUP13 SWAP1 MSTORE SWAP3 SWAP1 SWAP5 KECCAK256 SWAP3 MLOAD DUP4 SLOAD SWAP3 MLOAD SWAP1 SWAP6 AND MUL SWAP4 DUP4 AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP2 AND OR SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x687 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0xB42 JUMPI PUSH4 0xFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP2 DUP6 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0xADD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x12D3 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x687 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE SWAP7 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE SWAP9 SWAP1 SWAP8 MSTORE DUP3 DUP9 KECCAK256 SWAP2 MLOAD DUP3 SLOAD SWAP2 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP1 DUP8 AND OR DUP7 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP2 DUP6 AND DUP3 MUL OR SWAP1 SWAP2 SSTORE SWAP3 SWAP1 SWAP2 AND DUP6 MSTORE SWAP1 SWAP4 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xC51 JUMPI POP PUSH4 0xFFFFFFFF DUP3 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xCB5 JUMPI PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP2 DIV SWAP1 SWAP3 AND SWAP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADD PUSH2 0xC36 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xD71 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0xD1E SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1151 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD6E SWAP2 SWAP1 PUSH2 0x10C6 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xD96 JUMPI PUSH2 0xD96 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x867 SWAP3 SWAP2 SWAP1 PUSH2 0x11A9 JUMP JUMPDEST PUSH2 0xDB5 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x867 SWAP3 SWAP2 SWAP1 PUSH2 0x11D2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xDE3 SWAP2 SWAP1 PUSH2 0x10DE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE20 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE25 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0xE3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x8E9 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0xE5F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xE5F SWAP2 SWAP1 PUSH2 0xF2A JUMP JUMPDEST PUSH2 0x1A2 DUP2 PUSH2 0x2BE JUMPI PUSH2 0x2BE DUP2 PUSH2 0xE95 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xE98 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF3B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2CF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF5B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2CF DUP2 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF77 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2CF DUP2 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF94 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF9F DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xFAF DUP2 PUSH2 0x14F9 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFCE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xFD9 DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFE9 DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x100F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x101A DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x102A DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1050 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x106F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x107D DUP2 PUSH2 0x14F9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x108D DUP2 PUSH2 0x14F9 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x10FE JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x10E4 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x110C JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP3 SHL AND PUSH1 0x14 DUP3 ADD MSTORE PUSH1 0x28 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x52657761726420746F6B656E20646F6573206E6F74206578697374206F6E2067 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6175676500000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E206D757374207374617274206174207468652062 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6567696E6E696E67206F6620746865207765656B000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x52657761726420616D6F756E74206F766572666C6F7700000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E20746F6F2066617220696E746F20746865206675 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7475726500000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D7573742070726F76696465206E6F6E2D7A65726F206E756D626572206F6620 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x746F6B656E730000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x5265776172642074696D657374616D70206F766572666C6F7700000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x31 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E2063616E206F6E6C79206265207363686564756C PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656420666F722074686520667574757265000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x37 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E5363686564756C6572206973206E6F7420726577 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x61726420746F6B656E2773206469737472696275746F72000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE95 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB PUSH10 0xAD3AC8F03007BD7A393B DUP12 DUP12 0xF 0x28 0xAA 0xC7 0xFB DUP9 LOG1 PUSH12 0x5E681864D1B30E749A8A6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"1205:9740:80:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100715760003560e01c8063974e98a611610050578063974e98a6146100d4578063d85b7a61146100e7578063e2962564146100fa57610071565b806289fac3146100765780637a27db571461008b57806380723ab3146100b4575b600080fd5b610089610084366004610f66565b61010d565b005b61009e610099366004610f82565b6102c2565b6040516100ab91906114f0565b60405180910390f35b6100c76100c2366004610fba565b6102d6565b6040516100ab91906114b5565b6100896100e2366004610ffa565b610367565b6100896100f5366004610f82565b61068e565b61009e610108366004610fba565b6107d0565b60005b60088110156102be576040517f54c49fe900000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8416906354c49fe99061016e9085906004016114f0565b60206040518083038186803b15801561018657600080fd5b505afa15801561019a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101be9190610f4a565b905073ffffffffffffffffffffffffffffffffffffffff81166101e157506102be565b6040517f48e9c65e00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8516906348e9c65e906102369085906004016111f8565b60c06040518083038186803b15801561024e57600080fd5b505afa158015610262573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610286919061103f565b60200151905073ffffffffffffffffffffffffffffffffffffffff81163014156102b4576102b4848361068e565b5050600101610110565b5050565b60006102cf8383426107d0565b9392505050565b6102de610f13565b6000806102eb8686610807565b81526020808201929092526040908101600090812063ffffffff958616825283528190208151808301909252547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811682527c01000000000000000000000000000000000000000000000000000000009004909316908301525092915050565b600082116103aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611367565b60405180910390fd5b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115610400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906112d3565b63ffffffff81111561043e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906113c4565b6040517f48e9c65e00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906348e9c65e906104939087906004016111f8565b60c06040518083038186803b1580156104ab57600080fd5b505afa1580156104bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e3919061103f565b60200151905073ffffffffffffffffffffffffffffffffffffffff8116610536576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611219565b73ffffffffffffffffffffffffffffffffffffffff81163014610585576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611458565b428210156105bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906113fb565b6105c88261083a565b8214610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611276565b6301e133804283031115610640576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a19061130a565b61066273ffffffffffffffffffffffffffffffffffffffff8516333086610846565b6106876000806106728888610807565b815260200190815260200160002083856108ef565b5050505050565b600080600061069d8585610807565b815260200190815260200160002090506000806106ba8342610bfd565b6000808052602086905260409020805463ffffffff8085167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790915591935091506107439073ffffffffffffffffffffffffffffffffffffffff86169087908490610cc016565b6040517f93f7aa6700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616906393f7aa679061079790879085906004016111d2565b600060405180830381600087803b1580156107b157600080fd5b505af11580156107c5573d6000803e3d6000fd5b505050505050505050565b6000806000806107e08787610807565b8152602001908152602001600020905060006107fc8285610bfd565b979650505050505050565b6000828260405160200161081c929190611117565b60405160208183030381529060405280519060200120905092915050565b62093a80908190040290565b6108e9846323b872dd60e01b85858560405160240161086793929190611178565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610dba565b50505050565b6000808052602084905260408120547c0100000000000000000000000000000000000000000000000000000000900463ffffffff165b8063ffffffff168463ffffffff16118015610945575063ffffffff811615155b1561098b5763ffffffff8082166000908152602087905260409020549192507c010000000000000000000000000000000000000000000000000000000090910416610925565b63ffffffff8116610a555763ffffffff8083166000908152602087815260408083208054858a167c01000000000000000000000000000000000000000000000000000000008181027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff93841617909355835180850185528a83168152808601878152918752948c905292909420925183549251909516029383167fffffffff000000000000000000000000000000000000000000000000000000009190911617909116919091179055610687565b8363ffffffff168163ffffffff161415610b425763ffffffff81166000908152602086905260409020547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081168185160190811115610add576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906112d3565b63ffffffff8216600090815260208790526040902080547fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216919091179055610687565b6040805180820182527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff948516815263ffffffff92831660208083019182529684166000818152989097528288209151825491517fffffffff000000000000000000000000000000000000000000000000000000009092169087161786167c0100000000000000000000000000000000000000000000000000000000918516820217909155929091168552909320805490911692909102919091179055565b60008080526020839052604081205481907c0100000000000000000000000000000000000000000000000000000000900463ffffffff16815b8163ffffffff168510158015610c51575063ffffffff821615155b15610cb55763ffffffff9182166000908152602087905260409020547c01000000000000000000000000000000000000000000000000000000008104909216917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1601610c36565b909590945092505050565b8015801590610d7157506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e90610d1e9030908690600401611151565b60206040518083038186803b158015610d3657600080fd5b505afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e91906110c6565b15155b15610d9657610d968363095ea7b360e01b8460006040516024016108679291906111a9565b610db58363095ea7b360e01b84846040516024016108679291906111d2565b505050565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610de391906110de565b6000604051808303816000865af19150503d8060008114610e20576040519150601f19603f3d011682016040523d82523d6000602084013e610e25565b606091505b50915091506000821415610e3d573d6000803e3d6000fd5b6108e9815160001480610e5f575081806020019051810190610e5f9190610f2a565b6101a2816102be576102be81610e95817f42414c0000000000000000000000000000000000000000000000000000000000610e98565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b604080518082019091526000808252602082015290565b600060208284031215610f3b578081fd5b815180151581146102cf578182fd5b600060208284031215610f5b578081fd5b81516102cf816114f9565b600060208284031215610f77578081fd5b81356102cf816114f9565b60008060408385031215610f94578081fd5b8235610f9f816114f9565b91506020830135610faf816114f9565b809150509250929050565b600080600060608486031215610fce578081fd5b8335610fd9816114f9565b92506020840135610fe9816114f9565b929592945050506040919091013590565b6000806000806080858703121561100f578081fd5b843561101a816114f9565b9350602085013561102a816114f9565b93969395505050506040820135916060013590565b600060c08284031215611050578081fd5b60405160c0810181811067ffffffffffffffff8211171561106f578283fd5b604052825161107d816114f9565b8152602083015161108d816114f9565b8060208301525060408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b6000602082840312156110d7578081fd5b5051919050565b60008251815b818110156110fe57602081860181015185830152016110e4565b8181111561110c5782828501525b509190910192915050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60208082526024908201527f52657761726420746f6b656e20646f6573206e6f74206578697374206f6e206760408201527f6175676500000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526034908201527f446973747269627574696f6e206d75737420737461727420617420746865206260408201527f6567696e6e696e67206f6620746865207765656b000000000000000000000000606082015260800190565b60208082526016908201527f52657761726420616d6f756e74206f766572666c6f7700000000000000000000604082015260600190565b60208082526024908201527f446973747269627574696f6e20746f6f2066617220696e746f2074686520667560408201527f7475726500000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d7573742070726f76696465206e6f6e2d7a65726f206e756d626572206f662060408201527f746f6b656e730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f5265776172642074696d657374616d70206f766572666c6f7700000000000000604082015260600190565b60208082526031908201527f446973747269627574696f6e2063616e206f6e6c79206265207363686564756c60408201527f656420666f722074686520667574757265000000000000000000000000000000606082015260800190565b60208082526037908201527f446973747269627574696f6e5363686564756c6572206973206e6f742072657760408201527f61726420746f6b656e2773206469737472696275746f72000000000000000000606082015260800190565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815260209182015163ffffffff169181019190915260400190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610e9557600080fdfea2646970667358221220cb69ad3ac8f03007bd7a393b8b8b0f28aac7fb88a16b5e681864d1b30e749a8a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x71 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x974E98A6 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x974E98A6 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xD85B7A61 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0xE2962564 EQ PUSH2 0xFA JUMPI PUSH2 0x71 JUMP JUMPDEST DUP1 PUSH3 0x89FAC3 EQ PUSH2 0x76 JUMPI DUP1 PUSH4 0x7A27DB57 EQ PUSH2 0x8B JUMPI DUP1 PUSH4 0x80723AB3 EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x89 PUSH2 0x84 CALLDATASIZE PUSH1 0x4 PUSH2 0xF66 JUMP JUMPDEST PUSH2 0x10D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x9E PUSH2 0x99 CALLDATASIZE PUSH1 0x4 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAB SWAP2 SWAP1 PUSH2 0x14F0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC7 PUSH2 0xC2 CALLDATASIZE PUSH1 0x4 PUSH2 0xFBA JUMP JUMPDEST PUSH2 0x2D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAB SWAP2 SWAP1 PUSH2 0x14B5 JUMP JUMPDEST PUSH2 0x89 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0xFFA JUMP JUMPDEST PUSH2 0x367 JUMP JUMPDEST PUSH2 0x89 PUSH2 0xF5 CALLDATASIZE PUSH1 0x4 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0x68E JUMP JUMPDEST PUSH2 0x9E PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xFBA JUMP JUMPDEST PUSH2 0x7D0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x54C49FE900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x54C49FE9 SWAP1 PUSH2 0x16E SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x14F0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0xF4A JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1E1 JUMPI POP PUSH2 0x2BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x48E9C65E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x48E9C65E SWAP1 PUSH2 0x236 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x262 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x286 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ ISZERO PUSH2 0x2B4 JUMPI PUSH2 0x2B4 DUP5 DUP4 PUSH2 0x68E JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x110 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CF DUP4 DUP4 TIMESTAMP PUSH2 0x7D0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2DE PUSH2 0xF13 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2EB DUP7 DUP7 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 PUSH4 0xFFFFFFFF SWAP6 DUP7 AND DUP3 MSTORE DUP4 MSTORE DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP3 MSTORE PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV SWAP1 SWAP4 AND SWAP1 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x3AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1367 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x400 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x12D3 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 GT ISZERO PUSH2 0x43E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x13C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x48E9C65E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH4 0x48E9C65E SWAP1 PUSH2 0x493 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4E3 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x536 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1219 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ PUSH2 0x585 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1458 JUMP JUMPDEST TIMESTAMP DUP3 LT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x13FB JUMP JUMPDEST PUSH2 0x5C8 DUP3 PUSH2 0x83A JUMP JUMPDEST DUP3 EQ PUSH2 0x600 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1276 JUMP JUMPDEST PUSH4 0x1E13380 TIMESTAMP DUP4 SUB GT ISZERO PUSH2 0x640 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x662 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND CALLER ADDRESS DUP7 PUSH2 0x846 JUMP JUMPDEST PUSH2 0x687 PUSH1 0x0 DUP1 PUSH2 0x672 DUP9 DUP9 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP6 PUSH2 0x8EF JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x69D DUP6 DUP6 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x6BA DUP4 TIMESTAMP PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP6 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x743 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP8 SWAP1 DUP5 SWAP1 PUSH2 0xCC0 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x93F7AA6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH4 0x93F7AA67 SWAP1 PUSH2 0x797 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x7E0 DUP8 DUP8 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x7FC DUP3 DUP6 PUSH2 0xBFD JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x81C SWAP3 SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH2 0x8E9 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x867 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1178 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0xDBA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND JUMPDEST DUP1 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x945 JUMPI POP PUSH4 0xFFFFFFFF DUP2 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x98B JUMPI PUSH4 0xFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND PUSH2 0x925 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0xA55 JUMPI PUSH4 0xFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP6 DUP11 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP2 DUP2 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND OR SWAP1 SWAP4 SSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE DUP11 DUP4 AND DUP2 MSTORE DUP1 DUP7 ADD DUP8 DUP2 MSTORE SWAP2 DUP8 MSTORE SWAP5 DUP13 SWAP1 MSTORE SWAP3 SWAP1 SWAP5 KECCAK256 SWAP3 MLOAD DUP4 SLOAD SWAP3 MLOAD SWAP1 SWAP6 AND MUL SWAP4 DUP4 AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP2 AND OR SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x687 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0xB42 JUMPI PUSH4 0xFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP2 DUP6 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0xADD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x12D3 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x687 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE SWAP7 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE SWAP9 SWAP1 SWAP8 MSTORE DUP3 DUP9 KECCAK256 SWAP2 MLOAD DUP3 SLOAD SWAP2 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP1 DUP8 AND OR DUP7 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP2 DUP6 AND DUP3 MUL OR SWAP1 SWAP2 SSTORE SWAP3 SWAP1 SWAP2 AND DUP6 MSTORE SWAP1 SWAP4 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xC51 JUMPI POP PUSH4 0xFFFFFFFF DUP3 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xCB5 JUMPI PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP2 DIV SWAP1 SWAP3 AND SWAP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADD PUSH2 0xC36 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xD71 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0xD1E SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1151 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD6E SWAP2 SWAP1 PUSH2 0x10C6 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xD96 JUMPI PUSH2 0xD96 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x867 SWAP3 SWAP2 SWAP1 PUSH2 0x11A9 JUMP JUMPDEST PUSH2 0xDB5 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x867 SWAP3 SWAP2 SWAP1 PUSH2 0x11D2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xDE3 SWAP2 SWAP1 PUSH2 0x10DE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE20 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE25 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0xE3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x8E9 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0xE5F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xE5F SWAP2 SWAP1 PUSH2 0xF2A JUMP JUMPDEST PUSH2 0x1A2 DUP2 PUSH2 0x2BE JUMPI PUSH2 0x2BE DUP2 PUSH2 0xE95 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xE98 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF3B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2CF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF5B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2CF DUP2 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF77 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2CF DUP2 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF94 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF9F DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xFAF DUP2 PUSH2 0x14F9 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFCE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xFD9 DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFE9 DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x100F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x101A DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x102A DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1050 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x106F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x107D DUP2 PUSH2 0x14F9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x108D DUP2 PUSH2 0x14F9 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x10FE JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x10E4 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x110C JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP3 SHL AND PUSH1 0x14 DUP3 ADD MSTORE PUSH1 0x28 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x52657761726420746F6B656E20646F6573206E6F74206578697374206F6E2067 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6175676500000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E206D757374207374617274206174207468652062 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6567696E6E696E67206F6620746865207765656B000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x52657761726420616D6F756E74206F766572666C6F7700000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E20746F6F2066617220696E746F20746865206675 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7475726500000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D7573742070726F76696465206E6F6E2D7A65726F206E756D626572206F6620 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x746F6B656E730000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x5265776172642074696D657374616D70206F766572666C6F7700000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x31 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E2063616E206F6E6C79206265207363686564756C PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656420666F722074686520667574757265000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x37 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E5363686564756C6572206973206E6F7420726577 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x61726420746F6B656E2773206469737472696275746F72000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE95 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB PUSH10 0xAD3AC8F03007BD7A393B DUP12 DUP12 0xF 0x28 0xAA 0xC7 0xFB DUP9 LOG1 PUSH12 0x5E681864D1B30E749A8A6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"1205:9740:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6173:531;;;;;;:::i;:::-;;:::i;:::-;;2906:176;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2362:248;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4502:1481::-;;;;;;:::i;:::-;;:::i;6991:641::-;;;;;;:::i;:::-;;:::i;3444:365::-;;;;;;:::i;:::-;;:::i;6173:531::-;6256:9;6251:447;1315:1;6271;:16;6251:447;;;6323:22;;;;;6308:12;;6323:19;;;;;;:22;;6343:1;;6323:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6308:37;-1:-1:-1;6363:18:80;;;6359:29;;6383:5;;;6359:29;6526:24;;;;;6498:25;;6526:17;;;;;;:24;;6544:5;;6526:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;;;-1:-1:-1;6580:34:80;;;6609:4;6580:34;6576:112;;;6634:39;6660:5;6667;6634:25;:39::i;:::-;-1:-1:-1;;6289:3:80;;6251:447;;;;6173:531;:::o;2906:176::-;2999:7;3025:50;3045:5;3052;3059:15;3025:19;:50::i;:::-;3018:57;2906:176;-1:-1:-1;;;2906:176:80:o;2362:248::-;2502:17;;:::i;:::-;2538:13;:46;2552:31;2570:5;2577;2552:17;:31::i;:::-;2538:46;;;;;;;;;;;;;;-1:-1:-1;2538:46:80;;;:65;;;;;;;;;;;2531:72;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2531:72:80;2362:248;-1:-1:-1;;2362:248:80:o;4502:1481::-;4686:1;4677:6;:10;4669:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;4827:17;4817:27;;;4809:62;;;;;;;;;;;;:::i;:::-;4902:16;4889:29;;;4881:67;;;;;;;;;;;;:::i;:::-;5078:24;;;;;5050:25;;5078:17;;;;;;:24;;5096:5;;5078:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;;;-1:-1:-1;5132:31:80;;;5124:80;;;;;;;;;;;;:::i;:::-;5222:34;;;5251:4;5222:34;5214:102;;;;;;;;;;;;:::i;:::-;5438:15;5425:9;:28;;5417:90;;;;;;;;;;;;:::i;:::-;5538:30;5558:9;5538:19;:30::i;:::-;5525:9;:43;5517:108;;;;;;;;;;;;:::i;:::-;5751:8;5732:15;5720:9;:27;:39;;5712:88;;;;;;;;;;;;:::i;:::-;5811:57;:22;;;5834:10;5854:4;5861:6;5811:22;:57::i;:::-;5879:97;5893:13;:46;5907:31;5925:5;5932;5907:17;:31::i;:::-;5893:46;;;;;;;;;;;5948:9;5968:6;5879:13;:97::i;:::-;4502:1481;;;;;:::o;6991:641::-;7088:49;7140:13;:46;7154:31;7172:5;7179;7154:17;:31::i;:::-;7140:46;;;;;;;;;;;7088:98;;7198:30;7230:20;7254:48;7273:11;7286:15;7254:18;:48::i;:::-;7452:18;;;;;;;;;;;:58;;:18;:58;;;;;;;;;;;;;;;;7197:105;;-1:-1:-1;7197:105:80;-1:-1:-1;7521:47:80;;:17;;;;7547:5;;7197:105;;7521:17;:47;:::i;:::-;7578;;;;;:26;;;;;;:47;;7605:5;;7612:12;;7578:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6991:641;;;;;:::o;3444:365::-;3588:7;3607:49;3659:13;:46;3673:31;3691:5;3698;3673:17;:31::i;:::-;3659:46;;;;;;;;;;;3607:98;;3719:14;3737:42;3756:11;3769:9;3737:18;:42::i;:::-;3716:63;3444:365;-1:-1:-1;;;;;;;3444:365:80:o;7665:181::-;7766:7;7819:5;7826:11;7802:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7792:47;;;;;;7785:54;;7665:181;;;;:::o;10809:134::-;10918:7;10906:19;;;;10905:31;;10809:134::o;1734:250:64:-;1872:105;1900:5;1931:27;;;1960:4;1966:2;1970:5;1908:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1872:19;:105::i;:::-;1734:250;;;;:::o;8873:1811:80:-;9156:21;9216:27;;;;;;;;;;:41;;;;:27;:41;9414:184;9439:11;9421:29;;:15;:29;;;:53;;;;-1:-1:-1;9454:20:80;;;;;9421:53;9414:184;;;9546:27;;;;;;;;;;;;;;;:41;9507:11;;-1:-1:-1;9546:41:80;;;;;9414:184;;;9612:20;;;9608:1070;;9731:27;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;9835:25;;;;;;;;;;;;;;;;;;9804:28;;;;;;;;;;;:56;;;;;;;;;;;;;9731:59;9804:56;;;;;;;;;;;;;;9608:1070;;;9896:15;9881:30;;:11;:30;;;9877:801;;;10098:24;;;10067:20;10098:24;;;;;;;;;;:31;10090:49;10098:31;;;10090:49;;;;;10161:33;;;10153:68;;;;;;;;;;;;:::i;:::-;10235:24;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;9877:801;;;10563:31;;;;;;;;;;;;;;;;;;;;;;;;;10532:28;;;-1:-1:-1;10532:28:80;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;10608:27;;;;;;;;;:59;;;;;;;;;;;;;;;8873:1811::o;8145:616::-;8290:6;8345:18;;;;;;;;;;:32;8290:6;;8345:32;;;:18;:32;8290:6;8508:205;8528:14;8515:27;;:9;:27;;:54;;;;-1:-1:-1;8546:23:80;;;;;8515:54;8508:205;;;8595:27;;;;;;;;;;;;;;;:34;8661:41;;;;;;;8595:34;;8585:44;8508:205;;;8731:14;;;;-1:-1:-1;8145:616:80;-1:-1:-1;;;8145:616:80:o;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;:15;;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;1296:90::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;1407:94::-;1001:507;;;:::o;2324:914::-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:31;995:9;990:34;;1006:18;1014:9;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;:::o;2313:257::-;;2425:2;2413:9;2404:7;2400:23;2396:32;2393:2;;;-1:-1;;2431:12;2393:2;227:6;221:13;20769:5;18438:13;18431:21;20747:5;20744:32;20734:2;;-1:-1;;20780:12;2577:293;;2707:2;2695:9;2686:7;2682:23;2678:32;2675:2;;;-1:-1;;2713:12;2675:2;547:6;541:13;559:48;601:5;559:48;:::i;2877:305::-;;3013:2;3001:9;2992:7;2988:23;2984:32;2981:2;;;-1:-1;;3019:12;2981:2;731:6;718:20;743:65;802:5;743:65;:::i;3189:460::-;;;3357:2;3345:9;3336:7;3332:23;3328:32;3325:2;;;-1:-1;;3363:12;3325:2;731:6;718:20;743:65;802:5;743:65;:::i;:::-;3415:95;-1:-1;3547:2;3601:22;;363:20;388:48;363:20;388:48;:::i;:::-;3555:78;;;;3319:330;;;;;:::o;3656:585::-;;;;3841:2;3829:9;3820:7;3816:23;3812:32;3809:2;;;-1:-1;;3847:12;3809:2;731:6;718:20;743:65;802:5;743:65;:::i;:::-;3899:95;-1:-1;4031:2;4085:22;;363:20;388:48;363:20;388:48;:::i;:::-;3803:438;;4039:78;;-1:-1;;;4154:2;4193:22;;;;2102:20;;3803:438::o;4248:711::-;;;;;4450:3;4438:9;4429:7;4425:23;4421:33;4418:2;;;-1:-1;;4457:12;4418:2;731:6;718:20;743:65;802:5;743:65;:::i;:::-;4509:95;-1:-1;4641:2;4695:22;;363:20;388:48;363:20;388:48;:::i;:::-;4412:547;;4649:78;;-1:-1;;;;4764:2;4803:22;;2102:20;;4872:2;4911:22;2102:20;;4412:547::o;4966:312::-;;5105:3;5093:9;5084:7;5080:23;5076:33;5073:2;;;-1:-1;;5112:12;5073:2;17620;17614:9;5105:3;17650:6;17646:17;17757:6;17745:10;17742:22;17721:18;17709:10;17706:34;17703:62;17700:2;;;-1:-1;;17768:12;17700:2;17620;17787:22;83:13;;101:33;83:13;101:33;:::i;:::-;1102:101;;1271:2;1336:22;;83:13;101:33;83:13;101:33;:::i;:::-;1304:60;1271:2;1290:5;1286:16;1279:86;;17620:2;1504:9;1500:22;2250:13;17620:2;1454:5;1450:16;1443:86;1590:2;1659:9;1655:22;2250:13;1590:2;1609:5;1605:16;1598:86;1752:3;1822:9;1818:22;2250:13;1752:3;1772:5;1768:16;1761:86;1912:3;1982:9;1978:22;2250:13;1912:3;1932:5;1928:16;1921:86;5164:98;;;;5067:211;;;;:::o;5285:263::-;;5400:2;5388:9;5379:7;5375:23;5371:32;5368:2;;;-1:-1;;5406:12;5368:2;-1:-1;2250:13;;5362:186;-1:-1;5362:186::o;10717:271::-;;5835:5;17908:12;-1:-1;20060:101;20074:6;20071:1;20068:13;20060:101;;;5979:4;20141:11;;;;;20135:18;20122:11;;;20115:39;20089:10;20060:101;;;20176:6;20173:1;20170:13;20167:2;;;-1:-1;20232:6;20227:3;20223:16;20216:27;20167:2;-1:-1;6010:16;;;;;10851:137;-1:-1;;10851:137::o;10995:486::-;20532:14;20536:2;20532:14;;;;;6305:86;;20532:14;;;;;11327:2;11318:12;;6305:86;11444:12;;;11186:295::o;11488:333::-;18780:42;18769:54;;;5626:37;;18769:54;;11807:2;11792:18;;5626:37;11643:2;11628:18;;11614:207::o;11828:444::-;18780:42;18769:54;;;5626:37;;18769:54;;;;12175:2;12160:18;;5626:37;12258:2;12243:18;;10561:37;;;;12011:2;11996:18;;11982:290::o;12279:345::-;18780:42;18769:54;;;;5626:37;;19224:4;19213:16;12610:2;12595:18;;6716:56;12440:2;12425:18;;12411:213::o;12631:333::-;18780:42;18769:54;;;;5626:37;;12950:2;12935:18;;10561:37;12786:2;12771:18;;12757:207::o;12971:252::-;18780:42;18769:54;;;;6124:65;;13113:2;13098:18;;13084:139::o;13600:416::-;13800:2;13814:47;;;7009:2;13785:18;;;18206:19;7045:34;18246:14;;;7025:55;7114:6;7100:12;;;7093:28;7140:12;;;13771:245::o;14023:416::-;14223:2;14237:47;;;7391:2;14208:18;;;18206:19;7427:34;18246:14;;;7407:55;7496:22;7482:12;;;7475:44;7538:12;;;14194:245::o;14446:416::-;14646:2;14660:47;;;7789:2;14631:18;;;18206:19;7825:24;18246:14;;;7805:45;7869:12;;;14617:245::o;14869:416::-;15069:2;15083:47;;;8120:2;15054:18;;;18206:19;8156:34;18246:14;;;8136:55;8225:6;8211:12;;;8204:28;8251:12;;;15040:245::o;15292:416::-;15492:2;15506:47;;;8502:2;15477:18;;;18206:19;8538:34;18246:14;;;8518:55;8607:8;8593:12;;;8586:30;8635:12;;;15463:245::o;15715:416::-;15915:2;15929:47;;;8886:2;15900:18;;;18206:19;8922:27;18246:14;;;8902:48;8969:12;;;15886:245::o;16138:416::-;16338:2;16352:47;;;9220:2;16323:18;;;18206:19;9256:34;18246:14;;;9236:55;9325:19;9311:12;;;9304:41;9364:12;;;16309:245::o;16561:416::-;16761:2;16775:47;;;9615:2;16746:18;;;18206:19;9651:34;18246:14;;;9631:55;9720:25;9706:12;;;9699:47;9765:12;;;16732:245::o;16984:338::-;10099:23;;18908:58;18897:70;10441:37;;10279:4;10268:16;;;10262:23;19130:10;19119:22;10337:14;;;10669:36;;;;17169:2;17154:18;;17140:182::o;17329:222::-;10561:37;;;17456:2;17441:18;;17427:124::o;20564:117::-;18780:42;20651:5;18769:54;20626:5;20623:35;20613:2;;20672:1;;20662:12"},"methodIdentifiers":{"getPendingRewards(address,address)":"7a27db57","getPendingRewardsAt(address,address,uint256)":"e2962564","getRewardNode(address,address,uint256)":"80723ab3","scheduleDistribution(address,address,uint256,uint256)":"974e98a6","startDistributionForToken(address,address)":"d85b7a61","startDistributions(address)":"0089fac3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IRewardTokenDistributor\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardTokenDistributor\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getPendingRewardsAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardTokenDistributor\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getRewardNode\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"nextTimestamp\",\"type\":\"uint32\"}],\"internalType\":\"struct DistributionScheduler.RewardNode\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardTokenDistributor\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"scheduleDistribution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardTokenDistributor\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"startDistributionForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardTokenDistributor\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"startDistributions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Any address may send tokens to the DistributionSchedule to be distributed among gauge depositors.\",\"kind\":\"dev\",\"methods\":{\"getPendingRewards(address,address)\":{\"params\":{\"gauge\":\"- The gauge which is to distribute the reward token.\",\"token\":\"- The token which is to be distributed among gauge depositors.\"}},\"getPendingRewardsAt(address,address,uint256)\":{\"params\":{\"gauge\":\"- The gauge which is to distribute the reward token.\",\"timestamp\":\"- The future timestamp in which to query.\",\"token\":\"- The token which is to be distributed among gauge depositors.\"}},\"getRewardNode(address,address,uint256)\":{\"params\":{\"gauge\":\"- The gauge which is to distribute the reward token.\",\"timestamp\":\"- The timestamp corresponding to the beginning of the week being queried.\",\"token\":\"- The token which is to be distributed among gauge depositors.\"},\"returns\":{\"_0\":\"- the amount of `token` which is to be distributed over the week starting at `timestamp`. - the timestamp of the next scheduled distribution of `token` to `gauge`. Zero if no distribution exists.\"}},\"scheduleDistribution(address,address,uint256,uint256)\":{\"details\":\"All distributions must start at the beginning of a week in UNIX time, i.e. Thurs 00:00 UTC. This is to prevent griefing from many low value distributions having to be processed before a meaningful distribution can be processed.\",\"params\":{\"amount\":\"- The amount of tokens which to distribute.\",\"gauge\":\"- The gauge which is to distribute the reward token.\",\"startTime\":\"- The timestamp at the beginning of the week over which to distribute tokens.\",\"token\":\"- The token which is to be distributed among gauge depositors.\"}},\"startDistributionForToken(address,address)\":{\"params\":{\"gauge\":\"- The gauge which is to distribute the reward token.\",\"token\":\"- The token which is to be distributed among gauge depositors.\"}},\"startDistributions(address)\":{\"params\":{\"gauge\":\"- The gauge which is to distribute the reward token.\"}}},\"title\":\"DistributionScheduler\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getPendingRewards(address,address)\":{\"notice\":\"Returns the amount of `token` which is ready to be distributed by `gauge` as of the current timestamp.\"},\"getPendingRewardsAt(address,address,uint256)\":{\"notice\":\"Returns the amount of `token` which is ready to be distributed by `gauge` as of a specified timestamp.\"},\"getRewardNode(address,address,uint256)\":{\"notice\":\"Returns information on the reward paid out to `gauge` in `token` over the week starting at `timestamp`\"},\"scheduleDistribution(address,address,uint256,uint256)\":{\"notice\":\"Schedule a distribution of tokens to gauge depositors over the span of 1 week.\"},\"startDistributionForToken(address,address)\":{\"notice\":\"Process all pending distributions for a given token for a gauge to start distributing tokens.\"},\"startDistributions(address)\":{\"notice\":\"Process all pending distributions for a gauge to start distributing the tokens.\"}},\"notice\":\"Scheduler for setting up permissionless distributions of liquidity gauge reward tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/admin/DistributionScheduler.sol\":\"DistributionScheduler\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/admin/DistributionScheduler.sol\":{\"keccak256\":\"0x5fcbafb21ba3e531688f1b59ef36dabfafa0d8f1766e8e06cd560994bc42e651\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://333ba30f7df151aa73e4768d0e97aeb5eb2fca427a69a721ea0a02a6e35e8ccf\",\"dweb:/ipfs/QmRc2hkTCmxQHrG2iMWzdMa2aDppaoAemtyZqVz9RNrjw9\"]}},\"version\":1}"}},"contracts/admin/GaugeAdder.sol":{"GaugeAdder":{"abi":[{"inputs":[{"internalType":"contract IGaugeController","name":"gaugeController","type":"address"},{"internalType":"contract IAuthorizerAdaptorEntrypoint","name":"authorizerAdaptorEntrypoint","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"},{"indexed":false,"internalType":"contract ILiquidityGaugeFactory","name":"gaugeFactory","type":"address"}],"name":"GaugeFactorySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"}],"name":"GaugeTypeAdded","type":"event"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"string","name":"gaugeType","type":"string"}],"name":"addGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"addGaugeType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizerAdaptorEntrypoint","outputs":[{"internalType":"contract IAuthorizerAdaptorEntrypoint","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"getFactoryForGaugeType","outputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeController","outputs":[{"internalType":"contract IGaugeController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getGaugeTypeAtIndex","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeTypes","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeTypesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"string","name":"gaugeType","type":"string"}],"name":"isGaugeFromValidFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"isValidGaugeType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"factory","type":"address"},{"internalType":"string","name":"gaugeType","type":"string"}],"name":"setGaugeFactory","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"610120604052620000126101406200027f565b60408051601f19818403018152919052805160209091012060c0523480156200003a57600080fd5b50604051620019ec380380620019ec8339810160408190526200005d9162000241565b816001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009757600080fd5b505afa158015620000ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d291906200021b565b6001600160a01b0316638d928af86040518163ffffffff1660e01b815260040160206040518083038186803b1580156200010b57600080fd5b505afa15801562000120573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014691906200021b565b30608052606090811b6001600160601b031990811660a052600160008190559184901b1660e05280546001600160a01b0319166001600160a01b038381169190911790915560408051637e062a3560e11b815290519184169163fc0c546a91600480820192602092909190829003018186803b158015620001c657600080fd5b505afa158015620001db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020191906200021b565b60601b6001600160601b0319166101005250620002ac9050565b6000602082840312156200022d578081fd5b81516200023a8162000293565b9392505050565b6000806040838503121562000254578081fd5b8251620002618162000293565b6020840151909250620002748162000293565b809150509250929050565b67457468657265756d60c01b815260080190565b6001600160a01b0381168114620002a957600080fd5b50565b60805160a05160601c60c05160e05160601c6101005160601c6116f2620002fa600039806107b25250806106765280610bff5250806106e25250806108b752508061086752506116f26000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637afcf0e61161008c57806396432aeb1161006657806396432aeb146101cb578063a0ade33e146101d3578063aaabadc5146101e6578063afcb1a86146101ee576100ea565b80637afcf0e61461019b578063851c1bb3146101a35780638d928af8146101c3576100ea565b8063231856fa116100c8578063231856fa1461014d578063572cb6a51461016057806358de9ade146101805780635bf7143414610188576100ea565b8063066edd7a146100ef57806308ceb0301461010457806316e772bc1461012d575b600080fd5b6101026100fd366004611063565b610203565b005b6101176101123660046111d3565b610404565b6040516101249190611446565b60405180910390f35b61014061013b3660046111a0565b6104cc565b6040516101249190611406565b61010261015b3660046111a0565b6104dd565b61017361016e3660046111a0565b6105f4565b604051610124919061130f565b610173610674565b610102610196366004611063565b610698565b610173610847565b6101b66101b13660046110d1565b610863565b6040516101249190611411565b6101736108b5565b6101b66108d9565b6101406101e1366004611063565b6108df565b610173610933565b6101f66109bf565b6040516101249190611388565b61020b610ab5565b8061021581610afe565b610254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316158061031757506040517fce3cc8bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063ce3cc8bd906102c59060009060040161130f565b60206040518083038186803b1580156102dd57600080fd5b505afa1580156102f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031591906110b1565b155b61034d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906115ca565b8260038360405161035e9190611265565b908152604051908190036020018120805473ffffffffffffffffffffffffffffffffffffffff939093167fffffffffffffffffffffffff0000000000000000000000000000000000000000909316929092179091556103be908390611265565b60405180910390207f46b04b7db9f5602bff429ad4ca486bf7ce9ef39d52716794e092c44d68db286783856040516103f7929190611459565b60405180910390a2505050565b60606002828154811061041357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156104bf5780601f10610494576101008083540402835291602001916104bf565b820191906000526020600020905b8154815290600101906020018083116104a257829003601f168201915b505050505090505b919050565b60006104d782610afe565b92915050565b6104e5610ab5565b6000815111610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b90611593565b61052981610afe565b15610560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114c8565b6002805460018101825560009190915281516105a3917f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01906020840190610f7d565b50806040516105b29190611265565b60405180910390207fb6691d9563ae43400fbc0d74ed71ab5fa74200ebcf1c8a2b5c9a0a67fd649be0826040516105e99190611446565b60405180910390a250565b60008161060081610afe565b610636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b6003836040516106469190611265565b9081526040519081900360200190205473ffffffffffffffffffffffffffffffffffffffff16915050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106a0610ab5565b806106aa81610afe565b6106e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b7f0000000000000000000000000000000000000000000000000000000000000000826040516020016107129190611265565b6040516020818303038152906040528051906020012014156108385760008373ffffffffffffffffffffffffffffffffffffffff166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561077657600080fd5b505afa15801561078a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ae9190611184565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b90611536565b505b6108428383610b98565b505050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610898929190611235565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60025490565b6000816108eb81610afe565b610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b61092b8484610d57565b949350505050565b600061093d6108b5565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561098257600080fd5b505afa158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba9190611184565b905090565b60606002805480602002602001604051908101604052809291908181526020016000905b82821015610aac5760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015610a985780601f10610a6d57610100808354040283529160200191610a98565b820191906000526020600020905b815481529060010190602001808311610a7b57829003601f168201915b5050505050815260200190600101906109e3565b50505050905090565b6000610ae46000357fffffffff0000000000000000000000000000000000000000000000000000000016610863565b9050610afb610af38233610e3f565b610191610edc565b50565b60008082604051602001610b129190611265565b60405160208183030381529060405280519060200120905060005b600254811015610b8e5760028181548110610b4457fe5b90600052602060002001604051602001610b5e9190611281565b60405160208183030381529060405280519060200120821415610b86576001925050506104c7565b600101610b2d565b5060009392505050565b610ba28282610d57565b610bd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b90611491565b60015460405173ffffffffffffffffffffffffffffffffffffffff90911690634036176a907f0000000000000000000000000000000000000000000000000000000000000000907f3a04f9000000000000000000000000000000000000000000000000000000000090610c5290879060029060240161135f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b9092168252610ce39291600401611330565b600060405180830381600087803b158015610cfd57600080fd5b505af1158015610d11573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108429190810190611111565b600080600383604051610d6a9190611265565b9081526040519081900360200190205473ffffffffffffffffffffffffffffffffffffffff1690508015610b8e576040517fce3cc8bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ce3cc8bd90610dea90879060040161130f565b60206040518083038186803b158015610e0257600080fd5b505afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a91906110b1565b61092b565b6000610e49610933565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610e859392919061141a565b60206040518083038186803b158015610e9d57600080fd5b505afa158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed591906110b1565b9392505050565b81610eea57610eea81610eee565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610afb917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610fbe57805160ff1916838001178555610feb565b82800160010185558215610feb579182015b82811115610feb578251825591602001919060010190610fd0565b50610ff7929150610ffb565b5090565b5b80821115610ff75760008155600101610ffc565b600082601f830112611020578081fd5b813561103361102e82611628565b611601565b915080825283602082850101111561104a57600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215611075578182fd5b82356110808161169a565b9150602083013567ffffffffffffffff81111561109b578182fd5b6110a785828601611010565b9150509250929050565b6000602082840312156110c2578081fd5b81518015158114610ed5578182fd5b6000602082840312156110e2578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ed5578182fd5b600060208284031215611122578081fd5b815167ffffffffffffffff811115611138578182fd5b8201601f81018413611148578182fd5b805161115661102e82611628565b81815285602083850101111561116a578384fd5b61117b82602083016020860161166a565b95945050505050565b600060208284031215611195578081fd5b8151610ed58161169a565b6000602082840312156111b1578081fd5b813567ffffffffffffffff8111156111c7578182fd5b61092b84828501611010565b6000602082840312156111e4578081fd5b5035919050565b6000815180845261120381602086016020860161166a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6000825161127781846020870161166a565b9190910192915050565b60008083546001808216600081146112a057600181146112d557611304565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083168652607f600284041686019350611304565b600283048786526020808720875b838110156112fc5781548a8201529085019082016112e3565b505050860193505b509195945050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff841682526040602083015261092b60408301846111eb565b73ffffffffffffffffffffffffffffffffffffffff929092168252600f0b602082015260400190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156113f9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526113e78583516111eb565b945092850192908501906001016113ad565b5092979650505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b600060208252610ed560208301846111eb565b60006040825261146c60408301856111eb565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b6020808252600d908201527f496e76616c696420676175676500000000000000000000000000000000000000604082015260600190565b60208082526018908201527f4761756765207479706520616c72656164792061646465640000000000000000604082015260600190565b60208082526012908201527f496e76616c696420676175676520747970650000000000000000000000000000604082015260600190565b60208082526027908201527f43616e6e6f742061646420676175676520666f722038302f32302042414c2d5760408201527f4554482042505400000000000000000000000000000000000000000000000000606082015260800190565b6020808252601a908201527f476175676520747970652063616e6e6f7420626520656d707479000000000000604082015260600190565b6020808252601e908201527f496e76616c696420666163746f727920696d706c656d656e746174696f6e0000604082015260600190565b60405181810167ffffffffffffffff8111828210171561162057600080fd5b604052919050565b600067ffffffffffffffff82111561163e578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b8381101561168557818101518382015260200161166d565b83811115611694576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610afb57600080fdfea2646970667358221220c54f0503aab5d52122d264a660ffdb6376d5b3b164b6972329f873d1638f005b64736f6c63430007010033","opcodes":"PUSH2 0x120 PUSH1 0x40 MSTORE PUSH3 0x12 PUSH2 0x140 PUSH3 0x27F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0xC0 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x19EC CODESIZE SUB DUP1 PUSH3 0x19EC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x5D SWAP2 PUSH3 0x241 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF851A440 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xAC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xD2 SWAP2 SWAP1 PUSH3 0x21B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8D928AF8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x120 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x146 SWAP2 SWAP1 PUSH3 0x21B JUMP JUMPDEST ADDRESS PUSH1 0x80 MSTORE PUSH1 0x60 SWAP1 DUP2 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 SSTORE SWAP2 DUP5 SWAP1 SHL AND PUSH1 0xE0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x7E062A35 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 DUP5 AND SWAP2 PUSH4 0xFC0C546A SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x201 SWAP2 SWAP1 PUSH3 0x21B JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE POP PUSH3 0x2AC SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x22D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x23A DUP2 PUSH3 0x293 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x254 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x261 DUP2 PUSH3 0x293 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x274 DUP2 PUSH3 0x293 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH8 0x457468657265756D PUSH1 0xC0 SHL DUP2 MSTORE PUSH1 0x8 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x16F2 PUSH3 0x2FA PUSH1 0x0 CODECOPY DUP1 PUSH2 0x7B2 MSTORE POP DUP1 PUSH2 0x676 MSTORE DUP1 PUSH2 0xBFF MSTORE POP DUP1 PUSH2 0x6E2 MSTORE POP DUP1 PUSH2 0x8B7 MSTORE POP DUP1 PUSH2 0x867 MSTORE POP PUSH2 0x16F2 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7AFCF0E6 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x96432AEB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x96432AEB EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0xA0ADE33E EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xAFCB1A86 EQ PUSH2 0x1EE JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x7AFCF0E6 EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1C3 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x231856FA GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x231856FA EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x572CB6A5 EQ PUSH2 0x160 JUMPI DUP1 PUSH4 0x58DE9ADE EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x5BF71434 EQ PUSH2 0x188 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x66EDD7A EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x8CEB030 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x16E772BC EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x1063 JUMP JUMPDEST PUSH2 0x203 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x117 PUSH2 0x112 CALLDATASIZE PUSH1 0x4 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x404 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1446 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x140 PUSH2 0x13B CALLDATASIZE PUSH1 0x4 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0x4CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1406 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x15B CALLDATASIZE PUSH1 0x4 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0x4DD JUMP JUMPDEST PUSH2 0x173 PUSH2 0x16E CALLDATASIZE PUSH1 0x4 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0x5F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x130F JUMP JUMPDEST PUSH2 0x173 PUSH2 0x674 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0x1063 JUMP JUMPDEST PUSH2 0x698 JUMP JUMPDEST PUSH2 0x173 PUSH2 0x847 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x1B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D1 JUMP JUMPDEST PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1411 JUMP JUMPDEST PUSH2 0x173 PUSH2 0x8B5 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x140 PUSH2 0x1E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1063 JUMP JUMPDEST PUSH2 0x8DF JUMP JUMPDEST PUSH2 0x173 PUSH2 0x933 JUMP JUMPDEST PUSH2 0x1F6 PUSH2 0x9BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1388 JUMP JUMPDEST PUSH2 0x20B PUSH2 0xAB5 JUMP JUMPDEST DUP1 PUSH2 0x215 DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x254 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO DUP1 PUSH2 0x317 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xCE3CC8BD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xCE3CC8BD SWAP1 PUSH2 0x2C5 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x130F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x315 SWAP2 SWAP1 PUSH2 0x10B1 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x34D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x15CA JUMP JUMPDEST DUP3 PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD PUSH2 0x35E SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD DUP2 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x3BE SWAP1 DUP4 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x46B04B7DB9F5602BFF429AD4CA486BF7CE9EF39D52716794E092C44D68DB2867 DUP4 DUP6 PUSH1 0x40 MLOAD PUSH2 0x3F7 SWAP3 SWAP2 SWAP1 PUSH2 0x1459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x413 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4BF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x494 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4BF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4A2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D7 DUP3 PUSH2 0xAFE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4E5 PUSH2 0xAB5 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x520 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x1593 JUMP JUMPDEST PUSH2 0x529 DUP2 PUSH2 0xAFE JUMP JUMPDEST ISZERO PUSH2 0x560 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14C8 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD PUSH2 0x5A3 SWAP2 PUSH32 0x405787FA12A823E0F2B7631CC41B3BA8828B3321CA811111FA75CD3AA3BB5ACE ADD SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xF7D JUMP JUMPDEST POP DUP1 PUSH1 0x40 MLOAD PUSH2 0x5B2 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0xB6691D9563AE43400FBC0D74ED71AB5FA74200EBCF1C8A2B5C9A0A67FD649BE0 DUP3 PUSH1 0x40 MLOAD PUSH2 0x5E9 SWAP2 SWAP1 PUSH2 0x1446 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x600 DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x636 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD PUSH2 0x646 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6A0 PUSH2 0xAB5 JUMP JUMPDEST DUP1 PUSH2 0x6AA DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x6E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x712 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO PUSH2 0x838 JUMPI PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x776 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x78A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7AE SWAP2 SWAP1 PUSH2 0x1184 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x836 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x1536 JUMP JUMPDEST POP JUMPDEST PUSH2 0x842 DUP4 DUP4 PUSH2 0xB98 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x898 SWAP3 SWAP2 SWAP1 PUSH2 0x1235 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x8EB DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x921 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH2 0x92B DUP5 DUP5 PUSH2 0xD57 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x93D PUSH2 0x8B5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x996 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9BA SWAP2 SWAP1 PUSH2 0x1184 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0xAAC JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA98 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA6D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA98 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA7B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x9E3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAE4 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x863 JUMP JUMPDEST SWAP1 POP PUSH2 0xAFB PUSH2 0xAF3 DUP3 CALLER PUSH2 0xE3F JUMP JUMPDEST PUSH2 0x191 PUSH2 0xEDC JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB12 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x2 SLOAD DUP2 LT ISZERO PUSH2 0xB8E JUMPI PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xB44 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB5E SWAP2 SWAP1 PUSH2 0x1281 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 EQ ISZERO PUSH2 0xB86 JUMPI PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x4C7 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB2D JUMP JUMPDEST POP PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xBA2 DUP3 DUP3 PUSH2 0xD57 JUMP JUMPDEST PUSH2 0xBD8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x1491 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x4036176A SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x3A04F90000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH2 0xC52 SWAP1 DUP8 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x24 ADD PUSH2 0x135F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP5 DUP6 AND OR SWAP1 MSTORE MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL SWAP1 SWAP3 AND DUP3 MSTORE PUSH2 0xCE3 SWAP3 SWAP2 PUSH1 0x4 ADD PUSH2 0x1330 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x842 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1111 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD PUSH2 0xD6A SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 ISZERO PUSH2 0xB8E JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE3CC8BD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCE3CC8BD SWAP1 PUSH2 0xDEA SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x130F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE3A SWAP2 SWAP1 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0x92B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE49 PUSH2 0x933 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE85 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x141A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xED5 SWAP2 SWAP1 PUSH2 0x10B1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xEEA JUMPI PUSH2 0xEEA DUP2 PUSH2 0xEEE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0xAFB SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xFBE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xFEB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xFEB JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xFEB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xFD0 JUMP JUMPDEST POP PUSH2 0xFF7 SWAP3 SWAP2 POP PUSH2 0xFFB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xFF7 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xFFC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1020 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1033 PUSH2 0x102E DUP3 PUSH2 0x1628 JUMP JUMPDEST PUSH2 0x1601 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x104A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1075 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1080 DUP2 PUSH2 0x169A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x109B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x10A7 DUP6 DUP3 DUP7 ADD PUSH2 0x1010 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10C2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xED5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10E2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xED5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1122 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1138 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x1148 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1156 PUSH2 0x102E DUP3 PUSH2 0x1628 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x116A JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x117B DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x166A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1195 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xED5 DUP2 PUSH2 0x169A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11B1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11C7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x92B DUP5 DUP3 DUP6 ADD PUSH2 0x1010 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E4 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1203 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x166A JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1277 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x166A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLOAD PUSH1 0x1 DUP1 DUP3 AND PUSH1 0x0 DUP2 EQ PUSH2 0x12A0 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x12D5 JUMPI PUSH2 0x1304 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP4 AND DUP7 MSTORE PUSH1 0x7F PUSH1 0x2 DUP5 DIV AND DUP7 ADD SWAP4 POP PUSH2 0x1304 JUMP JUMPDEST PUSH1 0x2 DUP4 DIV DUP8 DUP7 MSTORE PUSH1 0x20 DUP1 DUP8 KECCAK256 DUP8 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12FC JUMPI DUP2 SLOAD DUP11 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP3 ADD PUSH2 0x12E3 JUMP JUMPDEST POP POP POP DUP7 ADD SWAP4 POP JUMPDEST POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x92B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x11EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xF SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x13F9 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x13E7 DUP6 DUP4 MLOAD PUSH2 0x11EB JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AD JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xED5 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x11EB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE PUSH2 0x146C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x11EB JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676500000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x4761756765207479706520616C72656164792061646465640000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676520747970650000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742061646420676175676520666F722038302F32302042414C2D57 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4554482042505400000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520747970652063616E6E6F7420626520656D707479000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420666163746F727920696D706C656D656E746174696F6E0000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x163E JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1685 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x166D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1694 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xAFB JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC5 0x4F SDIV SUB 0xAA 0xB5 0xD5 0x21 0x22 0xD2 PUSH5 0xA660FFDB63 PUSH23 0xD5B3B164B6972329F873D1638F005B64736F6C63430007 ADD STOP CALLER ","sourceMap":"1245:5636:81:-:0;;;1591:28;;;:::i;:::-;;;;-1:-1:-1;;1591:28:81;;;;;;;;;1581:39;;1591:28;1581:39;;;;1543:77;;2026:401;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2162:15;-1:-1:-1;;;;;2162:21:81;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2162:32:81;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1054:4:51;2049:46:46;;1073:14:51::1;::::0;;;-1:-1:-1;;;;;;1073:14:51;;;::::1;::::0;2070:1:63;1030:31:51;2175:22:63;;;2212:34:81;;;;;::::1;::::0;2256:58;;-1:-1:-1;;;;;;2256:58:81::1;-1:-1:-1::0;;;;;2256:58:81;;::::1;::::0;;;::::1;::::0;;;2397:23:::1;::::0;;-1:-1:-1;;;2397:23:81;;;;2212:34;;::::1;::::0;2397:21:::1;::::0;:23:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;2212:34;2397:23;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2383:37;::::0;-1:-1:-1;;;;;;2383:37:81;::::1;::::0;-1:-1:-1;1245:5636:81;;-1:-1:-1;1245:5636:81;938:313:-1;;1078:2;1066:9;1057:7;1053:23;1049:32;1046:2;;;-1:-1;;1084:12;1046:2;325:6;319:13;337:58;389:5;337:58;:::i;:::-;1136:99;1040:211;-1:-1;;;1040:211::o;1558:517::-;;;1749:2;1737:9;1728:7;1724:23;1720:32;1717:2;;;-1:-1;;1755:12;1717:2;686:6;680:13;698:57;749:5;698:57;:::i;:::-;1942:2;2027:22;;118:13;1807:98;;-1:-1;136:68;118:13;136:68;:::i;:::-;1950:109;;;;1711:364;;;;;:::o;2733:381::-;-1:-1;;;2658:31;;2643:1;2708:11;;2922:192::o;4105:187::-;-1:-1;;;;;4039:54;;4199:70;;4189:2;;4283:1;;4273:12;4189:2;4183:109;:::o;:::-;1245:5636:81;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":2151}],"3611":[{"length":32,"start":2231}],"11960":[{"length":32,"start":1762}],"11962":[{"length":32,"start":1654},{"length":32,"start":3071}],"11964":[{"length":32,"start":1970}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637afcf0e61161008c57806396432aeb1161006657806396432aeb146101cb578063a0ade33e146101d3578063aaabadc5146101e6578063afcb1a86146101ee576100ea565b80637afcf0e61461019b578063851c1bb3146101a35780638d928af8146101c3576100ea565b8063231856fa116100c8578063231856fa1461014d578063572cb6a51461016057806358de9ade146101805780635bf7143414610188576100ea565b8063066edd7a146100ef57806308ceb0301461010457806316e772bc1461012d575b600080fd5b6101026100fd366004611063565b610203565b005b6101176101123660046111d3565b610404565b6040516101249190611446565b60405180910390f35b61014061013b3660046111a0565b6104cc565b6040516101249190611406565b61010261015b3660046111a0565b6104dd565b61017361016e3660046111a0565b6105f4565b604051610124919061130f565b610173610674565b610102610196366004611063565b610698565b610173610847565b6101b66101b13660046110d1565b610863565b6040516101249190611411565b6101736108b5565b6101b66108d9565b6101406101e1366004611063565b6108df565b610173610933565b6101f66109bf565b6040516101249190611388565b61020b610ab5565b8061021581610afe565b610254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316158061031757506040517fce3cc8bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063ce3cc8bd906102c59060009060040161130f565b60206040518083038186803b1580156102dd57600080fd5b505afa1580156102f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031591906110b1565b155b61034d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906115ca565b8260038360405161035e9190611265565b908152604051908190036020018120805473ffffffffffffffffffffffffffffffffffffffff939093167fffffffffffffffffffffffff0000000000000000000000000000000000000000909316929092179091556103be908390611265565b60405180910390207f46b04b7db9f5602bff429ad4ca486bf7ce9ef39d52716794e092c44d68db286783856040516103f7929190611459565b60405180910390a2505050565b60606002828154811061041357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156104bf5780601f10610494576101008083540402835291602001916104bf565b820191906000526020600020905b8154815290600101906020018083116104a257829003601f168201915b505050505090505b919050565b60006104d782610afe565b92915050565b6104e5610ab5565b6000815111610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b90611593565b61052981610afe565b15610560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114c8565b6002805460018101825560009190915281516105a3917f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01906020840190610f7d565b50806040516105b29190611265565b60405180910390207fb6691d9563ae43400fbc0d74ed71ab5fa74200ebcf1c8a2b5c9a0a67fd649be0826040516105e99190611446565b60405180910390a250565b60008161060081610afe565b610636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b6003836040516106469190611265565b9081526040519081900360200190205473ffffffffffffffffffffffffffffffffffffffff16915050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106a0610ab5565b806106aa81610afe565b6106e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b7f0000000000000000000000000000000000000000000000000000000000000000826040516020016107129190611265565b6040516020818303038152906040528051906020012014156108385760008373ffffffffffffffffffffffffffffffffffffffff166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561077657600080fd5b505afa15801561078a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ae9190611184565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b90611536565b505b6108428383610b98565b505050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610898929190611235565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60025490565b6000816108eb81610afe565b610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b61092b8484610d57565b949350505050565b600061093d6108b5565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561098257600080fd5b505afa158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba9190611184565b905090565b60606002805480602002602001604051908101604052809291908181526020016000905b82821015610aac5760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015610a985780601f10610a6d57610100808354040283529160200191610a98565b820191906000526020600020905b815481529060010190602001808311610a7b57829003601f168201915b5050505050815260200190600101906109e3565b50505050905090565b6000610ae46000357fffffffff0000000000000000000000000000000000000000000000000000000016610863565b9050610afb610af38233610e3f565b610191610edc565b50565b60008082604051602001610b129190611265565b60405160208183030381529060405280519060200120905060005b600254811015610b8e5760028181548110610b4457fe5b90600052602060002001604051602001610b5e9190611281565b60405160208183030381529060405280519060200120821415610b86576001925050506104c7565b600101610b2d565b5060009392505050565b610ba28282610d57565b610bd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b90611491565b60015460405173ffffffffffffffffffffffffffffffffffffffff90911690634036176a907f0000000000000000000000000000000000000000000000000000000000000000907f3a04f9000000000000000000000000000000000000000000000000000000000090610c5290879060029060240161135f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b9092168252610ce39291600401611330565b600060405180830381600087803b158015610cfd57600080fd5b505af1158015610d11573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108429190810190611111565b600080600383604051610d6a9190611265565b9081526040519081900360200190205473ffffffffffffffffffffffffffffffffffffffff1690508015610b8e576040517fce3cc8bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ce3cc8bd90610dea90879060040161130f565b60206040518083038186803b158015610e0257600080fd5b505afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a91906110b1565b61092b565b6000610e49610933565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610e859392919061141a565b60206040518083038186803b158015610e9d57600080fd5b505afa158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed591906110b1565b9392505050565b81610eea57610eea81610eee565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610afb917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610fbe57805160ff1916838001178555610feb565b82800160010185558215610feb579182015b82811115610feb578251825591602001919060010190610fd0565b50610ff7929150610ffb565b5090565b5b80821115610ff75760008155600101610ffc565b600082601f830112611020578081fd5b813561103361102e82611628565b611601565b915080825283602082850101111561104a57600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215611075578182fd5b82356110808161169a565b9150602083013567ffffffffffffffff81111561109b578182fd5b6110a785828601611010565b9150509250929050565b6000602082840312156110c2578081fd5b81518015158114610ed5578182fd5b6000602082840312156110e2578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ed5578182fd5b600060208284031215611122578081fd5b815167ffffffffffffffff811115611138578182fd5b8201601f81018413611148578182fd5b805161115661102e82611628565b81815285602083850101111561116a578384fd5b61117b82602083016020860161166a565b95945050505050565b600060208284031215611195578081fd5b8151610ed58161169a565b6000602082840312156111b1578081fd5b813567ffffffffffffffff8111156111c7578182fd5b61092b84828501611010565b6000602082840312156111e4578081fd5b5035919050565b6000815180845261120381602086016020860161166a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6000825161127781846020870161166a565b9190910192915050565b60008083546001808216600081146112a057600181146112d557611304565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083168652607f600284041686019350611304565b600283048786526020808720875b838110156112fc5781548a8201529085019082016112e3565b505050860193505b509195945050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff841682526040602083015261092b60408301846111eb565b73ffffffffffffffffffffffffffffffffffffffff929092168252600f0b602082015260400190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156113f9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526113e78583516111eb565b945092850192908501906001016113ad565b5092979650505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b600060208252610ed560208301846111eb565b60006040825261146c60408301856111eb565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b6020808252600d908201527f496e76616c696420676175676500000000000000000000000000000000000000604082015260600190565b60208082526018908201527f4761756765207479706520616c72656164792061646465640000000000000000604082015260600190565b60208082526012908201527f496e76616c696420676175676520747970650000000000000000000000000000604082015260600190565b60208082526027908201527f43616e6e6f742061646420676175676520666f722038302f32302042414c2d5760408201527f4554482042505400000000000000000000000000000000000000000000000000606082015260800190565b6020808252601a908201527f476175676520747970652063616e6e6f7420626520656d707479000000000000604082015260600190565b6020808252601e908201527f496e76616c696420666163746f727920696d706c656d656e746174696f6e0000604082015260600190565b60405181810167ffffffffffffffff8111828210171561162057600080fd5b604052919050565b600067ffffffffffffffff82111561163e578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b8381101561168557818101518382015260200161166d565b83811115611694576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610afb57600080fdfea2646970667358221220c54f0503aab5d52122d264a660ffdb6376d5b3b164b6972329f873d1638f005b64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7AFCF0E6 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x96432AEB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x96432AEB EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0xA0ADE33E EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xAFCB1A86 EQ PUSH2 0x1EE JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x7AFCF0E6 EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1C3 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x231856FA GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x231856FA EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x572CB6A5 EQ PUSH2 0x160 JUMPI DUP1 PUSH4 0x58DE9ADE EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x5BF71434 EQ PUSH2 0x188 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x66EDD7A EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x8CEB030 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x16E772BC EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x1063 JUMP JUMPDEST PUSH2 0x203 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x117 PUSH2 0x112 CALLDATASIZE PUSH1 0x4 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x404 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1446 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x140 PUSH2 0x13B CALLDATASIZE PUSH1 0x4 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0x4CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1406 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x15B CALLDATASIZE PUSH1 0x4 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0x4DD JUMP JUMPDEST PUSH2 0x173 PUSH2 0x16E CALLDATASIZE PUSH1 0x4 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0x5F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x130F JUMP JUMPDEST PUSH2 0x173 PUSH2 0x674 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0x1063 JUMP JUMPDEST PUSH2 0x698 JUMP JUMPDEST PUSH2 0x173 PUSH2 0x847 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x1B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D1 JUMP JUMPDEST PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1411 JUMP JUMPDEST PUSH2 0x173 PUSH2 0x8B5 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x140 PUSH2 0x1E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1063 JUMP JUMPDEST PUSH2 0x8DF JUMP JUMPDEST PUSH2 0x173 PUSH2 0x933 JUMP JUMPDEST PUSH2 0x1F6 PUSH2 0x9BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1388 JUMP JUMPDEST PUSH2 0x20B PUSH2 0xAB5 JUMP JUMPDEST DUP1 PUSH2 0x215 DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x254 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO DUP1 PUSH2 0x317 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xCE3CC8BD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xCE3CC8BD SWAP1 PUSH2 0x2C5 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x130F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x315 SWAP2 SWAP1 PUSH2 0x10B1 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x34D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x15CA JUMP JUMPDEST DUP3 PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD PUSH2 0x35E SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD DUP2 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x3BE SWAP1 DUP4 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x46B04B7DB9F5602BFF429AD4CA486BF7CE9EF39D52716794E092C44D68DB2867 DUP4 DUP6 PUSH1 0x40 MLOAD PUSH2 0x3F7 SWAP3 SWAP2 SWAP1 PUSH2 0x1459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x413 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4BF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x494 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4BF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4A2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D7 DUP3 PUSH2 0xAFE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4E5 PUSH2 0xAB5 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x520 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x1593 JUMP JUMPDEST PUSH2 0x529 DUP2 PUSH2 0xAFE JUMP JUMPDEST ISZERO PUSH2 0x560 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14C8 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD PUSH2 0x5A3 SWAP2 PUSH32 0x405787FA12A823E0F2B7631CC41B3BA8828B3321CA811111FA75CD3AA3BB5ACE ADD SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xF7D JUMP JUMPDEST POP DUP1 PUSH1 0x40 MLOAD PUSH2 0x5B2 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0xB6691D9563AE43400FBC0D74ED71AB5FA74200EBCF1C8A2B5C9A0A67FD649BE0 DUP3 PUSH1 0x40 MLOAD PUSH2 0x5E9 SWAP2 SWAP1 PUSH2 0x1446 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x600 DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x636 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD PUSH2 0x646 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6A0 PUSH2 0xAB5 JUMP JUMPDEST DUP1 PUSH2 0x6AA DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x6E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x712 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO PUSH2 0x838 JUMPI PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x776 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x78A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7AE SWAP2 SWAP1 PUSH2 0x1184 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x836 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x1536 JUMP JUMPDEST POP JUMPDEST PUSH2 0x842 DUP4 DUP4 PUSH2 0xB98 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x898 SWAP3 SWAP2 SWAP1 PUSH2 0x1235 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x8EB DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x921 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH2 0x92B DUP5 DUP5 PUSH2 0xD57 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x93D PUSH2 0x8B5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x996 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9BA SWAP2 SWAP1 PUSH2 0x1184 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0xAAC JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA98 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA6D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA98 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA7B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x9E3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAE4 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x863 JUMP JUMPDEST SWAP1 POP PUSH2 0xAFB PUSH2 0xAF3 DUP3 CALLER PUSH2 0xE3F JUMP JUMPDEST PUSH2 0x191 PUSH2 0xEDC JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB12 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x2 SLOAD DUP2 LT ISZERO PUSH2 0xB8E JUMPI PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xB44 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB5E SWAP2 SWAP1 PUSH2 0x1281 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 EQ ISZERO PUSH2 0xB86 JUMPI PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x4C7 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB2D JUMP JUMPDEST POP PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xBA2 DUP3 DUP3 PUSH2 0xD57 JUMP JUMPDEST PUSH2 0xBD8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x1491 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x4036176A SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x3A04F90000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH2 0xC52 SWAP1 DUP8 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x24 ADD PUSH2 0x135F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP5 DUP6 AND OR SWAP1 MSTORE MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL SWAP1 SWAP3 AND DUP3 MSTORE PUSH2 0xCE3 SWAP3 SWAP2 PUSH1 0x4 ADD PUSH2 0x1330 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x842 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1111 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD PUSH2 0xD6A SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 ISZERO PUSH2 0xB8E JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE3CC8BD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCE3CC8BD SWAP1 PUSH2 0xDEA SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x130F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE3A SWAP2 SWAP1 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0x92B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE49 PUSH2 0x933 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE85 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x141A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xED5 SWAP2 SWAP1 PUSH2 0x10B1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xEEA JUMPI PUSH2 0xEEA DUP2 PUSH2 0xEEE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0xAFB SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xFBE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xFEB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xFEB JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xFEB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xFD0 JUMP JUMPDEST POP PUSH2 0xFF7 SWAP3 SWAP2 POP PUSH2 0xFFB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xFF7 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xFFC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1020 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1033 PUSH2 0x102E DUP3 PUSH2 0x1628 JUMP JUMPDEST PUSH2 0x1601 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x104A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1075 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1080 DUP2 PUSH2 0x169A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x109B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x10A7 DUP6 DUP3 DUP7 ADD PUSH2 0x1010 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10C2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xED5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10E2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xED5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1122 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1138 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x1148 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1156 PUSH2 0x102E DUP3 PUSH2 0x1628 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x116A JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x117B DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x166A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1195 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xED5 DUP2 PUSH2 0x169A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11B1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11C7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x92B DUP5 DUP3 DUP6 ADD PUSH2 0x1010 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E4 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1203 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x166A JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1277 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x166A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLOAD PUSH1 0x1 DUP1 DUP3 AND PUSH1 0x0 DUP2 EQ PUSH2 0x12A0 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x12D5 JUMPI PUSH2 0x1304 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP4 AND DUP7 MSTORE PUSH1 0x7F PUSH1 0x2 DUP5 DIV AND DUP7 ADD SWAP4 POP PUSH2 0x1304 JUMP JUMPDEST PUSH1 0x2 DUP4 DIV DUP8 DUP7 MSTORE PUSH1 0x20 DUP1 DUP8 KECCAK256 DUP8 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12FC JUMPI DUP2 SLOAD DUP11 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP3 ADD PUSH2 0x12E3 JUMP JUMPDEST POP POP POP DUP7 ADD SWAP4 POP JUMPDEST POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x92B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x11EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xF SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x13F9 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x13E7 DUP6 DUP4 MLOAD PUSH2 0x11EB JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AD JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xED5 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x11EB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE PUSH2 0x146C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x11EB JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676500000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x4761756765207479706520616C72656164792061646465640000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676520747970650000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742061646420676175676520666F722038302F32302042414C2D57 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4554482042505400000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520747970652063616E6E6F7420626520656D707479000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420666163746F727920696D706C656D656E746174696F6E0000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x163E JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1685 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x166D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1694 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xAFB JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC5 0x4F SDIV SUB 0xAA 0xB5 0xD5 0x21 0x22 0xD2 PUSH5 0xA660FFDB63 PUSH23 0xD5B3B164B6972329F873D1638F005B64736F6C63430007 ADD STOP CALLER ","sourceMap":"1245:5636:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5034:538;;;;;;:::i;:::-;;:::i;:::-;;3110:133;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3432:141;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4201:327::-;;;;;;:::i;:::-;;:::i;3611:239::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2805:120::-;;;:::i;4566:430::-;;;;;;:::i;:::-;;:::i;2611:156::-;;;:::i;2607:430:46:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1158:79:51:-;;;:::i;3281:113:81:-;;;:::i;3888:251::-;;;;;;:::i;:::-;;:::i;1297:109:51:-;;;:::i;2963::81:-;;;:::i;:::-;;;;;;;:::i;5034:538::-;2276:21:46;:19;:21::i;:::-;5198:9:81::1;2504:28;2522:9;2504:17;:28::i;:::-;2496:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;5316:36:::2;::::0;::::2;::::0;;5315:83:::2;;-1:-1:-1::0;5359:38:81::2;::::0;;;;:26:::2;::::0;::::2;::::0;::::2;::::0;:38:::2;::::0;5394:1:::2;::::0;5359:38:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5358:39;5315:83;5294:160;;;;;;;;;;;;:::i;:::-;5496:7;5465:17;5483:9;5465:28;;;;;;:::i;:::-;::::0;;;::::2;::::0;;;;;::::2;::::0;;;:38;;::::2;::::0;;;::::2;::::0;;;::::2;::::0;;;::::2;::::0;;;5519:46:::2;::::0;5535:9;;5519:46:::2;:::i;:::-;;;;;;;;;5546:9;5557:7;5519:46;;;;;;;:::i;:::-;;;;;;;;2307:1:46::1;5034:538:81::0;;:::o;3110:133::-;3186:13;3218:11;3230:5;3218:18;;;;;;;;;;;;;;;;;;3211:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3218:18;3211:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3110:133;;;;:::o;3432:141::-;3515:4;3538:28;3556:9;3538:17;:28::i;:::-;3531:35;3432:141;-1:-1:-1;;3432:141:81:o;4201:327::-;2276:21:46;:19;:21::i;:::-;4323:1:81::1;4303:9;4297:23;:27;4289:66;;;;;;;;;;;;:::i;:::-;4374:28;4392:9;4374:17;:28::i;:::-;4373:29;4365:66;;;;;;;;;;;;:::i;:::-;4442:11;:27:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;4442:27:81;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;;4500:9;4485:36;;;;;;:::i;:::-;;;;;;;;;4511:9;4485:36;;;;;;:::i;:::-;;;;;;;;4201:327:::0;:::o;3611:239::-;3770:22;3742:9;2504:28;2522:9;2504:17;:28::i;:::-;2496:59;;;;;;;;;;;;:::i;:::-;3815:17:::1;3833:9;3815:28;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;;::::1;;::::0;-1:-1:-1;3611:239:81;;;;:::o;2805:120::-;2902:16;2805:120;:::o;4566:430::-;2276:21:46;:19;:21::i;:::-;4706:9:81::1;2504:28;2522:9;2504:17;:28::i;:::-;2496:59;;;;;;;;;;;;:::i;:::-;4777:9:::2;4762;4745:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;4735:38;;;;;;:51;4731:221;;;4802:11;4839:5;4816:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4802:54;;4886:11;4878:19;;:4;:19;;;;4870:71;;;;;;;;;;;;:::i;:::-;4731:221;;4962:27;4972:5;4979:9;4962;:27::i;:::-;2307:1:46::1;4566:430:81::0;;:::o;2611:156::-;2732:28;;;;2611:156;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;3281:113:81:-;3369:11;:18;3281:113;:::o;3888:251::-;4063:4;4035:9;2504:28;2522:9;2504:17;:28::i;:::-;2496:59;;;;;;;;;;;;:::i;:::-;4090:42:::1;4115:5;4122:9;4090:24;:42::i;:::-;4083:49:::0;3888:251;-1:-1:-1;;;;3888:251:81:o;1297:109:51:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;2963::81:-;3020:15;3054:11;3047:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2963:109;:::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;:::-;2420:181;:::o;6504:375:81:-;6579:4;6595:21;6646:9;6629:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;6619:38;;;;;;6595:62;;6672:9;6667:183;6691:11;:18;6687:22;;6667:183;;;6778:11;6790:1;6778:14;;;;;;;;;;;;;;;6761:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;6751:43;;;;;;6734:13;:60;6730:110;;;6821:4;6814:11;;;;;;6730:110;6711:3;;6667:183;;;-1:-1:-1;6867:5:81;;6504:375;-1:-1:-1;;;6504:375:81:o;6020:478::-;6105:42;6130:5;6137:9;6105:24;:42::i;:::-;6097:68;;;;;;;;;;;;:::i;:::-;6287:28;;6382:99;;6287:28;;;;;:42;;6351:16;;6405:35;;6382:99;;6442:5;;1535:1;;6382:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6287:204;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5605:293::-;5702:4;5718:35;5756:17;5774:9;5756:28;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;5801:41:81;;:90;;5853:38;;;;;:31;;;;;;:38;;5885:5;;5853:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5801:90;;1412:178:51;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1516:67;1412:178;-1:-1:-1;;;1412:178:51:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;1413:442;;1515:3;1508:4;1500:6;1496:17;1492:27;1482:2;;-1:-1;;1523:12;1482:2;1570:6;1557:20;1592:65;1607:49;1649:6;1607:49;:::i;:::-;1592:65;:::i;:::-;1583:74;;1677:6;1670:5;1663:21;1781:3;1713:4;1772:6;1705;1763:16;;1760:25;1757:2;;;1798:1;;1788:12;1757:2;26839:6;1713:4;1705:6;1701:17;1713:4;1739:5;1735:16;26816:30;26895:1;26877:16;;;1713:4;26877:16;26870:27;1739:5;1475:380;-1:-1;;1475:380::o;2000:472::-;;;2131:2;2119:9;2110:7;2106:23;2102:32;2099:2;;;-1:-1;;2137:12;2099:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2189:63;-1:-1;2317:2;2302:18;;2289:32;2341:18;2330:30;;2327:2;;;-1:-1;;2363:12;2327:2;2393:63;2448:7;2439:6;2428:9;2424:22;2393:63;:::i;:::-;2383:73;;;2093:379;;;;;:::o;2479:257::-;;2591:2;2579:9;2570:7;2566:23;2562:32;2559:2;;;-1:-1;;2597:12;2559:2;223:6;217:13;27659:5;23875:13;23868:21;27637:5;27634:32;27624:2;;-1:-1;;27670:12;2743:239;;2846:2;2834:9;2825:7;2821:23;2817:32;2814:2;;;-1:-1;;2852:12;2814:2;356:6;343:20;24052:66;27781:5;24041:78;27757:5;27754:34;27744:2;;-1:-1;;27792:12;2989:360;;3113:2;3101:9;3092:7;3088:23;3084:32;3081:2;;;-1:-1;;3119:12;3081:2;3170:17;3164:24;3208:18;3200:6;3197:30;3194:2;;;-1:-1;;3230:12;3194:2;3301:22;;518:4;506:17;;502:27;-1:-1;492:2;;-1:-1;;533:12;492:2;573:6;567:13;595:64;610:48;651:6;610:48;:::i;595:64::-;679:6;672:5;665:21;783:3;3113:2;774:6;707;765:16;;762:25;759:2;;;-1:-1;;790:12;759:2;810:39;842:6;3113:2;741:5;737:16;3113:2;707:6;703:17;810:39;:::i;:::-;3250:83;3075:274;-1:-1;;;;;3075:274::o;3356:303::-;;3491:2;3479:9;3470:7;3466:23;3462:32;3459:2;;;-1:-1;;3497:12;3459:2;967:6;961:13;979:53;1026:5;979:53;:::i;4505:347::-;;4619:2;4607:9;4598:7;4594:23;4590:32;4587:2;;;-1:-1;;4625:12;4587:2;4683:17;4670:31;4721:18;4713:6;4710:30;4707:2;;;-1:-1;;4743:12;4707:2;4773:63;4828:7;4819:6;4808:9;4804:22;4773:63;:::i;4859:241::-;;4963:2;4951:9;4942:7;4938:23;4934:32;4931:2;;;-1:-1;;4969:12;4931:2;-1:-1;1930:20;;4925:175;-1:-1;4925:175::o;7088:343::-;;7230:5;22432:12;22996:6;22991:3;22984:19;7323:52;7368:6;23033:4;23028:3;23024:14;23033:4;7349:5;7345:16;7323:52;:::i;:::-;27437:2;27417:14;27433:7;27413:28;7387:39;;;;23033:4;7387:39;;7178:253;-1:-1;;7178:253::o;12601:387::-;6725:37;;;24052:66;24041:78;12852:2;12843:12;;7020:56;12952:11;;;12743:245::o;12995:275::-;;9319:5;22432:12;9431:52;9476:6;9471:3;9464:4;9457:5;9453:16;9431:52;:::i;:::-;9495:16;;;;;13131:139;-1:-1;;13131:139::o;13277:269::-;;-1:-1;9685:5;9679:12;9719:1;;9708:9;9704:17;9732:1;9727:268;;;;10006:1;10001:425;;;;9697:729;;9727:268;9947:9;9936;9932:25;9927:3;9920:38;9805:4;9801:1;9790:9;9786:17;9782:28;9976:3;9972:16;9965:23;;9727:268;;10001:425;10070:1;10059:9;10055:17;22259:3;-1:-1;22249:14;22291:4;;-1:-1;22278:18;-1:-1;10259:130;10273:6;10270:1;10267:13;10259:130;;;10332:14;;10319:11;;;10312:35;10366:15;;;;10288:12;;10259:130;;;-1:-1;;;10403:16;;;-1:-1;9697:729;-1:-1;13531:10;;13410:136;-1:-1;;;;;13410:136::o;13553:222::-;24657:42;24646:54;;;;5529:37;;13680:2;13665:18;;13651:124::o;14027:417::-;;24657:42;23791:5;24646:54;5536:3;5529:37;14200:2;14318;14307:9;14303:18;14296:48;14358:76;14200:2;14189:9;14185:18;14420:6;14358:76;:::i;14451:329::-;24657:42;24646:54;;;;5529:37;;24562:2;24551:21;14766:2;14751:18;;8420:36;14604:2;14589:18;;14575:205::o;14787:410::-;;14984:2;;14973:9;14969:18;14984:2;15005:17;14998:47;15059:128;5830:5;22432:12;22996:6;22991:3;22984:19;23024:14;14973:9;23024:14;5842:103;;23024:14;14984:2;6002:6;5998:17;14973:9;5989:27;;5977:39;;14984:2;6097:5;22111:14;-1:-1;6136:360;6161:6;6158:1;6155:13;6136:360;;;6213:20;14973:9;6217:4;6213:20;;6208:3;6201:33;5229:66;5291:3;6268:6;6262:13;5229:66;:::i;:::-;6282:92;-1:-1;6475:14;;;;22829;;;;6183:1;6176:9;6136:360;;;-1:-1;15051:136;;14955:242;-1:-1;;;;;;;14955:242::o;15204:210::-;23875:13;;23868:21;6608:34;;15325:2;15310:18;;15296:118::o;15421:222::-;6725:37;;;15548:2;15533:18;;15519:124::o;15650:444::-;6725:37;;;24657:42;24646:54;;;15997:2;15982:18;;5529:37;24646:54;16080:2;16065:18;;5529:37;15833:2;15818:18;;15804:290::o;17494:310::-;;17641:2;17662:17;17655:47;17716:78;17641:2;17630:9;17626:18;17780:6;17716:78;:::i;17811:481::-;;18016:2;18037:17;18030:47;18091:78;18016:2;18005:9;18001:18;18155:6;18091:78;:::i;:::-;18083:86;;24657:42;23791:5;24646:54;18278:2;18267:9;18263:18;7544:85;17987:305;;;;;:::o;18299:416::-;18499:2;18513:47;;;10665:2;18484:18;;;22984:19;10701:15;23024:14;;;10681:36;10736:12;;;18470:245::o;18722:416::-;18922:2;18936:47;;;10987:2;18907:18;;;22984:19;11023:26;23024:14;;;11003:47;11069:12;;;18893:245::o;19145:416::-;19345:2;19359:47;;;11320:2;19330:18;;;22984:19;11356:20;23024:14;;;11336:41;11396:12;;;19316:245::o;19568:416::-;19768:2;19782:47;;;11647:2;19753:18;;;22984:19;11683:34;23024:14;;;11663:55;11752:9;11738:12;;;11731:31;11781:12;;;19739:245::o;19991:416::-;20191:2;20205:47;;;12032:2;20176:18;;;22984:19;12068:28;23024:14;;;12048:49;12116:12;;;20162:245::o;20414:416::-;20614:2;20628:47;;;12367:2;20599:18;;;22984:19;12403:32;23024:14;;;12383:53;12455:12;;;20585:245::o;21066:256::-;21128:2;21122:9;21154:17;;;21229:18;21214:34;;21250:22;;;21211:62;21208:2;;;21286:1;;21276:12;21208:2;21128;21295:22;21106:216;;-1:-1;21106:216::o;21329:321::-;;21472:18;21464:6;21461:30;21458:2;;;-1:-1;;21494:12;21458:2;-1:-1;21571:4;21548:17;21567:9;21544:33;21635:4;21625:15;;21395:255::o;26912:268::-;26977:1;26984:101;26998:6;26995:1;26992:13;26984:101;;;27065:11;;;27059:18;27046:11;;;27039:39;27020:2;27013:10;26984:101;;;27100:6;27097:1;27094:13;27091:2;;;26977:1;27156:6;27151:3;27147:16;27140:27;27091:2;;26961:219;;;:::o;27454:117::-;24657:42;27541:5;24646:54;27516:5;27513:35;27503:2;;27562:1;;27552:12"},"methodIdentifiers":{"addGauge(address,string)":"5bf71434","addGaugeType(string)":"231856fa","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getAuthorizerAdaptorEntrypoint()":"7afcf0e6","getFactoryForGaugeType(string)":"572cb6a5","getGaugeController()":"58de9ade","getGaugeTypeAtIndex(uint256)":"08ceb030","getGaugeTypes()":"afcb1a86","getGaugeTypesCount()":"96432aeb","getVault()":"8d928af8","isGaugeFromValidFactory(address,string)":"a0ade33e","isValidGaugeType(string)":"16e772bc","setGaugeFactory(address,string)":"066edd7a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IGaugeController\",\"name\":\"gaugeController\",\"type\":\"address\"},{\"internalType\":\"contract IAuthorizerAdaptorEntrypoint\",\"name\":\"authorizerAdaptorEntrypoint\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"gaugeFactory\",\"type\":\"address\"}],\"name\":\"GaugeFactorySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"GaugeTypeAdded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"addGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"addGaugeType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizerAdaptorEntrypoint\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptorEntrypoint\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"getFactoryForGaugeType\",\"outputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeController\",\"outputs\":[{\"internalType\":\"contract IGaugeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getGaugeTypeAtIndex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeTypes\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeTypesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"isGaugeFromValidFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"isValidGaugeType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"setGaugeFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addGauge(address,string)\":{\"details\":\"When adding gauges for L2 networks or sidechains, this must be called with the address of the *root* gauge which is deployed on Ethereum. It should *not* be called with the address of the child gauge which is deployed on the L2 / sidechain. If the gauge added is an Ethereum gauge, it cannot be a gauge for the 80BAL-20WETH pool.\"},\"addGaugeType(string)\":{\"params\":{\"gaugeType\":\"Name of the new gauge type.\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"setGaugeFactory(address,string)\":{\"details\":\"This function can either set a new factory or replace an existing one.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addGauge(address,string)\":{\"notice\":\"Adds a new gauge to the GaugeController for the given `gaugeType` type.\"},\"addGaugeType(string)\":{\"notice\":\"Adds a new `gaugeType` corresponding to a new network, which allows setting a factory and adding gauges for the type later on.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getAuthorizerAdaptorEntrypoint()\":{\"notice\":\"Returns the address of the Authorizer adaptor entrypoint contract.\"},\"getFactoryForGaugeType(string)\":{\"notice\":\"Returns the factory for gauge type `gaugeType`.\"},\"getGaugeController()\":{\"notice\":\"Returns the address of the Gauge Controller\"},\"getGaugeTypeAtIndex(uint256)\":{\"notice\":\"Returns gauge type name registered at the given index.\"},\"getGaugeTypes()\":{\"notice\":\"Returns the list of gauge types.\"},\"getGaugeTypesCount()\":{\"notice\":\"Returns the number of gauge types.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isGaugeFromValidFactory(address,string)\":{\"notice\":\"Returns true if `gauge` has been deployed by the factory for the gauge type `gaugeType`. Note that if a gauge type's factory changes then this function will start returning false for previously valid gauges.\"},\"isValidGaugeType(string)\":{\"notice\":\"Returns true if the given gauge type is valid; false otherwise.\"},\"setGaugeFactory(address,string)\":{\"notice\":\"Sets `factory` as the allowlisted factory contract for gauges with type `gaugeType`.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/admin/GaugeAdder.sol\":\"GaugeAdder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x25b2a2ad63f9aa59c45f1a81a2f79733b8dcdce268cc9b1ac03866396f4b0d17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://efe9f30e6cab81587b738089165050d35533926703f4ad1da0f86452a69874ce\",\"dweb:/ipfs/QmcJoNP8NAEefchpG3qs3CwMw1qhxBJTgBMY4KY6g6qfUa\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol\":{\"keccak256\":\"0x50d40373e50d13566dbb624ac65494f70835aa52ff553e1185df480feae6ecd8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6038ec50171ea847ca9aeeec4af6e9721bcba35223d364f832da5f269e8a722\",\"dweb:/ipfs/QmdvyixjrpFud1kAS8un3wje2xUjrY82BRL7sUHqKvLJq2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/admin/GaugeAdder.sol\":{\"keccak256\":\"0x679ab1f31aad932b35cc34617b1b97279ddb03776059dbed8d8ab5fd9eb9c2cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1592b73fe75314e502fe86c8590051454919221e5decec8b6f9045e5800e14e\",\"dweb:/ipfs/QmY4vv3Rjdc567VoU6kT6EHKvU3TQzPxHQMgBbxcQqak7q\"]}},\"version\":1}"}},"contracts/fee-distribution/FeeDistributor.sol":{"FeeDistributor":{"abi":[{"inputs":[{"internalType":"contract IVotingEscrow","name":"votingEscrow","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"OnlyCallerOptIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastCheckpointTimestamp","type":"uint256"}],"name":"TokenCheckpointed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"userTokenTimeCursor","type":"uint256"}],"name":"TokensClaimed","type":"event"},{"inputs":[],"name":"checkpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"checkpointToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"checkpointTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkpointUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"claimToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"claimTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"depositTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenLastBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getTokensDistributedInWeek","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getTotalSupplyAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getUserBalanceAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getUserTokenTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isOnlyCallerEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setOnlyCallerCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"setOnlyCallerCheckWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101206040523480156200001257600080fd5b50604051620029a1380380620029a18339810160408190526200003591620001d0565b604080518082018252600e81526d2332b2a234b9ba3934b13aba37b960911b602080830191825283518085019094526001808552603160f81b9185019182529251909120608052915190912060a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526002556001600160601b0319606083901b1660e052620000c881620001c4565b90506000620000d742620001c4565b905080821015620001055760405162461bcd60e51b8152600401620000fc9062000223565b60405180910390fd5b80821415620001b35760405163bd85b03960e01b81526000906001600160a01b0385169063bd85b039906200013f908590600401620002a0565b60206040518083038186803b1580156200015857600080fd5b505afa1580156200016d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019391906200020a565b11620001b35760405162461bcd60e51b8152600401620000fc9062000258565b5061010081905260035550620002a9565b62093a80908190040290565b60008060408385031215620001e3578182fd5b82516001600160a01b0381168114620001fa578283fd5b6020939093015192949293505050565b6000602082840312156200021c578081fd5b5051919050565b6020808252818101527f43616e6e6f74207374617274206265666f72652063757272656e74207765656b604082015260600190565b60208082526028908201527f5a65726f20746f74616c20737570706c7920726573756c747320696e206c6f736040820152677420746f6b656e7360c01b606082015260800190565b90815260200190565b60805160a05160c05160e05160601c6101005161268862000319600039806109ab5280610b0a5280610b6f5280610eec52508061033e52806108cd5280610a7a5280610c825280611453528061152752806119bc5250806118805250806118c25250806118a152506126886000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806390193b7c116100d8578063ca31879d1161008c578063e811f44b11610066578063e811f44b1461030e578063ed24911d14610321578063fcaa54ee1461032957610182565b8063ca31879d146102d5578063d3dc4ca1146102e8578063de681faf146102fb57610182565b8063a1648aa5116100bd578063a1648aa51461029a578063acbc1428146102ba578063c2c4c5c1146102cd57610182565b806390193b7c14610274578063905d10ac1461028757610182565b80634f3c50901161013a57806382aa5ad41161011457806382aa5ad414610239578063876e69a114610241578063887204671461025457610182565b80634f3c5090146102005780637b8d6221146102135780638050a7ee1461022657610182565b80632308805b1161016b5780632308805b146101ba578063338b5dea146101da5780633902b9bc146101ed57610182565b806308b0308a1461018757806314866e08146101a5575b600080fd5b61018f61033c565b60405161019c9190612309565b60405180910390f35b6101b86101b3366004611f6e565b610360565b005b6101cd6101c8366004611f6e565b61037c565b60405161019c9190612422565b6101b86101e83660046120e4565b6103ca565b6101b86101fb366004611f6e565b610416565b6101cd61020e366004612287565b610429565b6101b861022136600461214f565b61043b565b6101cd6102343660046120ac565b61051e565b6101cd610533565b6101cd61024f366004611f6e565b610539565b610267610262366004611f8a565b610577565b60405161019c91906123df565b6101cd610282366004611f6e565b61065a565b6101b861029536600461210f565b610682565b6102ad6102a8366004611f6e565b6106b7565b60405161019c9190612417565b6101cd6102c8366004611f6e565b6106e2565b6101b8610720565b6101cd6102e33660046120ac565b61073a565b6101cd6102f63660046120e4565b610782565b6101cd6103093660046120e4565b6107b7565b6101b861031c3660046121b8565b6107ec565b6101cd6107f6565b6101b8610337366004611fdd565b610805565b7f000000000000000000000000000000000000000000000000000000000000000090565b610368610876565b6103718161088d565b610379610e5d565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b6103d2610876565b6103dd826000610e64565b6103ff73ffffffffffffffffffffffffffffffffffffffff831633308461128e565b61040a826001610e64565b610412610e5d565b5050565b61041e610876565b610371816001610e64565b60009081526004602052604090205490565b610443610876565b61044d8382611331565b8260005b8181101561050e5761048486868381811061046857fe5b905060200201602081019061047d9190611f6e565b6000610e64565b6104db333086868581811061049557fe5b905060200201358989868181106104a857fe5b90506020020160208101906104bd9190611f6e565b73ffffffffffffffffffffffffffffffffffffffff1692919061128e565b6105068686838181106104ea57fe5b90506020020160208101906104ff9190611f6e565b6001610e64565b600101610451565b5050610518610e5d565b50505050565b600061052a838361133e565b90505b92915050565b60035490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526007602052604090205468010000000000000000900467ffffffffffffffff1690565b6060610581610876565b8361058b816113d6565b610593611428565b61059c8561088d565b8260608167ffffffffffffffff811180156105b657600080fd5b506040519080825280602002602001820160405280156105e0578160200160208202803683370190505b50905060005b82811015610646576105fd87878381811061046857fe5b6106278888888481811061060d57fe5b90506020020160208101906106229190611f6e565b6115d2565b82828151811061063357fe5b60209081029190910101526001016105e6565b5092505050610653610e5d565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61068a610876565b8060005b818110156106ad576106a58484838181106104ea57fe5b60010161068e565b5050610412610e5d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205468010000000000000000900467ffffffffffffffff1690565b610728610876565b610730611428565b610738610e5d565b565b6000610744610876565b8261074e816113d6565b610756611428565b61075f8461088d565b61076a836000610e64565b600061077685856115d2565b9250505061052d610e5d565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205490565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600860209081526040808320938352929052205490565b61037933826117ef565b600061080061187c565b905090565b60007fbd291ffccec065968fe20c5f8debdad73ab50837733f357eeae8814178015a9084846108338761065a565b604051602001610846949392919061242b565b60405160208183030381529060405280519060200120905061086c8482846101f8611919565b61051884846117ef565b610887600280541415610190611946565b60028055565b6040517f010ae75700000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063010ae75790610902908590600401612309565b60206040518083038186803b15801561091a57600080fd5b505afa15801561092e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610952919061229f565b90508061095f5750610379565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120805490916801000000000000000090910467ffffffffffffffff1690816109d9576109d2857f0000000000000000000000000000000000000000000000000000000000000000600087611954565b9050610a2c565b4282106109e95750505050610379565b50815470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660148185031115610a2c57610a2985838387611954565b90505b80610a35575060015b610a3d611ee5565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610ab190899086906004016123b9565b60806040518083038186803b158015610ac957600080fd5b505afa158015610add573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b019190612230565b905082610bd5577f00000000000000000000000000000000000000000000000000000000000000004211610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190612572565b60405180910390fd5b610ba07f0000000000000000000000000000000000000000000000000000000000000000610b9b8360400151611a75565b611a85565b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff821617855592505b610bdd611ee5565b60005b6032811015610dc25782604001518510158015610bfd5750868411155b15610d115760018401935082915086841115610c455760405180608001604052806000600f0b81526020016000600f0b81526020016000815260200160008152509250610d0c565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610cb9908b9088906004016123b9565b60806040518083038186803b158015610cd157600080fd5b505afa158015610ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d099190612230565b92505b610dba565b428510610d1d57610dc2565b6000826040015186039050600081846020015102600f0b8460000151600f0b13610d48576000610d59565b81846020015102846000015103600f0b5b905080158015610d6857508886115b15610d7f57610d7642611a75565b96505050610dc2565b73ffffffffffffffffffffffffffffffffffffffff8a1660009081526008602090815260408083208a84529091529020555062093a80909401935b600101610be0565b505083546fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9290920167ffffffffffffffff90811670010000000000000000000000000000000002929092177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff1668010000000000000000939092169290920217909155505050565b6001600255565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560205260408120805490916801000000000000000090910467ffffffffffffffff169081610f4857429150610eb642611a91565b83547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff919091161783557f00000000000000000000000000000000000000000000000000000000000000004211610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190612572565b610f9a565b814203905083610f9a576000610f5d83611a91565b610f6642611a91565b14905060006201518042610f7942611a75565b03109050818015610f88575080155b15610f97575050505050610412565b50505b82547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff16021783556040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8716906370a082319061102c903090600401612309565b60206040518083038186803b15801561104457600080fd5b505afa158015611058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107c919061229f565b84549091506000906110b590839070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611a9d565b9050806110c6575050505050610412565b6fffffffffffffffffffffffffffffffff821115611110576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b619061253b565b84546fffffffffffffffffffffffffffffffff808416700100000000000000000000000000000000029116178555600061114985611a91565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260066020526040812091925090815b6014811015611246578362093a80019250824210156111e4578615801561119a57508742145b156111b85760008481526020839052604090208054860190556111df565b868842038602816111c557fe5b600086815260208590526040902080549290910490910190555b611246565b861580156111f157508783145b1561120f576000848152602083905260409020805486019055611236565b8688840386028161121c57fe5b600086815260208590526040902080549290910490910190555b9196508692508291600101611174565b507f9b7f1a85a4c9b4e59e1b6527d9969c50cdfb3a1a467d0c4a51fb0ed8bf07f1308a858960405161127a9392919061250d565b60405180910390a150505050505050505050565b610518846323b872dd60e01b8585856040516024016112af9392919061232a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611aab565b6104128183146067611946565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600960209081526040808320938516835292905290812054801561138057905061052d565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260076020908152604080832054938716835260059091529020546113ce9167ffffffffffffffff9081169116611a85565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1615610379576103793373ffffffffffffffffffffffffffffffffffffffff831614610191611946565b600354600061143642611a91565b90508082118061144557504281145b15611451575050610738565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c2c4c5c16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156114b957600080fd5b505af11580156114cd573d6000803e3d6000fd5b5050505060005b60148110156115cb57818311156114ea576115cb565b6040517fbd85b03900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063bd85b0399061155c908690600401612422565b60206040518083038186803b15801561157457600080fd5b505afa158015611588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ac919061229f565b60008481526004602052604090205562093a80909201916001016114d4565b5050600355565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020526040812081611602858561133e565b60035473ffffffffffffffffffffffffffffffffffffffff8716600090815260076020526040812054929350916116829161165c91611657919068010000000000000000900467ffffffffffffffff16611b58565b611a75565b845461167d9068010000000000000000900467ffffffffffffffff16611a91565b611b58565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600660209081526040808320938b16835260089091528120929350909190805b6014811015611713578486106116d457611713565b600086815260046020908152604080832054868352818420549288905292205402816116fc57fe5b62093a8097909701960491909101906001016116bf565b5073ffffffffffffffffffffffffffffffffffffffff808a166000908152600960209081526040808320938c1683529290522085905580156117e35785546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000808304821684900382160291161786556117a573ffffffffffffffffffffffffffffffffffffffff89168a83611b64565b7fff097c7d8b1957a4ff09ef1361b5fb54dcede3941ba836d0beb9d10bec725de6898983886040516117da9493929190612383565b60405180910390a15b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016831515179055517fac9874a7a931a3f5c9f202c6d9cf40de5d21506993c9f9c38ca8265add89584c90611870908490849061235b565b60405180910390a15050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006118e9611b88565b306040516020016118fe95949392919061245e565b60405160208183030381529060405280519060200120905090565b6105188484847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85611b8c565b816104125761041281611bf0565b60008282825b6080811015611a695781831061196f57611a69565b600282840181010461197f611ee5565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906328d09d47906119f3908d9086906004016123b9565b60806040518083038186803b158015611a0b57600080fd5b505afa158015611a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a439190612230565b905088816040015111611a5857819450611a5f565b6001820393505b505060010161195a565b50909695505050505050565b600061052d62093a7f8301611a91565b80820390821002900390565b62093a80908190040290565b600061052a83836001611c1a565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051611ad491906122b7565b6000604051808303816000865af19150503d8060008114611b11576040519150601f19603f3d011682016040523d82523d6000602084013e611b16565b606091505b50915091506000821415611b2e573d6000803e3d6000fd5b610518815160001480611b50575081806020019051810190611b5091906121d4565b6101a2611946565b80820390821102900390565b611b838363a9059cbb60e01b84846040516024016112af9291906123b9565b505050565b4690565b6000611b9785611c30565b9050611bad611ba7878387611c69565b83611946565b611bbc428410156101b8611946565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152602081905260409020805460010190555050565b610379817f42414c0000000000000000000000000000000000000000000000000000000000611d71565b6000611c298484111583611946565b5050900390565b6000611c3a61187c565b82604051602001611c4c9291906122d3565b604051602081830303815290604052805190602001209050919050565b6000611c8a8473ffffffffffffffffffffffffffffffffffffffff16611dec565b15611d5f576040517f1626ba7e000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff861690631626ba7e90611ce59087908790600401612497565b60206040518083038186803b158015611cfd57600080fd5b505afa158015611d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3591906121f0565b7fffffffff0000000000000000000000000000000000000000000000000000000016149050610653565b611d6a848484611df2565b9050610653565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b3b151590565b6000611e0482516041146101b9611946565b60208281015160408085015160608601518251600080825295019283905292939092811a91600190611e3d9089908590889088906124ef565b6020604051602081039080840390855afa158015611e5f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906117e357508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161498975050505050505050565b60405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525090565b60008083601f840112611f24578182fd5b50813567ffffffffffffffff811115611f3b578182fd5b6020830191508360208083028501011115611f5557600080fd5b9250929050565b8051600f81900b811461052d57600080fd5b600060208284031215611f7f578081fd5b813561065381612622565b600080600060408486031215611f9e578182fd5b8335611fa981612622565b9250602084013567ffffffffffffffff811115611fc4578283fd5b611fd086828701611f13565b9497909650939450505050565b600080600060608486031215611ff1578283fd5b8335611ffc81612622565b925060208481013561200d81612644565b9250604085013567ffffffffffffffff80821115612029578384fd5b818701915087601f83011261203c578384fd5b81358181111561204a578485fd5b61207a847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016125cf565b9150808252888482850101111561208f578485fd5b808484018584013784848284010152508093505050509250925092565b600080604083850312156120be578182fd5b82356120c981612622565b915060208301356120d981612622565b809150509250929050565b600080604083850312156120f6578182fd5b823561210181612622565b946020939093013593505050565b60008060208385031215612121578182fd5b823567ffffffffffffffff811115612137578283fd5b61214385828601611f13565b90969095509350505050565b60008060008060408587031215612164578081fd5b843567ffffffffffffffff8082111561217b578283fd5b61218788838901611f13565b9096509450602087013591508082111561219f578283fd5b506121ac87828801611f13565b95989497509550505050565b6000602082840312156121c9578081fd5b813561065381612644565b6000602082840312156121e5578081fd5b815161065381612644565b600060208284031215612201578081fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610653578182fd5b600060808284031215612241578081fd5b61224b60806125cf565b6122558484611f5c565b81526122648460208501611f5c565b602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612298578081fd5b5035919050565b6000602082840312156122b0578081fd5b5051919050565b600082516122c98184602087016125f6565b9190910192915050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff9290921682521515602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015611a69578351835292840192918401916001016123fb565b901515815260200190565b90815260200190565b93845273ffffffffffffffffffffffffffffffffffffffff92909216602084015215156040830152606082015260800190565b94855260208501939093526040840191909152606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a00190565b60008382526040602083015282518060408401526124bc8160608501602087016125f6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b93845260ff9290921660208401526040830152606082015260800190565b73ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b6020808252601e908201527f4d6178696d756d20746f6b656e2062616c616e63652065786365656465640000604082015260600190565b60208082526024908201527f46656520646973747269627574696f6e20686173206e6f74207374617274656460408201527f2079657400000000000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff811182821017156125ee57600080fd5b604052919050565b60005b838110156126115781810151838201526020016125f9565b838111156105185750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461037957600080fd5b801515811461037957600080fdfea2646970667358221220a544860f566443e9c1fc339571e3e5d52b64dbafd0875bffd489bd4e671311c964736f6c63430007010033","opcodes":"PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x29A1 CODESIZE SUB DUP1 PUSH3 0x29A1 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x1D0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x2332B2A234B9BA3934B13ABA37B9 PUSH1 0x91 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x1 DUP1 DUP6 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP2 DUP6 ADD SWAP2 DUP3 MSTORE SWAP3 MLOAD SWAP1 SWAP2 KECCAK256 PUSH1 0x80 MSTORE SWAP2 MLOAD SWAP1 SWAP2 KECCAK256 PUSH1 0xA0 MSTORE PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH3 0xC8 DUP2 PUSH3 0x1C4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xD7 TIMESTAMP PUSH3 0x1C4 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH3 0x105 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xFC SWAP1 PUSH3 0x223 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 EQ ISZERO PUSH3 0x1B3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xBD85B039 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBD85B039 SWAP1 PUSH3 0x13F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH3 0x2A0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x158 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x16D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x193 SWAP2 SWAP1 PUSH3 0x20A JUMP JUMPDEST GT PUSH3 0x1B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xFC SWAP1 PUSH3 0x258 JUMP JUMPDEST POP PUSH2 0x100 DUP2 SWAP1 MSTORE PUSH1 0x3 SSTORE POP PUSH3 0x2A9 JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1E3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1FA JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x21C JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x43616E6E6F74207374617274206265666F72652063757272656E74207765656B PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x5A65726F20746F74616C20737570706C7920726573756C747320696E206C6F73 PUSH1 0x40 DUP3 ADD MSTORE PUSH8 0x7420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH2 0x2688 PUSH3 0x319 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x9AB MSTORE DUP1 PUSH2 0xB0A MSTORE DUP1 PUSH2 0xB6F MSTORE DUP1 PUSH2 0xEEC MSTORE POP DUP1 PUSH2 0x33E MSTORE DUP1 PUSH2 0x8CD MSTORE DUP1 PUSH2 0xA7A MSTORE DUP1 PUSH2 0xC82 MSTORE DUP1 PUSH2 0x1453 MSTORE DUP1 PUSH2 0x1527 MSTORE DUP1 PUSH2 0x19BC MSTORE POP DUP1 PUSH2 0x1880 MSTORE POP DUP1 PUSH2 0x18C2 MSTORE POP DUP1 PUSH2 0x18A1 MSTORE POP PUSH2 0x2688 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x182 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90193B7C GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xCA31879D GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE811F44B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xE811F44B EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0xFCAA54EE EQ PUSH2 0x329 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0xCA31879D EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0xD3DC4CA1 EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0xDE681FAF EQ PUSH2 0x2FB JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0xA1648AA5 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xA1648AA5 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xACBC1428 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x2CD JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x90193B7C EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0x905D10AC EQ PUSH2 0x287 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x4F3C5090 GT PUSH2 0x13A JUMPI DUP1 PUSH4 0x82AA5AD4 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x82AA5AD4 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x876E69A1 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x88720467 EQ PUSH2 0x254 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x4F3C5090 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x7B8D6221 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x8050A7EE EQ PUSH2 0x226 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x2308805B GT PUSH2 0x16B JUMPI DUP1 PUSH4 0x2308805B EQ PUSH2 0x1BA JUMPI DUP1 PUSH4 0x338B5DEA EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x3902B9BC EQ PUSH2 0x1ED JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x14866E08 EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18F PUSH2 0x33C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2309 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B8 PUSH2 0x1B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CD PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x37C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2422 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x1E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x20E4 JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x1FB CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x416 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x20E CALLDATASIZE PUSH1 0x4 PUSH2 0x2287 JUMP JUMPDEST PUSH2 0x429 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x221 CALLDATASIZE PUSH1 0x4 PUSH2 0x214F JUMP JUMPDEST PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x234 CALLDATASIZE PUSH1 0x4 PUSH2 0x20AC JUMP JUMPDEST PUSH2 0x51E JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x533 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x24F CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x539 JUMP JUMPDEST PUSH2 0x267 PUSH2 0x262 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F8A JUMP JUMPDEST PUSH2 0x577 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x282 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x65A JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x295 CALLDATASIZE PUSH1 0x4 PUSH2 0x210F JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST PUSH2 0x2AD PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x6B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2417 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x2C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x6E2 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x720 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x2E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x20AC JUMP JUMPDEST PUSH2 0x73A JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x2F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x20E4 JUMP JUMPDEST PUSH2 0x782 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x309 CALLDATASIZE PUSH1 0x4 PUSH2 0x20E4 JUMP JUMPDEST PUSH2 0x7B7 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x31C CALLDATASIZE PUSH1 0x4 PUSH2 0x21B8 JUMP JUMPDEST PUSH2 0x7EC JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x7F6 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x337 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FDD JUMP JUMPDEST PUSH2 0x805 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x368 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x371 DUP2 PUSH2 0x88D JUMP JUMPDEST PUSH2 0x379 PUSH2 0xE5D JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3D2 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x3DD DUP3 PUSH1 0x0 PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x3FF PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x128E JUMP JUMPDEST PUSH2 0x40A DUP3 PUSH1 0x1 PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x412 PUSH2 0xE5D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x41E PUSH2 0x876 JUMP JUMPDEST PUSH2 0x371 DUP2 PUSH1 0x1 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x443 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x44D DUP4 DUP3 PUSH2 0x1331 JUMP JUMPDEST DUP3 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x50E JUMPI PUSH2 0x484 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x468 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x47D SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x4DB CALLER ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x495 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP10 DUP10 DUP7 DUP2 DUP2 LT PUSH2 0x4A8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4BD SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP2 SWAP1 PUSH2 0x128E JUMP JUMPDEST PUSH2 0x506 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x4EA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4FF SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x1 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x451 JUMP JUMPDEST POP POP PUSH2 0x518 PUSH2 0xE5D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52A DUP4 DUP4 PUSH2 0x133E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x581 PUSH2 0x876 JUMP JUMPDEST DUP4 PUSH2 0x58B DUP2 PUSH2 0x13D6 JUMP JUMPDEST PUSH2 0x593 PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x59C DUP6 PUSH2 0x88D JUMP JUMPDEST DUP3 PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x5E0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x646 JUMPI PUSH2 0x5FD DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x468 JUMPI INVALID JUMPDEST PUSH2 0x627 DUP9 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x60D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x622 SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x15D2 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x633 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x5E6 JUMP JUMPDEST POP SWAP3 POP POP POP PUSH2 0x653 PUSH2 0xE5D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x68A PUSH2 0x876 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6AD JUMPI PUSH2 0x6A5 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x4EA JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x68E JUMP JUMPDEST POP POP PUSH2 0x412 PUSH2 0xE5D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x728 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x730 PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x738 PUSH2 0xE5D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x744 PUSH2 0x876 JUMP JUMPDEST DUP3 PUSH2 0x74E DUP2 PUSH2 0x13D6 JUMP JUMPDEST PUSH2 0x756 PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x75F DUP5 PUSH2 0x88D JUMP JUMPDEST PUSH2 0x76A DUP4 PUSH1 0x0 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x776 DUP6 DUP6 PUSH2 0x15D2 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x52D PUSH2 0xE5D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x379 CALLER DUP3 PUSH2 0x17EF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x800 PUSH2 0x187C JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xBD291FFCCEC065968FE20C5F8DEBDAD73AB50837733F357EEAE8814178015A90 DUP5 DUP5 PUSH2 0x833 DUP8 PUSH2 0x65A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x846 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x242B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x86C DUP5 DUP3 DUP5 PUSH2 0x1F8 PUSH2 0x1919 JUMP JUMPDEST PUSH2 0x518 DUP5 DUP5 PUSH2 0x17EF JUMP JUMPDEST PUSH2 0x887 PUSH1 0x2 DUP1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1946 JUMP JUMPDEST PUSH1 0x2 DUP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x10AE75700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x10AE757 SWAP1 PUSH2 0x902 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2309 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x91A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x92E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x952 SWAP2 SWAP1 PUSH2 0x229F JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x95F JUMPI POP PUSH2 0x379 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0x9D9 JUMPI PUSH2 0x9D2 DUP6 PUSH32 0x0 PUSH1 0x0 DUP8 PUSH2 0x1954 JUMP JUMPDEST SWAP1 POP PUSH2 0xA2C JUMP JUMPDEST TIMESTAMP DUP3 LT PUSH2 0x9E9 JUMPI POP POP POP POP PUSH2 0x379 JUMP JUMPDEST POP DUP2 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 DUP2 DUP6 SUB GT ISZERO PUSH2 0xA2C JUMPI PUSH2 0xA29 DUP6 DUP4 DUP4 DUP8 PUSH2 0x1954 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH2 0xA35 JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0xA3D PUSH2 0x1EE5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xAB1 SWAP1 DUP10 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x23B9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xADD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB01 SWAP2 SWAP1 PUSH2 0x2230 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0xBD5 JUMPI PUSH32 0x0 TIMESTAMP GT PUSH2 0xB6A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB61 SWAP1 PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBA0 PUSH32 0x0 PUSH2 0xB9B DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x1A75 JUMP JUMPDEST PUSH2 0x1A85 JUMP JUMPDEST DUP5 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND OR DUP6 SSTORE SWAP3 POP JUMPDEST PUSH2 0xBDD PUSH2 0x1EE5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x32 DUP2 LT ISZERO PUSH2 0xDC2 JUMPI DUP3 PUSH1 0x40 ADD MLOAD DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xBFD JUMPI POP DUP7 DUP5 GT ISZERO JUMPDEST ISZERO PUSH2 0xD11 JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP DUP3 SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0xC45 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP PUSH2 0xD0C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xCB9 SWAP1 DUP12 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x23B9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCE5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD09 SWAP2 SWAP1 PUSH2 0x2230 JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH2 0xDBA JUMP JUMPDEST TIMESTAMP DUP6 LT PUSH2 0xD1D JUMPI PUSH2 0xDC2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 ADD MLOAD DUP7 SUB SWAP1 POP PUSH1 0x0 DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL PUSH1 0xF SIGNEXTEND DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xF SIGNEXTEND SGT PUSH2 0xD48 JUMPI PUSH1 0x0 PUSH2 0xD59 JUMP JUMPDEST DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL DUP5 PUSH1 0x0 ADD MLOAD SUB PUSH1 0xF SIGNEXTEND JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0xD68 JUMPI POP DUP9 DUP7 GT JUMPDEST ISZERO PUSH2 0xD7F JUMPI PUSH2 0xD76 TIMESTAMP PUSH2 0x1A75 JUMP JUMPDEST SWAP7 POP POP POP PUSH2 0xDC2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE POP PUSH3 0x93A80 SWAP1 SWAP5 ADD SWAP4 JUMPDEST PUSH1 0x1 ADD PUSH2 0xBE0 JUMP JUMPDEST POP POP DUP4 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 ADD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP3 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SWAP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0xF48 JUMPI TIMESTAMP SWAP2 POP PUSH2 0xEB6 TIMESTAMP PUSH2 0x1A91 JUMP JUMPDEST DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR DUP4 SSTORE PUSH32 0x0 TIMESTAMP GT PUSH2 0xF43 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB61 SWAP1 PUSH2 0x2572 JUMP JUMPDEST PUSH2 0xF9A JUMP JUMPDEST DUP2 TIMESTAMP SUB SWAP1 POP DUP4 PUSH2 0xF9A JUMPI PUSH1 0x0 PUSH2 0xF5D DUP4 PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0xF66 TIMESTAMP PUSH2 0x1A91 JUMP JUMPDEST EQ SWAP1 POP PUSH1 0x0 PUSH3 0x15180 TIMESTAMP PUSH2 0xF79 TIMESTAMP PUSH2 0x1A75 JUMP JUMPDEST SUB LT SWAP1 POP DUP2 DUP1 ISZERO PUSH2 0xF88 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xF97 JUMPI POP POP POP POP POP PUSH2 0x412 JUMP JUMPDEST POP POP JUMPDEST DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 TIMESTAMP PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x102C SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2309 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1058 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x107C SWAP2 SWAP1 PUSH2 0x229F JUMP JUMPDEST DUP5 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x10B5 SWAP1 DUP4 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1A9D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x10C6 JUMPI POP POP POP POP POP PUSH2 0x412 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB61 SWAP1 PUSH2 0x253B JUMP JUMPDEST DUP5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP2 AND OR DUP6 SSTORE PUSH1 0x0 PUSH2 0x1149 DUP6 PUSH2 0x1A91 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP3 POP SWAP1 DUP2 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x1246 JUMPI DUP4 PUSH3 0x93A80 ADD SWAP3 POP DUP3 TIMESTAMP LT ISZERO PUSH2 0x11E4 JUMPI DUP7 ISZERO DUP1 ISZERO PUSH2 0x119A JUMPI POP DUP8 TIMESTAMP EQ JUMPDEST ISZERO PUSH2 0x11B8 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x11DF JUMP JUMPDEST DUP7 DUP9 TIMESTAMP SUB DUP7 MUL DUP2 PUSH2 0x11C5 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH2 0x1246 JUMP JUMPDEST DUP7 ISZERO DUP1 ISZERO PUSH2 0x11F1 JUMPI POP DUP8 DUP4 EQ JUMPDEST ISZERO PUSH2 0x120F JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x1236 JUMP JUMPDEST DUP7 DUP9 DUP5 SUB DUP7 MUL DUP2 PUSH2 0x121C JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST SWAP2 SWAP7 POP DUP7 SWAP3 POP DUP3 SWAP2 PUSH1 0x1 ADD PUSH2 0x1174 JUMP JUMPDEST POP PUSH32 0x9B7F1A85A4C9B4E59E1B6527D9969C50CDFB3A1A467D0C4A51FB0ED8BF07F130 DUP11 DUP6 DUP10 PUSH1 0x40 MLOAD PUSH2 0x127A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x250D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x518 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x12AF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1AAB JUMP JUMPDEST PUSH2 0x412 DUP2 DUP4 EQ PUSH1 0x67 PUSH2 0x1946 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1380 JUMPI SWAP1 POP PUSH2 0x52D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP8 AND DUP4 MSTORE PUSH1 0x5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x13CE SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND PUSH2 0x1A85 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x379 JUMPI PUSH2 0x379 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EQ PUSH2 0x191 PUSH2 0x1946 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 PUSH2 0x1436 TIMESTAMP PUSH2 0x1A91 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT DUP1 PUSH2 0x1445 JUMPI POP TIMESTAMP DUP2 EQ JUMPDEST ISZERO PUSH2 0x1451 JUMPI POP POP PUSH2 0x738 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC2C4C5C1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x15CB JUMPI DUP2 DUP4 GT ISZERO PUSH2 0x14EA JUMPI PUSH2 0x15CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xBD85B039 SWAP1 PUSH2 0x155C SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2422 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1588 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15AC SWAP2 SWAP1 PUSH2 0x229F JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH3 0x93A80 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x14D4 JUMP JUMPDEST POP POP PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 PUSH2 0x1602 DUP6 DUP6 PUSH2 0x133E JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP2 PUSH2 0x1682 SWAP2 PUSH2 0x165C SWAP2 PUSH2 0x1657 SWAP2 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1B58 JUMP JUMPDEST PUSH2 0x1A75 JUMP JUMPDEST DUP5 SLOAD PUSH2 0x167D SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0x1B58 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SWAP3 SWAP4 POP SWAP1 SWAP2 SWAP1 DUP1 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x1713 JUMPI DUP5 DUP7 LT PUSH2 0x16D4 JUMPI PUSH2 0x1713 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP7 DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD SWAP3 DUP9 SWAP1 MSTORE SWAP3 KECCAK256 SLOAD MUL DUP2 PUSH2 0x16FC JUMPI INVALID JUMPDEST PUSH3 0x93A80 SWAP8 SWAP1 SWAP8 ADD SWAP7 DIV SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x16BF JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP6 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x17E3 JUMPI DUP6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP5 SWAP1 SUB DUP3 AND MUL SWAP2 AND OR DUP7 SSTORE PUSH2 0x17A5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND DUP11 DUP4 PUSH2 0x1B64 JUMP JUMPDEST PUSH32 0xFF097C7D8B1957A4FF09EF1361B5FB54DCEDE3941BA836D0BEB9D10BEC725DE6 DUP10 DUP10 DUP4 DUP9 PUSH1 0x40 MLOAD PUSH2 0x17DA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2383 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0xAC9874A7A931A3F5C9F202C6D9CF40DE5D21506993C9F9C38CA8265ADD89584C SWAP1 PUSH2 0x1870 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x235B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x18E9 PUSH2 0x1B88 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x18FE SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x245E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x518 DUP5 DUP5 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 PUSH2 0x1B8C JUMP JUMPDEST DUP2 PUSH2 0x412 JUMPI PUSH2 0x412 DUP2 PUSH2 0x1BF0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP3 JUMPDEST PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1A69 JUMPI DUP2 DUP4 LT PUSH2 0x196F JUMPI PUSH2 0x1A69 JUMP JUMPDEST PUSH1 0x2 DUP3 DUP5 ADD DUP2 ADD DIV PUSH2 0x197F PUSH2 0x1EE5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0x19F3 SWAP1 DUP14 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x23B9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A1F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A43 SWAP2 SWAP1 PUSH2 0x2230 JUMP JUMPDEST SWAP1 POP DUP9 DUP2 PUSH1 0x40 ADD MLOAD GT PUSH2 0x1A58 JUMPI DUP2 SWAP5 POP PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x195A JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52D PUSH3 0x93A7F DUP4 ADD PUSH2 0x1A91 JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 LT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52A DUP4 DUP4 PUSH1 0x1 PUSH2 0x1C1A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1AD4 SWAP2 SWAP1 PUSH2 0x22B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1B11 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1B2E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x518 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1B50 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1B50 SWAP2 SWAP1 PUSH2 0x21D4 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1946 JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x1B83 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x12AF SWAP3 SWAP2 SWAP1 PUSH2 0x23B9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B97 DUP6 PUSH2 0x1C30 JUMP JUMPDEST SWAP1 POP PUSH2 0x1BAD PUSH2 0x1BA7 DUP8 DUP4 DUP8 PUSH2 0x1C69 JUMP JUMPDEST DUP4 PUSH2 0x1946 JUMP JUMPDEST PUSH2 0x1BBC TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x1946 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x379 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1D71 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C29 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x1946 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C3A PUSH2 0x187C JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1C4C SWAP3 SWAP2 SWAP1 PUSH2 0x22D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C8A DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1DEC JUMP JUMPDEST ISZERO PUSH2 0x1D5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP1 DUP3 MSTORE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH4 0x1626BA7E SWAP1 PUSH2 0x1CE5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2497 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D35 SWAP2 SWAP1 PUSH2 0x21F0 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ SWAP1 POP PUSH2 0x653 JUMP JUMPDEST PUSH2 0x1D6A DUP5 DUP5 DUP5 PUSH2 0x1DF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x653 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E04 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x1946 JUMP JUMPDEST PUSH1 0x20 DUP3 DUP2 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD DUP3 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP6 ADD SWAP3 DUP4 SWAP1 MSTORE SWAP3 SWAP4 SWAP1 SWAP3 DUP2 BYTE SWAP2 PUSH1 0x1 SWAP1 PUSH2 0x1E3D SWAP1 DUP10 SWAP1 DUP6 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x24EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E5F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x17E3 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1F24 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F3B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1F55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F7F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x653 DUP2 PUSH2 0x2622 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F9E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1FA9 DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1FC4 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1FD0 DUP7 DUP3 DUP8 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1FF1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1FFC DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 DUP2 ADD CALLDATALOAD PUSH2 0x200D DUP2 PUSH2 0x2644 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2029 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x203C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x204A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x207A DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x25CF JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP9 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x208F JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY DUP5 DUP5 DUP3 DUP5 ADD ADD MSTORE POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20BE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x20C9 DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x20D9 DUP2 PUSH2 0x2622 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20F6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2101 DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2121 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2137 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2143 DUP6 DUP3 DUP7 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2164 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x217B JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2187 DUP9 DUP4 DUP10 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x219F JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x21AC DUP8 DUP3 DUP9 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21C9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x653 DUP2 PUSH2 0x2644 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21E5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x653 DUP2 PUSH2 0x2644 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2201 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x653 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2241 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x224B PUSH1 0x80 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x2255 DUP5 DUP5 PUSH2 0x1F5C JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2264 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1F5C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2298 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22B0 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x22C9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x25F6 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1A69 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x23FB JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x24BC DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x25F6 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6178696D756D20746F6B656E2062616C616E63652065786365656465640000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x46656520646973747269627574696F6E20686173206E6F742073746172746564 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2079657400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x25EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2611 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x25F9 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x518 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 DIFFICULTY DUP7 0xF JUMP PUSH5 0x43E9C1FC33 SWAP6 PUSH18 0xE3E5D52B64DBAFD0875BFFD489BD4E671311 0xC9 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"2013:28387:82:-:0;;;3562:842;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2020:280:58;;;;;;;;;;;-1:-1:-1;;;2020:280:58;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2020:280:58;;;;;;2100:22;;;;;2085:37;;2150:25;;;;;2132:43;;2198:95;2185:108;;2175:7:63;:22;-1:-1:-1;;;;;;3661:28:82::1;::::0;;;;::::1;::::0;3712:30:::1;3732:9:::0;3712:19:::1;:30::i;:::-;3700:42:::0;-1:-1:-1;3752:19:82::1;3774:36;3794:15;3774:19;:36::i;:::-;3752:58;;3841:11;3828:9;:24;;3820:69;;;;-1:-1:-1::0;;;3820:69:82::1;;;;;;;:::i;:::-;;;;;;;;;3916:11;3903:9;:24;3899:434;;;4236:37;::::0;-1:-1:-1;;;4236:37:82;;4276:1:::1;::::0;-1:-1:-1;;;;;4236:24:82;::::1;::::0;::::1;::::0;:37:::1;::::0;4261:11;;4236:37:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;4228:94;;;;-1:-1:-1::0;;;4228:94:82::1;;;;;;;:::i;:::-;-1:-1:-1::0;4342:22:82::1;::::0;;;4374:11:::1;:23:::0;-1:-1:-1;2013:28387:82;;29871:196;30042:7;30030:19;;;;30029:31;;29871:196::o;331:443:-1:-;;;485:2;473:9;464:7;460:23;456:32;453:2;;;-1:-1;;491:12;453:2;105:13;;-1:-1;;;;;3425:54;;3651:57;;3641:2;;-1:-1;;3712:12;3641:2;676;726:22;;;;268:13;543:96;;268:13;;-1:-1;;;447:327::o;781:263::-;;896:2;884:9;875:7;871:23;867:32;864:2;;;-1:-1;;902:12;864:2;-1:-1;268:13;;858:186;-1:-1;858:186::o;1898:416::-;2098:2;2112:47;;;2083:18;;;3077:19;1312:34;3117:14;;;1292:55;1366:12;;;2069:245::o;2321:416::-;2521:2;2535:47;;;1617:2;2506:18;;;3077:19;1653:34;3117:14;;;1633:55;-1:-1;;;1708:12;;;1701:32;1752:12;;;2492:245::o;2744:222::-;1849:37;;;2871:2;2856:18;;2842:124::o;:::-;2013:28387:82;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"5935":[{"length":32,"start":6305}],"5937":[{"length":32,"start":6338}],"5939":[{"length":32,"start":6272}],"12390":[{"length":32,"start":830},{"length":32,"start":2253},{"length":32,"start":2682},{"length":32,"start":3202},{"length":32,"start":5203},{"length":32,"start":5415},{"length":32,"start":6588}],"12392":[{"length":32,"start":2475},{"length":32,"start":2826},{"length":32,"start":2927},{"length":32,"start":3820}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101825760003560e01c806390193b7c116100d8578063ca31879d1161008c578063e811f44b11610066578063e811f44b1461030e578063ed24911d14610321578063fcaa54ee1461032957610182565b8063ca31879d146102d5578063d3dc4ca1146102e8578063de681faf146102fb57610182565b8063a1648aa5116100bd578063a1648aa51461029a578063acbc1428146102ba578063c2c4c5c1146102cd57610182565b806390193b7c14610274578063905d10ac1461028757610182565b80634f3c50901161013a57806382aa5ad41161011457806382aa5ad414610239578063876e69a114610241578063887204671461025457610182565b80634f3c5090146102005780637b8d6221146102135780638050a7ee1461022657610182565b80632308805b1161016b5780632308805b146101ba578063338b5dea146101da5780633902b9bc146101ed57610182565b806308b0308a1461018757806314866e08146101a5575b600080fd5b61018f61033c565b60405161019c9190612309565b60405180910390f35b6101b86101b3366004611f6e565b610360565b005b6101cd6101c8366004611f6e565b61037c565b60405161019c9190612422565b6101b86101e83660046120e4565b6103ca565b6101b86101fb366004611f6e565b610416565b6101cd61020e366004612287565b610429565b6101b861022136600461214f565b61043b565b6101cd6102343660046120ac565b61051e565b6101cd610533565b6101cd61024f366004611f6e565b610539565b610267610262366004611f8a565b610577565b60405161019c91906123df565b6101cd610282366004611f6e565b61065a565b6101b861029536600461210f565b610682565b6102ad6102a8366004611f6e565b6106b7565b60405161019c9190612417565b6101cd6102c8366004611f6e565b6106e2565b6101b8610720565b6101cd6102e33660046120ac565b61073a565b6101cd6102f63660046120e4565b610782565b6101cd6103093660046120e4565b6107b7565b6101b861031c3660046121b8565b6107ec565b6101cd6107f6565b6101b8610337366004611fdd565b610805565b7f000000000000000000000000000000000000000000000000000000000000000090565b610368610876565b6103718161088d565b610379610e5d565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b6103d2610876565b6103dd826000610e64565b6103ff73ffffffffffffffffffffffffffffffffffffffff831633308461128e565b61040a826001610e64565b610412610e5d565b5050565b61041e610876565b610371816001610e64565b60009081526004602052604090205490565b610443610876565b61044d8382611331565b8260005b8181101561050e5761048486868381811061046857fe5b905060200201602081019061047d9190611f6e565b6000610e64565b6104db333086868581811061049557fe5b905060200201358989868181106104a857fe5b90506020020160208101906104bd9190611f6e565b73ffffffffffffffffffffffffffffffffffffffff1692919061128e565b6105068686838181106104ea57fe5b90506020020160208101906104ff9190611f6e565b6001610e64565b600101610451565b5050610518610e5d565b50505050565b600061052a838361133e565b90505b92915050565b60035490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526007602052604090205468010000000000000000900467ffffffffffffffff1690565b6060610581610876565b8361058b816113d6565b610593611428565b61059c8561088d565b8260608167ffffffffffffffff811180156105b657600080fd5b506040519080825280602002602001820160405280156105e0578160200160208202803683370190505b50905060005b82811015610646576105fd87878381811061046857fe5b6106278888888481811061060d57fe5b90506020020160208101906106229190611f6e565b6115d2565b82828151811061063357fe5b60209081029190910101526001016105e6565b5092505050610653610e5d565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61068a610876565b8060005b818110156106ad576106a58484838181106104ea57fe5b60010161068e565b5050610412610e5d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205468010000000000000000900467ffffffffffffffff1690565b610728610876565b610730611428565b610738610e5d565b565b6000610744610876565b8261074e816113d6565b610756611428565b61075f8461088d565b61076a836000610e64565b600061077685856115d2565b9250505061052d610e5d565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205490565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600860209081526040808320938352929052205490565b61037933826117ef565b600061080061187c565b905090565b60007fbd291ffccec065968fe20c5f8debdad73ab50837733f357eeae8814178015a9084846108338761065a565b604051602001610846949392919061242b565b60405160208183030381529060405280519060200120905061086c8482846101f8611919565b61051884846117ef565b610887600280541415610190611946565b60028055565b6040517f010ae75700000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063010ae75790610902908590600401612309565b60206040518083038186803b15801561091a57600080fd5b505afa15801561092e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610952919061229f565b90508061095f5750610379565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120805490916801000000000000000090910467ffffffffffffffff1690816109d9576109d2857f0000000000000000000000000000000000000000000000000000000000000000600087611954565b9050610a2c565b4282106109e95750505050610379565b50815470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660148185031115610a2c57610a2985838387611954565b90505b80610a35575060015b610a3d611ee5565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610ab190899086906004016123b9565b60806040518083038186803b158015610ac957600080fd5b505afa158015610add573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b019190612230565b905082610bd5577f00000000000000000000000000000000000000000000000000000000000000004211610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190612572565b60405180910390fd5b610ba07f0000000000000000000000000000000000000000000000000000000000000000610b9b8360400151611a75565b611a85565b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff821617855592505b610bdd611ee5565b60005b6032811015610dc25782604001518510158015610bfd5750868411155b15610d115760018401935082915086841115610c455760405180608001604052806000600f0b81526020016000600f0b81526020016000815260200160008152509250610d0c565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610cb9908b9088906004016123b9565b60806040518083038186803b158015610cd157600080fd5b505afa158015610ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d099190612230565b92505b610dba565b428510610d1d57610dc2565b6000826040015186039050600081846020015102600f0b8460000151600f0b13610d48576000610d59565b81846020015102846000015103600f0b5b905080158015610d6857508886115b15610d7f57610d7642611a75565b96505050610dc2565b73ffffffffffffffffffffffffffffffffffffffff8a1660009081526008602090815260408083208a84529091529020555062093a80909401935b600101610be0565b505083546fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9290920167ffffffffffffffff90811670010000000000000000000000000000000002929092177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff1668010000000000000000939092169290920217909155505050565b6001600255565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560205260408120805490916801000000000000000090910467ffffffffffffffff169081610f4857429150610eb642611a91565b83547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff919091161783557f00000000000000000000000000000000000000000000000000000000000000004211610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190612572565b610f9a565b814203905083610f9a576000610f5d83611a91565b610f6642611a91565b14905060006201518042610f7942611a75565b03109050818015610f88575080155b15610f97575050505050610412565b50505b82547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff16021783556040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8716906370a082319061102c903090600401612309565b60206040518083038186803b15801561104457600080fd5b505afa158015611058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107c919061229f565b84549091506000906110b590839070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611a9d565b9050806110c6575050505050610412565b6fffffffffffffffffffffffffffffffff821115611110576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b619061253b565b84546fffffffffffffffffffffffffffffffff808416700100000000000000000000000000000000029116178555600061114985611a91565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260066020526040812091925090815b6014811015611246578362093a80019250824210156111e4578615801561119a57508742145b156111b85760008481526020839052604090208054860190556111df565b868842038602816111c557fe5b600086815260208590526040902080549290910490910190555b611246565b861580156111f157508783145b1561120f576000848152602083905260409020805486019055611236565b8688840386028161121c57fe5b600086815260208590526040902080549290910490910190555b9196508692508291600101611174565b507f9b7f1a85a4c9b4e59e1b6527d9969c50cdfb3a1a467d0c4a51fb0ed8bf07f1308a858960405161127a9392919061250d565b60405180910390a150505050505050505050565b610518846323b872dd60e01b8585856040516024016112af9392919061232a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611aab565b6104128183146067611946565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600960209081526040808320938516835292905290812054801561138057905061052d565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260076020908152604080832054938716835260059091529020546113ce9167ffffffffffffffff9081169116611a85565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1615610379576103793373ffffffffffffffffffffffffffffffffffffffff831614610191611946565b600354600061143642611a91565b90508082118061144557504281145b15611451575050610738565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c2c4c5c16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156114b957600080fd5b505af11580156114cd573d6000803e3d6000fd5b5050505060005b60148110156115cb57818311156114ea576115cb565b6040517fbd85b03900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063bd85b0399061155c908690600401612422565b60206040518083038186803b15801561157457600080fd5b505afa158015611588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ac919061229f565b60008481526004602052604090205562093a80909201916001016114d4565b5050600355565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020526040812081611602858561133e565b60035473ffffffffffffffffffffffffffffffffffffffff8716600090815260076020526040812054929350916116829161165c91611657919068010000000000000000900467ffffffffffffffff16611b58565b611a75565b845461167d9068010000000000000000900467ffffffffffffffff16611a91565b611b58565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600660209081526040808320938b16835260089091528120929350909190805b6014811015611713578486106116d457611713565b600086815260046020908152604080832054868352818420549288905292205402816116fc57fe5b62093a8097909701960491909101906001016116bf565b5073ffffffffffffffffffffffffffffffffffffffff808a166000908152600960209081526040808320938c1683529290522085905580156117e35785546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000808304821684900382160291161786556117a573ffffffffffffffffffffffffffffffffffffffff89168a83611b64565b7fff097c7d8b1957a4ff09ef1361b5fb54dcede3941ba836d0beb9d10bec725de6898983886040516117da9493929190612383565b60405180910390a15b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016831515179055517fac9874a7a931a3f5c9f202c6d9cf40de5d21506993c9f9c38ca8265add89584c90611870908490849061235b565b60405180910390a15050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006118e9611b88565b306040516020016118fe95949392919061245e565b60405160208183030381529060405280519060200120905090565b6105188484847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85611b8c565b816104125761041281611bf0565b60008282825b6080811015611a695781831061196f57611a69565b600282840181010461197f611ee5565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906328d09d47906119f3908d9086906004016123b9565b60806040518083038186803b158015611a0b57600080fd5b505afa158015611a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a439190612230565b905088816040015111611a5857819450611a5f565b6001820393505b505060010161195a565b50909695505050505050565b600061052d62093a7f8301611a91565b80820390821002900390565b62093a80908190040290565b600061052a83836001611c1a565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051611ad491906122b7565b6000604051808303816000865af19150503d8060008114611b11576040519150601f19603f3d011682016040523d82523d6000602084013e611b16565b606091505b50915091506000821415611b2e573d6000803e3d6000fd5b610518815160001480611b50575081806020019051810190611b5091906121d4565b6101a2611946565b80820390821102900390565b611b838363a9059cbb60e01b84846040516024016112af9291906123b9565b505050565b4690565b6000611b9785611c30565b9050611bad611ba7878387611c69565b83611946565b611bbc428410156101b8611946565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152602081905260409020805460010190555050565b610379817f42414c0000000000000000000000000000000000000000000000000000000000611d71565b6000611c298484111583611946565b5050900390565b6000611c3a61187c565b82604051602001611c4c9291906122d3565b604051602081830303815290604052805190602001209050919050565b6000611c8a8473ffffffffffffffffffffffffffffffffffffffff16611dec565b15611d5f576040517f1626ba7e000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff861690631626ba7e90611ce59087908790600401612497565b60206040518083038186803b158015611cfd57600080fd5b505afa158015611d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3591906121f0565b7fffffffff0000000000000000000000000000000000000000000000000000000016149050610653565b611d6a848484611df2565b9050610653565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b3b151590565b6000611e0482516041146101b9611946565b60208281015160408085015160608601518251600080825295019283905292939092811a91600190611e3d9089908590889088906124ef565b6020604051602081039080840390855afa158015611e5f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906117e357508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161498975050505050505050565b60405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525090565b60008083601f840112611f24578182fd5b50813567ffffffffffffffff811115611f3b578182fd5b6020830191508360208083028501011115611f5557600080fd5b9250929050565b8051600f81900b811461052d57600080fd5b600060208284031215611f7f578081fd5b813561065381612622565b600080600060408486031215611f9e578182fd5b8335611fa981612622565b9250602084013567ffffffffffffffff811115611fc4578283fd5b611fd086828701611f13565b9497909650939450505050565b600080600060608486031215611ff1578283fd5b8335611ffc81612622565b925060208481013561200d81612644565b9250604085013567ffffffffffffffff80821115612029578384fd5b818701915087601f83011261203c578384fd5b81358181111561204a578485fd5b61207a847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016125cf565b9150808252888482850101111561208f578485fd5b808484018584013784848284010152508093505050509250925092565b600080604083850312156120be578182fd5b82356120c981612622565b915060208301356120d981612622565b809150509250929050565b600080604083850312156120f6578182fd5b823561210181612622565b946020939093013593505050565b60008060208385031215612121578182fd5b823567ffffffffffffffff811115612137578283fd5b61214385828601611f13565b90969095509350505050565b60008060008060408587031215612164578081fd5b843567ffffffffffffffff8082111561217b578283fd5b61218788838901611f13565b9096509450602087013591508082111561219f578283fd5b506121ac87828801611f13565b95989497509550505050565b6000602082840312156121c9578081fd5b813561065381612644565b6000602082840312156121e5578081fd5b815161065381612644565b600060208284031215612201578081fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610653578182fd5b600060808284031215612241578081fd5b61224b60806125cf565b6122558484611f5c565b81526122648460208501611f5c565b602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612298578081fd5b5035919050565b6000602082840312156122b0578081fd5b5051919050565b600082516122c98184602087016125f6565b9190910192915050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff9290921682521515602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015611a69578351835292840192918401916001016123fb565b901515815260200190565b90815260200190565b93845273ffffffffffffffffffffffffffffffffffffffff92909216602084015215156040830152606082015260800190565b94855260208501939093526040840191909152606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a00190565b60008382526040602083015282518060408401526124bc8160608501602087016125f6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b93845260ff9290921660208401526040830152606082015260800190565b73ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b6020808252601e908201527f4d6178696d756d20746f6b656e2062616c616e63652065786365656465640000604082015260600190565b60208082526024908201527f46656520646973747269627574696f6e20686173206e6f74207374617274656460408201527f2079657400000000000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff811182821017156125ee57600080fd5b604052919050565b60005b838110156126115781810151838201526020016125f9565b838111156105185750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461037957600080fd5b801515811461037957600080fdfea2646970667358221220a544860f566443e9c1fc339571e3e5d52b64dbafd0875bffd489bd4e671311c964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x182 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90193B7C GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xCA31879D GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE811F44B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xE811F44B EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0xFCAA54EE EQ PUSH2 0x329 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0xCA31879D EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0xD3DC4CA1 EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0xDE681FAF EQ PUSH2 0x2FB JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0xA1648AA5 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xA1648AA5 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xACBC1428 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x2CD JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x90193B7C EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0x905D10AC EQ PUSH2 0x287 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x4F3C5090 GT PUSH2 0x13A JUMPI DUP1 PUSH4 0x82AA5AD4 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x82AA5AD4 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x876E69A1 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x88720467 EQ PUSH2 0x254 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x4F3C5090 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x7B8D6221 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x8050A7EE EQ PUSH2 0x226 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x2308805B GT PUSH2 0x16B JUMPI DUP1 PUSH4 0x2308805B EQ PUSH2 0x1BA JUMPI DUP1 PUSH4 0x338B5DEA EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x3902B9BC EQ PUSH2 0x1ED JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x14866E08 EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18F PUSH2 0x33C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2309 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B8 PUSH2 0x1B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CD PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x37C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2422 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x1E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x20E4 JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x1FB CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x416 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x20E CALLDATASIZE PUSH1 0x4 PUSH2 0x2287 JUMP JUMPDEST PUSH2 0x429 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x221 CALLDATASIZE PUSH1 0x4 PUSH2 0x214F JUMP JUMPDEST PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x234 CALLDATASIZE PUSH1 0x4 PUSH2 0x20AC JUMP JUMPDEST PUSH2 0x51E JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x533 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x24F CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x539 JUMP JUMPDEST PUSH2 0x267 PUSH2 0x262 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F8A JUMP JUMPDEST PUSH2 0x577 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x282 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x65A JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x295 CALLDATASIZE PUSH1 0x4 PUSH2 0x210F JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST PUSH2 0x2AD PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x6B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2417 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x2C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x6E2 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x720 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x2E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x20AC JUMP JUMPDEST PUSH2 0x73A JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x2F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x20E4 JUMP JUMPDEST PUSH2 0x782 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x309 CALLDATASIZE PUSH1 0x4 PUSH2 0x20E4 JUMP JUMPDEST PUSH2 0x7B7 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x31C CALLDATASIZE PUSH1 0x4 PUSH2 0x21B8 JUMP JUMPDEST PUSH2 0x7EC JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x7F6 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x337 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FDD JUMP JUMPDEST PUSH2 0x805 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x368 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x371 DUP2 PUSH2 0x88D JUMP JUMPDEST PUSH2 0x379 PUSH2 0xE5D JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3D2 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x3DD DUP3 PUSH1 0x0 PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x3FF PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x128E JUMP JUMPDEST PUSH2 0x40A DUP3 PUSH1 0x1 PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x412 PUSH2 0xE5D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x41E PUSH2 0x876 JUMP JUMPDEST PUSH2 0x371 DUP2 PUSH1 0x1 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x443 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x44D DUP4 DUP3 PUSH2 0x1331 JUMP JUMPDEST DUP3 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x50E JUMPI PUSH2 0x484 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x468 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x47D SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x4DB CALLER ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x495 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP10 DUP10 DUP7 DUP2 DUP2 LT PUSH2 0x4A8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4BD SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP2 SWAP1 PUSH2 0x128E JUMP JUMPDEST PUSH2 0x506 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x4EA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4FF SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x1 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x451 JUMP JUMPDEST POP POP PUSH2 0x518 PUSH2 0xE5D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52A DUP4 DUP4 PUSH2 0x133E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x581 PUSH2 0x876 JUMP JUMPDEST DUP4 PUSH2 0x58B DUP2 PUSH2 0x13D6 JUMP JUMPDEST PUSH2 0x593 PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x59C DUP6 PUSH2 0x88D JUMP JUMPDEST DUP3 PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x5E0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x646 JUMPI PUSH2 0x5FD DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x468 JUMPI INVALID JUMPDEST PUSH2 0x627 DUP9 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x60D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x622 SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x15D2 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x633 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x5E6 JUMP JUMPDEST POP SWAP3 POP POP POP PUSH2 0x653 PUSH2 0xE5D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x68A PUSH2 0x876 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6AD JUMPI PUSH2 0x6A5 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x4EA JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x68E JUMP JUMPDEST POP POP PUSH2 0x412 PUSH2 0xE5D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x728 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x730 PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x738 PUSH2 0xE5D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x744 PUSH2 0x876 JUMP JUMPDEST DUP3 PUSH2 0x74E DUP2 PUSH2 0x13D6 JUMP JUMPDEST PUSH2 0x756 PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x75F DUP5 PUSH2 0x88D JUMP JUMPDEST PUSH2 0x76A DUP4 PUSH1 0x0 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x776 DUP6 DUP6 PUSH2 0x15D2 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x52D PUSH2 0xE5D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x379 CALLER DUP3 PUSH2 0x17EF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x800 PUSH2 0x187C JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xBD291FFCCEC065968FE20C5F8DEBDAD73AB50837733F357EEAE8814178015A90 DUP5 DUP5 PUSH2 0x833 DUP8 PUSH2 0x65A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x846 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x242B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x86C DUP5 DUP3 DUP5 PUSH2 0x1F8 PUSH2 0x1919 JUMP JUMPDEST PUSH2 0x518 DUP5 DUP5 PUSH2 0x17EF JUMP JUMPDEST PUSH2 0x887 PUSH1 0x2 DUP1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1946 JUMP JUMPDEST PUSH1 0x2 DUP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x10AE75700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x10AE757 SWAP1 PUSH2 0x902 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2309 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x91A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x92E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x952 SWAP2 SWAP1 PUSH2 0x229F JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x95F JUMPI POP PUSH2 0x379 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0x9D9 JUMPI PUSH2 0x9D2 DUP6 PUSH32 0x0 PUSH1 0x0 DUP8 PUSH2 0x1954 JUMP JUMPDEST SWAP1 POP PUSH2 0xA2C JUMP JUMPDEST TIMESTAMP DUP3 LT PUSH2 0x9E9 JUMPI POP POP POP POP PUSH2 0x379 JUMP JUMPDEST POP DUP2 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 DUP2 DUP6 SUB GT ISZERO PUSH2 0xA2C JUMPI PUSH2 0xA29 DUP6 DUP4 DUP4 DUP8 PUSH2 0x1954 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH2 0xA35 JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0xA3D PUSH2 0x1EE5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xAB1 SWAP1 DUP10 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x23B9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xADD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB01 SWAP2 SWAP1 PUSH2 0x2230 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0xBD5 JUMPI PUSH32 0x0 TIMESTAMP GT PUSH2 0xB6A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB61 SWAP1 PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBA0 PUSH32 0x0 PUSH2 0xB9B DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x1A75 JUMP JUMPDEST PUSH2 0x1A85 JUMP JUMPDEST DUP5 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND OR DUP6 SSTORE SWAP3 POP JUMPDEST PUSH2 0xBDD PUSH2 0x1EE5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x32 DUP2 LT ISZERO PUSH2 0xDC2 JUMPI DUP3 PUSH1 0x40 ADD MLOAD DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xBFD JUMPI POP DUP7 DUP5 GT ISZERO JUMPDEST ISZERO PUSH2 0xD11 JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP DUP3 SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0xC45 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP PUSH2 0xD0C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xCB9 SWAP1 DUP12 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x23B9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCE5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD09 SWAP2 SWAP1 PUSH2 0x2230 JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH2 0xDBA JUMP JUMPDEST TIMESTAMP DUP6 LT PUSH2 0xD1D JUMPI PUSH2 0xDC2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 ADD MLOAD DUP7 SUB SWAP1 POP PUSH1 0x0 DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL PUSH1 0xF SIGNEXTEND DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xF SIGNEXTEND SGT PUSH2 0xD48 JUMPI PUSH1 0x0 PUSH2 0xD59 JUMP JUMPDEST DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL DUP5 PUSH1 0x0 ADD MLOAD SUB PUSH1 0xF SIGNEXTEND JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0xD68 JUMPI POP DUP9 DUP7 GT JUMPDEST ISZERO PUSH2 0xD7F JUMPI PUSH2 0xD76 TIMESTAMP PUSH2 0x1A75 JUMP JUMPDEST SWAP7 POP POP POP PUSH2 0xDC2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE POP PUSH3 0x93A80 SWAP1 SWAP5 ADD SWAP4 JUMPDEST PUSH1 0x1 ADD PUSH2 0xBE0 JUMP JUMPDEST POP POP DUP4 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 ADD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP3 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SWAP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0xF48 JUMPI TIMESTAMP SWAP2 POP PUSH2 0xEB6 TIMESTAMP PUSH2 0x1A91 JUMP JUMPDEST DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR DUP4 SSTORE PUSH32 0x0 TIMESTAMP GT PUSH2 0xF43 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB61 SWAP1 PUSH2 0x2572 JUMP JUMPDEST PUSH2 0xF9A JUMP JUMPDEST DUP2 TIMESTAMP SUB SWAP1 POP DUP4 PUSH2 0xF9A JUMPI PUSH1 0x0 PUSH2 0xF5D DUP4 PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0xF66 TIMESTAMP PUSH2 0x1A91 JUMP JUMPDEST EQ SWAP1 POP PUSH1 0x0 PUSH3 0x15180 TIMESTAMP PUSH2 0xF79 TIMESTAMP PUSH2 0x1A75 JUMP JUMPDEST SUB LT SWAP1 POP DUP2 DUP1 ISZERO PUSH2 0xF88 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xF97 JUMPI POP POP POP POP POP PUSH2 0x412 JUMP JUMPDEST POP POP JUMPDEST DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 TIMESTAMP PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x102C SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2309 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1058 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x107C SWAP2 SWAP1 PUSH2 0x229F JUMP JUMPDEST DUP5 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x10B5 SWAP1 DUP4 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1A9D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x10C6 JUMPI POP POP POP POP POP PUSH2 0x412 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB61 SWAP1 PUSH2 0x253B JUMP JUMPDEST DUP5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP2 AND OR DUP6 SSTORE PUSH1 0x0 PUSH2 0x1149 DUP6 PUSH2 0x1A91 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP3 POP SWAP1 DUP2 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x1246 JUMPI DUP4 PUSH3 0x93A80 ADD SWAP3 POP DUP3 TIMESTAMP LT ISZERO PUSH2 0x11E4 JUMPI DUP7 ISZERO DUP1 ISZERO PUSH2 0x119A JUMPI POP DUP8 TIMESTAMP EQ JUMPDEST ISZERO PUSH2 0x11B8 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x11DF JUMP JUMPDEST DUP7 DUP9 TIMESTAMP SUB DUP7 MUL DUP2 PUSH2 0x11C5 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH2 0x1246 JUMP JUMPDEST DUP7 ISZERO DUP1 ISZERO PUSH2 0x11F1 JUMPI POP DUP8 DUP4 EQ JUMPDEST ISZERO PUSH2 0x120F JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x1236 JUMP JUMPDEST DUP7 DUP9 DUP5 SUB DUP7 MUL DUP2 PUSH2 0x121C JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST SWAP2 SWAP7 POP DUP7 SWAP3 POP DUP3 SWAP2 PUSH1 0x1 ADD PUSH2 0x1174 JUMP JUMPDEST POP PUSH32 0x9B7F1A85A4C9B4E59E1B6527D9969C50CDFB3A1A467D0C4A51FB0ED8BF07F130 DUP11 DUP6 DUP10 PUSH1 0x40 MLOAD PUSH2 0x127A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x250D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x518 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x12AF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1AAB JUMP JUMPDEST PUSH2 0x412 DUP2 DUP4 EQ PUSH1 0x67 PUSH2 0x1946 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1380 JUMPI SWAP1 POP PUSH2 0x52D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP8 AND DUP4 MSTORE PUSH1 0x5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x13CE SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND PUSH2 0x1A85 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x379 JUMPI PUSH2 0x379 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EQ PUSH2 0x191 PUSH2 0x1946 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 PUSH2 0x1436 TIMESTAMP PUSH2 0x1A91 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT DUP1 PUSH2 0x1445 JUMPI POP TIMESTAMP DUP2 EQ JUMPDEST ISZERO PUSH2 0x1451 JUMPI POP POP PUSH2 0x738 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC2C4C5C1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x15CB JUMPI DUP2 DUP4 GT ISZERO PUSH2 0x14EA JUMPI PUSH2 0x15CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xBD85B039 SWAP1 PUSH2 0x155C SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2422 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1588 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15AC SWAP2 SWAP1 PUSH2 0x229F JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH3 0x93A80 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x14D4 JUMP JUMPDEST POP POP PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 PUSH2 0x1602 DUP6 DUP6 PUSH2 0x133E JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP2 PUSH2 0x1682 SWAP2 PUSH2 0x165C SWAP2 PUSH2 0x1657 SWAP2 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1B58 JUMP JUMPDEST PUSH2 0x1A75 JUMP JUMPDEST DUP5 SLOAD PUSH2 0x167D SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0x1B58 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SWAP3 SWAP4 POP SWAP1 SWAP2 SWAP1 DUP1 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x1713 JUMPI DUP5 DUP7 LT PUSH2 0x16D4 JUMPI PUSH2 0x1713 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP7 DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD SWAP3 DUP9 SWAP1 MSTORE SWAP3 KECCAK256 SLOAD MUL DUP2 PUSH2 0x16FC JUMPI INVALID JUMPDEST PUSH3 0x93A80 SWAP8 SWAP1 SWAP8 ADD SWAP7 DIV SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x16BF JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP6 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x17E3 JUMPI DUP6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP5 SWAP1 SUB DUP3 AND MUL SWAP2 AND OR DUP7 SSTORE PUSH2 0x17A5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND DUP11 DUP4 PUSH2 0x1B64 JUMP JUMPDEST PUSH32 0xFF097C7D8B1957A4FF09EF1361B5FB54DCEDE3941BA836D0BEB9D10BEC725DE6 DUP10 DUP10 DUP4 DUP9 PUSH1 0x40 MLOAD PUSH2 0x17DA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2383 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0xAC9874A7A931A3F5C9F202C6D9CF40DE5D21506993C9F9C38CA8265ADD89584C SWAP1 PUSH2 0x1870 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x235B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x18E9 PUSH2 0x1B88 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x18FE SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x245E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x518 DUP5 DUP5 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 PUSH2 0x1B8C JUMP JUMPDEST DUP2 PUSH2 0x412 JUMPI PUSH2 0x412 DUP2 PUSH2 0x1BF0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP3 JUMPDEST PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1A69 JUMPI DUP2 DUP4 LT PUSH2 0x196F JUMPI PUSH2 0x1A69 JUMP JUMPDEST PUSH1 0x2 DUP3 DUP5 ADD DUP2 ADD DIV PUSH2 0x197F PUSH2 0x1EE5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0x19F3 SWAP1 DUP14 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x23B9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A1F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A43 SWAP2 SWAP1 PUSH2 0x2230 JUMP JUMPDEST SWAP1 POP DUP9 DUP2 PUSH1 0x40 ADD MLOAD GT PUSH2 0x1A58 JUMPI DUP2 SWAP5 POP PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x195A JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52D PUSH3 0x93A7F DUP4 ADD PUSH2 0x1A91 JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 LT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52A DUP4 DUP4 PUSH1 0x1 PUSH2 0x1C1A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1AD4 SWAP2 SWAP1 PUSH2 0x22B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1B11 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1B2E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x518 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1B50 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1B50 SWAP2 SWAP1 PUSH2 0x21D4 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1946 JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x1B83 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x12AF SWAP3 SWAP2 SWAP1 PUSH2 0x23B9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B97 DUP6 PUSH2 0x1C30 JUMP JUMPDEST SWAP1 POP PUSH2 0x1BAD PUSH2 0x1BA7 DUP8 DUP4 DUP8 PUSH2 0x1C69 JUMP JUMPDEST DUP4 PUSH2 0x1946 JUMP JUMPDEST PUSH2 0x1BBC TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x1946 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x379 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1D71 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C29 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x1946 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C3A PUSH2 0x187C JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1C4C SWAP3 SWAP2 SWAP1 PUSH2 0x22D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C8A DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1DEC JUMP JUMPDEST ISZERO PUSH2 0x1D5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP1 DUP3 MSTORE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH4 0x1626BA7E SWAP1 PUSH2 0x1CE5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2497 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D35 SWAP2 SWAP1 PUSH2 0x21F0 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ SWAP1 POP PUSH2 0x653 JUMP JUMPDEST PUSH2 0x1D6A DUP5 DUP5 DUP5 PUSH2 0x1DF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x653 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E04 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x1946 JUMP JUMPDEST PUSH1 0x20 DUP3 DUP2 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD DUP3 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP6 ADD SWAP3 DUP4 SWAP1 MSTORE SWAP3 SWAP4 SWAP1 SWAP3 DUP2 BYTE SWAP2 PUSH1 0x1 SWAP1 PUSH2 0x1E3D SWAP1 DUP10 SWAP1 DUP6 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x24EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E5F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x17E3 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1F24 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F3B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1F55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F7F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x653 DUP2 PUSH2 0x2622 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F9E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1FA9 DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1FC4 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1FD0 DUP7 DUP3 DUP8 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1FF1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1FFC DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 DUP2 ADD CALLDATALOAD PUSH2 0x200D DUP2 PUSH2 0x2644 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2029 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x203C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x204A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x207A DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x25CF JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP9 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x208F JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY DUP5 DUP5 DUP3 DUP5 ADD ADD MSTORE POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20BE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x20C9 DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x20D9 DUP2 PUSH2 0x2622 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20F6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2101 DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2121 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2137 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2143 DUP6 DUP3 DUP7 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2164 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x217B JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2187 DUP9 DUP4 DUP10 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x219F JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x21AC DUP8 DUP3 DUP9 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21C9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x653 DUP2 PUSH2 0x2644 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21E5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x653 DUP2 PUSH2 0x2644 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2201 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x653 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2241 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x224B PUSH1 0x80 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x2255 DUP5 DUP5 PUSH2 0x1F5C JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2264 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1F5C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2298 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22B0 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x22C9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x25F6 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1A69 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x23FB JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x24BC DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x25F6 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6178696D756D20746F6B656E2062616C616E63652065786365656465640000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x46656520646973747269627574696F6E20686173206E6F742073746172746564 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2079657400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x25EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2611 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x25F9 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x518 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 DIFFICULTY DUP7 0xF JUMP PUSH5 0x43E9C1FC33 SWAP6 PUSH18 0xE3E5D52B64DBAFD0875BFFD489BD4E671311 0xC9 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"2013:28387:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4489:111;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10104:114;;;;;;:::i;:::-;;:::i;:::-;;7175:140;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8423:236::-;;;;;;:::i;:::-;;:::i;10738:116::-;;;;;;:::i;:::-;;:::i;6938:144::-;;;;;;:::i;:::-;;:::i;9022:463::-;;;;;;:::i;:::-;;:::i;5712:161::-;;;;;;:::i;:::-;;:::i;4720:101::-;;;:::i;5000:133::-;;;;;;:::i;:::-;;:::i;12773:569::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1303:121:47:-;;;;;;:::i;:::-;;:::i;11190:246:82:-;;;;;;:::i;:::-;;:::i;2247:131:49:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5329:136:82:-;;;;;;:::i;:::-;;:::i;9725:94::-;;;:::i;11950:360::-;;;;;;:::i;:::-;;:::i;7606:166::-;;;;;;:::i;:::-;;:::i;6363:173::-;;;;;;:::i;:::-;;:::i;1551:117:49:-;;;;;;:::i;:::-;;:::i;1184:113:47:-;;;:::i;1674:398:49:-;;;;;;:::i;:::-;;:::i;4489:111:82:-;4580:13;4489:111;:::o;10104:114::-;2613:20:63;:18;:20::i;:::-;10183:28:82::1;10206:4;10183:22;:28::i;:::-;2654:19:63::0;:17;:19::i;:::-;10104:114:82;:::o;7175:140::-;7276:18;;7250:7;7276:18;;;:11;:18;;;;;:32;;;;;;;7175:140::o;8423:236::-;2613:20:63;:18;:20::i;:::-;8516:30:82::1;8533:5;8540;8516:16;:30::i;:::-;8556:57;:22;::::0;::::1;8579:10;8599:4;8606:6:::0;8556:22:::1;:57::i;:::-;8623:29;8640:5;8647:4;8623:16;:29::i;:::-;2654:19:63::0;:17;:19::i;:::-;8423:236:82;;:::o;10738:116::-;2613:20:63;:18;:20::i;:::-;10818:29:82::1;10835:5;10842:4;10818:16;:29::i;6938:144::-:0;7024:7;7050:25;;;:14;:25;;;;;;;6938:144::o;9022:463::-;2613:20:63;:18;:20::i;:::-;9140:66:82::1;9176:6:::0;9191:7;9140:35:::1;:66::i;:::-;9234:6:::0;9217:14:::1;9257:222;9281:6;9277:1;:10;9257:222;;;9308:34;9325:6;;9332:1;9325:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;9336:5;9308:16;:34::i;:::-;9356:65;9383:10;9403:4;9410:7;;9418:1;9410:10;;;;;;;;;;;;;9356:6;;9363:1;9356:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;:26;;::::0;:65;;:26:::1;:65::i;:::-;9435:33;9452:6;;9459:1;9452:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;9463:4;9435:16;:33::i;:::-;9289:3;;9257:222;;;;2643:1:63;2654:19:::0;:17;:19::i;:::-;9022:463:82;;;;:::o;5712:161::-;5804:7;5830:36;5854:4;5860:5;5830:23;:36::i;:::-;5823:43;;5712:161;;;;;:::o;4720:101::-;4803:11;;4720:101;:::o;5000:133::-;5099:16;;5073:7;5099:16;;;:10;:16;;;;;:27;;;;;;;5000:133::o;12773:569::-;12939:16;2613:20:63;:18;:20::i;:::-;12916:4:82::1;1508:19:49;1522:4;1508:13;:19::i;:::-;12971:24:82::2;:22;:24::i;:::-;13005:28;13028:4;13005:22;:28::i;:::-;13067:6:::0;13090:24:::2;13067:6:::0;13117:27:::2;::::0;::::2;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;13117:27:82::2;;13090:54;;13159:9;13154:157;13178:12;13174:1;:16;13154:157;;;13211:34;13228:6;;13235:1;13228:9;;;;;;13211:34;13272:28;13284:4;13290:6;;13297:1;13290:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;13272:11;:28::i;:::-;13259:7;13267:1;13259:10;;;;;;;;;::::0;;::::2;::::0;;;;;:41;13192:3:::2;;13154:157;;;-1:-1:-1::0;13328:7:82;-1:-1:-1;;2643:1:63::1;2654:19:::0;:17;:19::i;:::-;12773:569:82;;;;;:::o;1303:121:47:-;1398:19;;1372:7;1398:19;;;;;;;;;;;;1303:121::o;11190:246:82:-;2613:20:63;:18;:20::i;:::-;11306:6:82;11283:20:::1;11329:101;11353:12;11349:1;:16;11329:101;;;11386:33;11403:6;;11410:1;11403:9;;;;;;11386:33;11367:3;;11329:101;;;;2643:1:63;2654:19:::0;:17;:19::i;2247:131:49:-;2345:26;;2322:4;2345:26;;;:20;:26;;;;;;;;;2247:131::o;5329:136:82:-;5429:18;;5403:7;5429:18;;;:11;:18;;;;;:29;;;;;;;5329:136::o;9725:94::-;2613:20:63;:18;:20::i;:::-;9788:24:82::1;:22;:24::i;:::-;2654:19:63::0;:17;:19::i;:::-;9725:94:82:o;11950:360::-;12103:7;2613:20:63;:18;:20::i;:::-;12080:4:82::1;1508:19:49;1522:4;1508:13;:19::i;:::-;12126:24:82::2;:22;:24::i;:::-;12160:28;12183:4;12160:22;:28::i;:::-;12198:30;12215:5;12222;12198:16;:30::i;:::-;12239:14;12256:24;12268:4;12274:5;12256:11;:24::i;:::-;12239:41:::0;-1:-1:-1;;2643:1:63::1;2654:19:::0;:17;:19::i;7606:166:82:-;7733:21;;;;;7707:7;7733:21;;;:14;:21;;;;;;;;:32;;;;;;;;;7606:166::o;6363:173::-;6489:29;;;;;6463:7;6489:29;;;:23;:29;;;;;;;;:40;;;;;;;;;6363:173::o;1551:117:49:-;1621:40;1641:10;1653:7;1621:19;:40::i;1184:113:47:-;1244:7;1270:20;:18;:20::i;:::-;1263:27;;1184:113;:::o;1674:398:49:-;1825:18;1144:86;1900:4;1906:7;1915:18;1928:4;1915:12;:18::i;:::-;1856:78;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1846:89;;;;;;1825:110;;1945:76;1967:4;1973:10;1985:9;13190:3:31;1945:21:49;:76::i;:::-;2031:34;2051:4;2057:7;2031:19;:34::i;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:18;;2686:271::o;20783:6075:82:-;20871:36;;;;;20848:20;;20871:30;:13;:30;;;;:36;;20902:4;;20871:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20848:59;-1:-1:-1;21042:17:82;21038:30;;21061:7;;;21038:30;21108:16;;;21078:27;21108:16;;;:10;:16;;;;;21338:20;;21108:16;;21338:20;;;;;;;;21396:1576;;21534:58;21558:4;21564:10;21576:1;21579:12;21534:23;:58::i;:::-;21522:70;;21396:1576;;;21651:15;21627:20;:39;21623:416;;22018:7;;;;;;21623:416;-1:-1:-1;22125:31:82;;;;;;;22837:2;22810:24;;;:29;22806:156;;;22871:76;22895:4;22901:20;22923:9;22934:12;22871:23;:76::i;:::-;22859:88;;22806:156;23082:14;23078:58;;-1:-1:-1;23124:1:82;23078:58;23146:40;;:::i;:::-;23189:49;;;;;:32;:13;:32;;;;:49;;23222:4;;23228:9;;23189:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23146:92;-1:-1:-1;23513:25:82;23509:349;;23638:10;23620:15;:28;23612:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;23726:57;23735:10;23747:35;23765:13;:16;;;23747:17;:35::i;:::-;23726:8;:57::i;:::-;23797:50;;;;;;;;;;;-1:-1:-1;23509:349:82;24068:43;;:::i;:::-;24126:9;24121:2279;24145:2;24141:1;:6;24121:2279;;;24196:13;:16;;;24172:20;:40;;:69;;;;;24229:12;24216:9;:25;;24172:69;24168:2222;;;24731:1;24718:14;;;;24769:13;24750:32;;24816:12;24804:9;:24;24800:230;;;24868:31;;;;;;;;24888:1;24868:31;;;;;;24891:1;24868:31;;;;;;24894:1;24868:31;;;;24897:1;24868:31;;;24852:47;;24800:230;;;24962:49;;;;;:32;:13;:32;;;;:49;;24995:4;;25001:9;;24962:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24946:65;;24800:230;24168:2222;;;25296:15;25272:20;:39;25268:349;;25593:5;;25268:349;25635:9;25677:16;:19;;;25654:20;:42;25635:62;;25715:19;25786:2;25761:16;:22;;;:27;25737:51;;:16;:21;;;:51;;;:158;;25894:1;25737:158;;;25868:2;25843:16;:22;;;:27;25819:16;:21;;;:51;25811:60;;25737:158;25715:180;-1:-1:-1;25992:16:82;;:44;;;;;26024:12;26012:9;:24;25992:44;25988:175;;;26083:34;26101:15;26083:17;:34::i;:::-;26060:57;;26139:5;;;;25988:175;26260:29;;;;;;;:23;:29;;;;;;;;:51;;;;;;;;:65;-1:-1:-1;26368:7:82;26344:31;;;;24168:2222;24149:3;;24121:2279;;;-1:-1:-1;;26735:55:82;;;;26776:13;;;;;26735:55;;;;;;;;;;26800:51;;;;;;;;;;;;;;;-1:-1:-1;;;20783:6075:82:o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;15951:4718:82:-;16054:18;;;16022:29;16054:18;;;:11;:18;;;;;16106:21;;16054:18;;16106:21;;;;;;;;16178:1820;;16433:15;16417:31;;16492:36;16512:15;16492:19;:36::i;:::-;16462:67;;;;;;;;;;;;16648:10;16630:15;:28;16622:77;;;;;;;;;;;;:::i;:::-;16178:1820;;;16774:13;16756:15;:31;16730:57;;16807:5;16802:1186;;17170:32;17265:34;17285:13;17265:19;:34::i;:::-;17205:36;17225:15;17205:19;:36::i;:::-;:94;17170:129;;17551:21;17630:6;17612:15;17575:34;17593:15;17575:17;:34::i;:::-;:52;:61;17551:85;;17877:27;:48;;;;;17909:16;17908:17;17877:48;17873:101;;;17949:7;;;;;;;17873:101;16802:1186;;;18008:47;;;;;18039:15;18008:47;;;;;;18089:30;;;;;-1:-1:-1;;18089:15:82;;;;;;:30;;18113:4;;18089:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18178:24;;18066:53;;-1:-1:-1;18129:29:82;;18161:42;;18066:53;;18178:24;;;;;18161:16;:42::i;:::-;18129:74;-1:-1:-1;18217:26:82;18213:39;;18245:7;;;;;;;18213:39;18285:17;18269:33;;;18261:76;;;;;;;;;;;;:::i;:::-;18347:48;;;;;;;;;;;;;:24;18436:34;18456:13;18436:19;:34::i;:::-;18778:21;;;18480:16;18778:21;;;:14;:21;;;;;18406:64;;-1:-1:-1;18480:16:82;;18809:1776;18833:2;18829:1;:6;18809:1776;;;18930:19;18952:7;18930:29;18919:40;;18995:8;18977:15;:26;18973:1405;;;19144:28;;:64;;;;;19195:13;19176:15;:32;19144:64;19140:459;;;19232:34;;;;;;;;;;;:59;;;;;;19140:459;;;19557:23;19515:13;19497:15;:31;19472:21;:57;19471:109;;;;;19409:34;;;;;;;;;;;:171;;19471:109;;;;19409:171;;;;;19140:459;19695:5;;18973:1405;19863:28;;:57;;;;;19907:13;19895:8;:25;19863:57;19859:505;;;20012:34;;;;;;;;;;;:59;;;;;;19859:505;;;20322:23;20280:13;20269:8;:24;20244:21;:50;20243:102;;;;;20181:34;;;;;;;;;;;:164;;20243:102;;;;20181:164;;;;;19859:505;20522:8;;-1:-1:-1;20522:8:82;;-1:-1:-1;20522:8:82;;18837:3;;18809:1776;;;;20600:62;20618:5;20625:21;20648:13;20600:62;;;;;;;;:::i;:::-;;;;;;;;15951:4718;;;;;;;;;;:::o;1734:250:64:-;1872:105;1900:5;1931:27;;;1960:4;1966:2;1970:5;1908:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1872:19;:105::i;920:131:48:-;998:46;1012:1;1007;:6;5826:3:31;998:8:48;:46::i;28204:507:82:-;28332:26;;;;28288:7;28332:26;;;:20;:26;;;;;;;;:33;;;;;;;;;;;;28379:18;;28375:45;;28406:14;-1:-1:-1;28399:21:82;;28375:45;28647:16;;;;;;;;:10;:16;;;;;;;;:26;28675:18;;;;;:11;:18;;;;;:28;28638:66;;28647:26;;;;;28675:28;28638:8;:66::i;:::-;28631:73;28204:507;-1:-1:-1;;;;28204:507:82:o;2384:178:49:-;2448:26;;;;;;;:20;:26;;;;;;;;2444:112;;;2490:55;2499:10;:18;;;;10270:3:31;2490:8:49;:55::i;26970:1024:82:-;27054:11;;27023:28;27095:36;27115:15;27095:19;:36::i;:::-;27075:56;;27249:9;27226:20;:32;:64;;;;27275:15;27262:9;:28;27226:64;27222:183;;;27388:7;;;;27222:183;27415:13;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27560:9;27555:310;27579:2;27575:1;:6;27555:310;;;27629:9;27606:20;:32;27602:43;;;27640:5;;27602:43;27699:47;;;;;:25;:13;:25;;;;:47;;27725:20;;27699:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27660:36;;;;:14;:36;;;;;:86;27847:7;27823:31;;;;27583:3;;27555:310;;;-1:-1:-1;;27953:11:82;:34;26970:1024::o;13530:2283::-;13648:18;;;13597:7;13648:18;;;:11;:18;;;;;13597:7;13711:36;13735:4;13660:5;13711:23;:36::i;:::-;14490:11;;14503:16;;;14410:28;14503:16;;;:10;:16;;;;;:27;13676:71;;-1:-1:-1;14410:28:82;14441:157;;14463:69;;14481:50;;14490:11;14503:27;;;;;14481:8;:50::i;:::-;14463:17;:69::i;:::-;14566:21;;14546:42;;14566:21;;;;;14546:19;:42::i;:::-;14441:8;:157::i;:::-;14661:21;;;;14609:49;14661:21;;;:14;:21;;;;;;;;14753:29;;;;;:23;:29;;;;;14410:188;;-1:-1:-1;14661:21:82;;14753:29;14609:49;14817:446;14841:2;14837:1;:6;14817:446;;;14984:20;14956:24;:48;14952:59;;15006:5;;14952:59;15163:40;;;;:14;:40;;;;;;;;;15095:48;;;;;;;15053:39;;;;;;;:90;15163:40;15052:151;;;;15245:7;15217:35;;;;;15052:151;15026:177;;;;;14845:3;;14817:446;;;-1:-1:-1;15371:26:82;;;;;;;;:20;:26;;;;;;;;:33;;;;;;;;;:60;;;15446:10;;15442:341;;15613:24;;;;;;;;;:33;;;15578:69;;;;;;;;15661:32;:18;;;15680:4;15640:6;15661:18;:32::i;:::-;15712:60;15726:4;15732:5;15739:6;15747:24;15712:60;;;;;;;;;:::i;:::-;;;;;;;;15442:341;15800:6;13530:2283;-1:-1:-1;;;;;;;;13530:2283:82:o;2078:163:49:-;2153:26;;;;;;;:20;:26;;;;;;;:36;;;;;;;;;;2204:30;;;;;2153:26;;:36;;2204:30;:::i;:::-;;;;;;;;2078:163;;:::o;2386:188:58:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;1430:265:47:-;1605:83;1627:7;1636:10;1648:9;1659:17;1678:9;1605:21;:83::i;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;28827:919:82:-;28998:7;29031:12;29067;28998:7;29175:545;29199:3;29195:1;:7;29175:545;;;29234:3;29227;:10;29223:21;;29239:5;;29223:21;29442:1;29425:9;;;:13;;29424:19;29457:29;;:::i;:::-;29489:43;;;;;:32;:13;:32;;;;:43;;29522:4;;29528:3;;29489:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29457:75;;29559:9;29550:2;:5;;;:18;29546:164;;29594:3;29588:9;;29546:164;;;29694:1;29688:3;:7;29682:13;;29546:164;-1:-1:-1;;29204:3:82;;29175:545;;;-1:-1:-1;29736:3:82;;28827:919;-1:-1:-1;;;;;;28827:919:82:o;30186:212::-;30254:7;30347:44;30367:23;;;30347:19;:44::i;1922:228:55:-;2113:9;;;2124:8;;;2109:24;2102:32;;;2078:66::o;29871:196:82:-;30042:7;30030:19;;;;30029:31;;29871:196::o;1404:121:65:-;1462:7;1488:30;1492:1;1495;5194::31;1488:3:65;:30::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:31;3134:8:64;:97::i;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;1514:214:64:-;1626:95;1654:5;1685:23;;;1710:2;1714:5;1662:58;;;;;;;;;:::i;1626:95::-;1514:214;;;:::o;3433:187:58:-;3595:9;;3570:44::o;1701:1214:47:-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:31;2487:8:47;:63::i;:::-;-1:-1:-1;;;2884:19:47;;;;:10;:19;;;;;;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:47:o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;1816:206:65:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:65;;;1816:206::o;3199:183:58:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;1045:414:50:-;1199:4;1219:20;:7;:18;;;:20::i;:::-;1215:238;;;1262:53;;1319:34;1262:53;;;1319:34;1262;;;;1319;;1262:53;;1297:6;;1305:9;;1262:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:91;;;;-1:-1:-1;1255:98:50;;1215:238;1391:51;1415:7;1424:6;1432:9;1391:23;:51::i;:::-;1384:58;;;;1692:3378:31;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1031:433:56;1403:20;1449:8;;;1031:433::o;2921:876:47:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:31;3082:8:47;:60::i;:::-;3427:4;3412:20;;;3406:27;3472:4;3457:20;;;3451:27;3525:4;3510:20;;3504:27;3579:26;;3153:9;3579:26;;;;;;;;;3406:27;;3451;;3496:36;;;3579:26;;;;3589:6;;3496:36;;3406:27;;3451;;3579:26;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:47;;;;;;-1:-1:-1;;3728:30:47;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:47:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;168:367::-;;;313:3;306:4;298:6;294:17;290:27;280:2;;-1:-1;;321:12;280:2;-1:-1;351:20;;391:18;380:30;;377:2;;;-1:-1;;413:12;377:2;457:4;449:6;445:17;433:29;;508:3;457:4;;492:6;488:17;449:6;474:32;;471:41;468:2;;;525:1;;515:12;468:2;273:262;;;;;:::o;1942:132::-;2019:13;;23087:2;23076:21;;;25194:34;;25184:2;;25242:1;;25232:12;3203:241;;3307:2;3295:9;3286:7;3282:23;3278:32;3275:2;;;-1:-1;;3313:12;3275:2;85:6;72:20;97:33;124:5;97:33;:::i;3451:552::-;;;;3622:2;3610:9;3601:7;3597:23;3593:32;3590:2;;;-1:-1;;3628:12;3590:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3680:63;-1:-1;3808:2;3793:18;;3780:32;3832:18;3821:30;;3818:2;;;-1:-1;;3854:12;3818:2;3892:95;3979:7;3970:6;3959:9;3955:22;3892:95;:::i;:::-;3584:419;;3874:113;;-1:-1;3874:113;;-1:-1;;;;3584:419::o;4010:589::-;;;;4154:2;4142:9;4133:7;4129:23;4125:32;4122:2;;;-1:-1;;4160:12;4122:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4212:63;-1:-1;4312:2;4348:22;;;985:20;1010:30;985:20;1010:30;:::i;:::-;4320:60;-1:-1;4445:2;4430:18;;4417:32;4469:18;4458:30;;;4455:2;;;-1:-1;;4491:12;4455:2;4566:6;4555:9;4551:22;;;1428:3;1421:4;1413:6;1409:17;1405:27;1395:2;;-1:-1;;1436:12;1395:2;1483:6;1470:20;4469:18;20907:6;20904:30;20901:2;;;-1:-1;;20937:12;20901:2;1505:64;4312:2;21010:9;1421:4;20995:6;20991:17;20987:33;21068:15;1505:64;:::i;:::-;1496:73;;1589:6;1582:5;1575:21;1693:3;4312:2;1684:6;1617;1675:16;;1672:25;1669:2;;;-1:-1;;1700:12;1669:2;24083:6;4312:2;1617:6;1613:17;4312:2;1651:5;1647:16;24060:30;-1:-1;4312:2;24130:6;1651:5;24121:16;;24114:27;;4511:72;;;;;;4116:483;;;;;:::o;4606:396::-;;;4742:2;4730:9;4721:7;4717:23;4713:32;4710:2;;;-1:-1;;4748:12;4710:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4800:63;-1:-1;4900:2;4954:22;;1857:20;1882:48;1857:20;1882:48;:::i;:::-;4908:78;;;;4704:298;;;;;:::o;5009:366::-;;;5130:2;5118:9;5109:7;5105:23;5101:32;5098:2;;;-1:-1;;5136:12;5098:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5188:63;5288:2;5327:22;;;;2992:20;;-1:-1;;;5092:283::o;5382:427::-;;;5536:2;5524:9;5515:7;5511:23;5507:32;5504:2;;;-1:-1;;5542:12;5504:2;5600:17;5587:31;5638:18;5630:6;5627:30;5624:2;;;-1:-1;;5660:12;5624:2;5698:95;5785:7;5776:6;5765:9;5761:22;5698:95;:::i;:::-;5680:113;;;;-1:-1;5498:311;-1:-1;;;;5498:311::o;5816:708::-;;;;;6022:2;6010:9;6001:7;5997:23;5993:32;5990:2;;;-1:-1;;6028:12;5990:2;6086:17;6073:31;6124:18;;6116:6;6113:30;6110:2;;;-1:-1;;6146:12;6110:2;6184:95;6271:7;6262:6;6251:9;6247:22;6184:95;:::i;:::-;6166:113;;-1:-1;6166:113;-1:-1;6344:2;6329:18;;6316:32;;-1:-1;6357:30;;;6354:2;;;-1:-1;;6390:12;6354:2;;6428:80;6500:7;6491:6;6480:9;6476:22;6428:80;:::i;:::-;5984:540;;;;-1:-1;6410:98;-1:-1;;;;5984:540::o;6531:235::-;;6632:2;6620:9;6611:7;6607:23;6603:32;6600:2;;;-1:-1;;6638:12;6600:2;998:6;985:20;1010:30;1034:5;1010:30;:::i;6773:257::-;;6885:2;6873:9;6864:7;6860:23;6856:32;6853:2;;;-1:-1;;6891:12;6853:2;1133:6;1127:13;1145:30;1169:5;1145:30;:::i;7037:261::-;;7151:2;7139:9;7130:7;7126:23;7122:32;7119:2;;;-1:-1;;7157:12;7119:2;1270:6;1264:13;22823:66;24945:5;22812:78;24921:5;24918:34;24908:2;;-1:-1;;24956:12;7986:310;;8124:3;8112:9;8103:7;8099:23;8095:33;8092:2;;;-1:-1;;8131:12;8092:2;2273:20;8124:3;2273:20;:::i;:::-;2375:59;2430:3;2406:22;2375:59;:::i;:::-;2357:16;2350:85;2530:59;2585:3;2497:2;2565:9;2561:22;2530:59;:::i;:::-;2497:2;2516:5;2512:16;2505:85;2649:2;2718:9;2714:22;3140:13;2649:2;2668:5;2664:16;2657:86;2803:2;2872:9;2868:22;3140:13;2803:2;2822:5;2818:16;2811:86;8183:97;;;;8086:210;;;;:::o;8303:241::-;;8407:2;8395:9;8386:7;8382:23;8378:32;8375:2;;;-1:-1;;8413:12;8375:2;-1:-1;2992:20;;8369:175;-1:-1;8369:175::o;8551:263::-;;8666:2;8654:9;8645:7;8641:23;8637:32;8634:2;;;-1:-1;;8672:12;8634:2;-1:-1;3140:13;;8628:186;-1:-1;8628:186::o;12767:271::-;;10752:5;21361:12;10863:52;10908:6;10903:3;10896:4;10889:5;10885:16;10863:52;:::i;:::-;10927:16;;;;;12901:137;-1:-1;;12901:137::o;13045:659::-;11591:66;11571:87;;11556:1;11677:11;;10034:37;;;;13556:12;;;10034:37;13667:12;;;13290:414::o;13711:222::-;23182:42;23171:54;;;;9074:37;;13838:2;13823:18;;13809:124::o;13940:444::-;23182:42;23171:54;;;9074:37;;23171:54;;;;14287:2;14272:18;;9074:37;14370:2;14355:18;;10034:37;;;;14123:2;14108:18;;14094:290::o;14391:321::-;23182:42;23171:54;;;;9074:37;;22646:13;22639:21;14698:2;14683:18;;9917:34;14540:2;14525:18;;14511:201::o;14719:586::-;23182:42;23171:54;;;9074:37;;23171:54;;;;15125:2;15110:18;;11041:65;15208:2;15193:18;;10034:37;15291:2;15276:18;;10034:37;;;;14945:3;14930:19;;14916:389::o;15312:333::-;23182:42;23171:54;;;;9074:37;;15631:2;15616:18;;10034:37;15467:2;15452:18;;15438:207::o;15652:370::-;15829:2;15843:47;;;21361:12;;15814:18;;;21764:19;;;15652:370;;15829:2;21215:14;;;;21804;;;;15652:370;9562:260;9587:6;9584:1;9581:13;9562:260;;;9648:13;;10034:37;;21619:14;;;;8975;;;;9609:1;9602:9;9562:260;;16029:210;22646:13;;22639:21;9917:34;;16150:2;16135:18;;16121:118::o;16246:222::-;10034:37;;;16373:2;16358:18;;16344:124::o;16475:544::-;10034:37;;;23182:42;23171:54;;;;16845:2;16830:18;;9074:37;22646:13;22639:21;16922:2;16907:18;;9917:34;17005:2;16990:18;;10034:37;16680:3;16665:19;;16651:368::o;17026:668::-;10034:37;;;17430:2;17415:18;;10034:37;;;;17513:2;17498:18;;10034:37;;;;17596:2;17581:18;;10034:37;23182:42;23171:54;17679:3;17664:19;;9074:37;17265:3;17250:19;;17236:458::o;17701:417::-;;10064:5;10041:3;10034:37;17874:2;17992;17981:9;17977:18;17970:48;10384:5;21361:12;21776:6;17874:2;17863:9;17859:18;21764:19;10477:52;10522:6;21804:14;17863:9;21804:14;17992:2;10503:5;10499:16;10477:52;:::i;:::-;24601:2;24581:14;24597:7;24577:28;10541:39;;;;21804:14;10541:39;;17845:273;-1:-1;;;17845:273::o;18125:548::-;10034:37;;;23387:4;23376:16;;;;18493:2;18478:18;;12720:35;18576:2;18561:18;;10034:37;18659:2;18644:18;;10034:37;18332:3;18317:19;;18303:370::o;18680:474::-;23182:42;23171:54;;;;11041:65;;19057:2;19042:18;;10034:37;;;;19140:2;19125:18;;10034:37;18878:2;18863:18;;18849:305::o;19434:416::-;19634:2;19648:47;;;11927:2;19619:18;;;21764:19;11963:32;21804:14;;;11943:53;12015:12;;;19605:245::o;19857:416::-;20057:2;20071:47;;;12266:2;20042:18;;;21764:19;12302:34;21804:14;;;12282:55;12371:6;12357:12;;;12350:28;12397:12;;;20028:245::o;20509:256::-;20571:2;20565:9;20597:17;;;20672:18;20657:34;;20693:22;;;20654:62;20651:2;;;20729:1;;20719:12;20651:2;20571;20738:22;20549:216;;-1:-1;20549:216::o;24156:268::-;24221:1;24228:101;24242:6;24239:1;24236:13;24228:101;;;24309:11;;;24303:18;24290:11;;;24283:39;24264:2;24257:10;24228:101;;;24344:6;24341:1;24338:13;24335:2;;;-1:-1;;24221:1;24391:16;;24384:27;24205:219::o;24618:117::-;23182:42;24705:5;23171:54;24680:5;24677:35;24667:2;;24726:1;;24716:12;24742:111;24823:5;22646:13;22639:21;24801:5;24798:32;24788:2;;24844:1;;24834:12"},"methodIdentifiers":{"checkpoint()":"c2c4c5c1","checkpointToken(address)":"3902b9bc","checkpointTokens(address[])":"905d10ac","checkpointUser(address)":"14866e08","claimToken(address,address)":"ca31879d","claimTokens(address,address[])":"88720467","depositToken(address,uint256)":"338b5dea","depositTokens(address[],uint256[])":"7b8d6221","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","getTimeCursor()":"82aa5ad4","getTokenLastBalance(address)":"2308805b","getTokenTimeCursor(address)":"acbc1428","getTokensDistributedInWeek(address,uint256)":"d3dc4ca1","getTotalSupplyAtTimestamp(uint256)":"4f3c5090","getUserBalanceAtTimestamp(address,uint256)":"de681faf","getUserTimeCursor(address)":"876e69a1","getUserTokenTimeCursor(address,address)":"8050a7ee","getVotingEscrow()":"08b0308a","isOnlyCallerEnabled(address)":"a1648aa5","setOnlyCallerCheck(bool)":"e811f44b","setOnlyCallerCheckWithSignature(address,bool,bytes)":"fcaa54ee"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"votingEscrow\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"OnlyCallerOptIn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastCheckpointTimestamp\",\"type\":\"uint256\"}],\"name\":\"TokenCheckpointed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"userTokenTimeCursor\",\"type\":\"uint256\"}],\"name\":\"TokensClaimed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"checkpointToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"checkpointTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"checkpointUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"depositTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenLastBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getTokensDistributedInWeek\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getTotalSupplyAtTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getUserBalanceAtTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getUserTokenTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isOnlyCallerEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setOnlyCallerCheck\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"setOnlyCallerCheckWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Supports distributing arbitrarily many different tokens. In order to start distributing a new token to veBAL holders simply transfer the tokens to the `FeeDistributor` contract and then call `checkpointToken`.\",\"kind\":\"dev\",\"methods\":{\"checkpointToken(address)\":{\"details\":\"Any `token` balance held by the FeeDistributor above that which is returned by `getTokenLastBalance` will be distributed evenly across the time period since `token` was last checkpointed. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\",\"params\":{\"token\":\"- The ERC20 token address to be checkpointed.\"}},\"checkpointTokens(address[])\":{\"details\":\"A version of `checkpointToken` which supports checkpointing multiple tokens. See `checkpointToken` for more details.\",\"params\":{\"tokens\":\"- An array of ERC20 token addresses to be checkpointed.\"}},\"checkpointUser(address)\":{\"params\":{\"user\":\"- The address of the user to be checkpointed.\"}},\"claimToken(address,address)\":{\"details\":\"It's not necessary to explicitly checkpoint before calling this function, it will ensure the FeeDistributor is up to date before calculating the amount of tokens to be claimed.\",\"params\":{\"token\":\"- The ERC20 token address to be claimed.\",\"user\":\"- The user on behalf of which to claim.\"},\"returns\":{\"_0\":\"The amount of `token` sent to `user` as a result of claiming.\"}},\"claimTokens(address,address[])\":{\"details\":\"A version of `claimToken` which supports claiming multiple `tokens` on behalf of `user`. See `claimToken` for more details.\",\"params\":{\"tokens\":\"- An array of ERC20 token addresses to be claimed.\",\"user\":\"- The user on behalf of which to claim.\"},\"returns\":{\"_0\":\"An array of the amounts of each token in `tokens` sent to `user` as a result of claiming.\"}},\"depositToken(address,uint256)\":{\"details\":\"Sending tokens directly to the FeeDistributor instead of using `depositToken` may result in tokens being retroactively distributed to past weeks, or for the distribution to carry over to future weeks. If for some reason `depositToken` cannot be called, in order to ensure that all tokens are correctly distributed manually call `checkpointToken` before and after the token transfer.\",\"params\":{\"amount\":\"- The amount of tokens to deposit.\",\"token\":\"- The ERC20 token address to distribute.\"}},\"depositTokens(address[],uint256[])\":{\"details\":\"A version of `depositToken` which supports depositing multiple `tokens` at once. See `depositToken` for more details.\",\"params\":{\"amounts\":\"- An array of token amounts to deposit.\",\"tokens\":\"- An array of ERC20 token addresses to distribute.\"}},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getTokenTimeCursor(address)\":{\"params\":{\"token\":\"- The ERC20 token address to query.\"}},\"getTokensDistributedInWeek(address,uint256)\":{\"params\":{\"timestamp\":\"- The timestamp corresponding to the beginning of the week of interest.\",\"token\":\"- The ERC20 token address to query.\"}},\"getTotalSupplyAtTimestamp(uint256)\":{\"details\":\"Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values. This function requires the contract to have been checkpointed past `timestamp` so that the supply is cached.\",\"params\":{\"timestamp\":\"- The timestamp at which to read the cached total supply at.\"}},\"getUserBalanceAtTimestamp(address,uint256)\":{\"details\":\"Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values. This function requires `user` to have been checkpointed past `timestamp` so that their balance is cached.\",\"params\":{\"timestamp\":\"- The timestamp at which to read the `user`'s cached balance at.\",\"user\":\"- The address of the user of which to read the cached balance of.\"}},\"getUserTimeCursor(address)\":{\"params\":{\"user\":\"- The address of the user to query.\"}},\"getUserTokenTimeCursor(address,address)\":{\"params\":{\"token\":\"- The ERC20 token address to query.\",\"user\":\"- The address of the user to query.\"}},\"isOnlyCallerEnabled(address)\":{\"details\":\"Returns true if caller verification is enabled for the given user, false otherwise.\"},\"setOnlyCallerCheck(bool)\":{\"details\":\"Enables / disables verification mechanism for caller.\",\"params\":{\"enabled\":\"- True if caller verification shall be enabled, false otherwise.\"}}},\"title\":\"Fee Distributor\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"checkpoint()\":{\"notice\":\"Caches the total supply of veBAL at the beginning of each week. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\"},\"checkpointToken(address)\":{\"notice\":\"Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\"},\"checkpointTokens(address[])\":{\"notice\":\"Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\"},\"checkpointUser(address)\":{\"notice\":\"Caches the user's balance of veBAL at the beginning of each week. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\"},\"claimToken(address,address)\":{\"notice\":\"Claims all pending distributions of the provided token for a user.\"},\"claimTokens(address,address[])\":{\"notice\":\"Claims a number of tokens on behalf of a user.\"},\"depositToken(address,uint256)\":{\"notice\":\"Deposits tokens to be distributed in the current week.\"},\"depositTokens(address[],uint256[])\":{\"notice\":\"Deposits tokens to be distributed in the current week.\"},\"getTimeCursor()\":{\"notice\":\"Returns the global time cursor representing the most earliest uncheckpointed week.\"},\"getTokenLastBalance(address)\":{\"notice\":\"Returns the FeeDistributor's cached balance of `token`.\"},\"getTokenTimeCursor(address)\":{\"notice\":\"Returns the token-level time cursor storing the timestamp at up to which tokens have been distributed.\"},\"getTokensDistributedInWeek(address,uint256)\":{\"notice\":\"Returns the amount of `token` which the FeeDistributor received in the week beginning at `timestamp`.\"},\"getTotalSupplyAtTimestamp(uint256)\":{\"notice\":\"Returns the cached total supply of veBAL as of the provided timestamp.\"},\"getUserBalanceAtTimestamp(address,uint256)\":{\"notice\":\"Returns the user's cached balance of veBAL as of the provided timestamp.\"},\"getUserTimeCursor(address)\":{\"notice\":\"Returns the user-level time cursor representing the most earliest uncheckpointed week.\"},\"getUserTokenTimeCursor(address,address)\":{\"notice\":\"Returns the user-level time cursor storing the timestamp of the latest token distribution claimed.\"},\"getVotingEscrow()\":{\"notice\":\"Returns the VotingEscrow (veBAL) token contract\"}},\"notice\":\"Distributes any tokens transferred to the contract (e.g. Protocol fees and any BAL emissions) among veBAL holders proportionally based on a snapshot of the week at which the tokens are sent to the FeeDistributor contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/fee-distribution/FeeDistributor.sol\":\"FeeDistributor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\":{\"keccak256\":\"0x250e4e6dcde3cf83d4d2822e9593c3138f6518ca95d88a0156a292557605640e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a2596b2242650aade0987677bfee7f4ee1359d588244b03cd1b65542f4f06252\",\"dweb:/ipfs/Qmbrb2Lp6suCPngH9sBzmaDBxET6YD6pBH1T8crGw29Cqi\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol\":{\"keccak256\":\"0x7bab0494ee39fb988722edd20b3e5ff747b4acfe93a62d0726c5d63ae3f6e472\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://23e1d154f2fa589cbfa51338c285cf1862edcd6172fdbb26db17a6fcf9581ee2\",\"dweb:/ipfs/Qmbu8wgFjYqZvvv84MKbLiHMSKv3THZuFHCjRchPHLjCdY\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol\":{\"keccak256\":\"0xf82dab09a38bfdaf0983b69829de462c62359bc0bfaa37c4447408d93bd367c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d0172b678ca594e95b7e5d881fd1280b3792052861ca98d77fa6194b524d188\",\"dweb:/ipfs/QmZ3bYEGTrfruXNYAzuFjJeg9Hx6UQw8ZyBzyM72BVGXfT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol\":{\"keccak256\":\"0xc3a9b8d78e475f0290fa6f660b63f42ed4834dfcb61d7935b4b034fd31ef33f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1793575373e2214ceee3aecbd68b8b1a3ff24070b63bf36acb5d7e2bbb700d71\",\"dweb:/ipfs/QmVGYzndTDp2z25g6WqPze1PV5okh7MGBkP3XL2CTggAcM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol\":{\"keccak256\":\"0x028adc486d4df66cfc3157049ebd2772f1033be7159b27173225459d8d833e93\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5a67c6db6916df2ace5765995f45bf03e9ed07dd6e6164a196642ba4d52aa8b4\",\"dweb:/ipfs/QmYkhoC75YFywYqQPCMbj9iWyauVLczE7Db2NLisJR2vqu\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/fee-distribution/FeeDistributor.sol\":{\"keccak256\":\"0xe46c05028895d98f78543b5e663f1f6331a9cee360423b556d5b66a68e391c5d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f21b55c0384a5f1bfd07e1df0c9717f4780bfc726dce026e017d978f3a8c267e\",\"dweb:/ipfs/QmeY8aCe487s6xcq2LNED6hRxR6dJCGzp43wVbPNmQpbCf\"]}},\"version\":1}"}},"contracts/gauges/BaseGaugeFactory.sol":{"BaseGaugeFactory":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getGaugeImplementation()":"39312dee","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/BaseGaugeFactory.sol\":\"BaseGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]}},\"version\":1}"}},"contracts/gauges/ChildChainGaugeCheckpointer.sol":{"ChildChainGaugeCheckpointer":{"abi":[{"inputs":[{"internalType":"contract ChildChainGaugeRegistry","name":"childChainGaugeRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"onVeBalBridged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"onVeBalSupplyUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60a060405234801561001057600080fd5b506040516103f13803806103f18339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b031661038661006b60003980607e528061016452506103866000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806396345fb51461003b578063df130bfe14610045575b600080fd5b610043610078565b005b6100436004803603602081101561005b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661007a565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632ba271116040518163ffffffff1660e01b815260040160206040518083038186803b1580156100e257600080fd5b505afa1580156100f6573d6000803e3d6000fd5b505050506040513d602081101561010c57600080fd5b5051604080517f77b8883a00000000000000000000000000000000000000000000000000000000815260006004820181905260248201849052915192935060609273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016926377b8883a9260448082019391829003018186803b1580156101a657600080fd5b505afa1580156101ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561020157600080fd5b810190808051604051939291908464010000000082111561022157600080fd5b90830190602082018581111561023657600080fd5b825186602082028301116401000000008211171561025357600080fd5b82525081516020918201928201910280838360005b83811015610280578181015183820152602001610268565b50505050905001604052505050905060005b8281101561034a578181815181106102a657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16634b820093856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561031657600080fd5b505af115801561032a573d6000803e3d6000fd5b505050506040513d602081101561034057600080fd5b5050600101610292565b5050505056fea2646970667358221220a28d83c2ef4e9e02feaeefaed759adc408fc0baedc3ad5841363522ae9fb620164736f6c63430007010033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x3F1 CODESIZE SUB DUP1 PUSH2 0x3F1 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x386 PUSH2 0x6B PUSH1 0x0 CODECOPY DUP1 PUSH1 0x7E MSTORE DUP1 PUSH2 0x164 MSTORE POP PUSH2 0x386 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96345FB5 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xDF130BFE EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x78 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2BA27111 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x77B8883A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH1 0x60 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 PUSH4 0x77B8883A SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x253 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x280 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x268 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x34A JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2A6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B820093 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x292 JUMP JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG2 DUP14 DUP4 0xC2 0xEF 0x4E SWAP15 MUL INVALID 0xAE 0xEF 0xAE 0xD7 MSIZE 0xAD 0xC4 ADDMOD 0xFC SIGNEXTEND 0xAE 0xDC GASPRICE 0xD5 DUP5 SGT PUSH4 0x522AE9FB PUSH3 0x16473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"1442:818:84:-:0;;;1584:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1584:128:84;1655:50;;;;-1:-1:-1;;;;;;1655:50:84;;;-1:-1:-1;;;;;1442:818:84;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"13910":[{"length":32,"start":126},{"length":32,"start":356}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c806396345fb51461003b578063df130bfe14610045575b600080fd5b610043610078565b005b6100436004803603602081101561005b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661007a565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632ba271116040518163ffffffff1660e01b815260040160206040518083038186803b1580156100e257600080fd5b505afa1580156100f6573d6000803e3d6000fd5b505050506040513d602081101561010c57600080fd5b5051604080517f77b8883a00000000000000000000000000000000000000000000000000000000815260006004820181905260248201849052915192935060609273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016926377b8883a9260448082019391829003018186803b1580156101a657600080fd5b505afa1580156101ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561020157600080fd5b810190808051604051939291908464010000000082111561022157600080fd5b90830190602082018581111561023657600080fd5b825186602082028301116401000000008211171561025357600080fd5b82525081516020918201928201910280838360005b83811015610280578181015183820152602001610268565b50505050905001604052505050905060005b8281101561034a578181815181106102a657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16634b820093856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561031657600080fd5b505af115801561032a573d6000803e3d6000fd5b505050506040513d602081101561034057600080fd5b5050600101610292565b5050505056fea2646970667358221220a28d83c2ef4e9e02feaeefaed759adc408fc0baedc3ad5841363522ae9fb620164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96345FB5 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xDF130BFE EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x78 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2BA27111 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x77B8883A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH1 0x60 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 PUSH4 0x77B8883A SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x253 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x280 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x268 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x34A JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2A6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B820093 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x292 JUMP JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG2 DUP14 DUP4 0xC2 0xEF 0x4E SWAP15 MUL INVALID 0xAE 0xEF 0xAE 0xD7 MSIZE 0xAD 0xC4 ADDMOD 0xFC SIGNEXTEND 0xAE 0xDC GASPRICE 0xD5 DUP5 SGT PUSH4 0x522AE9FB PUSH3 0x16473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"1442:818:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2145:113;;;:::i;:::-;;1761:335;;;;;;;;;;;;;;;;-1:-1:-1;1761:335:84;;;;:::i;2145:113::-;:::o;1761:335::-;1827:19;1849:24;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1849:38:84;1932:50;;;;;;1967:1;1932:50;;;;;;;;;;;;;;1849:38;;-1:-1:-1;1897:32:84;;1932:34;:24;:34;;;;:50;;;;;;;;;;;:34;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:50:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1897:85;;1997:9;1992:98;2016:11;2012:1;:15;1992:98;;;2048:6;2055:1;2048:9;;;;;;;;;;;;;;:25;;;2074:4;2048:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2029:3:84;;1992:98;;;;1761:335;;;:::o"},"methodIdentifiers":{"onVeBalBridged(address)":"df130bfe","onVeBalSupplyUpdate()":"96345fb5"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ChildChainGaugeRegistry\",\"name\":\"childChainGaugeRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"onVeBalBridged\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onVeBalSupplyUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onVeBalBridged(address)\":{\"params\":{\"user\":\"The user whose veBAL balance was updated.\"}}},\"title\":\"ChildChainGaugeCheckpointer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onVeBalBridged(address)\":{\"notice\":\"Called whenever the veBAL balance of a user is updated in a L2 chain.\"},\"onVeBalSupplyUpdate()\":{\"notice\":\"Called whenever the total veBAL supply is updated in a L2 chain.\"}},\"notice\":\"Checkpointer for all child chain gauges. This contract calls `user_checkpoint` function on every child chain gauge during onVeBalBridged callback.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ChildChainGaugeCheckpointer.sol\":\"ChildChainGaugeCheckpointer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\":{\"keccak256\":\"0xffafd017b9f43c8cc47f59e85e8a5354e4028110fb6c7fdbaeb569018f35e4d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bf250a0d068a2c8203dda057beabbf49705114e51086e885d7dc283a0cf3a249\",\"dweb:/ipfs/QmTBZvND9qY9k4EQYkfA9hYVSP3DxaXgKwuvDAQFDfxic2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\":{\"keccak256\":\"0xbeed8a8a1802aede5aa6670554125c5938ea06fc5a96c1b75dbc93d1dd586048\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5cf7cef349eba6938df4d8993dcab2b16775b2daf0cc0d5ad71d91f27221eb00\",\"dweb:/ipfs/QmS22HyJFUggLjLx9WABDcMPq6XqC3f4Q23NrKv6CmnkL5\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/BalancerMinter.sol\":{\"keccak256\":\"0xbacdfde61937f9cea9166c7e492ac8d65261fb6bdfb621f1f258852799204cc8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3e68da1f25c0211654bb0b04c4ac1a789cb3dfabd7f5db54d6bfbeb49414e0c\",\"dweb:/ipfs/QmRnvBWovj9HNZsEfvrZpbJcs3K7ikwrY8fkX68F7rdxQK\"]},\"contracts/L2BalancerPseudoMinter.sol\":{\"keccak256\":\"0x5b9ddeebb5accdd9e94e89a68004301f4f92c42ccd8be2f1dc5158ffa15665ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae10ff0f3cfff31f80435ac23e95b1e03d547441e7c44f84aa238363493f93bb\",\"dweb:/ipfs/Qmbrk9GBcRu8pBG3kPsGafCJ3RE5Uvyh4toAnjph4kKs3L\"]},\"contracts/gauges/ChildChainGaugeCheckpointer.sol\":{\"keccak256\":\"0xba05099472e3f7cc59ab2346f19ebcd1c606c5fc5a6ff307fdd168c0531fab25\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://38b898490e2e7c4e73806b60592e881fd4c56257b58da2e8a921ded193350add\",\"dweb:/ipfs/QmbgMtBF6Nqp6DFp162hn8fBsT5MqtKadsxGRZ3oiHHkp8\"]},\"contracts/gauges/ChildChainGaugeRegistry.sol\":{\"keccak256\":\"0x80512d1d09d3f3b1d51da620693208a30ca993f104fa3bf33eba0e0ad1a17eb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8008b06daa2c95c59bceff73ced3ebec8d2db9542b48c10a2c6e829a6f2a2466\",\"dweb:/ipfs/QmWqUXnFMLCeBswwmizerXFV8jy3m7dDhdnKNa2Sqk4PXn\"]}},\"version\":1}"}},"contracts/gauges/ChildChainGaugeFactory.sol":{"ChildChainGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IChildChainGauge","name":"gaugeImplementation","type":"address"},{"internalType":"string","name":"factoryVersion","type":"string"},{"internalType":"string","name":"productVersion","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProductVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620009b9380380620009b98339810160408190526200003491620002aa565b8282620000418162000174565b50600180546001600160a01b0319166001600160a01b0392909216919091179055604051620000759082906020016200036e565b60405160208183030381529060405280519060200120836001600160a01b03166354fd4d506040518163ffffffff1660e01b815260040160006040518083038186803b158015620000c557600080fd5b505afa158015620000da573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000104919081019062000330565b6040516020016200011691906200036e565b6040516020818303038152906040528051906020012014620001555760405162461bcd60e51b81526004016200014c906200038c565b60405180910390fd5b80516200016a9060039060208401906200018d565b50505050620003e9565b8051620001899060009060208401906200018d565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001d057805160ff191683800117855562000200565b8280016001018555821562000200579182015b8281111562000200578251825591602001919060010190620001e3565b506200020e92915062000212565b5090565b5b808211156200020e576000815560010162000213565b600082601f8301126200023a578081fd5b81516001600160401b038082111562000251578283fd5b604051601f8301601f19168101602001828111828210171562000272578485fd5b6040528281529250828483016020018610156200028e57600080fd5b620002a1836020830160208801620003b6565b50505092915050565b600080600060608486031215620002bf578283fd5b83516001600160a01b0381168114620002d6578384fd5b60208501519093506001600160401b0380821115620002f3578384fd5b620003018783880162000229565b9350604086015191508082111562000317578283fd5b50620003268682870162000229565b9150509250925092565b60006020828403121562000342578081fd5b81516001600160401b0381111562000358578182fd5b620003668482850162000229565b949350505050565b6000825162000382818460208701620003b6565b9190910192915050565b60208082526010908201526f0ac8aa4a6929e9cbe9a92a69a82a886960831b604082015260600190565b60005b83811015620003d3578181015183820152602001620003b9565b83811115620003e3576000848401525b50505050565b6105c080620003f96000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806354fd4d501161005057806354fd4d501461009f5780639ed93318146100a7578063ce3cc8bd146100ba57610067565b806318d6186f1461006c57806339312dee1461008a575b600080fd5b6100746100da565b6040516100819190610540565b60405180910390f35b61009261018e565b60405161008191906104dd565b6100746101aa565b6100926100b5366004610439565b610229565b6100cd6100c8366004610439565b6102b3565b6040516100819190610535565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b820191906000526020600020905b81548152906001019060200180831161016757829003601f168201915b5050505050905090565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b6000806102346102de565b90508073ffffffffffffffffffffffffffffffffffffffff1663f399e22e8461025b6100da565b6040518363ffffffff1660e01b81526004016102789291906104fe565b600060405180830381600087803b15801561029257600080fd5b505af11580156102a6573d6000803e3d6000fd5b509293505050505b919050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b60015460009081906103059073ffffffffffffffffffffffffffffffffffffffff16610383565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166102ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043090610553565b60405180910390fd5b60006020828403121561044a578081fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461046d578182fd5b9392505050565b60008151808452815b818110156104995760208185018101518683018201520161047d565b818111156104aa5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff841682526040602083015261052d6040830184610474565b949350505050565b901515815260200190565b60006020825261046d6020830184610474565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea2646970667358221220680f55f8befb135112961dcd4211fb9a592f85826be47d06665ff058822b3fcf64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x9B9 CODESIZE SUB DUP1 PUSH3 0x9B9 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x2AA JUMP JUMPDEST DUP3 DUP3 PUSH3 0x41 DUP2 PUSH3 0x174 JUMP JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH3 0x75 SWAP1 DUP3 SWAP1 PUSH1 0x20 ADD PUSH3 0x36E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x54FD4D50 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH3 0x104 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x330 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x116 SWAP2 SWAP1 PUSH3 0x36E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH3 0x155 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x14C SWAP1 PUSH3 0x38C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH3 0x16A SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x18D JUMP JUMPDEST POP POP POP POP PUSH3 0x3E9 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x189 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x18D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x1D0 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x200 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x200 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x200 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x1E3 JUMP JUMPDEST POP PUSH3 0x20E SWAP3 SWAP2 POP PUSH3 0x212 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x20E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x213 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x23A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x251 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP3 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x272 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE SWAP3 POP DUP3 DUP5 DUP4 ADD PUSH1 0x20 ADD DUP7 LT ISZERO PUSH3 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x2A1 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH3 0x3B6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x2BF JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2D6 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x2F3 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH3 0x301 DUP8 DUP4 DUP9 ADD PUSH3 0x229 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x317 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH3 0x326 DUP7 DUP3 DUP8 ADD PUSH3 0x229 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x342 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x358 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH3 0x366 DUP5 DUP3 DUP6 ADD PUSH3 0x229 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x382 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x3B6 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH16 0xAC8AA4A6929E9CBE9A92A69A82A8869 PUSH1 0x83 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x3D3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x3B9 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x3E3 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x5C0 DUP1 PUSH3 0x3F9 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x9ED93318 EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xBA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x18D6186F EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x540 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x92 PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x4DD JUMP JUMPDEST PUSH2 0x74 PUSH2 0x1AA JUMP JUMPDEST PUSH2 0x92 PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x229 JUMP JUMPDEST PUSH2 0xCD PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x535 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x167 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x234 PUSH2 0x2DE JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF399E22E DUP5 PUSH2 0x25B PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x278 SWAP3 SWAP2 SWAP1 PUSH2 0x4FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x305 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x383 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x430 SWAP1 PUSH2 0x553 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x44A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x46D JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x499 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x47D JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x4AA JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x52D PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x474 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x46D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x474 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0xF55F8BEFB13511296 SAR 0xCD TIMESTAMP GT 0xFB SWAP11 MSIZE 0x2F DUP6 DUP3 PUSH12 0xE47D06665FF058822B3FCF64 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"942:1602:85:-:0;;;1046:438;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1235:19;1194:14;994:20:52;1194:14:85;994:11:52;:20::i;:::-;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;1360:32:85::2;::::0;::::2;::::0;1377:14;;1360:32:::2;;;:::i;:::-;;;;;;;;;;;;;1350:43;;;;;;1315:19;-1:-1:-1::0;;;;;1315:27:85::2;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;1315:29:85::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;1298:47;;;;;;;;:::i;:::-;;;;;;;;;;;;;1288:58;;;;;;:105;1267:168;;;;-1:-1:-1::0;;;1267:168:85::2;;;;;;;:::i;:::-;;;;;;;;;1445:32:::0;;::::2;::::0;:15:::2;::::0;:32:::2;::::0;::::2;::::0;::::2;:::i;:::-;;1046:438:::0;;;942:1602;;1224:94:52;1290:21;;;;:8;;:21;;;;;:::i;:::-;;1224:94;:::o;942:1602:85:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;942:1602:85;;;-1:-1:-1;942:1602:85;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;195:444:-1;;308:3;301:4;293:6;289:17;285:27;275:2;;-1:-1;;316:12;275:2;350:13;;-1:-1;;;;;3597:30;;;3594:2;;;-1:-1;;3630:12;3594:2;3263;3257:9;3703;3684:17;;-1:-1;;3680:33;3289:17;;3771:4;3289:17;3349:34;;;3385:22;;;3346:62;3343:2;;;-1:-1;;3411:12;3343:2;3263;3430:22;449:21;;;369:74;-1:-1;369:74;549:16;;;3771:4;549:16;546:25;-1:-1;543:2;;;584:1;;574:12;543:2;594:39;626:6;3771:4;525:5;521:16;3771:4;491:6;487:17;594:39;:::i;:::-;;;;268:371;;;;:::o;647:781::-;;;;840:2;828:9;819:7;815:23;811:32;808:2;;;-1:-1;;846:12;808:2;107:13;;-1:-1;;;;;4530:54;;4956:59;;4946:2;;-1:-1;;5019:12;4946:2;1054;1039:18;;1033:25;898:98;;-1:-1;;;;;;1067:30;;;1064:2;;;-1:-1;;1100:12;1064:2;1130:74;1196:7;1187:6;1176:9;1172:22;1130:74;:::i;:::-;1120:84;;1262:2;1251:9;1247:18;1241:25;1227:39;;1078:18;1278:6;1275:30;1272:2;;;-1:-1;;1308:12;1272:2;;1338:74;1404:7;1395:6;1384:9;1380:22;1338:74;:::i;:::-;1328:84;;;802:626;;;;;:::o;1435:362::-;;1560:2;1548:9;1539:7;1535:23;1531:32;1528:2;;;-1:-1;;1566:12;1528:2;1611:24;;-1:-1;;;;;1644:30;;1641:2;;;-1:-1;;1677:12;1641:2;1707:74;1773:7;1764:6;1753:9;1749:22;1707:74;:::i;:::-;1697:84;1522:275;-1:-1;;;;1522:275::o;2496:::-;;1967:5;3881:12;2079:52;2124:6;2119:3;2112:4;2105:5;2101:16;2079:52;:::i;:::-;2143:16;;;;;2632:139;-1:-1;;2632:139::o;2778:416::-;2978:2;2992:47;;;2396:2;2963:18;;;4026:19;-1:-1;;;4066:14;;;2412:39;2470:12;;;2949:245::o;4597:268::-;4662:1;4669:101;4683:6;4680:1;4677:13;4669:101;;;4750:11;;;4744:18;4731:11;;;4724:39;4705:2;4698:10;4669:101;;;4785:6;4782:1;4779:13;4776:2;;;4662:1;4841:6;4836:3;4832:16;4825:27;4776:2;;4646:219;;;:::o;:::-;942:1602:85;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c806354fd4d501161005057806354fd4d501461009f5780639ed93318146100a7578063ce3cc8bd146100ba57610067565b806318d6186f1461006c57806339312dee1461008a575b600080fd5b6100746100da565b6040516100819190610540565b60405180910390f35b61009261018e565b60405161008191906104dd565b6100746101aa565b6100926100b5366004610439565b610229565b6100cd6100c8366004610439565b6102b3565b6040516100819190610535565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b820191906000526020600020905b81548152906001019060200180831161016757829003601f168201915b5050505050905090565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b6000806102346102de565b90508073ffffffffffffffffffffffffffffffffffffffff1663f399e22e8461025b6100da565b6040518363ffffffff1660e01b81526004016102789291906104fe565b600060405180830381600087803b15801561029257600080fd5b505af11580156102a6573d6000803e3d6000fd5b509293505050505b919050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b60015460009081906103059073ffffffffffffffffffffffffffffffffffffffff16610383565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166102ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043090610553565b60405180910390fd5b60006020828403121561044a578081fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461046d578182fd5b9392505050565b60008151808452815b818110156104995760208185018101518683018201520161047d565b818111156104aa5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff841682526040602083015261052d6040830184610474565b949350505050565b901515815260200190565b60006020825261046d6020830184610474565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea2646970667358221220680f55f8befb135112961dcd4211fb9a592f85826be47d06665ff058822b3fcf64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x9ED93318 EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xBA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x18D6186F EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x540 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x92 PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x4DD JUMP JUMPDEST PUSH2 0x74 PUSH2 0x1AA JUMP JUMPDEST PUSH2 0x92 PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x229 JUMP JUMPDEST PUSH2 0xCD PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x535 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x167 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x234 PUSH2 0x2DE JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF399E22E DUP5 PUSH2 0x25B PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x278 SWAP3 SWAP2 SWAP1 PUSH2 0x4FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x305 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x383 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x430 SWAP1 PUSH2 0x553 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x44A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x46D JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x499 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x47D JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x4AA JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x52D PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x474 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x46D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x474 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0xF55F8BEFB13511296 SAR 0xCD TIMESTAMP GT 0xFB SWAP11 MSIZE 0x2F DUP6 DUP3 PUSH12 0xE47D06665FF058822B3FCF64 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"942:1602:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1703:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;:::-;;;;;;;:::i;1027:98:52:-;;;:::i;2350:192:85:-;;;;;;:::i;:::-;;:::i;1507:131:83:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1703:104:85:-;1785:15;1778:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1753:13;;1778:22;;1785:15;;1778:22;;1785:15;1778:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1703:104;:::o;1309:108:83:-;1390:20;;;;1309:108;:::o;1027:98:52:-;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:13;;1103:15;;1110:8;;1103:15;;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;2350:192:85;2398:7;2417:13;2433:9;:7;:9::i;:::-;2417:25;;2469:5;2452:34;;;2487:4;2493:19;:17;:19::i;:::-;2452:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2530:5:85;;-1:-1:-1;;;;2350:192:85;;;;:::o;1507:131:83:-;1605:26;;1582:4;1605:26;;;:19;:26;;;;;;;;;1507:131::o;1854:214::-;1939:20;;1891:7;;;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;:19;:26;;;;;;:33;;;;2000:4;1971:33;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;142:241:-1;;246:2;234:9;225:7;221:23;217:32;214:2;;;-1:-1;;252:12;214:2;85:6;72:20;3484:42;4008:5;3473:54;3983:5;3980:35;3970:2;;-1:-1;;4019:12;3970:2;304:63;208:175;-1:-1;;;208:175::o;621:347::-;;766:5;3008:12;3165:6;3160:3;3153:19;-1:-1;3612:101;3626:6;3623:1;3620:13;3612:101;;;3202:4;3693:11;;;;;3687:18;3674:11;;;;;3667:39;3641:10;3612:101;;;3728:6;3725:1;3722:13;3719:2;;;-1:-1;3202:4;3784:6;3197:3;3775:16;;3768:27;3719:2;-1:-1;3904:2;3884:14;3900:7;3880:28;924:39;;;;3202:4;924:39;;713:255;-1:-1;;713:255::o;1306:222::-;3484:42;3473:54;;;;461:37;;1433:2;1418:18;;1404:124::o;1535:421::-;;3484:42;3477:5;3473:54;468:3;461:37;1710:2;1828;1817:9;1813:18;1806:48;1868:78;1710:2;1699:9;1695:18;1932:6;1868:78;:::i;:::-;1860:86;1681:275;-1:-1;;;;1681:275::o;1963:210::-;3385:13;;3378:21;575:34;;2084:2;2069:18;;2055:118::o;2180:310::-;;2327:2;2348:17;2341:47;2402:78;2327:2;2316:9;2312:18;2466:6;2402:78;:::i;2497:416::-;2697:2;2711:47;;;1200:2;2682:18;;;3153:19;1236:24;3193:14;;;1216:45;1280:12;;;2668:245::o"},"methodIdentifiers":{"create(address)":"9ed93318","getGaugeImplementation()":"39312dee","getProductVersion()":"18d6186f","isGaugeFromFactory(address)":"ce3cc8bd","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IChildChainGauge\",\"name\":\"gaugeImplementation\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"factoryVersion\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"productVersion\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProductVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address)\":{\"details\":\"As anyone can register arbitrary Balancer pools with the Vault, it's impossible to prove onchain that `pool` is a \\\"valid\\\" deployment. Care must be taken to ensure that gauges deployed from this factory are suitable to distribute rewards. It is possible to deploy multiple gauges for a single pool.\",\"params\":{\"pool\":\"The address of the pool for which to deploy a gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}},\"getProductVersion()\":{\"details\":\"This value will only be updated at factory creation time.\"},\"version()\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address)\":{\"notice\":\"Deploys a new gauge for a Balancer pool.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"getProductVersion()\":{\"notice\":\"Returns a JSON representation of the deployed gauge version containing name, version number and task ID.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ChildChainGaugeFactory.sol\":\"ChildChainGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\":{\"keccak256\":\"0xffafd017b9f43c8cc47f59e85e8a5354e4028110fb6c7fdbaeb569018f35e4d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bf250a0d068a2c8203dda057beabbf49705114e51086e885d7dc283a0cf3a249\",\"dweb:/ipfs/QmTBZvND9qY9k4EQYkfA9hYVSP3DxaXgKwuvDAQFDfxic2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0x95fe58d2b75267e6068077264da8f0ce358f0f9e18167ea902bb1d29e9636ad5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8eb074a823f7cd09f9e73f52af4c6d2602b71ec127ca08acb67336f79dfdc79b\",\"dweb:/ipfs/QmbyDXinvkw5P2KBa7menkS6jp8cdWGg1qhAu5CEYi3vdE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/ChildChainGaugeFactory.sol\":{\"keccak256\":\"0x804d4f5d5179ace8d92c7c25378261ff5561b09327b2ef0a572e076ea0f6af58\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c0bfabfc56a36bfca319f0443401f483f455828b9b17a9b31c0f0333e11cfe72\",\"dweb:/ipfs/QmYmhhUqsxTDYgMnt6ijuN1PExi3LfZXWexaArbFYNnpkU\"]}},\"version\":1}"}},"contracts/gauges/ChildChainGaugeRegistry.sol":{"ChildChainGaugeRegistry":{"abi":[{"inputs":[{"internalType":"contract L2BalancerPseudoMinter","name":"l2BalancerPseudoMinter","type":"address"},{"internalType":"contract ILiquidityGaugeFactory","name":"liquidityGaugeFactory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IChildChainGauge","name":"gauge","type":"address"}],"name":"GaugeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IChildChainGauge","name":"gauge","type":"address"}],"name":"GaugeRemoved","type":"event"},{"inputs":[{"internalType":"contract IChildChainGauge","name":"gauge","type":"address"}],"name":"addGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"endIndex","type":"uint256"}],"name":"getGauges","outputs":[{"internalType":"contract IChildChainGauge[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IChildChainGauge","name":"gauge","type":"address"}],"name":"removeGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalGauges","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"61010060405234801561001157600080fd5b50604051610eaa380380610eaa8339818101604052604081101561003457600080fd5b508051602091820151604080516311b2515f60e31b81529051929391926001600160a01b03851692638d928af89260048082019391829003018186803b15801561007d57600080fd5b505afa158015610091573d6000803e3d6000fd5b505050506040513d60208110156100a757600080fd5b5051306080526001600160601b0319606091821b811660a052600160005592811b831660c0521b1660e05260805160a05160601c60c05160601c60e05160601c610d9f61010b60003950806105b35250806104c25250806104555250610d9f6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063851c1bb31161005b578063851c1bb3146101445780638d928af8146101835780639da882ac146101b4578063aaabadc5146101e75761007d565b80632ba27111146100825780633a0451451461009c57806377b8883a146100d1575b600080fd5b61008a6101ef565b60408051918252519081900360200190f35b6100cf600480360360208110156100b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610200565b005b6100f4600480360360408110156100e757600080fd5b50803590602001356102c2565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610130578181015183820152602001610118565b505050509050019250505060405180910390f35b61008a6004803603602081101561015a57600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661044f565b61018b6104c0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100cf600480360360208110156101ca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104e4565b61018b610854565b60006101fb60016108d4565b905090565b6102086108d8565b61021360018261091e565b61027e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f47415547455f4e4f545f52454749535445524544000000000000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f94ac12f5301759f065db9de7f23677e50bef009f062b028d4d4612f620f0f5fb90600090a250565b606081831061033257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f494e44494345530000000000000000000000000000000000604482015290519081900360640190fd5b61033c60016108d4565b8211156103aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f454e445f494e4445585f4f55545f4f465f424f554e4453000000000000000000604482015290519081900360640190fd5b82820360608167ffffffffffffffff811180156103c657600080fd5b506040519080825280602002602001820160405280156103f0578160200160208202803683370190505b50905060005b828110156104445761040b6001878301610acc565b82828151811061041757fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016103f6565b509150505b92915050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ec6108d8565b6104f4610aef565b60008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561053c57600080fd5b505afa158015610550573d6000803e3d6000fd5b505050506040513d602081101561056657600080fd5b5051604080517f6c71e92000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015291519293507f000000000000000000000000000000000000000000000000000000000000000090911691636c71e92091602480820192602092909190829003018186803b1580156105fc57600080fd5b505afa158015610610573d6000803e3d6000fd5b505050506040513d602081101561062657600080fd5b505161069357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e56414c49445f47415547455f464143544f52590000000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff1663ce3cc8bd836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156106fa57600080fd5b505afa15801561070e573d6000803e3d6000fd5b505050506040513d602081101561072457600080fd5b505161079157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f47415547455f4e4f545f46524f4d5f464143544f525900000000000000000000604482015290519081900360640190fd5b61079c600183610b08565b61080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f47415547455f414c52454144595f524547495354455245440000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316907f9808313031a8f4caa534c417adad16800af7317516eff29a2d37cec0ffb244db90600090a250610851610b90565b50565b600061085e6104c0565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d60208110156108cd57600080fd5b5051905090565b5490565b60006109076000357fffffffff000000000000000000000000000000000000000000000000000000001661044f565b90506108516109168233610b97565b610191610c60565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120548015610ac25783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019101808214610a2757600086600001828154811061098c57fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff909116915081908890859081106109c257fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b8554869080610a3257fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061044992505050565b6000915050610449565b8154600090610ade9083106064610c60565b610ae88383610c72565b9392505050565b610b0160026000541415610190610c60565b6002600055565b6000610b148383610cac565b610b8857508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155610449565b506000610449565b6001600055565b6000610ba1610854565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610c2d57600080fd5b505afa158015610c41573d6000803e3d6000fd5b505050506040513d6020811015610c5757600080fd5b50519392505050565b81610c6e57610c6e81610cda565b5050565b6000826000018281548110610c8357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610851917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220809e41012a663e264fa73f9df103c36dc5be1011b081801143089752726cf80564736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xEAA CODESIZE SUB DUP1 PUSH2 0xEAA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x11B2515F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0x8D928AF8 SWAP3 PUSH1 0x4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x91 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE SWAP3 DUP2 SHL DUP4 AND PUSH1 0xC0 MSTORE SHL AND PUSH1 0xE0 MSTORE PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0xD9F PUSH2 0x10B PUSH1 0x0 CODECOPY POP DUP1 PUSH2 0x5B3 MSTORE POP DUP1 PUSH2 0x4C2 MSTORE POP DUP1 PUSH2 0x455 MSTORE POP PUSH2 0xD9F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0x9DA882AC EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1E7 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x2BA27111 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x3A045145 EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0x77B8883A EQ PUSH2 0xD1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x1EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x200 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x130 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x118 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x44F JUMP JUMPDEST PUSH2 0x18B PUSH2 0x4C0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4E4 JUMP JUMPDEST PUSH2 0x18B PUSH2 0x854 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FB PUSH1 0x1 PUSH2 0x8D4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x208 PUSH2 0x8D8 JUMP JUMPDEST PUSH2 0x213 PUSH1 0x1 DUP3 PUSH2 0x91E JUMP JUMPDEST PUSH2 0x27E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47415547455F4E4F545F52454749535445524544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH32 0x94AC12F5301759F065DB9DE7F23677E50BEF009F062B028D4D4612F620F0F5FB SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP4 LT PUSH2 0x332 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E44494345530000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x33C PUSH1 0x1 PUSH2 0x8D4 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E445F494E4445585F4F55545F4F465F424F554E4453000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 SUB PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3F0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x444 JUMPI PUSH2 0x40B PUSH1 0x1 DUP8 DUP4 ADD PUSH2 0xACC JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x417 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3F6 JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4EC PUSH2 0x8D8 JUMP JUMPDEST PUSH2 0x4F4 PUSH2 0xAEF JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC45A0155 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x53C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x550 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x6C71E92000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0x6C71E920 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x610 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x693 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F47415547455F464143544F52590000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCE3CC8BD DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x70E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x724 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x791 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47415547455F4E4F545F46524F4D5F464143544F525900000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x79C PUSH1 0x1 DUP4 PUSH2 0xB08 JUMP JUMPDEST PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47415547455F414C52454144595F524547495354455245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH32 0x9808313031A8F4CAA534C417ADAD16800AF7317516EFF29A2D37CEC0FFB244DB SWAP1 PUSH1 0x0 SWAP1 LOG2 POP PUSH2 0x851 PUSH2 0xB90 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85E PUSH2 0x4C0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x907 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x44F JUMP JUMPDEST SWAP1 POP PUSH2 0x851 PUSH2 0x916 DUP3 CALLER PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xC60 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0xAC2 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0xA27 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x98C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x9C2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0xA32 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x449 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x449 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xADE SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0xC60 JUMP JUMPDEST PUSH2 0xAE8 DUP4 DUP4 PUSH2 0xC72 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB01 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xC60 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB14 DUP4 DUP4 PUSH2 0xCAC JUMP JUMPDEST PUSH2 0xB88 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x449 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x449 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBA1 PUSH2 0x854 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xC6E JUMPI PUSH2 0xC6E DUP2 PUSH2 0xCDA JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC83 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x851 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 SWAP15 COINBASE ADD 0x2A PUSH7 0x3E264FA73F9DF1 SUB 0xC3 PUSH14 0xC5BE1011B081801143089752726C 0xF8 SDIV PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1440:3744:86:-:0;;;2102:297;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2102:297:86;;;;;;;;2239:33;;-1:-1:-1;;;2239:33:86;;;;2102:297;;;;-1:-1:-1;;;;;2239:31:86;;;;;:33;;;;;;;;;;;:31;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2239:33:86;1054:4:51;2049:46:46;;-1:-1:-1;;;;;;1073:14:51::1;::::0;;;;;::::1;::::0;2070:1:63;1030:31:51;2175:22:63;2288:48:86;;;;;::::1;::::0;2346:46;;::::1;::::0;1440:3744;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":1109}],"3611":[{"length":32,"start":1218}],"14077":[{"length":32,"start":1459}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c8063851c1bb31161005b578063851c1bb3146101445780638d928af8146101835780639da882ac146101b4578063aaabadc5146101e75761007d565b80632ba27111146100825780633a0451451461009c57806377b8883a146100d1575b600080fd5b61008a6101ef565b60408051918252519081900360200190f35b6100cf600480360360208110156100b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610200565b005b6100f4600480360360408110156100e757600080fd5b50803590602001356102c2565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610130578181015183820152602001610118565b505050509050019250505060405180910390f35b61008a6004803603602081101561015a57600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661044f565b61018b6104c0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100cf600480360360208110156101ca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104e4565b61018b610854565b60006101fb60016108d4565b905090565b6102086108d8565b61021360018261091e565b61027e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f47415547455f4e4f545f52454749535445524544000000000000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f94ac12f5301759f065db9de7f23677e50bef009f062b028d4d4612f620f0f5fb90600090a250565b606081831061033257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f494e44494345530000000000000000000000000000000000604482015290519081900360640190fd5b61033c60016108d4565b8211156103aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f454e445f494e4445585f4f55545f4f465f424f554e4453000000000000000000604482015290519081900360640190fd5b82820360608167ffffffffffffffff811180156103c657600080fd5b506040519080825280602002602001820160405280156103f0578160200160208202803683370190505b50905060005b828110156104445761040b6001878301610acc565b82828151811061041757fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016103f6565b509150505b92915050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ec6108d8565b6104f4610aef565b60008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561053c57600080fd5b505afa158015610550573d6000803e3d6000fd5b505050506040513d602081101561056657600080fd5b5051604080517f6c71e92000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015291519293507f000000000000000000000000000000000000000000000000000000000000000090911691636c71e92091602480820192602092909190829003018186803b1580156105fc57600080fd5b505afa158015610610573d6000803e3d6000fd5b505050506040513d602081101561062657600080fd5b505161069357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e56414c49445f47415547455f464143544f52590000000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff1663ce3cc8bd836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156106fa57600080fd5b505afa15801561070e573d6000803e3d6000fd5b505050506040513d602081101561072457600080fd5b505161079157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f47415547455f4e4f545f46524f4d5f464143544f525900000000000000000000604482015290519081900360640190fd5b61079c600183610b08565b61080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f47415547455f414c52454144595f524547495354455245440000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316907f9808313031a8f4caa534c417adad16800af7317516eff29a2d37cec0ffb244db90600090a250610851610b90565b50565b600061085e6104c0565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d60208110156108cd57600080fd5b5051905090565b5490565b60006109076000357fffffffff000000000000000000000000000000000000000000000000000000001661044f565b90506108516109168233610b97565b610191610c60565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120548015610ac25783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019101808214610a2757600086600001828154811061098c57fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff909116915081908890859081106109c257fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b8554869080610a3257fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061044992505050565b6000915050610449565b8154600090610ade9083106064610c60565b610ae88383610c72565b9392505050565b610b0160026000541415610190610c60565b6002600055565b6000610b148383610cac565b610b8857508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155610449565b506000610449565b6001600055565b6000610ba1610854565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610c2d57600080fd5b505afa158015610c41573d6000803e3d6000fd5b505050506040513d6020811015610c5757600080fd5b50519392505050565b81610c6e57610c6e81610cda565b5050565b6000826000018281548110610c8357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610851917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220809e41012a663e264fa73f9df103c36dc5be1011b081801143089752726cf80564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0x9DA882AC EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1E7 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x2BA27111 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x3A045145 EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0x77B8883A EQ PUSH2 0xD1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x1EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x200 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x130 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x118 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x44F JUMP JUMPDEST PUSH2 0x18B PUSH2 0x4C0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4E4 JUMP JUMPDEST PUSH2 0x18B PUSH2 0x854 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FB PUSH1 0x1 PUSH2 0x8D4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x208 PUSH2 0x8D8 JUMP JUMPDEST PUSH2 0x213 PUSH1 0x1 DUP3 PUSH2 0x91E JUMP JUMPDEST PUSH2 0x27E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47415547455F4E4F545F52454749535445524544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH32 0x94AC12F5301759F065DB9DE7F23677E50BEF009F062B028D4D4612F620F0F5FB SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP4 LT PUSH2 0x332 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E44494345530000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x33C PUSH1 0x1 PUSH2 0x8D4 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E445F494E4445585F4F55545F4F465F424F554E4453000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 SUB PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3F0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x444 JUMPI PUSH2 0x40B PUSH1 0x1 DUP8 DUP4 ADD PUSH2 0xACC JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x417 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3F6 JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4EC PUSH2 0x8D8 JUMP JUMPDEST PUSH2 0x4F4 PUSH2 0xAEF JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC45A0155 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x53C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x550 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x6C71E92000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0x6C71E920 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x610 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x693 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F47415547455F464143544F52590000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCE3CC8BD DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x70E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x724 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x791 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47415547455F4E4F545F46524F4D5F464143544F525900000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x79C PUSH1 0x1 DUP4 PUSH2 0xB08 JUMP JUMPDEST PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47415547455F414C52454144595F524547495354455245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH32 0x9808313031A8F4CAA534C417ADAD16800AF7317516EFF29A2D37CEC0FFB244DB SWAP1 PUSH1 0x0 SWAP1 LOG2 POP PUSH2 0x851 PUSH2 0xB90 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85E PUSH2 0x4C0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x907 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x44F JUMP JUMPDEST SWAP1 POP PUSH2 0x851 PUSH2 0x916 DUP3 CALLER PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xC60 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0xAC2 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0xA27 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x98C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x9C2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0xA32 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x449 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x449 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xADE SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0xC60 JUMP JUMPDEST PUSH2 0xAE8 DUP4 DUP4 PUSH2 0xC72 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB01 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xC60 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB14 DUP4 DUP4 PUSH2 0xCAC JUMP JUMPDEST PUSH2 0xB88 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x449 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x449 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBA1 PUSH2 0x854 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xC6E JUMPI PUSH2 0xC6E DUP2 PUSH2 0xCDA JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC83 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x851 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 SWAP15 COINBASE ADD 0x2A PUSH7 0x3E264FA73F9DF1 SUB 0xC3 PUSH14 0xC5BE1011B081801143089752726C 0xF8 SDIV PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1440:3744:86:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4147:95;;;:::i;:::-;;;;;;;;;;;;;;;;3797:182;;;;;;;;;;;;;;;;-1:-1:-1;3797:182:86;;;;:::i;:::-;;4647:535;;;;;;;;;;;;;;;;-1:-1:-1;4647:535:86;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2607:430:46;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:46;;;;:::i;1158:79:51:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2836:618:86;;;;;;;;;;;;;;;;-1:-1:-1;2836:618:86;;;;:::i;1297:109:51:-;;;:::i;4147:95:86:-;4193:7;4219:16;:7;:14;:16::i;:::-;4212:23;;4147:95;:::o;3797:182::-;2276:21:46;:19;:21::i;:::-;3882:30:86::1;:7;3905:5:::0;3882:14:::1;:30::i;:::-;3874:63;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3953:19;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;3797:182:::0;:::o;4647:535::-;4727:25;4785:8;4772:10;:21;4764:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4843:16;:7;:14;:16::i;:::-;4831:8;:28;;4823:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4913:21;;;4944:38;4913:21;4985:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4985:28:86;;4944:69;;5029:9;5024:122;5048:4;5044:1;:8;5024:122;;;5108:26;:7;5119:14;;;5108:10;:26::i;:::-;5073:12;5086:1;5073:15;;;;;;;;:62;;;;:15;;;;;;;;;;;:62;5054:3;;5024:122;;;-1:-1:-1;5163:12:86;-1:-1:-1;;4647:535:86;;;;;:::o;2607:430:46:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;2836:618:86:-;2276:21:46;:19;:21::i;:::-;2613:20:63::1;:18;:20::i;:::-;3108:30:86::2;3141:5;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;3141:15:86;3174:52:::2;::::0;;;;;:43:::2;:52:::0;;::::2;;::::0;::::2;::::0;;;3141:15;;-1:-1:-1;3174:23:86::2;:43:::0;;::::2;::::0;::::2;::::0;:52;;;;;3141:15:::2;::::0;3174:52;;;;;;;;:43;:52;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;3174:52:86;3166:86:::2;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;3270:7;:26;;;3305:5;3270:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;3270:42:86;3262:77:::2;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;3358:27;:7;3378:5:::0;3358:11:::2;:27::i;:::-;3350:64;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;3430:17;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;;::::2;2643:1:63;2654:19:::1;:17;:19::i;:::-;2836:618:86::0;:::o;1297:109:51:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:51;;-1:-1:-1;1297:109:51;:::o;4192:114:62:-;4281:18;;4192:114::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;2429:1467:62:-;2639:19;;;2502:4;2639:19;;;:12;;;:19;;;;;;2673:15;;2669:1221;;3114:18;;3066:14;;;;;3114:22;3236:26;;;3232:389;;3282:17;3302:3;:11;;3314:9;3302:22;;;;;;;;;;;;;;;;;;3424:26;;3302:22;;;;;-1:-1:-1;3302:22:62;;3424:3;;3436:13;;3424:26;;;;;;;;;;;;;;;;;;:38;;;;;;;;;;;3536:23;;;;;;-1:-1:-1;3536:12:62;;;:23;;;;;;3562:17;;;3536:43;;3232:389;3699:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3791:19;;;;3699:17;3791:12;;;:19;;;;;;3784:26;;;;3699:17;-1:-1:-1;3825:11:62;;-1:-1:-1;;;3825:11:62;2669:1221;3874:5;3867:12;;;;;4648:199;4750:18;;4722:7;;4741:58;;4750:26;-1:-1:-1;5662:3:31;4741:8:62;:58::i;:::-;4816:24;4829:3;4834:5;4816:12;:24::i;:::-;4809:31;4648:199;-1:-1:-1;;;4648:199:62:o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;1851:410:62:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:62;;;;;;;;-1:-1:-1;1978:23:62;;;;;;;;;;;;;;;;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:62;2232:12;;2963:208:63;2070:1;3142:7;:22;2963:208::o;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1523:60:51;;1412:178;-1:-1:-1;;;1412:178:51:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;5212:135:62:-;5296:7;5322:3;:11;;5334:5;5322:18;;;;;;;;;;;;;;;;;;;;;5212:135;-1:-1:-1;;;5212:135:62:o;3977:134::-;4080:19;;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;1459:126:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"addGauge(address)":"9da882ac","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getGauges(uint256,uint256)":"77b8883a","getVault()":"8d928af8","removeGauge(address)":"3a045145","totalGauges()":"2ba27111"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract L2BalancerPseudoMinter\",\"name\":\"l2BalancerPseudoMinter\",\"type\":\"address\"},{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"liquidityGaugeFactory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IChildChainGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IChildChainGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IChildChainGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"addGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"}],\"name\":\"getGauges\",\"outputs\":[{\"internalType\":\"contract IChildChainGauge[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IChildChainGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"removeGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalGauges\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addGauge(address)\":{\"details\":\"This function checks that the gauge's factory is registered with the L2BalancerPseudoMinter, and that the gauge has been deployed from the registered factory. If these conditions are met, the gauge is added to the registry, and a GaugeAdded event is emitted.\",\"params\":{\"gauge\":\"The gauge to add to the registry.\"}},\"constructor\":{\"params\":{\"l2BalancerPseudoMinter\":\"The L2 Balancer pseudo minter.\",\"liquidityGaugeFactory\":\"The liquidity gauge factory.\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getGauges(uint256,uint256)\":{\"params\":{\"endIndex\":\"The ending index (exclusive) for retrieving gauges from the registry.\",\"startIndex\":\"The starting index (inclusive) for retrieving gauges from the registry.\"},\"returns\":{\"_0\":\"An array of IChildChainGauge containing the gauges within the specified index range.\"}},\"removeGauge(address)\":{\"details\":\"If the gauge is not registered, the function reverts with a \\\"GAUGE_NOT_REGISTERED\\\" error. Remove a gauge might affect the order of the remaining gauges.\",\"params\":{\"gauge\":\"The gauge to remove from the registry.\"}},\"totalGauges()\":{\"returns\":{\"_0\":\"The total number of registered gauges as a uint256.\"}}},\"title\":\"ChildChainGaugeRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addGauge(address)\":{\"notice\":\"Add a gauge to the registry after validating its legitimacy.\"},\"constructor\":{\"notice\":\"Constructor initializes the ChildChainGaugeRegistry contract.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getGauges(uint256,uint256)\":{\"notice\":\"Retrieve a list of gauges within the specified index range from the registry.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"removeGauge(address)\":{\"notice\":\"Remove a registered gauge from the registry and emit a GaugeRemoved event.\"},\"totalGauges()\":{\"notice\":\"Retrieve the total number of gauges registered in the registry.\"}},\"notice\":\"Registry for all child chain gauges. This contract enables the addition and removal of child chain gauges to the registry. Duplication is not permitted. Gauges are verified to be valid.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ChildChainGaugeRegistry.sol\":\"ChildChainGaugeRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\":{\"keccak256\":\"0xffafd017b9f43c8cc47f59e85e8a5354e4028110fb6c7fdbaeb569018f35e4d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bf250a0d068a2c8203dda057beabbf49705114e51086e885d7dc283a0cf3a249\",\"dweb:/ipfs/QmTBZvND9qY9k4EQYkfA9hYVSP3DxaXgKwuvDAQFDfxic2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/BalancerMinter.sol\":{\"keccak256\":\"0xbacdfde61937f9cea9166c7e492ac8d65261fb6bdfb621f1f258852799204cc8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3e68da1f25c0211654bb0b04c4ac1a789cb3dfabd7f5db54d6bfbeb49414e0c\",\"dweb:/ipfs/QmRnvBWovj9HNZsEfvrZpbJcs3K7ikwrY8fkX68F7rdxQK\"]},\"contracts/L2BalancerPseudoMinter.sol\":{\"keccak256\":\"0x5b9ddeebb5accdd9e94e89a68004301f4f92c42ccd8be2f1dc5158ffa15665ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae10ff0f3cfff31f80435ac23e95b1e03d547441e7c44f84aa238363493f93bb\",\"dweb:/ipfs/Qmbrk9GBcRu8pBG3kPsGafCJ3RE5Uvyh4toAnjph4kKs3L\"]},\"contracts/gauges/ChildChainGaugeRegistry.sol\":{\"keccak256\":\"0x80512d1d09d3f3b1d51da620693208a30ca993f104fa3bf33eba0e0ad1a17eb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8008b06daa2c95c59bceff73ced3ebec8d2db9542b48c10a2c6e829a6f2a2466\",\"dweb:/ipfs/QmWqUXnFMLCeBswwmizerXFV8jy3m7dDhdnKNa2Sqk4PXn\"]}},\"version\":1}"}},"contracts/gauges/ChildChainGaugeRewardHelper.sol":{"ChildChainGaugeRewardHelper":{"abi":[{"inputs":[],"name":"CLAIM_FREQUENCY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IRewardsOnlyGauge","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimRewardsFromGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRewardsOnlyGauge[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"claimRewardsFromGauges","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRewardsOnlyGauge","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"token","type":"address"}],"name":"getPendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506105ed806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635db749491461005157806371d5065c1461007a578063c2ec33b51461008f578063ff98f88d146100a2575b600080fd5b61006461005f3660046104ea565b6100aa565b6040516100719190610589565b60405180910390f35b61008d6100883660046104b2565b610237565b005b61008d61009d3660046103f3565b610245565b610064610288565b60008373ffffffffffffffffffffffffffffffffffffffff1663bf88a6ff6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100f257600080fd5b505afa158015610106573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012a9190610473565b73ffffffffffffffffffffffffffffffffffffffff16631afe22a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561017157600080fd5b505af1158015610185573d6000803e3d6000fd5b50506040517f59b7e40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871692506359b7e40991506101dd9086908690600401610562565b602060405180830381600087803b1580156101f757600080fd5b505af115801561020b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022f9190610529565b949350505050565b610241828261028e565b5050565b60005b828110156102825761027a84848381811061025f57fe5b90506020020160208101906102749190610496565b8361028e565b600101610248565b50505050565b610e1081565b8173ffffffffffffffffffffffffffffffffffffffff1663bf88a6ff6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102d457600080fd5b505afa1580156102e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030c9190610473565b73ffffffffffffffffffffffffffffffffffffffff16631afe22a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035357600080fd5b505af1158015610367573d6000803e3d6000fd5b50506040517f84e9bd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851692506384e9bd7e91506103bd908490600401610541565b600060405180830381600087803b1580156103d757600080fd5b505af11580156103eb573d6000803e3d6000fd5b505050505050565b600080600060408486031215610407578283fd5b833567ffffffffffffffff8082111561041e578485fd5b818601915086601f830112610431578485fd5b81358181111561043f578586fd5b8760208083028501011115610452578586fd5b6020928301955093505084013561046881610592565b809150509250925092565b600060208284031215610484578081fd5b815161048f81610592565b9392505050565b6000602082840312156104a7578081fd5b813561048f81610592565b600080604083850312156104c4578182fd5b82356104cf81610592565b915060208301356104df81610592565b809150509250929050565b6000806000606084860312156104fe578283fd5b833561050981610592565b9250602084013561051981610592565b9150604084013561046881610592565b60006020828403121561053a578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff811681146105b457600080fd5b5056fea2646970667358221220d1a0b7da4b1c0d170c5885e5a9132c7d214ac81f855ecbaebbdbea4a8d82b93864736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5ED DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5DB74949 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x71D5065C EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0xC2EC33B5 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0xFF98F88D EQ PUSH2 0xA2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x4EA JUMP JUMPDEST PUSH2 0xAA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x589 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8D PUSH2 0x88 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B2 JUMP JUMPDEST PUSH2 0x237 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8D PUSH2 0x9D CALLDATASIZE PUSH1 0x4 PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x64 PUSH2 0x288 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBF88A6FF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x106 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12A SWAP2 SWAP1 PUSH2 0x473 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1AFE22A6 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x185 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x59B7E40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP3 POP PUSH4 0x59B7E409 SWAP2 POP PUSH2 0x1DD SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x562 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22F SWAP2 SWAP1 PUSH2 0x529 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x241 DUP3 DUP3 PUSH2 0x28E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH2 0x27A DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x25F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x274 SWAP2 SWAP1 PUSH2 0x496 JUMP JUMPDEST DUP4 PUSH2 0x28E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x248 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xE10 DUP2 JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBF88A6FF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x473 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1AFE22A6 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x367 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x84E9BD7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP3 POP PUSH4 0x84E9BD7E SWAP2 POP PUSH2 0x3BD SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x541 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x407 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x41E JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x431 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x43F JUMPI DUP6 DUP7 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x452 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP6 POP SWAP4 POP POP DUP5 ADD CALLDATALOAD PUSH2 0x468 DUP2 PUSH2 0x592 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x484 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x48F DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x48F DUP2 PUSH2 0x592 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4C4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4CF DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4DF DUP2 PUSH2 0x592 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4FE JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x509 DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x519 DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x468 DUP2 PUSH2 0x592 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53A JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD1 LOG0 0xB7 0xDA 0x4B SHR 0xD OR 0xC PC DUP6 0xE5 0xA9 SGT 0x2C PUSH30 0x214AC81F855ECBAEBBDBEA4A8D82B93864736F6C63430007010033000000 ","sourceMap":"1209:2088:87:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061004c5760003560e01c80635db749491461005157806371d5065c1461007a578063c2ec33b51461008f578063ff98f88d146100a2575b600080fd5b61006461005f3660046104ea565b6100aa565b6040516100719190610589565b60405180910390f35b61008d6100883660046104b2565b610237565b005b61008d61009d3660046103f3565b610245565b610064610288565b60008373ffffffffffffffffffffffffffffffffffffffff1663bf88a6ff6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100f257600080fd5b505afa158015610106573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012a9190610473565b73ffffffffffffffffffffffffffffffffffffffff16631afe22a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561017157600080fd5b505af1158015610185573d6000803e3d6000fd5b50506040517f59b7e40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871692506359b7e40991506101dd9086908690600401610562565b602060405180830381600087803b1580156101f757600080fd5b505af115801561020b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022f9190610529565b949350505050565b610241828261028e565b5050565b60005b828110156102825761027a84848381811061025f57fe5b90506020020160208101906102749190610496565b8361028e565b600101610248565b50505050565b610e1081565b8173ffffffffffffffffffffffffffffffffffffffff1663bf88a6ff6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102d457600080fd5b505afa1580156102e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030c9190610473565b73ffffffffffffffffffffffffffffffffffffffff16631afe22a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035357600080fd5b505af1158015610367573d6000803e3d6000fd5b50506040517f84e9bd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851692506384e9bd7e91506103bd908490600401610541565b600060405180830381600087803b1580156103d757600080fd5b505af11580156103eb573d6000803e3d6000fd5b505050505050565b600080600060408486031215610407578283fd5b833567ffffffffffffffff8082111561041e578485fd5b818601915086601f830112610431578485fd5b81358181111561043f578586fd5b8760208083028501011115610452578586fd5b6020928301955093505084013561046881610592565b809150509250925092565b600060208284031215610484578081fd5b815161048f81610592565b9392505050565b6000602082840312156104a7578081fd5b813561048f81610592565b600080604083850312156104c4578182fd5b82356104cf81610592565b915060208301356104df81610592565b809150509250929050565b6000806000606084860312156104fe578283fd5b833561050981610592565b9250602084013561051981610592565b9150604084013561046881610592565b60006020828403121561053a578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff811681146105b457600080fd5b5056fea2646970667358221220d1a0b7da4b1c0d170c5885e5a9132c7d214ac81f855ecbaebbdbea4a8d82b93864736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5DB74949 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x71D5065C EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0xC2EC33B5 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0xFF98F88D EQ PUSH2 0xA2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x4EA JUMP JUMPDEST PUSH2 0xAA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x589 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8D PUSH2 0x88 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B2 JUMP JUMPDEST PUSH2 0x237 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8D PUSH2 0x9D CALLDATASIZE PUSH1 0x4 PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x64 PUSH2 0x288 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBF88A6FF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x106 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12A SWAP2 SWAP1 PUSH2 0x473 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1AFE22A6 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x185 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x59B7E40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP3 POP PUSH4 0x59B7E409 SWAP2 POP PUSH2 0x1DD SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x562 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22F SWAP2 SWAP1 PUSH2 0x529 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x241 DUP3 DUP3 PUSH2 0x28E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH2 0x27A DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x25F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x274 SWAP2 SWAP1 PUSH2 0x496 JUMP JUMPDEST DUP4 PUSH2 0x28E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x248 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xE10 DUP2 JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBF88A6FF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x473 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1AFE22A6 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x367 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x84E9BD7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP3 POP PUSH4 0x84E9BD7E SWAP2 POP PUSH2 0x3BD SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x541 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x407 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x41E JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x431 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x43F JUMPI DUP6 DUP7 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x452 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP6 POP SWAP4 POP POP DUP5 ADD CALLDATALOAD PUSH2 0x468 DUP2 PUSH2 0x592 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x484 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x48F DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x48F DUP2 PUSH2 0x592 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4C4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4CF DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4DF DUP2 PUSH2 0x592 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4FE JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x509 DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x519 DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x468 DUP2 PUSH2 0x592 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53A JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD1 LOG0 0xB7 0xDA 0x4B SHR 0xD OR 0xC PC DUP6 0xE5 0xA9 SGT 0x2C PUSH30 0x214AC81F855ECBAEBBDBEA4A8D82B93864736F6C63430007010033000000 ","sourceMap":"1209:2088:87:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1885:249;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2402:131;;;;;;:::i;:::-;;:::i;:::-;;2819:216;;;;;;:::i;:::-;;:::i;1252:46::-;;;:::i;1885:249::-;2014:7;2033:5;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2086:41:87;;;;;:28;;;;-1:-1:-1;2086:28:87;;-1:-1:-1;2086:41:87;;2115:4;;2121:5;;2086:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2079:48;1885:249;-1:-1:-1;;;;1885:249:87:o;2402:131::-;2491:35;2514:5;2521:4;2491:22;:35::i;:::-;2402:131;;:::o;2819:216::-;2926:9;2921:108;2941:17;;;2921:108;;;2979:39;3002:6;;3009:1;3002:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;3013:4;2979:22;:39::i;:::-;2960:3;;2921:108;;;;2819:216;;;:::o;1252:46::-;1294:4;1252:46;:::o;3068:227::-;3217:5;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3263:25:87;;;;;:19;;;;-1:-1:-1;3263:19:87;;-1:-1:-1;3263:25:87;;3283:4;;3263:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3068:227;;:::o;1090:574:-1:-;;;;1272:2;1260:9;1251:7;1247:23;1243:32;1240:2;;;-1:-1;;1278:12;1240:2;1336:17;1323:31;1374:18;;1366:6;1363:30;1360:2;;;-1:-1;;1396:12;1360:2;1523:6;1512:9;1508:22;;;335:3;328:4;320:6;316:17;312:27;302:2;;-1:-1;;343:12;302:2;386:6;373:20;1374:18;405:6;402:30;399:2;;;-1:-1;;435:12;399:2;530:3;479:4;;514:6;510:17;471:6;496:32;;493:41;490:2;;;-1:-1;;537:12;490:2;479:4;467:17;;;;-1:-1;1416:124;-1:-1;;1616:22;;72:20;97:33;72:20;97:33;:::i;:::-;1585:63;;;;1234:430;;;;;:::o;1671:317::-;;1813:2;1801:9;1792:7;1788:23;1784:32;1781:2;;;-1:-1;;1819:12;1781:2;676:6;670:13;688:60;742:5;688:60;:::i;:::-;1871:101;1775:213;-1:-1;;;1775:213::o;1995:293::-;;2125:2;2113:9;2104:7;2100:23;2096:32;2093:2;;;-1:-1;;2131:12;2093:2;866:6;853:20;878:59;931:5;878:59;:::i;2295:418::-;;;2442:2;2430:9;2421:7;2417:23;2413:32;2410:2;;;-1:-1;;2448:12;2410:2;866:6;853:20;878:59;931:5;878:59;:::i;:::-;2500:89;-1:-1;2626:2;2665:22;;72:20;97:33;72:20;97:33;:::i;:::-;2634:63;;;;2404:309;;;;;:::o;2720:543::-;;;;2884:2;2872:9;2863:7;2859:23;2855:32;2852:2;;;-1:-1;;2890:12;2852:2;866:6;853:20;878:59;931:5;878:59;:::i;:::-;2942:89;-1:-1;3068:2;3107:22;;72:20;97:33;72:20;97:33;:::i;:::-;3076:63;-1:-1;3176:2;3215:22;;72:20;97:33;72:20;97:33;:::i;3270:263::-;;3385:2;3373:9;3364:7;3360:23;3356:32;3353:2;;;-1:-1;;3391:12;3353:2;-1:-1;1027:13;;3347:186;-1:-1;3347:186::o;3780:222::-;4998:42;4987:54;;;;3611:37;;3907:2;3892:18;;3878:124::o;4009:333::-;4998:42;4987:54;;;3611:37;;4987:54;;4328:2;4313:18;;3611:37;4164:2;4149:18;;4135:207::o;4349:222::-;3731:37;;;4476:2;4461:18;;4447:124::o;5132:117::-;4998:42;5219:5;4987:54;5194:5;5191:35;5181:2;;5240:1;;5230:12;5181:2;5175:74;:::o"},"methodIdentifiers":{"CLAIM_FREQUENCY()":"ff98f88d","claimRewardsFromGauge(address,address)":"71d5065c","claimRewardsFromGauges(address[],address)":"c2ec33b5","getPendingRewards(address,address,address)":"5db74949"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CLAIM_FREQUENCY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardsOnlyGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimRewardsFromGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardsOnlyGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimRewardsFromGauges\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardsOnlyGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Balancer Labs\",\"kind\":\"dev\",\"methods\":{\"claimRewardsFromGauge(address,address)\":{\"params\":{\"gauge\":\"- The address of the RewardsOnlyGauge from which to claim rewards.\",\"user\":\"- The address of the user for which to claim rewards.\"}},\"claimRewardsFromGauges(address[],address)\":{\"params\":{\"gauges\":\"- An array of address of RewardsOnlyGauges from which to claim rewards.\",\"user\":\"- The address of the user for which to claim rewards.\"}},\"getPendingRewards(address,address,address)\":{\"details\":\"This function cannot be marked `view` as it updates the gauge's state (not possible in a view context). Offchain users attempting to read from this function should manually perform a static call or modify the abi.\",\"params\":{\"gauge\":\"- The address of the RewardsOnlyGauge for which to query.\",\"token\":\"- The address of the reward token for which to query.\",\"user\":\"- The address of the user for which to query.\"}}},\"title\":\"ChildChainGaugeRewardHelper\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimRewardsFromGauge(address,address)\":{\"notice\":\"Claims pending rewards on RewardsOnlyGauge `gauge` for account `user`.\"},\"claimRewardsFromGauges(address[],address)\":{\"notice\":\"Claims pending rewards on a list of RewardsOnlyGauges `gauges` for account `user`.\"},\"getPendingRewards(address,address,address)\":{\"notice\":\"Returns the amount of ERC20 token `token` on RewardsOnlyGauge `gauge` claimable by address `user`.\"}},\"notice\":\"Helper contract which allows claiming rewards from many RewardsOnlyGauges in a single transaction. This contract manually triggers an update to the gauges' streamers as a workaround for the gauge .\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ChildChainGaugeRewardHelper.sol\":\"ChildChainGaugeRewardHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\":{\"keccak256\":\"0x3cf2370032a789025cffe8d0c613274213fd4e1ceb88cef1c2b039a6d0d08261\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1788ecb804b061fa04678ce311020d66e25b201cf18d452ea290bbc9af12e504\",\"dweb:/ipfs/Qmf84ANUiZtoZHEsbymn7NSZSGikMovYZUVqiPHwVrbBPJ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol\":{\"keccak256\":\"0x8c09c3f372e07adf790d55607401dfa60d8ec2b591f39de772efdf887d965d11\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6cbfa8f8f004ec1cc00739f51bd00763d08600e0bf827c1be4cc21a4afb26874\",\"dweb:/ipfs/QmTxDYJA8y2cJdxHfCq6NLK812WGnxFehTF9bW4n8xa1zx\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"contracts/gauges/ChildChainGaugeRewardHelper.sol\":{\"keccak256\":\"0xd232a359e1d25239d2e4c2017994420d0f495956ca0cf45478ec4f2e804880e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://784bf911c991fda8beba47d240466e38a267e8d98e8d7afada0be08d9823a3ff\",\"dweb:/ipfs/QmRmd7Vz5CFHVYYVQmoMHUhg7qqATtVvqmfJte2aRKY6Bu\"]}},\"version\":1}"}},"contracts/gauges/ChildChainLiquidityGaugeFactory.sol":{"ChildChainLiquidityGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract ILiquidityGauge","name":"gauge","type":"address"},{"internalType":"contract IChildChainStreamer","name":"childChainStreamer","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"streamer","type":"address"}],"name":"RewardsOnlyGaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getChildChainStreamerImplementation","outputs":[{"internalType":"contract IChildChainStreamer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"contract ILiquidityGauge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"getGaugePool","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"getGaugeStreamer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolGauge","outputs":[{"internalType":"contract ILiquidityGauge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolStreamer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"streamer","type":"address"}],"name":"isStreamerFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b5060405161088338038061088383398101604081905261002f9161004d565b6001600160601b0319606092831b8116608052911b1660a05261009e565b6000806040838503121561005f578182fd5b825161006a81610086565b602084015190925061007b81610086565b809150509250929050565b6001600160a01b038116811461009b57600080fd5b50565b60805160601c60a05160601c6107b26100d1600039806102e3528061057e52508061016252806102b652506107b26000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80639ed9331811610076578063cbda93271161005b578063cbda932714610125578063ce3cc8bd14610145578063f9e0a13e14610158576100a3565b80639ed93318146100ff578063a8ea687514610112576100a3565b806339312dee146100a8578063744a65dd146100c65780638a4ffeb0146100d957806390b20087146100ec575b600080fd5b6100b0610160565b6040516100bd919061068c565b60405180910390f35b6100b06100d436600461064d565b610184565b6100b06100e736600461064d565b61020c565b6100b06100fa36600461064d565b61021a565b6100b061010d36600461064d565b610245565b6100b061012036600461064d565b6104fb565b61013861013336600461064d565b610526565b6040516100bd91906106de565b61013861015336600461064d565b610551565b6100b061057c565b7f000000000000000000000000000000000000000000000000000000000000000090565b60008173ffffffffffffffffffffffffffffffffffffffff166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b1580156101cc57600080fd5b505afa1580156101e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102049190610670565b90505b919050565b60006102046100fa836104fb565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600360205260409020541690565b73ffffffffffffffffffffffffffffffffffffffff818116600090815260026020526040812054909116156102af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a6906106e9565b60405180910390fd5b60006102da7f00000000000000000000000000000000000000000000000000000000000000006105a0565b905060006103077f00000000000000000000000000000000000000000000000000000000000000006105a0565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063c4d66de89061035c90859060040161068c565b600060405180830381600087803b15801561037657600080fd5b505af115801561038a573d6000803e3d6000fd5b50506040517f6133f98500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169250636133f98591506103e89087908590631afe22a6906004016106ad565b600060405180830381600087803b15801561040257600080fd5b505af1158015610416573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff82811660008181526020818152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558885168084526002835281842080547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116871790915585855260039093529281902080549587169590921694909417905591517f887aaf82b8cf747396674afdce22a170d9e18895da73bbe1a63055fdfc8dd6b5906104ec90859061068c565b60405180910390a35092915050565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600260205260409020541690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a690610720565b60006020828403121561065e578081fd5b813561066981610757565b9392505050565b600060208284031215610681578081fd5b815161066981610757565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b901515815260200190565b60208082526014908201527f476175676520616c726561647920657869737473000000000000000000000000604082015260600190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff8116811461077957600080fd5b5056fea2646970667358221220acf91573fc2125e02f259cf9c81cab41d9794b019839e73ab3d9379c7a775d3e64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x883 CODESIZE SUB DUP1 PUSH2 0x883 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x4D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0x9E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x6A DUP2 PUSH2 0x86 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x7B DUP2 PUSH2 0x86 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x7B2 PUSH2 0xD1 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2E3 MSTORE DUP1 PUSH2 0x57E MSTORE POP DUP1 PUSH2 0x162 MSTORE DUP1 PUSH2 0x2B6 MSTORE POP PUSH2 0x7B2 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9ED93318 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xCBDA9327 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xCBDA9327 EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xF9E0A13E EQ PUSH2 0x158 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x9ED93318 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xA8EA6875 EQ PUSH2 0x112 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x744A65DD EQ PUSH2 0xC6 JUMPI DUP1 PUSH4 0x8A4FFEB0 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x90B20087 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH2 0x160 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBD SWAP2 SWAP1 PUSH2 0x68C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH2 0xD4 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x184 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0xE7 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x20C JUMP JUMPDEST PUSH2 0xB0 PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x21A JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x10D CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x120 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x4FB JUMP JUMPDEST PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBD SWAP2 SWAP1 PUSH2 0x6DE JUMP JUMPDEST PUSH2 0x138 PUSH2 0x153 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x57C JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x204 SWAP2 SWAP1 PUSH2 0x670 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x204 PUSH2 0xFA DUP4 PUSH2 0x4FB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 AND ISZERO PUSH2 0x2AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A6 SWAP1 PUSH2 0x6E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2DA PUSH32 0x0 PUSH2 0x5A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x307 PUSH32 0x0 PUSH2 0x5A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC4D66DE800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xC4D66DE8 SWAP1 PUSH2 0x35C SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x68C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x38A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x6133F98500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP3 POP PUSH4 0x6133F985 SWAP2 POP PUSH2 0x3E8 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH4 0x1AFE22A6 SWAP1 PUSH1 0x4 ADD PUSH2 0x6AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x416 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE DUP9 DUP6 AND DUP1 DUP5 MSTORE PUSH1 0x2 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND DUP8 OR SWAP1 SWAP2 SSTORE DUP6 DUP6 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP6 DUP8 AND SWAP6 SWAP1 SWAP3 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SSTORE SWAP2 MLOAD PUSH32 0x887AAF82B8CF747396674AFDCE22A170D9E18895DA73BBE1A63055FDFC8DD6B5 SWAP1 PUSH2 0x4EC SWAP1 DUP6 SWAP1 PUSH2 0x68C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x207 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A6 SWAP1 PUSH2 0x720 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x65E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x669 DUP2 PUSH2 0x757 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x681 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x669 DUP2 PUSH2 0x757 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520616C726561647920657869737473000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAC 0xF9 ISZERO PUSH20 0xFC2125E02F259CF9C81CAB41D9794B019839E73A 0xB3 0xD9 CALLDATACOPY SWAP13 PUSH27 0x775D3E64736F6C6343000701003300000000000000000000000000 ","sourceMap":"1081:4011:88:-:0;;;1810:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1895:28:88;;;;;;;;1933:54;;;;;1081:4011;;387:499:-1;;;569:2;557:9;548:7;544:23;540:32;537:2;;;-1:-1;;575:12;537:2;307:6;301:13;319:56;369:5;319:56;:::i;:::-;761:2;838:22;;110:13;627:97;;-1:-1;128:60;110:13;128:60;:::i;:::-;769:101;;;;531:355;;;;;:::o;1365:171::-;-1:-1;;;;;1299:54;;1451:62;;1441:2;;1527:1;;1517:12;1441:2;1435:101;:::o;:::-;1081:4011:88;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14391":[{"length":32,"start":354},{"length":32,"start":694}],"14393":[{"length":32,"start":739},{"length":32,"start":1406}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a35760003560e01c80639ed9331811610076578063cbda93271161005b578063cbda932714610125578063ce3cc8bd14610145578063f9e0a13e14610158576100a3565b80639ed93318146100ff578063a8ea687514610112576100a3565b806339312dee146100a8578063744a65dd146100c65780638a4ffeb0146100d957806390b20087146100ec575b600080fd5b6100b0610160565b6040516100bd919061068c565b60405180910390f35b6100b06100d436600461064d565b610184565b6100b06100e736600461064d565b61020c565b6100b06100fa36600461064d565b61021a565b6100b061010d36600461064d565b610245565b6100b061012036600461064d565b6104fb565b61013861013336600461064d565b610526565b6040516100bd91906106de565b61013861015336600461064d565b610551565b6100b061057c565b7f000000000000000000000000000000000000000000000000000000000000000090565b60008173ffffffffffffffffffffffffffffffffffffffff166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b1580156101cc57600080fd5b505afa1580156101e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102049190610670565b90505b919050565b60006102046100fa836104fb565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600360205260409020541690565b73ffffffffffffffffffffffffffffffffffffffff818116600090815260026020526040812054909116156102af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a6906106e9565b60405180910390fd5b60006102da7f00000000000000000000000000000000000000000000000000000000000000006105a0565b905060006103077f00000000000000000000000000000000000000000000000000000000000000006105a0565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063c4d66de89061035c90859060040161068c565b600060405180830381600087803b15801561037657600080fd5b505af115801561038a573d6000803e3d6000fd5b50506040517f6133f98500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169250636133f98591506103e89087908590631afe22a6906004016106ad565b600060405180830381600087803b15801561040257600080fd5b505af1158015610416573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff82811660008181526020818152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558885168084526002835281842080547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116871790915585855260039093529281902080549587169590921694909417905591517f887aaf82b8cf747396674afdce22a170d9e18895da73bbe1a63055fdfc8dd6b5906104ec90859061068c565b60405180910390a35092915050565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600260205260409020541690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a690610720565b60006020828403121561065e578081fd5b813561066981610757565b9392505050565b600060208284031215610681578081fd5b815161066981610757565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b901515815260200190565b60208082526014908201527f476175676520616c726561647920657869737473000000000000000000000000604082015260600190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff8116811461077957600080fd5b5056fea2646970667358221220acf91573fc2125e02f259cf9c81cab41d9794b019839e73ab3d9379c7a775d3e64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9ED93318 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xCBDA9327 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xCBDA9327 EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xF9E0A13E EQ PUSH2 0x158 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x9ED93318 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xA8EA6875 EQ PUSH2 0x112 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x744A65DD EQ PUSH2 0xC6 JUMPI DUP1 PUSH4 0x8A4FFEB0 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x90B20087 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH2 0x160 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBD SWAP2 SWAP1 PUSH2 0x68C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH2 0xD4 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x184 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0xE7 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x20C JUMP JUMPDEST PUSH2 0xB0 PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x21A JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x10D CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x120 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x4FB JUMP JUMPDEST PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBD SWAP2 SWAP1 PUSH2 0x6DE JUMP JUMPDEST PUSH2 0x138 PUSH2 0x153 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x57C JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x204 SWAP2 SWAP1 PUSH2 0x670 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x204 PUSH2 0xFA DUP4 PUSH2 0x4FB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 AND ISZERO PUSH2 0x2AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A6 SWAP1 PUSH2 0x6E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2DA PUSH32 0x0 PUSH2 0x5A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x307 PUSH32 0x0 PUSH2 0x5A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC4D66DE800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xC4D66DE8 SWAP1 PUSH2 0x35C SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x68C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x38A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x6133F98500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP3 POP PUSH4 0x6133F985 SWAP2 POP PUSH2 0x3E8 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH4 0x1AFE22A6 SWAP1 PUSH1 0x4 ADD PUSH2 0x6AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x416 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE DUP9 DUP6 AND DUP1 DUP5 MSTORE PUSH1 0x2 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND DUP8 OR SWAP1 SWAP2 SSTORE DUP6 DUP6 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP6 DUP8 AND SWAP6 SWAP1 SWAP3 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SSTORE SWAP2 MLOAD PUSH32 0x887AAF82B8CF747396674AFDCE22A170D9E18895DA73BBE1A63055FDFC8DD6B5 SWAP1 PUSH2 0x4EC SWAP1 DUP6 SWAP1 PUSH2 0x68C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x207 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A6 SWAP1 PUSH2 0x720 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x65E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x669 DUP2 PUSH2 0x757 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x681 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x669 DUP2 PUSH2 0x757 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520616C726561647920657869737473000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAC 0xF9 ISZERO PUSH20 0xFC2125E02F259CF9C81CAB41D9794B019839E73A 0xB3 0xD9 CALLDATACOPY SWAP13 PUSH27 0x775D3E64736F6C6343000701003300000000000000000000000000 ","sourceMap":"1081:4011:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2101:127;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3495:136;;;;;;:::i;:::-;;:::i;3733:149::-;;;;;;:::i;:::-;;:::i;3042:125::-;;;;;;:::i;:::-;;:::i;4463:627::-;;;;;;:::i;:::-;;:::i;2586:140::-;;;;;;:::i;:::-;;:::i;3260:143::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2816:131::-;;;;;;:::i;:::-;;:::i;2338:157::-;;;:::i;2101:127::-;2201:20;2101:127;:::o;3495:136::-;3564:6;3607:5;3589:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3582:42;;3495:136;;;;:::o;3733:149::-;3804:7;3830:45;3855:18;3868:4;3855:12;:18::i;3042:125::-;3139:21;;;;3113:7;3139:21;;;:14;:21;;;;;;;;3042:125::o;4463:627::-;4538:30;:16;;;4511:7;4538:16;;;:10;:16;;;;;;4511:7;;4538:16;:30;4530:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4604:13;4620:43;4641:20;4620:12;:43::i;:::-;4604:59;;4673:16;4692:56;4713:33;4692:12;:56::i;:::-;4759:47;;;;;4673:75;;-1:-1:-1;4759:40:88;;;;;;:47;;4800:5;;4759:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4816:63:88;;;;;:35;;;;-1:-1:-1;4816:35:88;;-1:-1:-1;4816:63:88;;4852:4;;4858:8;;1400:37;;4816:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;4890:26:88;;;;:19;:26;;;;;;;;;;;:33;;;;4919:4;4890:33;;;4933:16;;;;;;:10;:16;;;;;:24;;;;;;;;;;;4967:21;;;:14;:21;;;;;;;:32;;;;;;;;;;;;;;;5014:46;;;;;;4967:32;;5014:46;:::i;:::-;;;;;;;;-1:-1:-1;5078:5:88;4463:627;-1:-1:-1;;4463:627:88:o;2586:140::-;2702:16;;;;2652:15;2702:16;;;:10;:16;;;;;;;;2586:140::o;3260:143::-;3364:32;;3341:4;3364:32;;;:22;:32;;;;;;;;;3260:143::o;2816:131::-;2914:26;;2891:4;2914:26;;;;;;;;;;;;;;2816:131::o;2338:157::-;2455:33;2338:157;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;313:241:-1:-;;417:2;405:9;396:7;392:23;388:32;385:2;;;-1:-1;;423:12;385:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;475:63;379:175;-1:-1;;;379:175::o;561:293::-;;691:2;679:9;670:7;666:23;662:32;659:2;;;-1:-1;;697:12;659:2;241:6;235:13;253:48;295:5;253:48;:::i;2401:222::-;5588:42;5577:54;;;;932:37;;2528:2;2513:18;;2499:124::o;2630:444::-;5588:42;5577:54;;;932:37;;5577:54;;;;2977:2;2962:18;;932:37;3060:2;3045:18;;1163:37;;;;2813:2;2798:18;;2784:290::o;3081:210::-;5297:13;;5290:21;1046:34;;3202:2;3187:18;;3173:118::o;4115:416::-;4315:2;4329:47;;;1966:2;4300:18;;;5065:19;2002:22;5105:14;;;1982:43;2044:12;;;4286:245::o;4538:416::-;4738:2;4752:47;;;2295:2;4723:18;;;5065:19;2331:24;5105:14;;;2311:45;2375:12;;;4709:245::o;6567:117::-;5588:42;6654:5;5577:54;6629:5;6626:35;6616:2;;6675:1;;6665:12;6616:2;6610:74;:::o"},"methodIdentifiers":{"create(address)":"9ed93318","getChildChainStreamerImplementation()":"f9e0a13e","getGaugeImplementation()":"39312dee","getGaugePool(address)":"744a65dd","getGaugeStreamer(address)":"90b20087","getPoolGauge(address)":"a8ea6875","getPoolStreamer(address)":"8a4ffeb0","isGaugeFromFactory(address)":"ce3cc8bd","isStreamerFromFactory(address)":"cbda9327"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ILiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"contract IChildChainStreamer\",\"name\":\"childChainStreamer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"streamer\",\"type\":\"address\"}],\"name\":\"RewardsOnlyGaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChildChainStreamerImplementation\",\"outputs\":[{\"internalType\":\"contract IChildChainStreamer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"contract ILiquidityGauge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"getGaugePool\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"getGaugeStreamer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolGauge\",\"outputs\":[{\"internalType\":\"contract ILiquidityGauge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolStreamer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"streamer\",\"type\":\"address\"}],\"name\":\"isStreamerFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address)\":{\"details\":\"As anyone can register arbitrary Balancer pools with the Vault, it's impossible to prove onchain that `pool` is a \\\"valid\\\" deployment. Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController. This factory disallows deploying multiple gauges for a single pool.\",\"params\":{\"pool\":\"The address of the pool for which to deploy a gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address)\":{\"notice\":\"Deploys a new gauge for a Balancer pool.\"},\"getChildChainStreamerImplementation()\":{\"notice\":\"Returns the address of the implementation used for streamer deployments.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"getGaugePool(address)\":{\"notice\":\"Returns the address of the pool which `gauge` belongs.\"},\"getGaugeStreamer(address)\":{\"notice\":\"Returns the address of the streamer belonging to `gauge`.\"},\"getPoolGauge(address)\":{\"notice\":\"Returns the address of the gauge belonging to `pool`.\"},\"getPoolStreamer(address)\":{\"notice\":\"Returns the address of the streamer belonging to `pool`'s gauge.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"},\"isStreamerFromFactory(address)\":{\"notice\":\"Returns true if `streamer` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ChildChainLiquidityGaugeFactory.sol\":\"ChildChainLiquidityGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol\":{\"keccak256\":\"0x842d0fc23e9bc0c59c2c11d042a409328533e4424578c96727d33db8092bf51a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://50a546df376e1772a1611dfa17d0e35adf29cdae502df736f65c67c4b94c0188\",\"dweb:/ipfs/QmatAq7AvGfnZQ7xDYgPUk5obubqJkJWpFoLE8LPFqccsf\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\":{\"keccak256\":\"0x3cf2370032a789025cffe8d0c613274213fd4e1ceb88cef1c2b039a6d0d08261\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1788ecb804b061fa04678ce311020d66e25b201cf18d452ea290bbc9af12e504\",\"dweb:/ipfs/Qmf84ANUiZtoZHEsbymn7NSZSGikMovYZUVqiPHwVrbBPJ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol\":{\"keccak256\":\"0x8c09c3f372e07adf790d55607401dfa60d8ec2b591f39de772efdf887d965d11\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6cbfa8f8f004ec1cc00739f51bd00763d08600e0bf827c1be4cc21a4afb26874\",\"dweb:/ipfs/QmTxDYJA8y2cJdxHfCq6NLK812WGnxFehTF9bW4n8xa1zx\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"contracts/gauges/ChildChainLiquidityGaugeFactory.sol\":{\"keccak256\":\"0x49457bc2e1f6e9b2e2b53ab30251a337ae35453414aca68cf42548387aaff8d1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4edd98f1050008da25766151b852726a7213ea494559ef8e9fcbc9648187949d\",\"dweb:/ipfs/QmXmZFKzi7dvmXGU7G3sHZ7jhoZw5BYTAZUoTqUUcPjFXJ\"]}},\"version\":1}"}},"contracts/gauges/StakelessGauge.sol":{"StakelessGauge":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/StakelessGauge.sol\":\"StakelessGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]}},\"version\":1}"}},"contracts/gauges/StakelessGaugeCheckpointer.sol":{"StakelessGaugeCheckpointer":{"abi":[{"inputs":[{"internalType":"contract IGaugeAdder","name":"gaugeAdder","type":"address"},{"internalType":"contract IAuthorizerAdaptorEntrypoint","name":"authorizerAdaptorEntrypoint","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IStakelessGauge","name":"gauge","type":"address"},{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"}],"name":"GaugeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IStakelessGauge","name":"gauge","type":"address"},{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"}],"name":"GaugeRemoved","type":"event"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"addGauges","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"addGaugesWithVerifiedType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"checkpointAllGaugesAboveRelativeWeight","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string[]","name":"gaugeTypes","type":"string[]"},{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"checkpointGaugesOfTypesAboveRelativeWeight","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string[]","name":"gaugeTypes","type":"string[]"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"checkpointMultipleGauges","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"checkpointMultipleGaugesOfMatchingType","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge","name":"gauge","type":"address"}],"name":"checkpointSingleGauge","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeAdder","outputs":[{"internalType":"contract IGaugeAdder","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getGaugeAtIndex","outputs":[{"internalType":"contract IStakelessGauge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeTypes","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"gaugeTypes","type":"string[]"},{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"getGaugeTypesBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRoundedDownBlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge","name":"gauge","type":"address"}],"name":"getSingleBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"getTotalGauges","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge","name":"gauge","type":"address"}],"name":"hasGauge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"isValidGaugeType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"removeGauges","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101206040523480156200001257600080fd5b50604051620030ca380380620030ca83398101604081905262000035916200016c565b806001600160a01b0316638d928af86040518163ffffffff1660e01b815260040160206040518083038186803b1580156200006f57600080fd5b505afa15801562000084573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000aa9190620001aa565b6001600055306080526001600160601b0319606091821b811660a05283821b811660e0529082901b1660c05260408051632c6f4d6f60e11b815290516001600160a01b038416916358de9ade916004808301926020929190829003018186803b1580156200011757600080fd5b505afa1580156200012c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001529190620001aa565b60601b6001600160601b0319166101005250620001e99050565b600080604083850312156200017f578182fd5b82516200018c81620001d0565b60208401519092506200019f81620001d0565b809150509250929050565b600060208284031215620001bc578081fd5b8151620001c981620001d0565b9392505050565b6001600160a01b0381168114620001e657600080fd5b50565b60805160a05160601c60c05160601c60e05160601c6101005160601c612e3b6200028f600039806117915280611b795280611c6b5280611e3f5280611f295280611fd052508061041652806104a8528061072a52806108525280610a7c5280610af55280610c425280610d4d5280610ec15280610f665280611091528061118c52806119375250806113e052806122df525080610c09525080610bb95250612e3b6000f3fe60806040526004361061016a5760003560e01c80637d0a6616116100cb578063a9a7f87e1161007f578063c91be04311610059578063c91be04314610376578063d8dba2ce14610396578063f7178b88146103b65761016a565b8063a9a7f87e1461031f578063aaabadc51461033f578063afcb1a86146103545761016a565b8063851c1bb3116100b0578063851c1bb3146102d75780638d928af8146102f7578063975104961461030c5761016a565b80637d0a6616146102b1578063804d17dc146102c45761016a565b806346583adf116101225780634db34d2a116101075780634db34d2a1461025c57806373ebd0601461027c5780637c1fef511461029c5761016a565b806346583adf146102345780634a3a1e11146102495761016a565b806327f791071161015357806327f79107146101d25780632adbe5ac146101ff578063435903081461021f5761016a565b806316e772bc1461016f57806327cb2a3b146101a5575b600080fd5b34801561017b57600080fd5b5061018f61018a366004612726565b6103d6565b60405161019c9190612a4c565b60405180910390f35b3480156101b157600080fd5b506101c56101c0366004612871565b6104a3565b60405161019c9190612950565b3480156101de57600080fd5b506101f26101ed3660046128a5565b6105a7565b60405161019c9190612a57565b34801561020b57600080fd5b506101f261021a366004612821565b6105c6565b61023261022d3660046127ec565b610602565b005b34801561024057600080fd5b506101f261068a565b6102326102573660046125b7565b610699565b34801561026857600080fd5b506101f2610277366004612726565b610725565b34801561028857600080fd5b50610232610297366004612759565b610813565b3480156102a857600080fd5b506101c5610a7a565b6102326102bf366004612821565b610a9e565b6102326102d23660046128a5565b610ae9565b3480156102e357600080fd5b506101f26102f236600461267b565b610bb5565b34801561030357600080fd5b506101c5610c07565b61023261031a366004612618565b610c2b565b34801561032b57600080fd5b506101f261033a366004612618565b610d3c565b34801561034b57600080fd5b506101c5610e36565b34801561036057600080fd5b50610369610ebd565b60405161019c91906129ce565b34801561038257600080fd5b5061018f610391366004612821565b610f61565b3480156103a257600080fd5b506102326103b1366004612759565b611052565b3480156103c257600080fd5b506102326103d1366004612759565b61114d565b6040517f16e772bc00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc9061044b908590600401612a8c565b60206040518083038186803b15801561046357600080fd5b505afa158015610477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049b919061265b565b90505b919050565b6000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b81526004016104ff9190612a8c565b60206040518083038186803b15801561051757600080fd5b505afa15801561052b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054f919061265b565b6105745760405162461bcd60e51b815260040161056b90612c81565b60405180910390fd5b61059d836001866040516105889190612931565b9081526040519081900360200190209061123a565b91505b5092915050565b600060606105b3610ebd565b90506105bf818461125f565b9392505050565b600082826105d48282610f61565b6105f05760405162461bcd60e51b815260040161056b90612c4a565b6105f98461129b565b95945050505050565b61060a611326565b805160005b81811015610674576106348484838151811061062757fe5b6020026020010151610f61565b6106505760405162461bcd60e51b815260040161056b90612c4a565b61066c83828151811061065f57fe5b602002602001015161133f565b60010161060f565b505061067e611470565b610686611481565b5050565b6000610694611488565b905090565b6106a1611326565b80518251146106c25760405162461bcd60e51b815260040161056b90612afc565b805160005b81811015610674576106f28482815181106106de57fe5b602002602001015184838151811061062757fe5b61070e5760405162461bcd60e51b815260040161056b90612c4a565b61071d83828151811061065f57fe5b6001016106c7565b6000817f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b81526004016107819190612a8c565b60206040518083038186803b15801561079957600080fd5b505afa1580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d1919061265b565b6107ed5760405162461bcd60e51b815260040161056b90612c81565b6105bf6001846040516108009190612931565b908152602001604051809103902061149d565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc90610887908490600401612a8c565b60206040518083038186803b15801561089f57600080fd5b505afa1580156108b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d7919061265b565b6108f35760405162461bcd60e51b815260040161056b90612c81565b60006001856040516109059190612931565b9081526020016040518091039020905060005b83811015610a7257600085858381811061092e57fe5b9050602002016020810190610943919061270a565b90508073ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b815260040160206040518083038186803b15801561098b57600080fd5b505afa15801561099f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c3919061265b565b6109df5760405162461bcd60e51b815260040161056b90612cb8565b6109e983826114a1565b610a055760405162461bcd60e51b815260040161056b90612bb6565b86604051610a139190612931565b60405180910390208173ffffffffffffffffffffffffffffffffffffffff167fb87757e0365ca4f80cc1f429f422c0ea7ec26bbd3e5778727e77c809462aad0289604051610a619190612a8c565b60405180910390a350600101610918565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610aa6611326565b8181610ab28282610f61565b610ace5760405162461bcd60e51b815260040161056b90612c4a565b610ad78361133f565b610adf611470565b5050610686611481565b610af1611326565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663afcb1a866040518163ffffffff1660e01b815260040160006040518083038186803b158015610b5957600080fd5b505afa158015610b6d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b95919081019061252e565b9050610ba1818361164f565b50610baa611470565b610bb2611481565b50565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610bea929190612901565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610c33611326565b8160005b8151811015610d20577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc838381518110610c8857fe5b60200260200101516040518263ffffffff1660e01b8152600401610cac9190612a8c565b60206040518083038186803b158015610cc457600080fd5b505afa158015610cd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfc919061265b565b610d185760405162461bcd60e51b815260040161056b90612c81565b600101610c37565b50610d2b838361164f565b610d33611470565b50610686611481565b60008260005b8151811015610e2b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc838381518110610d9357fe5b60200260200101516040518263ffffffff1660e01b8152600401610db79190612a8c565b60206040518083038186803b158015610dcf57600080fd5b505afa158015610de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e07919061265b565b610e235760405162461bcd60e51b815260040161056b90612c81565b600101610d42565b5061059d848461125f565b6000610e40610c07565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8557600080fd5b505afa158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069491906126ee565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663afcb1a866040518163ffffffff1660e01b815260040160006040518083038186803b158015610f2557600080fd5b505afa158015610f39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610694919081019061252e565b6000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b8152600401610fbd9190612a8c565b60206040518083038186803b158015610fd557600080fd5b505afa158015610fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100d919061265b565b6110295760405162461bcd60e51b815260040161056b90612c81565b61059d8360018660405161103d9190612931565b9081526040519081900360200190209061168d565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc906110c6908490600401612a8c565b60206040518083038186803b1580156110de57600080fd5b505afa1580156110f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611116919061265b565b6111325760405162461bcd60e51b815260040161056b90612c81565b61113a6116bb565b6111478484846001611701565b50505050565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc906111c1908490600401612a8c565b60206040518083038186803b1580156111d957600080fd5b505afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611211919061265b565b61122d5760405162461bcd60e51b815260040161056b90612c81565b6111478484846000611701565b815460009061124c9083106064611acd565b6112568383611adb565b90505b92915050565b6000805b83518110156105a057606084828151811061127a57fe5b6020026020010151905061128e8185611b15565b9092019150600101611263565b60008173ffffffffffffffffffffffffffffffffffffffff1663b02452256040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e357600080fd5b505afa925050508015611313575060408051601f3d908101601f19168201909252611310918101906128bd565b60015b61131f5750600061049e565b905061049e565b61133860026000541415610190611acd565b6002600055565b600061134a8261129b565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc2c4c5c10000000000000000000000000000000000000000000000000000000017905291517f4036176a00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692634036176a92859261141592889201612971565b6000604051808303818588803b15801561142e57600080fd5b505af1158015611442573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261146b91908101906126bb565b505050565b478015610bb257610bb23382611d34565b6001600055565b6000600162093a8042040362093a8002905090565b5490565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205480156116455783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191018082146115aa57600086600001828154811061150f57fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff9091169150819088908590811061154557fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b85548690806115b557fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061125992505050565b6000915050611259565b6000611659611488565b905060005b83518110156111475761168584828151811061167657fe5b60200260200101518484611dbb565b60010161165e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b60006116ea6000357fffffffff0000000000000000000000000000000000000000000000000000000016610bb5565b9050610bb26116f98233612084565b610191611acd565b60006001856040516117139190612931565b9081526020016040518091039020905060005b83811015610a7257600085858381811061173c57fe5b9050602002016020810190611751919061270a565b6040517f61df1bf900000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906361df1bf9906117c6908490600401612950565b60206040518083038186803b1580156117de57600080fd5b505afa1580156117f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611816919061265b565b6118325760405162461bcd60e51b815260040161056b90612a9f565b8073ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b815260040160206040518083038186803b15801561187857600080fd5b505afa15801561188c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b0919061265b565b156118cd5760405162461bcd60e51b815260040161056b90612c13565b6118d7838261211a565b6118f35760405162461bcd60e51b815260040161056b90612cef565b8380611a4457506040517f572cb6a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063572cb6a59061196c908a90600401612a8c565b60206040518083038186803b15801561198457600080fd5b505afa158015611998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bc91906126ee565b73ffffffffffffffffffffffffffffffffffffffff1663ce3cc8bd826040518263ffffffff1660e01b81526004016119f49190612950565b60206040518083038186803b158015611a0c57600080fd5b505afa158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a44919061265b565b611a605760405162461bcd60e51b815260040161056b90612b59565b86604051611a6e9190612931565b60405180910390208173ffffffffffffffffffffffffffffffffffffffff167fbd3a33b3738a69bcfb84219d93fb0b1b2d91efbf2e5bef206c9af4122290fb5489604051611abc9190612a8c565b60405180910390a350600101611726565b8161068657610686816121a2565b6000826000018281548110611aec57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b600080611b20611488565b90506000611b376001866040516108009190612931565b90506000600186604051611b4b9190612931565b9081526020016040518091039020905060005b82811015611d2a576000611b728383611adb565b90506000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4d7a250846040518263ffffffff1660e01b8152600401611bd09190612950565b60206040518083038186803b158015611be857600080fd5b505afa158015611bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2091906128bd565b10159050808015611cf457506040517fd3078c94000000000000000000000000000000000000000000000000000000008152889073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d3078c9490611ca29086908b906004016129a8565b60206040518083038186803b158015611cba57600080fd5b505afa158015611cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf291906128bd565b105b15611d00575050611d22565b6000611d0b8361129b565b905080611d1a57505050611d2a565b969096019550505b600101611b5e565b5050505092915050565b611d43814710156101a3611acd565b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611d699061294d565b60006040518083038185875af1925050503d8060008114611da6576040519150601f19603f3d011682016040523d82523d6000602084013e611dab565b606091505b5050905061146b816101a4611acd565b6000600184604051611dcd9190612931565b908152602001604051809103902090506000611de88261149d565b905080611df657505061146b565b6000611e0a611e058483611adb565b61129b565b1590506123c981611e1d576121cc611e21565b61224c5b905060005b8381101561207a576000611e3a8683611adb565b9050867f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4d7a250836040518263ffffffff1660e01b8152600401611e969190612950565b60206040518083038186803b158015611eae57600080fd5b505afa158015611ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee691906128bd565b1015611f91576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e523790611f5e908490600401612950565b600060405180830381600087803b158015611f7857600080fd5b505af1158015611f8c573d6000803e3d6000fd5b505050505b6040517fd3078c94000000000000000000000000000000000000000000000000000000008152889073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d3078c94906120079085908c906004016129a8565b60206040518083038186803b15801561201f57600080fd5b505afa158015612033573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205791906128bd565b10156120635750612072565b612070818463ffffffff16565b505b600101611e26565b5050505050505050565b600061208e610e36565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b81526004016120ca93929190612a60565b60206040518083038186803b1580156120e257600080fd5b505afa1580156120f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611256919061265b565b6000612126838361168d565b61219a57508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155611259565b506000611259565b610bb2817f42414c0000000000000000000000000000000000000000000000000000000000612368565b60008173ffffffffffffffffffffffffffffffffffffffff1663b02452256040518163ffffffff1660e01b815260040160206040518083038186803b15801561221457600080fd5b505afa158015612228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134a91906128bd565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc2c4c5c10000000000000000000000000000000000000000000000000000000017905291517f4036176a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692634036176a9261231292869201612971565b600060405180830381600087803b15801561232c57600080fd5b505af1158015612340573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261068691908101906126bb565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5bfe5b600082601f8301126123db578081fd5b81356123ee6123e982612d73565b612d4c565b81815291506020808301908481018184028601820187101561240f57600080fd5b60005b8481101561243757813561242581612de3565b84529282019290820190600101612412565b505050505092915050565b600082601f830112612452578081fd5b81356124606123e982612d73565b818152915060208083019084810160005b8481101561243757612488888484358a01016124e0565b84529282019290820190600101612471565b600082601f8301126124aa578081fd5b81516124b86123e982612d93565b91508082528360208285010111156124cf57600080fd5b6105a0816020840160208601612db7565b600082601f8301126124f0578081fd5b81356124fe6123e982612d93565b915080825283602082850101111561251557600080fd5b8060208401602084013760009082016020015292915050565b60006020808385031215612540578182fd5b825167ffffffffffffffff811115612556578283fd5b8301601f81018513612566578283fd5b80516125746123e982612d73565b81815283810190838501865b848110156125a9576125978a88845189010161249a565b84529286019290860190600101612580565b509098975050505050505050565b600080604083850312156125c9578081fd5b823567ffffffffffffffff808211156125e0578283fd5b6125ec86838701612442565b93506020850135915080821115612601578283fd5b5061260e858286016123cb565b9150509250929050565b6000806040838503121561262a578182fd5b823567ffffffffffffffff811115612640578283fd5b61264c85828601612442565b95602094909401359450505050565b60006020828403121561266c578081fd5b815180151581146105bf578182fd5b60006020828403121561268c578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146105bf578182fd5b6000602082840312156126cc578081fd5b815167ffffffffffffffff8111156126e2578182fd5b61059d8482850161249a565b6000602082840312156126ff578081fd5b81516105bf81612de3565b60006020828403121561271b578081fd5b81356105bf81612de3565b600060208284031215612737578081fd5b813567ffffffffffffffff81111561274d578182fd5b61059d848285016124e0565b60008060006040848603121561276d578081fd5b833567ffffffffffffffff80821115612784578283fd5b612790878388016124e0565b945060208601359150808211156127a5578283fd5b818601915086601f8301126127b8578283fd5b8135818111156127c6578384fd5b87602080830285010111156127d9578384fd5b6020830194508093505050509250925092565b600080604083850312156127fe578182fd5b823567ffffffffffffffff80821115612815578384fd5b6125ec868387016124e0565b60008060408385031215612833578182fd5b823567ffffffffffffffff811115612849578283fd5b612855858286016124e0565b925050602083013561286681612de3565b809150509250929050565b60008060408385031215612883578182fd5b823567ffffffffffffffff811115612899578283fd5b61264c858286016124e0565b6000602082840312156128b6578081fd5b5035919050565b6000602082840312156128ce578081fd5b5051919050565b600081518084526128ed816020860160208601612db7565b601f01601f19169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b60008251612943818460208701612db7565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff84168252604060208301526129a060408301846128d5565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015612a3f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452612a2d8583516128d5565b945092850192908501906001016129f3565b5092979650505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60006020825261125660208301846128d5565b6020808252602a908201527f476175676520776173206e6f7420616464656420746f2074686520476175676560408201527f436f6e74726f6c6c657200000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d69736d61746368206265747765656e20676175676520747970657320616e6460408201527f2061646472657373657300000000000000000000000000000000000000000000606082015260800190565b6020808252602e908201527f476175676520646f6573206e6f7420636f72726573706f6e6420746f2074686560408201527f2073656c65637465642074797065000000000000000000000000000000000000606082015260800190565b60208082526027908201527f476175676520776173206e6f7420616464656420746f2074686520636865636b60408201527f706f696e74657200000000000000000000000000000000000000000000000000606082015260800190565b60208082526010908201527f476175676520776173206b696c6c656400000000000000000000000000000000604082015260600190565b6020808252600f908201527f4761756765206e6f742061646465640000000000000000000000000000000000604082015260600190565b60208082526012908201527f496e76616c696420676175676520747970650000000000000000000000000000604082015260600190565b60208082526014908201527f476175676520776173206e6f74206b696c6c6564000000000000000000000000604082015260600190565b60208082526027908201527f476175676520616c726561647920616464656420746f2074686520636865636b60408201527f706f696e74657200000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff81118282101715612d6b57600080fd5b604052919050565b600067ffffffffffffffff821115612d89578081fd5b5060209081020190565b600067ffffffffffffffff821115612da9578081fd5b50601f01601f191660200190565b60005b83811015612dd2578181015183820152602001612dba565b838111156111475750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114610bb257600080fdfea2646970667358221220ad96561ddd7ce6b409b5587999c89b40f38d1074f98055464efae03c87603b7564736f6c63430007010033","opcodes":"PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x30CA CODESIZE SUB DUP1 PUSH3 0x30CA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x16C JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8D928AF8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xAA SWAP2 SWAP1 PUSH3 0x1AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE DUP4 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP1 DUP3 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x12C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x152 SWAP2 SWAP1 PUSH3 0x1AA JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE POP PUSH3 0x1E9 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x17F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x18C DUP2 PUSH3 0x1D0 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x19F DUP2 PUSH3 0x1D0 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1BC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x1C9 DUP2 PUSH3 0x1D0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x2E3B PUSH3 0x28F PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1791 MSTORE DUP1 PUSH2 0x1B79 MSTORE DUP1 PUSH2 0x1C6B MSTORE DUP1 PUSH2 0x1E3F MSTORE DUP1 PUSH2 0x1F29 MSTORE DUP1 PUSH2 0x1FD0 MSTORE POP DUP1 PUSH2 0x416 MSTORE DUP1 PUSH2 0x4A8 MSTORE DUP1 PUSH2 0x72A MSTORE DUP1 PUSH2 0x852 MSTORE DUP1 PUSH2 0xA7C MSTORE DUP1 PUSH2 0xAF5 MSTORE DUP1 PUSH2 0xC42 MSTORE DUP1 PUSH2 0xD4D MSTORE DUP1 PUSH2 0xEC1 MSTORE DUP1 PUSH2 0xF66 MSTORE DUP1 PUSH2 0x1091 MSTORE DUP1 PUSH2 0x118C MSTORE DUP1 PUSH2 0x1937 MSTORE POP DUP1 PUSH2 0x13E0 MSTORE DUP1 PUSH2 0x22DF MSTORE POP DUP1 PUSH2 0xC09 MSTORE POP DUP1 PUSH2 0xBB9 MSTORE POP PUSH2 0x2E3B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x16A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7D0A6616 GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xA9A7F87E GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xC91BE043 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC91BE043 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0xD8DBA2CE EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0xF7178B88 EQ PUSH2 0x3B6 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0xA9A7F87E EQ PUSH2 0x31F JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x33F JUMPI DUP1 PUSH4 0xAFCB1A86 EQ PUSH2 0x354 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x97510496 EQ PUSH2 0x30C JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x7D0A6616 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x804D17DC EQ PUSH2 0x2C4 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x46583ADF GT PUSH2 0x122 JUMPI DUP1 PUSH4 0x4DB34D2A GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x4DB34D2A EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x73EBD060 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x7C1FEF51 EQ PUSH2 0x29C JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x46583ADF EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x4A3A1E11 EQ PUSH2 0x249 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x27F79107 GT PUSH2 0x153 JUMPI DUP1 PUSH4 0x27F79107 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0x2ADBE5AC EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0x43590308 EQ PUSH2 0x21F JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x16E772BC EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x27CB2A3B EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18F PUSH2 0x18A CALLDATASIZE PUSH1 0x4 PUSH2 0x2726 JUMP JUMPDEST PUSH2 0x3D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2A4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0x1C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2871 JUMP JUMPDEST PUSH2 0x4A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x28A5 JUMP JUMPDEST PUSH2 0x5A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2A57 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x21A CALLDATASIZE PUSH1 0x4 PUSH2 0x2821 JUMP JUMPDEST PUSH2 0x5C6 JUMP JUMPDEST PUSH2 0x232 PUSH2 0x22D CALLDATASIZE PUSH1 0x4 PUSH2 0x27EC JUMP JUMPDEST PUSH2 0x602 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x68A JUMP JUMPDEST PUSH2 0x232 PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0x25B7 JUMP JUMPDEST PUSH2 0x699 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x277 CALLDATASIZE PUSH1 0x4 PUSH2 0x2726 JUMP JUMPDEST PUSH2 0x725 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x297 CALLDATASIZE PUSH1 0x4 PUSH2 0x2759 JUMP JUMPDEST PUSH2 0x813 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0xA7A JUMP JUMPDEST PUSH2 0x232 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x2821 JUMP JUMPDEST PUSH2 0xA9E JUMP JUMPDEST PUSH2 0x232 PUSH2 0x2D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x28A5 JUMP JUMPDEST PUSH2 0xAE9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x2F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x267B JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0xC07 JUMP JUMPDEST PUSH2 0x232 PUSH2 0x31A CALLDATASIZE PUSH1 0x4 PUSH2 0x2618 JUMP JUMPDEST PUSH2 0xC2B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x33A CALLDATASIZE PUSH1 0x4 PUSH2 0x2618 JUMP JUMPDEST PUSH2 0xD3C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0xE36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0xEBD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x29CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18F PUSH2 0x391 CALLDATASIZE PUSH1 0x4 PUSH2 0x2821 JUMP JUMPDEST PUSH2 0xF61 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x3B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2759 JUMP JUMPDEST PUSH2 0x1052 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x3D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2759 JUMP JUMPDEST PUSH2 0x114D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x44B SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x477 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x49B SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4FF SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x54F SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x574 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x59D DUP4 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x588 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SWAP1 PUSH2 0x123A JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x5B3 PUSH2 0xEBD JUMP JUMPDEST SWAP1 POP PUSH2 0x5BF DUP2 DUP5 PUSH2 0x125F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH2 0x5D4 DUP3 DUP3 PUSH2 0xF61 JUMP JUMPDEST PUSH2 0x5F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0x5F9 DUP5 PUSH2 0x129B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x60A PUSH2 0x1326 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x674 JUMPI PUSH2 0x634 DUP5 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x627 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xF61 JUMP JUMPDEST PUSH2 0x650 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0x66C DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x65F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x133F JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x60F JUMP JUMPDEST POP POP PUSH2 0x67E PUSH2 0x1470 JUMP JUMPDEST PUSH2 0x686 PUSH2 0x1481 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x694 PUSH2 0x1488 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6A1 PUSH2 0x1326 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x6C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2AFC JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x674 JUMPI PUSH2 0x6F2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6DE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x627 JUMPI INVALID JUMPDEST PUSH2 0x70E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0x71D DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x65F JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x6C7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x781 SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7D1 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x7ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x5BF PUSH1 0x1 DUP5 PUSH1 0x40 MLOAD PUSH2 0x800 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH2 0x149D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x887 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x89F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8D7 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x8F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x40 MLOAD PUSH2 0x905 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x92E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x943 SWAP2 SWAP1 PUSH2 0x270A JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9C868AC0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x98B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x99F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9C3 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x9DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2CB8 JUMP JUMPDEST PUSH2 0x9E9 DUP4 DUP3 PUSH2 0x14A1 JUMP JUMPDEST PUSH2 0xA05 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD PUSH2 0xA13 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xB87757E0365CA4F80CC1F429F422C0EA7EC26BBD3E5778727E77C809462AAD02 DUP10 PUSH1 0x40 MLOAD PUSH2 0xA61 SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 ADD PUSH2 0x918 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xAA6 PUSH2 0x1326 JUMP JUMPDEST DUP2 DUP2 PUSH2 0xAB2 DUP3 DUP3 PUSH2 0xF61 JUMP JUMPDEST PUSH2 0xACE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0xAD7 DUP4 PUSH2 0x133F JUMP JUMPDEST PUSH2 0xADF PUSH2 0x1470 JUMP JUMPDEST POP POP PUSH2 0x686 PUSH2 0x1481 JUMP JUMPDEST PUSH2 0xAF1 PUSH2 0x1326 JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAFCB1A86 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xB95 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x252E JUMP JUMPDEST SWAP1 POP PUSH2 0xBA1 DUP2 DUP4 PUSH2 0x164F JUMP JUMPDEST POP PUSH2 0xBAA PUSH2 0x1470 JUMP JUMPDEST PUSH2 0xBB2 PUSH2 0x1481 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBEA SWAP3 SWAP2 SWAP1 PUSH2 0x2901 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xC33 PUSH2 0x1326 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xD20 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xC88 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCAC SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCFC SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0xD18 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xC37 JUMP JUMPDEST POP PUSH2 0xD2B DUP4 DUP4 PUSH2 0x164F JUMP JUMPDEST PUSH2 0xD33 PUSH2 0x1470 JUMP JUMPDEST POP PUSH2 0x686 PUSH2 0x1481 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xE2B JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD93 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDB7 SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE07 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0xE23 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD42 JUMP JUMPDEST POP PUSH2 0x59D DUP5 DUP5 PUSH2 0x125F JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE40 PUSH2 0xC07 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x694 SWAP2 SWAP1 PUSH2 0x26EE JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAFCB1A86 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x694 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x252E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFBD SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFE9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x100D SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1029 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x59D DUP4 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x103D SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SWAP1 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x10C6 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1116 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1132 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x113A PUSH2 0x16BB JUMP JUMPDEST PUSH2 0x1147 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x1701 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x11C1 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1211 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x122D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x1147 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x1701 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x124C SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0x1ACD JUMP JUMPDEST PUSH2 0x1256 DUP4 DUP4 PUSH2 0x1ADB JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x5A0 JUMPI PUSH1 0x60 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x127A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x128E DUP2 DUP6 PUSH2 0x1B15 JUMP JUMPDEST SWAP1 SWAP3 ADD SWAP2 POP PUSH1 0x1 ADD PUSH2 0x1263 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB0245225 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1313 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1310 SWAP2 DUP2 ADD SWAP1 PUSH2 0x28BD JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x131F JUMPI POP PUSH1 0x0 PUSH2 0x49E JUMP JUMPDEST SWAP1 POP PUSH2 0x49E JUMP JUMPDEST PUSH2 0x1338 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x134A DUP3 PUSH2 0x129B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP1 DUP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC2C4C5C100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x4036176A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 PUSH4 0x4036176A SWAP3 DUP6 SWAP3 PUSH2 0x1415 SWAP3 DUP9 SWAP3 ADD PUSH2 0x2971 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x142E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1442 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x146B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26BB JUMP JUMPDEST POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0xBB2 JUMPI PUSH2 0xBB2 CALLER DUP3 PUSH2 0x1D34 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH3 0x93A80 TIMESTAMP DIV SUB PUSH3 0x93A80 MUL SWAP1 POP SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1645 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x15AA JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x150F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x1545 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x15B5 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x1259 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x1259 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1659 PUSH2 0x1488 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1147 JUMPI PUSH2 0x1685 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1676 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP5 PUSH2 0x1DBB JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x165E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16EA PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0xBB5 JUMP JUMPDEST SWAP1 POP PUSH2 0xBB2 PUSH2 0x16F9 DUP3 CALLER PUSH2 0x2084 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1713 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x173C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1751 SWAP2 SWAP1 PUSH2 0x270A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x61DF1BF900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x61DF1BF9 SWAP1 PUSH2 0x17C6 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1816 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1832 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2A9F JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9C868AC0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1878 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x188C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18B0 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST ISZERO PUSH2 0x18CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C13 JUMP JUMPDEST PUSH2 0x18D7 DUP4 DUP3 PUSH2 0x211A JUMP JUMPDEST PUSH2 0x18F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2CEF JUMP JUMPDEST DUP4 DUP1 PUSH2 0x1A44 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x572CB6A500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x572CB6A5 SWAP1 PUSH2 0x196C SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1984 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1998 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19BC SWAP2 SWAP1 PUSH2 0x26EE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCE3CC8BD DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F4 SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A44 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1A60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2B59 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD PUSH2 0x1A6E SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xBD3A33B3738A69BCFB84219D93FB0B1B2D91EFBF2E5BEF206C9AF4122290FB54 DUP10 PUSH1 0x40 MLOAD PUSH2 0x1ABC SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 ADD PUSH2 0x1726 JUMP JUMPDEST DUP2 PUSH2 0x686 JUMPI PUSH2 0x686 DUP2 PUSH2 0x21A2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1AEC JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B20 PUSH2 0x1488 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B37 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x800 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1B4B SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1D2A JUMPI PUSH1 0x0 PUSH2 0x1B72 DUP4 DUP4 PUSH2 0x1ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA4D7A250 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BD0 SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C20 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT ISZERO SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x1CF4 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xD3078C9400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xD3078C94 SWAP1 PUSH2 0x1CA2 SWAP1 DUP7 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x29A8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CCE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CF2 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT JUMPDEST ISZERO PUSH2 0x1D00 JUMPI POP POP PUSH2 0x1D22 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D0B DUP4 PUSH2 0x129B JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1D1A JUMPI POP POP POP PUSH2 0x1D2A JUMP JUMPDEST SWAP7 SWAP1 SWAP7 ADD SWAP6 POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1B5E JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1D43 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x1D69 SWAP1 PUSH2 0x294D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1DA6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1DAB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x146B DUP2 PUSH2 0x1A4 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1DCD SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x1DE8 DUP3 PUSH2 0x149D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1DF6 JUMPI POP POP PUSH2 0x146B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E0A PUSH2 0x1E05 DUP5 DUP4 PUSH2 0x1ADB JUMP JUMPDEST PUSH2 0x129B JUMP JUMPDEST ISZERO SWAP1 POP PUSH2 0x23C9 DUP2 PUSH2 0x1E1D JUMPI PUSH2 0x21CC PUSH2 0x1E21 JUMP JUMPDEST PUSH2 0x224C JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x207A JUMPI PUSH1 0x0 PUSH2 0x1E3A DUP7 DUP4 PUSH2 0x1ADB JUMP JUMPDEST SWAP1 POP DUP7 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA4D7A250 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E96 SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1EE6 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT ISZERO PUSH2 0x1F91 JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x1F5E SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD3078C9400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xD3078C94 SWAP1 PUSH2 0x2007 SWAP1 DUP6 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x29A8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x201F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2033 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2057 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT ISZERO PUSH2 0x2063 JUMPI POP PUSH2 0x2072 JUMP JUMPDEST PUSH2 0x2070 DUP2 DUP5 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1E26 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208E PUSH2 0xE36 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20CA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1256 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2126 DUP4 DUP4 PUSH2 0x168D JUMP JUMPDEST PUSH2 0x219A JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1259 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1259 JUMP JUMPDEST PUSH2 0xBB2 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x2368 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB0245225 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2228 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x134A SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP1 DUP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC2C4C5C100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x4036176A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 PUSH4 0x4036176A SWAP3 PUSH2 0x2312 SWAP3 DUP7 SWAP3 ADD PUSH2 0x2971 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x232C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2340 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x686 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26BB JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST INVALID JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23DB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x23EE PUSH2 0x23E9 DUP3 PUSH2 0x2D73 JUMP JUMPDEST PUSH2 0x2D4C JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x240F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2437 JUMPI DUP2 CALLDATALOAD PUSH2 0x2425 DUP2 PUSH2 0x2DE3 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2412 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2452 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2460 PUSH2 0x23E9 DUP3 PUSH2 0x2D73 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2437 JUMPI PUSH2 0x2488 DUP9 DUP5 DUP5 CALLDATALOAD DUP11 ADD ADD PUSH2 0x24E0 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2471 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x24AA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x24B8 PUSH2 0x23E9 DUP3 PUSH2 0x2D93 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x24CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5A0 DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2DB7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x24F0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x24FE PUSH2 0x23E9 DUP3 PUSH2 0x2D93 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2515 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2540 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2556 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x2566 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2574 PUSH2 0x23E9 DUP3 PUSH2 0x2D73 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP7 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x25A9 JUMPI PUSH2 0x2597 DUP11 DUP9 DUP5 MLOAD DUP10 ADD ADD PUSH2 0x249A JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP7 ADD SWAP3 SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2580 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25C9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x25E0 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x25EC DUP7 DUP4 DUP8 ADD PUSH2 0x2442 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2601 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x260E DUP6 DUP3 DUP7 ADD PUSH2 0x23CB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x262A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2640 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x264C DUP6 DUP3 DUP7 ADD PUSH2 0x2442 JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x266C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5BF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x268C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x5BF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26CC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x26E2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x59D DUP5 DUP3 DUP6 ADD PUSH2 0x249A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26FF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x5BF DUP2 PUSH2 0x2DE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x271B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5BF DUP2 PUSH2 0x2DE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2737 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x274D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x59D DUP5 DUP3 DUP6 ADD PUSH2 0x24E0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x276D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2784 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2790 DUP8 DUP4 DUP9 ADD PUSH2 0x24E0 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x27A5 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x27B8 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x27C6 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x27D9 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x27FE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2815 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x25EC DUP7 DUP4 DUP8 ADD PUSH2 0x24E0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2833 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2849 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2855 DUP6 DUP3 DUP7 ADD PUSH2 0x24E0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2866 DUP2 PUSH2 0x2DE3 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2883 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2899 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x264C DUP6 DUP3 DUP7 ADD PUSH2 0x24E0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28B6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28CE JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x28ED DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2DB7 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2943 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2DB7 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x29A0 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x28D5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2A3F JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x2A2D DUP6 DUP4 MLOAD PUSH2 0x28D5 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x29F3 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1256 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x28D5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206E6F7420616464656420746F20746865204761756765 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x436F6E74726F6C6C657200000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x4D69736D61746368206265747765656E20676175676520747970657320616E64 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2061646472657373657300000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520646F6573206E6F7420636F72726573706F6E6420746F20746865 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2073656C65637465642074797065000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206E6F7420616464656420746F2074686520636865636B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x706F696E74657200000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206B696C6C656400000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH32 0x4761756765206E6F742061646465640000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676520747970650000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206E6F74206B696C6C6564000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520616C726561647920616464656420746F2074686520636865636B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x706F696E74657200000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2D6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2D89 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2DA9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DD2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2DBA JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1147 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xBB2 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD SWAP7 JUMP SAR 0xDD PUSH29 0xE6B409B5587999C89B40F38D1074F98055464EFAE03C87603B7564736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1660:16949:90:-:0;;;2081:339;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2207:27;-1:-1:-1;;;;;2207:36:90;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2070:1:63;1030:31:51;2175:22:63;1054:4:51;2049:46:46;;-1:-1:-1;;;;;;1073:14:51::1;::::0;;;;;::::1;::::0;2261:24:90;;;;;::::1;::::0;2295:58;;;;;::::1;::::0;2382:31:::1;::::0;;-1:-1:-1;;;2382:31:90;;;;-1:-1:-1;;;;;2261:24:90;::::1;::::0;2382:29:::1;::::0;:31:::1;::::0;;::::1;::::0;-1:-1:-1;;2382:31:90;;;;;;;2261:24;2382:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2363:50;::::0;-1:-1:-1;;;;;;2363:50:90;::::1;::::0;-1:-1:-1;1660:16949:90;;-1:-1:-1;1660:16949:90;755:507:-1;;;941:2;929:9;920:7;916:23;912:32;909:2;;;-1:-1;;947:12;909:2;319:6;313:13;331:52;377:5;331:52;:::i;:::-;1129:2;1214:22;;118:13;999:93;;-1:-1;136:68;118:13;136:68;:::i;:::-;1137:109;;;;903:359;;;;;:::o;1269:311::-;;1408:2;1396:9;1387:7;1383:23;1379:32;1376:2;;;-1:-1;;1414:12;1376:2;503:6;497:13;515:57;566:5;515:57;:::i;:::-;1466:98;1370:210;-1:-1;;;1370:210::o;2598:187::-;-1:-1;;;;;2532:54;;2692:70;;2682:2;;2776:1;;2766:12;2682:2;2676:109;:::o;:::-;1660:16949:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":3001}],"3611":[{"length":32,"start":3081}],"15225":[{"length":32,"start":5088},{"length":32,"start":8927}],"15227":[{"length":32,"start":1046},{"length":32,"start":1192},{"length":32,"start":1834},{"length":32,"start":2130},{"length":32,"start":2684},{"length":32,"start":2805},{"length":32,"start":3138},{"length":32,"start":3405},{"length":32,"start":3777},{"length":32,"start":3942},{"length":32,"start":4241},{"length":32,"start":4492},{"length":32,"start":6455}],"15229":[{"length":32,"start":6033},{"length":32,"start":7033},{"length":32,"start":7275},{"length":32,"start":7743},{"length":32,"start":7977},{"length":32,"start":8144}]},"linkReferences":{},"object":"60806040526004361061016a5760003560e01c80637d0a6616116100cb578063a9a7f87e1161007f578063c91be04311610059578063c91be04314610376578063d8dba2ce14610396578063f7178b88146103b65761016a565b8063a9a7f87e1461031f578063aaabadc51461033f578063afcb1a86146103545761016a565b8063851c1bb3116100b0578063851c1bb3146102d75780638d928af8146102f7578063975104961461030c5761016a565b80637d0a6616146102b1578063804d17dc146102c45761016a565b806346583adf116101225780634db34d2a116101075780634db34d2a1461025c57806373ebd0601461027c5780637c1fef511461029c5761016a565b806346583adf146102345780634a3a1e11146102495761016a565b806327f791071161015357806327f79107146101d25780632adbe5ac146101ff578063435903081461021f5761016a565b806316e772bc1461016f57806327cb2a3b146101a5575b600080fd5b34801561017b57600080fd5b5061018f61018a366004612726565b6103d6565b60405161019c9190612a4c565b60405180910390f35b3480156101b157600080fd5b506101c56101c0366004612871565b6104a3565b60405161019c9190612950565b3480156101de57600080fd5b506101f26101ed3660046128a5565b6105a7565b60405161019c9190612a57565b34801561020b57600080fd5b506101f261021a366004612821565b6105c6565b61023261022d3660046127ec565b610602565b005b34801561024057600080fd5b506101f261068a565b6102326102573660046125b7565b610699565b34801561026857600080fd5b506101f2610277366004612726565b610725565b34801561028857600080fd5b50610232610297366004612759565b610813565b3480156102a857600080fd5b506101c5610a7a565b6102326102bf366004612821565b610a9e565b6102326102d23660046128a5565b610ae9565b3480156102e357600080fd5b506101f26102f236600461267b565b610bb5565b34801561030357600080fd5b506101c5610c07565b61023261031a366004612618565b610c2b565b34801561032b57600080fd5b506101f261033a366004612618565b610d3c565b34801561034b57600080fd5b506101c5610e36565b34801561036057600080fd5b50610369610ebd565b60405161019c91906129ce565b34801561038257600080fd5b5061018f610391366004612821565b610f61565b3480156103a257600080fd5b506102326103b1366004612759565b611052565b3480156103c257600080fd5b506102326103d1366004612759565b61114d565b6040517f16e772bc00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc9061044b908590600401612a8c565b60206040518083038186803b15801561046357600080fd5b505afa158015610477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049b919061265b565b90505b919050565b6000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b81526004016104ff9190612a8c565b60206040518083038186803b15801561051757600080fd5b505afa15801561052b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054f919061265b565b6105745760405162461bcd60e51b815260040161056b90612c81565b60405180910390fd5b61059d836001866040516105889190612931565b9081526040519081900360200190209061123a565b91505b5092915050565b600060606105b3610ebd565b90506105bf818461125f565b9392505050565b600082826105d48282610f61565b6105f05760405162461bcd60e51b815260040161056b90612c4a565b6105f98461129b565b95945050505050565b61060a611326565b805160005b81811015610674576106348484838151811061062757fe5b6020026020010151610f61565b6106505760405162461bcd60e51b815260040161056b90612c4a565b61066c83828151811061065f57fe5b602002602001015161133f565b60010161060f565b505061067e611470565b610686611481565b5050565b6000610694611488565b905090565b6106a1611326565b80518251146106c25760405162461bcd60e51b815260040161056b90612afc565b805160005b81811015610674576106f28482815181106106de57fe5b602002602001015184838151811061062757fe5b61070e5760405162461bcd60e51b815260040161056b90612c4a565b61071d83828151811061065f57fe5b6001016106c7565b6000817f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b81526004016107819190612a8c565b60206040518083038186803b15801561079957600080fd5b505afa1580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d1919061265b565b6107ed5760405162461bcd60e51b815260040161056b90612c81565b6105bf6001846040516108009190612931565b908152602001604051809103902061149d565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc90610887908490600401612a8c565b60206040518083038186803b15801561089f57600080fd5b505afa1580156108b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d7919061265b565b6108f35760405162461bcd60e51b815260040161056b90612c81565b60006001856040516109059190612931565b9081526020016040518091039020905060005b83811015610a7257600085858381811061092e57fe5b9050602002016020810190610943919061270a565b90508073ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b815260040160206040518083038186803b15801561098b57600080fd5b505afa15801561099f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c3919061265b565b6109df5760405162461bcd60e51b815260040161056b90612cb8565b6109e983826114a1565b610a055760405162461bcd60e51b815260040161056b90612bb6565b86604051610a139190612931565b60405180910390208173ffffffffffffffffffffffffffffffffffffffff167fb87757e0365ca4f80cc1f429f422c0ea7ec26bbd3e5778727e77c809462aad0289604051610a619190612a8c565b60405180910390a350600101610918565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610aa6611326565b8181610ab28282610f61565b610ace5760405162461bcd60e51b815260040161056b90612c4a565b610ad78361133f565b610adf611470565b5050610686611481565b610af1611326565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663afcb1a866040518163ffffffff1660e01b815260040160006040518083038186803b158015610b5957600080fd5b505afa158015610b6d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b95919081019061252e565b9050610ba1818361164f565b50610baa611470565b610bb2611481565b50565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610bea929190612901565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610c33611326565b8160005b8151811015610d20577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc838381518110610c8857fe5b60200260200101516040518263ffffffff1660e01b8152600401610cac9190612a8c565b60206040518083038186803b158015610cc457600080fd5b505afa158015610cd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfc919061265b565b610d185760405162461bcd60e51b815260040161056b90612c81565b600101610c37565b50610d2b838361164f565b610d33611470565b50610686611481565b60008260005b8151811015610e2b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc838381518110610d9357fe5b60200260200101516040518263ffffffff1660e01b8152600401610db79190612a8c565b60206040518083038186803b158015610dcf57600080fd5b505afa158015610de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e07919061265b565b610e235760405162461bcd60e51b815260040161056b90612c81565b600101610d42565b5061059d848461125f565b6000610e40610c07565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8557600080fd5b505afa158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069491906126ee565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663afcb1a866040518163ffffffff1660e01b815260040160006040518083038186803b158015610f2557600080fd5b505afa158015610f39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610694919081019061252e565b6000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b8152600401610fbd9190612a8c565b60206040518083038186803b158015610fd557600080fd5b505afa158015610fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100d919061265b565b6110295760405162461bcd60e51b815260040161056b90612c81565b61059d8360018660405161103d9190612931565b9081526040519081900360200190209061168d565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc906110c6908490600401612a8c565b60206040518083038186803b1580156110de57600080fd5b505afa1580156110f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611116919061265b565b6111325760405162461bcd60e51b815260040161056b90612c81565b61113a6116bb565b6111478484846001611701565b50505050565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc906111c1908490600401612a8c565b60206040518083038186803b1580156111d957600080fd5b505afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611211919061265b565b61122d5760405162461bcd60e51b815260040161056b90612c81565b6111478484846000611701565b815460009061124c9083106064611acd565b6112568383611adb565b90505b92915050565b6000805b83518110156105a057606084828151811061127a57fe5b6020026020010151905061128e8185611b15565b9092019150600101611263565b60008173ffffffffffffffffffffffffffffffffffffffff1663b02452256040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e357600080fd5b505afa925050508015611313575060408051601f3d908101601f19168201909252611310918101906128bd565b60015b61131f5750600061049e565b905061049e565b61133860026000541415610190611acd565b6002600055565b600061134a8261129b565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc2c4c5c10000000000000000000000000000000000000000000000000000000017905291517f4036176a00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692634036176a92859261141592889201612971565b6000604051808303818588803b15801561142e57600080fd5b505af1158015611442573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261146b91908101906126bb565b505050565b478015610bb257610bb23382611d34565b6001600055565b6000600162093a8042040362093a8002905090565b5490565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205480156116455783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191018082146115aa57600086600001828154811061150f57fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff9091169150819088908590811061154557fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b85548690806115b557fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061125992505050565b6000915050611259565b6000611659611488565b905060005b83518110156111475761168584828151811061167657fe5b60200260200101518484611dbb565b60010161165e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b60006116ea6000357fffffffff0000000000000000000000000000000000000000000000000000000016610bb5565b9050610bb26116f98233612084565b610191611acd565b60006001856040516117139190612931565b9081526020016040518091039020905060005b83811015610a7257600085858381811061173c57fe5b9050602002016020810190611751919061270a565b6040517f61df1bf900000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906361df1bf9906117c6908490600401612950565b60206040518083038186803b1580156117de57600080fd5b505afa1580156117f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611816919061265b565b6118325760405162461bcd60e51b815260040161056b90612a9f565b8073ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b815260040160206040518083038186803b15801561187857600080fd5b505afa15801561188c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b0919061265b565b156118cd5760405162461bcd60e51b815260040161056b90612c13565b6118d7838261211a565b6118f35760405162461bcd60e51b815260040161056b90612cef565b8380611a4457506040517f572cb6a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063572cb6a59061196c908a90600401612a8c565b60206040518083038186803b15801561198457600080fd5b505afa158015611998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bc91906126ee565b73ffffffffffffffffffffffffffffffffffffffff1663ce3cc8bd826040518263ffffffff1660e01b81526004016119f49190612950565b60206040518083038186803b158015611a0c57600080fd5b505afa158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a44919061265b565b611a605760405162461bcd60e51b815260040161056b90612b59565b86604051611a6e9190612931565b60405180910390208173ffffffffffffffffffffffffffffffffffffffff167fbd3a33b3738a69bcfb84219d93fb0b1b2d91efbf2e5bef206c9af4122290fb5489604051611abc9190612a8c565b60405180910390a350600101611726565b8161068657610686816121a2565b6000826000018281548110611aec57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b600080611b20611488565b90506000611b376001866040516108009190612931565b90506000600186604051611b4b9190612931565b9081526020016040518091039020905060005b82811015611d2a576000611b728383611adb565b90506000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4d7a250846040518263ffffffff1660e01b8152600401611bd09190612950565b60206040518083038186803b158015611be857600080fd5b505afa158015611bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2091906128bd565b10159050808015611cf457506040517fd3078c94000000000000000000000000000000000000000000000000000000008152889073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d3078c9490611ca29086908b906004016129a8565b60206040518083038186803b158015611cba57600080fd5b505afa158015611cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf291906128bd565b105b15611d00575050611d22565b6000611d0b8361129b565b905080611d1a57505050611d2a565b969096019550505b600101611b5e565b5050505092915050565b611d43814710156101a3611acd565b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611d699061294d565b60006040518083038185875af1925050503d8060008114611da6576040519150601f19603f3d011682016040523d82523d6000602084013e611dab565b606091505b5050905061146b816101a4611acd565b6000600184604051611dcd9190612931565b908152602001604051809103902090506000611de88261149d565b905080611df657505061146b565b6000611e0a611e058483611adb565b61129b565b1590506123c981611e1d576121cc611e21565b61224c5b905060005b8381101561207a576000611e3a8683611adb565b9050867f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4d7a250836040518263ffffffff1660e01b8152600401611e969190612950565b60206040518083038186803b158015611eae57600080fd5b505afa158015611ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee691906128bd565b1015611f91576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e523790611f5e908490600401612950565b600060405180830381600087803b158015611f7857600080fd5b505af1158015611f8c573d6000803e3d6000fd5b505050505b6040517fd3078c94000000000000000000000000000000000000000000000000000000008152889073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d3078c94906120079085908c906004016129a8565b60206040518083038186803b15801561201f57600080fd5b505afa158015612033573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205791906128bd565b10156120635750612072565b612070818463ffffffff16565b505b600101611e26565b5050505050505050565b600061208e610e36565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b81526004016120ca93929190612a60565b60206040518083038186803b1580156120e257600080fd5b505afa1580156120f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611256919061265b565b6000612126838361168d565b61219a57508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155611259565b506000611259565b610bb2817f42414c0000000000000000000000000000000000000000000000000000000000612368565b60008173ffffffffffffffffffffffffffffffffffffffff1663b02452256040518163ffffffff1660e01b815260040160206040518083038186803b15801561221457600080fd5b505afa158015612228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134a91906128bd565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc2c4c5c10000000000000000000000000000000000000000000000000000000017905291517f4036176a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692634036176a9261231292869201612971565b600060405180830381600087803b15801561232c57600080fd5b505af1158015612340573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261068691908101906126bb565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5bfe5b600082601f8301126123db578081fd5b81356123ee6123e982612d73565b612d4c565b81815291506020808301908481018184028601820187101561240f57600080fd5b60005b8481101561243757813561242581612de3565b84529282019290820190600101612412565b505050505092915050565b600082601f830112612452578081fd5b81356124606123e982612d73565b818152915060208083019084810160005b8481101561243757612488888484358a01016124e0565b84529282019290820190600101612471565b600082601f8301126124aa578081fd5b81516124b86123e982612d93565b91508082528360208285010111156124cf57600080fd5b6105a0816020840160208601612db7565b600082601f8301126124f0578081fd5b81356124fe6123e982612d93565b915080825283602082850101111561251557600080fd5b8060208401602084013760009082016020015292915050565b60006020808385031215612540578182fd5b825167ffffffffffffffff811115612556578283fd5b8301601f81018513612566578283fd5b80516125746123e982612d73565b81815283810190838501865b848110156125a9576125978a88845189010161249a565b84529286019290860190600101612580565b509098975050505050505050565b600080604083850312156125c9578081fd5b823567ffffffffffffffff808211156125e0578283fd5b6125ec86838701612442565b93506020850135915080821115612601578283fd5b5061260e858286016123cb565b9150509250929050565b6000806040838503121561262a578182fd5b823567ffffffffffffffff811115612640578283fd5b61264c85828601612442565b95602094909401359450505050565b60006020828403121561266c578081fd5b815180151581146105bf578182fd5b60006020828403121561268c578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146105bf578182fd5b6000602082840312156126cc578081fd5b815167ffffffffffffffff8111156126e2578182fd5b61059d8482850161249a565b6000602082840312156126ff578081fd5b81516105bf81612de3565b60006020828403121561271b578081fd5b81356105bf81612de3565b600060208284031215612737578081fd5b813567ffffffffffffffff81111561274d578182fd5b61059d848285016124e0565b60008060006040848603121561276d578081fd5b833567ffffffffffffffff80821115612784578283fd5b612790878388016124e0565b945060208601359150808211156127a5578283fd5b818601915086601f8301126127b8578283fd5b8135818111156127c6578384fd5b87602080830285010111156127d9578384fd5b6020830194508093505050509250925092565b600080604083850312156127fe578182fd5b823567ffffffffffffffff80821115612815578384fd5b6125ec868387016124e0565b60008060408385031215612833578182fd5b823567ffffffffffffffff811115612849578283fd5b612855858286016124e0565b925050602083013561286681612de3565b809150509250929050565b60008060408385031215612883578182fd5b823567ffffffffffffffff811115612899578283fd5b61264c858286016124e0565b6000602082840312156128b6578081fd5b5035919050565b6000602082840312156128ce578081fd5b5051919050565b600081518084526128ed816020860160208601612db7565b601f01601f19169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b60008251612943818460208701612db7565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff84168252604060208301526129a060408301846128d5565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015612a3f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452612a2d8583516128d5565b945092850192908501906001016129f3565b5092979650505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60006020825261125660208301846128d5565b6020808252602a908201527f476175676520776173206e6f7420616464656420746f2074686520476175676560408201527f436f6e74726f6c6c657200000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d69736d61746368206265747765656e20676175676520747970657320616e6460408201527f2061646472657373657300000000000000000000000000000000000000000000606082015260800190565b6020808252602e908201527f476175676520646f6573206e6f7420636f72726573706f6e6420746f2074686560408201527f2073656c65637465642074797065000000000000000000000000000000000000606082015260800190565b60208082526027908201527f476175676520776173206e6f7420616464656420746f2074686520636865636b60408201527f706f696e74657200000000000000000000000000000000000000000000000000606082015260800190565b60208082526010908201527f476175676520776173206b696c6c656400000000000000000000000000000000604082015260600190565b6020808252600f908201527f4761756765206e6f742061646465640000000000000000000000000000000000604082015260600190565b60208082526012908201527f496e76616c696420676175676520747970650000000000000000000000000000604082015260600190565b60208082526014908201527f476175676520776173206e6f74206b696c6c6564000000000000000000000000604082015260600190565b60208082526027908201527f476175676520616c726561647920616464656420746f2074686520636865636b60408201527f706f696e74657200000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff81118282101715612d6b57600080fd5b604052919050565b600067ffffffffffffffff821115612d89578081fd5b5060209081020190565b600067ffffffffffffffff821115612da9578081fd5b50601f01601f191660200190565b60005b83811015612dd2578181015183820152602001612dba565b838111156111475750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114610bb257600080fdfea2646970667358221220ad96561ddd7ce6b409b5587999c89b40f38d1074f98055464efae03c87603b7564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x16A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7D0A6616 GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xA9A7F87E GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xC91BE043 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC91BE043 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0xD8DBA2CE EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0xF7178B88 EQ PUSH2 0x3B6 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0xA9A7F87E EQ PUSH2 0x31F JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x33F JUMPI DUP1 PUSH4 0xAFCB1A86 EQ PUSH2 0x354 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x97510496 EQ PUSH2 0x30C JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x7D0A6616 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x804D17DC EQ PUSH2 0x2C4 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x46583ADF GT PUSH2 0x122 JUMPI DUP1 PUSH4 0x4DB34D2A GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x4DB34D2A EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x73EBD060 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x7C1FEF51 EQ PUSH2 0x29C JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x46583ADF EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x4A3A1E11 EQ PUSH2 0x249 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x27F79107 GT PUSH2 0x153 JUMPI DUP1 PUSH4 0x27F79107 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0x2ADBE5AC EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0x43590308 EQ PUSH2 0x21F JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x16E772BC EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x27CB2A3B EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18F PUSH2 0x18A CALLDATASIZE PUSH1 0x4 PUSH2 0x2726 JUMP JUMPDEST PUSH2 0x3D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2A4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0x1C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2871 JUMP JUMPDEST PUSH2 0x4A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x28A5 JUMP JUMPDEST PUSH2 0x5A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2A57 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x21A CALLDATASIZE PUSH1 0x4 PUSH2 0x2821 JUMP JUMPDEST PUSH2 0x5C6 JUMP JUMPDEST PUSH2 0x232 PUSH2 0x22D CALLDATASIZE PUSH1 0x4 PUSH2 0x27EC JUMP JUMPDEST PUSH2 0x602 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x68A JUMP JUMPDEST PUSH2 0x232 PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0x25B7 JUMP JUMPDEST PUSH2 0x699 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x277 CALLDATASIZE PUSH1 0x4 PUSH2 0x2726 JUMP JUMPDEST PUSH2 0x725 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x297 CALLDATASIZE PUSH1 0x4 PUSH2 0x2759 JUMP JUMPDEST PUSH2 0x813 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0xA7A JUMP JUMPDEST PUSH2 0x232 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x2821 JUMP JUMPDEST PUSH2 0xA9E JUMP JUMPDEST PUSH2 0x232 PUSH2 0x2D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x28A5 JUMP JUMPDEST PUSH2 0xAE9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x2F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x267B JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0xC07 JUMP JUMPDEST PUSH2 0x232 PUSH2 0x31A CALLDATASIZE PUSH1 0x4 PUSH2 0x2618 JUMP JUMPDEST PUSH2 0xC2B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x33A CALLDATASIZE PUSH1 0x4 PUSH2 0x2618 JUMP JUMPDEST PUSH2 0xD3C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0xE36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0xEBD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x29CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18F PUSH2 0x391 CALLDATASIZE PUSH1 0x4 PUSH2 0x2821 JUMP JUMPDEST PUSH2 0xF61 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x3B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2759 JUMP JUMPDEST PUSH2 0x1052 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x3D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2759 JUMP JUMPDEST PUSH2 0x114D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x44B SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x477 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x49B SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4FF SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x54F SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x574 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x59D DUP4 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x588 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SWAP1 PUSH2 0x123A JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x5B3 PUSH2 0xEBD JUMP JUMPDEST SWAP1 POP PUSH2 0x5BF DUP2 DUP5 PUSH2 0x125F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH2 0x5D4 DUP3 DUP3 PUSH2 0xF61 JUMP JUMPDEST PUSH2 0x5F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0x5F9 DUP5 PUSH2 0x129B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x60A PUSH2 0x1326 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x674 JUMPI PUSH2 0x634 DUP5 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x627 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xF61 JUMP JUMPDEST PUSH2 0x650 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0x66C DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x65F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x133F JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x60F JUMP JUMPDEST POP POP PUSH2 0x67E PUSH2 0x1470 JUMP JUMPDEST PUSH2 0x686 PUSH2 0x1481 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x694 PUSH2 0x1488 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6A1 PUSH2 0x1326 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x6C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2AFC JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x674 JUMPI PUSH2 0x6F2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6DE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x627 JUMPI INVALID JUMPDEST PUSH2 0x70E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0x71D DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x65F JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x6C7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x781 SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7D1 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x7ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x5BF PUSH1 0x1 DUP5 PUSH1 0x40 MLOAD PUSH2 0x800 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH2 0x149D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x887 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x89F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8D7 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x8F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x40 MLOAD PUSH2 0x905 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x92E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x943 SWAP2 SWAP1 PUSH2 0x270A JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9C868AC0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x98B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x99F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9C3 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x9DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2CB8 JUMP JUMPDEST PUSH2 0x9E9 DUP4 DUP3 PUSH2 0x14A1 JUMP JUMPDEST PUSH2 0xA05 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD PUSH2 0xA13 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xB87757E0365CA4F80CC1F429F422C0EA7EC26BBD3E5778727E77C809462AAD02 DUP10 PUSH1 0x40 MLOAD PUSH2 0xA61 SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 ADD PUSH2 0x918 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xAA6 PUSH2 0x1326 JUMP JUMPDEST DUP2 DUP2 PUSH2 0xAB2 DUP3 DUP3 PUSH2 0xF61 JUMP JUMPDEST PUSH2 0xACE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0xAD7 DUP4 PUSH2 0x133F JUMP JUMPDEST PUSH2 0xADF PUSH2 0x1470 JUMP JUMPDEST POP POP PUSH2 0x686 PUSH2 0x1481 JUMP JUMPDEST PUSH2 0xAF1 PUSH2 0x1326 JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAFCB1A86 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xB95 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x252E JUMP JUMPDEST SWAP1 POP PUSH2 0xBA1 DUP2 DUP4 PUSH2 0x164F JUMP JUMPDEST POP PUSH2 0xBAA PUSH2 0x1470 JUMP JUMPDEST PUSH2 0xBB2 PUSH2 0x1481 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBEA SWAP3 SWAP2 SWAP1 PUSH2 0x2901 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xC33 PUSH2 0x1326 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xD20 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xC88 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCAC SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCFC SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0xD18 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xC37 JUMP JUMPDEST POP PUSH2 0xD2B DUP4 DUP4 PUSH2 0x164F JUMP JUMPDEST PUSH2 0xD33 PUSH2 0x1470 JUMP JUMPDEST POP PUSH2 0x686 PUSH2 0x1481 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xE2B JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD93 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDB7 SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE07 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0xE23 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD42 JUMP JUMPDEST POP PUSH2 0x59D DUP5 DUP5 PUSH2 0x125F JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE40 PUSH2 0xC07 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x694 SWAP2 SWAP1 PUSH2 0x26EE JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAFCB1A86 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x694 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x252E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFBD SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFE9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x100D SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1029 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x59D DUP4 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x103D SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SWAP1 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x10C6 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1116 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1132 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x113A PUSH2 0x16BB JUMP JUMPDEST PUSH2 0x1147 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x1701 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x11C1 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1211 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x122D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x1147 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x1701 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x124C SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0x1ACD JUMP JUMPDEST PUSH2 0x1256 DUP4 DUP4 PUSH2 0x1ADB JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x5A0 JUMPI PUSH1 0x60 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x127A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x128E DUP2 DUP6 PUSH2 0x1B15 JUMP JUMPDEST SWAP1 SWAP3 ADD SWAP2 POP PUSH1 0x1 ADD PUSH2 0x1263 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB0245225 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1313 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1310 SWAP2 DUP2 ADD SWAP1 PUSH2 0x28BD JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x131F JUMPI POP PUSH1 0x0 PUSH2 0x49E JUMP JUMPDEST SWAP1 POP PUSH2 0x49E JUMP JUMPDEST PUSH2 0x1338 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x134A DUP3 PUSH2 0x129B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP1 DUP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC2C4C5C100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x4036176A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 PUSH4 0x4036176A SWAP3 DUP6 SWAP3 PUSH2 0x1415 SWAP3 DUP9 SWAP3 ADD PUSH2 0x2971 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x142E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1442 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x146B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26BB JUMP JUMPDEST POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0xBB2 JUMPI PUSH2 0xBB2 CALLER DUP3 PUSH2 0x1D34 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH3 0x93A80 TIMESTAMP DIV SUB PUSH3 0x93A80 MUL SWAP1 POP SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1645 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x15AA JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x150F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x1545 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x15B5 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x1259 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x1259 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1659 PUSH2 0x1488 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1147 JUMPI PUSH2 0x1685 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1676 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP5 PUSH2 0x1DBB JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x165E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16EA PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0xBB5 JUMP JUMPDEST SWAP1 POP PUSH2 0xBB2 PUSH2 0x16F9 DUP3 CALLER PUSH2 0x2084 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1713 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x173C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1751 SWAP2 SWAP1 PUSH2 0x270A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x61DF1BF900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x61DF1BF9 SWAP1 PUSH2 0x17C6 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1816 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1832 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2A9F JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9C868AC0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1878 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x188C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18B0 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST ISZERO PUSH2 0x18CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C13 JUMP JUMPDEST PUSH2 0x18D7 DUP4 DUP3 PUSH2 0x211A JUMP JUMPDEST PUSH2 0x18F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2CEF JUMP JUMPDEST DUP4 DUP1 PUSH2 0x1A44 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x572CB6A500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x572CB6A5 SWAP1 PUSH2 0x196C SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1984 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1998 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19BC SWAP2 SWAP1 PUSH2 0x26EE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCE3CC8BD DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F4 SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A44 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1A60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2B59 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD PUSH2 0x1A6E SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xBD3A33B3738A69BCFB84219D93FB0B1B2D91EFBF2E5BEF206C9AF4122290FB54 DUP10 PUSH1 0x40 MLOAD PUSH2 0x1ABC SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 ADD PUSH2 0x1726 JUMP JUMPDEST DUP2 PUSH2 0x686 JUMPI PUSH2 0x686 DUP2 PUSH2 0x21A2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1AEC JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B20 PUSH2 0x1488 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B37 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x800 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1B4B SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1D2A JUMPI PUSH1 0x0 PUSH2 0x1B72 DUP4 DUP4 PUSH2 0x1ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA4D7A250 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BD0 SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C20 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT ISZERO SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x1CF4 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xD3078C9400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xD3078C94 SWAP1 PUSH2 0x1CA2 SWAP1 DUP7 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x29A8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CCE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CF2 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT JUMPDEST ISZERO PUSH2 0x1D00 JUMPI POP POP PUSH2 0x1D22 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D0B DUP4 PUSH2 0x129B JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1D1A JUMPI POP POP POP PUSH2 0x1D2A JUMP JUMPDEST SWAP7 SWAP1 SWAP7 ADD SWAP6 POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1B5E JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1D43 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x1D69 SWAP1 PUSH2 0x294D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1DA6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1DAB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x146B DUP2 PUSH2 0x1A4 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1DCD SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x1DE8 DUP3 PUSH2 0x149D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1DF6 JUMPI POP POP PUSH2 0x146B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E0A PUSH2 0x1E05 DUP5 DUP4 PUSH2 0x1ADB JUMP JUMPDEST PUSH2 0x129B JUMP JUMPDEST ISZERO SWAP1 POP PUSH2 0x23C9 DUP2 PUSH2 0x1E1D JUMPI PUSH2 0x21CC PUSH2 0x1E21 JUMP JUMPDEST PUSH2 0x224C JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x207A JUMPI PUSH1 0x0 PUSH2 0x1E3A DUP7 DUP4 PUSH2 0x1ADB JUMP JUMPDEST SWAP1 POP DUP7 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA4D7A250 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E96 SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1EE6 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT ISZERO PUSH2 0x1F91 JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x1F5E SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD3078C9400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xD3078C94 SWAP1 PUSH2 0x2007 SWAP1 DUP6 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x29A8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x201F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2033 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2057 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT ISZERO PUSH2 0x2063 JUMPI POP PUSH2 0x2072 JUMP JUMPDEST PUSH2 0x2070 DUP2 DUP5 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1E26 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208E PUSH2 0xE36 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20CA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1256 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2126 DUP4 DUP4 PUSH2 0x168D JUMP JUMPDEST PUSH2 0x219A JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1259 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1259 JUMP JUMPDEST PUSH2 0xBB2 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x2368 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB0245225 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2228 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x134A SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP1 DUP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC2C4C5C100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x4036176A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 PUSH4 0x4036176A SWAP3 PUSH2 0x2312 SWAP3 DUP7 SWAP3 ADD PUSH2 0x2971 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x232C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2340 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x686 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26BB JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST INVALID JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23DB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x23EE PUSH2 0x23E9 DUP3 PUSH2 0x2D73 JUMP JUMPDEST PUSH2 0x2D4C JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x240F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2437 JUMPI DUP2 CALLDATALOAD PUSH2 0x2425 DUP2 PUSH2 0x2DE3 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2412 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2452 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2460 PUSH2 0x23E9 DUP3 PUSH2 0x2D73 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2437 JUMPI PUSH2 0x2488 DUP9 DUP5 DUP5 CALLDATALOAD DUP11 ADD ADD PUSH2 0x24E0 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2471 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x24AA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x24B8 PUSH2 0x23E9 DUP3 PUSH2 0x2D93 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x24CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5A0 DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2DB7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x24F0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x24FE PUSH2 0x23E9 DUP3 PUSH2 0x2D93 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2515 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2540 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2556 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x2566 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2574 PUSH2 0x23E9 DUP3 PUSH2 0x2D73 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP7 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x25A9 JUMPI PUSH2 0x2597 DUP11 DUP9 DUP5 MLOAD DUP10 ADD ADD PUSH2 0x249A JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP7 ADD SWAP3 SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2580 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25C9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x25E0 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x25EC DUP7 DUP4 DUP8 ADD PUSH2 0x2442 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2601 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x260E DUP6 DUP3 DUP7 ADD PUSH2 0x23CB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x262A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2640 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x264C DUP6 DUP3 DUP7 ADD PUSH2 0x2442 JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x266C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5BF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x268C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x5BF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26CC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x26E2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x59D DUP5 DUP3 DUP6 ADD PUSH2 0x249A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26FF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x5BF DUP2 PUSH2 0x2DE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x271B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5BF DUP2 PUSH2 0x2DE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2737 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x274D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x59D DUP5 DUP3 DUP6 ADD PUSH2 0x24E0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x276D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2784 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2790 DUP8 DUP4 DUP9 ADD PUSH2 0x24E0 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x27A5 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x27B8 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x27C6 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x27D9 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x27FE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2815 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x25EC DUP7 DUP4 DUP8 ADD PUSH2 0x24E0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2833 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2849 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2855 DUP6 DUP3 DUP7 ADD PUSH2 0x24E0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2866 DUP2 PUSH2 0x2DE3 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2883 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2899 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x264C DUP6 DUP3 DUP7 ADD PUSH2 0x24E0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28B6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28CE JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x28ED DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2DB7 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2943 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2DB7 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x29A0 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x28D5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2A3F JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x2A2D DUP6 DUP4 MLOAD PUSH2 0x28D5 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x29F3 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1256 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x28D5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206E6F7420616464656420746F20746865204761756765 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x436F6E74726F6C6C657200000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x4D69736D61746368206265747765656E20676175676520747970657320616E64 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2061646472657373657300000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520646F6573206E6F7420636F72726573706F6E6420746F20746865 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2073656C65637465642074797065000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206E6F7420616464656420746F2074686520636865636B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x706F696E74657200000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206B696C6C656400000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH32 0x4761756765206E6F742061646465640000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676520747970650000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206E6F74206B696C6C6564000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520616C726561647920616464656420746F2074686520636865636B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x706F696E74657200000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2D6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2D89 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2DA9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DD2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2DBA JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1147 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xBB2 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD SWAP7 JUMP SAR 0xDD PUSH29 0xE6B409B5587999C89B40F38D1074F98055464EFAE03C87603B7564736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1660:16949:90:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9400:152;;;;;;;;;;-1:-1:-1;9400:152:90;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5750:257;;;;;;;;;;-1:-1:-1;5750:257:90;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9112:234::-;;;;;;;;;;-1:-1:-1;9112:234:90;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8469:246::-;;;;;;;;;;-1:-1:-1;8469:246:90;;;;;:::i;:::-;;:::i;7312:478::-;;;;;;:::i;:::-;;:::i;:::-;;6061:131;;;;;;;;;;;;;:::i;7844:571::-;;;;;;:::i;:::-;;:::i;5481:215::-;;;;;;;;;;-1:-1:-1;5481:215:90;;;;;:::i;:::-;;:::i;4299:831::-;;;;;;;;;;-1:-1:-1;4299:831:90;;;;;:::i;:::-;;:::i;3109:105::-;;;;;;;;;;;;;:::i;6998:260::-;;;;;;:::i;:::-;;:::i;6246:319::-;;;;;;:::i;:::-;;:::i;2607:430:46:-;;;;;;;;;;-1:-1:-1;2607:430:46;;;;;:::i;:::-;;:::i;1158:79:51:-;;;;;;;;;;;;;:::i;6619:325:90:-;;;;;;:::i;:::-;;:::i;8769:289::-;;;;;;;;;;-1:-1:-1;8769:289:90;;;;;:::i;:::-;;:::i;1297:109:51:-;;;;;;;;;;;;;:::i;3268:123:90:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5184:243::-;;;;;;;;;;-1:-1:-1;5184:243:90;;;;;:::i;:::-;;:::i;3445:423::-;;;;;;;;;;-1:-1:-1;3445:423:90;;;;;:::i;:::-;;:::i;3922:323::-;;;;;;;;;;-1:-1:-1;3922:323:90;;;;;:::i;:::-;;:::i;9400:152::-;9506:39;;;;;9483:4;;9506:28;:11;:28;;;;:39;;9535:9;;9506:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9499:46;;9400:152;;;;:::o;5750:257::-;5917:15;5889:9;2497:11;:28;;;2526:9;2497:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2489:70;;;;-1:-1:-1;;;2489:70:90;;;;;;;:::i;:::-;;;;;;;;;5971:28:::1;5993:5;5971:7;5979:9;5971:18;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;;:21:::1;:28::i;:::-;5948:52;;2569:1;5750:257:::0;;;;;:::o;9112:234::-;9199:7;9218:26;9247:15;:13;:15::i;:::-;9218:44;;9279:60;9309:10;9321:17;9279:29;:60::i;:::-;9272:67;9112:234;-1:-1:-1;;;9112:234:90:o;8469:246::-;8651:7;8616:9;8627:5;2910:26;2919:9;2930:5;2910:8;:26::i;:::-;2902:54;;;;-1:-1:-1;;;2902:54:90;;;;;;;:::i;:::-;8681:27:::1;8702:5;8681:20;:27::i;:::-;8674:34:::0;8469:246;-1:-1:-1;;;;;8469:246:90:o;7312:478::-;2613:20:63;:18;:20::i;:::-;7539:13:90;;7522:14:::2;7562:222;7586:6;7582:1;:10;7562:222;;;7675:30;7684:9;7695:6;7702:1;7695:9;;;;;;;;;;;;;;7675:8;:30::i;:::-;7667:58;;;;-1:-1:-1::0;;;7667:58:90::2;;;;;;;:::i;:::-;7740:33;7763:6;7770:1;7763:9;;;;;;;;;;;;;;7740:22;:33::i;:::-;7594:3;;7562:222;;;;3012:1;3023:25:::1;:23;:25::i;:::-;2654:19:63::0;:17;:19::i;:::-;7312:478:90;;:::o;6061:131::-;6133:7;6159:26;:24;:26::i;:::-;6152:33;;6061:131;:::o;7844:571::-;2613:20:63;:18;:20::i;:::-;8072:6:90::2;:13;8051:10;:17;:34;8043:89;;;;-1:-1:-1::0;;;8043:89:90::2;;;;;;;:::i;:::-;8160:13:::0;;8143:14:::2;8183:226;8207:6;8203:1;:10;8183:226;;;8296:34;8305:10;8316:1;8305:13;;;;;;;;;;;;;;8320:6;8327:1;8320:9;;;;;;;8296:34;8288:62;;;;-1:-1:-1::0;;;8288:62:90::2;;;;;;;:::i;:::-;8365:33;8388:6;8395:1;8388:9;;;;;;;8365:33;8215:3;;8183:226;;5481:215:::0;5632:7;5604:9;2497:11;:28;;;2526:9;2497:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2489:70;;;;-1:-1:-1;;;2489:70:90;;;;;;;:::i;:::-;5662:27:::1;:7;5670:9;5662:18;;;;;;:::i;:::-;;;;;;;;;;;;;:25;:27::i;4299:831::-:0;2497:39;;;;;4442:9;;2497:28;:11;:28;;;;:39;;4442:9;;2497:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2489:70;;;;-1:-1:-1;;;2489:70:90;;;;;;;:::i;:::-;4467:46:::1;4516:7;4524:9;4516:18;;;;;;:::i;:::-;;;;;;;;;;;;;4467:67;;4550:9;4545:579;4565:17:::0;;::::1;4545:579;;;4825:21;4849:6;;4856:1;4849:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;4825:33;;4880:5;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4872:50;;;;-1:-1:-1::0;;;4872:50:90::1;;;;;;;:::i;:::-;4944:36;:13:::0;4973:5;4944:20:::1;:36::i;:::-;4936:88;;;;-1:-1:-1::0;;;4936:88:90::1;;;;;;;:::i;:::-;5092:9;5044:69;;;;;;:::i;:::-;;;;;;;;5085:5;5044:69;;;5103:9;5044:69;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;4584:3:90::1;;4545:579;;;;2569:1;4299:831:::0;;;;:::o;3109:105::-;3196:11;3109:105;:::o;6998:260::-;2613:20:63;:18;:20::i;:::-;7171:9:90::1;7182:5;2910:26;2919:9;2930:5;2910:8;:26::i;:::-;2902:54;;;;-1:-1:-1::0;;;2902:54:90::1;;;;;;;:::i;:::-;7222:29:::3;7245:5;7222:22;:29::i;:::-;3023:25:::2;:23;:25::i;:::-;2643:1:63::1;;2654:19:::0;:17;:19::i;6246:319:90:-;2613:20:63;:18;:20::i;:::-;6425:26:90::2;6454:11;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;6454:27:90::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;6425:56;;6491:67;6528:10;6540:17;6491:36;:67::i;:::-;3012:1;3023:25:::1;:23;:25::i;:::-;2654:19:63::0;:17;:19::i;:::-;6246:319:90;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;6619:325:90:-;2613:20:63;:18;:20::i;:::-;6825:10:90::1;2655:9;2650:147;2674:10;:17;2670:1;:21;2650:147;;;2720:11;:28;;;2749:10;2760:1;2749:13;;;;;;;;;;;;;;2720:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2712:74;;;;-1:-1:-1::0;;;2712:74:90::1;;;;;;;:::i;:::-;2693:3;;2650:147;;;;6870:67:::3;6907:10;6919:17;6870:36;:67::i;:::-;3023:25:::2;:23;:25::i;:::-;2643:1:63::1;2654:19:::0;:17;:19::i;8769:289:90:-;8961:7;8932:10;2655:9;2650:147;2674:10;:17;2670:1;:21;2650:147;;;2720:11;:28;;;2749:10;2760:1;2749:13;;;;;;;;;;;;;;2720:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2712:74;;;;-1:-1:-1;;;2712:74:90;;;;;;;:::i;:::-;2693:3;;2650:147;;;;8991:60:::1;9021:10;9033:17;8991:29;:60::i;1297:109:51:-:0;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3268:123:90:-;3323:15;3357:11;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3357:27:90;;;;;;;;;;;;:::i;5184:243::-;5350:4;5322:9;2497:11;:28;;;2526:9;2497:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2489:70;;;;-1:-1:-1;;;2489:70:90;;;;;;;:::i;:::-;5377:43:::1;5413:5;5377:7;5385:9;5377:18;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;;:27:::1;:43::i;3445:423::-:0;2497:39;;;;;3601:9;;2497:28;:11;:28;;;;:39;;3601:9;;2497:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2489:70;;;;-1:-1:-1;;;2489:70:90;;;;;;;:::i;:::-;2276:21:46::1;:19;:21::i;:::-;3826:35:90::2;3837:9;3848:6;;3856:4;3826:10;:35::i;:::-;3445:423:::0;;;;:::o;3922:323::-;2497:39;;;;;4062:9;;2497:28;:11;:28;;;;:39;;4062:9;;2497:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2489:70;;;;-1:-1:-1;;;2489:70:90;;;;;;;:::i;:::-;4202:36:::1;4213:9;4224:6;;4232:5;4202:10;:36::i;4648:199:62:-:0;4750:18;;4722:7;;4741:58;;4750:26;-1:-1:-1;5662:3:31;4741:8:62;:58::i;:::-;4816:24;4829:3;4834:5;4816:12;:24::i;:::-;4809:31;;4648:199;;;;;:::o;13408:377:90:-;13549:17;;13582:197;13606:10;:17;13602:1;:21;13582:197;;;13644:23;13670:10;13681:1;13670:13;;;;;;;;;;;;;;13644:39;;13710:58;13739:9;13750:17;13710:28;:58::i;:::-;13697:71;;;;-1:-1:-1;13625:3:90;;13582:197;;11255:414;11331:7;11537:5;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11537:26:90;;;;;;;;-1:-1:-1;;11537:26:90;;;;;;;;;;;;:::i;:::-;;;11533:130;;-1:-1:-1;11651:1:90;11644:8;;11533:130;11608:4;-1:-1:-1;11601:11:90;;2686:271:63;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;17422:322:90:-;17496:22;17521:27;17542:5;17521:20;:27::i;:::-;17668:59;;;;;;;;;;;;;;;;;;;17691:35;17668:59;;;17559:178;;;;;17496:52;;-1:-1:-1;17559:42:90;:28;:42;;;;17496:52;;17559:178;;17648:5;;17559:178;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17559:178:90;;;;;;;;;;;;:::i;:::-;;17422:322;;:::o;17868:314::-;18047:21;18082:20;;18078:98;;18118:47;18136:10;18148:16;18118:17;:47::i;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;18359:248:90:-;18417:7;18588:1;18578:7;18560:15;:25;:29;18593:7;18559:41;18552:48;;18359:248;:::o;4192:114:62:-;4281:18;;4192:114::o;2429:1467::-;2639:19;;;2502:4;2639:19;;;:12;;;:19;;;;;;2673:15;;2669:1221;;3114:18;;3066:14;;;;;3114:22;3236:26;;;3232:389;;3282:17;3302:3;:11;;3314:9;3302:22;;;;;;;;;;;;;;;;;;3424:26;;3302:22;;;;;-1:-1:-1;3302:22:62;;3424:3;;3436:13;;3424:26;;;;;;;;;;;;;;;;;;:38;;;;;;;;;;;3536:23;;;;;;-1:-1:-1;3536:12:62;;;:23;;;;;;3562:17;;;3536:43;;3232:389;3699:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3791:19;;;;3699:17;3791:12;;;:19;;;;;;3784:26;;;;3699:17;-1:-1:-1;3825:11:62;;-1:-1:-1;;;3825:11:62;2669:1221;3874:5;3867:12;;;;;13791:326:90;13911:21;13935:26;:24;:26::i;:::-;13911:50;;13977:9;13972:139;13996:10;:17;13992:1;:21;13972:139;;;14034:66;14052:10;14063:1;14052:13;;;;;;;;;;;;;;14067:17;14086:13;14034:17;:66::i;:::-;14015:3;;13972:139;;3977:134:62;4080:19;;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;9558:1531:90:-;9713:46;9762:7;9770:9;9762:18;;;;;;:::i;:::-;;;;;;;;;;;;;9713:67;;9796:9;9791:1292;9811:17;;;9791:1292;;;9849:21;9873:6;;9880:1;9873:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;10095:45;;;;;9849:33;;-1:-1:-1;10095:29:90;:16;:29;;;;:45;;9849:33;;10095:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10087:100;;;;-1:-1:-1;;;10087:100:90;;;;;;;:::i;:::-;10210:5;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10209:18;10201:47;;;;-1:-1:-1;;;10201:47:90;;;;;;;:::i;:::-;10270:33;:13;10296:5;10270:17;:33::i;:::-;10262:85;;;;-1:-1:-1;;;10262:85:90;;;;;;;:::i;:::-;10802:19;:103;;;-1:-1:-1;10825:45:90;;;;;:34;:11;:34;;;;:45;;10860:9;;10825:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:64;;;10898:5;10825:80;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10777:208;;;;-1:-1:-1;;;10777:208:90;;;;;;;:::i;:::-;11051:9;11005:67;;;;;;:::i;:::-;;;;;;;;11044:5;11005:67;;;11062:9;11005:67;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;9830:3:90;;9791:1292;;926:101:31;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;5212:135:62:-;5296:7;5322:3;:11;;5334:5;5322:18;;;;;;;;;;;;;;;;;;;;;5212:135;-1:-1:-1;;;5212:135:62:o;11675:1727:90:-;11812:17;11845:21;11869:26;:24;:26::i;:::-;11845:50;;11905:18;11926:27;:7;11934:9;11926:18;;;;;;:::i;:27::-;11905:48;;11963:39;12005:7;12013:9;12005:18;;;;;;:::i;:::-;;;;;;;;;;;;;11963:60;;12039:9;12034:1362;12058:10;12054:1;:14;12034:1362;;;12089:13;12105:22;:6;12125:1;12105:19;:22::i;:::-;12089:38;;12691:19;12752:13;12713:16;:28;;;12742:5;12713:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;12691:74;;12783:14;:98;;;;-1:-1:-1;12801:60:90;;;;;12864:17;;12801:38;:16;:38;;;;:60;;12840:5;;12847:13;;12801:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:80;12783:98;12779:145;;;12901:8;;;;12779:145;12938:23;12964:44;13001:5;12964:20;:44::i;:::-;12938:70;-1:-1:-1;13126:20:90;13122:64;;13166:5;;;;;13122:64;13357:28;;;;;-1:-1:-1;;12034:1362:90;12070:3;;12034:1362;;;;11675:1727;;;;;;;:::o;2421:369:56:-;2502:78;2536:6;2511:21;:31;;11425:3:31;2502:8:56;:78::i;:::-;2669:12;2687:9;:14;;2710:6;2687:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:54;;;2732:51;2741:7;11488:3:31;2732:8:56;:51::i;14589:1952:90:-;14739:43;14785:7;14793:9;14785:18;;;;;;:::i;:::-;;;;;;;;;;;;;14739:64;;14814:23;14840:19;:10;:17;:19::i;:::-;14814:45;-1:-1:-1;14873:20:90;14869:116;;14968:7;;;;14869:116;15355:24;15383:65;15420:26;:10;15355:24;15420:23;:26::i;:::-;15383:20;:65::i;:::-;:70;;-1:-1:-1;15687:52:90;15383:70;15742:105;;15821:26;15742:105;;;15776:30;15742:105;15687:160;;15863:9;15858:677;15882:15;15878:1;:19;15858:677;;;15918:13;15934:26;:10;15958:1;15934:23;:26::i;:::-;15918:42;;16183:13;16145:16;:28;;;16174:5;16145:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;16141:130;;;16216:40;;;;;:33;:16;:33;;;;:40;;16250:5;;16216:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16141:130;16346:60;;;;;16409:17;;16346:38;:16;:38;;;;:60;;16385:5;;16392:13;;16346:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:80;16342:127;;;16446:8;;;16342:127;16483:41;16517:5;16483:17;:41;;:::i;:::-;15858:677;;15899:3;;15858:677;;;;14589:1952;;;;;;;:::o;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1851:410:62:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:62;;;;;;;;-1:-1:-1;1978:23:62;;;;;;;;;;;;;;;;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:62;2232:12;;1459:126:31;1506:28;1514:9;1506:28;:7;:28::i;16649:324:90:-;16726:22;16751:5;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17073:241::-;17238:59;;;;;;;;;;;;;;;;;;;17261:35;17238:59;;;17154:153;;;;;:42;:28;:42;;;;:153;;17218:5;;17154:153;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17154:153:90;;;;;;;;;;;;:::i;1692:3378:31:-;-1:-1:-1;;;1754:18:31;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;-1:-1:-1;;459:779;;600:3;593:4;585:6;581:17;577:27;567:2;;-1:-1;;608:12;567:2;655:6;642:20;677:104;692:88;773:6;692:88;:::i;:::-;677:104;:::i;:::-;809:21;;;668:113;-1:-1;853:4;866:14;;;;841:17;;;955;;;946:27;;;;943:36;-1:-1;940:2;;;992:1;;982:12;940:2;1017:1;1002:230;1027:6;1024:1;1021:13;1002:230;;;3927:6;3914:20;3939:57;3990:5;3939:57;:::i;:::-;1095:74;;1183:14;;;;1211;;;;1049:1;1042:9;1002:230;;;1006:14;;;;;560:678;;;;:::o;1263:708::-;;1390:3;1383:4;1375:6;1371:17;1367:27;1357:2;;-1:-1;;1398:12;1357:2;1445:6;1432:20;1467:90;1482:74;1549:6;1482:74;:::i;1467:90::-;1585:21;;;1458:99;-1:-1;1629:4;1642:14;;;;1617:17;;;1737:1;1722:243;1747:6;1744:1;1741:13;1722:243;;;1854:47;1897:3;1629:4;1830:3;1817:17;1621:6;1805:30;;1854:47;:::i;:::-;1842:60;;1916:14;;;;1944;;;;1769:1;1762:9;1722:243;;2991:442;;3103:3;3096:4;3088:6;3084:17;3080:27;3070:2;;-1:-1;;3111:12;3070:2;3151:6;3145:13;3173:64;3188:48;3229:6;3188:48;:::i;3173:64::-;3164:73;;3257:6;3250:5;3243:21;3361:3;3293:4;3352:6;3285;3343:16;;3340:25;3337:2;;;3378:1;;3368:12;3337:2;3388:39;3420:6;3293:4;3319:5;3315:16;3293:4;3285:6;3281:17;3388:39;:::i;4009:442::-;;4111:3;4104:4;4096:6;4092:17;4088:27;4078:2;;-1:-1;;4119:12;4078:2;4166:6;4153:20;4188:65;4203:49;4245:6;4203:49;:::i;4188:65::-;4179:74;;4273:6;4266:5;4259:21;4377:3;4309:4;4368:6;4301;4359:16;;4356:25;4353:2;;;4394:1;;4384:12;4353:2;33847:6;4309:4;4301:6;4297:17;4309:4;4335:5;4331:16;33824:30;33903:1;33885:16;;;4309:4;33885:16;33878:27;4335:5;4071:380;-1:-1;;4071:380::o;5190:412::-;;5340:2;;5328:9;5319:7;5315:23;5311:32;5308:2;;;-1:-1;;5346:12;5308:2;5397:17;5391:24;5435:18;5427:6;5424:30;5421:2;;;-1:-1;;5457:12;5421:2;5554:22;;2127:4;2115:17;;2111:27;-1:-1;2101:2;;-1:-1;;2142:12;2101:2;2182:6;2176:13;2204:90;2219:74;2286:6;2219:74;:::i;2204:90::-;2322:21;;;2379:14;;;;2354:17;;;-1:-1;2459:247;2484:6;2481:1;2478:13;2459:247;;;2584:58;2638:3;5340:2;2560:3;2554:10;2358:6;2542:23;;2584:58;:::i;:::-;2572:71;;2657:14;;;;2685;;;;2506:1;2499:9;2459:247;;;-1:-1;5477:109;;5302:300;-1:-1;;;;;;;;5302:300::o;5609:706::-;;;5814:2;5802:9;5793:7;5789:23;5785:32;5782:2;;;-1:-1;;5820:12;5782:2;5878:17;5865:31;5916:18;;5908:6;5905:30;5902:2;;;-1:-1;;5938:12;5902:2;5968:88;6048:7;6039:6;6028:9;6024:22;5968:88;:::i;:::-;5958:98;;6121:2;6110:9;6106:18;6093:32;6079:46;;5916:18;6137:6;6134:30;6131:2;;;-1:-1;;6167:12;6131:2;;6197:102;6291:7;6282:6;6271:9;6267:22;6197:102;:::i;:::-;6187:112;;;5776:539;;;;;:::o;6322:522::-;;;6478:2;6466:9;6457:7;6453:23;6449:32;6446:2;;;-1:-1;;6484:12;6446:2;6542:17;6529:31;6580:18;6572:6;6569:30;6566:2;;;-1:-1;;6602:12;6566:2;6632:88;6712:7;6703:6;6692:9;6688:22;6632:88;:::i;:::-;6622:98;6757:2;6796:22;;;;4979:20;;-1:-1;;;;6440:404::o;6851:257::-;;6963:2;6951:9;6942:7;6938:23;6934:32;6931:2;;;-1:-1;;6969:12;6931:2;2801:6;2795:13;34543:5;31728:13;31721:21;34521:5;34518:32;34508:2;;-1:-1;;34554:12;7115:239;;7218:2;7206:9;7197:7;7193:23;7189:32;7186:2;;;-1:-1;;7224:12;7186:2;2934:6;2921:20;31905:66;34665:5;31894:78;34641:5;34638:34;34628:2;;-1:-1;;34676:12;7361:360;;7485:2;7473:9;7464:7;7460:23;7456:32;7453:2;;;-1:-1;;7491:12;7453:2;7542:17;7536:24;7580:18;7572:6;7569:30;7566:2;;;-1:-1;;7602:12;7566:2;7632:73;7697:7;7688:6;7677:9;7673:22;7632:73;:::i;7728:303::-;;7863:2;7851:9;7842:7;7838:23;7834:32;7831:2;;;-1:-1;;7869:12;7831:2;3545:6;3539:13;3557:53;3604:5;3557:53;:::i;8368:289::-;;8496:2;8484:9;8475:7;8471:23;8467:32;8464:2;;;-1:-1;;8502:12;8464:2;3927:6;3914:20;3939:57;3990:5;3939:57;:::i;8664:347::-;;8778:2;8766:9;8757:7;8753:23;8749:32;8746:2;;;-1:-1;;8784:12;8746:2;8842:17;8829:31;8880:18;8872:6;8869:30;8866:2;;;-1:-1;;8902:12;8866:2;8932:63;8987:7;8978:6;8967:9;8963:22;8932:63;:::i;9018:676::-;;;;9208:2;9196:9;9187:7;9183:23;9179:32;9176:2;;;-1:-1;;9214:12;9176:2;9272:17;9259:31;9310:18;;9302:6;9299:30;9296:2;;;-1:-1;;9332:12;9296:2;9362:63;9417:7;9408:6;9397:9;9393:22;9362:63;:::i;:::-;9352:73;;9490:2;9479:9;9475:18;9462:32;9448:46;;9310:18;9506:6;9503:30;9500:2;;;-1:-1;;9536:12;9500:2;9661:6;9650:9;9646:22;;;194:3;187:4;179:6;175:17;171:27;161:2;;-1:-1;;202:12;161:2;245:6;232:20;9310:18;264:6;261:30;258:2;;;-1:-1;;294:12;258:2;389:3;9490:2;;373:6;369:17;330:6;355:32;;352:41;349:2;;;-1:-1;;396:12;349:2;9490;330:6;326:17;9556:122;;;;;;;;9170:524;;;;;:::o;9701:656::-;;;9881:2;9869:9;9860:7;9856:23;9852:32;9849:2;;;-1:-1;;9887:12;9849:2;9945:17;9932:31;9983:18;;9975:6;9972:30;9969:2;;;-1:-1;;10005:12;9969:2;10035:63;10090:7;10081:6;10070:9;10066:22;10035:63;:::i;10364:520::-;;;10519:2;10507:9;10498:7;10494:23;10490:32;10487:2;;;-1:-1;;10525:12;10487:2;10583:17;10570:31;10621:18;10613:6;10610:30;10607:2;;;-1:-1;;10643:12;10607:2;10673:63;10728:7;10719:6;10708:9;10704:22;10673:63;:::i;:::-;10663:73;;;10773:2;10840:9;10836:22;3914:20;3939:57;3990:5;3939:57;:::i;:::-;10781:87;;;;10481:403;;;;;:::o;10891:472::-;;;11022:2;11010:9;11001:7;10997:23;10993:32;10990:2;;;-1:-1;;11028:12;10990:2;11086:17;11073:31;11124:18;11116:6;11113:30;11110:2;;;-1:-1;;11146:12;11110:2;11176:63;11231:7;11222:6;11211:9;11207:22;11176:63;:::i;11370:241::-;;11474:2;11462:9;11453:7;11449:23;11445:32;11442:2;;;-1:-1;;11480:12;11442:2;-1:-1;4979:20;;11436:175;-1:-1;11436:175::o;11618:263::-;;11733:2;11721:9;11712:7;11708:23;11704:32;11701:2;;;-1:-1;;11739:12;11701:2;-1:-1;5127:13;;11695:186;-1:-1;11695:186::o;13720:343::-;;13862:5;30132:12;30696:6;30691:3;30684:19;13955:52;14000:6;30733:4;30728:3;30724:14;30733:4;13981:5;13977:16;13955:52;:::i;:::-;34445:2;34425:14;-1:-1;;34421:28;14019:39;;;;30733:4;14019:39;;13810:253;-1:-1;;13810:253::o;19481:387::-;13357:37;;;31905:66;31894:78;19732:2;19723:12;;13652:56;19832:11;;;19623:245::o;19875:275::-;;15609:5;30132:12;15721:52;15766:6;15761:3;15754:4;15747:5;15743:16;15721:52;:::i;:::-;15785:16;;;;;20011:139;-1:-1;;20011:139::o;20157:379::-;20521:10;20345:191::o;20543:222::-;32425:42;32414:54;;;;12161:37;;20670:2;20655:18;;20641:124::o;20772:417::-;;32425:42;31644:5;32414:54;12168:3;12161:37;20945:2;21063;21052:9;21048:18;21041:48;21103:76;20945:2;20934:9;20930:18;21165:6;21103:76;:::i;:::-;21095:84;20916:273;-1:-1;;;;20916:273::o;21196:333::-;32425:42;32414:54;;;;12161:37;;21515:2;21500:18;;13357:37;21351:2;21336:18;;21322:207::o;21536:410::-;;21733:2;;21722:9;21718:18;21733:2;21754:17;21747:47;21808:128;12462:5;30132:12;30696:6;30691:3;30684:19;30724:14;21722:9;30724:14;12474:103;;30724:14;21733:2;12634:6;12630:17;21722:9;12621:27;;12609:39;;21733:2;12729:5;29976:14;-1:-1;12768:360;12793:6;12790:1;12787:13;12768:360;;;12845:20;21722:9;12849:4;12845:20;;12840:3;12833:33;12010:66;12072:3;12900:6;12894:13;12010:66;:::i;:::-;12914:92;-1:-1;13107:14;;;;30529;;;;12815:1;12808:9;12768:360;;;-1:-1;21800:136;;21704:242;-1:-1;;;;;;;21704:242::o;21953:210::-;31728:13;;31721:21;13240:34;;22074:2;22059:18;;22045:118::o;22170:222::-;13357:37;;;22297:2;22282:18;;22268:124::o;22399:444::-;13357:37;;;32425:42;32414:54;;;22746:2;22731:18;;12161:37;32414:54;22829:2;22814:18;;12161:37;22582:2;22567:18;;22553:290::o;23922:310::-;;24069:2;24090:17;24083:47;24144:78;24069:2;24058:9;24054:18;24208:6;24144:78;:::i;24239:416::-;24439:2;24453:47;;;16038:2;24424:18;;;30684:19;16074:34;30724:14;;;16054:55;16143:12;16129;;;16122:34;16175:12;;;24410:245::o;24662:416::-;24862:2;24876:47;;;16426:2;24847:18;;;30684:19;16462:34;30724:14;;;16442:55;16531:12;16517;;;16510:34;16563:12;;;24833:245::o;25085:416::-;25285:2;25299:47;;;16814:2;25270:18;;;30684:19;16850:34;30724:14;;;16830:55;16919:16;16905:12;;;16898:38;16955:12;;;25256:245::o;25508:416::-;25708:2;25722:47;;;17206:2;25693:18;;;30684:19;17242:34;30724:14;;;17222:55;17311:9;17297:12;;;17290:31;17340:12;;;25679:245::o;25931:416::-;26131:2;26145:47;;;17591:2;26116:18;;;30684:19;17627:18;30724:14;;;17607:39;17665:12;;;26102:245::o;26354:416::-;26554:2;26568:47;;;17916:2;26539:18;;;30684:19;17952:17;30724:14;;;17932:38;17989:12;;;26525:245::o;26777:416::-;26977:2;26991:47;;;18240:2;26962:18;;;30684:19;18276:20;30724:14;;;18256:41;18316:12;;;26948:245::o;27200:416::-;27400:2;27414:47;;;18872:2;27385:18;;;30684:19;18908:22;30724:14;;;18888:43;18950:12;;;27371:245::o;27623:416::-;27823:2;27837:47;;;19201:2;27808:18;;;30684:19;19237:34;30724:14;;;19217:55;19306:9;19292:12;;;19285:31;19335:12;;;27794:245::o;28275:256::-;28337:2;28331:9;28363:17;;;28438:18;28423:34;;28459:22;;;28420:62;28417:2;;;28495:1;;28485:12;28417:2;28337;28504:22;28315:216;;-1:-1;28315:216::o;28538:328::-;;28721:18;28713:6;28710:30;28707:2;;;-1:-1;;28743:12;28707:2;-1:-1;28788:4;28776:17;;;28841:15;;28644:222::o;29194:321::-;;29337:18;29329:6;29326:30;29323:2;;;-1:-1;;29359:12;29323:2;-1:-1;29436:4;29413:17;-1:-1;;29409:33;29500:4;29490:15;;29260:255::o;33920:268::-;33985:1;33992:101;34006:6;34003:1;34000:13;33992:101;;;34073:11;;;34067:18;34054:11;;;34047:39;34028:2;34021:10;33992:101;;;34108:6;34105:1;34102:13;34099:2;;;-1:-1;;33985:1;34155:16;;34148:27;33969:219::o;34702:157::-;32425:42;34829:5;32414:54;34784:5;34781:55;34771:2;;34850:1;;34840:12"},"methodIdentifiers":{"addGauges(string,address[])":"f7178b88","addGaugesWithVerifiedType(string,address[])":"d8dba2ce","checkpointAllGaugesAboveRelativeWeight(uint256)":"804d17dc","checkpointGaugesOfTypesAboveRelativeWeight(string[],uint256)":"97510496","checkpointMultipleGauges(string[],address[])":"4a3a1e11","checkpointMultipleGaugesOfMatchingType(string,address[])":"43590308","checkpointSingleGauge(string,address)":"7d0a6616","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getGaugeAdder()":"7c1fef51","getGaugeAtIndex(string,uint256)":"27cb2a3b","getGaugeTypes()":"afcb1a86","getGaugeTypesBridgeCost(string[],uint256)":"a9a7f87e","getRoundedDownBlockTimestamp()":"46583adf","getSingleBridgeCost(string,address)":"2adbe5ac","getTotalBridgeCost(uint256)":"27f79107","getTotalGauges(string)":"4db34d2a","getVault()":"8d928af8","hasGauge(string,address)":"c91be043","isValidGaugeType(string)":"16e772bc","removeGauges(string,address[])":"73ebd060"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IGaugeAdder\",\"name\":\"gaugeAdder\",\"type\":\"address\"},{\"internalType\":\"contract IAuthorizerAdaptorEntrypoint\",\"name\":\"authorizerAdaptorEntrypoint\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"GaugeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"GaugeRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"addGauges\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"addGaugesWithVerifiedType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"checkpointAllGaugesAboveRelativeWeight\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"gaugeTypes\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"checkpointGaugesOfTypesAboveRelativeWeight\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"gaugeTypes\",\"type\":\"string[]\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"checkpointMultipleGauges\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"checkpointMultipleGaugesOfMatchingType\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"checkpointSingleGauge\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeAdder\",\"outputs\":[{\"internalType\":\"contract IGaugeAdder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getGaugeAtIndex\",\"outputs\":[{\"internalType\":\"contract IStakelessGauge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeTypes\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"gaugeTypes\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"getGaugeTypesBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRoundedDownBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"getSingleBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"getTotalGauges\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"hasGauge\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"isValidGaugeType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"removeGauges\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addGauges(string,address[])\":{\"details\":\"Gauges added will be considered when performing checkpoints. The gauges to add should meet the following preconditions: - They must have been created in a valid `GaugeFactory`, according to `GaugeAdder#isGaugeFromValidFactory`. - They must exist in the `GaugeController`, according to `GaugeController#gauge_exists`. - They must not be killed. - They must not have been previously added to the checkpointer.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"gauges\":\"Gauges to add.\"}},\"addGaugesWithVerifiedType(string,address[])\":{\"details\":\"Gauges added will be considered when performing checkpoints. The gauges to add should meet the following preconditions: - They must exist in the GaugeController, according to GaugeController#gauge_exists. - They must not be killed. - They must not have been previously added to the checkpointer. Unlike `addGauges`, this function can add gauges that were created by factories registered in a deprecated `GaugeAdder`, and therefore cannot be validated by the current `GaugeAdder`.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"gauges\":\"Gauges to add.\"}},\"checkpointAllGaugesAboveRelativeWeight(uint256)\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getTotalBridgeCost` to determine the required amount of ETH for the execution to succeed.\",\"params\":{\"minRelativeWeight\":\"Threshold to filter out gauges below it.\"}},\"checkpointGaugesOfTypesAboveRelativeWeight(string[],uint256)\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getGaugeTypesBridgeCost` to determine the required amount of ETH for the execution to succeed. Reverts if invalid gauge types are given.\",\"params\":{\"gaugeTypes\":\"Types of the gauges to checkpoint.\",\"minRelativeWeight\":\"Threshold to filter out gauges below it.\"}},\"checkpointMultipleGauges(string[],address[])\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Reverts if the gauges were not added to the checkpointer beforehand, or if invalid gauge types are given. Reverts if the types array does not have the same length as the gauges array.\",\"params\":{\"gaugeTypes\":\"Types of the gauges to be checkpointed, in the same order as the gauges to be checkpointed.\",\"gauges\":\"Addresses of the gauges to checkpoint.\"}},\"checkpointMultipleGaugesOfMatchingType(string,address[])\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Reverts if the gauges were not added to the checkpointer beforehand, or if an invalid gauge type is given.\",\"params\":{\"gaugeType\":\"Type of the gauges to be checkpointed.\",\"gauges\":\"Addresses of the gauges to checkpoint.\"}},\"checkpointSingleGauge(string,address)\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getSingleBridgeCost` to determine the required amount of ETH for the execution to succeed. Reverts if the gauge was not added to the checkpointer beforehand.\",\"params\":{\"gauge\":\"Address of the gauge to checkpoint.\",\"gaugeType\":\"Type of the gauge.\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getGaugeAtIndex(string,uint256)\":{\"details\":\"Reverts if the index is greater than or equal to the amount of added gauges for the given type.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"index\":\"- Index of the added gauge.\"}},\"getGaugeTypesBridgeCost(string[],uint256)\":{\"details\":\"A lower minimum relative weight might return higher costs, since more gauges could potentially be included in the checkpoint. Reverts for invalid gauge types.\",\"params\":{\"gaugeTypes\":\"Types of the gauges.\",\"minRelativeWeight\":\"Minimum relative weight filter: gauges below this value do not add to the bridge cost.\"}},\"getSingleBridgeCost(string,address)\":{\"details\":\"Reverts if the gauge was not added to the checkpointer beforehand, or if the gauge type is invalid.\",\"params\":{\"gauge\":\"Address of the gauge to check the bridge costs.\",\"gaugeType\":\"Type of the gauge.\"}},\"getTotalBridgeCost(uint256)\":{\"details\":\"A lower minimum relative weight might return higher costs, since more gauges could potentially be included in the checkpoint.\",\"params\":{\"minRelativeWeight\":\"Minimum relative weight filter: gauges below this value do not add to the bridge cost.\"}},\"getTotalGauges(string)\":{\"params\":{\"gaugeType\":\"Type of the gauge.\"}},\"hasGauge(string,address)\":{\"params\":{\"gauge\":\"Gauge to check.\",\"gaugeType\":\"Type of the gauge.\"}},\"removeGauges(string,address[])\":{\"details\":\"Removed gauges will not be considered when performing checkpoints. To remove gauges: - They must be killed. - They must have been previously added to the checkpointer.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"gauges\":\"Gauges to remove.\"}}},\"title\":\"Stakeless Gauge Checkpointer\",\"version\":1},\"userdoc\":{\"events\":{\"GaugeAdded(address,string,string)\":{\"notice\":\"Emitted when a gauge is added to the checkpointer.\"},\"GaugeRemoved(address,string,string)\":{\"notice\":\"Emitted when a gauge is removed from the checkpointer.\"}},\"kind\":\"user\",\"methods\":{\"addGauges(string,address[])\":{\"notice\":\"Adds an array of gauges from the given type.\"},\"addGaugesWithVerifiedType(string,address[])\":{\"notice\":\"Adds an array of gauges from the given type. This is a permissioned function.\"},\"checkpointAllGaugesAboveRelativeWeight(uint256)\":{\"notice\":\"Performs a checkpoint for all added gauges above the given relative weight threshold.\"},\"checkpointGaugesOfTypesAboveRelativeWeight(string[],uint256)\":{\"notice\":\"Performs a checkpoint for all added gauges above the given relative weight threshold for the given types.\"},\"checkpointMultipleGauges(string[],address[])\":{\"notice\":\"Performs a checkpoint for a multiple added gauges of the given types.\"},\"checkpointMultipleGaugesOfMatchingType(string,address[])\":{\"notice\":\"Performs a checkpoint for a multiple added gauges of the given types.\"},\"checkpointSingleGauge(string,address)\":{\"notice\":\"Performs a checkpoint for a single added gauge of a given type.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getGaugeAdder()\":{\"notice\":\"Returns `GaugeAdder` contract.\"},\"getGaugeAtIndex(string,uint256)\":{\"notice\":\"Returns the gauge of a given type at the given index.\"},\"getGaugeTypes()\":{\"notice\":\"Returns gauge types available in the checkpointer.\"},\"getGaugeTypesBridgeCost(string[],uint256)\":{\"notice\":\"Returns the ETH cost to checkpoint all gauges from the given types.\"},\"getRoundedDownBlockTimestamp()\":{\"notice\":\"Returns the timestamp corresponding to the start of the previous week of the current block.\"},\"getSingleBridgeCost(string,address)\":{\"notice\":\"Returns the ETH cost to checkpoint a single given gauge.\"},\"getTotalBridgeCost(uint256)\":{\"notice\":\"Returns the ETH cost to checkpoint all gauges for a given minimum relative weight.\"},\"getTotalGauges(string)\":{\"notice\":\"Returns the amount of added gauges for a given type.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"hasGauge(string,address)\":{\"notice\":\"Returns true if the given gauge was added for the given type; false otherwise.\"},\"isValidGaugeType(string)\":{\"notice\":\"Returns true if gauge type is valid; false otherwise.\"},\"removeGauges(string,address[])\":{\"notice\":\"Removes an array of gauges from the given type.\"}},\"notice\":\"Implements IStakelessGaugeCheckpointer; refer to it for API documentation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/StakelessGaugeCheckpointer.sol\":\"StakelessGaugeCheckpointer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol\":{\"keccak256\":\"0xc534a9120b1e85fdc2e40ae24a5264d4bb6fdbd458fe287fd8fe25a852bebe6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ba7317f70be2cdf2cdf81b1c2178a8297497e7bff697d9a001f7bdb01363d2b\",\"dweb:/ipfs/QmWBysYby5rywAfN6JQ9Dd6gdJf9jwLsQUyBPybnVvXe5z\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x25b2a2ad63f9aa59c45f1a81a2f79733b8dcdce268cc9b1ac03866396f4b0d17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://efe9f30e6cab81587b738089165050d35533926703f4ad1da0f86452a69874ce\",\"dweb:/ipfs/QmcJoNP8NAEefchpG3qs3CwMw1qhxBJTgBMY4KY6g6qfUa\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol\":{\"keccak256\":\"0x50d40373e50d13566dbb624ac65494f70835aa52ff553e1185df480feae6ecd8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6038ec50171ea847ca9aeeec4af6e9721bcba35223d364f832da5f269e8a722\",\"dweb:/ipfs/QmdvyixjrpFud1kAS8un3wje2xUjrY82BRL7sUHqKvLJq2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol\":{\"keccak256\":\"0x09ff99f18e34cb0c794c080694581755503db45d8486bead830ec32dc1471226\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://620fbf404a1fd3ee079562de30b56d018bdef1aeb3e060fc73c31dc0e9ea0162\",\"dweb:/ipfs/QmeXPa87gfhbCa2y5XugFCC47Ea5aPLEsZuAaQMa7o8YXX\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/admin/GaugeAdder.sol\":{\"keccak256\":\"0x679ab1f31aad932b35cc34617b1b97279ddb03776059dbed8d8ab5fd9eb9c2cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1592b73fe75314e502fe86c8590051454919221e5decec8b6f9045e5800e14e\",\"dweb:/ipfs/QmY4vv3Rjdc567VoU6kT6EHKvU3TQzPxHQMgBbxcQqak7q\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/StakelessGaugeCheckpointer.sol\":{\"keccak256\":\"0x4c32cdf8730851fa001d34856461dcde2e766f75e68eb9f0e668ae17523f3787\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a064e381173ec93418b243eed213ff492eb3aac8e9e546d3b5fea15be06dc53f\",\"dweb:/ipfs/Qmc7TWLUgEkywxYvsdo4BMFUA5a7VGc46nUk6TCjWcPZmx\"]},\"contracts/gauges/arbitrum/ArbitrumRootGauge.sol\":{\"keccak256\":\"0x374c214f8fd093fabbd208de098bfc6ef6d7dafc3567bd455f19f9706073f72f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://eaa2ced6e8884d9e7a7c3eeffee53e98b42aa4467c10ed0391cd0576e4081754\",\"dweb:/ipfs/QmcUBCnzfJSwzmCigh6t2bCkvFCow9JLC7yFKBTZYKGG2v\"]},\"contracts/gauges/arbitrum/IGatewayRouter.sol\":{\"keccak256\":\"0x18111553a1164746a16d3143d5b8bf2e15f825eefcbe0a987539cebde460a0f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8b5dc6100de63234a9543ff772cfeaa26d004b3838f2173e233ecf4ead0df976\",\"dweb:/ipfs/QmZwLoAmyzXmRF5RoJyb3AHvyTWEuaJNX8oLTXF6k7jD5W\"]}},\"version\":1}"}},"contracts/gauges/arbitrum/ArbitrumRootGauge.sol":{"ArbitrumRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IGatewayRouter","name":"gatewayRouter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101e06040523480156200001257600080fd5b5060405162001bcd38038062001bcd833981810160405260408110156200003857600080fd5b508051602091820151600160009081556040805163e6dec36f60e01b815290519394929385936001600160a01b0385169263e6dec36f9260048083019392829003018186803b1580156200008b57600080fd5b505afa158015620000a0573d6000803e3d6000fd5b505050506040513d6020811015620000b757600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010057600080fd5b505afa15801562000115573d6000803e3d6000fd5b505050506040513d60208110156200012c57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017557600080fd5b505afa1580156200018a573d6000803e3d6000fd5b505050506040513d6020811015620001a157600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021257600080fd5b505afa15801562000227573d6000803e3d6000fd5b505050506040513d60208110156200023e57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d6020811015620002be57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030557600080fd5b505afa1580156200031a573d6000803e3d6000fd5b505050506040513d60208110156200033157600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200037857600080fd5b505afa1580156200038d573d6000803e3d6000fd5b505050506040513d6020811015620003a457600080fd5b505161016052505060001960025550506040805163c003969960e01b815290516001600160a01b038084169263bda009fe929186169163c003969991600480820192602092909190829003018186803b1580156200040157600080fd5b505afa15801562000416573d6000803e3d6000fd5b505050506040513d60208110156200042d57600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b039092166004830152516024808301926020929190829003018186803b1580156200047557600080fd5b505afa1580156200048a573d6000803e3d6000fd5b505050506040513d6020811015620004a157600080fd5b50516001600160601b0319606091821b81166101805291811b9091166101a05233901b6101c0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c6101c05160601c61164862000585600039806106005280610d1d525080610e40525080610cf15250806108d25250806108b1525080610834528061091e525080610383528061053f52806106d95280610b0d52508061042252806107c2525080610a145250806110765280611173525080610ccf5280610e7d52506116486000f3fe6080604052600436106100d25760003560e01c80639c868ac01161007f578063b024522511610059578063b024522514610265578063c2c4c5c11461027a578063cd6dc68714610282578063d34fb267146102c8576100d2565b80639c868ac0146102265780639f8676711461023b578063ab8f094514610250576100d2565b80631b88094d116100b05780631b88094d1461017f5780634b820093146101bd57806383f5c39b14610211576100d2565b806309400707146100d757806310d3eb041461012957806314e956f514610155575b600080fd5b3480156100e357600080fd5b50610117600480360360208110156100fa57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102dd565b60408051918252519081900360200190f35b34801561013557600080fd5b506101536004803603602081101561014c57600080fd5b503561036b565b005b34801561016157600080fd5b506101176004803603602081101561017857600080fd5b503561041b565b34801561018b57600080fd5b506101946104e9565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c957600080fd5b506101fd600480360360208110156101e057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610506565b604080519115158252519081900360200190f35b34801561021d57600080fd5b5061011761050c565b34801561023257600080fd5b506101fd610512565b34801561024757600080fd5b5061011761051b565b34801561025c57600080fd5b50610153610527565b34801561027157600080fd5b506101176105f8565b6101fd6106b7565b34801561028e57600080fd5b50610153600480360360408110156102a557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610aa4565b3480156102d457600080fd5b50610153610af5565b600073ffffffffffffffffffffffffffffffffffffffff8216301461036357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461040f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61041881610bc3565b50565b60006104e37f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104af57600080fd5b505afa1580156104c3573d6000803e3d6000fd5b505050506040513d60208110156104d957600080fd5b5051600654610c5f565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105cb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ac8288c06040518163ffffffff1660e01b815260040160606040518083038186803b15801561066457600080fd5b505afa158015610678573d6000803e3d6000fd5b505050506040513d606081101561068e57600080fd5b508051602082015160409092015190945090925090506106af838383610c6b565b935050505090565b60006106c1610c71565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461076557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610772610c8a565b905080821015610a9657604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff018110156109a9578481111561086e576109a9565b62093a8081026000806108808361041b565b905082851015801561089657508262093a800185105b1561094f57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008902816108fa57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506109649050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610856565b506002849055600480548301905581158015906109c9575060055460ff16155b15610a9257604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610a5c57600080fd5b505af1158015610a70573d6000803e3d6000fd5b505050506040513d6020811015610a8657600080fd5b50610a92905082610cb5565b5050505b600192505050610503610ffc565b610aad81611003565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610c24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806115bb6034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b91020190565b610c8360026000541415610190611215565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610d1673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611223565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ac8288c06040518163ffffffff1660e01b815260040160606040518083038186803b158015610d8157600080fd5b505afa158015610d95573d6000803e3d6000fd5b505050506040513d6060811015610dab57600080fd5b508051602082015160409092015190945090925090506000610dce848484610c6b565b9050803414610e3e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2ce7d65827f0000000000000000000000000000000000000000000000000000000000000000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16898989896040516020018082815260200180602001828103825260008152602001602001925050506040516020818303038152906040526040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610f8c578181015183820152602001610f74565b50505050905090810190601f168015610fb95780820380516001836020036101000a031916815260200191505b509750505050505050506000604051808303818588803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b50505050505050505050565b6001600055565b6002541561107257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110da57600080fd5b505afa1580156110ee573d6000803e3d6000fd5b505050506040513d602081101561110457600080fd5b505190508061115e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806115ef6024913960400191505060405180910390fd5b600181905561116b610c8a565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111d957600080fd5b505af11580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b505160035561121182610bc3565b5050565b8161121157611211816113f9565b80158015906112d25750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156112a357600080fd5b505afa1580156112b7573d6000803e3d6000fd5b505050506040513d60208110156112cd57600080fd5b505115155b15611367576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611367908490611423565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526113f4908490611423565b505050565b610418817f42414c000000000000000000000000000000000000000000000000000000000061153f565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061148c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161144f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114ee576040519150601f19603f3d011682016040523d82523d6000602084013e6114f3565b606091505b5091509150600082141561150b573d6000803e3d6000fd5b611539815160001480611531575081806020019051602081101561152e57600080fd5b50515b6101a2611215565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212202ddd39149091ef9b57cc92e0e32b27e04fa7e9dc950cd794d3bf20fd109df6f964736f6c63430007010033","opcodes":"PUSH2 0x1E0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1BCD CODESIZE SUB DUP1 PUSH3 0x1BCD DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 DUP6 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x18A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x227 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x31A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x38D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 PUSH4 0xBDA009FE SWAP3 SWAP2 DUP7 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x416 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x48A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x4A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP2 DUP2 SHL SWAP1 SWAP2 AND PUSH2 0x1A0 MSTORE CALLER SWAP1 SHL PUSH2 0x1C0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1C0 MLOAD PUSH1 0x60 SHR PUSH2 0x1648 PUSH3 0x585 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x600 MSTORE DUP1 PUSH2 0xD1D MSTORE POP DUP1 PUSH2 0xE40 MSTORE POP DUP1 PUSH2 0xCF1 MSTORE POP DUP1 PUSH2 0x8D2 MSTORE POP DUP1 PUSH2 0x8B1 MSTORE POP DUP1 PUSH2 0x834 MSTORE DUP1 PUSH2 0x91E MSTORE POP DUP1 PUSH2 0x383 MSTORE DUP1 PUSH2 0x53F MSTORE DUP1 PUSH2 0x6D9 MSTORE DUP1 PUSH2 0xB0D MSTORE POP DUP1 PUSH2 0x422 MSTORE DUP1 PUSH2 0x7C2 MSTORE POP DUP1 PUSH2 0xA14 MSTORE POP DUP1 PUSH2 0x1076 MSTORE DUP1 PUSH2 0x1173 MSTORE POP DUP1 PUSH2 0xCCF MSTORE DUP1 PUSH2 0xE7D MSTORE POP PUSH2 0x1648 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C868AC0 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x282 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2C8 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x250 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x211 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x155 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x36B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x41B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x4E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x506 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x50C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x512 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x51B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH2 0x527 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x6B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH2 0xAF5 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x363 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x40F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 DUP2 PUSH2 0xBC3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC5F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5CB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAC8288C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x678 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x6AF DUP4 DUP4 DUP4 PUSH2 0xC6B JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C1 PUSH2 0xC71 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x765 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x772 PUSH2 0xC8A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x809 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x9A9 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x86E JUMPI PUSH2 0x9A9 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x880 DUP4 PUSH2 0x41B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x896 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x94F JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x8FA JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x964 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x856 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x9C9 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA70 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA92 SWAP1 POP DUP3 PUSH2 0xCB5 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x503 PUSH2 0xFFC JUMP JUMPDEST PUSH2 0xAAD DUP2 PUSH2 0x1003 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB99 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xC24 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15BB PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0xC83 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xD16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1223 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAC8288C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0xDCE DUP5 DUP5 DUP5 PUSH2 0xC6B JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xE3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2CE7D65 DUP3 PUSH32 0x0 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF8C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF74 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFB9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFF0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x1072 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x115E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15EF PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x116B PUSH2 0xC8A JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x1211 DUP3 PUSH2 0xBC3 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x1211 JUMPI PUSH2 0x1211 DUP2 PUSH2 0x13F9 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x12D2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1367 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1367 SWAP1 DUP5 SWAP1 PUSH2 0x1423 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13F4 SWAP1 DUP5 SWAP1 PUSH2 0x1423 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x418 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x153F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x148C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x144F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x14EE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x14F3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x150B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1539 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1531 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x152E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1215 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212202DDD39149091EF9B57CC92E0E32B27E0 0x4F 0xA7 0xE9 0xDC SWAP6 0xC 0xD7 SWAP5 0xD3 0xBF KECCAK256 REVERT LT SWAP14 0xF6 0xF9 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"949:2808:91:-:0;;;1213:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1213:277:91;;;;;;;2070:1:63;2175:7;:22;;;1213:277:91;2339:30:89;;-1:-1:-1;2339:30:89;;;;1213:277:91;;;;;;-1:-1:-1;2339:28:89;;;-1:-1:-1;;2339:30:89;;;;;1213:277:91;2339:30:89;;;;;:28;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2339:30:89;2398:29;;;-1:-1:-1;2398:29:89;;;;2339:30;;-1:-1:-1;2380:15:89;;-1:-1:-1;2398:27:89;;;-1:-1:-1;;2398:29:89;;;;;2339:30;;2398:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2398:29:89;2472:27;;;-1:-1:-1;2472:27:89;;;;2398:29;;-1:-1:-1;2437:32:89;;-1:-1:-1;2472:25:89;;;;;:27;;;;;2398:29;;2472:27;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2472:27:89;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2472:27;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;2472:27;;2665:23;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2665:23:89;2644:44;;-1:-1:-1;2644:44:89;;;2722:32;;;-1:-1:-1;2722:32:89;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;2665:23;;2722:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2722:32:89;2699:55;;2794:39;;;-1:-1:-1;2794:39:89;;;;-1:-1:-1;2794:37:89;;;-1:-1:-1;;2794:39:89;;;;;2722:32;;2794:39;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:39:89;2764:69;;2863:29;;;-1:-1:-1;2863:29:89;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;2794:39;;2863:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2863:29:89;2843:49;;-1:-1:-1;;;3053:7:89;:27;-1:-1:-1;;1363:25:91::1;::::0;;-1:-1:-1;1363:25:91;;;;-1:-1:-1;1330:24:91;;::::1;::::0;::::1;::::0;1363:23;;::::1;::::0;-1:-1:-1;;1363:25:91::1;::::0;;::::1;::::0;2863:29:89;;1363:25:91;;;;;;;;:23;:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;1363:25:91;1330:60:::1;::::0;;-1:-1:-1;1330:60:91;;;-1:-1:-1;1330:60:91;;;-1:-1:-1;1330:60:91;;::::1;;::::0;::::1;::::0;;;;;;;1363:25:::1;::::0;1330:60;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;1330:60:91;-1:-1:-1;;;;;;1319:71:91::1;::::0;;;;;::::1;::::0;1400:30;;;;;;::::1;::::0;1472:10:::1;1440:43:::0;::::1;;::::0;-1:-1:-1;949:2808:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":3279},{"length":32,"start":3709}],"14642":[{"length":32,"start":4214},{"length":32,"start":4467}],"14644":[{"length":32,"start":2580}],"14646":[{"length":32,"start":1058},{"length":32,"start":1986}],"14648":[{"length":32,"start":899},{"length":32,"start":1343},{"length":32,"start":1753},{"length":32,"start":2829}],"14656":[{"length":32,"start":2100},{"length":32,"start":2334}],"14658":[{"length":32,"start":2225}],"14660":[{"length":32,"start":2258}],"16313":[{"length":32,"start":3313}],"16315":[{"length":32,"start":3648}],"16317":[{"length":32,"start":1536},{"length":32,"start":3357}]},"linkReferences":{},"object":"6080604052600436106100d25760003560e01c80639c868ac01161007f578063b024522511610059578063b024522514610265578063c2c4c5c11461027a578063cd6dc68714610282578063d34fb267146102c8576100d2565b80639c868ac0146102265780639f8676711461023b578063ab8f094514610250576100d2565b80631b88094d116100b05780631b88094d1461017f5780634b820093146101bd57806383f5c39b14610211576100d2565b806309400707146100d757806310d3eb041461012957806314e956f514610155575b600080fd5b3480156100e357600080fd5b50610117600480360360208110156100fa57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102dd565b60408051918252519081900360200190f35b34801561013557600080fd5b506101536004803603602081101561014c57600080fd5b503561036b565b005b34801561016157600080fd5b506101176004803603602081101561017857600080fd5b503561041b565b34801561018b57600080fd5b506101946104e9565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c957600080fd5b506101fd600480360360208110156101e057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610506565b604080519115158252519081900360200190f35b34801561021d57600080fd5b5061011761050c565b34801561023257600080fd5b506101fd610512565b34801561024757600080fd5b5061011761051b565b34801561025c57600080fd5b50610153610527565b34801561027157600080fd5b506101176105f8565b6101fd6106b7565b34801561028e57600080fd5b50610153600480360360408110156102a557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610aa4565b3480156102d457600080fd5b50610153610af5565b600073ffffffffffffffffffffffffffffffffffffffff8216301461036357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461040f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61041881610bc3565b50565b60006104e37f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104af57600080fd5b505afa1580156104c3573d6000803e3d6000fd5b505050506040513d60208110156104d957600080fd5b5051600654610c5f565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105cb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ac8288c06040518163ffffffff1660e01b815260040160606040518083038186803b15801561066457600080fd5b505afa158015610678573d6000803e3d6000fd5b505050506040513d606081101561068e57600080fd5b508051602082015160409092015190945090925090506106af838383610c6b565b935050505090565b60006106c1610c71565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461076557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610772610c8a565b905080821015610a9657604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff018110156109a9578481111561086e576109a9565b62093a8081026000806108808361041b565b905082851015801561089657508262093a800185105b1561094f57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008902816108fa57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506109649050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610856565b506002849055600480548301905581158015906109c9575060055460ff16155b15610a9257604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610a5c57600080fd5b505af1158015610a70573d6000803e3d6000fd5b505050506040513d6020811015610a8657600080fd5b50610a92905082610cb5565b5050505b600192505050610503610ffc565b610aad81611003565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610c24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806115bb6034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b91020190565b610c8360026000541415610190611215565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610d1673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611223565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ac8288c06040518163ffffffff1660e01b815260040160606040518083038186803b158015610d8157600080fd5b505afa158015610d95573d6000803e3d6000fd5b505050506040513d6060811015610dab57600080fd5b508051602082015160409092015190945090925090506000610dce848484610c6b565b9050803414610e3e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2ce7d65827f0000000000000000000000000000000000000000000000000000000000000000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16898989896040516020018082815260200180602001828103825260008152602001602001925050506040516020818303038152906040526040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610f8c578181015183820152602001610f74565b50505050905090810190601f168015610fb95780820380516001836020036101000a031916815260200191505b509750505050505050506000604051808303818588803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b50505050505050505050565b6001600055565b6002541561107257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110da57600080fd5b505afa1580156110ee573d6000803e3d6000fd5b505050506040513d602081101561110457600080fd5b505190508061115e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806115ef6024913960400191505060405180910390fd5b600181905561116b610c8a565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111d957600080fd5b505af11580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b505160035561121182610bc3565b5050565b8161121157611211816113f9565b80158015906112d25750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156112a357600080fd5b505afa1580156112b7573d6000803e3d6000fd5b505050506040513d60208110156112cd57600080fd5b505115155b15611367576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611367908490611423565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526113f4908490611423565b505050565b610418817f42414c000000000000000000000000000000000000000000000000000000000061153f565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061148c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161144f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114ee576040519150601f19603f3d011682016040523d82523d6000602084013e6114f3565b606091505b5091509150600082141561150b573d6000803e3d6000fd5b611539815160001480611531575081806020019051602081101561152e57600080fd5b50515b6101a2611215565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212202ddd39149091ef9b57cc92e0e32b27e04fa7e9dc950cd794d3bf20fd109df6f964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C868AC0 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x282 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2C8 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x250 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x211 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x155 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x36B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x41B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x4E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x506 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x50C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x512 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x51B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH2 0x527 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x6B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH2 0xAF5 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x363 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x40F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 DUP2 PUSH2 0xBC3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC5F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5CB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAC8288C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x678 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x6AF DUP4 DUP4 DUP4 PUSH2 0xC6B JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C1 PUSH2 0xC71 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x765 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x772 PUSH2 0xC8A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x809 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x9A9 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x86E JUMPI PUSH2 0x9A9 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x880 DUP4 PUSH2 0x41B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x896 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x94F JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x8FA JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x964 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x856 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x9C9 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA70 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA92 SWAP1 POP DUP3 PUSH2 0xCB5 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x503 PUSH2 0xFFC JUMP JUMPDEST PUSH2 0xAAD DUP2 PUSH2 0x1003 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB99 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xC24 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15BB PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0xC83 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xD16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1223 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAC8288C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0xDCE DUP5 DUP5 DUP5 PUSH2 0xC6B JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xE3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2CE7D65 DUP3 PUSH32 0x0 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF8C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF74 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFB9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFF0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x1072 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x115E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15EF PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x116B PUSH2 0xC8A JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x1211 DUP3 PUSH2 0xBC3 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x1211 JUMPI PUSH2 0x1211 DUP2 PUSH2 0x13F9 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x12D2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1367 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1367 SWAP1 DUP5 SWAP1 PUSH2 0x1423 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13F4 SWAP1 DUP5 SWAP1 PUSH2 0x1423 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x418 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x153F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x148C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x144F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x14EE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x14F3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x150B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1539 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1531 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x152E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1215 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212202DDD39149091EF9B57CC92E0E32B27E0 0x4F 0xA7 0xE9 0xDC SWAP6 0xC 0xD7 SWAP5 0xD3 0xBF KECCAK256 REVERT LT SWAP14 0xF6 0xF9 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"949:2808:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6895:191:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6895:191:89;;;;:::i;:::-;;;;;;;;;;;;;;;;7513:214;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7513:214:89;;:::i;:::-;;8159:199;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:199:89;;:::i;1729:99:91:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6789:100:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6789:100:89;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8038:115;;;;;;;;;;;;;:::i;7092:92::-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;3277:255:91:-;;;;;;;;;;;;;:::i;3697:2655:89:-;;;:::i;1496:227:91:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1496:227:91;;;;;;;;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;6895:191::-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8271:59:89;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;1729:99:91:-;1811:10;;;;1729:99;;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;8038:115::-;8128:18;;8038:115;:::o;7092:92::-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;3277:255:91:-;3339:7;3359:16;3377;3395:25;3424:8;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3424:26:91;;;;;;;;;;;;;-1:-1:-1;3424:26:91;;-1:-1:-1;3424:26:91;-1:-1:-1;3467:58:91;3424:26;;;3467:19;:58::i;:::-;3460:65;;;;;3277:255;:::o;3697:2655:89:-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;;4042:4:::1;4000:48;::::0;::::1;::::0;;;:33:::1;:16;:33;::::0;::::1;::::0;:48;;;;;-1:-1:-1;;4000:48:89;;;;;;;-1:-1:-1;4000:33:89;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5978:38;::::0;;;;;;;5989:10;;5978:38:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;;6246:4:::1;6225:27;::::0;::::1;::::0;;;:12:::1;:7;:12;::::0;::::1;::::0;:27;;;;;::::1;::::0;;;;;;;;-1:-1:-1;6225:12:89;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6270:29:89::1;::::0;-1:-1:-1;6286:12:89;6270:15:::1;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;1496:227:91:-;1643:40;1665:17;1643:21;:40::i;:::-;-1:-1:-1;1694:10:91;:22;;;;;;;;;;;;;;;1496:227::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7929:18;:38;;;7982:43;;;;;;;;;;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;3538:217:91:-;3709:19;;:39;;3538:217::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;1834:1437:91:-;1983:43;:21;:9;:21;2005:8;2015:10;1983:21;:43::i;:::-;2038:16;2056;2074:25;2103:8;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2103:26:91;;;;;;;;;;;;;-1:-1:-1;2103:26:91;;-1:-1:-1;2103:26:91;-1:-1:-1;2139:23:91;2165:58;2103:26;;;2165:19;:58::i;:::-;2139:84;;2254:15;2241:9;:28;2233:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3035:14;:31;;;3075:15;3106:9;3129:10;;;;;;;;;;;3153;3177:8;3199;3232:17;3221:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3035:229;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1834:1437;;;;;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3428:18:89;;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3601:33:89;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;;1256:4;1232:43;;;;:15;:43;;;;;;;;;:15;;;;;;:43;;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1232:43:64;:48;;1218:62;1214:183;;;1332:53;;;;;;;;;;1383:1;1332:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:22;1332:53;;;1296:90;;1324:5;;1296:19;:90::i;:::-;1443:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1466:22;1443:57;;;1407:94;;1435:5;;1407:19;:94::i;:::-;1001:507;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:64;3143:56;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IGatewayRouter\",\"name\":\"gatewayRouter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/arbitrum/ArbitrumRootGauge.sol\":\"ArbitrumRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol\":{\"keccak256\":\"0xc534a9120b1e85fdc2e40ae24a5264d4bb6fdbd458fe287fd8fe25a852bebe6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ba7317f70be2cdf2cdf81b1c2178a8297497e7bff697d9a001f7bdb01363d2b\",\"dweb:/ipfs/QmWBysYby5rywAfN6JQ9Dd6gdJf9jwLsQUyBPybnVvXe5z\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/arbitrum/ArbitrumRootGauge.sol\":{\"keccak256\":\"0x374c214f8fd093fabbd208de098bfc6ef6d7dafc3567bd455f19f9706073f72f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://eaa2ced6e8884d9e7a7c3eeffee53e98b42aa4467c10ed0391cd0576e4081754\",\"dweb:/ipfs/QmcUBCnzfJSwzmCigh6t2bCkvFCow9JLC7yFKBTZYKGG2v\"]},\"contracts/gauges/arbitrum/IGatewayRouter.sol\":{\"keccak256\":\"0x18111553a1164746a16d3143d5b8bf2e15f825eefcbe0a987539cebde460a0f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8b5dc6100de63234a9543ff772cfeaa26d004b3838f2173e233ecf4ead0df976\",\"dweb:/ipfs/QmZwLoAmyzXmRF5RoJyb3AHvyTWEuaJNX8oLTXF6k7jD5W\"]}},\"version\":1}"}},"contracts/gauges/arbitrum/ArbitrumRootGaugeFactory.sol":{"ArbitrumRootGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IGatewayRouter","name":"gatewayRouter","type":"address"},{"internalType":"uint64","name":"gasLimit","type":"uint64"},{"internalType":"uint64","name":"gasPrice","type":"uint64"},{"internalType":"uint64","name":"maxSubmissionCost","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"gasLimit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"}],"name":"ArbitrumFeesModified","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getArbitrumFees","outputs":[{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"gasLimit","type":"uint64"},{"internalType":"uint64","name":"gasPrice","type":"uint64"},{"internalType":"uint64","name":"maxSubmissionCost","type":"uint64"}],"name":"setArbitrumFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b50604051620027a5380380620027a583398101604081905261003191610135565b85306001600160a01b031660001b868660405161004d9061010a565b6100589291906101b3565b604051809103906000f080158015610074573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905560805260601b6001600160601b03191660a052600280546001600160401b0319166001600160401b0394851617600160401b600160801b031916680100000000000000009385169390930292909217600160801b600160c01b031916600160801b9190931602919091179055506101e5915050565b611bcd8062000bd883390190565b80516001600160401b038116811461012f57600080fd5b92915050565b60008060008060008060c0878903121561014d578182fd5b8651610158816101cd565b6020880151909650610169816101cd565b604088015190955061017a816101cd565b93506101898860608901610118565b92506101988860808901610118565b91506101a78860a08901610118565b90509295509295509295565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03811681146101e257600080fd5b50565b60805160a05160601c6109cc6200020c600039806102495250806101f852506109cc6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063aaabadc51161005b578063aaabadc5146100e6578063ac8288c0146100ee578063ce3cc8bd14610105578063e9bde6041461012557610088565b80630ecaea731461008d57806339312dee146100b6578063851c1bb3146100be5780638d928af8146100de575b600080fd5b6100a061009b366004610760565b61013a565b6040516100ad919061087c565b60405180910390f35b6100a06101d8565b6100d16100cc3660046107ab565b6101f4565b6040516100ad91906108ce565b6100a0610247565b6100a061026b565b6100f66102f7565b6040516100ad9392919061093a565b610118610113366004610744565b610330565b6040516100ad91906108c3565b610138610133366004610807565b61035b565b005b600080610145610449565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc6879061019c908790879060040161089d565b600060405180830381600087803b1580156101b657600080fd5b505af11580156101ca573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f00000000000000000000000000000000000000000000000000000000000000008260405160200161022992919061084c565b6040516020818303038152906040528051906020012090505b919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610275610247565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ba57600080fd5b505afa1580156102ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f291906107eb565b905090565b60025467ffffffffffffffff80821692680100000000000000008304821692700100000000000000000000000000000000900490911690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6103636104ef565b600280547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff858116919091177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff166801000000000000000085831602177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000918416919091021790556040517f3db8f737ebeecf95c5dc9b279051cab0e7b70a8e3d63148b38faafcf7d42314e9061043c90859085908590610950565b60405180910390a1505050565b60008054819061046e9073ffffffffffffffffffffffffffffffffffffffff16610538565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b600061051e6000357fffffffff00000000000000000000000000000000000000000000000000000000166101f4565b905061053561052d82336105ee565b61019161068b565b50565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610242576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e590610903565b60405180910390fd5b60006105f861026b565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610634939291906108d7565b60206040518083038186803b15801561064c57600080fd5b505afa158015610660573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610684919061078b565b9392505050565b81610699576106998161069d565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610535917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803567ffffffffffffffff811681146101d257600080fd5b600060208284031215610755578081fd5b813561068481610974565b60008060408385031215610772578081fd5b823561077d81610974565b946020939093013593505050565b60006020828403121561079c578081fd5b81518015158114610684578182fd5b6000602082840312156107bc578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610684578182fd5b6000602082840312156107fc578081fd5b815161068481610974565b60008060006060848603121561081b578081fd5b610825858561072c565b9250610834856020860161072c565b9150610843856040860161072c565b90509250925092565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b9283526020830191909152604082015260600190565b67ffffffffffffffff93841681529183166020830152909116604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff8116811461053557600080fdfea2646970667358221220b64cb1ec8ee43367b18e9dce1b64119a3efee5df73f83f33dd5ddd6c3580246864736f6c634300070100336101e06040523480156200001257600080fd5b5060405162001bcd38038062001bcd833981810160405260408110156200003857600080fd5b508051602091820151600160009081556040805163e6dec36f60e01b815290519394929385936001600160a01b0385169263e6dec36f9260048083019392829003018186803b1580156200008b57600080fd5b505afa158015620000a0573d6000803e3d6000fd5b505050506040513d6020811015620000b757600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010057600080fd5b505afa15801562000115573d6000803e3d6000fd5b505050506040513d60208110156200012c57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017557600080fd5b505afa1580156200018a573d6000803e3d6000fd5b505050506040513d6020811015620001a157600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021257600080fd5b505afa15801562000227573d6000803e3d6000fd5b505050506040513d60208110156200023e57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d6020811015620002be57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030557600080fd5b505afa1580156200031a573d6000803e3d6000fd5b505050506040513d60208110156200033157600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200037857600080fd5b505afa1580156200038d573d6000803e3d6000fd5b505050506040513d6020811015620003a457600080fd5b505161016052505060001960025550506040805163c003969960e01b815290516001600160a01b038084169263bda009fe929186169163c003969991600480820192602092909190829003018186803b1580156200040157600080fd5b505afa15801562000416573d6000803e3d6000fd5b505050506040513d60208110156200042d57600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b039092166004830152516024808301926020929190829003018186803b1580156200047557600080fd5b505afa1580156200048a573d6000803e3d6000fd5b505050506040513d6020811015620004a157600080fd5b50516001600160601b0319606091821b81166101805291811b9091166101a05233901b6101c0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c6101c05160601c61164862000585600039806106005280610d1d525080610e40525080610cf15250806108d25250806108b1525080610834528061091e525080610383528061053f52806106d95280610b0d52508061042252806107c2525080610a145250806110765280611173525080610ccf5280610e7d52506116486000f3fe6080604052600436106100d25760003560e01c80639c868ac01161007f578063b024522511610059578063b024522514610265578063c2c4c5c11461027a578063cd6dc68714610282578063d34fb267146102c8576100d2565b80639c868ac0146102265780639f8676711461023b578063ab8f094514610250576100d2565b80631b88094d116100b05780631b88094d1461017f5780634b820093146101bd57806383f5c39b14610211576100d2565b806309400707146100d757806310d3eb041461012957806314e956f514610155575b600080fd5b3480156100e357600080fd5b50610117600480360360208110156100fa57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102dd565b60408051918252519081900360200190f35b34801561013557600080fd5b506101536004803603602081101561014c57600080fd5b503561036b565b005b34801561016157600080fd5b506101176004803603602081101561017857600080fd5b503561041b565b34801561018b57600080fd5b506101946104e9565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c957600080fd5b506101fd600480360360208110156101e057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610506565b604080519115158252519081900360200190f35b34801561021d57600080fd5b5061011761050c565b34801561023257600080fd5b506101fd610512565b34801561024757600080fd5b5061011761051b565b34801561025c57600080fd5b50610153610527565b34801561027157600080fd5b506101176105f8565b6101fd6106b7565b34801561028e57600080fd5b50610153600480360360408110156102a557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610aa4565b3480156102d457600080fd5b50610153610af5565b600073ffffffffffffffffffffffffffffffffffffffff8216301461036357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461040f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61041881610bc3565b50565b60006104e37f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104af57600080fd5b505afa1580156104c3573d6000803e3d6000fd5b505050506040513d60208110156104d957600080fd5b5051600654610c5f565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105cb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ac8288c06040518163ffffffff1660e01b815260040160606040518083038186803b15801561066457600080fd5b505afa158015610678573d6000803e3d6000fd5b505050506040513d606081101561068e57600080fd5b508051602082015160409092015190945090925090506106af838383610c6b565b935050505090565b60006106c1610c71565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461076557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610772610c8a565b905080821015610a9657604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff018110156109a9578481111561086e576109a9565b62093a8081026000806108808361041b565b905082851015801561089657508262093a800185105b1561094f57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008902816108fa57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506109649050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610856565b506002849055600480548301905581158015906109c9575060055460ff16155b15610a9257604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610a5c57600080fd5b505af1158015610a70573d6000803e3d6000fd5b505050506040513d6020811015610a8657600080fd5b50610a92905082610cb5565b5050505b600192505050610503610ffc565b610aad81611003565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610c24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806115bb6034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b91020190565b610c8360026000541415610190611215565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610d1673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611223565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ac8288c06040518163ffffffff1660e01b815260040160606040518083038186803b158015610d8157600080fd5b505afa158015610d95573d6000803e3d6000fd5b505050506040513d6060811015610dab57600080fd5b508051602082015160409092015190945090925090506000610dce848484610c6b565b9050803414610e3e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2ce7d65827f0000000000000000000000000000000000000000000000000000000000000000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16898989896040516020018082815260200180602001828103825260008152602001602001925050506040516020818303038152906040526040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610f8c578181015183820152602001610f74565b50505050905090810190601f168015610fb95780820380516001836020036101000a031916815260200191505b509750505050505050506000604051808303818588803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b50505050505050505050565b6001600055565b6002541561107257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110da57600080fd5b505afa1580156110ee573d6000803e3d6000fd5b505050506040513d602081101561110457600080fd5b505190508061115e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806115ef6024913960400191505060405180910390fd5b600181905561116b610c8a565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111d957600080fd5b505af11580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b505160035561121182610bc3565b5050565b8161121157611211816113f9565b80158015906112d25750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156112a357600080fd5b505afa1580156112b7573d6000803e3d6000fd5b505050506040513d60208110156112cd57600080fd5b505115155b15611367576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611367908490611423565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526113f4908490611423565b505050565b610418817f42414c000000000000000000000000000000000000000000000000000000000061153f565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061148c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161144f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114ee576040519150601f19603f3d011682016040523d82523d6000602084013e6114f3565b606091505b5091509150600082141561150b573d6000803e3d6000fd5b611539815160001480611531575081806020019051602081101561152e57600080fd5b50515b6101a2611215565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212202ddd39149091ef9b57cc92e0e32b27e04fa7e9dc950cd794d3bf20fd109df6f964736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x27A5 CODESIZE SUB DUP1 PUSH3 0x27A5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x31 SWAP2 PUSH2 0x135 JUMP JUMPDEST DUP6 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SHL DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x4D SWAP1 PUSH2 0x10A JUMP JUMPDEST PUSH2 0x58 SWAP3 SWAP2 SWAP1 PUSH2 0x1B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x80 MSTORE PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP5 DUP6 AND OR PUSH1 0x1 PUSH1 0x40 SHL PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH9 0x10000000000000000 SWAP4 DUP6 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH1 0x1 PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 SWAP1 SWAP4 AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x1E5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1BCD DUP1 PUSH3 0xBD8 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x14D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP7 MLOAD PUSH2 0x158 DUP2 PUSH2 0x1CD JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD SWAP1 SWAP7 POP PUSH2 0x169 DUP2 PUSH2 0x1CD JUMP JUMPDEST PUSH1 0x40 DUP9 ADD MLOAD SWAP1 SWAP6 POP PUSH2 0x17A DUP2 PUSH2 0x1CD JUMP JUMPDEST SWAP4 POP PUSH2 0x189 DUP9 PUSH1 0x60 DUP10 ADD PUSH2 0x118 JUMP JUMPDEST SWAP3 POP PUSH2 0x198 DUP9 PUSH1 0x80 DUP10 ADD PUSH2 0x118 JUMP JUMPDEST SWAP2 POP PUSH2 0x1A7 DUP9 PUSH1 0xA0 DUP10 ADD PUSH2 0x118 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x9CC PUSH3 0x20C PUSH1 0x0 CODECOPY DUP1 PUSH2 0x249 MSTORE POP DUP1 PUSH2 0x1F8 MSTORE POP PUSH2 0x9CC PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0xAC8288C0 EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0xE9BDE604 EQ PUSH2 0x125 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xDE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x760 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x87C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH2 0x1D8 JUMP JUMPDEST PUSH2 0xD1 PUSH2 0xCC CALLDATASIZE PUSH1 0x4 PUSH2 0x7AB JUMP JUMPDEST PUSH2 0x1F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8CE JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x247 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x26B JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x2F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x93A JUMP JUMPDEST PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x744 JUMP JUMPDEST PUSH2 0x330 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8C3 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x807 JUMP JUMPDEST PUSH2 0x35B JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x145 PUSH2 0x449 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0x19C SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x89D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x229 SWAP3 SWAP2 SWAP1 PUSH2 0x84C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x275 PUSH2 0x247 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F2 SWAP2 SWAP1 PUSH2 0x7EB JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH9 0x10000000000000000 DUP4 DIV DUP3 AND SWAP3 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x363 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP6 DUP4 AND MUL OR PUSH32 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 SWAP2 DUP5 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x3DB8F737EBEECF95C5DC9B279051CAB0E7B70A8E3D63148B38FAAFCF7D42314E SWAP1 PUSH2 0x43C SWAP1 DUP6 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x950 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x46E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x538 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51E PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1F4 JUMP JUMPDEST SWAP1 POP PUSH2 0x535 PUSH2 0x52D DUP3 CALLER PUSH2 0x5EE JUMP JUMPDEST PUSH2 0x191 PUSH2 0x68B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x242 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP1 PUSH2 0x903 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5F8 PUSH2 0x26B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x634 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x660 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x684 SWAP2 SWAP1 PUSH2 0x78B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x699 JUMPI PUSH2 0x699 DUP2 PUSH2 0x69D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x535 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x755 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x684 DUP2 PUSH2 0x974 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x772 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x77D DUP2 PUSH2 0x974 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x79C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x684 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7BC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x684 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7FC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x684 DUP2 PUSH2 0x974 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x81B JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x825 DUP6 DUP6 PUSH2 0x72C JUMP JUMPDEST SWAP3 POP PUSH2 0x834 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x72C JUMP JUMPDEST SWAP2 POP PUSH2 0x843 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x72C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 0x4C 0xB1 0xEC DUP15 0xE4 CALLER PUSH8 0xB18E9DCE1B64119A RETURNDATACOPY INVALID 0xE5 0xDF PUSH20 0xF83F33DD5DDD6C3580246864736F6C6343000701 STOP CALLER PUSH2 0x1E0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1BCD CODESIZE SUB DUP1 PUSH3 0x1BCD DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 DUP6 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x18A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x227 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x31A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x38D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 PUSH4 0xBDA009FE SWAP3 SWAP2 DUP7 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x416 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x48A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x4A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP2 DUP2 SHL SWAP1 SWAP2 AND PUSH2 0x1A0 MSTORE CALLER SWAP1 SHL PUSH2 0x1C0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1C0 MLOAD PUSH1 0x60 SHR PUSH2 0x1648 PUSH3 0x585 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x600 MSTORE DUP1 PUSH2 0xD1D MSTORE POP DUP1 PUSH2 0xE40 MSTORE POP DUP1 PUSH2 0xCF1 MSTORE POP DUP1 PUSH2 0x8D2 MSTORE POP DUP1 PUSH2 0x8B1 MSTORE POP DUP1 PUSH2 0x834 MSTORE DUP1 PUSH2 0x91E MSTORE POP DUP1 PUSH2 0x383 MSTORE DUP1 PUSH2 0x53F MSTORE DUP1 PUSH2 0x6D9 MSTORE DUP1 PUSH2 0xB0D MSTORE POP DUP1 PUSH2 0x422 MSTORE DUP1 PUSH2 0x7C2 MSTORE POP DUP1 PUSH2 0xA14 MSTORE POP DUP1 PUSH2 0x1076 MSTORE DUP1 PUSH2 0x1173 MSTORE POP DUP1 PUSH2 0xCCF MSTORE DUP1 PUSH2 0xE7D MSTORE POP PUSH2 0x1648 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C868AC0 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x282 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2C8 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x250 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x211 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x155 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x36B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x41B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x4E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x506 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x50C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x512 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x51B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH2 0x527 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x6B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH2 0xAF5 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x363 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x40F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 DUP2 PUSH2 0xBC3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC5F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5CB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAC8288C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x678 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x6AF DUP4 DUP4 DUP4 PUSH2 0xC6B JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C1 PUSH2 0xC71 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x765 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x772 PUSH2 0xC8A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x809 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x9A9 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x86E JUMPI PUSH2 0x9A9 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x880 DUP4 PUSH2 0x41B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x896 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x94F JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x8FA JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x964 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x856 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x9C9 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA70 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA92 SWAP1 POP DUP3 PUSH2 0xCB5 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x503 PUSH2 0xFFC JUMP JUMPDEST PUSH2 0xAAD DUP2 PUSH2 0x1003 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB99 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xC24 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15BB PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0xC83 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xD16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1223 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAC8288C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0xDCE DUP5 DUP5 DUP5 PUSH2 0xC6B JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xE3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2CE7D65 DUP3 PUSH32 0x0 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF8C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF74 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFB9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFF0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x1072 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x115E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15EF PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x116B PUSH2 0xC8A JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x1211 DUP3 PUSH2 0xBC3 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x1211 JUMPI PUSH2 0x1211 DUP2 PUSH2 0x13F9 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x12D2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1367 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1367 SWAP1 DUP5 SWAP1 PUSH2 0x1423 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13F4 SWAP1 DUP5 SWAP1 PUSH2 0x1423 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x418 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x153F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x148C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x144F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x14EE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x14F3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x150B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1539 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1531 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x152E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1215 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212202DDD39149091EF9B57CC92E0E32B27E0 0x4F 0xA7 0xE9 0xDC SWAP6 0xC 0xD7 SWAP5 0xD3 0xBF KECCAK256 REVERT LT SWAP14 0xF6 0xF9 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"973:2283:92:-:0;;;1276:419;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1573:5;1054:4:51;-1:-1:-1;;;;;1038:22:51;1030:31;;1524:6:92;1532:13;1502:44;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;2049:46:46;;1073:14:51::1;::::0;-1:-1:-1;;;;;;1073:14:51;::::1;::::0;1590:9:92::2;:20:::0;;-1:-1:-1;;;;;;1590:20:92::2;-1:-1:-1::0;;;;;1590:20:92;;::::2;;-1:-1:-1::0;;;;;;;;1620:20:92::2;::::0;;;::::2;::::0;;;::::2;::::0;;;::::2;-1:-1:-1::0;;;;;;;;1650:38:92::2;-1:-1:-1::0;;;1650:38:92;;;::::2;;::::0;;;::::2;::::0;;-1:-1:-1;973:2283:92;;-1:-1:-1;;973:2283:92;;;;;;;;;:::o;566:132:-1:-;643:13;;-1:-1;;;;;3262:30;;4520:34;;4510:2;;4568:1;;4558:12;4510:2;628:70;;;;:::o;705:1078::-;;;;;;;971:3;959:9;950:7;946:23;942:33;939:2;;;-1:-1;;978:12;939:2;494:6;488:13;506:48;548:5;506:48;:::i;:::-;1156:2;1236:22;;302:13;1030:89;;-1:-1;320:63;302:13;320:63;:::i;:::-;1305:2;1379:22;;107:13;1164:104;;-1:-1;125:57;107:13;125:57;:::i;:::-;1313:98;-1:-1;1466:63;1521:7;1448:2;1497:22;;1466:63;:::i;:::-;1456:73;;1585:63;1640:7;1566:3;1620:9;1616:22;1585:63;:::i;:::-;1575:73;;1704:63;1759:7;1685:3;1739:9;1735:22;1704:63;:::i;:::-;1694:73;;933:850;;;;;;;;:::o;2164:441::-;-1:-1;;;;;3135:54;;;1885:74;;3135:54;;2591:2;2576:18;;1885:74;2373:2;2358:18;;2344:261::o;3952:165::-;-1:-1;;;;;3135:54;;4035:59;;4025:2;;4108:1;;4098:12;4025:2;4019:98;:::o;:::-;973:2283:92;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":504}],"3611":[{"length":32,"start":585}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c8063aaabadc51161005b578063aaabadc5146100e6578063ac8288c0146100ee578063ce3cc8bd14610105578063e9bde6041461012557610088565b80630ecaea731461008d57806339312dee146100b6578063851c1bb3146100be5780638d928af8146100de575b600080fd5b6100a061009b366004610760565b61013a565b6040516100ad919061087c565b60405180910390f35b6100a06101d8565b6100d16100cc3660046107ab565b6101f4565b6040516100ad91906108ce565b6100a0610247565b6100a061026b565b6100f66102f7565b6040516100ad9392919061093a565b610118610113366004610744565b610330565b6040516100ad91906108c3565b610138610133366004610807565b61035b565b005b600080610145610449565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc6879061019c908790879060040161089d565b600060405180830381600087803b1580156101b657600080fd5b505af11580156101ca573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f00000000000000000000000000000000000000000000000000000000000000008260405160200161022992919061084c565b6040516020818303038152906040528051906020012090505b919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610275610247565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ba57600080fd5b505afa1580156102ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f291906107eb565b905090565b60025467ffffffffffffffff80821692680100000000000000008304821692700100000000000000000000000000000000900490911690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6103636104ef565b600280547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff858116919091177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff166801000000000000000085831602177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000918416919091021790556040517f3db8f737ebeecf95c5dc9b279051cab0e7b70a8e3d63148b38faafcf7d42314e9061043c90859085908590610950565b60405180910390a1505050565b60008054819061046e9073ffffffffffffffffffffffffffffffffffffffff16610538565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b600061051e6000357fffffffff00000000000000000000000000000000000000000000000000000000166101f4565b905061053561052d82336105ee565b61019161068b565b50565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610242576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e590610903565b60405180910390fd5b60006105f861026b565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610634939291906108d7565b60206040518083038186803b15801561064c57600080fd5b505afa158015610660573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610684919061078b565b9392505050565b81610699576106998161069d565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610535917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803567ffffffffffffffff811681146101d257600080fd5b600060208284031215610755578081fd5b813561068481610974565b60008060408385031215610772578081fd5b823561077d81610974565b946020939093013593505050565b60006020828403121561079c578081fd5b81518015158114610684578182fd5b6000602082840312156107bc578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610684578182fd5b6000602082840312156107fc578081fd5b815161068481610974565b60008060006060848603121561081b578081fd5b610825858561072c565b9250610834856020860161072c565b9150610843856040860161072c565b90509250925092565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b9283526020830191909152604082015260600190565b67ffffffffffffffff93841681529183166020830152909116604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff8116811461053557600080fdfea2646970667358221220b64cb1ec8ee43367b18e9dce1b64119a3efee5df73f83f33dd5ddd6c3580246864736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0xAC8288C0 EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0xE9BDE604 EQ PUSH2 0x125 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xDE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x760 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x87C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH2 0x1D8 JUMP JUMPDEST PUSH2 0xD1 PUSH2 0xCC CALLDATASIZE PUSH1 0x4 PUSH2 0x7AB JUMP JUMPDEST PUSH2 0x1F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8CE JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x247 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x26B JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x2F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x93A JUMP JUMPDEST PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x744 JUMP JUMPDEST PUSH2 0x330 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8C3 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x807 JUMP JUMPDEST PUSH2 0x35B JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x145 PUSH2 0x449 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0x19C SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x89D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x229 SWAP3 SWAP2 SWAP1 PUSH2 0x84C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x275 PUSH2 0x247 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F2 SWAP2 SWAP1 PUSH2 0x7EB JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH9 0x10000000000000000 DUP4 DIV DUP3 AND SWAP3 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x363 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP6 DUP4 AND MUL OR PUSH32 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 SWAP2 DUP5 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x3DB8F737EBEECF95C5DC9B279051CAB0E7B70A8E3D63148B38FAAFCF7D42314E SWAP1 PUSH2 0x43C SWAP1 DUP6 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x950 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x46E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x538 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51E PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1F4 JUMP JUMPDEST SWAP1 POP PUSH2 0x535 PUSH2 0x52D DUP3 CALLER PUSH2 0x5EE JUMP JUMPDEST PUSH2 0x191 PUSH2 0x68B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x242 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP1 PUSH2 0x903 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5F8 PUSH2 0x26B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x634 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x660 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x684 SWAP2 SWAP1 PUSH2 0x78B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x699 JUMPI PUSH2 0x699 DUP2 PUSH2 0x69D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x535 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x755 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x684 DUP2 PUSH2 0x974 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x772 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x77D DUP2 PUSH2 0x974 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x79C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x684 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7BC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x684 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7FC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x684 DUP2 PUSH2 0x974 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x81B JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x825 DUP6 DUP6 PUSH2 0x72C JUMP JUMPDEST SWAP3 POP PUSH2 0x834 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x72C JUMP JUMPDEST SWAP2 POP PUSH2 0x843 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x72C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 0x4C 0xB1 0xEC DUP15 0xE4 CALLER PUSH8 0xB18E9DCE1B64119A RETURNDATACOPY INVALID 0xE5 0xDF PUSH20 0xF83F33DD5DDD6C3580246864736F6C6343000701 STOP CALLER ","sourceMap":"973:2283:92:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2591:228;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;2607:430:46:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1158:79:51:-;;;:::i;1297:109::-;;;:::i;1795:319:92:-;;;:::i;:::-;;;;;;;;;:::i;1507:131:83:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2919:335:92:-;;;;;;:::i;:::-;;:::i;:::-;;2591:228;2671:7;2690:13;2706:9;:7;:9::i;:::-;2725:65;;;;;2690:25;;-1:-1:-1;2725:35:92;;;;;;:65;;2761:9;;2772:17;;2725:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2807:5:92;;-1:-1:-1;;;;2591:228:92;;;;;:::o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;1297:109::-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;1795:319:92:-;2020:9;;;;;;;2050;;;;;;2089:18;;;;;;;1795:319::o;1507:131:83:-;1605:26;;1582:4;1605:26;;;:19;:26;;;;;;;;;1507:131::o;2919:335:92:-;2276:21:46;:19;:21::i;:::-;3075:9:92::1;:20:::0;;;::::1;;::::0;;::::1;::::0;;;::::1;3105::::0;::::1;::::0;;;::::1;;;3135:38:::0;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;3188:59:::1;::::0;::::1;::::0;::::1;::::0;3075:20;;3105;;3135:38;;3188:59:::1;:::i;:::-;;;;;;;;2919:335:::0;;;:::o;1854:214:83:-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;:::-;2420:181;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;1412:178:51;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1516:67;1412:178;-1:-1:-1;;;1412:178:51:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;730:128:-1;796:20;;9077:18;9066:30;;10683:34;;10673:2;;10731:1;;10721:12;865:241;;969:2;957:9;948:7;944:23;940:32;937:2;;;-1:-1;;975:12;937:2;85:6;72:20;97:33;124:5;97:33;:::i;1113:366::-;;;1234:2;1222:9;1213:7;1209:23;1205:32;1202:2;;;-1:-1;;1240:12;1202:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1292:63;1392:2;1431:22;;;;660:20;;-1:-1;;;1196:283::o;1486:257::-;;1598:2;1586:9;1577:7;1573:23;1569:32;1566:2;;;-1:-1;;1604:12;1566:2;223:6;217:13;10178:5;8424:13;8417:21;10156:5;10153:32;10143:2;;-1:-1;;10189:12;1750:239;;1853:2;1841:9;1832:7;1828:23;1824:32;1821:2;;;-1:-1;;1859:12;1821:2;356:6;343:20;8601:66;10300:5;8590:78;10276:5;10273:34;10263:2;;-1:-1;;10311:12;1996:303;;2131:2;2119:9;2110:7;2106:23;2102:32;2099:2;;;-1:-1;;2137:12;2099:2;516:6;510:13;528:53;575:5;528:53;:::i;2306:485::-;;;;2441:2;2429:9;2420:7;2416:23;2412:32;2409:2;;;-1:-1;;2447:12;2409:2;2509:52;2553:7;2529:22;2509:52;:::i;:::-;2499:62;;2616:52;2660:7;2598:2;2640:9;2636:22;2616:52;:::i;:::-;2606:62;;2723:52;2767:7;2705:2;2747:9;2743:22;2723:52;:::i;:::-;2713:62;;2403:388;;;;;:::o;4381:387::-;3100:37;;;8601:66;8590:78;4632:2;4623:12;;3395:56;4732:11;;;4523:245::o;4775:222::-;8871:42;8860:54;;;;2869:37;;4902:2;4887:18;;4873:124::o;5004:333::-;8871:42;8860:54;;;;2869:37;;5323:2;5308:18;;3100:37;5159:2;5144:18;;5130:207::o;5344:210::-;8424:13;;8417:21;2983:34;;5465:2;5450:18;;5436:118::o;5561:222::-;3100:37;;;5688:2;5673:18;;5659:124::o;5790:444::-;3100:37;;;8871:42;8860:54;;;6137:2;6122:18;;2869:37;8860:54;6220:2;6205:18;;2869:37;5973:2;5958:18;;5944:290::o;6769:416::-;6969:2;6983:47;;;4024:2;6954:18;;;8192:19;4060:24;8232:14;;;4040:45;4104:12;;;6940:245::o;7192:444::-;3100:37;;;7539:2;7524:18;;3100:37;;;;7622:2;7607:18;;3100:37;7375:2;7360:18;;7346:290::o;7643:438::-;9077:18;9066:30;;;4320:49;;9066:30;;;7985:2;7970:18;;4320:49;9066:30;;;8067:2;8052:18;;4320:49;7823:2;7808:18;;7794:287::o;9973:117::-;8871:42;10060:5;8860:54;10035:5;10032:35;10022:2;;10081:1;;10071:12"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getActionId(bytes4)":"851c1bb3","getArbitrumFees()":"ac8288c0","getAuthorizer()":"aaabadc5","getGaugeImplementation()":"39312dee","getVault()":"8d928af8","isGaugeFromFactory(address)":"ce3cc8bd","setArbitrumFees(uint64,uint64,uint64)":"e9bde604"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IGatewayRouter\",\"name\":\"gatewayRouter\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasPrice\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxSubmissionCost\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"}],\"name\":\"ArbitrumFeesModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getArbitrumFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasPrice\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxSubmissionCost\",\"type\":\"uint64\"}],\"name\":\"setArbitrumFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Arbitrum.\"},\"getArbitrumFees()\":{\"notice\":\"Set the fees for the Arbitrum side of the bridging transaction\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"},\"setArbitrumFees(uint64,uint64,uint64)\":{\"notice\":\"Set the fees for the Arbitrum side of the bridging transaction\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/arbitrum/ArbitrumRootGaugeFactory.sol\":\"ArbitrumRootGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol\":{\"keccak256\":\"0xc534a9120b1e85fdc2e40ae24a5264d4bb6fdbd458fe287fd8fe25a852bebe6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ba7317f70be2cdf2cdf81b1c2178a8297497e7bff697d9a001f7bdb01363d2b\",\"dweb:/ipfs/QmWBysYby5rywAfN6JQ9Dd6gdJf9jwLsQUyBPybnVvXe5z\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/arbitrum/ArbitrumRootGauge.sol\":{\"keccak256\":\"0x374c214f8fd093fabbd208de098bfc6ef6d7dafc3567bd455f19f9706073f72f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://eaa2ced6e8884d9e7a7c3eeffee53e98b42aa4467c10ed0391cd0576e4081754\",\"dweb:/ipfs/QmcUBCnzfJSwzmCigh6t2bCkvFCow9JLC7yFKBTZYKGG2v\"]},\"contracts/gauges/arbitrum/ArbitrumRootGaugeFactory.sol\":{\"keccak256\":\"0xc85d8c6eb1632020c153421bc34439f58f64b508e36f748bc1516292a7a85e3e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ef522ebcb936c43ccafc4fb348f657157e7ba9aa365299f355e527fae6bac899\",\"dweb:/ipfs/QmWbgqKXZ1PLfpfznEwk4EoMF8Nvp5ibynGEHu2Qpi6ZsQ\"]},\"contracts/gauges/arbitrum/IGatewayRouter.sol\":{\"keccak256\":\"0x18111553a1164746a16d3143d5b8bf2e15f825eefcbe0a987539cebde460a0f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8b5dc6100de63234a9543ff772cfeaa26d004b3838f2173e233ecf4ead0df976\",\"dweb:/ipfs/QmZwLoAmyzXmRF5RoJyb3AHvyTWEuaJNX8oLTXF6k7jD5W\"]}},\"version\":1}"}},"contracts/gauges/arbitrum/IGatewayRouter.sol":{"IGatewayRouter":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getGateway","outputs":[{"internalType":"address","name":"gateway","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"outboundTransfer","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getGateway(address)":"bda009fe","outboundTransfer(address,address,uint256,uint256,uint256,bytes)":"d2ce7d65"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getGateway\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"gateway\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"outboundTransfer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/arbitrum/IGatewayRouter.sol\":\"IGatewayRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"contracts/gauges/arbitrum/IGatewayRouter.sol\":{\"keccak256\":\"0x18111553a1164746a16d3143d5b8bf2e15f825eefcbe0a987539cebde460a0f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8b5dc6100de63234a9543ff772cfeaa26d004b3838f2173e233ecf4ead0df976\",\"dweb:/ipfs/QmZwLoAmyzXmRF5RoJyb3AHvyTWEuaJNX8oLTXF6k7jD5W\"]}},\"version\":1}"}},"contracts/gauges/avalanche/AvalancheRootGauge.sol":{"AvalancheRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract ILayerZeroBALProxy","name":"lzBALProxy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getBALProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumBridgeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101c06040523480156200001257600080fd5b506040516200216d3803806200216d8339810160408190526200003591620005a3565b8160016000819055506000816001600160a01b031663e6dec36f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200007a57600080fd5b505afa1580156200008f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b591906200057d565b90506000816001600160a01b031663c00396996040518163ffffffff1660e01b815260040160206040518083038186803b158015620000f357600080fd5b505afa15801562000108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012e91906200057d565b90506000836001600160a01b03166358de9ade6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016c57600080fd5b505afa15801562000181573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a791906200057d565b6001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021657600080fd5b505afa1580156200022b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025191906200057d565b6001600160a01b0316610100816001600160a01b031660601b81525050826001600160a01b031663b87b56166040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a857600080fd5b505afa158015620002bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e39190620005e1565b6101208181525050826001600160a01b03166321609bbf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032557600080fd5b505afa1580156200033a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003609190620005e1565b6101408181525050826001600160a01b0316637efad8e06040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a257600080fd5b505afa158015620003b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003dd9190620005e1565b61016052505060001960025550506001600160601b0319606082901b166101805260408051630857749b60e41b815290516000916001600160a01b0384169163857749b09160048082019260209290919082900301818787803b1580156200044457600080fd5b505af115801562000459573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047f9190620005fa565b836001600160a01b031663c00396996040518163ffffffff1660e01b815260040160206040518083038186803b158015620004b957600080fd5b505afa158015620004ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f491906200057d565b6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200052d57600080fd5b505afa15801562000542573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005689190620005fa565b0360ff16600a0a6101a0525062000636915050565b6000602082840312156200058f578081fd5b81516200059c816200061d565b9392505050565b60008060408385031215620005b6578081fd5b8251620005c3816200061d565b6020840151909250620005d6816200061d565b809150509250929050565b600060208284031215620005f3578081fd5b5051919050565b6000602082840312156200060c578081fd5b815160ff811681146200059c578182fd5b6001600160a01b03811681146200063357600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a051611a6d62000700600039806104685280610e7c52508061028652806109545280610bb95280610c9a5280610d695280610f3b5280610f6252508061073d52508061071c52508061069f528061078952508061032352806104bd528061057a5280610aa652508061038d5280610625525080610878525080611081528061116b52508061091d5280610f195250611a6d6000f3fe6080604052600436106100e85760003560e01c806383f5c39b1161008a578063b024522511610059578063b024522514610232578063c2c4c5c114610247578063cd6dc6871461024f578063d34fb2671461026f576100e8565b806383f5c39b146101de5780639c868ac0146101f35780639f86767114610208578063ab8f09451461021d576100e8565b806314e956f5116100c657806314e956f5146101675780631b88094d146101875780634b8200931461019c5780635e8a8389146101c9576100e8565b806305c2c78d146100ed578063094007071461011857806310d3eb0414610145575b600080fd5b3480156100f957600080fd5b50610102610284565b60405161010f91906116a3565b60405180910390f35b34801561012457600080fd5b5061013861013336600461152b565b6102a9565b60405161010f91906119e0565b34801561015157600080fd5b506101656101603660046115b5565b61030b565b005b34801561017357600080fd5b506101386101823660046115b5565b610386565b34801561019357600080fd5b50610102610444565b3480156101a857600080fd5b506101bc6101b736600461152b565b610460565b60405161010f91906117b7565b3480156101d557600080fd5b50610138610466565b3480156101ea57600080fd5b5061013861048a565b3480156101ff57600080fd5b506101bc610490565b34801561021457600080fd5b50610138610499565b34801561022957600080fd5b506101656104a5565b34801561023e57600080fd5b50610138610541565b6101bc610558565b34801561025b57600080fd5b5061016561026a36600461156a565b61091b565b34801561027b57600080fd5b50610165610a8e565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff82163014610303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611958565b60405180910390fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b61038381610b27565b50565b600061043e7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b81526004016103e6929190611791565b60206040518083038186803b1580156103fe57600080fd5b505afa158015610412573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043691906115cd565b600654610ba9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610514576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600061055361054e610bb5565b610d64565b905090565b6000610562610e30565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b60025460006105de610e49565b90508082101561090d576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e52379061065a9030906004016116a3565b600060405180830381600087803b15801561067457600080fd5b505af1158015610688573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561081657848111156106d957610816565b62093a8081026000806106eb83610386565b905082851015801561070157508262093a800185105b156107ba57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161076557fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506107cf9050565b670de0b6b3a764000062093a80828902020491505b827f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced836040516107ff91906119e0565b60405180910390a2509390930192506001016106c1565b50600284905560048054830190558115801590610836575060055460ff16155b15610909576040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636a627842906108ad9030906004016116a3565b602060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ff91906115cd565b5061090982610e74565b5050505b6001925050506102a661103c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109b857600080fd5b505afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f0919061154e565b73ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117f9565b610a4681611043565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610afd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610b69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611867565b60068190556040517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb290610b9e9083906119e0565b60405180910390a150565b80820390821102900390565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ed629c5c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1d57600080fd5b505afa158015610c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c559190611595565b15610d4f576040517f8cfd8f5c00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690638cfd8f5c90610cd290606a9085906004016119cb565b60206040518083038186803b158015610cea57600080fd5b505afa158015610cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2291906115cd565b9050600181604051602001610d3892919061166e565b6040516020818303038152906040529150506102a6565b506040805160208101909152600081526102a6565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663365260b4606a610db5610db0610444565b611219565b600080886040518663ffffffff1660e01b8152600401610dd995949392919061198f565b604080518083038186803b158015610df057600080fd5b505afa158015610e04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2891906115e5565b509392505050565b610e4260026000541415610190611232565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6000610ea0827f0000000000000000000000000000000000000000000000000000000000000000611240565b905080610ead5750610383565b6060610eb7610bb5565b90506000610ec482610d64565b9050803414610eff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611830565b610f6073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000086611257565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632cdf0b958230606a610fab610db0610444565b60408051606081018252338152600060208201528082018a905290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152611004949392918c918c9190600401611714565b6000604051808303818588803b15801561101d57600080fd5b505af1158015611031573d6000803e3d6000fd5b505050505050505050565b6001600055565b6002541561107d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611921565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e557600080fd5b505afa1580156110f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111d91906115cd565b905080611156576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906118c4565b6001819055611163610e49565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111d157600080fd5b505af11580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120991906115cd565b60035561121582610b27565b5050565b73ffffffffffffffffffffffffffffffffffffffff1690565b8161121557611215816113d3565b60008082848161124c57fe5b069093039392505050565b801580159061130857506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e906112b590309086906004016116c4565b60206040518083038186803b1580156112cd57600080fd5b505afa1580156112e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130591906115cd565b15155b156113af576113af8363095ea7b360e01b84600060405160240161132d9291906116eb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526113fd565b6113ce8363095ea7b360e01b848460405160240161132d929190611791565b505050565b610383817f42414c00000000000000000000000000000000000000000000000000000000006114b0565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114269190611652565b6000604051808303816000865af19150503d8060008114611463576040519150601f19603f3d011682016040523d82523d6000602084013e611468565b606091505b50915091506000821415611480573d6000803e3d6000fd5b6114aa8151600014806114a25750818060200190518101906114a29190611595565b6101a2611232565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006020828403121561153c578081fd5b813561154781611a15565b9392505050565b60006020828403121561155f578081fd5b815161154781611a15565b6000806040838503121561157c578081fd5b823561158781611a15565b946020939093013593505050565b6000602082840312156115a6578081fd5b81518015158114611547578182fd5b6000602082840312156115c6578081fd5b5035919050565b6000602082840312156115de578081fd5b5051919050565b600080604083850312156115f7578182fd5b505080516020909101519092909150565b600081518084526116208160208601602086016119e9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516116648184602087016119e9565b9190910192915050565b60f09290921b7fffff000000000000000000000000000000000000000000000000000000000000168252600282015260220190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808916835261ffff8816602084015286604084015285606084015284608084015260c060a08401528084511660c08401528060208501511660e08401525060408301516060610100840152611784610120840182611608565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526012908201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604082015260600190565b60208082526015908201527f496e76616c6964205772617070657220546f6b656e0000000000000000000000604082015260600190565b6020808252601a908201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604082015260600190565b60208082526034908201527f52656c61746976652077656967687420636170206578636565647320616c6c6f60408201527f776564206162736f6c757465206d6178696d756d000000000000000000000000606082015260800190565b60208082526024908201527f42616c616e636572546f6b656e41646d696e206e6f742079657420616374697660408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252601e908201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604082015260600190565b600061ffff87168252856020830152846040830152831515606083015260a060808301526119c060a0830184611608565b979650505050505050565b61ffff92831681529116602082015260400190565b90815260200190565b60005b83811015611a045781810151838201526020016119ec565b838111156114aa5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461038357600080fdfea2646970667358221220ef03472d8e7790ef76063674dedc8dd461c87c6258cb8f2af640a844c22b0c2e64736f6c63430007010033","opcodes":"PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x216D CODESIZE SUB DUP1 PUSH3 0x216D DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x5A3 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE6DEC36F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xB5 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0039699 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x108 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x12E SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x58DE9ADE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x181 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1A7 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x22B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x251 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB87B5616 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x2E3 SWAP2 SWAP1 PUSH3 0x5E1 JUMP JUMPDEST PUSH2 0x120 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x21609BBF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x33A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x360 SWAP2 SWAP1 PUSH3 0x5E1 JUMP JUMPDEST PUSH2 0x140 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7EFAD8E0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x3DD SWAP2 SWAP1 PUSH3 0x5E1 JUMP JUMPDEST PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH2 0x180 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x857749B PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x857749B0 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x459 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x47F SWAP2 SWAP1 PUSH3 0x5FA JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0039699 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x4CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x4F4 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x542 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x568 SWAP2 SWAP1 PUSH3 0x5FA JUMP JUMPDEST SUB PUSH1 0xFF AND PUSH1 0xA EXP PUSH2 0x1A0 MSTORE POP PUSH3 0x636 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x58F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x59C DUP2 PUSH3 0x61D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x5B6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x5C3 DUP2 PUSH3 0x61D JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x5D6 DUP2 PUSH3 0x61D JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5F3 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x60C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x59C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH2 0x1A6D PUSH3 0x700 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x468 MSTORE DUP1 PUSH2 0xE7C MSTORE POP DUP1 PUSH2 0x286 MSTORE DUP1 PUSH2 0x954 MSTORE DUP1 PUSH2 0xBB9 MSTORE DUP1 PUSH2 0xC9A MSTORE DUP1 PUSH2 0xD69 MSTORE DUP1 PUSH2 0xF3B MSTORE DUP1 PUSH2 0xF62 MSTORE POP DUP1 PUSH2 0x73D MSTORE POP DUP1 PUSH2 0x71C MSTORE POP DUP1 PUSH2 0x69F MSTORE DUP1 PUSH2 0x789 MSTORE POP DUP1 PUSH2 0x323 MSTORE DUP1 PUSH2 0x4BD MSTORE DUP1 PUSH2 0x57A MSTORE DUP1 PUSH2 0xAA6 MSTORE POP DUP1 PUSH2 0x38D MSTORE DUP1 PUSH2 0x625 MSTORE POP DUP1 PUSH2 0x878 MSTORE POP DUP1 PUSH2 0x1081 MSTORE DUP1 PUSH2 0x116B MSTORE POP DUP1 PUSH2 0x91D MSTORE DUP1 PUSH2 0xF19 MSTORE POP PUSH2 0x1A6D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x26F JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x21D JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0x5E8A8389 EQ PUSH2 0x1C9 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x5C2C78D EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x145 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x284 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x152B JUMP JUMPDEST PUSH2 0x2A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x160 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B5 JUMP JUMPDEST PUSH2 0x30B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B5 JUMP JUMPDEST PUSH2 0x386 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x444 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x1B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x152B JUMP JUMPDEST PUSH2 0x460 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x17B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x466 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x48A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x490 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x499 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x4A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x541 JUMP JUMPDEST PUSH2 0x1BC PUSH2 0x558 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0x156A JUMP JUMPDEST PUSH2 0x91B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0xA8E JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x303 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x37A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH2 0x383 DUP2 PUSH2 0xB27 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43E PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E6 SWAP3 SWAP2 SWAP1 PUSH2 0x1791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x412 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x436 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xBA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x514 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x553 PUSH2 0x54E PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0xD64 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x562 PUSH2 0xE30 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x5DE PUSH2 0xE49 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x90D JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x65A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x688 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x816 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x6D9 JUMPI PUSH2 0x816 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x6EB DUP4 PUSH2 0x386 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x701 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x7BA JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x765 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x7CF SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST DUP3 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED DUP4 PUSH1 0x40 MLOAD PUSH2 0x7FF SWAP2 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x6C1 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x836 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x909 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x8AD SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8FF SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST POP PUSH2 0x909 DUP3 PUSH2 0xE74 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x2A6 PUSH2 0x103C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9F0 SWAP2 SWAP1 PUSH2 0x154E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17F9 JUMP JUMPDEST PUSH2 0xA46 DUP2 PUSH2 0x1043 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xAFD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1867 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP1 PUSH2 0xB9E SWAP1 DUP4 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xED629C5C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC31 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC55 SWAP2 SWAP1 PUSH2 0x1595 JUMP JUMPDEST ISZERO PUSH2 0xD4F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8CFD8F5C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x8CFD8F5C SWAP1 PUSH2 0xCD2 SWAP1 PUSH1 0x6A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x19CB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD22 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD38 SWAP3 SWAP2 SWAP1 PUSH2 0x166E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2A6 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x365260B4 PUSH1 0x6A PUSH2 0xDB5 PUSH2 0xDB0 PUSH2 0x444 JUMP JUMPDEST PUSH2 0x1219 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDD9 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x198F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE28 SWAP2 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE42 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA0 DUP3 PUSH32 0x0 PUSH2 0x1240 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xEAD JUMPI POP PUSH2 0x383 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEB7 PUSH2 0xBB5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xEC4 DUP3 PUSH2 0xD64 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xEFF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1830 JUMP JUMPDEST PUSH2 0xF60 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP7 PUSH2 0x1257 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2CDF0B95 DUP3 ADDRESS PUSH1 0x6A PUSH2 0xFAB PUSH2 0xDB0 PUSH2 0x444 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE DUP1 DUP3 ADD DUP11 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP9 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x1004 SWAP5 SWAP4 SWAP3 SWAP2 DUP13 SWAP2 DUP13 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1031 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x107D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1921 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x111D SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1156 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x1163 PUSH2 0xE49 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1209 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST PUSH1 0x3 SSTORE PUSH2 0x1215 DUP3 PUSH2 0xB27 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x1215 JUMPI PUSH2 0x1215 DUP2 PUSH2 0x13D3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 PUSH2 0x124C JUMPI INVALID JUMPDEST MOD SWAP1 SWAP4 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1308 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x12B5 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x16C4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1305 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x13AF JUMPI PUSH2 0x13AF DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x16EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x13FD JUMP JUMPDEST PUSH2 0x13CE DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x1791 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x383 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x14B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1426 SWAP2 SWAP1 PUSH2 0x1652 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1463 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1468 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1480 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x14AA DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x14A2 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x14A2 SWAP2 SWAP1 PUSH2 0x1595 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1232 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x153C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1547 DUP2 PUSH2 0x1A15 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x155F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1547 DUP2 PUSH2 0x1A15 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x157C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1587 DUP2 PUSH2 0x1A15 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15A6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1547 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15C6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15DE JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15F7 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1620 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19E9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1664 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19E9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xF0 SWAP3 SWAP1 SWAP3 SHL PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND DUP3 MSTORE PUSH1 0x2 DUP3 ADD MSTORE PUSH1 0x22 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE PUSH2 0xFFFF DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP7 PUSH1 0x40 DUP5 ADD MSTORE DUP6 PUSH1 0x60 DUP5 ADD MSTORE DUP5 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP5 ADD MSTORE DUP1 DUP5 MLOAD AND PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0xE0 DUP5 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x1784 PUSH2 0x120 DUP5 ADD DUP3 PUSH2 0x1608 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964205772617070657220546F6B656E0000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C61746976652077656967687420636170206578636565647320616C6C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x776564206162736F6C757465206D6178696D756D000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x42616C616E636572546F6B656E41646D696E206E6F7420796574206163746976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6174656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP8 AND DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x19C0 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1608 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A04 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19EC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14AA JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF SUB SELFBALANCE 0x2D DUP15 PUSH24 0x90EF76063674DEDC8DD461C87C6258CB8F2AF640A844C22B 0xC 0x2E PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"3915:6692:94:-:0;;;5605:310;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5694:6;2070:1:63;2175:7;:22;;;;2286:30:89;2339:6;-1:-1:-1;;;;;2339:28:89;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2286:84;;2380:15;2398:10;-1:-1:-1;;;;;2398:27:89;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2380:47;;2437:32;2472:6;-1:-1:-1;;;;;2472:25:89;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2600:34;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;;;;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2644:44;;;;;;2722:32;;;;;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;;;;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2699:55;;2794:39;;;;;;;;-1:-1:-1;2794:37:89;;;;;:39;;;;;;;;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2764:69;;2863:29;;;;;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;;;;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2843:49;;-1:-1:-1;;;3053:7:89;:27;-1:-1:-1;;;5712:24:94;;;-1:-1:-1;5712:24:94;::::1;::::0;5827:27:::1;::::0;;-1:-1:-1;5827:27:94;;;;-1:-1:-1;;;5712:24:94;::::1;::::0;5827:25:::1;::::0;:27:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;5712:24:94;5827:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5786:6;-1:-1:-1::0;;;;;5786:23:94::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5772:50:94::1;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:82;5887:21;;:2;:21;5864:44;::::0;-1:-1:-1;3915:6692:94;;-1:-1:-1;;3915:6692:94;1612:313:-1;;1752:2;1740:9;1731:7;1727:23;1723:32;1720:2;;;-1:-1;;1758:12;1720:2;114:6;108:13;126:58;178:5;126:58;:::i;:::-;1810:99;1714:211;-1:-1;;;1714:211::o;3188:515::-;;;3378:2;3366:9;3357:7;3353:23;3349:32;3346:2;;;-1:-1;;3384:12;3346:2;1247:6;1241:13;1259:63;1316:5;1259:63;:::i;:::-;3577:2;3655:22;;1042:13;3436:104;;-1:-1;1060:61;1042:13;1060:61;:::i;:::-;3585:102;;;;3340:363;;;;;:::o;3710:263::-;;3825:2;3813:9;3804:7;3800:23;3796:32;3793:2;;;-1:-1;;3831:12;3793:2;-1:-1;1412:13;;3787:186;-1:-1;3787:186::o;3980:259::-;;4093:2;4081:9;4072:7;4068:23;4064:32;4061:2;;;-1:-1;;4099:12;4061:2;1557:6;1551:13;5479:4;6913:5;5468:16;6890:5;6887:33;6877:2;;-1:-1;;6924:12;5496:167;-1:-1;5263:54;;5580:60;;5570:2;;5654:1;;5644:12;5570:2;5564:99;:::o;:::-;3915:6692:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":2333},{"length":32,"start":3865}],"14642":[{"length":32,"start":4225},{"length":32,"start":4459}],"14644":[{"length":32,"start":2168}],"14646":[{"length":32,"start":909},{"length":32,"start":1573}],"14648":[{"length":32,"start":803},{"length":32,"start":1213},{"length":32,"start":1402},{"length":32,"start":2726}],"14656":[{"length":32,"start":1695},{"length":32,"start":1929}],"14658":[{"length":32,"start":1820}],"14660":[{"length":32,"start":1853}],"16755":[{"length":32,"start":646},{"length":32,"start":2388},{"length":32,"start":3001},{"length":32,"start":3226},{"length":32,"start":3433},{"length":32,"start":3899},{"length":32,"start":3938}],"16757":[{"length":32,"start":1128},{"length":32,"start":3708}]},"linkReferences":{},"object":"6080604052600436106100e85760003560e01c806383f5c39b1161008a578063b024522511610059578063b024522514610232578063c2c4c5c114610247578063cd6dc6871461024f578063d34fb2671461026f576100e8565b806383f5c39b146101de5780639c868ac0146101f35780639f86767114610208578063ab8f09451461021d576100e8565b806314e956f5116100c657806314e956f5146101675780631b88094d146101875780634b8200931461019c5780635e8a8389146101c9576100e8565b806305c2c78d146100ed578063094007071461011857806310d3eb0414610145575b600080fd5b3480156100f957600080fd5b50610102610284565b60405161010f91906116a3565b60405180910390f35b34801561012457600080fd5b5061013861013336600461152b565b6102a9565b60405161010f91906119e0565b34801561015157600080fd5b506101656101603660046115b5565b61030b565b005b34801561017357600080fd5b506101386101823660046115b5565b610386565b34801561019357600080fd5b50610102610444565b3480156101a857600080fd5b506101bc6101b736600461152b565b610460565b60405161010f91906117b7565b3480156101d557600080fd5b50610138610466565b3480156101ea57600080fd5b5061013861048a565b3480156101ff57600080fd5b506101bc610490565b34801561021457600080fd5b50610138610499565b34801561022957600080fd5b506101656104a5565b34801561023e57600080fd5b50610138610541565b6101bc610558565b34801561025b57600080fd5b5061016561026a36600461156a565b61091b565b34801561027b57600080fd5b50610165610a8e565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff82163014610303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611958565b60405180910390fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b61038381610b27565b50565b600061043e7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b81526004016103e6929190611791565b60206040518083038186803b1580156103fe57600080fd5b505afa158015610412573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043691906115cd565b600654610ba9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610514576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600061055361054e610bb5565b610d64565b905090565b6000610562610e30565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b60025460006105de610e49565b90508082101561090d576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e52379061065a9030906004016116a3565b600060405180830381600087803b15801561067457600080fd5b505af1158015610688573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561081657848111156106d957610816565b62093a8081026000806106eb83610386565b905082851015801561070157508262093a800185105b156107ba57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161076557fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506107cf9050565b670de0b6b3a764000062093a80828902020491505b827f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced836040516107ff91906119e0565b60405180910390a2509390930192506001016106c1565b50600284905560048054830190558115801590610836575060055460ff16155b15610909576040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636a627842906108ad9030906004016116a3565b602060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ff91906115cd565b5061090982610e74565b5050505b6001925050506102a661103c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109b857600080fd5b505afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f0919061154e565b73ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117f9565b610a4681611043565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610afd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610b69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611867565b60068190556040517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb290610b9e9083906119e0565b60405180910390a150565b80820390821102900390565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ed629c5c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1d57600080fd5b505afa158015610c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c559190611595565b15610d4f576040517f8cfd8f5c00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690638cfd8f5c90610cd290606a9085906004016119cb565b60206040518083038186803b158015610cea57600080fd5b505afa158015610cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2291906115cd565b9050600181604051602001610d3892919061166e565b6040516020818303038152906040529150506102a6565b506040805160208101909152600081526102a6565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663365260b4606a610db5610db0610444565b611219565b600080886040518663ffffffff1660e01b8152600401610dd995949392919061198f565b604080518083038186803b158015610df057600080fd5b505afa158015610e04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2891906115e5565b509392505050565b610e4260026000541415610190611232565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6000610ea0827f0000000000000000000000000000000000000000000000000000000000000000611240565b905080610ead5750610383565b6060610eb7610bb5565b90506000610ec482610d64565b9050803414610eff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611830565b610f6073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000086611257565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632cdf0b958230606a610fab610db0610444565b60408051606081018252338152600060208201528082018a905290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152611004949392918c918c9190600401611714565b6000604051808303818588803b15801561101d57600080fd5b505af1158015611031573d6000803e3d6000fd5b505050505050505050565b6001600055565b6002541561107d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611921565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e557600080fd5b505afa1580156110f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111d91906115cd565b905080611156576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906118c4565b6001819055611163610e49565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111d157600080fd5b505af11580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120991906115cd565b60035561121582610b27565b5050565b73ffffffffffffffffffffffffffffffffffffffff1690565b8161121557611215816113d3565b60008082848161124c57fe5b069093039392505050565b801580159061130857506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e906112b590309086906004016116c4565b60206040518083038186803b1580156112cd57600080fd5b505afa1580156112e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130591906115cd565b15155b156113af576113af8363095ea7b360e01b84600060405160240161132d9291906116eb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526113fd565b6113ce8363095ea7b360e01b848460405160240161132d929190611791565b505050565b610383817f42414c00000000000000000000000000000000000000000000000000000000006114b0565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114269190611652565b6000604051808303816000865af19150503d8060008114611463576040519150601f19603f3d011682016040523d82523d6000602084013e611468565b606091505b50915091506000821415611480573d6000803e3d6000fd5b6114aa8151600014806114a25750818060200190518101906114a29190611595565b6101a2611232565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006020828403121561153c578081fd5b813561154781611a15565b9392505050565b60006020828403121561155f578081fd5b815161154781611a15565b6000806040838503121561157c578081fd5b823561158781611a15565b946020939093013593505050565b6000602082840312156115a6578081fd5b81518015158114611547578182fd5b6000602082840312156115c6578081fd5b5035919050565b6000602082840312156115de578081fd5b5051919050565b600080604083850312156115f7578182fd5b505080516020909101519092909150565b600081518084526116208160208601602086016119e9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516116648184602087016119e9565b9190910192915050565b60f09290921b7fffff000000000000000000000000000000000000000000000000000000000000168252600282015260220190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808916835261ffff8816602084015286604084015285606084015284608084015260c060a08401528084511660c08401528060208501511660e08401525060408301516060610100840152611784610120840182611608565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526012908201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604082015260600190565b60208082526015908201527f496e76616c6964205772617070657220546f6b656e0000000000000000000000604082015260600190565b6020808252601a908201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604082015260600190565b60208082526034908201527f52656c61746976652077656967687420636170206578636565647320616c6c6f60408201527f776564206162736f6c757465206d6178696d756d000000000000000000000000606082015260800190565b60208082526024908201527f42616c616e636572546f6b656e41646d696e206e6f742079657420616374697660408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252601e908201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604082015260600190565b600061ffff87168252856020830152846040830152831515606083015260a060808301526119c060a0830184611608565b979650505050505050565b61ffff92831681529116602082015260400190565b90815260200190565b60005b83811015611a045781810151838201526020016119ec565b838111156114aa5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461038357600080fdfea2646970667358221220ef03472d8e7790ef76063674dedc8dd461c87c6258cb8f2af640a844c22b0c2e64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x26F JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x21D JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0x5E8A8389 EQ PUSH2 0x1C9 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x5C2C78D EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x145 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x284 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x152B JUMP JUMPDEST PUSH2 0x2A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x160 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B5 JUMP JUMPDEST PUSH2 0x30B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B5 JUMP JUMPDEST PUSH2 0x386 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x444 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x1B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x152B JUMP JUMPDEST PUSH2 0x460 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x17B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x466 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x48A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x490 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x499 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x4A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x541 JUMP JUMPDEST PUSH2 0x1BC PUSH2 0x558 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0x156A JUMP JUMPDEST PUSH2 0x91B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0xA8E JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x303 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x37A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH2 0x383 DUP2 PUSH2 0xB27 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43E PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E6 SWAP3 SWAP2 SWAP1 PUSH2 0x1791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x412 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x436 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xBA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x514 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x553 PUSH2 0x54E PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0xD64 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x562 PUSH2 0xE30 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x5DE PUSH2 0xE49 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x90D JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x65A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x688 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x816 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x6D9 JUMPI PUSH2 0x816 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x6EB DUP4 PUSH2 0x386 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x701 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x7BA JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x765 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x7CF SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST DUP3 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED DUP4 PUSH1 0x40 MLOAD PUSH2 0x7FF SWAP2 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x6C1 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x836 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x909 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x8AD SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8FF SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST POP PUSH2 0x909 DUP3 PUSH2 0xE74 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x2A6 PUSH2 0x103C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9F0 SWAP2 SWAP1 PUSH2 0x154E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17F9 JUMP JUMPDEST PUSH2 0xA46 DUP2 PUSH2 0x1043 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xAFD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1867 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP1 PUSH2 0xB9E SWAP1 DUP4 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xED629C5C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC31 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC55 SWAP2 SWAP1 PUSH2 0x1595 JUMP JUMPDEST ISZERO PUSH2 0xD4F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8CFD8F5C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x8CFD8F5C SWAP1 PUSH2 0xCD2 SWAP1 PUSH1 0x6A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x19CB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD22 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD38 SWAP3 SWAP2 SWAP1 PUSH2 0x166E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2A6 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x365260B4 PUSH1 0x6A PUSH2 0xDB5 PUSH2 0xDB0 PUSH2 0x444 JUMP JUMPDEST PUSH2 0x1219 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDD9 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x198F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE28 SWAP2 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE42 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA0 DUP3 PUSH32 0x0 PUSH2 0x1240 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xEAD JUMPI POP PUSH2 0x383 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEB7 PUSH2 0xBB5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xEC4 DUP3 PUSH2 0xD64 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xEFF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1830 JUMP JUMPDEST PUSH2 0xF60 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP7 PUSH2 0x1257 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2CDF0B95 DUP3 ADDRESS PUSH1 0x6A PUSH2 0xFAB PUSH2 0xDB0 PUSH2 0x444 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE DUP1 DUP3 ADD DUP11 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP9 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x1004 SWAP5 SWAP4 SWAP3 SWAP2 DUP13 SWAP2 DUP13 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1031 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x107D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1921 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x111D SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1156 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x1163 PUSH2 0xE49 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1209 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST PUSH1 0x3 SSTORE PUSH2 0x1215 DUP3 PUSH2 0xB27 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x1215 JUMPI PUSH2 0x1215 DUP2 PUSH2 0x13D3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 PUSH2 0x124C JUMPI INVALID JUMPDEST MOD SWAP1 SWAP4 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1308 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x12B5 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x16C4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1305 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x13AF JUMPI PUSH2 0x13AF DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x16EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x13FD JUMP JUMPDEST PUSH2 0x13CE DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x1791 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x383 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x14B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1426 SWAP2 SWAP1 PUSH2 0x1652 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1463 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1468 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1480 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x14AA DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x14A2 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x14A2 SWAP2 SWAP1 PUSH2 0x1595 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1232 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x153C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1547 DUP2 PUSH2 0x1A15 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x155F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1547 DUP2 PUSH2 0x1A15 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x157C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1587 DUP2 PUSH2 0x1A15 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15A6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1547 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15C6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15DE JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15F7 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1620 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19E9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1664 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19E9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xF0 SWAP3 SWAP1 SWAP3 SHL PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND DUP3 MSTORE PUSH1 0x2 DUP3 ADD MSTORE PUSH1 0x22 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE PUSH2 0xFFFF DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP7 PUSH1 0x40 DUP5 ADD MSTORE DUP6 PUSH1 0x60 DUP5 ADD MSTORE DUP5 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP5 ADD MSTORE DUP1 DUP5 MLOAD AND PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0xE0 DUP5 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x1784 PUSH2 0x120 DUP5 ADD DUP3 PUSH2 0x1608 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964205772617070657220546F6B656E0000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C61746976652077656967687420636170206578636565647320616C6C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x776564206162736F6C757465206D6178696D756D000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x42616C616E636572546F6B656E41646D696E206E6F7420796574206163746976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6174656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP8 AND DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x19C0 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1608 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A04 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19EC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14AA JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF SUB SELFBALANCE 0x2D DUP15 PUSH24 0x90EF76063674DEDC8DD461C87C6258CB8F2AF640A844C22B 0xC 0x2E PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"3915:6692:94:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6564:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6895:191:89;;;;;;;;;;-1:-1:-1;6895:191:89;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7513:214::-;;;;;;;;;;-1:-1:-1;7513:214:89;;;;;:::i;:::-;;:::i;:::-;;8159:199;;;;;;;;;;-1:-1:-1;8159:199:89;;;;;:::i;:::-;;:::i;6381:97:94:-;;;;;;;;;;;;;:::i;6789:100:89:-;;;;;;;;;;-1:-1:-1;6789:100:89;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6832:108:94:-;;;;;;;;;;;;;:::i;8038:115:89:-;;;;;;;;;;;;;:::i;7092:92::-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;6982:133:94:-;;;;;;;;;;;;;:::i;3697:2655:89:-;;;:::i;5921:418:94:-;;;;;;;;;;-1:-1:-1;5921:418:94;;;;;:::i;:::-;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;6564:99:94:-;6644:11;6564:99;;:::o;6895:191:89:-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;:::i;:::-;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;6381:97:94:-;6461:10;;;;6381:97;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;6832:108:94:-;6913:20;6832:108;:::o;8038:115:89:-;8128:18;;8038:115;:::o;7092:92::-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;:::i;:::-;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6982:133:94:-;7042:7;7068:40;7088:19;:17;:19::i;:::-;7068;:40::i;:::-;7061:47;;6982:133;:::o;3697:2655:89:-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;;;;;;;;;;:::i;:::-;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;:33:::1;:16;:33;::::0;::::1;::::0;:48:::1;::::0;4042:4:::1;::::0;4000:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5989:10;5978:38;6001:14;5978:38;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;:12:::1;:7;:12;::::0;::::1;::::0;:27:::1;::::0;6246:4:::1;::::0;6225:27:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6270:29;6286:12;6270:15;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;5921:418:94:-;6150:9;6119:41;;:11;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;;6111:75;;;;;;;;;;;;:::i;:::-;6259:40;6281:17;6259:21;:40::i;:::-;-1:-1:-1;6310:10:94;:22;;;;;;;;;;;;;;;5921:418::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;:::i;:::-;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;:::i;:::-;7929:18;:38;;;7982:43;;;;;;7950:17;;7982:43;:::i;:::-;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;9357:1248:94:-;9409:12;10326:11;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10322:277;;;10398:70;;;;;10378:17;;10398:27;:11;:27;;;;:70;;4193:3;;10378:17;;10398:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10378:90;;4760:1;10531:9;10489:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10482:59;;;;;10322:277;-1:-1:-1;10579:9:94;;;;;;;;;-1:-1:-1;10579:9:94;;10572:16;;7121:541;7201:7;7403:17;7426:11;:27;;;4193:3;7503:54;7542:14;:12;:14::i;:::-;7503:38;:54::i;:::-;7571:1;7586:5;7605:13;7426:202;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7402:226:94;7121:541;-1:-1:-1;;;7121:541:94:o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;7668:1683:94:-;7741:25;7769:66;7802:10;7814:20;7769:32;:66::i;:::-;7741:94;-1:-1:-1;7908:22:94;7904:59;;7946:7;;;7904:59;7973:26;8002:19;:17;:19::i;:::-;7973:48;;8031:23;8057:34;8077:13;8057:19;:34::i;:::-;8031:60;;8123:15;8110:9;:28;8102:67;;;;;;;;;;;;:::i;:::-;8255:55;:21;:9;:21;8285:11;8299:10;8255:21;:55::i;:::-;9009:11;:20;;;9038:15;9077:4;4193:3;9132:54;9171:14;:12;:14::i;9132:54::-;9255:79;;;;;;;;9295:10;9255:79;;-1:-1:-1;9255:79:94;;;;;;;;;;9009:335;;;;;;;;;;;;;;;9200:10;;9224:17;;9255:79;9009:335;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7668:1683;;;;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;:::i;:::-;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3413:33;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;:::i;:::-;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;1073:137:96:-;1175:27;;;1073:137::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;819:169:96:-;898:7;917:12;941:10;932:6;:19;;;;;;968:13;;;;819:169;-1:-1:-1;;;819:169:96:o;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;:15;;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:19;:90::i;:::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;1407:94::-;1001:507;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;696:241:-1;;800:2;788:9;779:7;775:23;771:32;768:2;;;-1:-1;;806:12;768:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;858:63;762:175;-1:-1;;;762:175::o;944:263::-;;1059:2;1047:9;1038:7;1034:23;1030:32;1027:2;;;-1:-1;;1065:12;1027:2;226:6;220:13;238:33;265:5;238:33;:::i;1214:366::-;;;1335:2;1323:9;1314:7;1310:23;1306:32;1303:2;;;-1:-1;;1341:12;1303:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1393:63;1493:2;1532:22;;;;485:20;;-1:-1;;;1297:283::o;1587:257::-;;1699:2;1687:9;1678:7;1674:23;1670:32;1667:2;;;-1:-1;;1705:12;1667:2;364:6;358:13;18615:5;17014:13;17007:21;18593:5;18590:32;18580:2;;-1:-1;;18626:12;1851:241;;1955:2;1943:9;1934:7;1930:23;1926:32;1923:2;;;-1:-1;;1961:12;1923:2;-1:-1;485:20;;1917:175;-1:-1;1917:175::o;2099:263::-;;2214:2;2202:9;2193:7;2189:23;2185:32;2182:2;;;-1:-1;;2220:12;2182:2;-1:-1;633:13;;2176:186;-1:-1;2176:186::o;2369:399::-;;;2501:2;2489:9;2480:7;2476:23;2472:32;2469:2;;;-1:-1;;2507:12;2469:2;-1:-1;;633:13;;2670:2;2720:22;;;633:13;;;;;-1:-1;2463:305::o;3370:323::-;;3502:5;16046:12;16192:6;16187:3;16180:19;3585:52;3630:6;16229:4;16224:3;16220:14;16229:4;3611:5;3607:16;3585:52;:::i;:::-;18289:2;18269:14;18285:7;18265:28;3649:39;;;;16229:4;3649:39;;3450:243;-1:-1;;3450:243::o;8573:271::-;;4210:5;16046:12;4321:52;4366:6;4361:3;4354:4;4347:5;4343:16;4321:52;:::i;:::-;4385:16;;;;;8707:137;-1:-1;;8707:137::o;8851:387::-;18381:3;18377:15;;;;;;8226:56;;9100:1;9091:11;;3321:37;9201:12;;;8993:245::o;9245:222::-;17283:42;17272:54;;;;2852:45;;9372:2;9357:18;;9343:124::o;9474:333::-;17283:42;17272:54;;;2852:45;;17272:54;;9793:2;9778:18;;2852:45;9629:2;9614:18;;9600:207::o;9814:345::-;17283:42;17272:54;;;;2852:45;;17488:4;17477:16;10145:2;10130:18;;4639:56;9975:2;9960:18;;9946:213::o;10166:948::-;;17283:42;;17276:5;17272:54;2859:3;2852:45;17191:6;8120:5;17180:18;10656:2;10645:9;10641:18;8091:36;3351:5;10739:2;10728:9;10724:18;3321:37;3351:5;10822:2;10811:9;10807:18;3321:37;3351:5;10905:3;10894:9;10890:19;3321:37;10493:3;10943;10932:9;10928:19;10921:49;17283:42;7477:16;7471:23;17272:54;10493:3;10482:9;10478:19;2852:45;17283:42;10656:2;7664:5;7660:16;7654:23;17272:54;7731:14;10482:9;7731:14;2852:45;;10739:2;7827:5;7823:16;7817:23;10822:2;7860:14;10482:9;7860:14;7853:38;7906:71;7387:14;10482:9;7387:14;7958:12;7906:71;:::i;:::-;10976:128;10464:650;-1:-1;;;;;;;;;10464:650::o;11121:333::-;17283:42;17272:54;;;;2852:45;;11440:2;11425:18;;3321:37;11276:2;11261:18;;11247:207::o;11461:210::-;17014:13;;17007:21;3204:34;;11582:2;11567:18;;11553:118::o;11678:416::-;11878:2;11892:47;;;4932:2;11863:18;;;16180:19;4968:20;16220:14;;;4948:41;5008:12;;;11849:245::o;12101:416::-;12301:2;12315:47;;;5259:2;12286:18;;;16180:19;5295:23;16220:14;;;5275:44;5338:12;;;12272:245::o;12524:416::-;12724:2;12738:47;;;5589:2;12709:18;;;16180:19;5625:28;16220:14;;;5605:49;5673:12;;;12695:245::o;12947:416::-;13147:2;13161:47;;;5924:2;13132:18;;;16180:19;5960:34;16220:14;;;5940:55;6029:22;6015:12;;;6008:44;6071:12;;;13118:245::o;13370:416::-;13570:2;13584:47;;;6322:2;13555:18;;;16180:19;6358:34;16220:14;;;6338:55;6427:6;6413:12;;;6406:28;6453:12;;;13541:245::o;13793:416::-;13993:2;14007:47;;;6704:2;13978:18;;;16180:19;6740:21;16220:14;;;6720:42;6781:12;;;13964:245::o;14216:416::-;14416:2;14430:47;;;7032:2;14401:18;;;16180:19;7068:32;16220:14;;;7048:53;7120:12;;;14387:245::o;14639:752::-;;17191:6;8120:5;17180:18;8098:3;8091:36;3351:5;15059:2;15048:9;15044:18;3321:37;17592:24;15150:2;15139:9;15135:18;4492:58;3231:5;17014:13;17007:21;15227:2;15216:9;15212:18;3204:34;14896:3;15264;15253:9;15249:19;15242:49;15305:76;14896:3;14885:9;14881:19;15367:6;15305:76;:::i;:::-;15297:84;14867:524;-1:-1;;;;;;;14867:524::o;15398:325::-;17191:6;17180:18;;;8091:36;;17180:18;;15709:2;15694:18;;8091:36;15549:2;15534:18;;15520:203::o;15730:222::-;3321:37;;;15857:2;15842:18;;15828:124::o;17748:268::-;17813:1;17820:101;17834:6;17831:1;17828:13;17820:101;;;17901:11;;;17895:18;17882:11;;;17875:39;17856:2;17849:10;17820:101;;;17936:6;17933:1;17930:13;17927:2;;;-1:-1;;17813:1;17983:16;;17976:27;17797:219::o;18410:117::-;17283:42;18497:5;17272:54;18472:5;18469:35;18459:2;;18518:1;;18508:12"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getBALProxy()":"05c2c78d","getCappedRelativeWeight(uint256)":"14e956f5","getMinimumBridgeAmount()":"5e8a8389","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract ILayerZeroBALProxy\",\"name\":\"lzBALProxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBALProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumBridgeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Uses LayerZero OFTv2 (Omni Fungible Token V2) proxy contracts to bridge BAL. See https://layerzero.gitbook.io/docs/evm-guides/layerzero-omnichain-contracts/oft/oftv2 for reference.\",\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"constructor\":{\"details\":\"Must be deployed by the AvalancheRootGaugeFactory, or other contract that implements `IAvalancheBridgeLimitsProvider`.\"},\"getBALProxy()\":{\"details\":\"Return the Layer Zero proxy contract for the underlying BAL token.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getMinimumBridgeAmount()\":{\"details\":\"Returns the minimum amount of tokens that can be bridged. Values lower than this one will not even be transferred to the proxy.\"},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"notice\":\"Root Gauge for the Avalanche network.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/avalanche/AvalancheRootGauge.sol\":\"AvalancheRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/avalanche/AvalancheRootGauge.sol\":{\"keccak256\":\"0x43bdf93c991ce12749932136f830478dc8981cd2123591b02b07103c7f4a73d8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0670c48669f090af80c4454a46c5e33d7a499015565cd57854fe9e2d1e9c85a9\",\"dweb:/ipfs/QmVUXzfTTKW2pUYRQ4neK6TmheDSsBazsShvKDLyMUmdiY\"]},\"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol\":{\"keccak256\":\"0xe49df779008ec324de421878d86c9ad9fc2700e47931f8de70460eaacc0e5d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dd6e05a9aeb465123a157098a73625e933ab10fa48c43afd96779289bbb9720c\",\"dweb:/ipfs/Qmd89UuKiLJcrosj2h8e4vM9vTqGdUHpkjQU5np19ZpbUG\"]}},\"version\":1}"},"ILayerZeroBALProxy":{"abi":[{"inputs":[],"name":"PT_SEND","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"bytes32","name":"_toAddress","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_useZro","type":"bool"},{"internalType":"bytes","name":"_adapterParams","type":"bytes"}],"name":"estimateSendFee","outputs":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"zroFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"chainId","type":"uint16"},{"internalType":"uint16","name":"packetType","type":"uint16"}],"name":"minDstGasLookup","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"bytes32","name":"_toAddress","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_minAmount","type":"uint256"},{"components":[{"internalType":"address payable","name":"refundAddress","type":"address"},{"internalType":"address","name":"zroPaymentAddress","type":"address"},{"internalType":"bytes","name":"adapterParams","type":"bytes"}],"internalType":"struct ILayerZeroBALProxy.LzCallParams","name":"_callParams","type":"tuple"}],"name":"sendFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"useCustomAdapterParams","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"PT_SEND()":"4c42899a","estimateSendFee(uint16,bytes32,uint256,bool,bytes)":"365260b4","minDstGasLookup(uint16,uint16)":"8cfd8f5c","sendFrom(address,uint16,bytes32,uint256,uint256,(address,address,bytes))":"2cdf0b95","sharedDecimals()":"857749b0","token()":"fc0c546a","useCustomAdapterParams()":"ed629c5c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PT_SEND\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"_toAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_useZro\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_adapterParams\",\"type\":\"bytes\"}],\"name\":\"estimateSendFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zroFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"packetType\",\"type\":\"uint16\"}],\"name\":\"minDstGasLookup\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"_toAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minAmount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address payable\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zroPaymentAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"adapterParams\",\"type\":\"bytes\"}],\"internalType\":\"struct ILayerZeroBALProxy.LzCallParams\",\"name\":\"_callParams\",\"type\":\"tuple\"}],\"name\":\"sendFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"useCustomAdapterParams\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Partial interface for LayerZero BAL proxy.\",\"kind\":\"dev\",\"methods\":{\"PT_SEND()\":{\"details\":\"Returns packet type to be used in adapter params. It is a constant set to 0.\"},\"estimateSendFee(uint16,bytes32,uint256,bool,bytes)\":{\"details\":\"Estimate fee for sending token `_tokenId` to (`_dstChainId`, `_toAddress`).\",\"params\":{\"_adapterParams\":\"flexible bytes array to indicate messaging adapter services in L0.\",\"_amount\":\"amount of the tokens to transfer.\",\"_dstChainId\":\"L0 defined chain id to send tokens to.\",\"_toAddress\":\"dynamic bytes array with the address you are sending tokens to on dstChain.\",\"_useZro\":\"indicates to use zro to pay L0 fees.\"}},\"minDstGasLookup(uint16,uint16)\":{\"details\":\"Returns minimum gas limit required for the target `chainId` and `packetType`.\"},\"sendFrom(address,uint16,bytes32,uint256,uint256,(address,address,bytes))\":{\"details\":\"Send `_amount` amount of token to (`_dstChainId`, `_toAddress`) from `_from`.\",\"params\":{\"_amount\":\"the quantity of tokens in wei.\",\"_callParams\":\"struct with custom options. - refundAddress: the address LayerZero refunds if too much message fee is sent. - zroPaymentAddress set to address(0x0) if not paying in ZRO (LayerZero Token). - adapterParams is a flexible bytes array used to configure messaging adapter services.\",\"_dstChainId\":\"the destination chain identifier.\",\"_from\":\"the token owner.\",\"_minAmount\":\"the minimum amount of tokens to receive on dstChain.\",\"_toAddress\":\"can be any size depending on the `dstChainId`.\"}},\"sharedDecimals()\":{\"details\":\"Returns the maximum allowed precision (decimals) for proxy transfers.\"},\"token()\":{\"details\":\"Returns the address of the underlying ERC20 token.\"},\"useCustomAdapterParams()\":{\"details\":\"Returns true if custom adapter parameters are activated in the proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/avalanche/AvalancheRootGauge.sol\":\"ILayerZeroBALProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/avalanche/AvalancheRootGauge.sol\":{\"keccak256\":\"0x43bdf93c991ce12749932136f830478dc8981cd2123591b02b07103c7f4a73d8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0670c48669f090af80c4454a46c5e33d7a499015565cd57854fe9e2d1e9c85a9\",\"dweb:/ipfs/QmVUXzfTTKW2pUYRQ4neK6TmheDSsBazsShvKDLyMUmdiY\"]},\"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol\":{\"keccak256\":\"0xe49df779008ec324de421878d86c9ad9fc2700e47931f8de70460eaacc0e5d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dd6e05a9aeb465123a157098a73625e933ab10fa48c43afd96779289bbb9720c\",\"dweb:/ipfs/Qmd89UuKiLJcrosj2h8e4vM9vTqGdUHpkjQU5np19ZpbUG\"]}},\"version\":1}"}},"contracts/gauges/avalanche/AvalancheRootGaugeFactory.sol":{"AvalancheRootGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract ILayerZeroBALProxy","name":"lzBALProxy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b506040516128ce3803806128ce83398101604081905261002f916100bc565b82306001600160a01b031660001b838360405161004b906100af565b610056929190610108565b604051809103906000f080158015610072573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905560805260601b6001600160601b03191660a0525061013a915050565b61216d8061076183390190565b6000806000606084860312156100d0578283fd5b83516100db81610122565b60208501519093506100ec81610122565b60408501519092506100fd81610122565b809150509250925092565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b038116811461013757600080fd5b50565b60805160a05160601c610601610160600039806102055250806101b452506106016000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638d928af8116100505780638d928af8146100c8578063aaabadc5146100d0578063ce3cc8bd146100d857610072565b80630ecaea731461007757806339312dee146100a0578063851c1bb3146100a8575b600080fd5b61008a61008536600461045d565b6100f8565b6040516100979190610514565b60405180910390f35b61008a610194565b6100bb6100b6366004610488565b6101b0565b6040516100979190610566565b61008a610203565b61008a610227565b6100eb6100e636600461043a565b6102b3565b604051610097919061055b565b6000806101036102de565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc6879061015a9087908790600401610535565b600060405180830381600087803b15801561017457600080fd5b505af1158015610188573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016101e59291906104e4565b6040516020818303038152906040528051906020012090505b919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610231610203565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ae91906104c8565b905090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6000805481906103039073ffffffffffffffffffffffffffffffffffffffff16610384565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104319061056f565b60405180910390fd5b60006020828403121561044b578081fd5b8135610456816105a6565b9392505050565b6000806040838503121561046f578081fd5b823561047a816105a6565b946020939093013593505050565b600060208284031215610499578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610456578182fd5b6000602082840312156104d9578081fd5b8151610456816105a6565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b5056fea2646970667358221220347aefad4cd1b181977d6567ad38b357634223726458d22409b65be8d40a7e3564736f6c634300070100336101c06040523480156200001257600080fd5b506040516200216d3803806200216d8339810160408190526200003591620005a3565b8160016000819055506000816001600160a01b031663e6dec36f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200007a57600080fd5b505afa1580156200008f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b591906200057d565b90506000816001600160a01b031663c00396996040518163ffffffff1660e01b815260040160206040518083038186803b158015620000f357600080fd5b505afa15801562000108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012e91906200057d565b90506000836001600160a01b03166358de9ade6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016c57600080fd5b505afa15801562000181573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a791906200057d565b6001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021657600080fd5b505afa1580156200022b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025191906200057d565b6001600160a01b0316610100816001600160a01b031660601b81525050826001600160a01b031663b87b56166040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a857600080fd5b505afa158015620002bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e39190620005e1565b6101208181525050826001600160a01b03166321609bbf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032557600080fd5b505afa1580156200033a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003609190620005e1565b6101408181525050826001600160a01b0316637efad8e06040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a257600080fd5b505afa158015620003b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003dd9190620005e1565b61016052505060001960025550506001600160601b0319606082901b166101805260408051630857749b60e41b815290516000916001600160a01b0384169163857749b09160048082019260209290919082900301818787803b1580156200044457600080fd5b505af115801562000459573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047f9190620005fa565b836001600160a01b031663c00396996040518163ffffffff1660e01b815260040160206040518083038186803b158015620004b957600080fd5b505afa158015620004ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f491906200057d565b6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200052d57600080fd5b505afa15801562000542573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005689190620005fa565b0360ff16600a0a6101a0525062000636915050565b6000602082840312156200058f578081fd5b81516200059c816200061d565b9392505050565b60008060408385031215620005b6578081fd5b8251620005c3816200061d565b6020840151909250620005d6816200061d565b809150509250929050565b600060208284031215620005f3578081fd5b5051919050565b6000602082840312156200060c578081fd5b815160ff811681146200059c578182fd5b6001600160a01b03811681146200063357600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a051611a6d62000700600039806104685280610e7c52508061028652806109545280610bb95280610c9a5280610d695280610f3b5280610f6252508061073d52508061071c52508061069f528061078952508061032352806104bd528061057a5280610aa652508061038d5280610625525080610878525080611081528061116b52508061091d5280610f195250611a6d6000f3fe6080604052600436106100e85760003560e01c806383f5c39b1161008a578063b024522511610059578063b024522514610232578063c2c4c5c114610247578063cd6dc6871461024f578063d34fb2671461026f576100e8565b806383f5c39b146101de5780639c868ac0146101f35780639f86767114610208578063ab8f09451461021d576100e8565b806314e956f5116100c657806314e956f5146101675780631b88094d146101875780634b8200931461019c5780635e8a8389146101c9576100e8565b806305c2c78d146100ed578063094007071461011857806310d3eb0414610145575b600080fd5b3480156100f957600080fd5b50610102610284565b60405161010f91906116a3565b60405180910390f35b34801561012457600080fd5b5061013861013336600461152b565b6102a9565b60405161010f91906119e0565b34801561015157600080fd5b506101656101603660046115b5565b61030b565b005b34801561017357600080fd5b506101386101823660046115b5565b610386565b34801561019357600080fd5b50610102610444565b3480156101a857600080fd5b506101bc6101b736600461152b565b610460565b60405161010f91906117b7565b3480156101d557600080fd5b50610138610466565b3480156101ea57600080fd5b5061013861048a565b3480156101ff57600080fd5b506101bc610490565b34801561021457600080fd5b50610138610499565b34801561022957600080fd5b506101656104a5565b34801561023e57600080fd5b50610138610541565b6101bc610558565b34801561025b57600080fd5b5061016561026a36600461156a565b61091b565b34801561027b57600080fd5b50610165610a8e565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff82163014610303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611958565b60405180910390fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b61038381610b27565b50565b600061043e7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b81526004016103e6929190611791565b60206040518083038186803b1580156103fe57600080fd5b505afa158015610412573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043691906115cd565b600654610ba9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610514576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600061055361054e610bb5565b610d64565b905090565b6000610562610e30565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b60025460006105de610e49565b90508082101561090d576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e52379061065a9030906004016116a3565b600060405180830381600087803b15801561067457600080fd5b505af1158015610688573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561081657848111156106d957610816565b62093a8081026000806106eb83610386565b905082851015801561070157508262093a800185105b156107ba57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161076557fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506107cf9050565b670de0b6b3a764000062093a80828902020491505b827f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced836040516107ff91906119e0565b60405180910390a2509390930192506001016106c1565b50600284905560048054830190558115801590610836575060055460ff16155b15610909576040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636a627842906108ad9030906004016116a3565b602060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ff91906115cd565b5061090982610e74565b5050505b6001925050506102a661103c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109b857600080fd5b505afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f0919061154e565b73ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117f9565b610a4681611043565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610afd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610b69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611867565b60068190556040517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb290610b9e9083906119e0565b60405180910390a150565b80820390821102900390565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ed629c5c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1d57600080fd5b505afa158015610c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c559190611595565b15610d4f576040517f8cfd8f5c00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690638cfd8f5c90610cd290606a9085906004016119cb565b60206040518083038186803b158015610cea57600080fd5b505afa158015610cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2291906115cd565b9050600181604051602001610d3892919061166e565b6040516020818303038152906040529150506102a6565b506040805160208101909152600081526102a6565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663365260b4606a610db5610db0610444565b611219565b600080886040518663ffffffff1660e01b8152600401610dd995949392919061198f565b604080518083038186803b158015610df057600080fd5b505afa158015610e04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2891906115e5565b509392505050565b610e4260026000541415610190611232565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6000610ea0827f0000000000000000000000000000000000000000000000000000000000000000611240565b905080610ead5750610383565b6060610eb7610bb5565b90506000610ec482610d64565b9050803414610eff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611830565b610f6073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000086611257565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632cdf0b958230606a610fab610db0610444565b60408051606081018252338152600060208201528082018a905290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152611004949392918c918c9190600401611714565b6000604051808303818588803b15801561101d57600080fd5b505af1158015611031573d6000803e3d6000fd5b505050505050505050565b6001600055565b6002541561107d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611921565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e557600080fd5b505afa1580156110f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111d91906115cd565b905080611156576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906118c4565b6001819055611163610e49565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111d157600080fd5b505af11580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120991906115cd565b60035561121582610b27565b5050565b73ffffffffffffffffffffffffffffffffffffffff1690565b8161121557611215816113d3565b60008082848161124c57fe5b069093039392505050565b801580159061130857506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e906112b590309086906004016116c4565b60206040518083038186803b1580156112cd57600080fd5b505afa1580156112e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130591906115cd565b15155b156113af576113af8363095ea7b360e01b84600060405160240161132d9291906116eb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526113fd565b6113ce8363095ea7b360e01b848460405160240161132d929190611791565b505050565b610383817f42414c00000000000000000000000000000000000000000000000000000000006114b0565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114269190611652565b6000604051808303816000865af19150503d8060008114611463576040519150601f19603f3d011682016040523d82523d6000602084013e611468565b606091505b50915091506000821415611480573d6000803e3d6000fd5b6114aa8151600014806114a25750818060200190518101906114a29190611595565b6101a2611232565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006020828403121561153c578081fd5b813561154781611a15565b9392505050565b60006020828403121561155f578081fd5b815161154781611a15565b6000806040838503121561157c578081fd5b823561158781611a15565b946020939093013593505050565b6000602082840312156115a6578081fd5b81518015158114611547578182fd5b6000602082840312156115c6578081fd5b5035919050565b6000602082840312156115de578081fd5b5051919050565b600080604083850312156115f7578182fd5b505080516020909101519092909150565b600081518084526116208160208601602086016119e9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516116648184602087016119e9565b9190910192915050565b60f09290921b7fffff000000000000000000000000000000000000000000000000000000000000168252600282015260220190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808916835261ffff8816602084015286604084015285606084015284608084015260c060a08401528084511660c08401528060208501511660e08401525060408301516060610100840152611784610120840182611608565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526012908201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604082015260600190565b60208082526015908201527f496e76616c6964205772617070657220546f6b656e0000000000000000000000604082015260600190565b6020808252601a908201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604082015260600190565b60208082526034908201527f52656c61746976652077656967687420636170206578636565647320616c6c6f60408201527f776564206162736f6c757465206d6178696d756d000000000000000000000000606082015260800190565b60208082526024908201527f42616c616e636572546f6b656e41646d696e206e6f742079657420616374697660408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252601e908201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604082015260600190565b600061ffff87168252856020830152846040830152831515606083015260a060808301526119c060a0830184611608565b979650505050505050565b61ffff92831681529116602082015260400190565b90815260200190565b60005b83811015611a045781810151838201526020016119ec565b838111156114aa5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461038357600080fdfea2646970667358221220ef03472d8e7790ef76063674dedc8dd461c87c6258cb8f2af640a844c22b0c2e64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x28CE CODESIZE SUB DUP1 PUSH2 0x28CE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xBC JUMP JUMPDEST DUP3 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x4B SWAP1 PUSH2 0xAF JUMP JUMPDEST PUSH2 0x56 SWAP3 SWAP2 SWAP1 PUSH2 0x108 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x80 MSTORE PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE POP PUSH2 0x13A SWAP2 POP POP JUMP JUMPDEST PUSH2 0x216D DUP1 PUSH2 0x761 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD0 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0xDB DUP2 PUSH2 0x122 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0xEC DUP2 PUSH2 0x122 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0xFD DUP2 PUSH2 0x122 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x601 PUSH2 0x160 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x205 MSTORE POP DUP1 PUSH2 0x1B4 MSTORE POP PUSH2 0x601 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xD8 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xA8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x45D JUMP JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x514 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x194 JUMP JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x488 JUMP JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x203 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x227 JUMP JUMPDEST PUSH2 0xEB PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x43A JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x103 PUSH2 0x2DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0x15A SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x535 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E5 SWAP3 SWAP2 SWAP1 PUSH2 0x4E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x231 PUSH2 0x203 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AE SWAP2 SWAP1 PUSH2 0x4C8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x303 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x384 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x431 SWAP1 PUSH2 0x56F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x44B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x47A DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x499 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x456 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLVALUE PUSH27 0xEFAD4CD1B181977D6567AD38B357634223726458D22409B65BE8D4 EXP PUSH31 0x3564736F6C634300070100336101C06040523480156200001257600080FD5B POP PUSH1 0x40 MLOAD PUSH3 0x216D CODESIZE SUB DUP1 PUSH3 0x216D DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x5A3 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE6DEC36F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xB5 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0039699 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x108 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x12E SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x58DE9ADE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x181 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1A7 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x22B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x251 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB87B5616 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x2E3 SWAP2 SWAP1 PUSH3 0x5E1 JUMP JUMPDEST PUSH2 0x120 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x21609BBF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x33A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x360 SWAP2 SWAP1 PUSH3 0x5E1 JUMP JUMPDEST PUSH2 0x140 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7EFAD8E0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x3DD SWAP2 SWAP1 PUSH3 0x5E1 JUMP JUMPDEST PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH2 0x180 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x857749B PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x857749B0 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x459 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x47F SWAP2 SWAP1 PUSH3 0x5FA JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0039699 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x4CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x4F4 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x542 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x568 SWAP2 SWAP1 PUSH3 0x5FA JUMP JUMPDEST SUB PUSH1 0xFF AND PUSH1 0xA EXP PUSH2 0x1A0 MSTORE POP PUSH3 0x636 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x58F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x59C DUP2 PUSH3 0x61D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x5B6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x5C3 DUP2 PUSH3 0x61D JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x5D6 DUP2 PUSH3 0x61D JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5F3 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x60C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x59C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH2 0x1A6D PUSH3 0x700 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x468 MSTORE DUP1 PUSH2 0xE7C MSTORE POP DUP1 PUSH2 0x286 MSTORE DUP1 PUSH2 0x954 MSTORE DUP1 PUSH2 0xBB9 MSTORE DUP1 PUSH2 0xC9A MSTORE DUP1 PUSH2 0xD69 MSTORE DUP1 PUSH2 0xF3B MSTORE DUP1 PUSH2 0xF62 MSTORE POP DUP1 PUSH2 0x73D MSTORE POP DUP1 PUSH2 0x71C MSTORE POP DUP1 PUSH2 0x69F MSTORE DUP1 PUSH2 0x789 MSTORE POP DUP1 PUSH2 0x323 MSTORE DUP1 PUSH2 0x4BD MSTORE DUP1 PUSH2 0x57A MSTORE DUP1 PUSH2 0xAA6 MSTORE POP DUP1 PUSH2 0x38D MSTORE DUP1 PUSH2 0x625 MSTORE POP DUP1 PUSH2 0x878 MSTORE POP DUP1 PUSH2 0x1081 MSTORE DUP1 PUSH2 0x116B MSTORE POP DUP1 PUSH2 0x91D MSTORE DUP1 PUSH2 0xF19 MSTORE POP PUSH2 0x1A6D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x26F JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x21D JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0x5E8A8389 EQ PUSH2 0x1C9 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x5C2C78D EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x145 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x284 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x152B JUMP JUMPDEST PUSH2 0x2A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x160 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B5 JUMP JUMPDEST PUSH2 0x30B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B5 JUMP JUMPDEST PUSH2 0x386 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x444 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x1B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x152B JUMP JUMPDEST PUSH2 0x460 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x17B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x466 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x48A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x490 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x499 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x4A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x541 JUMP JUMPDEST PUSH2 0x1BC PUSH2 0x558 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0x156A JUMP JUMPDEST PUSH2 0x91B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0xA8E JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x303 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x37A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH2 0x383 DUP2 PUSH2 0xB27 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43E PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E6 SWAP3 SWAP2 SWAP1 PUSH2 0x1791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x412 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x436 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xBA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x514 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x553 PUSH2 0x54E PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0xD64 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x562 PUSH2 0xE30 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x5DE PUSH2 0xE49 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x90D JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x65A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x688 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x816 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x6D9 JUMPI PUSH2 0x816 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x6EB DUP4 PUSH2 0x386 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x701 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x7BA JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x765 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x7CF SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST DUP3 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED DUP4 PUSH1 0x40 MLOAD PUSH2 0x7FF SWAP2 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x6C1 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x836 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x909 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x8AD SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8FF SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST POP PUSH2 0x909 DUP3 PUSH2 0xE74 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x2A6 PUSH2 0x103C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9F0 SWAP2 SWAP1 PUSH2 0x154E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17F9 JUMP JUMPDEST PUSH2 0xA46 DUP2 PUSH2 0x1043 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xAFD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1867 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP1 PUSH2 0xB9E SWAP1 DUP4 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xED629C5C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC31 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC55 SWAP2 SWAP1 PUSH2 0x1595 JUMP JUMPDEST ISZERO PUSH2 0xD4F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8CFD8F5C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x8CFD8F5C SWAP1 PUSH2 0xCD2 SWAP1 PUSH1 0x6A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x19CB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD22 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD38 SWAP3 SWAP2 SWAP1 PUSH2 0x166E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2A6 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x365260B4 PUSH1 0x6A PUSH2 0xDB5 PUSH2 0xDB0 PUSH2 0x444 JUMP JUMPDEST PUSH2 0x1219 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDD9 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x198F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE28 SWAP2 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE42 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA0 DUP3 PUSH32 0x0 PUSH2 0x1240 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xEAD JUMPI POP PUSH2 0x383 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEB7 PUSH2 0xBB5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xEC4 DUP3 PUSH2 0xD64 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xEFF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1830 JUMP JUMPDEST PUSH2 0xF60 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP7 PUSH2 0x1257 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2CDF0B95 DUP3 ADDRESS PUSH1 0x6A PUSH2 0xFAB PUSH2 0xDB0 PUSH2 0x444 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE DUP1 DUP3 ADD DUP11 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP9 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x1004 SWAP5 SWAP4 SWAP3 SWAP2 DUP13 SWAP2 DUP13 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1031 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x107D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1921 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x111D SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1156 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x1163 PUSH2 0xE49 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1209 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST PUSH1 0x3 SSTORE PUSH2 0x1215 DUP3 PUSH2 0xB27 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x1215 JUMPI PUSH2 0x1215 DUP2 PUSH2 0x13D3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 PUSH2 0x124C JUMPI INVALID JUMPDEST MOD SWAP1 SWAP4 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1308 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x12B5 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x16C4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1305 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x13AF JUMPI PUSH2 0x13AF DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x16EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x13FD JUMP JUMPDEST PUSH2 0x13CE DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x1791 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x383 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x14B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1426 SWAP2 SWAP1 PUSH2 0x1652 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1463 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1468 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1480 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x14AA DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x14A2 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x14A2 SWAP2 SWAP1 PUSH2 0x1595 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1232 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x153C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1547 DUP2 PUSH2 0x1A15 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x155F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1547 DUP2 PUSH2 0x1A15 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x157C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1587 DUP2 PUSH2 0x1A15 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15A6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1547 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15C6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15DE JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15F7 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1620 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19E9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1664 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19E9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xF0 SWAP3 SWAP1 SWAP3 SHL PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND DUP3 MSTORE PUSH1 0x2 DUP3 ADD MSTORE PUSH1 0x22 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE PUSH2 0xFFFF DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP7 PUSH1 0x40 DUP5 ADD MSTORE DUP6 PUSH1 0x60 DUP5 ADD MSTORE DUP5 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP5 ADD MSTORE DUP1 DUP5 MLOAD AND PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0xE0 DUP5 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x1784 PUSH2 0x120 DUP5 ADD DUP3 PUSH2 0x1608 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964205772617070657220546F6B656E0000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C61746976652077656967687420636170206578636565647320616C6C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x776564206162736F6C757465206D6178696D756D000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x42616C616E636572546F6B656E41646D696E206E6F7420796574206163746976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6174656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP8 AND DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x19C0 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1608 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A04 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19EC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14AA JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF SUB SELFBALANCE 0x2D DUP15 PUSH24 0x90EF76063674DEDC8DD461C87C6258CB8F2AF640A844C22B 0xC 0x2E PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"974:1078:95:-:0;;;1060:283;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1272:5;1054:4:51;-1:-1:-1;;;;;1038:22:51;1030:31;;1226:6:95;1234:10;1203:42;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;2049:46:46;;1073:14:51::1;::::0;-1:-1:-1;;;;;;1073:14:51;::::1;::::0;-1:-1:-1;974:1078:95;;-1:-1:-1;;974:1078:95;;;;;;;;;:::o;574:681:-1:-;;;;796:2;784:9;775:7;771:23;767:32;764:2;;;-1:-1;;802:12;764:2;502:6;496:13;514:48;556:5;514:48;:::i;:::-;980:2;1060:22;;310:13;854:89;;-1:-1;328:63;310:13;328:63;:::i;:::-;1129:2;1207:22;;111:13;988:104;;-1:-1;129:61;111:13;129:61;:::i;:::-;1137:102;;;;758:497;;;;;:::o;1644:449::-;-1:-1;;;;;2627:54;;;1361:78;;2627:54;;2079:2;2064:18;;1361:78;1857:2;1842:18;;1828:265::o;3353:173::-;-1:-1;;;;;2627:54;;3440:63;;3430:2;;3517:1;;3507:12;3430:2;3424:102;:::o;:::-;974:1078:95;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":436}],"3611":[{"length":32,"start":517}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80638d928af8116100505780638d928af8146100c8578063aaabadc5146100d0578063ce3cc8bd146100d857610072565b80630ecaea731461007757806339312dee146100a0578063851c1bb3146100a8575b600080fd5b61008a61008536600461045d565b6100f8565b6040516100979190610514565b60405180910390f35b61008a610194565b6100bb6100b6366004610488565b6101b0565b6040516100979190610566565b61008a610203565b61008a610227565b6100eb6100e636600461043a565b6102b3565b604051610097919061055b565b6000806101036102de565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc6879061015a9087908790600401610535565b600060405180830381600087803b15801561017457600080fd5b505af1158015610188573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016101e59291906104e4565b6040516020818303038152906040528051906020012090505b919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610231610203565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ae91906104c8565b905090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6000805481906103039073ffffffffffffffffffffffffffffffffffffffff16610384565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104319061056f565b60405180910390fd5b60006020828403121561044b578081fd5b8135610456816105a6565b9392505050565b6000806040838503121561046f578081fd5b823561047a816105a6565b946020939093013593505050565b600060208284031215610499578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610456578182fd5b6000602082840312156104d9578081fd5b8151610456816105a6565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b5056fea2646970667358221220347aefad4cd1b181977d6567ad38b357634223726458d22409b65be8d40a7e3564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xD8 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xA8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x45D JUMP JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x514 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x194 JUMP JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x488 JUMP JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x203 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x227 JUMP JUMPDEST PUSH2 0xEB PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x43A JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x103 PUSH2 0x2DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0x15A SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x535 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E5 SWAP3 SWAP2 SWAP1 PUSH2 0x4E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x231 PUSH2 0x203 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AE SWAP2 SWAP1 PUSH2 0x4C8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x303 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x384 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x431 SWAP1 PUSH2 0x56F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x44B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x47A DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x499 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x456 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLVALUE PUSH27 0xEFAD4CD1B181977D6567AD38B357634223726458D22409B65BE8D4 EXP PUSH31 0x3564736F6C6343000701003300000000000000000000000000000000000000 ","sourceMap":"974:1078:95:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1821:229;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;2607:430:46:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1158:79:51:-;;;:::i;1297:109::-;;;:::i;1507:131:83:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1821:229:95:-;1901:7;1920:13;1936:9;:7;:9::i;:::-;1955:66;;;;;1920:25;;-1:-1:-1;1955:36:95;;;;;;:66;;1992:9;;2003:17;;1955:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2038:5:95;;1821:229;-1:-1:-1;;;;;;1821:229:95:o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;1297:109::-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;1507:131:83:-;1605:26;;1582:4;1605:26;;;:19;:26;;;;;;;;;1507:131::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;595:241:-1;;699:2;687:9;678:7;674:23;670:32;667:2;;;-1:-1;;705:12;667:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;757:63;661:175;-1:-1;;;661:175::o;843:366::-;;;964:2;952:9;943:7;939:23;935:32;932:2;;;-1:-1;;970:12;932:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1022:63;1122:2;1161:22;;;;525:20;;-1:-1;;;926:283::o;1216:239::-;;1319:2;1307:9;1298:7;1294:23;1290:32;1287:2;;;-1:-1;;1325:12;1287:2;221:6;208:20;6097:66;7462:5;6086:78;7438:5;7435:34;7425:2;;-1:-1;;7473:12;1462:303;;1597:2;1585:9;1576:7;1572:23;1568:32;1565:2;;;-1:-1;;1603:12;1565:2;381:6;375:13;393:53;440:5;393:53;:::i;3224:387::-;2074:37;;;6097:66;6086:78;3475:2;3466:12;;2369:56;3575:11;;;3366:245::o;3618:222::-;6367:42;6356:54;;;;1843:37;;3745:2;3730:18;;3716:124::o;3847:333::-;6367:42;6356:54;;;;1843:37;;4166:2;4151:18;;2074:37;4002:2;3987:18;;3973:207::o;4187:210::-;5920:13;;5913:21;1957:34;;4308:2;4293:18;;4279:118::o;4404:222::-;2074:37;;;4531:2;4516:18;;4502:124::o;5161:416::-;5361:2;5375:47;;;2998:2;5346:18;;;5688:19;3034:24;5728:14;;;3014:45;3078:12;;;5332:245::o;7253:117::-;6367:42;7340:5;6356:54;7315:5;7312:35;7302:2;;7361:1;;7351:12;7302:2;7296:74;:::o"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getGaugeImplementation()":"39312dee","getVault()":"8d928af8","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract ILayerZeroBALProxy\",\"name\":\"lzBALProxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Avalanche.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/avalanche/AvalancheRootGaugeFactory.sol\":\"AvalancheRootGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/avalanche/AvalancheRootGauge.sol\":{\"keccak256\":\"0x43bdf93c991ce12749932136f830478dc8981cd2123591b02b07103c7f4a73d8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0670c48669f090af80c4454a46c5e33d7a499015565cd57854fe9e2d1e9c85a9\",\"dweb:/ipfs/QmVUXzfTTKW2pUYRQ4neK6TmheDSsBazsShvKDLyMUmdiY\"]},\"contracts/gauges/avalanche/AvalancheRootGaugeFactory.sol\":{\"keccak256\":\"0x8337c5fd31a63a6fba259ecd0e231c681dbc6ce52424a27e5ed79b8ac065f6c1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://341d5ab5508717854ebd464208942d48fb0bd71105931c9926b70f1d26be0a1b\",\"dweb:/ipfs/QmPkZo71jMo1Hqkeq8cNmnNZkJUoLNZTPD99XM1Ewp1fBc\"]},\"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol\":{\"keccak256\":\"0xe49df779008ec324de421878d86c9ad9fc2700e47931f8de70460eaacc0e5d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dd6e05a9aeb465123a157098a73625e933ab10fa48c43afd96779289bbb9720c\",\"dweb:/ipfs/Qmd89UuKiLJcrosj2h8e4vM9vTqGdUHpkjQU5np19ZpbUG\"]}},\"version\":1}"}},"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol":{"AvalancheRootGaugeLib":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122098011fadea0d75df45f3c7cf67e4fd9d5f7de4933151be306cfb16777ea4e88564736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP9 ADD 0x1F 0xAD 0xEA 0xD PUSH22 0xDF45F3C7CF67E4FD9D5F7DE4933151BE306CFB16777E LOG4 0xE8 DUP6 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"713:499:96:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122098011fadea0d75df45f3c7cf67e4fd9d5f7de4933151be306cfb16777ea4e88564736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP9 ADD 0x1F 0xAD 0xEA 0xD PUSH22 0xDF45F3C7CF67E4FD9D5F7DE4933151BE306CFB16777E LOG4 0xE8 DUP6 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"713:499:96:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol\":\"AvalancheRootGaugeLib\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol\":{\"keccak256\":\"0xe49df779008ec324de421878d86c9ad9fc2700e47931f8de70460eaacc0e5d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dd6e05a9aeb465123a157098a73625e933ab10fa48c43afd96779289bbb9720c\",\"dweb:/ipfs/Qmd89UuKiLJcrosj2h8e4vM9vTqGdUHpkjQU5np19ZpbUG\"]}},\"version\":1}"}},"contracts/gauges/base/BaseRootGauge.sol":{"BaseRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IL1StandardBridge","name":"baseL1StandardBridge","type":"address"},{"internalType":"address","name":"baseBal","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getBaseBal","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseL1StandardBridge","outputs":[{"internalType":"contract IL1StandardBridge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101c06040523480156200001257600080fd5b50604051620018d8380380620018d8833981810160405260608110156200003857600080fd5b50805160208083015160409384015160016000908155855163e6dec36f60e01b81529551949592949193869391926001600160a01b0385169263e6dec36f926004808301939192829003018186803b1580156200009457600080fd5b505afa158015620000a9573d6000803e3d6000fd5b505050506040513d6020811015620000c057600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d60208110156200013557600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017e57600080fd5b505afa15801562000193573d6000803e3d6000fd5b505050506040513d6020811015620001aa57600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021b57600080fd5b505afa15801562000230573d6000803e3d6000fd5b505050506040513d60208110156200024757600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029b57600080fd5b505afa158015620002b0573d6000803e3d6000fd5b505050506040513d6020811015620002c757600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d60208110156200033a57600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b505161016052505060001960025550506001600160601b0319606092831b811661018052911b166101a0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c61144662000492600039806106635280610d475250806105695280610cb95280610d975250806108a052508061087f52508061080252806108ec5250806103c352806105a352806106a75280610adb52508061046252806107905250806109e2525080610e745280610f71525080610c975280610d1f52506114466000f3fe6080604052600436106100e85760003560e01c80639f8676711161008a578063b4921aa311610059578063b4921aa3146102a5578063c2c4c5c1146102ba578063cd6dc687146102c2578063d34fb26714610308576100e8565b80639f86767114610251578063a267b63114610266578063ab8f09451461027b578063b024522514610290576100e8565b80631b88094d116100c65780631b88094d146101955780634b820093146101d357806383f5c39b146102275780639c868ac01461023c576100e8565b806309400707146100ed57806310d3eb041461013f57806314e956f51461016b575b600080fd5b3480156100f957600080fd5b5061012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661031d565b60408051918252519081900360200190f35b34801561014b57600080fd5b506101696004803603602081101561016257600080fd5b50356103ab565b005b34801561017757600080fd5b5061012d6004803603602081101561018e57600080fd5b503561045b565b3480156101a157600080fd5b506101aa610529565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101df57600080fd5b50610213600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610546565b604080519115158252519081900360200190f35b34801561023357600080fd5b5061012d61054c565b34801561024857600080fd5b50610213610552565b34801561025d57600080fd5b5061012d61055b565b34801561027257600080fd5b506101aa610567565b34801561028757600080fd5b5061016961058b565b34801561029c57600080fd5b5061012d61065c565b3480156102b157600080fd5b506101aa610661565b610213610685565b3480156102ce57600080fd5b50610169600480360360408110156102e557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a72565b34801561031457600080fd5b50610169610ac3565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461044f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045881610b91565b50565b60006105237f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104ef57600080fd5b505afa158015610503573d6000803e3d6000fd5b505050506040513d602081101561051957600080fd5b5051600654610c2d565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461062f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061068f610c39565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461073357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610740610c52565b905080821015610a6457604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b1580156107d757600080fd5b505af11580156107eb573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610977578481111561083c57610977565b62093a80810260008061084e8361045b565b905082851015801561086457508262093a800185105b1561091d57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008902816108c857fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506109329050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610824565b50600284905560048054830190558115801590610997575060055460ff16155b15610a6057604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b505050506040513d6020811015610a5457600080fd5b50610a60905082610c7d565b5050505b600192505050610543610dfa565b610a7b81610e01565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113b96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c4b60026000541415610190611013565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610cde73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611021565b600754604080517f838b252000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015292831660448201526064810184905260006084820181905260c060a483015260c4820181905291517f00000000000000000000000000000000000000000000000000000000000000009093169263838b2520926101048084019391929182900301818387803b158015610ddf57600080fd5b505af1158015610df3573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed857600080fd5b505afa158015610eec573d6000803e3d6000fd5b505050506040513d6020811015610f0257600080fd5b5051905080610f5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113ed6024913960400191505060405180910390fd5b6001819055610f69610c52565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fd757600080fd5b505af1158015610feb573d6000803e3d6000fd5b505050506040513d602081101561100157600080fd5b505160035561100f82610b91565b5050565b8161100f5761100f816111f7565b80158015906110d05750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156110a157600080fd5b505afa1580156110b5573d6000803e3d6000fd5b505050506040513d60208110156110cb57600080fd5b505115155b15611165576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611165908490611221565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111f2908490611221565b505050565b610458817f42414c000000000000000000000000000000000000000000000000000000000061133d565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061128a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161124d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112ec576040519150601f19603f3d011682016040523d82523d6000602084013e6112f1565b606091505b50915091506000821415611309573d6000803e3d6000fd5b61133781516000148061132f575081806020019051602081101561132c57600080fd5b50515b6101a2611013565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122009bd824a5488881b18bb43d9f8eaaec1009a177d10b9c51722c401f507c42d0b64736f6c63430007010033","opcodes":"PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x18D8 CODESIZE SUB DUP1 PUSH3 0x18D8 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE DUP6 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 MLOAD SWAP5 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 DUP7 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x11E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x230 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x323 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP2 SHL AND PUSH2 0x1A0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1446 PUSH3 0x492 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x663 MSTORE DUP1 PUSH2 0xD47 MSTORE POP DUP1 PUSH2 0x569 MSTORE DUP1 PUSH2 0xCB9 MSTORE DUP1 PUSH2 0xD97 MSTORE POP DUP1 PUSH2 0x8A0 MSTORE POP DUP1 PUSH2 0x87F MSTORE POP DUP1 PUSH2 0x802 MSTORE DUP1 PUSH2 0x8EC MSTORE POP DUP1 PUSH2 0x3C3 MSTORE DUP1 PUSH2 0x5A3 MSTORE DUP1 PUSH2 0x6A7 MSTORE DUP1 PUSH2 0xADB MSTORE POP DUP1 PUSH2 0x462 MSTORE DUP1 PUSH2 0x790 MSTORE POP DUP1 PUSH2 0x9E2 MSTORE POP DUP1 PUSH2 0xE74 MSTORE DUP1 PUSH2 0xF71 MSTORE POP DUP1 PUSH2 0xC97 MSTORE DUP1 PUSH2 0xD1F MSTORE POP PUSH2 0x1446 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB4921AA3 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB4921AA3 EQ PUSH2 0x2A5 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x308 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xA267B631 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x290 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x23C JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3AB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x45B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x529 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x546 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x552 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x55B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x567 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0x58B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x65C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x661 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA72 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0xAC3 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x44F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x458 DUP2 PUSH2 0xB91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x523 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x503 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC2D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x62F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x68F PUSH2 0xC39 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x733 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x740 PUSH2 0xC52 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA64 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x977 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x83C JUMPI PUSH2 0x977 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x84E DUP4 PUSH2 0x45B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x864 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x91D JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x8C8 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x932 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x824 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x997 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA60 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA60 SWAP1 POP DUP3 PUSH2 0xC7D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x543 PUSH2 0xDFA JUMP JUMPDEST PUSH2 0xA7B DUP2 PUSH2 0xE01 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13B9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC4B PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1013 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xCDE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1021 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x838B252000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP3 DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP4 ADD MSTORE PUSH1 0xC4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP4 AND SWAP3 PUSH4 0x838B2520 SWAP3 PUSH2 0x104 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13ED PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF69 PUSH2 0xC52 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1001 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x100F DUP3 PUSH2 0xB91 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x100F JUMPI PUSH2 0x100F DUP2 PUSH2 0x11F7 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x10D0 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1165 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1165 SWAP1 DUP5 SWAP1 PUSH2 0x1221 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x11F2 SWAP1 DUP5 SWAP1 PUSH2 0x1221 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x458 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x133D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x128A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x124D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x12EC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x12F1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1309 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1337 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x132F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x132C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1013 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122009BD824A5488881B18BB43D9F8EAAEC1 STOP SWAP11 OR PUSH30 0x10B9C51722C401F507C42D0B64736F6C6343000701003300000000000000 ","sourceMap":"916:2666:97:-:0;;;2440:242;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2440:242:97;;;;;;;;;;;;2070:1:63;2175:7;:22;;;2339:30:89;;-1:-1:-1;2339:30:89;;;;2440:242:97;;;;;;;;2175:7:63;;-1:-1:-1;2339:28:89;;;-1:-1:-1;;2339:30:89;;;;;2440:242:97;;2339:30:89;;;;;:28;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2339:30:89;2398:29;;;-1:-1:-1;2398:29:89;;;;2339:30;;-1:-1:-1;2380:15:89;;-1:-1:-1;2398:27:89;;;-1:-1:-1;;2398:29:89;;;;;2339:30;;2398:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2398:29:89;2472:27;;;-1:-1:-1;2472:27:89;;;;2398:29;;-1:-1:-1;2437:32:89;;-1:-1:-1;2472:25:89;;;;;:27;;;;;2398:29;;2472:27;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2472:27:89;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2472:27;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;2472:27;;2665:23;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2665:23:89;2644:44;;-1:-1:-1;2644:44:89;;;2722:32;;;-1:-1:-1;2722:32:89;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;2665:23;;2722:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2722:32:89;2699:55;;2794:39;;;-1:-1:-1;2794:39:89;;;;-1:-1:-1;2794:37:89;;;-1:-1:-1;;2794:39:89;;;;;2722:32;;2794:39;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:39:89;2764:69;;2863:29;;;-1:-1:-1;2863:29:89;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;2794:39;;2863:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2863:29:89;2843:49;;-1:-1:-1;;;;3053:7:89;:27;-1:-1:-1;;;;;;;;2603:44:97::1;::::0;;;;;::::1;::::0;2657:18;;;::::1;::::0;-1:-1:-1;916:2666:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":3223},{"length":32,"start":3359}],"14642":[{"length":32,"start":3700},{"length":32,"start":3953}],"14644":[{"length":32,"start":2530}],"14646":[{"length":32,"start":1122},{"length":32,"start":1936}],"14648":[{"length":32,"start":963},{"length":32,"start":1443},{"length":32,"start":1703},{"length":32,"start":2779}],"14656":[{"length":32,"start":2050},{"length":32,"start":2284}],"14658":[{"length":32,"start":2175}],"14660":[{"length":32,"start":2208}],"17129":[{"length":32,"start":1385},{"length":32,"start":3257},{"length":32,"start":3479}],"17131":[{"length":32,"start":1635},{"length":32,"start":3399}]},"linkReferences":{},"object":"6080604052600436106100e85760003560e01c80639f8676711161008a578063b4921aa311610059578063b4921aa3146102a5578063c2c4c5c1146102ba578063cd6dc687146102c2578063d34fb26714610308576100e8565b80639f86767114610251578063a267b63114610266578063ab8f09451461027b578063b024522514610290576100e8565b80631b88094d116100c65780631b88094d146101955780634b820093146101d357806383f5c39b146102275780639c868ac01461023c576100e8565b806309400707146100ed57806310d3eb041461013f57806314e956f51461016b575b600080fd5b3480156100f957600080fd5b5061012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661031d565b60408051918252519081900360200190f35b34801561014b57600080fd5b506101696004803603602081101561016257600080fd5b50356103ab565b005b34801561017757600080fd5b5061012d6004803603602081101561018e57600080fd5b503561045b565b3480156101a157600080fd5b506101aa610529565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101df57600080fd5b50610213600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610546565b604080519115158252519081900360200190f35b34801561023357600080fd5b5061012d61054c565b34801561024857600080fd5b50610213610552565b34801561025d57600080fd5b5061012d61055b565b34801561027257600080fd5b506101aa610567565b34801561028757600080fd5b5061016961058b565b34801561029c57600080fd5b5061012d61065c565b3480156102b157600080fd5b506101aa610661565b610213610685565b3480156102ce57600080fd5b50610169600480360360408110156102e557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a72565b34801561031457600080fd5b50610169610ac3565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461044f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045881610b91565b50565b60006105237f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104ef57600080fd5b505afa158015610503573d6000803e3d6000fd5b505050506040513d602081101561051957600080fd5b5051600654610c2d565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461062f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061068f610c39565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461073357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610740610c52565b905080821015610a6457604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b1580156107d757600080fd5b505af11580156107eb573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610977578481111561083c57610977565b62093a80810260008061084e8361045b565b905082851015801561086457508262093a800185105b1561091d57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008902816108c857fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506109329050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610824565b50600284905560048054830190558115801590610997575060055460ff16155b15610a6057604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b505050506040513d6020811015610a5457600080fd5b50610a60905082610c7d565b5050505b600192505050610543610dfa565b610a7b81610e01565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113b96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c4b60026000541415610190611013565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610cde73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611021565b600754604080517f838b252000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015292831660448201526064810184905260006084820181905260c060a483015260c4820181905291517f00000000000000000000000000000000000000000000000000000000000000009093169263838b2520926101048084019391929182900301818387803b158015610ddf57600080fd5b505af1158015610df3573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed857600080fd5b505afa158015610eec573d6000803e3d6000fd5b505050506040513d6020811015610f0257600080fd5b5051905080610f5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113ed6024913960400191505060405180910390fd5b6001819055610f69610c52565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fd757600080fd5b505af1158015610feb573d6000803e3d6000fd5b505050506040513d602081101561100157600080fd5b505160035561100f82610b91565b5050565b8161100f5761100f816111f7565b80158015906110d05750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156110a157600080fd5b505afa1580156110b5573d6000803e3d6000fd5b505050506040513d60208110156110cb57600080fd5b505115155b15611165576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611165908490611221565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111f2908490611221565b505050565b610458817f42414c000000000000000000000000000000000000000000000000000000000061133d565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061128a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161124d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112ec576040519150601f19603f3d011682016040523d82523d6000602084013e6112f1565b606091505b50915091506000821415611309573d6000803e3d6000fd5b61133781516000148061132f575081806020019051602081101561132c57600080fd5b50515b6101a2611013565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122009bd824a5488881b18bb43d9f8eaaec1009a177d10b9c51722c401f507c42d0b64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB4921AA3 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB4921AA3 EQ PUSH2 0x2A5 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x308 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xA267B631 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x290 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x23C JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3AB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x45B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x529 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x546 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x552 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x55B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x567 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0x58B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x65C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x661 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA72 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0xAC3 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x44F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x458 DUP2 PUSH2 0xB91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x523 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x503 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC2D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x62F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x68F PUSH2 0xC39 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x733 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x740 PUSH2 0xC52 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA64 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x977 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x83C JUMPI PUSH2 0x977 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x84E DUP4 PUSH2 0x45B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x864 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x91D JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x8C8 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x932 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x824 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x997 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA60 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA60 SWAP1 POP DUP3 PUSH2 0xC7D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x543 PUSH2 0xDFA JUMP JUMPDEST PUSH2 0xA7B DUP2 PUSH2 0xE01 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13B9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC4B PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1013 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xCDE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1021 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x838B252000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP3 DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP4 ADD MSTORE PUSH1 0xC4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP4 AND SWAP3 PUSH4 0x838B2520 SWAP3 PUSH2 0x104 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13ED PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF69 PUSH2 0xC52 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1001 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x100F DUP3 PUSH2 0xB91 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x100F JUMPI PUSH2 0x100F DUP2 PUSH2 0x11F7 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x10D0 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1165 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1165 SWAP1 DUP5 SWAP1 PUSH2 0x1221 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x11F2 SWAP1 DUP5 SWAP1 PUSH2 0x1221 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x458 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x133D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x128A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x124D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x12EC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x12F1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1309 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1337 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x132F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x132C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1013 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122009BD824A5488881B18BB43D9F8EAAEC1 STOP SWAP11 OR PUSH30 0x10B9C51722C401F507C42D0B64736F6C6343000701003300000000000000 ","sourceMap":"916:2666:97:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6895:191:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6895:191:89;;;;:::i;:::-;;;;;;;;;;;;;;;;7513:214;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7513:214:89;;:::i;:::-;;8159:199;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:199:89;;:::i;2921:99:97:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6789:100:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6789:100:89;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8038:115;;;;;;;;;;;;;:::i;7092:92::-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;3026:122:97:-;;;;;;;;;;;;;:::i;7190:154:89:-;;;;;;;;;;;;;:::i;6394:104::-;;;;;;;;;;;;;:::i;3154:86:97:-;;;;;;;;;;;;;:::i;3697:2655:89:-;;;:::i;2688:227:97:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2688:227:97;;;;;;;;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;6895:191::-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8271:59:89;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;2921:99:97:-;3003:10;;;;2921:99;;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;8038:115::-;8128:18;;8038:115;:::o;7092:92::-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;3026:122:97:-;3120:21;3026:122;:::o;7190:154:89:-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6394:104::-;6464:7;6394:104;:::o;3154:86:97:-;3225:8;3154:86;:::o;3697:2655:89:-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;;4042:4:::1;4000:48;::::0;::::1;::::0;;;:33:::1;:16;:33;::::0;::::1;::::0;:48;;;;;-1:-1:-1;;4000:48:89;;;;;;;-1:-1:-1;4000:33:89;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5978:38;::::0;;;;;;;5989:10;;5978:38:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;;6246:4:::1;6225:27;::::0;::::1;::::0;;;:12:::1;:7;:12;::::0;::::1;::::0;:27;;;;;::::1;::::0;;;;;;;;-1:-1:-1;6225:12:89;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6270:29:89::1;::::0;-1:-1:-1;6286:12:89;6270:15:::1;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;2688:227:97:-;2835:40;2857:17;2835:21;:40::i;:::-;-1:-1:-1;2886:10:97;:22;;;;;;;;;;;;;;;2688:227::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7929:18;:38;;;7982:43;;;;;;;;;;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;3246:334:97:-;3319:65;:21;:9;:21;3349;3373:10;3319:21;:65::i;:::-;3530:10;;3463:110;;;;;;:36;3508:9;3463:110;;;;;;3520:8;3463:110;;;;;;3530:10;;;3463:110;;;;;;;;;;-1:-1:-1;3463:110:97;;;;;;;;;;;;;;;;;;;:21;:36;;;;;;:110;;;;;-1:-1:-1;;3463:110:97;;;;;;-1:-1:-1;3463:36:97;:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3246:334;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3428:18:89;;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3601:33:89;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;;1256:4;1232:43;;;;:15;:43;;;;;;;;;:15;;;;;;:43;;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1232:43:64;:48;;1218:62;1214:183;;;1332:53;;;;;;;;;;1383:1;1332:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:22;1332:53;;;1296:90;;1324:5;;1296:19;:90::i;:::-;1443:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1466:22;1443:57;;;1407:94;;1435:5;;1407:19;:94::i;:::-;1001:507;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:64;3143:56;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getBaseBal()":"b4921aa3","getBaseL1StandardBridge()":"a267b631","getCappedRelativeWeight(uint256)":"14e956f5","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"baseL1StandardBridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseBal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaseBal\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaseL1StandardBridge\",\"outputs\":[{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/base/BaseRootGauge.sol\":\"BaseRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\":{\"keccak256\":\"0x31b489cbd755b3c789115af4cf3d7af2da15f59030345ac29ecf26a033fc806a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2cc164ca032440222b7984aebbad6a46a6c82eef33564d1c6d78408bafab9934\",\"dweb:/ipfs/QmdgixtcWUX8CFhrTkUiAAmSkpMG2FsZnK18QywDhFoFcp\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/base/BaseRootGauge.sol\":{\"keccak256\":\"0xb5d997651688c44dc3a3c4407b573aa082015504fb91f972a367fb20cf64d344\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bcc43b88d1a141d008a00834d61d49363e297e79eb1de45ff37a59fa662dbca\",\"dweb:/ipfs/QmThj1XX6AbX2n2ajDDLRtJvDqpKb7eLh5zFQui92UA57H\"]}},\"version\":1}"}},"contracts/gauges/base/BaseRootGaugeFactory.sol":{"BaseRootGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IL1StandardBridge","name":"baseL1StandardBridge","type":"address"},{"internalType":"address","name":"baseBal","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b5060405161205738038061205783398101604081905261002f916100bf565b83306001600160a01b031660001b84848460405161004c906100b2565b6100589392919061011d565b604051809103906000f080158015610074573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905560805260601b6001600160601b03191660a0525061015892505050565b6118d88061077f83390190565b600080600080608085870312156100d4578384fd5b84516100df81610140565b60208601519094506100f081610140565b604086015190935061010181610140565b606086015190925061011281610140565b939692955090935050565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b038116811461015557600080fd5b50565b60805160a05160601c61060161017e600039806102055250806101b452506106016000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638d928af8116100505780638d928af8146100c8578063aaabadc5146100d0578063ce3cc8bd146100d857610072565b80630ecaea731461007757806339312dee146100a0578063851c1bb3146100a8575b600080fd5b61008a61008536600461045d565b6100f8565b6040516100979190610514565b60405180910390f35b61008a610194565b6100bb6100b6366004610488565b6101b0565b6040516100979190610566565b61008a610203565b61008a610227565b6100eb6100e636600461043a565b6102b3565b604051610097919061055b565b6000806101036102de565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc6879061015a9087908790600401610535565b600060405180830381600087803b15801561017457600080fd5b505af1158015610188573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016101e59291906104e4565b6040516020818303038152906040528051906020012090505b919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610231610203565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ae91906104c8565b905090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6000805481906103039073ffffffffffffffffffffffffffffffffffffffff16610384565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104319061056f565b60405180910390fd5b60006020828403121561044b578081fd5b8135610456816105a6565b9392505050565b6000806040838503121561046f578081fd5b823561047a816105a6565b946020939093013593505050565b600060208284031215610499578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610456578182fd5b6000602082840312156104d9578081fd5b8151610456816105a6565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b5056fea26469706673582212207522df29ff90608b283659dbb7ea1070d62546dfced00d477766e001643f17c364736f6c634300070100336101c06040523480156200001257600080fd5b50604051620018d8380380620018d8833981810160405260608110156200003857600080fd5b50805160208083015160409384015160016000908155855163e6dec36f60e01b81529551949592949193869391926001600160a01b0385169263e6dec36f926004808301939192829003018186803b1580156200009457600080fd5b505afa158015620000a9573d6000803e3d6000fd5b505050506040513d6020811015620000c057600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d60208110156200013557600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017e57600080fd5b505afa15801562000193573d6000803e3d6000fd5b505050506040513d6020811015620001aa57600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021b57600080fd5b505afa15801562000230573d6000803e3d6000fd5b505050506040513d60208110156200024757600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029b57600080fd5b505afa158015620002b0573d6000803e3d6000fd5b505050506040513d6020811015620002c757600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d60208110156200033a57600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b505161016052505060001960025550506001600160601b0319606092831b811661018052911b166101a0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c61144662000492600039806106635280610d475250806105695280610cb95280610d975250806108a052508061087f52508061080252806108ec5250806103c352806105a352806106a75280610adb52508061046252806107905250806109e2525080610e745280610f71525080610c975280610d1f52506114466000f3fe6080604052600436106100e85760003560e01c80639f8676711161008a578063b4921aa311610059578063b4921aa3146102a5578063c2c4c5c1146102ba578063cd6dc687146102c2578063d34fb26714610308576100e8565b80639f86767114610251578063a267b63114610266578063ab8f09451461027b578063b024522514610290576100e8565b80631b88094d116100c65780631b88094d146101955780634b820093146101d357806383f5c39b146102275780639c868ac01461023c576100e8565b806309400707146100ed57806310d3eb041461013f57806314e956f51461016b575b600080fd5b3480156100f957600080fd5b5061012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661031d565b60408051918252519081900360200190f35b34801561014b57600080fd5b506101696004803603602081101561016257600080fd5b50356103ab565b005b34801561017757600080fd5b5061012d6004803603602081101561018e57600080fd5b503561045b565b3480156101a157600080fd5b506101aa610529565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101df57600080fd5b50610213600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610546565b604080519115158252519081900360200190f35b34801561023357600080fd5b5061012d61054c565b34801561024857600080fd5b50610213610552565b34801561025d57600080fd5b5061012d61055b565b34801561027257600080fd5b506101aa610567565b34801561028757600080fd5b5061016961058b565b34801561029c57600080fd5b5061012d61065c565b3480156102b157600080fd5b506101aa610661565b610213610685565b3480156102ce57600080fd5b50610169600480360360408110156102e557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a72565b34801561031457600080fd5b50610169610ac3565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461044f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045881610b91565b50565b60006105237f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104ef57600080fd5b505afa158015610503573d6000803e3d6000fd5b505050506040513d602081101561051957600080fd5b5051600654610c2d565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461062f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061068f610c39565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461073357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610740610c52565b905080821015610a6457604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b1580156107d757600080fd5b505af11580156107eb573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610977578481111561083c57610977565b62093a80810260008061084e8361045b565b905082851015801561086457508262093a800185105b1561091d57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008902816108c857fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506109329050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610824565b50600284905560048054830190558115801590610997575060055460ff16155b15610a6057604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b505050506040513d6020811015610a5457600080fd5b50610a60905082610c7d565b5050505b600192505050610543610dfa565b610a7b81610e01565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113b96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c4b60026000541415610190611013565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610cde73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611021565b600754604080517f838b252000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015292831660448201526064810184905260006084820181905260c060a483015260c4820181905291517f00000000000000000000000000000000000000000000000000000000000000009093169263838b2520926101048084019391929182900301818387803b158015610ddf57600080fd5b505af1158015610df3573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed857600080fd5b505afa158015610eec573d6000803e3d6000fd5b505050506040513d6020811015610f0257600080fd5b5051905080610f5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113ed6024913960400191505060405180910390fd5b6001819055610f69610c52565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fd757600080fd5b505af1158015610feb573d6000803e3d6000fd5b505050506040513d602081101561100157600080fd5b505160035561100f82610b91565b5050565b8161100f5761100f816111f7565b80158015906110d05750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156110a157600080fd5b505afa1580156110b5573d6000803e3d6000fd5b505050506040513d60208110156110cb57600080fd5b505115155b15611165576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611165908490611221565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111f2908490611221565b505050565b610458817f42414c000000000000000000000000000000000000000000000000000000000061133d565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061128a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161124d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112ec576040519150601f19603f3d011682016040523d82523d6000602084013e6112f1565b606091505b50915091506000821415611309573d6000803e3d6000fd5b61133781516000148061132f575081806020019051602081101561132c57600080fd5b50515b6101a2611013565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122009bd824a5488881b18bb43d9f8eaaec1009a177d10b9c51722c401f507c42d0b64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2057 CODESIZE SUB DUP1 PUSH2 0x2057 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xBF JUMP JUMPDEST DUP4 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x4C SWAP1 PUSH2 0xB2 JUMP JUMPDEST PUSH2 0x58 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x11D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x80 MSTORE PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE POP PUSH2 0x158 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x18D8 DUP1 PUSH2 0x77F DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xD4 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 MLOAD PUSH2 0xDF DUP2 PUSH2 0x140 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0xF0 DUP2 PUSH2 0x140 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0x101 DUP2 PUSH2 0x140 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x112 DUP2 PUSH2 0x140 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x601 PUSH2 0x17E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x205 MSTORE POP DUP1 PUSH2 0x1B4 MSTORE POP PUSH2 0x601 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xD8 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xA8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x45D JUMP JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x514 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x194 JUMP JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x488 JUMP JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x203 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x227 JUMP JUMPDEST PUSH2 0xEB PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x43A JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x103 PUSH2 0x2DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0x15A SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x535 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E5 SWAP3 SWAP2 SWAP1 PUSH2 0x4E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x231 PUSH2 0x203 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AE SWAP2 SWAP1 PUSH2 0x4C8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x303 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x384 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x431 SWAP1 PUSH2 0x56F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x44B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x47A DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x499 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x456 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0x22DF29FF90608B283659DBB7EA1070D62546DFCED00D SELFBALANCE PUSH24 0x66E001643F17C364736F6C634300070100336101C0604052 CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x18D8 CODESIZE SUB DUP1 PUSH3 0x18D8 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE DUP6 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 MLOAD SWAP5 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 DUP7 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x11E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x230 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x323 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP2 SHL AND PUSH2 0x1A0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1446 PUSH3 0x492 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x663 MSTORE DUP1 PUSH2 0xD47 MSTORE POP DUP1 PUSH2 0x569 MSTORE DUP1 PUSH2 0xCB9 MSTORE DUP1 PUSH2 0xD97 MSTORE POP DUP1 PUSH2 0x8A0 MSTORE POP DUP1 PUSH2 0x87F MSTORE POP DUP1 PUSH2 0x802 MSTORE DUP1 PUSH2 0x8EC MSTORE POP DUP1 PUSH2 0x3C3 MSTORE DUP1 PUSH2 0x5A3 MSTORE DUP1 PUSH2 0x6A7 MSTORE DUP1 PUSH2 0xADB MSTORE POP DUP1 PUSH2 0x462 MSTORE DUP1 PUSH2 0x790 MSTORE POP DUP1 PUSH2 0x9E2 MSTORE POP DUP1 PUSH2 0xE74 MSTORE DUP1 PUSH2 0xF71 MSTORE POP DUP1 PUSH2 0xC97 MSTORE DUP1 PUSH2 0xD1F MSTORE POP PUSH2 0x1446 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB4921AA3 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB4921AA3 EQ PUSH2 0x2A5 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x308 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xA267B631 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x290 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x23C JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3AB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x45B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x529 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x546 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x552 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x55B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x567 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0x58B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x65C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x661 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA72 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0xAC3 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x44F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x458 DUP2 PUSH2 0xB91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x523 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x503 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC2D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x62F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x68F PUSH2 0xC39 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x733 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x740 PUSH2 0xC52 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA64 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x977 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x83C JUMPI PUSH2 0x977 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x84E DUP4 PUSH2 0x45B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x864 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x91D JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x8C8 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x932 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x824 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x997 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA60 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA60 SWAP1 POP DUP3 PUSH2 0xC7D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x543 PUSH2 0xDFA JUMP JUMPDEST PUSH2 0xA7B DUP2 PUSH2 0xE01 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13B9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC4B PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1013 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xCDE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1021 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x838B252000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP3 DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP4 ADD MSTORE PUSH1 0xC4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP4 AND SWAP3 PUSH4 0x838B2520 SWAP3 PUSH2 0x104 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13ED PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF69 PUSH2 0xC52 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1001 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x100F DUP3 PUSH2 0xB91 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x100F JUMPI PUSH2 0x100F DUP2 PUSH2 0x11F7 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x10D0 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1165 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1165 SWAP1 DUP5 SWAP1 PUSH2 0x1221 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x11F2 SWAP1 DUP5 SWAP1 PUSH2 0x1221 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x458 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x133D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x128A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x124D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x12EC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x12F1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1309 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1337 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x132F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x132C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1013 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122009BD824A5488881B18BB43D9F8EAAEC1 STOP SWAP11 OR PUSH30 0x10B9C51722C401F507C42D0B64736F6C6343000701003300000000000000 ","sourceMap":"902:1135:98:-:0;;;983:351;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1259:5;1054:4:51;-1:-1:-1;;;;;1038:22:51;1030:31;;1186:6:98;1194:20;1216:7;1168:56;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;2049:46:46;;1073:14:51::1;::::0;-1:-1:-1;;;;;;1073:14:51;::::1;::::0;-1:-1:-1;902:1135:98;;-1:-1:-1;;;902:1135:98;;;;;;;;;:::o;709:812:-1:-;;;;;945:3;933:9;924:7;920:23;916:33;913:2;;;-1:-1;;952:12;913:2;637:6;631:13;649:48;691:5;649:48;:::i;:::-;1130:2;1210:22;;445:13;1004:89;;-1:-1;463:63;445:13;463:63;:::i;:::-;1279:2;1354:22;;249:13;1138:104;;-1:-1;267:58;249:13;267:58;:::i;:::-;1423:2;1473:22;;83:13;1287:99;;-1:-1;101:33;83:13;101:33;:::i;:::-;907:614;;;;-1:-1;907:614;;-1:-1;;907:614::o;2024:554::-;-1:-1;;;;;3109:54;;;1744:75;;3109:54;;;2481:2;2466:18;;1744:75;3109:54;;;2564:2;2549:18;;1599:37;2262:2;2247:18;;2233:345::o;3826:117::-;-1:-1;;;;;3109:54;;3885:35;;3875:2;;3934:1;;3924:12;3875:2;3869:74;:::o;:::-;902:1135:98;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":436}],"3611":[{"length":32,"start":517}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80638d928af8116100505780638d928af8146100c8578063aaabadc5146100d0578063ce3cc8bd146100d857610072565b80630ecaea731461007757806339312dee146100a0578063851c1bb3146100a8575b600080fd5b61008a61008536600461045d565b6100f8565b6040516100979190610514565b60405180910390f35b61008a610194565b6100bb6100b6366004610488565b6101b0565b6040516100979190610566565b61008a610203565b61008a610227565b6100eb6100e636600461043a565b6102b3565b604051610097919061055b565b6000806101036102de565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc6879061015a9087908790600401610535565b600060405180830381600087803b15801561017457600080fd5b505af1158015610188573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016101e59291906104e4565b6040516020818303038152906040528051906020012090505b919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610231610203565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ae91906104c8565b905090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6000805481906103039073ffffffffffffffffffffffffffffffffffffffff16610384565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104319061056f565b60405180910390fd5b60006020828403121561044b578081fd5b8135610456816105a6565b9392505050565b6000806040838503121561046f578081fd5b823561047a816105a6565b946020939093013593505050565b600060208284031215610499578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610456578182fd5b6000602082840312156104d9578081fd5b8151610456816105a6565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b5056fea26469706673582212207522df29ff90608b283659dbb7ea1070d62546dfced00d477766e001643f17c364736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xD8 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xA8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x45D JUMP JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x514 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x194 JUMP JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x488 JUMP JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x203 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x227 JUMP JUMPDEST PUSH2 0xEB PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x43A JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x103 PUSH2 0x2DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0x15A SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x535 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E5 SWAP3 SWAP2 SWAP1 PUSH2 0x4E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x231 PUSH2 0x203 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AE SWAP2 SWAP1 PUSH2 0x4C8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x303 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x384 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x431 SWAP1 PUSH2 0x56F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x44B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x47A DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x499 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x456 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0x22DF29FF90608B283659DBB7EA1070D62546DFCED00D SELFBALANCE PUSH24 0x66E001643F17C364736F6C63430007010033000000000000 ","sourceMap":"902:1135:98:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1811:224;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;2607:430:46:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1158:79:51:-;;;:::i;1297:109::-;;;:::i;1507:131:83:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1811:224:98:-;1891:7;1910:13;1926:9;:7;:9::i;:::-;1945:61;;;;;1910:25;;-1:-1:-1;1945:31:98;;;;;;:61;;1977:9;;1988:17;;1945:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2023:5:98;;1811:224;-1:-1:-1;;;;;;1811:224:98:o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;1297:109::-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;1507:131:83:-;1605:26;;1582:4;1605:26;;;:19;:26;;;;;;;;;1507:131::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;595:241:-1;;699:2;687:9;678:7;674:23;670:32;667:2;;;-1:-1;;705:12;667:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;757:63;661:175;-1:-1;;;661:175::o;843:366::-;;;964:2;952:9;943:7;939:23;935:32;932:2;;;-1:-1;;970:12;932:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1022:63;1122:2;1161:22;;;;525:20;;-1:-1;;;926:283::o;1216:239::-;;1319:2;1307:9;1298:7;1294:23;1290:32;1287:2;;;-1:-1;;1325:12;1287:2;221:6;208:20;6097:66;7462:5;6086:78;7438:5;7435:34;7425:2;;-1:-1;;7473:12;1462:303;;1597:2;1585:9;1576:7;1572:23;1568:32;1565:2;;;-1:-1;;1603:12;1565:2;381:6;375:13;393:53;440:5;393:53;:::i;3224:387::-;2074:37;;;6097:66;6086:78;3475:2;3466:12;;2369:56;3575:11;;;3366:245::o;3618:222::-;6367:42;6356:54;;;;1843:37;;3745:2;3730:18;;3716:124::o;3847:333::-;6367:42;6356:54;;;;1843:37;;4166:2;4151:18;;2074:37;4002:2;3987:18;;3973:207::o;4187:210::-;5920:13;;5913:21;1957:34;;4308:2;4293:18;;4279:118::o;4404:222::-;2074:37;;;4531:2;4516:18;;4502:124::o;5161:416::-;5361:2;5375:47;;;2998:2;5346:18;;;5688:19;3034:24;5728:14;;;3014:45;3078:12;;;5332:245::o;7253:117::-;6367:42;7340:5;6356:54;7315:5;7312:35;7302:2;;7361:1;;7351:12;7302:2;7296:74;:::o"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getGaugeImplementation()":"39312dee","getVault()":"8d928af8","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"baseL1StandardBridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseBal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Optimism.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/base/BaseRootGaugeFactory.sol\":\"BaseRootGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\":{\"keccak256\":\"0x31b489cbd755b3c789115af4cf3d7af2da15f59030345ac29ecf26a033fc806a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2cc164ca032440222b7984aebbad6a46a6c82eef33564d1c6d78408bafab9934\",\"dweb:/ipfs/QmdgixtcWUX8CFhrTkUiAAmSkpMG2FsZnK18QywDhFoFcp\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/base/BaseRootGauge.sol\":{\"keccak256\":\"0xb5d997651688c44dc3a3c4407b573aa082015504fb91f972a367fb20cf64d344\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bcc43b88d1a141d008a00834d61d49363e297e79eb1de45ff37a59fa662dbca\",\"dweb:/ipfs/QmThj1XX6AbX2n2ajDDLRtJvDqpKb7eLh5zFQui92UA57H\"]},\"contracts/gauges/base/BaseRootGaugeFactory.sol\":{\"keccak256\":\"0x32d784cf3b2884ebd4dac3f952d8fc8eec689c0059dedca641bfcfcb490bebfc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://974f92159ccd179c8bc49a165f4ba299620dbfc68d5d545b5666947d4354898a\",\"dweb:/ipfs/QmVaHtkQkKoyxswwJ1NcwfgrsYg6XuQaoaJErswarSq8pq\"]}},\"version\":1}"}},"contracts/gauges/ethereum/LiquidityGaugeFactory.sol":{"LiquidityGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161049c38038061049c83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610082565b600060208284031215610065578081fd5b81516001600160a01b038116811461007b578182fd5b9392505050565b61040b806100916000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea26469706673582212203daf8f967dcc867efdfb6d0e2cfdc186bfbc6befe5a6bfc1770da580989a74df64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x49C CODESIZE SUB DUP1 PUSH2 0x49C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x82 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7B JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x40B DUP1 PUSH2 0x91 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATASIZE 0xAF DUP16 SWAP7 PUSH30 0xCC867EFDFB6D0E2CFDC186BFBC6BEFE5A6BFC1770DA580989A74DF64736F PUSH13 0x63430007010033000000000000 ","sourceMap":"876:1072:99:-:0;;;933:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;876:1072:99;;208:325:-1;;354:2;342:9;333:7;329:23;325:32;322:2;;;-1:-1;;360:12;322:2;114:13;;-1:-1;;;;;829:54;;985:66;;975:2;;-1:-1;;1055:12;975:2;412:105;316:217;-1:-1;;;316:217::o;:::-;876:1072:99;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea26469706673582212203daf8f967dcc867efdfb6d0e2cfdc186bfbc6befe5a6bfc1770da580989a74df64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATASIZE 0xAF DUP16 SWAP7 PUSH30 0xCC867EFDFB6D0E2CFDC186BFBC6BEFE5A6BFC1770DA580989A74DF64736F PUSH13 0x63430007010033000000000000 ","sourceMap":"876:1072:99:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1723:223;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;1507:131::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1723:223:99:-;1798:7;1817:13;1833:9;:7;:9::i;:::-;1852:65;;;;;1817:25;;-1:-1:-1;1852:40:99;;;;;;:65;;1893:4;;1899:17;;1852:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1934:5:99;;-1:-1:-1;;;;1723:223:99;;;;;:::o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;1507:131::-;1605:26;;;1582:4;1605:26;;;:19;:26;;;;;;;;1507:131;;;;:::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;5:130:-1;72:20;;3226:42;3215:54;;3419:35;;3409:2;;3468:1;;3458:12;279:241;;383:2;371:9;362:7;358:23;354:32;351:2;;;-1:-1;;389:12;351:2;451:53;496:7;472:22;451:53;:::i;:::-;441:63;345:175;-1:-1;;;345:175::o;527:366::-;;;648:2;636:9;627:7;623:23;619:32;616:2;;;-1:-1;;654:12;616:2;716:53;761:7;737:22;716:53;:::i;:::-;706:63;806:2;845:22;;;;209:20;;-1:-1;;;610:283::o;1582:222::-;3226:42;3215:54;;;;971:37;;1709:2;1694:18;;1680:124::o;1811:333::-;3226:42;3215:54;;;;971:37;;2130:2;2115:18;;1533:37;1966:2;1951:18;;1937:207::o;2151:210::-;3127:13;;3120:21;1085:34;;2272:2;2257:18;;2243:118::o;2368:416::-;2568:2;2582:47;;;1356:2;2553:18;;;2895:19;1392:24;2935:14;;;1372:45;1436:12;;;2539:245::o"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getGaugeImplementation()":"39312dee","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"As anyone can register arbitrary Balancer pools with the Vault, it's impossible to prove onchain that `pool` is a \\\"valid\\\" deployment. Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController. It is possible to deploy multiple gauges for a single pool.\",\"params\":{\"pool\":\"The address of the pool for which to deploy a gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge for a Balancer pool.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ethereum/LiquidityGaugeFactory.sol\":\"LiquidityGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/ethereum/LiquidityGaugeFactory.sol\":{\"keccak256\":\"0xcf22f21f2fcee06675407b96df00fc9167890a19e22bb670908aee9cde9d78e6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://305452e8ea876c922620e55813989a343964ad64644d4b1b991518d895ce7bff\",\"dweb:/ipfs/QmTWvUcehwC9S1kGHtZgdNUSNcp5XcXKm56gteo4orfY8Q\"]}},\"version\":1}"}},"contracts/gauges/ethereum/SingleRecipientGauge.sol":{"SingleRecipientGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"},{"internalType":"bool","name":"feeDistributorRecipient","type":"bool"},{"internalType":"string","name":"version","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRecipientFeeDistributor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101806040523480156200001257600080fd5b5060405162001c3238038062001c32833981810160405260208110156200003857600080fd5b505160408051602081019091526000815281906200005681620003cb565b50600180819055506000816001600160a01b031663e6dec36f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009a57600080fd5b505afa158015620000af573d6000803e3d6000fd5b505050506040513d6020811015620000c657600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010f57600080fd5b505afa15801562000124573d6000803e3d6000fd5b505050506040513d60208110156200013b57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200018457600080fd5b505afa15801562000199573d6000803e3d6000fd5b505050506040513d6020811015620001b057600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200022157600080fd5b505afa15801562000236573d6000803e3d6000fd5b505050506040513d60208110156200024d57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b158015620002a157600080fd5b505afa158015620002b6573d6000803e3d6000fd5b505050506040513d6020811015620002cd57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200031457600080fd5b505afa15801562000329573d6000803e3d6000fd5b505050506040513d60208110156200034057600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038757600080fd5b505afa1580156200039c573d6000803e3d6000fd5b505050506040513d6020811015620003b357600080fd5b50516101605250506000196003555062000480915050565b8051620003e0906000906020840190620003e4565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200042757805160ff191683800117855562000457565b8280016001018555821562000457579182015b82811115620004575782518255916020019190600101906200043a565b506200046592915062000469565b5090565b5b808211156200046557600081556001016200046a565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c61012051610140516101605161171d6200051560003980610ad0525080610aaf525080610a325280610b1c52508061056552806107f652806108d65280610cba52508061060452806109bf525080610c12525080610de35280610ee05250806110b452806110f952806111a3525061171d6000f3fe6080604052600436106100e85760003560e01c806383f5c39b1161008a578063ab8f094511610059578063ab8f0945146103e3578063b0245225146103f8578063c2c4c5c11461040d578063d34fb26714610415576100e8565b806383f5c39b1461038f57806395d666c8146103a45780639c868ac0146103b95780639f867671146103ce576100e8565b806314e956f5116100c657806314e956f5146102495780631b88094d146102735780634b820093146102b157806354fd4d5014610305576100e8565b806306b70aa2146100ed57806309400707146101cd57806310d3eb041461021f575b600080fd5b3480156100f957600080fd5b506101cb6004803603608081101561011057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359160408201351515919081019060808101606082013564010000000081111561015657600080fd5b82018360208201111561016857600080fd5b8035906020019184600183028401116401000000008311171561018a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061042a945050505050565b005b3480156101d957600080fd5b5061020d600480360360208110156101f057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104bf565b60408051918252519081900360200190f35b34801561022b57600080fd5b506101cb6004803603602081101561024257600080fd5b503561054d565b34801561025557600080fd5b5061020d6004803603602081101561026c57600080fd5b50356105fd565b34801561027f57600080fd5b506102886106cb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102bd57600080fd5b506102f1600480360360208110156102d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106e8565b604080519115158252519081900360200190f35b34801561031157600080fd5b5061031a6106ee565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561035457818101518382015260200161033c565b50505050905090810190601f1680156103815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039b57600080fd5b5061020d6107a2565b3480156103b057600080fd5b506102f16107a8565b3480156103c557600080fd5b506102f16107c9565b3480156103da57600080fd5b5061020d6107d2565b3480156103ef57600080fd5b506101cb6107de565b34801561040457600080fd5b5061020d6108af565b6102f16108b4565b34801561042157600080fd5b506101cb610ca2565b61043383610d70565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000841515021790556104b981610f82565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff8216301461054557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060055490565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6105fa81610f95565b50565b60006106c57f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561069157600080fd5b505afa1580156106a5573d6000803e3d6000fd5b505050506040513d60208110156106bb57600080fd5b5051600754611031565b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050905090565b60075490565b60085474010000000000000000000000000000000000000000900460ff1690565b60065460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461088257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b60006108be61103d565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600354600061096f611056565b905080821015610c9457604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b158015610a0657600080fd5b505af1158015610a1a573d6000803e3d6000fd5b505060025460045460019590950194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610ba75784811115610a6c57610ba7565b62093a808102600080610a7e836105fd565b9050828510158015610a9457508262093a800185105b15610b4d57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000890281610af857fe5b04975062093a80819003670de0b6b3a7640000838a02820260028b905560048990557f00000000000000000000000000000000000000000000000000000000000000009098019704939093019250610b629050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610a54565b50600384905560058054830190558115801590610bc7575060065460ff16155b15610c9057604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610c5a57600080fd5b505af1158015610c6e573d6000803e3d6000fd5b505050506040513d6020811015610c8457600080fd5b50610c90905082611081565b5050505b6001925050506106e56111ca565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d4657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60035415610ddf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4757600080fd5b505afa158015610e5b573d6000803e3d6000fd5b505050506040513d6020811015610e7157600080fd5b5051905080610ecb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806116c46024913960400191505060405180910390fd5b6002819055610ed8611056565b6003819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f4657600080fd5b505af1158015610f5a573d6000803e3d6000fd5b505050506040513d6020811015610f7057600080fd5b5051600455610f7e82610f95565b5050565b8051610f7e9060009060208401906115fc565b670de0b6b3a7640000811115610ff6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806116906034913960400191505060405180910390fd5b60078190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b61104f600260015414156101906111d0565b6002600155565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b600061108b6106cb565b90506110956107a8565b15611189576110db73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682846111de565b8073ffffffffffffffffffffffffffffffffffffffff1663338b5dea7f0000000000000000000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561116c57600080fd5b505af1158015611180573d6000803e3d6000fd5b50505050610f7e565b610f7e73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682846113b4565b60018055565b81610f7e57610f7e81611441565b801580159061128d5750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561125e57600080fd5b505afa158015611272573d6000803e3d6000fd5b505050506040513d602081101561128857600080fd5b505115155b15611322576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261132290849061146b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526113af90849061146b565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526113af90849061146b565b6105fa817f42414c0000000000000000000000000000000000000000000000000000000000611581565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106114d457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611497565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611536576040519150601f19603f3d011682016040523d82523d6000602084013e61153b565b606091505b50915091506000821415611553573d6000803e3d6000fd5b6104b9815160001480611579575081806020019051602081101561157657600080fd5b50515b6101a26111d0565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061163d57805160ff191683800117855561166a565b8280016001018555821561166a579182015b8281111561166a57825182559160200191906001019061164f565b5061167692915061167a565b5090565b5b80821115611676576000815560010161167b56fe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a2646970667358221220973f44def5f2f19d45222b55b7017e2ea698584e624d2f66a1d56b2916684fb164736f6c63430007010033","opcodes":"PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1C32 CODESIZE SUB DUP1 PUSH3 0x1C32 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE DUP2 SWAP1 PUSH3 0x56 DUP2 PUSH3 0x3CB JUMP JUMPDEST POP PUSH1 0x1 DUP1 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE6DEC36F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xAF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x124 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x199 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x236 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x329 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x39C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x3 SSTORE POP PUSH3 0x480 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3E0 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x3E4 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x427 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x457 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x457 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x457 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x43A JUMP JUMPDEST POP PUSH3 0x465 SWAP3 SWAP2 POP PUSH3 0x469 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x465 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x46A JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x171D PUSH3 0x515 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xAD0 MSTORE POP DUP1 PUSH2 0xAAF MSTORE POP DUP1 PUSH2 0xA32 MSTORE DUP1 PUSH2 0xB1C MSTORE POP DUP1 PUSH2 0x565 MSTORE DUP1 PUSH2 0x7F6 MSTORE DUP1 PUSH2 0x8D6 MSTORE DUP1 PUSH2 0xCBA MSTORE POP DUP1 PUSH2 0x604 MSTORE DUP1 PUSH2 0x9BF MSTORE POP DUP1 PUSH2 0xC12 MSTORE POP DUP1 PUSH2 0xDE3 MSTORE DUP1 PUSH2 0xEE0 MSTORE POP DUP1 PUSH2 0x10B4 MSTORE DUP1 PUSH2 0x10F9 MSTORE DUP1 PUSH2 0x11A3 MSTORE POP PUSH2 0x171D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x3F8 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x40D JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x415 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x38F JUMPI DUP1 PUSH4 0x95D666C8 EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x3CE JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x305 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x6B70AA2 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x21F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD ISZERO ISZERO SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x42A SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x54D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x6CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31A PUSH2 0x6EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x354 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x33C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x381 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x7A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH2 0x7A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH2 0x7C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x7D2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x7DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x8AF JUMP JUMPDEST PUSH2 0x2F1 PUSH2 0x8B4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0xCA2 JUMP JUMPDEST PUSH2 0x433 DUP4 PUSH2 0xD70 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 DUP5 ISZERO ISZERO MUL OR SWAP1 SSTORE PUSH2 0x4B9 DUP2 PUSH2 0xF82 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x545 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x5 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5FA DUP2 PUSH2 0xF95 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C5 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH2 0x1031 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x798 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x76D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x798 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x77B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x882 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8BE PUSH2 0x103D JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x962 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 PUSH2 0x96F PUSH2 0x1056 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xC94 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA1A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0xBA7 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0xA6C JUMPI PUSH2 0xBA7 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0xA7E DUP4 PUSH2 0x5FD JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xA94 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0xB4D JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0xAF8 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x2 DUP12 SWAP1 SSTORE PUSH1 0x4 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xB62 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0xA54 JUMP JUMPDEST POP PUSH1 0x3 DUP5 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBC7 JUMPI POP PUSH1 0x6 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xC90 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC90 SWAP1 POP DUP3 PUSH2 0x1081 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x6E5 PUSH2 0x11CA JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xD46 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD ISZERO PUSH2 0xDDF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xECB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16C4 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH2 0xED8 PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SSTORE PUSH2 0xF7E DUP3 PUSH2 0xF95 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0xF7E SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x15FC JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xFF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1690 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x104F PUSH1 0x2 PUSH1 0x1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x11D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x108B PUSH2 0x6CB JUMP JUMPDEST SWAP1 POP PUSH2 0x1095 PUSH2 0x7A8 JUMP JUMPDEST ISZERO PUSH2 0x1189 JUMPI PUSH2 0x10DB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 DUP5 PUSH2 0x11DE JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x338B5DEA PUSH32 0x0 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x116C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1180 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xF7E JUMP JUMPDEST PUSH2 0xF7E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 DUP5 PUSH2 0x13B4 JUMP JUMPDEST PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0xF7E JUMPI PUSH2 0xF7E DUP2 PUSH2 0x1441 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x128D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x125E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1272 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1322 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1322 SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13AF SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13AF SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH2 0x5FA DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1581 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x14D4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1497 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1536 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x153B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1553 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x4B9 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1579 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x11D0 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x163D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x166A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x166A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x166A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x164F JUMP JUMPDEST POP PUSH2 0x1676 SWAP3 SWAP2 POP PUSH2 0x167A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1676 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x167B JUMP INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x58221220973F44DEF5F2F19D45222B55B7017E2E 0xA6 SWAP9 PC 0x4E PUSH3 0x4D2F66 LOG1 0xD5 PUSH12 0x2916684FB164736F6C634300 SMOD ADD STOP CALLER ","sourceMap":"986:1485:100:-:0;;;1308:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1308:142:100;949:72:52;;;1308:142:100;949:72:52;;;;;-1:-1:-1;949:72:52;;1308:142:100;;994:20:52;949:72;994:11;:20::i;:::-;949:72;2070:1:63;2175:7;:22;;;;2286:30:89;2339:6;-1:-1:-1;;;;;2339:28:89;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2339:30:89;2398:29;;;-1:-1:-1;2398:29:89;;;;2339:30;;-1:-1:-1;2380:15:89;;-1:-1:-1;2398:27:89;;;-1:-1:-1;;2398:29:89;;;;;2339:30;;2398:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2398:29:89;2472:27;;;-1:-1:-1;2472:27:89;;;;2398:29;;-1:-1:-1;2437:32:89;;-1:-1:-1;2472:25:89;;;;;:27;;;;;2398:29;;2472:27;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2472:27:89;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2472:27;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;2472:27;;2665:23;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2665:23:89;2644:44;;-1:-1:-1;2644:44:89;;;2722:32;;;-1:-1:-1;2722:32:89;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;2665:23;;2722:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2722:32:89;2699:55;;2794:39;;;-1:-1:-1;2794:39:89;;;;-1:-1:-1;2794:37:89;;;-1:-1:-1;;2794:39:89;;;;;2722:32;;2794:39;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:39:89;2764:69;;2863:29;;;-1:-1:-1;2863:29:89;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;2794:39;;2863:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2863:29:89;2843:49;;-1:-1:-1;;;3053:7:89;:27;-1:-1:-1;986:1485:100;;-1:-1:-1;;986:1485:100;1224:94:52;1290:21;;;;:8;;:21;;;;;:::i;:::-;;1224:94;:::o;986:1485:100:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;986:1485:100;;;-1:-1:-1;986:1485:100;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":4276},{"length":32,"start":4345},{"length":32,"start":4515}],"14642":[{"length":32,"start":3555},{"length":32,"start":3808}],"14644":[{"length":32,"start":3090}],"14646":[{"length":32,"start":1540},{"length":32,"start":2495}],"14648":[{"length":32,"start":1381},{"length":32,"start":2038},{"length":32,"start":2262},{"length":32,"start":3258}],"14656":[{"length":32,"start":2610},{"length":32,"start":2844}],"14658":[{"length":32,"start":2735}],"14660":[{"length":32,"start":2768}]},"linkReferences":{},"object":"6080604052600436106100e85760003560e01c806383f5c39b1161008a578063ab8f094511610059578063ab8f0945146103e3578063b0245225146103f8578063c2c4c5c11461040d578063d34fb26714610415576100e8565b806383f5c39b1461038f57806395d666c8146103a45780639c868ac0146103b95780639f867671146103ce576100e8565b806314e956f5116100c657806314e956f5146102495780631b88094d146102735780634b820093146102b157806354fd4d5014610305576100e8565b806306b70aa2146100ed57806309400707146101cd57806310d3eb041461021f575b600080fd5b3480156100f957600080fd5b506101cb6004803603608081101561011057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359160408201351515919081019060808101606082013564010000000081111561015657600080fd5b82018360208201111561016857600080fd5b8035906020019184600183028401116401000000008311171561018a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061042a945050505050565b005b3480156101d957600080fd5b5061020d600480360360208110156101f057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104bf565b60408051918252519081900360200190f35b34801561022b57600080fd5b506101cb6004803603602081101561024257600080fd5b503561054d565b34801561025557600080fd5b5061020d6004803603602081101561026c57600080fd5b50356105fd565b34801561027f57600080fd5b506102886106cb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102bd57600080fd5b506102f1600480360360208110156102d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106e8565b604080519115158252519081900360200190f35b34801561031157600080fd5b5061031a6106ee565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561035457818101518382015260200161033c565b50505050905090810190601f1680156103815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039b57600080fd5b5061020d6107a2565b3480156103b057600080fd5b506102f16107a8565b3480156103c557600080fd5b506102f16107c9565b3480156103da57600080fd5b5061020d6107d2565b3480156103ef57600080fd5b506101cb6107de565b34801561040457600080fd5b5061020d6108af565b6102f16108b4565b34801561042157600080fd5b506101cb610ca2565b61043383610d70565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000841515021790556104b981610f82565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff8216301461054557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060055490565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6105fa81610f95565b50565b60006106c57f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561069157600080fd5b505afa1580156106a5573d6000803e3d6000fd5b505050506040513d60208110156106bb57600080fd5b5051600754611031565b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050905090565b60075490565b60085474010000000000000000000000000000000000000000900460ff1690565b60065460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461088257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b60006108be61103d565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600354600061096f611056565b905080821015610c9457604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b158015610a0657600080fd5b505af1158015610a1a573d6000803e3d6000fd5b505060025460045460019590950194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610ba75784811115610a6c57610ba7565b62093a808102600080610a7e836105fd565b9050828510158015610a9457508262093a800185105b15610b4d57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000890281610af857fe5b04975062093a80819003670de0b6b3a7640000838a02820260028b905560048990557f00000000000000000000000000000000000000000000000000000000000000009098019704939093019250610b629050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610a54565b50600384905560058054830190558115801590610bc7575060065460ff16155b15610c9057604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610c5a57600080fd5b505af1158015610c6e573d6000803e3d6000fd5b505050506040513d6020811015610c8457600080fd5b50610c90905082611081565b5050505b6001925050506106e56111ca565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d4657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60035415610ddf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4757600080fd5b505afa158015610e5b573d6000803e3d6000fd5b505050506040513d6020811015610e7157600080fd5b5051905080610ecb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806116c46024913960400191505060405180910390fd5b6002819055610ed8611056565b6003819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f4657600080fd5b505af1158015610f5a573d6000803e3d6000fd5b505050506040513d6020811015610f7057600080fd5b5051600455610f7e82610f95565b5050565b8051610f7e9060009060208401906115fc565b670de0b6b3a7640000811115610ff6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806116906034913960400191505060405180910390fd5b60078190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b61104f600260015414156101906111d0565b6002600155565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b600061108b6106cb565b90506110956107a8565b15611189576110db73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682846111de565b8073ffffffffffffffffffffffffffffffffffffffff1663338b5dea7f0000000000000000000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561116c57600080fd5b505af1158015611180573d6000803e3d6000fd5b50505050610f7e565b610f7e73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682846113b4565b60018055565b81610f7e57610f7e81611441565b801580159061128d5750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561125e57600080fd5b505afa158015611272573d6000803e3d6000fd5b505050506040513d602081101561128857600080fd5b505115155b15611322576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261132290849061146b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526113af90849061146b565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526113af90849061146b565b6105fa817f42414c0000000000000000000000000000000000000000000000000000000000611581565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106114d457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611497565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611536576040519150601f19603f3d011682016040523d82523d6000602084013e61153b565b606091505b50915091506000821415611553573d6000803e3d6000fd5b6104b9815160001480611579575081806020019051602081101561157657600080fd5b50515b6101a26111d0565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061163d57805160ff191683800117855561166a565b8280016001018555821561166a579182015b8281111561166a57825182559160200191906001019061164f565b5061167692915061167a565b5090565b5b80821115611676576000815560010161167b56fe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a2646970667358221220973f44def5f2f19d45222b55b7017e2ea698584e624d2f66a1d56b2916684fb164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x3F8 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x40D JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x415 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x38F JUMPI DUP1 PUSH4 0x95D666C8 EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x3CE JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x305 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x6B70AA2 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x21F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD ISZERO ISZERO SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x42A SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x54D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x6CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31A PUSH2 0x6EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x354 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x33C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x381 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x7A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH2 0x7A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH2 0x7C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x7D2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x7DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x8AF JUMP JUMPDEST PUSH2 0x2F1 PUSH2 0x8B4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0xCA2 JUMP JUMPDEST PUSH2 0x433 DUP4 PUSH2 0xD70 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 DUP5 ISZERO ISZERO MUL OR SWAP1 SSTORE PUSH2 0x4B9 DUP2 PUSH2 0xF82 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x545 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x5 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5FA DUP2 PUSH2 0xF95 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C5 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH2 0x1031 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x798 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x76D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x798 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x77B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x882 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8BE PUSH2 0x103D JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x962 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 PUSH2 0x96F PUSH2 0x1056 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xC94 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA1A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0xBA7 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0xA6C JUMPI PUSH2 0xBA7 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0xA7E DUP4 PUSH2 0x5FD JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xA94 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0xB4D JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0xAF8 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x2 DUP12 SWAP1 SSTORE PUSH1 0x4 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xB62 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0xA54 JUMP JUMPDEST POP PUSH1 0x3 DUP5 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBC7 JUMPI POP PUSH1 0x6 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xC90 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC90 SWAP1 POP DUP3 PUSH2 0x1081 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x6E5 PUSH2 0x11CA JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xD46 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD ISZERO PUSH2 0xDDF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xECB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16C4 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH2 0xED8 PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SSTORE PUSH2 0xF7E DUP3 PUSH2 0xF95 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0xF7E SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x15FC JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xFF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1690 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x104F PUSH1 0x2 PUSH1 0x1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x11D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x108B PUSH2 0x6CB JUMP JUMPDEST SWAP1 POP PUSH2 0x1095 PUSH2 0x7A8 JUMP JUMPDEST ISZERO PUSH2 0x1189 JUMPI PUSH2 0x10DB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 DUP5 PUSH2 0x11DE JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x338B5DEA PUSH32 0x0 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x116C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1180 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xF7E JUMP JUMPDEST PUSH2 0xF7E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 DUP5 PUSH2 0x13B4 JUMP JUMPDEST PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0xF7E JUMPI PUSH2 0xF7E DUP2 PUSH2 0x1441 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x128D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x125E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1272 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1322 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1322 SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13AF SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13AF SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH2 0x5FA DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1581 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x14D4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1497 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1536 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x153B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1553 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x4B9 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1579 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x11D0 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x163D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x166A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x166A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x166A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x164F JUMP JUMPDEST POP PUSH2 0x1676 SWAP3 SWAP2 POP PUSH2 0x167A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1676 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x167B JUMP INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x58221220973F44DEF5F2F19D45222B55B7017E2E 0xA6 SWAP9 PC 0x4E PUSH3 0x4D2F66 LOG1 0xD5 PUSH12 0x2916684FB164736F6C634300 SMOD ADD STOP CALLER ","sourceMap":"986:1485:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1456:408;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1456:408:100;;-1:-1:-1;1456:408:100;;-1:-1:-1;;;;;1456:408:100:i;:::-;;6895:191:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6895:191:89;;;;:::i;:::-;;;;;;;;;;;;;;;;7513:214;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7513:214:89;;:::i;8159:199::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:199:89;;:::i;1870:97:100:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6789:100:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6789:100:89;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1027:98:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8038:115:89;;;;;;;;;;;;;:::i;1973:112:100:-;;;;;;;;;;;;;:::i;7092:92:89:-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;6394:104::-;;;;;;;;;;;;;:::i;3697:2655::-;;;:::i;7350:157::-;;;;;;;;;;;;;:::i;1456:408:100:-;1694:40;1716:17;1694:21;:40::i;:::-;1745:10;:22;;;;;;;;1777:50;;;;;;;;;;1837:20;1849:7;1837:11;:20::i;:::-;1456:408;;;;:::o;6895:191:89:-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8271:59:89;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;1870:97:100:-;1950:10;;;;1870:97;;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;1027:98:52:-;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:13;;1103:15;;1110:8;;1103:15;;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1027:98;:::o;8038:115:89:-;8128:18;;8038:115;:::o;1973:112:100:-;2054:24;;;;;;;;1973:112::o;7092:92:89:-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6394:104::-;6464:7;6394:104;:::o;3697:2655::-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;;4042:4:::1;4000:48;::::0;::::1;::::0;;;:33:::1;:16;:33;::::0;::::1;::::0;:48;;;;;-1:-1:-1;;4000:48:89;;;;;;;-1:-1:-1;4000:33:89;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;4188:15:::1;::::0;4149:1:::1;4135:15:::0;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5978:38;::::0;;;;;;;5989:10;;5978:38:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;;6246:4:::1;6225:27;::::0;::::1;::::0;;;:12:::1;:7;:12;::::0;::::1;::::0;:27;;;;;::::1;::::0;;;;;;;;-1:-1:-1;6225:12:89;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6270:29:89::1;::::0;-1:-1:-1;6286:12:89;6270:15:::1;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7483:9;:17;;;;;;7350:157::o;3146:545::-;3231:7;;:12;3223:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3428:18:89;;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3601:33:89;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;1224:94:52:-;1290:21;;;;:8;;:21;;;;;:::i;7733:299:89:-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7929:18;:38;;;7982:43;;;;;;;;;;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;2091:378:100:-;2164:17;2184:14;:12;:14::i;:::-;2164:34;;2213:27;:25;:27::i;:::-;2209:254;;;2256:44;:21;:9;:21;2278:9;2289:10;2256:21;:44::i;:::-;2330:9;2314:39;;;2354:9;2365:10;2314:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2209:254;;;2407:45;:22;:9;:22;2430:9;2441:10;2407:22;:45::i;2963:208:63:-;2070:1;3142:22;;2963:208::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;;1256:4;1232:43;;;;:15;:43;;;;;;;;;:15;;;;;;:43;;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1232:43:64;:48;;1218:62;1214:183;;;1332:53;;;;;;;;;;1383:1;1332:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:22;1332:53;;;1296:90;;1324:5;;1296:19;:90::i;:::-;1443:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1466:22;1443:57;;;1407:94;;1435:5;;1407:19;:94::i;:::-;1001:507;;;:::o;1514:214::-;1662:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;1626:19;:95::i;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:64;3143:56;11359:3:31;3134:8:64;:97::i;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256,bool,string)":"06b70aa2","integrate_fraction(address)":"09400707","isRecipientFeeDistributor()":"95d666c8","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"feeDistributorRecipient\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isRecipientFeeDistributor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}},\"version()\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ethereum/SingleRecipientGauge.sol\":\"SingleRecipientGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\":{\"keccak256\":\"0x250e4e6dcde3cf83d4d2822e9593c3138f6518ca95d88a0156a292557605640e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a2596b2242650aade0987677bfee7f4ee1359d588244b03cd1b65542f4f06252\",\"dweb:/ipfs/Qmbrb2Lp6suCPngH9sBzmaDBxET6YD6pBH1T8crGw29Cqi\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0x95fe58d2b75267e6068077264da8f0ce358f0f9e18167ea902bb1d29e9636ad5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8eb074a823f7cd09f9e73f52af4c6d2602b71ec127ca08acb67336f79dfdc79b\",\"dweb:/ipfs/QmbyDXinvkw5P2KBa7menkS6jp8cdWGg1qhAu5CEYi3vdE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/ethereum/SingleRecipientGauge.sol\":{\"keccak256\":\"0x038c254a2fc2c3c1a5114c5e77a7e55e871e93c110d336c140069305a263ff8a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a4201ba41a39d075c7229a314135697976491ce473b4cb94b752689a5d80906\",\"dweb:/ipfs/QmcUfTc42dk64fkhDyt9VE6etGrAawJqdVdgKutX6HuCAS\"]}},\"version\":1}"}},"contracts/gauges/ethereum/SingleRecipientGaugeFactory.sol":{"SingleRecipientGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"string","name":"factoryVersion","type":"string"},{"internalType":"string","name":"productVersion","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"},{"internalType":"bool","name":"feeDistributorRecipient","type":"bool"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProductVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051620025053803806200250583398101604081905261003191610204565b8260405161003e906100c3565b6100489190610282565b604051809103906000f080158015610064573d6000803e3d6000fd5b508261006f816100ac565b50600180546001600160a01b0319166001600160a01b039290921691909117905580516100a39060039060208401906100d1565b50505050610296565b80516100bf9060009060208401906100d1565b5050565b611c3280620008d383390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061011257805160ff191683800117855561013f565b8280016001018555821561013f579182015b8281111561013f578251825591602001919060010190610124565b5061014b92915061014f565b5090565b5b8082111561014b5760008155600101610150565b600082601f830112610174578081fd5b81516001600160401b038082111561018a578283fd5b6040516020601f8401601f19168201810183811183821017156101ab578586fd5b806040525081945083825286818588010111156101c757600080fd5b600092505b838310156101e957858301810151828401820152918201916101cc565b838311156101fa5760008185840101525b5050505092915050565b600080600060608486031215610218578283fd5b83516001600160a01b038116811461022e578384fd5b60208501519093506001600160401b038082111561024a578384fd5b61025687838801610164565b9350604086015191508082111561026b578283fd5b5061027886828701610164565b9150509250925092565b6001600160a01b0391909116815260200190565b61062d80620002a66000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806354fd4d501161005057806354fd4d501461009f57806358e4e2d7146100a7578063ce3cc8bd146100ba57610067565b806318d6186f1461006c57806339312dee1461008a575b600080fd5b6100746100da565b60405161008191906105ad565b60405180910390f35b61009261018e565b604051610081919061053a565b6100746101aa565b6100926100b536600461048d565b610229565b6100cd6100c836600461046b565b6102b7565b60405161008191906105a2565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b820191906000526020600020905b81548152906001019060200180831161016757829003601f168201915b5050505050905090565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b6000806102346102e6565b90508073ffffffffffffffffffffffffffffffffffffffff166306b70aa286868661025d6100da565b6040518563ffffffff1660e01b815260040161027c949392919061055b565b600060405180830381600087803b15801561029657600080fd5b505af11580156102aa573d6000803e3d6000fd5b5092979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff165b919050565b600154600090819061030d9073ffffffffffffffffffffffffffffffffffffffff1661038b565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166102e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610438906105c0565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461046557600080fd5b92915050565b60006020828403121561047c578081fd5b6104868383610441565b9392505050565b6000806000606084860312156104a1578182fd5b6104ab8585610441565b925060208401359150604084013580151581146104c6578182fd5b809150509250925092565b60008151808452815b818110156104f6576020818501810151868301820152016104da565b818111156105075782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8616825284602083015283151560408301526080606083015261059860808301846104d1565b9695505050505050565b901515815260200190565b60006020825261048660208301846104d1565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea26469706673582212200e3ad031883932cd4f567f96a6c34e186b8d6a8aaca794cf036f213311cec5da64736f6c634300070100336101806040523480156200001257600080fd5b5060405162001c3238038062001c32833981810160405260208110156200003857600080fd5b505160408051602081019091526000815281906200005681620003cb565b50600180819055506000816001600160a01b031663e6dec36f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009a57600080fd5b505afa158015620000af573d6000803e3d6000fd5b505050506040513d6020811015620000c657600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010f57600080fd5b505afa15801562000124573d6000803e3d6000fd5b505050506040513d60208110156200013b57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200018457600080fd5b505afa15801562000199573d6000803e3d6000fd5b505050506040513d6020811015620001b057600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200022157600080fd5b505afa15801562000236573d6000803e3d6000fd5b505050506040513d60208110156200024d57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b158015620002a157600080fd5b505afa158015620002b6573d6000803e3d6000fd5b505050506040513d6020811015620002cd57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200031457600080fd5b505afa15801562000329573d6000803e3d6000fd5b505050506040513d60208110156200034057600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038757600080fd5b505afa1580156200039c573d6000803e3d6000fd5b505050506040513d6020811015620003b357600080fd5b50516101605250506000196003555062000480915050565b8051620003e0906000906020840190620003e4565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200042757805160ff191683800117855562000457565b8280016001018555821562000457579182015b82811115620004575782518255916020019190600101906200043a565b506200046592915062000469565b5090565b5b808211156200046557600081556001016200046a565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c61012051610140516101605161171d6200051560003980610ad0525080610aaf525080610a325280610b1c52508061056552806107f652806108d65280610cba52508061060452806109bf525080610c12525080610de35280610ee05250806110b452806110f952806111a3525061171d6000f3fe6080604052600436106100e85760003560e01c806383f5c39b1161008a578063ab8f094511610059578063ab8f0945146103e3578063b0245225146103f8578063c2c4c5c11461040d578063d34fb26714610415576100e8565b806383f5c39b1461038f57806395d666c8146103a45780639c868ac0146103b95780639f867671146103ce576100e8565b806314e956f5116100c657806314e956f5146102495780631b88094d146102735780634b820093146102b157806354fd4d5014610305576100e8565b806306b70aa2146100ed57806309400707146101cd57806310d3eb041461021f575b600080fd5b3480156100f957600080fd5b506101cb6004803603608081101561011057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359160408201351515919081019060808101606082013564010000000081111561015657600080fd5b82018360208201111561016857600080fd5b8035906020019184600183028401116401000000008311171561018a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061042a945050505050565b005b3480156101d957600080fd5b5061020d600480360360208110156101f057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104bf565b60408051918252519081900360200190f35b34801561022b57600080fd5b506101cb6004803603602081101561024257600080fd5b503561054d565b34801561025557600080fd5b5061020d6004803603602081101561026c57600080fd5b50356105fd565b34801561027f57600080fd5b506102886106cb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102bd57600080fd5b506102f1600480360360208110156102d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106e8565b604080519115158252519081900360200190f35b34801561031157600080fd5b5061031a6106ee565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561035457818101518382015260200161033c565b50505050905090810190601f1680156103815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039b57600080fd5b5061020d6107a2565b3480156103b057600080fd5b506102f16107a8565b3480156103c557600080fd5b506102f16107c9565b3480156103da57600080fd5b5061020d6107d2565b3480156103ef57600080fd5b506101cb6107de565b34801561040457600080fd5b5061020d6108af565b6102f16108b4565b34801561042157600080fd5b506101cb610ca2565b61043383610d70565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000841515021790556104b981610f82565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff8216301461054557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060055490565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6105fa81610f95565b50565b60006106c57f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561069157600080fd5b505afa1580156106a5573d6000803e3d6000fd5b505050506040513d60208110156106bb57600080fd5b5051600754611031565b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050905090565b60075490565b60085474010000000000000000000000000000000000000000900460ff1690565b60065460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461088257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b60006108be61103d565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600354600061096f611056565b905080821015610c9457604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b158015610a0657600080fd5b505af1158015610a1a573d6000803e3d6000fd5b505060025460045460019590950194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610ba75784811115610a6c57610ba7565b62093a808102600080610a7e836105fd565b9050828510158015610a9457508262093a800185105b15610b4d57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000890281610af857fe5b04975062093a80819003670de0b6b3a7640000838a02820260028b905560048990557f00000000000000000000000000000000000000000000000000000000000000009098019704939093019250610b629050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610a54565b50600384905560058054830190558115801590610bc7575060065460ff16155b15610c9057604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610c5a57600080fd5b505af1158015610c6e573d6000803e3d6000fd5b505050506040513d6020811015610c8457600080fd5b50610c90905082611081565b5050505b6001925050506106e56111ca565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d4657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60035415610ddf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4757600080fd5b505afa158015610e5b573d6000803e3d6000fd5b505050506040513d6020811015610e7157600080fd5b5051905080610ecb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806116c46024913960400191505060405180910390fd5b6002819055610ed8611056565b6003819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f4657600080fd5b505af1158015610f5a573d6000803e3d6000fd5b505050506040513d6020811015610f7057600080fd5b5051600455610f7e82610f95565b5050565b8051610f7e9060009060208401906115fc565b670de0b6b3a7640000811115610ff6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806116906034913960400191505060405180910390fd5b60078190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b61104f600260015414156101906111d0565b6002600155565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b600061108b6106cb565b90506110956107a8565b15611189576110db73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682846111de565b8073ffffffffffffffffffffffffffffffffffffffff1663338b5dea7f0000000000000000000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561116c57600080fd5b505af1158015611180573d6000803e3d6000fd5b50505050610f7e565b610f7e73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682846113b4565b60018055565b81610f7e57610f7e81611441565b801580159061128d5750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561125e57600080fd5b505afa158015611272573d6000803e3d6000fd5b505050506040513d602081101561128857600080fd5b505115155b15611322576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261132290849061146b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526113af90849061146b565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526113af90849061146b565b6105fa817f42414c0000000000000000000000000000000000000000000000000000000000611581565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106114d457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611497565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611536576040519150601f19603f3d011682016040523d82523d6000602084013e61153b565b606091505b50915091506000821415611553573d6000803e3d6000fd5b6104b9815160001480611579575081806020019051602081101561157657600080fd5b50515b6101a26111d0565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061163d57805160ff191683800117855561166a565b8280016001018555821561166a579182015b8281111561166a57825182559160200191906001019061164f565b5061167692915061167a565b5090565b5b80821115611676576000815560010161167b56fe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a2646970667358221220973f44def5f2f19d45222b55b7017e2ea698584e624d2f66a1d56b2916684fb164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2505 CODESIZE SUB DUP1 PUSH3 0x2505 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x31 SWAP2 PUSH2 0x204 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x3E SWAP1 PUSH2 0xC3 JUMP JUMPDEST PUSH2 0x48 SWAP2 SWAP1 PUSH2 0x282 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x64 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP DUP3 PUSH2 0x6F DUP2 PUSH2 0xAC JUMP JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 MLOAD PUSH2 0xA3 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xD1 JUMP JUMPDEST POP POP POP POP PUSH2 0x296 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xBF SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xD1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1C32 DUP1 PUSH3 0x8D3 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x112 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x13F JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x13F JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x13F JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x124 JUMP JUMPDEST POP PUSH2 0x14B SWAP3 SWAP2 POP PUSH2 0x14F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x150 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x174 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x18A JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND DUP3 ADD DUP2 ADD DUP4 DUP2 GT DUP4 DUP3 LT OR ISZERO PUSH2 0x1AB JUMPI DUP6 DUP7 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP2 SWAP5 POP DUP4 DUP3 MSTORE DUP7 DUP2 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH2 0x1E9 JUMPI DUP6 DUP4 ADD DUP2 ADD MLOAD DUP3 DUP5 ADD DUP3 ADD MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x1CC JUMP JUMPDEST DUP4 DUP4 GT ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP2 DUP6 DUP5 ADD ADD MSTORE JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x218 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x22E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x24A JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x256 DUP8 DUP4 DUP9 ADD PUSH2 0x164 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x26B JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x278 DUP7 DUP3 DUP8 ADD PUSH2 0x164 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x62D DUP1 PUSH3 0x2A6 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x58E4E2D7 EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xBA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x18D6186F EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x5AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x92 PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x53A JUMP JUMPDEST PUSH2 0x74 PUSH2 0x1AA JUMP JUMPDEST PUSH2 0x92 PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x48D JUMP JUMPDEST PUSH2 0x229 JUMP JUMPDEST PUSH2 0xCD PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0x46B JUMP JUMPDEST PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x167 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x234 PUSH2 0x2E6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6B70AA2 DUP7 DUP7 DUP7 PUSH2 0x25D PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27C SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x30D SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x38B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x438 SWAP1 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47C JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x486 DUP4 DUP4 PUSH2 0x441 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4AB DUP6 DUP6 PUSH2 0x441 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4C6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x4DA JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x507 JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP3 MSTORE DUP5 PUSH1 0x20 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x598 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4D1 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x486 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4D1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE GASPRICE 0xD0 BALANCE DUP9 CODECOPY ORIGIN 0xCD 0x4F JUMP PUSH32 0x96A6C34E186B8D6A8AACA794CF036F213311CEC5DA64736F6C63430007010033 PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1C32 CODESIZE SUB DUP1 PUSH3 0x1C32 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE DUP2 SWAP1 PUSH3 0x56 DUP2 PUSH3 0x3CB JUMP JUMPDEST POP PUSH1 0x1 DUP1 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE6DEC36F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xAF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x124 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x199 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x236 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x329 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x39C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x3 SSTORE POP PUSH3 0x480 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3E0 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x3E4 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x427 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x457 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x457 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x457 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x43A JUMP JUMPDEST POP PUSH3 0x465 SWAP3 SWAP2 POP PUSH3 0x469 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x465 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x46A JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x171D PUSH3 0x515 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xAD0 MSTORE POP DUP1 PUSH2 0xAAF MSTORE POP DUP1 PUSH2 0xA32 MSTORE DUP1 PUSH2 0xB1C MSTORE POP DUP1 PUSH2 0x565 MSTORE DUP1 PUSH2 0x7F6 MSTORE DUP1 PUSH2 0x8D6 MSTORE DUP1 PUSH2 0xCBA MSTORE POP DUP1 PUSH2 0x604 MSTORE DUP1 PUSH2 0x9BF MSTORE POP DUP1 PUSH2 0xC12 MSTORE POP DUP1 PUSH2 0xDE3 MSTORE DUP1 PUSH2 0xEE0 MSTORE POP DUP1 PUSH2 0x10B4 MSTORE DUP1 PUSH2 0x10F9 MSTORE DUP1 PUSH2 0x11A3 MSTORE POP PUSH2 0x171D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x3F8 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x40D JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x415 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x38F JUMPI DUP1 PUSH4 0x95D666C8 EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x3CE JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x305 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x6B70AA2 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x21F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD ISZERO ISZERO SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x42A SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x54D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x6CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31A PUSH2 0x6EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x354 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x33C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x381 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x7A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH2 0x7A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH2 0x7C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x7D2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x7DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x8AF JUMP JUMPDEST PUSH2 0x2F1 PUSH2 0x8B4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0xCA2 JUMP JUMPDEST PUSH2 0x433 DUP4 PUSH2 0xD70 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 DUP5 ISZERO ISZERO MUL OR SWAP1 SSTORE PUSH2 0x4B9 DUP2 PUSH2 0xF82 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x545 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x5 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5FA DUP2 PUSH2 0xF95 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C5 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH2 0x1031 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x798 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x76D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x798 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x77B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x882 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8BE PUSH2 0x103D JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x962 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 PUSH2 0x96F PUSH2 0x1056 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xC94 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA1A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0xBA7 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0xA6C JUMPI PUSH2 0xBA7 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0xA7E DUP4 PUSH2 0x5FD JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xA94 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0xB4D JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0xAF8 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x2 DUP12 SWAP1 SSTORE PUSH1 0x4 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xB62 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0xA54 JUMP JUMPDEST POP PUSH1 0x3 DUP5 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBC7 JUMPI POP PUSH1 0x6 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xC90 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC90 SWAP1 POP DUP3 PUSH2 0x1081 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x6E5 PUSH2 0x11CA JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xD46 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD ISZERO PUSH2 0xDDF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xECB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16C4 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH2 0xED8 PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SSTORE PUSH2 0xF7E DUP3 PUSH2 0xF95 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0xF7E SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x15FC JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xFF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1690 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x104F PUSH1 0x2 PUSH1 0x1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x11D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x108B PUSH2 0x6CB JUMP JUMPDEST SWAP1 POP PUSH2 0x1095 PUSH2 0x7A8 JUMP JUMPDEST ISZERO PUSH2 0x1189 JUMPI PUSH2 0x10DB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 DUP5 PUSH2 0x11DE JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x338B5DEA PUSH32 0x0 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x116C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1180 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xF7E JUMP JUMPDEST PUSH2 0xF7E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 DUP5 PUSH2 0x13B4 JUMP JUMPDEST PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0xF7E JUMPI PUSH2 0xF7E DUP2 PUSH2 0x1441 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x128D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x125E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1272 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1322 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1322 SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13AF SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13AF SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH2 0x5FA DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1581 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x14D4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1497 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1536 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x153B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1553 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x4B9 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1579 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x11D0 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x163D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x166A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x166A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x166A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x164F JUMP JUMPDEST POP PUSH2 0x1676 SWAP3 SWAP2 POP PUSH2 0x167A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1676 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x167B JUMP INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x58221220973F44DEF5F2F19D45222B55B7017E2E 0xA6 SWAP9 PC 0x4E PUSH3 0x4D2F66 LOG1 0xD5 PUSH12 0x2916684FB164736F6C634300 SMOD ADD STOP CALLER ","sourceMap":"819:1512:101:-:0;;;928:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1135:6;1110:32;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1069:14:101;994:20:52;1069:14:101;994:11:52;:20::i;:::-;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;1155:32:101;;::::2;::::0;:15:::2;::::0;:32:::2;::::0;::::2;::::0;::::2;:::i;:::-;;928:266:::0;;;819:1512;;1224:94:52;1290:21;;;;:8;;:21;;;;;:::i;:::-;;1224:94;:::o;819:1512:101:-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;819:1512:101;;;-1:-1:-1;819:1512:101;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;207:444:-1;;320:3;313:4;305:6;301:17;297:27;287:2;;-1:-1;;328:12;287:2;362:13;;-1:-1;;;;;2337:30;;;2334:2;;;-1:-1;;2370:12;2334:2;2003;1997:9;2511:4;2443:9;2424:17;;-1:-1;;2420:33;2029:17;;;;2089:34;;;2125:22;;;2086:62;2083:2;;;-1:-1;;2151:12;2083:2;2181:10;2003:2;2170:22;;381:74;;;475:6;468:5;461:21;579:3;2511:4;570:6;503;561:16;;558:25;555:2;;;596:1;;586:12;555:2;3286:1;3277:10;;3293:101;3307:6;3304:1;3301:13;3293:101;;;3374:11;;;;;3368:18;3355:11;;;;;3348:39;3322:10;;;;3293:101;;;3409:6;3406:1;3403:13;3400:2;;;3286:1;2511:4;3465:6;537:5;3456:16;;3449:27;3400:2;;;;;280:371;;;;:::o;659:793::-;;;;858:2;846:9;837:7;833:23;829:32;826:2;;;-1:-1;;864:12;826:2;113:13;;-1:-1;;;;;2821:54;;3586:65;;3576:2;;-1:-1;;3655:12;3576:2;1078;1063:18;;1057:25;916:104;;-1:-1;;;;;;1091:30;;;1088:2;;;-1:-1;;1124:12;1088:2;1154:74;1220:7;1211:6;1200:9;1196:22;1154:74;:::i;:::-;1144:84;;1286:2;1275:9;1271:18;1265:25;1251:39;;1102:18;1302:6;1299:30;1296:2;;;-1:-1;;1332:12;1296:2;;1362:74;1428:7;1419:6;1408:9;1404:22;1362:74;:::i;:::-;1352:84;;;820:632;;;;;:::o;1652:282::-;-1:-1;;;;;2821:54;;;;1560:80;;1809:2;1794:18;;1780:154::o;:::-;819:1512:101;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c806354fd4d501161005057806354fd4d501461009f57806358e4e2d7146100a7578063ce3cc8bd146100ba57610067565b806318d6186f1461006c57806339312dee1461008a575b600080fd5b6100746100da565b60405161008191906105ad565b60405180910390f35b61009261018e565b604051610081919061053a565b6100746101aa565b6100926100b536600461048d565b610229565b6100cd6100c836600461046b565b6102b7565b60405161008191906105a2565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b820191906000526020600020905b81548152906001019060200180831161016757829003601f168201915b5050505050905090565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b6000806102346102e6565b90508073ffffffffffffffffffffffffffffffffffffffff166306b70aa286868661025d6100da565b6040518563ffffffff1660e01b815260040161027c949392919061055b565b600060405180830381600087803b15801561029657600080fd5b505af11580156102aa573d6000803e3d6000fd5b5092979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff165b919050565b600154600090819061030d9073ffffffffffffffffffffffffffffffffffffffff1661038b565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166102e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610438906105c0565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461046557600080fd5b92915050565b60006020828403121561047c578081fd5b6104868383610441565b9392505050565b6000806000606084860312156104a1578182fd5b6104ab8585610441565b925060208401359150604084013580151581146104c6578182fd5b809150509250925092565b60008151808452815b818110156104f6576020818501810151868301820152016104da565b818111156105075782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8616825284602083015283151560408301526080606083015261059860808301846104d1565b9695505050505050565b901515815260200190565b60006020825261048660208301846104d1565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea26469706673582212200e3ad031883932cd4f567f96a6c34e186b8d6a8aaca794cf036f213311cec5da64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x58E4E2D7 EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xBA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x18D6186F EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x5AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x92 PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x53A JUMP JUMPDEST PUSH2 0x74 PUSH2 0x1AA JUMP JUMPDEST PUSH2 0x92 PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x48D JUMP JUMPDEST PUSH2 0x229 JUMP JUMPDEST PUSH2 0xCD PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0x46B JUMP JUMPDEST PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x167 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x234 PUSH2 0x2E6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6B70AA2 DUP7 DUP7 DUP7 PUSH2 0x25D PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27C SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x30D SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x38B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x438 SWAP1 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47C JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x486 DUP4 DUP4 PUSH2 0x441 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4AB DUP6 DUP6 PUSH2 0x441 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4C6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x4DA JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x507 JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP3 MSTORE DUP5 PUSH1 0x20 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x598 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4D1 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x486 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4D1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE GASPRICE 0xD0 BALANCE DUP9 CODECOPY ORIGIN 0xCD 0x4F JUMP PUSH32 0x96A6C34E186B8D6A8AACA794CF036F213311CEC5DA64736F6C63430007010033 ","sourceMap":"819:1512:101:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1200:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;:::-;;;;;;;:::i;1027:98:52:-;;;:::i;1934:395:101:-;;;;;;:::i;:::-;;:::i;1507:131:83:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1200:104:101:-;1282:15;1275:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1250:13;;1275:22;;1282:15;;1275:22;;1282:15;1275:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1200:104;:::o;1309:108:83:-;1390:20;;;;1309:108;:::o;1027:98:52:-;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:13;;1103:15;;1110:8;;1103:15;;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;1934:395:101;2074:7;2093:13;2109:9;:7;:9::i;:::-;2093:25;;2149:5;2128:38;;;2180:9;2203:17;2234:23;2271:19;:17;:19::i;:::-;2128:172;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2317:5:101;;1934:395;-1:-1:-1;;;;;;;1934:395:101:o;1507:131:83:-;1605:26;;;1582:4;1605:26;;;:19;:26;;;;;;;;1507:131;;;;:::o;1854:214::-;1939:20;;1891:7;;;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;:19;:26;;;;;;:33;;;;2000:4;1971:33;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;5:130:-1;72:20;;4575:42;4564:54;;5150:35;;5140:2;;5199:1;;5189:12;5140:2;57:78;;;;:::o;410:241::-;;514:2;502:9;493:7;489:23;485:32;482:2;;;-1:-1;;520:12;482:2;582:53;627:7;603:22;582:53;:::i;:::-;572:63;476:175;-1:-1;;;476:175::o;658:485::-;;;;793:2;781:9;772:7;768:23;764:32;761:2;;;-1:-1;;799:12;761:2;861:53;906:7;882:22;861:53;:::i;:::-;851:63;;951:2;994:9;990:22;340:20;959:63;;1059:2;1099:9;1095:22;206:20;5296:5;4476:13;4469:21;5274:5;5271:32;5261:2;;-1:-1;;5307:12;5261:2;1067:60;;;;755:388;;;;;:::o;1381:347::-;;1526:5;4099:12;4256:6;4251:3;4244:19;-1:-1;4782:101;4796:6;4793:1;4790:13;4782:101;;;4293:4;4863:11;;;;;4857:18;4844:11;;;;;4837:39;4811:10;4782:101;;;4898:6;4895:1;4892:13;4889:2;;;-1:-1;4293:4;4954:6;4288:3;4945:16;;4938:27;4889:2;-1:-1;5074:2;5054:14;5070:7;5050:28;1684:39;;;;4293:4;1684:39;;1473:255;-1:-1;;1473:255::o;2186:222::-;4575:42;4564:54;;;;1221:37;;2313:2;2298:18;;2284:124::o;2415:632::-;;4575:42;4568:5;4564:54;1228:3;1221:37;2167:5;2805:2;2794:9;2790:18;2137:37;1362:5;4476:13;4469:21;2882:2;2871:9;2867:18;1335:34;2640:3;2919:2;2908:9;2904:18;2897:48;2959:78;2640:3;2629:9;2625:19;3023:6;2959:78;:::i;:::-;2951:86;2611:436;-1:-1;;;;;;2611:436::o;3054:210::-;4476:13;;4469:21;1335:34;;3175:2;3160:18;;3146:118::o;3271:310::-;;3418:2;3439:17;3432:47;3493:78;3418:2;3407:9;3403:18;3557:6;3493:78;:::i;3588:416::-;3788:2;3802:47;;;1960:2;3773:18;;;4244:19;1996:24;4284:14;;;1976:45;2040:12;;;3759:245::o"},"methodIdentifiers":{"create(address,uint256,bool)":"58e4e2d7","getGaugeImplementation()":"39312dee","getProductVersion()":"18d6186f","isGaugeFromFactory(address)":"ce3cc8bd","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"factoryVersion\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"productVersion\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"feeDistributorRecipient\",\"type\":\"bool\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProductVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256,bool)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"feeDistributorRecipient\":\"True if the recipient implements the IFeeDistributor interface and should receive tokens via the `depositToken` function.\",\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}},\"version()\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256,bool)\":{\"notice\":\"Deploys a new gauge which sends all of its BAL allowance to a single recipient.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ethereum/SingleRecipientGaugeFactory.sol\":\"SingleRecipientGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\":{\"keccak256\":\"0x250e4e6dcde3cf83d4d2822e9593c3138f6518ca95d88a0156a292557605640e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a2596b2242650aade0987677bfee7f4ee1359d588244b03cd1b65542f4f06252\",\"dweb:/ipfs/Qmbrb2Lp6suCPngH9sBzmaDBxET6YD6pBH1T8crGw29Cqi\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0x95fe58d2b75267e6068077264da8f0ce358f0f9e18167ea902bb1d29e9636ad5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8eb074a823f7cd09f9e73f52af4c6d2602b71ec127ca08acb67336f79dfdc79b\",\"dweb:/ipfs/QmbyDXinvkw5P2KBa7menkS6jp8cdWGg1qhAu5CEYi3vdE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/ethereum/SingleRecipientGauge.sol\":{\"keccak256\":\"0x038c254a2fc2c3c1a5114c5e77a7e55e871e93c110d336c140069305a263ff8a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a4201ba41a39d075c7229a314135697976491ce473b4cb94b752689a5d80906\",\"dweb:/ipfs/QmcUfTc42dk64fkhDyt9VE6etGrAawJqdVdgKutX6HuCAS\"]},\"contracts/gauges/ethereum/SingleRecipientGaugeFactory.sol\":{\"keccak256\":\"0x8395531df14d64bd32a02a9ec9ea82d24b48dc11eb032679780cb17895082e44\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b9fdf2c73aa6546625bcfb77ff6f68edf6b4a1a7f399a3a6deffadf1ef3c2796\",\"dweb:/ipfs/QmXNE7GtiZvMLstahBrALg7FqZ5jCgZLhNKQMs8dkqAf86\"]}},\"version\":1}"}},"contracts/gauges/gnosis/GnosisRootGauge.sol":{"GnosisRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IGnosisBridge","name":"gnosisBridge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGnosisBridge","outputs":[{"internalType":"contract IGnosisBridge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101a06040523480156200001257600080fd5b50604051620015a6380380620015a6833981810160405260408110156200003857600080fd5b508051602091820151600160009081556040805163e6dec36f60e01b815290519394929385936001600160a01b0385169263e6dec36f9260048083019392829003018186803b1580156200008b57600080fd5b505afa158015620000a0573d6000803e3d6000fd5b505050506040513d6020811015620000b757600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010057600080fd5b505afa15801562000115573d6000803e3d6000fd5b505050506040513d60208110156200012c57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017557600080fd5b505afa1580156200018a573d6000803e3d6000fd5b505050506040513d6020811015620001a157600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021257600080fd5b505afa15801562000227573d6000803e3d6000fd5b505050506040513d60208110156200023e57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d6020811015620002be57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030557600080fd5b505afa1580156200031a573d6000803e3d6000fd5b505050506040513d60208110156200033157600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200037857600080fd5b505afa1580156200038d573d6000803e3d6000fd5b505050506040513d6020811015620003a457600080fd5b505161016052505060001960025550506001600160601b031960609190911b16610180525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c611136620004706000398061061a5280610c775280610d9052508061085c52508061083b5250806107be52806108a85250806103a3528061055f52806106635280610a97525080610442528061074c52508061099e525080610e6f5280610f6c525080610c3b5280610d5752506111366000f3fe6080604052600436106100dd5760003560e01c80639f8676711161007f578063b024522511610059578063b024522514610285578063c2c4c5c11461029a578063cd6dc687146102a2578063d34fb267146102e8576100dd565b80639f86767114610246578063ab8f09451461025b578063ae35ebfb14610270576100dd565b80631b88094d116100bb5780631b88094d1461018a5780634b820093146101c857806383f5c39b1461021c5780639c868ac014610231576100dd565b806309400707146100e257806310d3eb041461013457806314e956f514610160575b600080fd5b3480156100ee57600080fd5b506101226004803603602081101561010557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102fd565b60408051918252519081900360200190f35b34801561014057600080fd5b5061015e6004803603602081101561015757600080fd5b503561038b565b005b34801561016c57600080fd5b506101226004803603602081101561018357600080fd5b503561043b565b34801561019657600080fd5b5061019f610509565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101d457600080fd5b50610208600480360360208110156101eb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610526565b604080519115158252519081900360200190f35b34801561022857600080fd5b5061012261052c565b34801561023d57600080fd5b50610208610532565b34801561025257600080fd5b5061012261053b565b34801561026757600080fd5b5061015e610547565b34801561027c57600080fd5b5061019f610618565b34801561029157600080fd5b5061012261063c565b610208610641565b3480156102ae57600080fd5b5061015e600480360360408110156102c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2e565b3480156102f457600080fd5b5061015e610a7f565b600073ffffffffffffffffffffffffffffffffffffffff8216301461038357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461042f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61043881610b4d565b50565b60006105037f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104cf57600080fd5b505afa1580156104e3573d6000803e3d6000fd5b505050506040513d60208110156104f957600080fd5b5051600654610be9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7f000000000000000000000000000000000000000000000000000000000000000090565b600090565b600061064b610bf5565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106fc610c0e565b905080821015610a2057604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561079357600080fd5b505af11580156107a7573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561093357848111156107f857610933565b62093a80810260008061080a8361043b565b905082851015801561082057508262093a800185105b156108d957828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088457fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ee9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107e0565b50600284905560048054830190558115801590610953575060055460ff16155b15610a1c57604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e657600080fd5b505af11580156109fa573d6000803e3d6000fd5b505050506040513d6020811015610a1057600080fd5b50610a1c905082610c39565b5050505b600192505050610523610df5565b610a3781610dfc565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806110a96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c076002600054141561019061100e565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610cea57600080fd5b505af1158015610cfe573d6000803e3d6000fd5b505050506040513d6020811015610d1457600080fd5b5050600754604080517fad58bdd100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015292831660248201526044810184905290517f00000000000000000000000000000000000000000000000000000000000000009092169163ad58bdd19160648082019260009290919082900301818387803b158015610dda57600080fd5b505af1158015610dee573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e6b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed357600080fd5b505afa158015610ee7573d6000803e3d6000fd5b505050506040513d6020811015610efd57600080fd5b5051905080610f57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110dd6024913960400191505060405180910390fd5b6001819055610f64610c0e565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fd257600080fd5b505af1158015610fe6573d6000803e3d6000fd5b505050506040513d6020811015610ffc57600080fd5b505160035561100a82610b4d565b5050565b8161100a577f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261100a918391610438917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122060a2d08b373e5e014ebd6ba6ff04d22a6ab7995ff241270822bfbd4d528cd79c64736f6c63430007010033","opcodes":"PUSH2 0x1A0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x15A6 CODESIZE SUB DUP1 PUSH3 0x15A6 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 DUP6 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x18A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x227 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x31A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x38D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH2 0x180 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1136 PUSH3 0x470 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x61A MSTORE DUP1 PUSH2 0xC77 MSTORE DUP1 PUSH2 0xD90 MSTORE POP DUP1 PUSH2 0x85C MSTORE POP DUP1 PUSH2 0x83B MSTORE POP DUP1 PUSH2 0x7BE MSTORE DUP1 PUSH2 0x8A8 MSTORE POP DUP1 PUSH2 0x3A3 MSTORE DUP1 PUSH2 0x55F MSTORE DUP1 PUSH2 0x663 MSTORE DUP1 PUSH2 0xA97 MSTORE POP DUP1 PUSH2 0x442 MSTORE DUP1 PUSH2 0x74C MSTORE POP DUP1 PUSH2 0x99E MSTORE POP DUP1 PUSH2 0xE6F MSTORE DUP1 PUSH2 0xF6C MSTORE POP DUP1 PUSH2 0xC3B MSTORE DUP1 PUSH2 0xD57 MSTORE POP PUSH2 0x1136 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2E8 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xAE35EBFB EQ PUSH2 0x270 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x231 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x160 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x38B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x43B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19F PUSH2 0x509 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x52C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x53B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH2 0x547 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19F PUSH2 0x618 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x208 PUSH2 0x641 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH2 0xA7F JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x383 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x42F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x438 DUP2 PUSH2 0xB4D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x503 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xBE9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64B PUSH2 0xBF5 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6FC PUSH2 0xC0E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x933 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI PUSH2 0x933 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x80A DUP4 PUSH2 0x43B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x820 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D9 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x884 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EE SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x953 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA1C SWAP1 POP DUP3 PUSH2 0xC39 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x523 PUSH2 0xDF5 JUMP JUMPDEST PUSH2 0xA37 DUP2 PUSH2 0xDFC JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10A9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC07 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x100E JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH32 0x0 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xAD58BDD100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xAD58BDD1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDEE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE6B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF57 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10DD PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF64 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x100A DUP3 PUSH2 0xB4D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x100A JUMPI PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x100A SWAP2 DUP4 SWAP2 PUSH2 0x438 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122060A2D08B373E5E014EBD6BA6FF04D22A PUSH11 0xB7995FF241270822BFBD4D MSTORE DUP13 0xD7 SWAP13 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"889:1114:102:-:0;;;1140:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1140:139:102;;;;;;;2070:1:63;2175:7;:22;;;1140:139:102;2339:30:89;;-1:-1:-1;2339:30:89;;;;1140:139:102;;;;;;-1:-1:-1;2339:28:89;;;-1:-1:-1;;2339:30:89;;;;;1140:139:102;2339:30:89;;;;;:28;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2339:30:89;2398:29;;;-1:-1:-1;2398:29:89;;;;2339:30;;-1:-1:-1;2380:15:89;;-1:-1:-1;2398:27:89;;;-1:-1:-1;;2398:29:89;;;;;2339:30;;2398:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2398:29:89;2472:27;;;-1:-1:-1;2472:27:89;;;;2398:29;;-1:-1:-1;2437:32:89;;-1:-1:-1;2472:25:89;;;;;:27;;;;;2398:29;;2472:27;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2472:27:89;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2472:27;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;2472:27;;2665:23;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2665:23:89;2644:44;;-1:-1:-1;2644:44:89;;;2722:32;;;-1:-1:-1;2722:32:89;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;2665:23;;2722:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2722:32:89;2699:55;;2794:39;;;-1:-1:-1;2794:39:89;;;;-1:-1:-1;2794:37:89;;;-1:-1:-1;;2794:39:89;;;;;2722:32;;2794:39;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:39:89;2764:69;;2863:29;;;-1:-1:-1;2863:29:89;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;2794:39;;2863:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2863:29:89;2843:49;;-1:-1:-1;;;;3053:7:89;:27;-1:-1:-1;;;;;;;;1244:28:102::1;::::0;;;;;::::1;::::0;-1:-1:-1;889:1114:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":3131},{"length":32,"start":3415}],"14642":[{"length":32,"start":3695},{"length":32,"start":3948}],"14644":[{"length":32,"start":2462}],"14646":[{"length":32,"start":1090},{"length":32,"start":1868}],"14648":[{"length":32,"start":931},{"length":32,"start":1375},{"length":32,"start":1635},{"length":32,"start":2711}],"14656":[{"length":32,"start":1982},{"length":32,"start":2216}],"14658":[{"length":32,"start":2107}],"14660":[{"length":32,"start":2140}],"17544":[{"length":32,"start":1562},{"length":32,"start":3191},{"length":32,"start":3472}]},"linkReferences":{},"object":"6080604052600436106100dd5760003560e01c80639f8676711161007f578063b024522511610059578063b024522514610285578063c2c4c5c11461029a578063cd6dc687146102a2578063d34fb267146102e8576100dd565b80639f86767114610246578063ab8f09451461025b578063ae35ebfb14610270576100dd565b80631b88094d116100bb5780631b88094d1461018a5780634b820093146101c857806383f5c39b1461021c5780639c868ac014610231576100dd565b806309400707146100e257806310d3eb041461013457806314e956f514610160575b600080fd5b3480156100ee57600080fd5b506101226004803603602081101561010557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102fd565b60408051918252519081900360200190f35b34801561014057600080fd5b5061015e6004803603602081101561015757600080fd5b503561038b565b005b34801561016c57600080fd5b506101226004803603602081101561018357600080fd5b503561043b565b34801561019657600080fd5b5061019f610509565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101d457600080fd5b50610208600480360360208110156101eb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610526565b604080519115158252519081900360200190f35b34801561022857600080fd5b5061012261052c565b34801561023d57600080fd5b50610208610532565b34801561025257600080fd5b5061012261053b565b34801561026757600080fd5b5061015e610547565b34801561027c57600080fd5b5061019f610618565b34801561029157600080fd5b5061012261063c565b610208610641565b3480156102ae57600080fd5b5061015e600480360360408110156102c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2e565b3480156102f457600080fd5b5061015e610a7f565b600073ffffffffffffffffffffffffffffffffffffffff8216301461038357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461042f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61043881610b4d565b50565b60006105037f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104cf57600080fd5b505afa1580156104e3573d6000803e3d6000fd5b505050506040513d60208110156104f957600080fd5b5051600654610be9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7f000000000000000000000000000000000000000000000000000000000000000090565b600090565b600061064b610bf5565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106fc610c0e565b905080821015610a2057604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561079357600080fd5b505af11580156107a7573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561093357848111156107f857610933565b62093a80810260008061080a8361043b565b905082851015801561082057508262093a800185105b156108d957828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088457fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ee9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107e0565b50600284905560048054830190558115801590610953575060055460ff16155b15610a1c57604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e657600080fd5b505af11580156109fa573d6000803e3d6000fd5b505050506040513d6020811015610a1057600080fd5b50610a1c905082610c39565b5050505b600192505050610523610df5565b610a3781610dfc565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806110a96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c076002600054141561019061100e565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610cea57600080fd5b505af1158015610cfe573d6000803e3d6000fd5b505050506040513d6020811015610d1457600080fd5b5050600754604080517fad58bdd100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015292831660248201526044810184905290517f00000000000000000000000000000000000000000000000000000000000000009092169163ad58bdd19160648082019260009290919082900301818387803b158015610dda57600080fd5b505af1158015610dee573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e6b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed357600080fd5b505afa158015610ee7573d6000803e3d6000fd5b505050506040513d6020811015610efd57600080fd5b5051905080610f57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110dd6024913960400191505060405180910390fd5b6001819055610f64610c0e565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fd257600080fd5b505af1158015610fe6573d6000803e3d6000fd5b505050506040513d6020811015610ffc57600080fd5b505160035561100a82610b4d565b5050565b8161100a577f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261100a918391610438917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122060a2d08b373e5e014ebd6ba6ff04d22a6ab7995ff241270822bfbd4d528cd79c64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2E8 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xAE35EBFB EQ PUSH2 0x270 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x231 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x160 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x38B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x43B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19F PUSH2 0x509 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x52C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x53B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH2 0x547 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19F PUSH2 0x618 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x208 PUSH2 0x641 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH2 0xA7F JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x383 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x42F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x438 DUP2 PUSH2 0xB4D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x503 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xBE9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64B PUSH2 0xBF5 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6FC PUSH2 0xC0E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x933 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI PUSH2 0x933 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x80A DUP4 PUSH2 0x43B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x820 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D9 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x884 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EE SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x953 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA1C SWAP1 POP DUP3 PUSH2 0xC39 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x523 PUSH2 0xDF5 JUMP JUMPDEST PUSH2 0xA37 DUP2 PUSH2 0xDFC JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10A9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC07 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x100E JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH32 0x0 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xAD58BDD100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xAD58BDD1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDEE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE6B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF57 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10DD PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF64 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x100A DUP3 PUSH2 0xB4D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x100A JUMPI PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x100A SWAP2 DUP4 SWAP2 PUSH2 0x438 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122060A2D08B373E5E014EBD6BA6FF04D22A PUSH11 0xB7995FF241270822BFBD4D MSTORE DUP13 0xD7 SWAP13 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"889:1114:102:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6895:191:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6895:191:89;;;;:::i;:::-;;;;;;;;;;;;;;;;7513:214;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7513:214:89;;:::i;:::-;;8159:199;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:199:89;;:::i;1518:99:102:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6789:100:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6789:100:89;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8038:115;;;;;;;;;;;;;:::i;7092:92::-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;1623:102:102:-;;;;;;;;;;;;;:::i;6394:104:89:-;;;;;;;;;;;;;:::i;3697:2655::-;;;:::i;1285:227:102:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1285:227:102;;;;;;;;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;6895:191::-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8271:59:89;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;1518:99:102:-;1600:10;;;;1518:99;;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;8038:115::-;8128:18;;8038:115;:::o;7092:92::-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;1623:102:102:-;1705:13;1623:102;:::o;6394:104:89:-;6464:7;6394:104;:::o;3697:2655::-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;;4042:4:::1;4000:48;::::0;::::1;::::0;;;:33:::1;:16;:33;::::0;::::1;::::0;:48;;;;;-1:-1:-1;;4000:48:89;;;;;;;-1:-1:-1;4000:33:89;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5978:38;::::0;;;;;;;5989:10;;5978:38:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;;6246:4:::1;6225:27;::::0;::::1;::::0;;;:12:::1;:7;:12;::::0;::::1;::::0;:27;;;;;::::1;::::0;;;;;;;;-1:-1:-1;6225:12:89;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6270:29:89::1;::::0;-1:-1:-1;6286:12:89;6270:15:::1;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;1285:227:102:-;1432:40;1454:17;1432:21;:40::i;:::-;-1:-1:-1;1483:10:102;:22;;;;;;;;;;;;;;;1285:227::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7929:18;:38;;;7982:43;;;;;;;;;;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;1731:270:102:-;1804:9;:17;;;1830:13;1846:10;1804:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1971:10:102;;1934:60;;;;;;:25;1960:9;1934:60;;;;;;1971:10;;;1934:60;;;;;;;;;;;;:13;:25;;;;;;:60;;;;;-1:-1:-1;;1934:60:102;;;;;;;;-1:-1:-1;1934:25:102;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1731:270;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3428:18:89;;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3601:33:89;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;926:101:31:-;995:9;990:34;;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1006:18;;2926;;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getGnosisBridge()":"ae35ebfb","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IGnosisBridge\",\"name\":\"gnosisBridge\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGnosisBridge\",\"outputs\":[{\"internalType\":\"contract IGnosisBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/gnosis/GnosisRootGauge.sol\":\"GnosisRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/gnosis/GnosisRootGauge.sol\":{\"keccak256\":\"0xa6ac34ae2a6984fd9989615125a4112f4ab41d7881846cb16a584b45d88e33da\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f5690b39910ad0615b2398f1eee00cfe03e3c8a4dd29f8565bcbd70281f7f86\",\"dweb:/ipfs/QmeTmFYdosVdTMgUAXVFYKvw64HDGv9KctJBkFJM7Ap76d\"]}},\"version\":1}"},"IGnosisBridge":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"relayTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"relayTokens(address,address,uint256)":"ad58bdd1"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"relayTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/gnosis/GnosisRootGauge.sol\":\"IGnosisBridge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/gnosis/GnosisRootGauge.sol\":{\"keccak256\":\"0xa6ac34ae2a6984fd9989615125a4112f4ab41d7881846cb16a584b45d88e33da\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f5690b39910ad0615b2398f1eee00cfe03e3c8a4dd29f8565bcbd70281f7f86\",\"dweb:/ipfs/QmeTmFYdosVdTMgUAXVFYKvw64HDGv9KctJBkFJM7Ap76d\"]}},\"version\":1}"}},"contracts/gauges/gnosis/GnosisRootGaugeFactory.sol":{"GnosisRootGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IGnosisBridge","name":"gnosisBridge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051611a08380380611a088339818101604052604081101561003357600080fd5b5080516020909101516040518290829061004c906100a8565b6001600160a01b03928316815291166020820152604080519182900301906000f08015801561007f573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055506100b59050565b6115a68061046283390190565b61039e806100c46000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee146100a8578063ce3cc8bd146100b0575b600080fd5b61007f6004803603604081101561005c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356100f7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61007f610195565b6100e3600480360360208110156100c657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101b1565b604080519115158252519081900360200190f35b6000806101026101e0565b90508073ffffffffffffffffffffffffffffffffffffffff1663cd6dc68785856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561017557600080fd5b505af1158015610189573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906102059073ffffffffffffffffffffffffffffffffffffffff16610286565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166101db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015290519081900360640190fdfea2646970667358221220606d3c4682ba28aedd958cabcf1cfec0c7df8a438e6cde8599ed94cca8ba655264736f6c634300070100336101a06040523480156200001257600080fd5b50604051620015a6380380620015a6833981810160405260408110156200003857600080fd5b508051602091820151600160009081556040805163e6dec36f60e01b815290519394929385936001600160a01b0385169263e6dec36f9260048083019392829003018186803b1580156200008b57600080fd5b505afa158015620000a0573d6000803e3d6000fd5b505050506040513d6020811015620000b757600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010057600080fd5b505afa15801562000115573d6000803e3d6000fd5b505050506040513d60208110156200012c57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017557600080fd5b505afa1580156200018a573d6000803e3d6000fd5b505050506040513d6020811015620001a157600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021257600080fd5b505afa15801562000227573d6000803e3d6000fd5b505050506040513d60208110156200023e57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d6020811015620002be57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030557600080fd5b505afa1580156200031a573d6000803e3d6000fd5b505050506040513d60208110156200033157600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200037857600080fd5b505afa1580156200038d573d6000803e3d6000fd5b505050506040513d6020811015620003a457600080fd5b505161016052505060001960025550506001600160601b031960609190911b16610180525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c611136620004706000398061061a5280610c775280610d9052508061085c52508061083b5250806107be52806108a85250806103a3528061055f52806106635280610a97525080610442528061074c52508061099e525080610e6f5280610f6c525080610c3b5280610d5752506111366000f3fe6080604052600436106100dd5760003560e01c80639f8676711161007f578063b024522511610059578063b024522514610285578063c2c4c5c11461029a578063cd6dc687146102a2578063d34fb267146102e8576100dd565b80639f86767114610246578063ab8f09451461025b578063ae35ebfb14610270576100dd565b80631b88094d116100bb5780631b88094d1461018a5780634b820093146101c857806383f5c39b1461021c5780639c868ac014610231576100dd565b806309400707146100e257806310d3eb041461013457806314e956f514610160575b600080fd5b3480156100ee57600080fd5b506101226004803603602081101561010557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102fd565b60408051918252519081900360200190f35b34801561014057600080fd5b5061015e6004803603602081101561015757600080fd5b503561038b565b005b34801561016c57600080fd5b506101226004803603602081101561018357600080fd5b503561043b565b34801561019657600080fd5b5061019f610509565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101d457600080fd5b50610208600480360360208110156101eb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610526565b604080519115158252519081900360200190f35b34801561022857600080fd5b5061012261052c565b34801561023d57600080fd5b50610208610532565b34801561025257600080fd5b5061012261053b565b34801561026757600080fd5b5061015e610547565b34801561027c57600080fd5b5061019f610618565b34801561029157600080fd5b5061012261063c565b610208610641565b3480156102ae57600080fd5b5061015e600480360360408110156102c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2e565b3480156102f457600080fd5b5061015e610a7f565b600073ffffffffffffffffffffffffffffffffffffffff8216301461038357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461042f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61043881610b4d565b50565b60006105037f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104cf57600080fd5b505afa1580156104e3573d6000803e3d6000fd5b505050506040513d60208110156104f957600080fd5b5051600654610be9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7f000000000000000000000000000000000000000000000000000000000000000090565b600090565b600061064b610bf5565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106fc610c0e565b905080821015610a2057604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561079357600080fd5b505af11580156107a7573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561093357848111156107f857610933565b62093a80810260008061080a8361043b565b905082851015801561082057508262093a800185105b156108d957828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088457fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ee9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107e0565b50600284905560048054830190558115801590610953575060055460ff16155b15610a1c57604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e657600080fd5b505af11580156109fa573d6000803e3d6000fd5b505050506040513d6020811015610a1057600080fd5b50610a1c905082610c39565b5050505b600192505050610523610df5565b610a3781610dfc565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806110a96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c076002600054141561019061100e565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610cea57600080fd5b505af1158015610cfe573d6000803e3d6000fd5b505050506040513d6020811015610d1457600080fd5b5050600754604080517fad58bdd100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015292831660248201526044810184905290517f00000000000000000000000000000000000000000000000000000000000000009092169163ad58bdd19160648082019260009290919082900301818387803b158015610dda57600080fd5b505af1158015610dee573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e6b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed357600080fd5b505afa158015610ee7573d6000803e3d6000fd5b505050506040513d6020811015610efd57600080fd5b5051905080610f57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110dd6024913960400191505060405180910390fd5b6001819055610f64610c0e565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fd257600080fd5b505af1158015610fe6573d6000803e3d6000fd5b505050506040513d6020811015610ffc57600080fd5b505160035561100a82610b4d565b5050565b8161100a577f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261100a918391610438917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122060a2d08b373e5e014ebd6ba6ff04d22a6ab7995ff241270822bfbd4d528cd79c64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1A08 CODESIZE SUB DUP1 PUSH2 0x1A08 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x40 MLOAD DUP3 SWAP1 DUP3 SWAP1 PUSH2 0x4C SWAP1 PUSH2 0xA8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x7F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0xB5 SWAP1 POP JUMP JUMPDEST PUSH2 0x15A6 DUP1 PUSH2 0x462 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x39E DUP1 PUSH2 0xC4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xB0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x195 JUMP JUMPDEST PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x102 PUSH2 0x1E0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCD6DC687 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x189 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x205 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x286 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0x6D EXTCODECOPY CHAINID DUP3 0xBA 0x28 0xAE 0xDD SWAP6 DUP13 0xAB 0xCF SHR INVALID 0xC0 0xC7 0xDF DUP11 NUMBER DUP15 PUSH13 0xDE8599ED94CCA8BA655264736F PUSH13 0x634300070100336101A0604052 CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x15A6 CODESIZE SUB DUP1 PUSH3 0x15A6 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 DUP6 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x18A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x227 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x31A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x38D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH2 0x180 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1136 PUSH3 0x470 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x61A MSTORE DUP1 PUSH2 0xC77 MSTORE DUP1 PUSH2 0xD90 MSTORE POP DUP1 PUSH2 0x85C MSTORE POP DUP1 PUSH2 0x83B MSTORE POP DUP1 PUSH2 0x7BE MSTORE DUP1 PUSH2 0x8A8 MSTORE POP DUP1 PUSH2 0x3A3 MSTORE DUP1 PUSH2 0x55F MSTORE DUP1 PUSH2 0x663 MSTORE DUP1 PUSH2 0xA97 MSTORE POP DUP1 PUSH2 0x442 MSTORE DUP1 PUSH2 0x74C MSTORE POP DUP1 PUSH2 0x99E MSTORE POP DUP1 PUSH2 0xE6F MSTORE DUP1 PUSH2 0xF6C MSTORE POP DUP1 PUSH2 0xC3B MSTORE DUP1 PUSH2 0xD57 MSTORE POP PUSH2 0x1136 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2E8 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xAE35EBFB EQ PUSH2 0x270 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x231 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x160 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x38B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x43B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19F PUSH2 0x509 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x52C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x53B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH2 0x547 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19F PUSH2 0x618 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x208 PUSH2 0x641 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH2 0xA7F JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x383 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x42F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x438 DUP2 PUSH2 0xB4D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x503 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xBE9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64B PUSH2 0xBF5 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6FC PUSH2 0xC0E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x933 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI PUSH2 0x933 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x80A DUP4 PUSH2 0x43B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x820 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D9 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x884 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EE SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x953 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA1C SWAP1 POP DUP3 PUSH2 0xC39 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x523 PUSH2 0xDF5 JUMP JUMPDEST PUSH2 0xA37 DUP2 PUSH2 0xDFC JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10A9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC07 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x100E JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH32 0x0 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xAD58BDD100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xAD58BDD1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDEE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE6B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF57 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10DD PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF64 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x100A DUP3 PUSH2 0xB4D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x100A JUMPI PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x100A SWAP2 DUP4 SWAP2 PUSH2 0x438 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122060A2D08B373E5E014EBD6BA6FF04D22A PUSH11 0xB7995FF241270822BFBD4D MSTORE DUP13 0xD7 SWAP13 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"780:1011:103:-:0;;;838:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;838:216:103;;;;;;;;942:41;838:216;;;;942:41;;;:::i;:::-;-1:-1:-1;;;;;942:41:103;;;;;;;;;;;;;;;;;;;;-1:-1:-1;942:41:103;;;;;;;;;;;;;;;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;-1:-1:-1;780:1011:103;;-1:-1:-1;780:1011:103;;;;;;;;;:::o;:::-;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee146100a8578063ce3cc8bd146100b0575b600080fd5b61007f6004803603604081101561005c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356100f7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61007f610195565b6100e3600480360360208110156100c657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101b1565b604080519115158252519081900360200190f35b6000806101026101e0565b90508073ffffffffffffffffffffffffffffffffffffffff1663cd6dc68785856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561017557600080fd5b505af1158015610189573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906102059073ffffffffffffffffffffffffffffffffffffffff16610286565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166101db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015290519081900360640190fdfea2646970667358221220606d3c4682ba28aedd958cabcf1cfec0c7df8a438e6cde8599ed94cca8ba655264736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xB0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x195 JUMP JUMPDEST PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x102 PUSH2 0x1E0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCD6DC687 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x189 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x205 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x286 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0x6D EXTCODECOPY CHAINID DUP3 0xBA 0x28 0xAE 0xDD SWAP6 DUP13 0xAB 0xCF SHR INVALID 0xC0 0xC7 0xDF DUP11 NUMBER DUP15 PUSH13 0xDE8599ED94CCA8BA655264736F PUSH13 0x63430007010033000000000000 ","sourceMap":"780:1011:103:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1563:226;;;;;;;;;;;;;;;;-1:-1:-1;1563:226:103;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1309:108:83;;;:::i;1507:131::-;;;;;;;;;;;;;;;;-1:-1:-1;1507:131:83;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1563:226:103;1643:7;1662:13;1678:9;:7;:9::i;:::-;1662:25;;1713:5;1697:33;;;1731:9;1742:17;1697:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1777:5:103;;1563:226;-1:-1:-1;;;;;;1563:226:103:o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;1507:131::-;1605:26;;;1582:4;1605:26;;;:19;:26;;;;;;;;1507:131;;;;:::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getGaugeImplementation()":"39312dee","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IGnosisBridge\",\"name\":\"gnosisBridge\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge (18-decimal FP value from 0 to 1)\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Gnosis.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/gnosis/GnosisRootGaugeFactory.sol\":\"GnosisRootGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/gnosis/GnosisRootGauge.sol\":{\"keccak256\":\"0xa6ac34ae2a6984fd9989615125a4112f4ab41d7881846cb16a584b45d88e33da\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f5690b39910ad0615b2398f1eee00cfe03e3c8a4dd29f8565bcbd70281f7f86\",\"dweb:/ipfs/QmeTmFYdosVdTMgUAXVFYKvw64HDGv9KctJBkFJM7Ap76d\"]},\"contracts/gauges/gnosis/GnosisRootGaugeFactory.sol\":{\"keccak256\":\"0x47d16caf1ab7cb93b915a4303e3d36fcbbb72cc45624044f406c9be84d54069f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://55cefada40d7cee13b3d4dbcd0d20b7447fb5f03e328e6fa010bda1d3b6fefe0\",\"dweb:/ipfs/QmX7MQRALiKBTKK4VkLXbXS4PC6HegMQowgEpXNhU9LjJD\"]}},\"version\":1}"}},"contracts/gauges/optimistic/OptimisticRootGauge.sol":{"OptimisticRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IL1StandardBridge","name":"optimismL1StandardBridge","type":"address"},{"internalType":"address","name":"optimismBal","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NETWORK","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOptimismBal","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOptimismBridge","outputs":[{"internalType":"contract IL1StandardBridge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"},{"internalType":"string","name":"targetNetwork","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101e06040523480156200001257600080fd5b5060405162001c5238038062001c52833981810160405260608110156200003857600080fd5b50805160208083015160409384015160016000908155855163e6dec36f60e01b81529551949592949193869391926001600160a01b0385169263e6dec36f926004808301939192829003018186803b1580156200009457600080fd5b505afa158015620000a9573d6000803e3d6000fd5b505050506040513d6020811015620000c057600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d60208110156200013557600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017e57600080fd5b505afa15801562000193573d6000803e3d6000fd5b505050506040513d6020811015620001aa57600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021b57600080fd5b505afa15801562000230573d6000803e3d6000fd5b505050506040513d60208110156200024757600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029b57600080fd5b505afa158015620002b0573d6000803e3d6000fd5b505050506040513d6020811015620002c757600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d60208110156200033a57600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b505161016052505060001960025550506001600160601b0319606092831b81166101805290821b166101a05233901b6101c0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c6101c05160601c6117ab620004a760003980611175525080610696528061113052508061066c52806110ac52806110d3525080610ad2525080610ab1525080610a345280610b1e5250806104e752806107f952806108d95280610cbc52508061058652806109c2525080610c14525080610e8d5280610f8a52508061108a528061110f52506117ab6000f3fe6080604052600436106100f35760003560e01c806383f5c39b1161008a578063ab8f094511610059578063ab8f0945146103fa578063b02452251461040f578063c2c4c5c114610424578063d34fb2671461042c576100f3565b806383f5c39b146103315780638759e6d1146103465780639c868ac0146103d05780639f867671146103e5576100f3565b80632d8411af116100c65780632d8411af146101de5780634b820093146101f357806360b630c41461024757806381d609561461025c576100f3565b806309400707146100f857806310d3eb041461014a57806314e956f5146101765780631b88094d146101a0575b600080fd5b34801561010457600080fd5b506101386004803603602081101561011b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610441565b60408051918252519081900360200190f35b34801561015657600080fd5b506101746004803603602081101561016d57600080fd5b50356104cf565b005b34801561018257600080fd5b506101386004803603602081101561019957600080fd5b503561057f565b3480156101ac57600080fd5b506101b561064d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101ea57600080fd5b506101b561066a565b3480156101ff57600080fd5b506102336004803603602081101561021657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661068e565b604080519115158252519081900360200190f35b34801561025357600080fd5b506101b5610694565b34801561026857600080fd5b506101746004803603606081101561027f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156102bc57600080fd5b8201836020820111156102ce57600080fd5b803590602001918460018302840111640100000000831117156102f057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106b8945050505050565b34801561033d57600080fd5b5061013861071a565b34801561035257600080fd5b5061035b610720565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039557818101518382015260200161037d565b50505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103dc57600080fd5b506102336107cc565b3480156103f157600080fd5b506101386107d5565b34801561040657600080fd5b506101746107e1565b34801561041b57600080fd5b506101386108b2565b6102336108b7565b34801561043857600080fd5b50610174610ca4565b600073ffffffffffffffffffffffffffffffffffffffff821630146104c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461057357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61057c81610d72565b50565b60006106477f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561061357600080fd5b505afa158015610627573d6000803e3d6000fd5b505050506040513d602081101561063d57600080fd5b5051600654610e0e565b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff165b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106c182610e1a565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8516179055805161071490600790602084019061168a565b50505050565b60065490565b6007805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156107c45780601f10610799576101008083540402835291602001916107c4565b820191906000526020600020905b8154815290600101906020018083116107a757829003601f168201915b505050505081565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461088557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b60006108c161102c565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610972611045565b905080821015610c9657604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610ba95784811115610a6e57610ba9565b62093a808102600080610a808361057f565b9050828510158015610a9657508262093a800185105b15610b4f57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000890281610afa57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f00000000000000000000000000000000000000000000000000000000000000009098019704939093019250610b649050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610a56565b50600284905560048054830190558115801590610bc9575060055460ff16155b15610c9257604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610c5c57600080fd5b505af1158015610c70573d6000803e3d6000fd5b505050506040513d6020811015610c8657600080fd5b50610c92905082611070565b5050505b6001925050506106676112e4565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d4857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061171e6034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b60025415610e8957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ef157600080fd5b505afa158015610f05573d6000803e3d6000fd5b505050506040513d6020811015610f1b57600080fd5b5051905080610f75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806117526024913960400191505060405180910390fd5b6001819055610f82611045565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610ff057600080fd5b505af1158015611004573d6000803e3d6000fd5b505050506040513d602081101561101a57600080fd5b505160035561102882610d72565b5050565b61103e600260005414156101906112eb565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6110d173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836112f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663838b25207f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a0566e726040518163ffffffff1660e01b815260040160206040518083038186803b1580156111d957600080fd5b505afa1580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16815273ffffffffffffffffffffffffffffffffffffffff96871660048201529486166024860152929094166044840152606483015263ffffffff909216608482015260c060a4820152600260c48201527f307800000000000000000000000000000000000000000000000000000000000060e4820152905161010480830192600092919082900301818387803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b5050505050565b6001600055565b8161102857611028816114cf565b80158015906113a85750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d60208110156113a357600080fd5b505115155b1561143d576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261143d9084906114f9565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526114ca9084906114f9565b505050565b61057c817f42414c000000000000000000000000000000000000000000000000000000000061160f565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061156257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611525565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115c4576040519150601f19603f3d011682016040523d82523d6000602084013e6115c9565b606091505b509150915060008214156115e1573d6000803e3d6000fd5b610714815160001480611607575081806020019051602081101561160457600080fd5b50515b6101a26112eb565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116cb57805160ff19168380011785556116f8565b828001600101855582156116f8579182015b828111156116f85782518255916020019190600101906116dd565b50611704929150611708565b5090565b5b80821115611704576000815560010161170956fe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122032b577cafe255b968523d7e91f990f1a920451e7e6bc8cef6ae63ff4dd2e92bf64736f6c63430007010033","opcodes":"PUSH2 0x1E0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1C52 CODESIZE SUB DUP1 PUSH3 0x1C52 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE DUP6 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 MLOAD SWAP5 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 DUP7 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x11E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x230 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x323 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP1 DUP3 SHL AND PUSH2 0x1A0 MSTORE CALLER SWAP1 SHL PUSH2 0x1C0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1C0 MLOAD PUSH1 0x60 SHR PUSH2 0x17AB PUSH3 0x4A7 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1175 MSTORE POP DUP1 PUSH2 0x696 MSTORE DUP1 PUSH2 0x1130 MSTORE POP DUP1 PUSH2 0x66C MSTORE DUP1 PUSH2 0x10AC MSTORE DUP1 PUSH2 0x10D3 MSTORE POP DUP1 PUSH2 0xAD2 MSTORE POP DUP1 PUSH2 0xAB1 MSTORE POP DUP1 PUSH2 0xA34 MSTORE DUP1 PUSH2 0xB1E MSTORE POP DUP1 PUSH2 0x4E7 MSTORE DUP1 PUSH2 0x7F9 MSTORE DUP1 PUSH2 0x8D9 MSTORE DUP1 PUSH2 0xCBC MSTORE POP DUP1 PUSH2 0x586 MSTORE DUP1 PUSH2 0x9C2 MSTORE POP DUP1 PUSH2 0xC14 MSTORE POP DUP1 PUSH2 0xE8D MSTORE DUP1 PUSH2 0xF8A MSTORE POP DUP1 PUSH2 0x108A MSTORE DUP1 PUSH2 0x110F MSTORE POP PUSH2 0x17AB PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x40F JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x424 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x42C JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0x8759E6D1 EQ PUSH2 0x346 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x3E5 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x2D8411AF GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x2D8411AF EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x60B630C4 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x81D60956 EQ PUSH2 0x25C JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x1A0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x441 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4CF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x57F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x64D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x66A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x68E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x253 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x694 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x6B8 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x71A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35B PUSH2 0x720 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x395 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3C2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x7CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x7D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH2 0x7E1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x8B2 JUMP JUMPDEST PUSH2 0x233 PUSH2 0x8B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH2 0xCA4 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x4C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x573 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x57C DUP2 PUSH2 0xD72 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x647 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x627 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xE0E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6C1 DUP3 PUSH2 0xE1A JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND OR SWAP1 SSTORE DUP1 MLOAD PUSH2 0x714 SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7C4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x799 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7C4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7A7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x885 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C1 PUSH2 0x102C JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x965 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x972 PUSH2 0x1045 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0xBA9 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0xA6E JUMPI PUSH2 0xBA9 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0xA80 DUP4 PUSH2 0x57F JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xA96 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0xB4F JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0xAFA JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xB64 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0xA56 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBC9 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xC92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC70 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC92 SWAP1 POP DUP3 PUSH2 0x1070 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x667 PUSH2 0x12E4 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xD48 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xDD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x171E PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE89 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF05 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF75 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1752 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF82 PUSH2 0x1045 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1004 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x101A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x1028 DUP3 PUSH2 0xD72 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x103E PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0x10D1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x12F9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x838B2520 PUSH32 0x0 PUSH32 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA0566E72 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP10 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP5 DUP7 AND PUSH1 0x24 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP5 AND PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0xC4 DUP3 ADD MSTORE PUSH32 0x3078000000000000000000000000000000000000000000000000000000000000 PUSH1 0xE4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST DUP2 PUSH2 0x1028 JUMPI PUSH2 0x1028 DUP2 PUSH2 0x14CF JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x13A8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x143D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x143D SWAP1 DUP5 SWAP1 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x14CA SWAP1 DUP5 SWAP1 PUSH2 0x14F9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x57C DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x160F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1562 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1525 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x15C4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x15C9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x15E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x714 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1607 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x12EB JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x16CB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x16F8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x16F8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x16F8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x16DD JUMP JUMPDEST POP PUSH2 0x1704 SWAP3 SWAP2 POP PUSH2 0x1708 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1704 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1709 JUMP INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122032B577CAFE255B968523D7E91F990F1A SWAP3 DIV MLOAD 0xE7 0xE6 0xBC DUP13 0xEF PUSH11 0xE63FF4DD2E92BF64736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"1012:1910:104:-:0;;;1484:324;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1484:324:104;;;;;;;;;;;;2070:1:63;2175:7;:22;;;2339:30:89;;-1:-1:-1;2339:30:89;;;;1484:324:104;;;;;;;;2175:7:63;;-1:-1:-1;2339:28:89;;;-1:-1:-1;;2339:30:89;;;;;1484:324:104;;2339:30:89;;;;;:28;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2339:30:89;2398:29;;;-1:-1:-1;2398:29:89;;;;2339:30;;-1:-1:-1;2380:15:89;;-1:-1:-1;2398:27:89;;;-1:-1:-1;;2398:29:89;;;;;2339:30;;2398:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2398:29:89;2472:27;;;-1:-1:-1;2472:27:89;;;;2398:29;;-1:-1:-1;2437:32:89;;-1:-1:-1;2472:25:89;;;;;:27;;;;;2398:29;;2472:27;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2472:27:89;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2472:27;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;2472:27;;2665:23;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2665:23:89;2644:44;;-1:-1:-1;2644:44:89;;;2722:32;;;-1:-1:-1;2722:32:89;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;2665:23;;2722:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2722:32:89;2699:55;;2794:39;;;-1:-1:-1;2794:39:89;;;;-1:-1:-1;2794:37:89;;;-1:-1:-1;;2794:39:89;;;;;2722:32;;2794:39;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:39:89;2764:69;;2863:29;;;-1:-1:-1;2863:29:89;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;2794:39;;2863:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2863:29:89;2843:49;;-1:-1:-1;;;;3053:7:89;:27;-1:-1:-1;;;;;;;;1655:52:104::1;::::0;;;;;::::1;::::0;1717:26;;;;::::1;::::0;1790:10:::1;1753:48:::0;::::1;;::::0;-1:-1:-1;1012:1910:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":4234},{"length":32,"start":4367}],"14642":[{"length":32,"start":3725},{"length":32,"start":3978}],"14644":[{"length":32,"start":3092}],"14646":[{"length":32,"start":1414},{"length":32,"start":2498}],"14648":[{"length":32,"start":1255},{"length":32,"start":2041},{"length":32,"start":2265},{"length":32,"start":3260}],"14656":[{"length":32,"start":2612},{"length":32,"start":2846}],"14658":[{"length":32,"start":2737}],"14660":[{"length":32,"start":2770}],"17686":[{"length":32,"start":1644},{"length":32,"start":4268},{"length":32,"start":4307}],"17688":[{"length":32,"start":1686},{"length":32,"start":4400}],"17690":[{"length":32,"start":4469}]},"linkReferences":{},"object":"6080604052600436106100f35760003560e01c806383f5c39b1161008a578063ab8f094511610059578063ab8f0945146103fa578063b02452251461040f578063c2c4c5c114610424578063d34fb2671461042c576100f3565b806383f5c39b146103315780638759e6d1146103465780639c868ac0146103d05780639f867671146103e5576100f3565b80632d8411af116100c65780632d8411af146101de5780634b820093146101f357806360b630c41461024757806381d609561461025c576100f3565b806309400707146100f857806310d3eb041461014a57806314e956f5146101765780631b88094d146101a0575b600080fd5b34801561010457600080fd5b506101386004803603602081101561011b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610441565b60408051918252519081900360200190f35b34801561015657600080fd5b506101746004803603602081101561016d57600080fd5b50356104cf565b005b34801561018257600080fd5b506101386004803603602081101561019957600080fd5b503561057f565b3480156101ac57600080fd5b506101b561064d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101ea57600080fd5b506101b561066a565b3480156101ff57600080fd5b506102336004803603602081101561021657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661068e565b604080519115158252519081900360200190f35b34801561025357600080fd5b506101b5610694565b34801561026857600080fd5b506101746004803603606081101561027f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156102bc57600080fd5b8201836020820111156102ce57600080fd5b803590602001918460018302840111640100000000831117156102f057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106b8945050505050565b34801561033d57600080fd5b5061013861071a565b34801561035257600080fd5b5061035b610720565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039557818101518382015260200161037d565b50505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103dc57600080fd5b506102336107cc565b3480156103f157600080fd5b506101386107d5565b34801561040657600080fd5b506101746107e1565b34801561041b57600080fd5b506101386108b2565b6102336108b7565b34801561043857600080fd5b50610174610ca4565b600073ffffffffffffffffffffffffffffffffffffffff821630146104c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461057357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61057c81610d72565b50565b60006106477f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561061357600080fd5b505afa158015610627573d6000803e3d6000fd5b505050506040513d602081101561063d57600080fd5b5051600654610e0e565b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff165b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106c182610e1a565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8516179055805161071490600790602084019061168a565b50505050565b60065490565b6007805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156107c45780601f10610799576101008083540402835291602001916107c4565b820191906000526020600020905b8154815290600101906020018083116107a757829003601f168201915b505050505081565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461088557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b60006108c161102c565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610972611045565b905080821015610c9657604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610ba95784811115610a6e57610ba9565b62093a808102600080610a808361057f565b9050828510158015610a9657508262093a800185105b15610b4f57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000890281610afa57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f00000000000000000000000000000000000000000000000000000000000000009098019704939093019250610b649050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610a56565b50600284905560048054830190558115801590610bc9575060055460ff16155b15610c9257604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610c5c57600080fd5b505af1158015610c70573d6000803e3d6000fd5b505050506040513d6020811015610c8657600080fd5b50610c92905082611070565b5050505b6001925050506106676112e4565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d4857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061171e6034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b60025415610e8957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ef157600080fd5b505afa158015610f05573d6000803e3d6000fd5b505050506040513d6020811015610f1b57600080fd5b5051905080610f75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806117526024913960400191505060405180910390fd5b6001819055610f82611045565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610ff057600080fd5b505af1158015611004573d6000803e3d6000fd5b505050506040513d602081101561101a57600080fd5b505160035561102882610d72565b5050565b61103e600260005414156101906112eb565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6110d173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836112f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663838b25207f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a0566e726040518163ffffffff1660e01b815260040160206040518083038186803b1580156111d957600080fd5b505afa1580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16815273ffffffffffffffffffffffffffffffffffffffff96871660048201529486166024860152929094166044840152606483015263ffffffff909216608482015260c060a4820152600260c48201527f307800000000000000000000000000000000000000000000000000000000000060e4820152905161010480830192600092919082900301818387803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b5050505050565b6001600055565b8161102857611028816114cf565b80158015906113a85750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d60208110156113a357600080fd5b505115155b1561143d576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261143d9084906114f9565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526114ca9084906114f9565b505050565b61057c817f42414c000000000000000000000000000000000000000000000000000000000061160f565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061156257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611525565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115c4576040519150601f19603f3d011682016040523d82523d6000602084013e6115c9565b606091505b509150915060008214156115e1573d6000803e3d6000fd5b610714815160001480611607575081806020019051602081101561160457600080fd5b50515b6101a26112eb565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116cb57805160ff19168380011785556116f8565b828001600101855582156116f8579182015b828111156116f85782518255916020019190600101906116dd565b50611704929150611708565b5090565b5b80821115611704576000815560010161170956fe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122032b577cafe255b968523d7e91f990f1a920451e7e6bc8cef6ae63ff4dd2e92bf64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x40F JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x424 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x42C JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0x8759E6D1 EQ PUSH2 0x346 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x3E5 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x2D8411AF GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x2D8411AF EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x60B630C4 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x81D60956 EQ PUSH2 0x25C JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x1A0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x441 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4CF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x57F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x64D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x66A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x68E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x253 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x694 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x6B8 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x71A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35B PUSH2 0x720 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x395 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3C2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x7CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x7D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH2 0x7E1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x8B2 JUMP JUMPDEST PUSH2 0x233 PUSH2 0x8B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH2 0xCA4 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x4C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x573 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x57C DUP2 PUSH2 0xD72 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x647 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x627 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xE0E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6C1 DUP3 PUSH2 0xE1A JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND OR SWAP1 SSTORE DUP1 MLOAD PUSH2 0x714 SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7C4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x799 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7C4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7A7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x885 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C1 PUSH2 0x102C JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x965 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x972 PUSH2 0x1045 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0xBA9 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0xA6E JUMPI PUSH2 0xBA9 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0xA80 DUP4 PUSH2 0x57F JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xA96 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0xB4F JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0xAFA JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xB64 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0xA56 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBC9 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xC92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC70 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC92 SWAP1 POP DUP3 PUSH2 0x1070 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x667 PUSH2 0x12E4 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xD48 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xDD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x171E PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE89 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF05 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF75 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1752 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF82 PUSH2 0x1045 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1004 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x101A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x1028 DUP3 PUSH2 0xD72 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x103E PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0x10D1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x12F9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x838B2520 PUSH32 0x0 PUSH32 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA0566E72 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP10 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP5 DUP7 AND PUSH1 0x24 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP5 AND PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0xC4 DUP3 ADD MSTORE PUSH32 0x3078000000000000000000000000000000000000000000000000000000000000 PUSH1 0xE4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST DUP2 PUSH2 0x1028 JUMPI PUSH2 0x1028 DUP2 PUSH2 0x14CF JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x13A8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x143D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x143D SWAP1 DUP5 SWAP1 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x14CA SWAP1 DUP5 SWAP1 PUSH2 0x14F9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x57C DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x160F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1562 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1525 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x15C4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x15C9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x15E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x714 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1607 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x12EB JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x16CB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x16F8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x16F8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x16F8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x16DD JUMP JUMPDEST POP PUSH2 0x1704 SWAP3 SWAP2 POP PUSH2 0x1708 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1704 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1709 JUMP INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122032B577CAFE255B968523D7E91F990F1A SWAP3 DIV MLOAD 0xE7 0xE6 0xBC DUP13 0xEF PUSH11 0xE63FF4DD2E92BF64736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"1012:1910:104:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6895:191:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6895:191:89;;;;:::i;:::-;;;;;;;;;;;;;;;;7513:214;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7513:214:89;;:::i;:::-;;8159:199;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:199:89;;:::i;2139:99:104:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2244:120;;;;;;;;;;;;;:::i;6789:100:89:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6789:100:89;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2370:94:104;;;;;;;;;;;;;:::i;1814:319::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1814:319:104;;-1:-1:-1;1814:319:104;;-1:-1:-1;;;;;1814:319:104:i;8038:115:89:-;;;;;;;;;;;;;:::i;1150:21:104:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7092:92:89;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;6394:104::-;;;;;;;;;;;;;:::i;3697:2655::-;;;:::i;7350:157::-;;;;;;;;;;;;;:::i;6895:191::-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8271:59:89;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;2139:99:104:-;2221:10;;;;2139:99;;:::o;2244:120::-;2332:25;2244:120;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;2370:94:104:-;2445:12;2370:94;:::o;1814:319::-;2020:40;2042:17;2020:21;:40::i;:::-;2071:10;:22;;;;;;;;;;2103:23;;;;:7;;:23;;;;;:::i;:::-;;1814:319;;;:::o;8038:115:89:-;8128:18;;8038:115;:::o;1150:21:104:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7092:92:89:-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6394:104::-;6464:7;6394:104;:::o;3697:2655::-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;;4042:4:::1;4000:48;::::0;::::1;::::0;;;:33:::1;:16;:33;::::0;::::1;::::0;:48;;;;;-1:-1:-1;;4000:48:89;;;;;;;-1:-1:-1;4000:33:89;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5978:38;::::0;;;;;;;5989:10;;5978:38:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;;6246:4:::1;6225:27;::::0;::::1;::::0;;;:12:::1;:7;:12;::::0;::::1;::::0;:27;;;;;::::1;::::0;;;;;;;;-1:-1:-1;6225:12:89;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6270:29:89::1;::::0;-1:-1:-1;6286:12:89;6270:15:::1;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7929:18;:38;;;7982:43;;;;;;;;;;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3428:18:89;;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3601:33:89;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;2470:450:104:-;2543:69;:21;:9;:21;2573:25;2601:10;2543:21;:69::i;:::-;2695:25;:40;;;2757:9;2781:12;2807:10;;;;;;;;;;;2831;2855:8;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2855:30:104;2695:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2695:218:104;;;;;;;-1:-1:-1;2695:218:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2470:450;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;;1256:4;1232:43;;;;:15;:43;;;;;;;;;:15;;;;;;:43;;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1232:43:64;:48;;1218:62;1214:183;;;1332:53;;;;;;;;;;1383:1;1332:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:22;1332:53;;;1296:90;;1324:5;;1296:19;:90::i;:::-;1443:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1466:22;1443:57;;;1407:94;;1435:5;;1407:19;:94::i;:::-;1001:507;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:64;3143:56;11359:3:31;3134:8:64;:97::i;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","NETWORK()":"8759e6d1","checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getOptimismBal()":"60b630c4","getOptimismBridge()":"2d8411af","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256,string)":"81d60956","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"optimismL1StandardBridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"optimismBal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOptimismBal\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOptimismBridge\",\"outputs\":[{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"targetNetwork\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/optimistic/OptimisticRootGauge.sol\":\"OptimisticRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\":{\"keccak256\":\"0x31b489cbd755b3c789115af4cf3d7af2da15f59030345ac29ecf26a033fc806a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2cc164ca032440222b7984aebbad6a46a6c82eef33564d1c6d78408bafab9934\",\"dweb:/ipfs/QmdgixtcWUX8CFhrTkUiAAmSkpMG2FsZnK18QywDhFoFcp\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol\":{\"keccak256\":\"0x1208fef15dbb96160469c256a19f69d7f7f4798882a3504252ad25f89e36afcb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://556fc28a88f4798c5dd23cb4b25d8640bb0175e85d6a3093ec185e1d096e2924\",\"dweb:/ipfs/QmTyxuE1mPRSbn6XHm52qcHj78QrMUpXNHUUF3ZdENtQXU\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/optimistic/OptimisticRootGauge.sol\":{\"keccak256\":\"0x49a4656b91215987409a8f933c1fc9dd11782866ac7ffd220bbeb2af8b0a6e49\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6fbcd6e8b58c267106bcbf54a0d8d08d1e00a631f14e746146c66cd19e58e2e\",\"dweb:/ipfs/QmUBPQfUgBUA5V6frWox6zCQWMJsQFZABARgte15MXM5zM\"]}},\"version\":1}"}},"contracts/gauges/optimistic/OptimisticRootGaugeFactory.sol":{"OptimisticRootGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IL1StandardBridge","name":"optimismL1StandardBridge","type":"address"},{"internalType":"address","name":"optimismBal","type":"address"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"string","name":"targetNetwork","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"gasLimit","type":"uint256"}],"name":"OptimismGasLimitModified","type":"event"},{"inputs":[],"name":"NETWORK","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOptimismGasLimit","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"gasLimit","type":"uint32"}],"name":"setOptimismGasLimit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c06040523480156200001157600080fd5b5060405162002a3e38038062002a3e833981016040819052620000349162000193565b85306001600160a01b031660001b8686866040516200005390620000e9565b6200006193929190620002cb565b604051809103906000f0801580156200007e573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905560805260601b6001600160601b03191660a0526003805463ffffffff191663ffffffff84161790558051620000dc906002906020840190620000f7565b5050505050505062000307565b611c528062000dec83390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013a57805160ff19168380011785556200016a565b828001600101855582156200016a579182015b828111156200016a5782518255916020019190600101906200014d565b50620001789291506200017c565b5090565b5b808211156200017857600081556001016200017d565b60008060008060008060c08789031215620001ac578182fd5b8651620001b981620002ee565b80965050602080880151620001ce81620002ee565b6040890151909650620001e181620002ee565b6060890151909550620001f481620002ee565b608089015190945063ffffffff811681146200020e578384fd5b60a08901519093506001600160401b03808211156200022b578384fd5b818a0191508a601f8301126200023f578384fd5b8151818111156200024e578485fd5b604051601f8201601f19168101850183811182821017156200026e578687fd5b60405281815283820185018d101562000285578586fd5b8592505b81831015620002a8578383018501518184018601529184019162000289565b81831115620002b957858583830101525b80955050505050509295509295509295565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b03811681146200030457600080fd5b50565b60805160a05160601c610abe6200032e600039806103215250806102275250610abe6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80638d928af811610076578063aaabadc51161005b578063aaabadc51461012b578063bf5fa77214610133578063ce3cc8bd14610148576100a3565b80638d928af81461010e578063a0566e7214610116576100a3565b80630ecaea73146100a857806339312dee146100d1578063851c1bb3146100d95780638759e6d1146100f9575b600080fd5b6100bb6100b6366004610778565b610168565b6040516100c89190610873565b60405180910390f35b6100bb610207565b6100ec6100e73660046107c3565b610223565b6040516100c8919061096c565b610101610276565b6040516100c891906109a1565b6100bb61031f565b61011e610343565b6040516100c89190610a49565b6100bb61034f565b61014661014136600461081f565b6103db565b005b61015b61015636600461075c565b61044e565b6040516100c89190610961565b600080610173610479565b6040517f81d6095600000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906381d60956906101cd9087908790600290600401610894565b600060405180830381600087803b1580156101e757600080fd5b505af11580156101fb573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610258929190610843565b6040516020818303038152906040528051906020012090505b919050565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f810184900484028201840190925281815292918301828280156103175780601f106102ec57610100808354040283529160200191610317565b820191906000526020600020905b8154815290600101906020018083116102fa57829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000090565b60035463ffffffff1690565b600061035961031f565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561039e57600080fd5b505afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190610803565b905090565b6103e361051f565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83161790556040517f7c1820748876489d9c02f32c788d21f7a0719b00e777eca80532dd5d77c481ce90610443908390610a49565b60405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60008054819061049e9073ffffffffffffffffffffffffffffffffffffffff16610568565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b600061054e6000357fffffffff0000000000000000000000000000000000000000000000000000000016610223565b905061056561055d823361061e565b6101916106bb565b50565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590610a12565b60405180910390fd5b600061062861034f565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161066493929190610975565b60206040518083038186803b15801561067c57600080fd5b505afa158015610690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b491906107a3565b9392505050565b816106c9576106c9816106cd565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610565917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b60006020828403121561076d578081fd5b81356106b481610a66565b6000806040838503121561078a578081fd5b823561079581610a66565b946020939093013593505050565b6000602082840312156107b4578081fd5b815180151581146106b4578182fd5b6000602082840312156107d4578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106b4578182fd5b600060208284031215610814578081fd5b81516106b481610a66565b600060208284031215610830578081fd5b813563ffffffff811681146106b4578182fd5b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60006060820173ffffffffffffffffffffffffffffffffffffffff8616835260208581850152606060408501528285546001808216600081146108de576001811461091a57610952565b607f600284041686527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316608089015260a088019350610952565b6002830480875261092a8a610a5a565b885b828110156109485781548b82016080015290840190870161092c565b8a01608001955050505b50919998505050505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6000602080835283518082850152825b818110156109cd578581018301518582016040015282016109b1565b818111156109de5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b63ffffffff91909116815260200190565b60009081526020902090565b73ffffffffffffffffffffffffffffffffffffffff8116811461056557600080fdfea2646970667358221220e24746db362b70ad2a4093f27f1f654d83f347aa4cef59e4a3502c26cc6bf27464736f6c634300070100336101e06040523480156200001257600080fd5b5060405162001c5238038062001c52833981810160405260608110156200003857600080fd5b50805160208083015160409384015160016000908155855163e6dec36f60e01b81529551949592949193869391926001600160a01b0385169263e6dec36f926004808301939192829003018186803b1580156200009457600080fd5b505afa158015620000a9573d6000803e3d6000fd5b505050506040513d6020811015620000c057600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d60208110156200013557600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017e57600080fd5b505afa15801562000193573d6000803e3d6000fd5b505050506040513d6020811015620001aa57600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021b57600080fd5b505afa15801562000230573d6000803e3d6000fd5b505050506040513d60208110156200024757600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029b57600080fd5b505afa158015620002b0573d6000803e3d6000fd5b505050506040513d6020811015620002c757600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d60208110156200033a57600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b505161016052505060001960025550506001600160601b0319606092831b81166101805290821b166101a05233901b6101c0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c6101c05160601c6117ab620004a760003980611175525080610696528061113052508061066c52806110ac52806110d3525080610ad2525080610ab1525080610a345280610b1e5250806104e752806107f952806108d95280610cbc52508061058652806109c2525080610c14525080610e8d5280610f8a52508061108a528061110f52506117ab6000f3fe6080604052600436106100f35760003560e01c806383f5c39b1161008a578063ab8f094511610059578063ab8f0945146103fa578063b02452251461040f578063c2c4c5c114610424578063d34fb2671461042c576100f3565b806383f5c39b146103315780638759e6d1146103465780639c868ac0146103d05780639f867671146103e5576100f3565b80632d8411af116100c65780632d8411af146101de5780634b820093146101f357806360b630c41461024757806381d609561461025c576100f3565b806309400707146100f857806310d3eb041461014a57806314e956f5146101765780631b88094d146101a0575b600080fd5b34801561010457600080fd5b506101386004803603602081101561011b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610441565b60408051918252519081900360200190f35b34801561015657600080fd5b506101746004803603602081101561016d57600080fd5b50356104cf565b005b34801561018257600080fd5b506101386004803603602081101561019957600080fd5b503561057f565b3480156101ac57600080fd5b506101b561064d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101ea57600080fd5b506101b561066a565b3480156101ff57600080fd5b506102336004803603602081101561021657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661068e565b604080519115158252519081900360200190f35b34801561025357600080fd5b506101b5610694565b34801561026857600080fd5b506101746004803603606081101561027f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156102bc57600080fd5b8201836020820111156102ce57600080fd5b803590602001918460018302840111640100000000831117156102f057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106b8945050505050565b34801561033d57600080fd5b5061013861071a565b34801561035257600080fd5b5061035b610720565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039557818101518382015260200161037d565b50505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103dc57600080fd5b506102336107cc565b3480156103f157600080fd5b506101386107d5565b34801561040657600080fd5b506101746107e1565b34801561041b57600080fd5b506101386108b2565b6102336108b7565b34801561043857600080fd5b50610174610ca4565b600073ffffffffffffffffffffffffffffffffffffffff821630146104c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461057357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61057c81610d72565b50565b60006106477f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561061357600080fd5b505afa158015610627573d6000803e3d6000fd5b505050506040513d602081101561063d57600080fd5b5051600654610e0e565b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff165b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106c182610e1a565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8516179055805161071490600790602084019061168a565b50505050565b60065490565b6007805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156107c45780601f10610799576101008083540402835291602001916107c4565b820191906000526020600020905b8154815290600101906020018083116107a757829003601f168201915b505050505081565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461088557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b60006108c161102c565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610972611045565b905080821015610c9657604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610ba95784811115610a6e57610ba9565b62093a808102600080610a808361057f565b9050828510158015610a9657508262093a800185105b15610b4f57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000890281610afa57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f00000000000000000000000000000000000000000000000000000000000000009098019704939093019250610b649050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610a56565b50600284905560048054830190558115801590610bc9575060055460ff16155b15610c9257604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610c5c57600080fd5b505af1158015610c70573d6000803e3d6000fd5b505050506040513d6020811015610c8657600080fd5b50610c92905082611070565b5050505b6001925050506106676112e4565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d4857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061171e6034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b60025415610e8957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ef157600080fd5b505afa158015610f05573d6000803e3d6000fd5b505050506040513d6020811015610f1b57600080fd5b5051905080610f75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806117526024913960400191505060405180910390fd5b6001819055610f82611045565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610ff057600080fd5b505af1158015611004573d6000803e3d6000fd5b505050506040513d602081101561101a57600080fd5b505160035561102882610d72565b5050565b61103e600260005414156101906112eb565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6110d173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836112f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663838b25207f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a0566e726040518163ffffffff1660e01b815260040160206040518083038186803b1580156111d957600080fd5b505afa1580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16815273ffffffffffffffffffffffffffffffffffffffff96871660048201529486166024860152929094166044840152606483015263ffffffff909216608482015260c060a4820152600260c48201527f307800000000000000000000000000000000000000000000000000000000000060e4820152905161010480830192600092919082900301818387803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b5050505050565b6001600055565b8161102857611028816114cf565b80158015906113a85750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d60208110156113a357600080fd5b505115155b1561143d576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261143d9084906114f9565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526114ca9084906114f9565b505050565b61057c817f42414c000000000000000000000000000000000000000000000000000000000061160f565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061156257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611525565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115c4576040519150601f19603f3d011682016040523d82523d6000602084013e6115c9565b606091505b509150915060008214156115e1573d6000803e3d6000fd5b610714815160001480611607575081806020019051602081101561160457600080fd5b50515b6101a26112eb565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116cb57805160ff19168380011785556116f8565b828001600101855582156116f8579182015b828111156116f85782518255916020019190600101906116dd565b50611704929150611708565b5090565b5b80821115611704576000815560010161170956fe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122032b577cafe255b968523d7e91f990f1a920451e7e6bc8cef6ae63ff4dd2e92bf64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2A3E CODESIZE SUB DUP1 PUSH3 0x2A3E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x193 JUMP JUMPDEST DUP6 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SHL DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH3 0x53 SWAP1 PUSH3 0xE9 JUMP JUMPDEST PUSH3 0x61 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x2CB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x7E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x80 MSTORE PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE PUSH1 0x3 DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF DUP5 AND OR SWAP1 SSTORE DUP1 MLOAD PUSH3 0xDC SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0xF7 JUMP JUMPDEST POP POP POP POP POP POP POP PUSH3 0x307 JUMP JUMPDEST PUSH2 0x1C52 DUP1 PUSH3 0xDEC DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x13A JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x16A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x16A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x16A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x14D JUMP JUMPDEST POP PUSH3 0x178 SWAP3 SWAP2 POP PUSH3 0x17C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x178 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x17D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x1AC JUMPI DUP2 DUP3 REVERT JUMPDEST DUP7 MLOAD PUSH3 0x1B9 DUP2 PUSH3 0x2EE JUMP JUMPDEST DUP1 SWAP7 POP POP PUSH1 0x20 DUP1 DUP9 ADD MLOAD PUSH3 0x1CE DUP2 PUSH3 0x2EE JUMP JUMPDEST PUSH1 0x40 DUP10 ADD MLOAD SWAP1 SWAP7 POP PUSH3 0x1E1 DUP2 PUSH3 0x2EE JUMP JUMPDEST PUSH1 0x60 DUP10 ADD MLOAD SWAP1 SWAP6 POP PUSH3 0x1F4 DUP2 PUSH3 0x2EE JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD SWAP1 SWAP5 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0x20E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0xA0 DUP10 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x22B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x23F JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x24E JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD DUP6 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x26E JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP14 LT ISZERO PUSH3 0x285 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 SWAP3 POP JUMPDEST DUP2 DUP4 LT ISZERO PUSH3 0x2A8 JUMPI DUP4 DUP4 ADD DUP6 ADD MLOAD DUP2 DUP5 ADD DUP7 ADD MSTORE SWAP2 DUP5 ADD SWAP2 PUSH3 0x289 JUMP JUMPDEST DUP2 DUP4 GT ISZERO PUSH3 0x2B9 JUMPI DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x304 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0xABE PUSH3 0x32E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x321 MSTORE POP DUP1 PUSH2 0x227 MSTORE POP PUSH2 0xABE PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0xBF5FA772 EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x148 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0xA0566E72 EQ PUSH2 0x116 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x8759E6D1 EQ PUSH2 0xF9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x873 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBB PUSH2 0x207 JUMP JUMPDEST PUSH2 0xEC PUSH2 0xE7 CALLDATASIZE PUSH1 0x4 PUSH2 0x7C3 JUMP JUMPDEST PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x96C JUMP JUMPDEST PUSH2 0x101 PUSH2 0x276 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0xBB PUSH2 0x31F JUMP JUMPDEST PUSH2 0x11E PUSH2 0x343 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xA49 JUMP JUMPDEST PUSH2 0xBB PUSH2 0x34F JUMP JUMPDEST PUSH2 0x146 PUSH2 0x141 CALLDATASIZE PUSH1 0x4 PUSH2 0x81F JUMP JUMPDEST PUSH2 0x3DB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH2 0x156 CALLDATASIZE PUSH1 0x4 PUSH2 0x75C JUMP JUMPDEST PUSH2 0x44E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x961 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x173 PUSH2 0x479 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x81D6095600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x81D60956 SWAP1 PUSH2 0x1CD SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x4 ADD PUSH2 0x894 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x258 SWAP3 SWAP2 SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x317 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2EC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x317 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2FA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x359 PUSH2 0x31F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x803 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3E3 PUSH2 0x51F JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 AND PUSH4 0xFFFFFFFF DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x7C1820748876489D9C02F32C788D21F7A0719B00E777ECA80532DD5D77C481CE SWAP1 PUSH2 0x443 SWAP1 DUP4 SWAP1 PUSH2 0xA49 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x49E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x568 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54E PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x223 JUMP JUMPDEST SWAP1 POP PUSH2 0x565 PUSH2 0x55D DUP3 CALLER PUSH2 0x61E JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6BB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x271 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x615 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x628 PUSH2 0x34F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x664 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x975 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x690 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6B4 SWAP2 SWAP1 PUSH2 0x7A3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x6C9 JUMPI PUSH2 0x6C9 DUP2 PUSH2 0x6CD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x565 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x76D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6B4 DUP2 PUSH2 0xA66 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x78A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x795 DUP2 PUSH2 0xA66 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7B4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x6B4 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7D4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x6B4 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x814 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x6B4 DUP2 PUSH2 0xA66 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x830 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x6B4 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP4 MSTORE PUSH1 0x20 DUP6 DUP2 DUP6 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE DUP3 DUP6 SLOAD PUSH1 0x1 DUP1 DUP3 AND PUSH1 0x0 DUP2 EQ PUSH2 0x8DE JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x91A JUMPI PUSH2 0x952 JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP5 DIV AND DUP7 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP4 AND PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD SWAP4 POP PUSH2 0x952 JUMP JUMPDEST PUSH1 0x2 DUP4 DIV DUP1 DUP8 MSTORE PUSH2 0x92A DUP11 PUSH2 0xA5A JUMP JUMPDEST DUP9 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x948 JUMPI DUP2 SLOAD DUP12 DUP3 ADD PUSH1 0x80 ADD MSTORE SWAP1 DUP5 ADD SWAP1 DUP8 ADD PUSH2 0x92C JUMP JUMPDEST DUP11 ADD PUSH1 0x80 ADD SWAP6 POP POP POP JUMPDEST POP SWAP2 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x9CD JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x9B1 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x9DE JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x565 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE2 SELFBALANCE CHAINID 0xDB CALLDATASIZE 0x2B PUSH17 0xAD2A4093F27F1F654D83F347AA4CEF59E4 LOG3 POP 0x2C 0x26 0xCC PUSH12 0xF27464736F6C634300070100 CALLER PUSH2 0x1E0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1C52 CODESIZE SUB DUP1 PUSH3 0x1C52 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE DUP6 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 MLOAD SWAP5 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 DUP7 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x11E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x230 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x323 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP1 DUP3 SHL AND PUSH2 0x1A0 MSTORE CALLER SWAP1 SHL PUSH2 0x1C0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1C0 MLOAD PUSH1 0x60 SHR PUSH2 0x17AB PUSH3 0x4A7 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1175 MSTORE POP DUP1 PUSH2 0x696 MSTORE DUP1 PUSH2 0x1130 MSTORE POP DUP1 PUSH2 0x66C MSTORE DUP1 PUSH2 0x10AC MSTORE DUP1 PUSH2 0x10D3 MSTORE POP DUP1 PUSH2 0xAD2 MSTORE POP DUP1 PUSH2 0xAB1 MSTORE POP DUP1 PUSH2 0xA34 MSTORE DUP1 PUSH2 0xB1E MSTORE POP DUP1 PUSH2 0x4E7 MSTORE DUP1 PUSH2 0x7F9 MSTORE DUP1 PUSH2 0x8D9 MSTORE DUP1 PUSH2 0xCBC MSTORE POP DUP1 PUSH2 0x586 MSTORE DUP1 PUSH2 0x9C2 MSTORE POP DUP1 PUSH2 0xC14 MSTORE POP DUP1 PUSH2 0xE8D MSTORE DUP1 PUSH2 0xF8A MSTORE POP DUP1 PUSH2 0x108A MSTORE DUP1 PUSH2 0x110F MSTORE POP PUSH2 0x17AB PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x40F JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x424 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x42C JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0x8759E6D1 EQ PUSH2 0x346 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x3E5 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x2D8411AF GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x2D8411AF EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x60B630C4 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x81D60956 EQ PUSH2 0x25C JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x1A0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x441 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4CF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x57F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x64D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x66A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x68E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x253 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x694 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x6B8 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x71A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35B PUSH2 0x720 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x395 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3C2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x7CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x7D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH2 0x7E1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x8B2 JUMP JUMPDEST PUSH2 0x233 PUSH2 0x8B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH2 0xCA4 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x4C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x573 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x57C DUP2 PUSH2 0xD72 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x647 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x627 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xE0E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6C1 DUP3 PUSH2 0xE1A JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND OR SWAP1 SSTORE DUP1 MLOAD PUSH2 0x714 SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7C4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x799 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7C4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7A7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x885 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C1 PUSH2 0x102C JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x965 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x972 PUSH2 0x1045 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0xBA9 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0xA6E JUMPI PUSH2 0xBA9 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0xA80 DUP4 PUSH2 0x57F JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xA96 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0xB4F JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0xAFA JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xB64 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0xA56 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBC9 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xC92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC70 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC92 SWAP1 POP DUP3 PUSH2 0x1070 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x667 PUSH2 0x12E4 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xD48 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xDD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x171E PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE89 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF05 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF75 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1752 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF82 PUSH2 0x1045 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1004 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x101A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x1028 DUP3 PUSH2 0xD72 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x103E PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0x10D1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x12F9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x838B2520 PUSH32 0x0 PUSH32 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA0566E72 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP10 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP5 DUP7 AND PUSH1 0x24 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP5 AND PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0xC4 DUP3 ADD MSTORE PUSH32 0x3078000000000000000000000000000000000000000000000000000000000000 PUSH1 0xE4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST DUP2 PUSH2 0x1028 JUMPI PUSH2 0x1028 DUP2 PUSH2 0x14CF JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x13A8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x143D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x143D SWAP1 DUP5 SWAP1 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x14CA SWAP1 DUP5 SWAP1 PUSH2 0x14F9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x57C DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x160F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1562 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1525 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x15C4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x15C9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x15E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x714 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1607 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x12EB JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x16CB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x16F8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x16F8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x16F8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x16DD JUMP JUMPDEST POP PUSH2 0x1704 SWAP3 SWAP2 POP PUSH2 0x1708 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1704 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1709 JUMP INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122032B577CAFE255B968523D7E91F990F1A SWAP3 DIV MLOAD 0xE7 0xE6 0xBC DUP13 0xEF PUSH11 0xE63FF4DD2E92BF64736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"908:1920:105:-:0;;;1188:441;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1548:5;1054:4:51;-1:-1:-1;;;;;1038:22:51;1030:31;;1467:6:105;1475:24;1501:11;1443:70;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;2049:46:46;;1073:14:51::1;::::0;-1:-1:-1;;;;;;1073:14:51;::::1;::::0;1569:9:105::2;:20:::0;;-1:-1:-1;;1569:20:105::2;;::::0;::::2;;::::0;;1599:23;;::::2;::::0;:7:::2;::::0;:23:::2;::::0;::::2;::::0;::::2;:::i;:::-;;1188:441:::0;;;;;;908:1920;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;908:1920:105;;;-1:-1:-1;908:1920:105;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;1301:1183:-1;;;;;;;1580:3;1568:9;1559:7;1555:23;1551:33;1548:2;;;-1:-1;;1587:12;1548:2;637:6;631:13;649:48;691:5;649:48;:::i;:::-;1639:89;;;;1765:2;;1849:9;1845:22;445:13;463:63;520:5;463:63;:::i;:::-;1914:2;1989:22;;249:13;1773:104;;-1:-1;267:58;249:13;267:58;:::i;:::-;2058:2;2108:22;;83:13;1922:99;;-1:-1;101:33;83:13;101:33;:::i;:::-;2177:3;2227:22;;1239:13;2066:74;;-1:-1;4802:10;4791:22;;6447:34;;6437:2;;-1:-1;;6485:12;6437:2;2317:3;2302:19;;2296:26;2186:73;;-1:-1;;;;;;2331:30;;;2328:2;;;-1:-1;;2364:12;2328:2;2451:6;2440:9;2436:22;;;823:3;816:4;808:6;804:17;800:27;790:2;;-1:-1;;831:12;790:2;871:6;865:13;2342:18;3947:6;3944:30;3941:2;;;-1:-1;;3977:12;3941:2;1914;3604:9;4050;4031:17;;-1:-1;;4027:33;3636:17;;;;3696:34;;;3732:22;;;3693:62;3690:2;;;-1:-1;;3758:12;3690:2;1914;3777:22;964:21;;;1064:16;;;;;1061:25;-1:-1;1058:2;;;-1:-1;;1089:12;1058:2;-1:-1;5533:10;;5549:101;5563:6;5560:1;5557:13;5549:101;;;5630:11;;;;;5624:18;5611:11;;;;;5604:39;5578:10;;;;5549:101;;;5665:6;5662:1;5659:13;5656:2;;;-1:-1;1765:2;5721:6;1040:5;5712:16;;5705:27;5656:2;2384:84;;;;;;;;1542:942;;;;;;;;:::o;2987:554::-;-1:-1;;;;;4664:54;;;2707:75;;4664:54;;;3444:2;3429:18;;2707:75;4664:54;;;3527:2;3512:18;;2562:37;3225:2;3210:18;;3196:345::o;5753:117::-;-1:-1;;;;;4664:54;;5812:35;;5802:2;;5861:1;;5851:12;5802:2;5796:74;:::o;:::-;908:1920:105;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":551}],"3611":[{"length":32,"start":801}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a35760003560e01c80638d928af811610076578063aaabadc51161005b578063aaabadc51461012b578063bf5fa77214610133578063ce3cc8bd14610148576100a3565b80638d928af81461010e578063a0566e7214610116576100a3565b80630ecaea73146100a857806339312dee146100d1578063851c1bb3146100d95780638759e6d1146100f9575b600080fd5b6100bb6100b6366004610778565b610168565b6040516100c89190610873565b60405180910390f35b6100bb610207565b6100ec6100e73660046107c3565b610223565b6040516100c8919061096c565b610101610276565b6040516100c891906109a1565b6100bb61031f565b61011e610343565b6040516100c89190610a49565b6100bb61034f565b61014661014136600461081f565b6103db565b005b61015b61015636600461075c565b61044e565b6040516100c89190610961565b600080610173610479565b6040517f81d6095600000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906381d60956906101cd9087908790600290600401610894565b600060405180830381600087803b1580156101e757600080fd5b505af11580156101fb573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610258929190610843565b6040516020818303038152906040528051906020012090505b919050565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f810184900484028201840190925281815292918301828280156103175780601f106102ec57610100808354040283529160200191610317565b820191906000526020600020905b8154815290600101906020018083116102fa57829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000090565b60035463ffffffff1690565b600061035961031f565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561039e57600080fd5b505afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190610803565b905090565b6103e361051f565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83161790556040517f7c1820748876489d9c02f32c788d21f7a0719b00e777eca80532dd5d77c481ce90610443908390610a49565b60405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60008054819061049e9073ffffffffffffffffffffffffffffffffffffffff16610568565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b600061054e6000357fffffffff0000000000000000000000000000000000000000000000000000000016610223565b905061056561055d823361061e565b6101916106bb565b50565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590610a12565b60405180910390fd5b600061062861034f565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161066493929190610975565b60206040518083038186803b15801561067c57600080fd5b505afa158015610690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b491906107a3565b9392505050565b816106c9576106c9816106cd565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610565917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b60006020828403121561076d578081fd5b81356106b481610a66565b6000806040838503121561078a578081fd5b823561079581610a66565b946020939093013593505050565b6000602082840312156107b4578081fd5b815180151581146106b4578182fd5b6000602082840312156107d4578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106b4578182fd5b600060208284031215610814578081fd5b81516106b481610a66565b600060208284031215610830578081fd5b813563ffffffff811681146106b4578182fd5b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60006060820173ffffffffffffffffffffffffffffffffffffffff8616835260208581850152606060408501528285546001808216600081146108de576001811461091a57610952565b607f600284041686527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316608089015260a088019350610952565b6002830480875261092a8a610a5a565b885b828110156109485781548b82016080015290840190870161092c565b8a01608001955050505b50919998505050505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6000602080835283518082850152825b818110156109cd578581018301518582016040015282016109b1565b818111156109de5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b63ffffffff91909116815260200190565b60009081526020902090565b73ffffffffffffffffffffffffffffffffffffffff8116811461056557600080fdfea2646970667358221220e24746db362b70ad2a4093f27f1f654d83f347aa4cef59e4a3502c26cc6bf27464736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0xBF5FA772 EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x148 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0xA0566E72 EQ PUSH2 0x116 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x8759E6D1 EQ PUSH2 0xF9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x873 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBB PUSH2 0x207 JUMP JUMPDEST PUSH2 0xEC PUSH2 0xE7 CALLDATASIZE PUSH1 0x4 PUSH2 0x7C3 JUMP JUMPDEST PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x96C JUMP JUMPDEST PUSH2 0x101 PUSH2 0x276 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0xBB PUSH2 0x31F JUMP JUMPDEST PUSH2 0x11E PUSH2 0x343 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xA49 JUMP JUMPDEST PUSH2 0xBB PUSH2 0x34F JUMP JUMPDEST PUSH2 0x146 PUSH2 0x141 CALLDATASIZE PUSH1 0x4 PUSH2 0x81F JUMP JUMPDEST PUSH2 0x3DB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH2 0x156 CALLDATASIZE PUSH1 0x4 PUSH2 0x75C JUMP JUMPDEST PUSH2 0x44E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x961 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x173 PUSH2 0x479 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x81D6095600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x81D60956 SWAP1 PUSH2 0x1CD SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x4 ADD PUSH2 0x894 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x258 SWAP3 SWAP2 SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x317 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2EC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x317 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2FA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x359 PUSH2 0x31F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x803 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3E3 PUSH2 0x51F JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 AND PUSH4 0xFFFFFFFF DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x7C1820748876489D9C02F32C788D21F7A0719B00E777ECA80532DD5D77C481CE SWAP1 PUSH2 0x443 SWAP1 DUP4 SWAP1 PUSH2 0xA49 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x49E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x568 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54E PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x223 JUMP JUMPDEST SWAP1 POP PUSH2 0x565 PUSH2 0x55D DUP3 CALLER PUSH2 0x61E JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6BB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x271 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x615 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x628 PUSH2 0x34F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x664 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x975 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x690 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6B4 SWAP2 SWAP1 PUSH2 0x7A3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x6C9 JUMPI PUSH2 0x6C9 DUP2 PUSH2 0x6CD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x565 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x76D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6B4 DUP2 PUSH2 0xA66 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x78A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x795 DUP2 PUSH2 0xA66 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7B4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x6B4 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7D4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x6B4 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x814 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x6B4 DUP2 PUSH2 0xA66 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x830 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x6B4 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP4 MSTORE PUSH1 0x20 DUP6 DUP2 DUP6 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE DUP3 DUP6 SLOAD PUSH1 0x1 DUP1 DUP3 AND PUSH1 0x0 DUP2 EQ PUSH2 0x8DE JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x91A JUMPI PUSH2 0x952 JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP5 DIV AND DUP7 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP4 AND PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD SWAP4 POP PUSH2 0x952 JUMP JUMPDEST PUSH1 0x2 DUP4 DIV DUP1 DUP8 MSTORE PUSH2 0x92A DUP11 PUSH2 0xA5A JUMP JUMPDEST DUP9 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x948 JUMPI DUP2 SLOAD DUP12 DUP3 ADD PUSH1 0x80 ADD MSTORE SWAP1 DUP5 ADD SWAP1 DUP8 ADD PUSH2 0x92C JUMP JUMPDEST DUP11 ADD PUSH1 0x80 ADD SWAP6 POP POP POP JUMPDEST POP SWAP2 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x9CD JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x9B1 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x9DE JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x565 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE2 SELFBALANCE CHAINID 0xDB CALLDATASIZE 0x2B PUSH17 0xAD2A4093F27F1F654D83F347AA4CEF59E4 LOG3 POP 0x2C 0x26 0xCC PUSH12 0xF27464736F6C634300070100 CALLER ","sourceMap":"908:1920:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2319:239;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;2607:430:46:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1074:21:105:-;;;:::i;:::-;;;;;;;:::i;1158:79:51:-;;;:::i;1738:104:105:-;;;:::i;:::-;;;;;;;:::i;1297:109:51:-;;;:::i;2663:163:105:-;;;;;;:::i;:::-;;:::i;:::-;;1507:131:83;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2319:239:105:-;2399:7;2418:13;2434:9;:7;:9::i;:::-;2453:76;;;;;2418:25;;-1:-1:-1;2453:37:105;;;;;;:76;;2491:9;;2502:17;;2521:7;;2453:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2546:5:105;;2319:239;-1:-1:-1;;;;;;2319:239:105:o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;;:::o;1074:21:105:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;1738:104:105:-;1826:9;;;;1738:104;:::o;1297:109:51:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;2663:163:105:-;2276:21:46;:19;:21::i;:::-;2750:9:105::1;:20:::0;;;::::1;;::::0;::::1;;::::0;;2785:34:::1;::::0;::::1;::::0;::::1;::::0;2750:20;;2785:34:::1;:::i;:::-;;;;;;;;2663:163:::0;:::o;1507:131:83:-;1605:26;;1582:4;1605:26;;;:19;:26;;;;;;;;;1507:131::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;:::-;2420:181;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;1412:178:51;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1516:67;1412:178;-1:-1:-1;;;1412:178:51:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;865:241:-1;;969:2;957:9;948:7;944:23;940:32;937:2;;;-1:-1;;975:12;937:2;85:6;72:20;97:33;124:5;97:33;:::i;1113:366::-;;;1234:2;1222:9;1213:7;1209:23;1205:32;1202:2;;;-1:-1;;1240:12;1202:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1292:63;1392:2;1431:22;;;;660:20;;-1:-1;;;1196:283::o;1486:257::-;;1598:2;1586:9;1577:7;1573:23;1569:32;1566:2;;;-1:-1;;1604:12;1566:2;223:6;217:13;11993:5;9865:13;9858:21;11971:5;11968:32;11958:2;;-1:-1;;12004:12;1750:239;;1853:2;1841:9;1832:7;1828:23;1824:32;1821:2;;;-1:-1;;1859:12;1821:2;356:6;343:20;10042:66;12115:5;10031:78;12091:5;12088:34;12078:2;;-1:-1;;12126:12;1996:303;;2131:2;2119:9;2110:7;2106:23;2102:32;2099:2;;;-1:-1;;2137:12;2099:2;516:6;510:13;528:53;575:5;528:53;:::i;2306:239::-;;2409:2;2397:9;2388:7;2384:23;2380:32;2377:2;;;-1:-1;;2415:12;2377:2;809:6;796:20;10518:10;12525:5;10507:22;12501:5;12498:34;12488:2;;-1:-1;;12536:12;5462:387;2854:37;;;10042:66;10031:78;5713:2;5704:12;;3149:56;5813:11;;;5604:245::o;5856:222::-;10312:42;10301:54;;;;2623:37;;5983:2;5968:18;;5954:124::o;6085:526::-;;6285:2;6274:9;6270:18;10312:42;9781:5;10301:54;2630:3;2623:37;6449:2;2884:5;6449:2;6438:9;6434:18;2854:37;6285:2;6486;6475:9;6471:18;6464:48;-1:-1;4051:5;4045:12;4085:1;;4074:9;4070:17;4098:1;4093:248;;;;4352:1;4347:402;;;;4063:686;;4093:248;4171:4;4167:1;4156:9;4152:17;4148:28;9640:3;9633:19;4295:9;4284;4280:25;9673:14;6274:9;9673:14;4268:38;4320:14;6274:9;4320:14;4313:21;;4093:248;;4347:402;4416:1;4405:9;4401:17;9645:6;9640:3;9633:19;4525:38;4557:5;4525:38;:::i;:::-;-1:-1;4587:130;4601:6;4598:1;4595:13;4587:130;;;4660:14;;4647:11;;;9673:14;4647:11;4640:35;4694:15;;;;4616:12;;4587:130;;;4731:11;;9673:14;4731:11;;-1:-1;;;4063:686;-1:-1;6518:83;;6256:355;-1:-1;;;;;;;;;6256:355::o;6618:210::-;9865:13;;9858:21;2737:34;;6739:2;6724:18;;6710:118::o;6835:222::-;2854:37;;;6962:2;6947:18;;6933:124::o;7064:444::-;2854:37;;;10312:42;10301:54;;;7411:2;7396:18;;2623:37;10301:54;7494:2;7479:18;;2623:37;7247:2;7232:18;;7218:290::o;8043:310::-;;8190:2;;8211:17;8204:47;3698:5;9488:12;9645:6;8190:2;8179:9;8175:18;9633:19;-1:-1;11318:101;11332:6;11329:1;11326:13;11318:101;;;11399:11;;;;;11393:18;11380:11;;;9673:14;11380:11;11373:39;11347:10;;11318:101;;;11434:6;11431:1;11428:13;11425:2;;;-1:-1;9673:14;11490:6;8179:9;11481:16;;11474:27;11425:2;-1:-1;11771:2;11751:14;11767:7;11747:28;3856:39;;;;9673:14;3856:39;;8161:192;-1:-1;;;8161:192::o;8360:416::-;8560:2;8574:47;;;4988:2;8545:18;;;9633:19;5024:24;9673:14;;;5004:45;5068:12;;;8531:245::o;8783:220::-;10518:10;10507:22;;;;5284:49;;8909:2;8894:18;;8880:123::o;9235:158::-;;9330:14;;;9372:4;9359:18;;;9289:104::o;11788:117::-;10312:42;11875:5;10301:54;11850:5;11847:35;11837:2;;11896:1;;11886:12"},"methodIdentifiers":{"NETWORK()":"8759e6d1","create(address,uint256)":"0ecaea73","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getGaugeImplementation()":"39312dee","getOptimismGasLimit()":"a0566e72","getVault()":"8d928af8","isGaugeFromFactory(address)":"ce3cc8bd","setOptimismGasLimit(uint32)":"bf5fa772"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"optimismL1StandardBridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"optimismBal\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"targetNetwork\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"OptimismGasLimitModified\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"NETWORK\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOptimismGasLimit\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"setOptimismGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Optimism.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"getOptimismGasLimit()\":{\"notice\":\"Returns the gas limit for the Optimism side of the bridging transaction\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"},\"setOptimismGasLimit(uint32)\":{\"notice\":\"Set the gas limit for the Optimism side of the bridging transaction\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/optimistic/OptimisticRootGaugeFactory.sol\":\"OptimisticRootGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\":{\"keccak256\":\"0x31b489cbd755b3c789115af4cf3d7af2da15f59030345ac29ecf26a033fc806a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2cc164ca032440222b7984aebbad6a46a6c82eef33564d1c6d78408bafab9934\",\"dweb:/ipfs/QmdgixtcWUX8CFhrTkUiAAmSkpMG2FsZnK18QywDhFoFcp\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol\":{\"keccak256\":\"0x1208fef15dbb96160469c256a19f69d7f7f4798882a3504252ad25f89e36afcb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://556fc28a88f4798c5dd23cb4b25d8640bb0175e85d6a3093ec185e1d096e2924\",\"dweb:/ipfs/QmTyxuE1mPRSbn6XHm52qcHj78QrMUpXNHUUF3ZdENtQXU\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/optimistic/OptimisticRootGauge.sol\":{\"keccak256\":\"0x49a4656b91215987409a8f933c1fc9dd11782866ac7ffd220bbeb2af8b0a6e49\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6fbcd6e8b58c267106bcbf54a0d8d08d1e00a631f14e746146c66cd19e58e2e\",\"dweb:/ipfs/QmUBPQfUgBUA5V6frWox6zCQWMJsQFZABARgte15MXM5zM\"]},\"contracts/gauges/optimistic/OptimisticRootGaugeFactory.sol\":{\"keccak256\":\"0x2effb8012be2216f347ba6dda70f472454e61d1bbb312473d5210031774b0231\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b359ac9a83c52e88a8c6cb0edb13ec6b67c57df23bda4dba9bb22de3745e1770\",\"dweb:/ipfs/QmcodHXmN8vwSt8qotWFDARFhpeuL3wnYms4qYLxBkX2pA\"]}},\"version\":1}"}},"contracts/gauges/polygon/PolygonRootGauge.sol":{"IPolygonRootChainManager":{"abi":[{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"bytes","name":"depositData","type":"bytes"}],"name":"depositFor","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"depositFor(address,address,bytes)":"e3dec8fb"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"depositData\",\"type\":\"bytes\"}],\"name\":\"depositFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/polygon/PolygonRootGauge.sol\":\"IPolygonRootChainManager\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/polygon/PolygonRootGauge.sol\":{\"keccak256\":\"0x418782ff451d6b456c7034f4e4a7422bc5271d1b3176e81c2e1674ed7157c996\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94feb7b4d835cc765583eb0cb6b0536c1156df31e6f511ee35b91d29a0911d31\",\"dweb:/ipfs/QmUqgKGSoDV8vEtmspPVyszFGz6PcbhUuDzbG2SwssKwWx\"]}},\"version\":1}"},"PolygonRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IPolygonRootChainManager","name":"polygonRootChainManager","type":"address"},{"internalType":"address","name":"polygonERC20Predicate","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPolygonBridge","outputs":[{"internalType":"contract IPolygonRootChainManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPolygonERC20Predicate","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101c06040523480156200001257600080fd5b506040516200191338038062001913833981810160405260608110156200003857600080fd5b50805160208083015160409384015160016000908155855163e6dec36f60e01b81529551949592949193869391926001600160a01b0385169263e6dec36f926004808301939192829003018186803b1580156200009457600080fd5b505afa158015620000a9573d6000803e3d6000fd5b505050506040513d6020811015620000c057600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d60208110156200013557600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017e57600080fd5b505afa15801562000193573d6000803e3d6000fd5b505050506040513d6020811015620001aa57600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021b57600080fd5b505afa15801562000230573d6000803e3d6000fd5b505050506040513d60208110156200024757600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029b57600080fd5b505afa158015620002b0573d6000803e3d6000fd5b505050506040513d6020811015620002c757600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d60208110156200033a57600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b505161016052505060001960025550506001600160601b0319606092831b811661018052911b166101a0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c6114866200048d60003980610b6f5280610cb9525080610b4b5280610d7d5250806108585250806108375250806107ba52806108a45250806103c3528061057f528061065f5280610a93525080610462528061074852508061099a525080610eb45280610fb1525080610c975280610d4252506114866000f3fe6080604052600436106100e85760003560e01c80639f8676711161008a578063cd6dc68711610059578063cd6dc68714610298578063d34fb267146102de578063fe022cc9146102f3578063fe33859e14610308576100e8565b80639f86767114610251578063ab8f094514610266578063b02452251461027b578063c2c4c5c114610290576100e8565b80631b88094d116100c65780631b88094d146101955780634b820093146101d357806383f5c39b146102275780639c868ac01461023c576100e8565b806309400707146100ed57806310d3eb041461013f57806314e956f51461016b575b600080fd5b3480156100f957600080fd5b5061012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661031d565b60408051918252519081900360200190f35b34801561014b57600080fd5b506101696004803603602081101561016257600080fd5b50356103ab565b005b34801561017757600080fd5b5061012d6004803603602081101561018e57600080fd5b503561045b565b3480156101a157600080fd5b506101aa610529565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101df57600080fd5b50610213600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610546565b604080519115158252519081900360200190f35b34801561023357600080fd5b5061012d61054c565b34801561024857600080fd5b50610213610552565b34801561025d57600080fd5b5061012d61055b565b34801561027257600080fd5b50610169610567565b34801561028757600080fd5b5061012d610638565b61021361063d565b3480156102a457600080fd5b50610169600480360360408110156102bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2a565b3480156102ea57600080fd5b50610169610a7b565b3480156102ff57600080fd5b506101aa610b49565b34801561031457600080fd5b506101aa610b6d565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461044f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045881610b91565b50565b60006105237f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104ef57600080fd5b505afa158015610503573d6000803e3d6000fd5b505050506040513d602081101561051957600080fd5b5051600654610c2d565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461060b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b6000610647610c39565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106f8610c52565b905080821015610a1c57604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561078f57600080fd5b505af11580156107a3573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561092f57848111156107f45761092f565b62093a8081026000806108068361045b565b905082851015801561081c57508262093a800185105b156108d557828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088057fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ea9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107dc565b5060028490556004805483019055811580159061094f575060055460ff16155b15610a1857604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e257600080fd5b505af11580156109f6573d6000803e3d6000fd5b505050506040513d6020811015610a0c57600080fd5b50610a18905082610c7d565b5050505b600192505050610543610e3a565b610a3381610e41565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b1f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b670de0b6b3a7640000811115610bf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113f96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c4b60026000541415610190611053565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610cde73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611061565b600754604080516020808201859052825180830382018152828401938490527fe3dec8fb0000000000000000000000000000000000000000000000000000000090935273ffffffffffffffffffffffffffffffffffffffff938416604483018181527f00000000000000000000000000000000000000000000000000000000000000008087166064860152606060848601908152865160a487015286517f00000000000000000000000000000000000000000000000000000000000000009098169763e3dec8fb9794969295919260c4019185019080838360005b83811015610dd1578181015183820152602001610db9565b50505050905090810190601f168015610dfe5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610e1f57600080fd5b505af1158015610e33573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610eb057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1857600080fd5b505afa158015610f2c573d6000803e3d6000fd5b505050506040513d6020811015610f4257600080fd5b5051905080610f9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061142d6024913960400191505060405180910390fd5b6001819055610fa9610c52565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561101757600080fd5b505af115801561102b573d6000803e3d6000fd5b505050506040513d602081101561104157600080fd5b505160035561104f82610b91565b5050565b8161104f5761104f81611237565b80158015906111105750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156110e157600080fd5b505afa1580156110f5573d6000803e3d6000fd5b505050506040513d602081101561110b57600080fd5b505115155b156111a5576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111a5908490611261565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611232908490611261565b505050565b610458817f42414c000000000000000000000000000000000000000000000000000000000061137d565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112ca57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161128d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461132c576040519150601f19603f3d011682016040523d82523d6000602084013e611331565b606091505b50915091506000821415611349573d6000803e3d6000fd5b61137781516000148061136f575081806020019051602081101561136c57600080fd5b50515b6101a2611053565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212201dc7239744aba90b833a63fd22cc413726251c81a392d512e27f8749515e0aed64736f6c63430007010033","opcodes":"PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1913 CODESIZE SUB DUP1 PUSH3 0x1913 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE DUP6 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 MLOAD SWAP5 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 DUP7 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x11E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x230 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x323 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP2 SHL AND PUSH2 0x1A0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1486 PUSH3 0x48D PUSH1 0x0 CODECOPY DUP1 PUSH2 0xB6F MSTORE DUP1 PUSH2 0xCB9 MSTORE POP DUP1 PUSH2 0xB4B MSTORE DUP1 PUSH2 0xD7D MSTORE POP DUP1 PUSH2 0x858 MSTORE POP DUP1 PUSH2 0x837 MSTORE POP DUP1 PUSH2 0x7BA MSTORE DUP1 PUSH2 0x8A4 MSTORE POP DUP1 PUSH2 0x3C3 MSTORE DUP1 PUSH2 0x57F MSTORE DUP1 PUSH2 0x65F MSTORE DUP1 PUSH2 0xA93 MSTORE POP DUP1 PUSH2 0x462 MSTORE DUP1 PUSH2 0x748 MSTORE POP DUP1 PUSH2 0x99A MSTORE POP DUP1 PUSH2 0xEB4 MSTORE DUP1 PUSH2 0xFB1 MSTORE POP DUP1 PUSH2 0xC97 MSTORE DUP1 PUSH2 0xD42 MSTORE POP PUSH2 0x1486 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xCD6DC687 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0xFE022CC9 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xFE33859E EQ PUSH2 0x308 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x290 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x23C JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3AB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x45B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x529 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x546 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x552 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x55B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0x567 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x638 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x63D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0xA7B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0xB49 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0xB6D JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x44F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x458 DUP2 PUSH2 0xB91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x523 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x503 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC2D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x60B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x647 PUSH2 0xC39 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6F8 PUSH2 0xC52 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x78F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x92F JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F4 JUMPI PUSH2 0x92F JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x806 DUP4 PUSH2 0x45B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x81C JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D5 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x880 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EA SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7DC JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x94F JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA18 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA18 SWAP1 POP DUP3 PUSH2 0xC7D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x543 PUSH2 0xE3A JUMP JUMPDEST PUSH2 0xA33 DUP2 PUSH2 0xE41 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB1F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13F9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC4B PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1053 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xCDE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1061 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE DUP3 DUP5 ADD SWAP4 DUP5 SWAP1 MSTORE PUSH32 0xE3DEC8FB00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x44 DUP4 ADD DUP2 DUP2 MSTORE PUSH32 0x0 DUP1 DUP8 AND PUSH1 0x64 DUP7 ADD MSTORE PUSH1 0x60 PUSH1 0x84 DUP7 ADD SWAP1 DUP2 MSTORE DUP7 MLOAD PUSH1 0xA4 DUP8 ADD MSTORE DUP7 MLOAD PUSH32 0x0 SWAP1 SWAP9 AND SWAP8 PUSH4 0xE3DEC8FB SWAP8 SWAP5 SWAP7 SWAP3 SWAP6 SWAP2 SWAP3 PUSH1 0xC4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDD1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDB9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDFE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE33 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xEB0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x142D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xFA9 PUSH2 0xC52 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x102B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1041 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x104F DUP3 PUSH2 0xB91 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x104F JUMPI PUSH2 0x104F DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1110 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x11A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x11A5 SWAP1 DUP5 SWAP1 PUSH2 0x1261 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1232 SWAP1 DUP5 SWAP1 PUSH2 0x1261 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x458 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x137D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x12CA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x128D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x132C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1331 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1349 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1377 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x136F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1053 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212201DC7239744ABA90B833A63FD22CC4137 0x26 0x25 SHR DUP2 LOG3 SWAP3 0xD5 SLT 0xE2 PUSH32 0x8749515E0AED64736F6C63430007010033000000000000000000000000000000 ","sourceMap":"987:1629:106:-:0;;;1334:300;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1334:300:106;;;;;;;;;;;;2070:1:63;2175:7;:22;;;2339:30:89;;-1:-1:-1;2339:30:89;;;;1334:300:106;;;;;;;;2175:7:63;;-1:-1:-1;2339:28:89;;;-1:-1:-1;;2339:30:89;;;;;1334:300:106;;2339:30:89;;;;;:28;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2339:30:89;2398:29;;;-1:-1:-1;2398:29:89;;;;2339:30;;-1:-1:-1;2380:15:89;;-1:-1:-1;2398:27:89;;;-1:-1:-1;;2398:29:89;;;;;2339:30;;2398:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2398:29:89;2472:27;;;-1:-1:-1;2472:27:89;;;;2398:29;;-1:-1:-1;2437:32:89;;-1:-1:-1;2472:25:89;;;;;:27;;;;;2398:29;;2472:27;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2472:27:89;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2472:27;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;2472:27;;2665:23;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2665:23:89;2644:44;;-1:-1:-1;2644:44:89;;;2722:32;;;-1:-1:-1;2722:32:89;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;2665:23;;2722:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2722:32:89;2699:55;;2794:39;;;-1:-1:-1;2794:39:89;;;;-1:-1:-1;2794:37:89;;;-1:-1:-1;;2794:39:89;;;;;2722:32;;2794:39;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:39:89;2764:69;;2863:29;;;-1:-1:-1;2863:29:89;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;2794:39;;2863:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2863:29:89;2843:49;;-1:-1:-1;;;;3053:7:89;:27;-1:-1:-1;;;;;;;;1521:50:106::1;::::0;;;;;::::1;::::0;1581:46;;;::::1;::::0;-1:-1:-1;987:1629:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":3223},{"length":32,"start":3394}],"14642":[{"length":32,"start":3764},{"length":32,"start":4017}],"14644":[{"length":32,"start":2458}],"14646":[{"length":32,"start":1122},{"length":32,"start":1864}],"14648":[{"length":32,"start":963},{"length":32,"start":1407},{"length":32,"start":1631},{"length":32,"start":2707}],"14656":[{"length":32,"start":1978},{"length":32,"start":2212}],"14658":[{"length":32,"start":2103}],"14660":[{"length":32,"start":2136}],"17936":[{"length":32,"start":2891},{"length":32,"start":3453}],"17938":[{"length":32,"start":2927},{"length":32,"start":3257}]},"linkReferences":{},"object":"6080604052600436106100e85760003560e01c80639f8676711161008a578063cd6dc68711610059578063cd6dc68714610298578063d34fb267146102de578063fe022cc9146102f3578063fe33859e14610308576100e8565b80639f86767114610251578063ab8f094514610266578063b02452251461027b578063c2c4c5c114610290576100e8565b80631b88094d116100c65780631b88094d146101955780634b820093146101d357806383f5c39b146102275780639c868ac01461023c576100e8565b806309400707146100ed57806310d3eb041461013f57806314e956f51461016b575b600080fd5b3480156100f957600080fd5b5061012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661031d565b60408051918252519081900360200190f35b34801561014b57600080fd5b506101696004803603602081101561016257600080fd5b50356103ab565b005b34801561017757600080fd5b5061012d6004803603602081101561018e57600080fd5b503561045b565b3480156101a157600080fd5b506101aa610529565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101df57600080fd5b50610213600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610546565b604080519115158252519081900360200190f35b34801561023357600080fd5b5061012d61054c565b34801561024857600080fd5b50610213610552565b34801561025d57600080fd5b5061012d61055b565b34801561027257600080fd5b50610169610567565b34801561028757600080fd5b5061012d610638565b61021361063d565b3480156102a457600080fd5b50610169600480360360408110156102bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2a565b3480156102ea57600080fd5b50610169610a7b565b3480156102ff57600080fd5b506101aa610b49565b34801561031457600080fd5b506101aa610b6d565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461044f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045881610b91565b50565b60006105237f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104ef57600080fd5b505afa158015610503573d6000803e3d6000fd5b505050506040513d602081101561051957600080fd5b5051600654610c2d565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461060b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b6000610647610c39565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106f8610c52565b905080821015610a1c57604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561078f57600080fd5b505af11580156107a3573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561092f57848111156107f45761092f565b62093a8081026000806108068361045b565b905082851015801561081c57508262093a800185105b156108d557828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088057fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ea9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107dc565b5060028490556004805483019055811580159061094f575060055460ff16155b15610a1857604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e257600080fd5b505af11580156109f6573d6000803e3d6000fd5b505050506040513d6020811015610a0c57600080fd5b50610a18905082610c7d565b5050505b600192505050610543610e3a565b610a3381610e41565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b1f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b670de0b6b3a7640000811115610bf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113f96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c4b60026000541415610190611053565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610cde73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611061565b600754604080516020808201859052825180830382018152828401938490527fe3dec8fb0000000000000000000000000000000000000000000000000000000090935273ffffffffffffffffffffffffffffffffffffffff938416604483018181527f00000000000000000000000000000000000000000000000000000000000000008087166064860152606060848601908152865160a487015286517f00000000000000000000000000000000000000000000000000000000000000009098169763e3dec8fb9794969295919260c4019185019080838360005b83811015610dd1578181015183820152602001610db9565b50505050905090810190601f168015610dfe5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610e1f57600080fd5b505af1158015610e33573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610eb057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1857600080fd5b505afa158015610f2c573d6000803e3d6000fd5b505050506040513d6020811015610f4257600080fd5b5051905080610f9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061142d6024913960400191505060405180910390fd5b6001819055610fa9610c52565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561101757600080fd5b505af115801561102b573d6000803e3d6000fd5b505050506040513d602081101561104157600080fd5b505160035561104f82610b91565b5050565b8161104f5761104f81611237565b80158015906111105750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156110e157600080fd5b505afa1580156110f5573d6000803e3d6000fd5b505050506040513d602081101561110b57600080fd5b505115155b156111a5576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111a5908490611261565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611232908490611261565b505050565b610458817f42414c000000000000000000000000000000000000000000000000000000000061137d565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112ca57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161128d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461132c576040519150601f19603f3d011682016040523d82523d6000602084013e611331565b606091505b50915091506000821415611349573d6000803e3d6000fd5b61137781516000148061136f575081806020019051602081101561136c57600080fd5b50515b6101a2611053565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212201dc7239744aba90b833a63fd22cc413726251c81a392d512e27f8749515e0aed64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xCD6DC687 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0xFE022CC9 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xFE33859E EQ PUSH2 0x308 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x290 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x23C JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3AB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x45B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x529 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x546 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x552 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x55B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0x567 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x638 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x63D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0xA7B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0xB49 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0xB6D JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x44F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x458 DUP2 PUSH2 0xB91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x523 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x503 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC2D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x60B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x647 PUSH2 0xC39 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6F8 PUSH2 0xC52 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x78F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x92F JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F4 JUMPI PUSH2 0x92F JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x806 DUP4 PUSH2 0x45B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x81C JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D5 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x880 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EA SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7DC JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x94F JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA18 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA18 SWAP1 POP DUP3 PUSH2 0xC7D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x543 PUSH2 0xE3A JUMP JUMPDEST PUSH2 0xA33 DUP2 PUSH2 0xE41 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB1F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13F9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC4B PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1053 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xCDE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1061 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE DUP3 DUP5 ADD SWAP4 DUP5 SWAP1 MSTORE PUSH32 0xE3DEC8FB00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x44 DUP4 ADD DUP2 DUP2 MSTORE PUSH32 0x0 DUP1 DUP8 AND PUSH1 0x64 DUP7 ADD MSTORE PUSH1 0x60 PUSH1 0x84 DUP7 ADD SWAP1 DUP2 MSTORE DUP7 MLOAD PUSH1 0xA4 DUP8 ADD MSTORE DUP7 MLOAD PUSH32 0x0 SWAP1 SWAP9 AND SWAP8 PUSH4 0xE3DEC8FB SWAP8 SWAP5 SWAP7 SWAP3 SWAP6 SWAP2 SWAP3 PUSH1 0xC4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDD1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDB9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDFE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE33 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xEB0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x142D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xFA9 PUSH2 0xC52 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x102B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1041 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x104F DUP3 PUSH2 0xB91 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x104F JUMPI PUSH2 0x104F DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1110 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x11A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x11A5 SWAP1 DUP5 SWAP1 PUSH2 0x1261 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1232 SWAP1 DUP5 SWAP1 PUSH2 0x1261 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x458 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x137D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x12CA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x128D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x132C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1331 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1349 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1377 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x136F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1053 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212201DC7239744ABA90B833A63FD22CC4137 0x26 0x25 SHR DUP2 LOG3 SWAP3 0xD5 SLT 0xE2 PUSH32 0x8749515E0AED64736F6C63430007010033000000000000000000000000000000 ","sourceMap":"987:1629:106:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6895:191:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6895:191:89;;;;:::i;:::-;;;;;;;;;;;;;;;;7513:214;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7513:214:89;;:::i;:::-;;8159:199;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:199:89;;:::i;1873:99:106:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6789:100:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6789:100:89;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8038:115;;;;;;;;;;;;;:::i;7092:92::-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;6394:104::-;;;;;;;;;;;;;:::i;3697:2655::-;;;:::i;1640:227:106:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1640:227:106;;;;;;;;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;1978:125:106:-;;;;;;;;;;;;;:::i;2109:114::-;;;;;;;;;;;;;:::i;6895:191:89:-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8271:59:89;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;1873:99:106:-;1955:10;;;;1873:99;;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;8038:115::-;8128:18;;8038:115;:::o;7092:92::-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6394:104::-;6464:7;6394:104;:::o;3697:2655::-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;;4042:4:::1;4000:48;::::0;::::1;::::0;;;:33:::1;:16;:33;::::0;::::1;::::0;:48;;;;;-1:-1:-1;;4000:48:89;;;;;;;-1:-1:-1;4000:33:89;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5978:38;::::0;;;;;;;5989:10;;5978:38:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;;6246:4:::1;6225:27;::::0;::::1;::::0;;;:12:::1;:7;:12;::::0;::::1;::::0;:27;;;;;::::1;::::0;;;;;;;;-1:-1:-1;6225:12:89;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6270:29:89::1;::::0;-1:-1:-1;6286:12:89;6270:15:::1;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;1640:227:106:-;1787:40;1809:17;1787:21;:40::i;:::-;-1:-1:-1;1838:10:106;:22;;;;;;;;;;;;;;;1640:227::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7483:9;:17;;;;;;7350:157::o;1978:125:106:-;2072:24;1978:125;:::o;2109:114::-;2194:22;2109:114;:::o;7733:299:89:-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7929:18;:38;;;7982:43;;;;;;;;;;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;2229:385:106:-;2386:57;:21;:9;:21;2408:22;2432:10;2386:21;:57::i;:::-;2561:10;;2584:22;;;;;;;;;;;;;;;;;;;;;;;;;;2525:82;;;;:35;2561:10;;;2525:82;;;;;;2573:9;2525:82;;;;;;;;;;;;;;;;;;;;;;:24;:35;;;;;;2561:10;;2573:9;;2525:82;;;;;;;;;;;-1:-1:-1;2525:82:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2229:385;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3428:18:89;;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3601:33:89;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;;1256:4;1232:43;;;;:15;:43;;;;;;;;;:15;;;;;;:43;;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1232:43:64;:48;;1218:62;1214:183;;;1332:53;;;;;;;;;;1383:1;1332:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:22;1332:53;;;1296:90;;1324:5;;1296:19;:90::i;:::-;1443:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1466:22;1443:57;;;1407:94;;1435:5;;1407:19;:94::i;:::-;1001:507;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:64;3143:56;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getPolygonBridge()":"fe022cc9","getPolygonERC20Predicate()":"fe33859e","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IPolygonRootChainManager\",\"name\":\"polygonRootChainManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"polygonERC20Predicate\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPolygonBridge\",\"outputs\":[{\"internalType\":\"contract IPolygonRootChainManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPolygonERC20Predicate\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/polygon/PolygonRootGauge.sol\":\"PolygonRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/polygon/PolygonRootGauge.sol\":{\"keccak256\":\"0x418782ff451d6b456c7034f4e4a7422bc5271d1b3176e81c2e1674ed7157c996\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94feb7b4d835cc765583eb0cb6b0536c1156df31e6f511ee35b91d29a0911d31\",\"dweb:/ipfs/QmUqgKGSoDV8vEtmspPVyszFGz6PcbhUuDzbG2SwssKwWx\"]}},\"version\":1}"}},"contracts/gauges/polygon/PolygonRootGaugeFactory.sol":{"PolygonRootGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IPolygonRootChainManager","name":"polygonRootChainManager","type":"address"},{"internalType":"address","name":"polygonERC20Predicate","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051611e51380380611e5183398101604081905261002f9161009d565b82828260405161003e90610090565b61004a939291906100e9565b604051809103906000f080158015610066573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905550610124915050565b6119138061053e83390190565b6000806000606084860312156100b1578283fd5b83516100bc8161010c565b60208501519093506100cd8161010c565b60408501519092506100de8161010c565b809150509250925092565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b038116811461012157600080fd5b50565b61040b806101336000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea26469706673582212201a7bd22332439b7fab0fc7651a4bc3291ab2e0f7fedd5c6e63baeec14e55e14064736f6c634300070100336101c06040523480156200001257600080fd5b506040516200191338038062001913833981810160405260608110156200003857600080fd5b50805160208083015160409384015160016000908155855163e6dec36f60e01b81529551949592949193869391926001600160a01b0385169263e6dec36f926004808301939192829003018186803b1580156200009457600080fd5b505afa158015620000a9573d6000803e3d6000fd5b505050506040513d6020811015620000c057600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d60208110156200013557600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017e57600080fd5b505afa15801562000193573d6000803e3d6000fd5b505050506040513d6020811015620001aa57600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021b57600080fd5b505afa15801562000230573d6000803e3d6000fd5b505050506040513d60208110156200024757600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029b57600080fd5b505afa158015620002b0573d6000803e3d6000fd5b505050506040513d6020811015620002c757600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d60208110156200033a57600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b505161016052505060001960025550506001600160601b0319606092831b811661018052911b166101a0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c6114866200048d60003980610b6f5280610cb9525080610b4b5280610d7d5250806108585250806108375250806107ba52806108a45250806103c3528061057f528061065f5280610a93525080610462528061074852508061099a525080610eb45280610fb1525080610c975280610d4252506114866000f3fe6080604052600436106100e85760003560e01c80639f8676711161008a578063cd6dc68711610059578063cd6dc68714610298578063d34fb267146102de578063fe022cc9146102f3578063fe33859e14610308576100e8565b80639f86767114610251578063ab8f094514610266578063b02452251461027b578063c2c4c5c114610290576100e8565b80631b88094d116100c65780631b88094d146101955780634b820093146101d357806383f5c39b146102275780639c868ac01461023c576100e8565b806309400707146100ed57806310d3eb041461013f57806314e956f51461016b575b600080fd5b3480156100f957600080fd5b5061012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661031d565b60408051918252519081900360200190f35b34801561014b57600080fd5b506101696004803603602081101561016257600080fd5b50356103ab565b005b34801561017757600080fd5b5061012d6004803603602081101561018e57600080fd5b503561045b565b3480156101a157600080fd5b506101aa610529565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101df57600080fd5b50610213600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610546565b604080519115158252519081900360200190f35b34801561023357600080fd5b5061012d61054c565b34801561024857600080fd5b50610213610552565b34801561025d57600080fd5b5061012d61055b565b34801561027257600080fd5b50610169610567565b34801561028757600080fd5b5061012d610638565b61021361063d565b3480156102a457600080fd5b50610169600480360360408110156102bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2a565b3480156102ea57600080fd5b50610169610a7b565b3480156102ff57600080fd5b506101aa610b49565b34801561031457600080fd5b506101aa610b6d565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461044f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045881610b91565b50565b60006105237f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104ef57600080fd5b505afa158015610503573d6000803e3d6000fd5b505050506040513d602081101561051957600080fd5b5051600654610c2d565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461060b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b6000610647610c39565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106f8610c52565b905080821015610a1c57604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561078f57600080fd5b505af11580156107a3573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561092f57848111156107f45761092f565b62093a8081026000806108068361045b565b905082851015801561081c57508262093a800185105b156108d557828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088057fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ea9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107dc565b5060028490556004805483019055811580159061094f575060055460ff16155b15610a1857604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e257600080fd5b505af11580156109f6573d6000803e3d6000fd5b505050506040513d6020811015610a0c57600080fd5b50610a18905082610c7d565b5050505b600192505050610543610e3a565b610a3381610e41565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b1f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b670de0b6b3a7640000811115610bf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113f96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c4b60026000541415610190611053565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610cde73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611061565b600754604080516020808201859052825180830382018152828401938490527fe3dec8fb0000000000000000000000000000000000000000000000000000000090935273ffffffffffffffffffffffffffffffffffffffff938416604483018181527f00000000000000000000000000000000000000000000000000000000000000008087166064860152606060848601908152865160a487015286517f00000000000000000000000000000000000000000000000000000000000000009098169763e3dec8fb9794969295919260c4019185019080838360005b83811015610dd1578181015183820152602001610db9565b50505050905090810190601f168015610dfe5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610e1f57600080fd5b505af1158015610e33573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610eb057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1857600080fd5b505afa158015610f2c573d6000803e3d6000fd5b505050506040513d6020811015610f4257600080fd5b5051905080610f9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061142d6024913960400191505060405180910390fd5b6001819055610fa9610c52565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561101757600080fd5b505af115801561102b573d6000803e3d6000fd5b505050506040513d602081101561104157600080fd5b505160035561104f82610b91565b5050565b8161104f5761104f81611237565b80158015906111105750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156110e157600080fd5b505afa1580156110f5573d6000803e3d6000fd5b505050506040513d602081101561110b57600080fd5b505115155b156111a5576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111a5908490611261565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611232908490611261565b505050565b610458817f42414c000000000000000000000000000000000000000000000000000000000061137d565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112ca57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161128d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461132c576040519150601f19603f3d011682016040523d82523d6000602084013e611331565b606091505b50915091506000821415611349573d6000803e3d6000fd5b61137781516000148061136f575081806020019051602081101561136c57600080fd5b50515b6101a2611053565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212201dc7239744aba90b833a63fd22cc413726251c81a392d512e27f8749515e0aed64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1E51 CODESIZE SUB DUP1 PUSH2 0x1E51 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x9D JUMP JUMPDEST DUP3 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x3E SWAP1 PUSH2 0x90 JUMP JUMPDEST PUSH2 0x4A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x66 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x124 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1913 DUP1 PUSH2 0x53E DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xB1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0xBC DUP2 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0xCD DUP2 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0xDE DUP2 PUSH2 0x10C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x40B DUP1 PUSH2 0x133 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BYTE PUSH28 0xD22332439B7FAB0FC7651A4BC3291AB2E0F7FEDD5C6E63BAEEC14E55 0xE1 BLOCKHASH PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1913 CODESIZE SUB DUP1 PUSH3 0x1913 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE DUP6 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 MLOAD SWAP5 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 DUP7 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x11E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x230 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x323 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP2 SHL AND PUSH2 0x1A0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1486 PUSH3 0x48D PUSH1 0x0 CODECOPY DUP1 PUSH2 0xB6F MSTORE DUP1 PUSH2 0xCB9 MSTORE POP DUP1 PUSH2 0xB4B MSTORE DUP1 PUSH2 0xD7D MSTORE POP DUP1 PUSH2 0x858 MSTORE POP DUP1 PUSH2 0x837 MSTORE POP DUP1 PUSH2 0x7BA MSTORE DUP1 PUSH2 0x8A4 MSTORE POP DUP1 PUSH2 0x3C3 MSTORE DUP1 PUSH2 0x57F MSTORE DUP1 PUSH2 0x65F MSTORE DUP1 PUSH2 0xA93 MSTORE POP DUP1 PUSH2 0x462 MSTORE DUP1 PUSH2 0x748 MSTORE POP DUP1 PUSH2 0x99A MSTORE POP DUP1 PUSH2 0xEB4 MSTORE DUP1 PUSH2 0xFB1 MSTORE POP DUP1 PUSH2 0xC97 MSTORE DUP1 PUSH2 0xD42 MSTORE POP PUSH2 0x1486 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xCD6DC687 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0xFE022CC9 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xFE33859E EQ PUSH2 0x308 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x290 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x23C JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3AB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x45B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x529 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x546 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x552 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x55B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0x567 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x638 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x63D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0xA7B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0xB49 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0xB6D JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x44F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x458 DUP2 PUSH2 0xB91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x523 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x503 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC2D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x60B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x647 PUSH2 0xC39 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6F8 PUSH2 0xC52 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x78F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x92F JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F4 JUMPI PUSH2 0x92F JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x806 DUP4 PUSH2 0x45B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x81C JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D5 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x880 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EA SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7DC JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x94F JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA18 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA18 SWAP1 POP DUP3 PUSH2 0xC7D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x543 PUSH2 0xE3A JUMP JUMPDEST PUSH2 0xA33 DUP2 PUSH2 0xE41 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB1F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13F9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC4B PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1053 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xCDE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1061 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE DUP3 DUP5 ADD SWAP4 DUP5 SWAP1 MSTORE PUSH32 0xE3DEC8FB00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x44 DUP4 ADD DUP2 DUP2 MSTORE PUSH32 0x0 DUP1 DUP8 AND PUSH1 0x64 DUP7 ADD MSTORE PUSH1 0x60 PUSH1 0x84 DUP7 ADD SWAP1 DUP2 MSTORE DUP7 MLOAD PUSH1 0xA4 DUP8 ADD MSTORE DUP7 MLOAD PUSH32 0x0 SWAP1 SWAP9 AND SWAP8 PUSH4 0xE3DEC8FB SWAP8 SWAP5 SWAP7 SWAP3 SWAP6 SWAP2 SWAP3 PUSH1 0xC4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDD1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDB9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDFE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE33 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xEB0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x142D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xFA9 PUSH2 0xC52 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x102B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1041 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x104F DUP3 PUSH2 0xB91 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x104F JUMPI PUSH2 0x104F DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1110 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x11A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x11A5 SWAP1 DUP5 SWAP1 PUSH2 0x1261 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1232 SWAP1 DUP5 SWAP1 PUSH2 0x1261 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x458 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x137D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x12CA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x128D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x132C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1331 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1349 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1377 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x136F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1053 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212201DC7239744ABA90B833A63FD22CC4137 0x26 0x25 SHR DUP2 LOG3 SWAP3 0xD5 SLT 0xE2 PUSH32 0x8749515E0AED64736F6C63430007010033000000000000000000000000000000 ","sourceMap":"815:1086:107:-:0;;;874:322;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1074:6;1082:23;1107:21;1053:76;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;-1:-1:-1;815:1086:107;;-1:-1:-1;;815:1086:107;;;;;;;;;:::o;556:663:-1:-;;;;769:2;757:9;748:7;744:23;740:32;737:2;;;-1:-1;;775:12;737:2;260:6;254:13;272:63;329:5;272:63;:::i;:::-;968:2;1052:22;;459:13;827:104;;-1:-1;477:67;459:13;477:67;:::i;:::-;1121:2;1171:22;;83:13;976:108;;-1:-1;101:33;83:13;101:33;:::i;:::-;1129:74;;;;731:488;;;;;:::o;1740:572::-;-1:-1;;;;;2739:54;;;1447:80;;2739:54;;;2215:2;2200:18;;1447:80;2739:54;;;2298:2;2283:18;;1297:37;1987:2;1972:18;;1958:354::o;3483:117::-;-1:-1;;;;;2739:54;;3542:35;;3532:2;;3591:1;;3581:12;3532:2;3526:74;:::o;:::-;815:1086:107;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea26469706673582212201a7bd22332439b7fab0fc7651a4bc3291ab2e0f7fedd5c6e63baeec14e55e14064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BYTE PUSH28 0xD22332439B7FAB0FC7651A4BC3291AB2E0F7FEDD5C6E63BAEEC14E55 0xE1 BLOCKHASH PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"815:1086:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1672:227;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;1507:131::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1672:227:107:-;1752:7;1771:13;1787:9;:7;:9::i;:::-;1806:64;;;;;1771:25;;-1:-1:-1;1806:34:107;;;;;;:64;;1841:9;;1852:17;;1806:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1887:5:107;;-1:-1:-1;;;;1672:227:107;;;;;:::o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;1507:131::-;1605:26;;;1582:4;1605:26;;;:19;:26;;;;;;;;1507:131;;;;:::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;5:130:-1;72:20;;3226:42;3215:54;;3419:35;;3409:2;;3468:1;;3458:12;279:241;;383:2;371:9;362:7;358:23;354:32;351:2;;;-1:-1;;389:12;351:2;451:53;496:7;472:22;451:53;:::i;:::-;441:63;345:175;-1:-1;;;345:175::o;527:366::-;;;648:2;636:9;627:7;623:23;619:32;616:2;;;-1:-1;;654:12;616:2;716:53;761:7;737:22;716:53;:::i;:::-;706:63;806:2;845:22;;;;209:20;;-1:-1;;;610:283::o;1582:222::-;3226:42;3215:54;;;;971:37;;1709:2;1694:18;;1680:124::o;1811:333::-;3226:42;3215:54;;;;971:37;;2130:2;2115:18;;1533:37;1966:2;1951:18;;1937:207::o;2151:210::-;3127:13;;3120:21;1085:34;;2272:2;2257:18;;2243:118::o;2368:416::-;2568:2;2582:47;;;1356:2;2553:18;;;2895:19;1392:24;2935:14;;;1372:45;1436:12;;;2539:245::o"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getGaugeImplementation()":"39312dee","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IPolygonRootChainManager\",\"name\":\"polygonRootChainManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"polygonERC20Predicate\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Polygon.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/polygon/PolygonRootGaugeFactory.sol\":\"PolygonRootGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/polygon/PolygonRootGauge.sol\":{\"keccak256\":\"0x418782ff451d6b456c7034f4e4a7422bc5271d1b3176e81c2e1674ed7157c996\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94feb7b4d835cc765583eb0cb6b0536c1156df31e6f511ee35b91d29a0911d31\",\"dweb:/ipfs/QmUqgKGSoDV8vEtmspPVyszFGz6PcbhUuDzbG2SwssKwWx\"]},\"contracts/gauges/polygon/PolygonRootGaugeFactory.sol\":{\"keccak256\":\"0xf308ffa4d4ed84755542fa343a42ff6e1e8e5181492a78ff4d4bbd302b3f6e8e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e0d3c31702078219cf0111d4b6bab4656eea96ca864f442f543a6e00a3471d5a\",\"dweb:/ipfs/QmWFbdKyq1KBTwYTzLyDYKgjuApY2ZQn9b1AzxctHNPV1p\"]}},\"version\":1}"}},"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol":{"IPolygonZkEVMBridge":{"abi":[{"inputs":[{"internalType":"uint32","name":"destinationNetwork","type":"uint32"},{"internalType":"address","name":"destinationAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"forceUpdateGlobalExitRoot","type":"bool"},{"internalType":"bytes","name":"permitData","type":"bytes"}],"name":"bridgeAsset","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"bridgeAsset(uint32,address,uint256,address,bool,bytes)":"cd586579"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"forceUpdateGlobalExitRoot\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"permitData\",\"type\":\"bytes\"}],\"name\":\"bridgeAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol\":\"IPolygonZkEVMBridge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol\":{\"keccak256\":\"0xd9c7da32d4ddaf6e32a41af727737a1283fef2792d7f1f06a5eeed4d51e46683\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e84183dbe59c339d19689101bef9c96d0dea0fb459b84fa92196c46c53092382\",\"dweb:/ipfs/QmSb3CzCmonxYztH2unTccSaXkdQv3KyYY1ThP1saLeT3S\"]}},\"version\":1}"},"PolygonZkEVMRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IPolygonZkEVMBridge","name":"polygonZkEVMBridge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPolygonZkEVMBridge","outputs":[{"internalType":"contract IPolygonZkEVMBridge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101a06040523480156200001257600080fd5b506040516200185138038062001851833981810160405260408110156200003857600080fd5b508051602091820151600160009081556040805163e6dec36f60e01b815290519394929385936001600160a01b0385169263e6dec36f9260048083019392829003018186803b1580156200008b57600080fd5b505afa158015620000a0573d6000803e3d6000fd5b505050506040513d6020811015620000b757600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010057600080fd5b505afa15801562000115573d6000803e3d6000fd5b505050506040513d60208110156200012c57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017557600080fd5b505afa1580156200018a573d6000803e3d6000fd5b505050506040513d6020811015620001a157600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021257600080fd5b505afa15801562000227573d6000803e3d6000fd5b505050506040513d60208110156200023e57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d6020811015620002be57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030557600080fd5b505afa1580156200031a573d6000803e3d6000fd5b505050506040513d60208110156200033157600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200037857600080fd5b505afa1580156200038d573d6000803e3d6000fd5b505050506040513d6020811015620003a457600080fd5b505161016052505060001960025550506001600160601b031960609190911b16610180525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6113e162000470600039806102ff5280610c755280610d3252508061085c52508061083b5250806107be52806108a85250806103c8528061058352806106635280610a97525080610467528061074c52508061099e525080610e0f5280610f0c525080610c535280610cf352506113e16000f3fe6080604052600436106100dd5760003560e01c80639c868ac01161007f578063b024522511610059578063b024522514610285578063c2c4c5c11461029a578063cd6dc687146102a2578063d34fb267146102e8576100dd565b80639c868ac0146102465780639f8676711461025b578063ab8f094514610270576100dd565b806314e956f5116100bb57806314e956f51461019e5780631b88094d146101c85780634b820093146101dd57806383f5c39b14610231576100dd565b806304ceb300146100e2578063094007071461012057806310d3eb0414610172575b600080fd5b3480156100ee57600080fd5b506100f76102fd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561012c57600080fd5b506101606004803603602081101561014357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610322565b60408051918252519081900360200190f35b34801561017e57600080fd5b5061019c6004803603602081101561019557600080fd5b50356103b0565b005b3480156101aa57600080fd5b50610160600480360360208110156101c157600080fd5b5035610460565b3480156101d457600080fd5b506100f761052e565b3480156101e957600080fd5b5061021d6004803603602081101561020057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661054a565b604080519115158252519081900360200190f35b34801561023d57600080fd5b50610160610550565b34801561025257600080fd5b5061021d610556565b34801561026757600080fd5b5061016061055f565b34801561027c57600080fd5b5061019c61056b565b34801561029157600080fd5b5061016061063c565b61021d610641565b3480156102ae57600080fd5b5061019c600480360360408110156102c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2e565b3480156102f457600080fd5b5061019c610a7f565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461045457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045d81610b4d565b50565b60006105287f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104f457600080fd5b505afa158015610508573d6000803e3d6000fd5b505050506040513d602081101561051e57600080fd5b5051600654610be9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461060f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b600061064b610bf5565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106fc610c0e565b905080821015610a2057604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561079357600080fd5b505af11580156107a7573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561093357848111156107f857610933565b62093a80810260008061080a83610460565b905082851015801561082057508262093a800185105b156108d957828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088457fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ee9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107e0565b50600284905560048054830190558115801590610953575060055460ff16155b15610a1c57604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e657600080fd5b505af11580156109fa573d6000803e3d6000fd5b505050506040513d6020811015610a1057600080fd5b50610a1c905082610c39565b5050505b60019250505061031f610d95565b610a3781610d9c565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113546034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c0760026000541415610190610fae565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610c9a73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610fbc565b600754604080517fcd58657900000000000000000000000000000000000000000000000000000000815260016004820181905273ffffffffffffffffffffffffffffffffffffffff9384166024830152604482018590527f000000000000000000000000000000000000000000000000000000000000000084166064830152608482015260c060a4820152600060c4820181905291517f00000000000000000000000000000000000000000000000000000000000000009093169263cd586579926101048084019391929182900301818387803b158015610d7a57600080fd5b505af1158015610d8e573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7357600080fd5b505afa158015610e87573d6000803e3d6000fd5b505050506040513d6020811015610e9d57600080fd5b5051905080610ef7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113886024913960400191505060405180910390fd5b6001819055610f04610c0e565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f7257600080fd5b505af1158015610f86573d6000803e3d6000fd5b505050506040513d6020811015610f9c57600080fd5b5051600355610faa82610b4d565b5050565b81610faa57610faa81611192565b801580159061106b5750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561103c57600080fd5b505afa158015611050573d6000803e3d6000fd5b505050506040513d602081101561106657600080fd5b505115155b15611100576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111009084906111bc565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261118d9084906111bc565b505050565b61045d817f42414c00000000000000000000000000000000000000000000000000000000006112d8565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061122557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016111e8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611287576040519150601f19603f3d011682016040523d82523d6000602084013e61128c565b606091505b509150915060008214156112a4573d6000803e3d6000fd5b6112d28151600014806112ca57508180602001905160208110156112c757600080fd5b50515b6101a2610fae565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212204d2be520c1e062061f05e17498249fcf846d480e9c2984ef57e16a8948fb86eb64736f6c63430007010033","opcodes":"PUSH2 0x1A0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1851 CODESIZE SUB DUP1 PUSH3 0x1851 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 DUP6 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x18A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x227 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x31A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x38D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH2 0x180 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x13E1 PUSH3 0x470 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2FF MSTORE DUP1 PUSH2 0xC75 MSTORE DUP1 PUSH2 0xD32 MSTORE POP DUP1 PUSH2 0x85C MSTORE POP DUP1 PUSH2 0x83B MSTORE POP DUP1 PUSH2 0x7BE MSTORE DUP1 PUSH2 0x8A8 MSTORE POP DUP1 PUSH2 0x3C8 MSTORE DUP1 PUSH2 0x583 MSTORE DUP1 PUSH2 0x663 MSTORE DUP1 PUSH2 0xA97 MSTORE POP DUP1 PUSH2 0x467 MSTORE DUP1 PUSH2 0x74C MSTORE POP DUP1 PUSH2 0x99E MSTORE POP DUP1 PUSH2 0xE0F MSTORE DUP1 PUSH2 0xF0C MSTORE POP DUP1 PUSH2 0xC53 MSTORE DUP1 PUSH2 0xCF3 MSTORE POP PUSH2 0x13E1 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C868AC0 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2E8 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x270 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x231 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x4CEB300 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x172 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x322 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3B0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x460 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x52E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x54A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x550 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x556 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x55F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH2 0x56B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x21D PUSH2 0x641 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH2 0xA7F JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x454 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x45D DUP2 PUSH2 0xB4D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x508 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xBE9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x60F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64B PUSH2 0xBF5 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6FC PUSH2 0xC0E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x933 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI PUSH2 0x933 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x80A DUP4 PUSH2 0x460 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x820 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D9 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x884 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EE SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x953 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA1C SWAP1 POP DUP3 PUSH2 0xC39 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x31F PUSH2 0xD95 JUMP JUMPDEST PUSH2 0xA37 DUP2 PUSH2 0xD9C JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1354 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC07 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xFAE JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xC9A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0xFBC JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xCD58657900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 DUP5 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xC4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP4 AND SWAP3 PUSH4 0xCD586579 SWAP3 PUSH2 0x104 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE87 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xEF7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1388 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF04 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0xFAA DUP3 PUSH2 0xB4D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0xFAA JUMPI PUSH2 0xFAA DUP2 PUSH2 0x1192 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x106B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x103C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1050 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1066 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1100 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1100 SWAP1 DUP5 SWAP1 PUSH2 0x11BC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x118D SWAP1 DUP5 SWAP1 PUSH2 0x11BC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x45D DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x12D8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1225 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x11E8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1287 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x128C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x12A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x12D2 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x12CA JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0xFAE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212204D2BE520C1E062061F05E17498249FCF DUP5 PUSH14 0x480E9C2984EF57E16A8948FB86EB PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1246:1527:108:-:0;;;1656:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1656:163:108;;;;;;;2070:1:63;2175:7;:22;;;1656:163:108;2339:30:89;;-1:-1:-1;2339:30:89;;;;1656:163:108;;;;;;-1:-1:-1;2339:28:89;;;-1:-1:-1;;2339:30:89;;;;;1656:163:108;2339:30:89;;;;;:28;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2339:30:89;2398:29;;;-1:-1:-1;2398:29:89;;;;2339:30;;-1:-1:-1;2380:15:89;;-1:-1:-1;2398:27:89;;;-1:-1:-1;;2398:29:89;;;;;2339:30;;2398:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2398:29:89;2472:27;;;-1:-1:-1;2472:27:89;;;;2398:29;;-1:-1:-1;2437:32:89;;-1:-1:-1;2472:25:89;;;;;:27;;;;;2398:29;;2472:27;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2472:27:89;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2472:27;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;2472:27;;2665:23;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2665:23:89;2644:44;;-1:-1:-1;2644:44:89;;;2722:32;;;-1:-1:-1;2722:32:89;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;2665:23;;2722:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2722:32:89;2699:55;;2794:39;;;-1:-1:-1;2794:39:89;;;;-1:-1:-1;2794:37:89;;;-1:-1:-1;;2794:39:89;;;;;2722:32;;2794:39;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:39:89;2764:69;;2863:29;;;-1:-1:-1;2863:29:89;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;2794:39;;2863:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2863:29:89;2843:49;;-1:-1:-1;;;;3053:7:89;:27;-1:-1:-1;;;;;;;;1772:40:108::1;::::0;;;;;::::1;::::0;-1:-1:-1;1246:1527:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":3155},{"length":32,"start":3315}],"14642":[{"length":32,"start":3599},{"length":32,"start":3852}],"14644":[{"length":32,"start":2462}],"14646":[{"length":32,"start":1127},{"length":32,"start":1868}],"14648":[{"length":32,"start":968},{"length":32,"start":1411},{"length":32,"start":1635},{"length":32,"start":2711}],"14656":[{"length":32,"start":1982},{"length":32,"start":2216}],"14658":[{"length":32,"start":2107}],"14660":[{"length":32,"start":2140}],"18117":[{"length":32,"start":767},{"length":32,"start":3189},{"length":32,"start":3378}]},"linkReferences":{},"object":"6080604052600436106100dd5760003560e01c80639c868ac01161007f578063b024522511610059578063b024522514610285578063c2c4c5c11461029a578063cd6dc687146102a2578063d34fb267146102e8576100dd565b80639c868ac0146102465780639f8676711461025b578063ab8f094514610270576100dd565b806314e956f5116100bb57806314e956f51461019e5780631b88094d146101c85780634b820093146101dd57806383f5c39b14610231576100dd565b806304ceb300146100e2578063094007071461012057806310d3eb0414610172575b600080fd5b3480156100ee57600080fd5b506100f76102fd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561012c57600080fd5b506101606004803603602081101561014357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610322565b60408051918252519081900360200190f35b34801561017e57600080fd5b5061019c6004803603602081101561019557600080fd5b50356103b0565b005b3480156101aa57600080fd5b50610160600480360360208110156101c157600080fd5b5035610460565b3480156101d457600080fd5b506100f761052e565b3480156101e957600080fd5b5061021d6004803603602081101561020057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661054a565b604080519115158252519081900360200190f35b34801561023d57600080fd5b50610160610550565b34801561025257600080fd5b5061021d610556565b34801561026757600080fd5b5061016061055f565b34801561027c57600080fd5b5061019c61056b565b34801561029157600080fd5b5061016061063c565b61021d610641565b3480156102ae57600080fd5b5061019c600480360360408110156102c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2e565b3480156102f457600080fd5b5061019c610a7f565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461045457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045d81610b4d565b50565b60006105287f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104f457600080fd5b505afa158015610508573d6000803e3d6000fd5b505050506040513d602081101561051e57600080fd5b5051600654610be9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461060f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b600061064b610bf5565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106fc610c0e565b905080821015610a2057604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561079357600080fd5b505af11580156107a7573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561093357848111156107f857610933565b62093a80810260008061080a83610460565b905082851015801561082057508262093a800185105b156108d957828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088457fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ee9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107e0565b50600284905560048054830190558115801590610953575060055460ff16155b15610a1c57604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e657600080fd5b505af11580156109fa573d6000803e3d6000fd5b505050506040513d6020811015610a1057600080fd5b50610a1c905082610c39565b5050505b60019250505061031f610d95565b610a3781610d9c565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113546034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c0760026000541415610190610fae565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610c9a73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610fbc565b600754604080517fcd58657900000000000000000000000000000000000000000000000000000000815260016004820181905273ffffffffffffffffffffffffffffffffffffffff9384166024830152604482018590527f000000000000000000000000000000000000000000000000000000000000000084166064830152608482015260c060a4820152600060c4820181905291517f00000000000000000000000000000000000000000000000000000000000000009093169263cd586579926101048084019391929182900301818387803b158015610d7a57600080fd5b505af1158015610d8e573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7357600080fd5b505afa158015610e87573d6000803e3d6000fd5b505050506040513d6020811015610e9d57600080fd5b5051905080610ef7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113886024913960400191505060405180910390fd5b6001819055610f04610c0e565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f7257600080fd5b505af1158015610f86573d6000803e3d6000fd5b505050506040513d6020811015610f9c57600080fd5b5051600355610faa82610b4d565b5050565b81610faa57610faa81611192565b801580159061106b5750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561103c57600080fd5b505afa158015611050573d6000803e3d6000fd5b505050506040513d602081101561106657600080fd5b505115155b15611100576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111009084906111bc565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261118d9084906111bc565b505050565b61045d817f42414c00000000000000000000000000000000000000000000000000000000006112d8565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061122557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016111e8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611287576040519150601f19603f3d011682016040523d82523d6000602084013e61128c565b606091505b509150915060008214156112a4573d6000803e3d6000fd5b6112d28151600014806112ca57508180602001905160208110156112c757600080fd5b50515b6101a2610fae565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212204d2be520c1e062061f05e17498249fcf846d480e9c2984ef57e16a8948fb86eb64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C868AC0 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2E8 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x270 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x231 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x4CEB300 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x172 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x322 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3B0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x460 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x52E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x54A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x550 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x556 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x55F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH2 0x56B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x21D PUSH2 0x641 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH2 0xA7F JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x454 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x45D DUP2 PUSH2 0xB4D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x508 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xBE9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x60F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64B PUSH2 0xBF5 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6FC PUSH2 0xC0E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x933 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI PUSH2 0x933 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x80A DUP4 PUSH2 0x460 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x820 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D9 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x884 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EE SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x953 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA1C SWAP1 POP DUP3 PUSH2 0xC39 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x31F PUSH2 0xD95 JUMP JUMPDEST PUSH2 0xA37 DUP2 PUSH2 0xD9C JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1354 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC07 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xFAE JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xC9A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0xFBC JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xCD58657900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 DUP5 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xC4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP4 AND SWAP3 PUSH4 0xCD586579 SWAP3 PUSH2 0x104 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE87 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xEF7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1388 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF04 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0xFAA DUP3 PUSH2 0xB4D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0xFAA JUMPI PUSH2 0xFAA DUP2 PUSH2 0x1192 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x106B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x103C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1050 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1066 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1100 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1100 SWAP1 DUP5 SWAP1 PUSH2 0x11BC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x118D SWAP1 DUP5 SWAP1 PUSH2 0x11BC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x45D DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x12D8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1225 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x11E8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1287 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x128C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x12A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x12D2 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x12CA JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0xFAE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212204D2BE520C1E062061F05E17498249FCF DUP5 PUSH14 0x480E9C2984EF57E16A8948FB86EB PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1246:1527:108:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2163:120;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6895:191:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6895:191:89;;;;:::i;:::-;;;;;;;;;;;;;;;;7513:214;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7513:214:89;;:::i;:::-;;8159:199;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:199:89;;:::i;2058:99:108:-;;;;;;;;;;;;;:::i;6789:100:89:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6789:100:89;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8038:115;;;;;;;;;;;;;:::i;7092:92::-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;6394:104::-;;;;;;;;;;;;;:::i;3697:2655::-;;;:::i;1825:227:108:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1825:227:108;;;;;;;;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;2163:120:108:-;2257:19;2163:120;;:::o;6895:191:89:-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8271:59:89;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;2058:99:108:-;2140:10;;;;2058:99;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;8038:115::-;8128:18;;8038:115;:::o;7092:92::-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6394:104::-;6464:7;6394:104;:::o;3697:2655::-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;;4042:4:::1;4000:48;::::0;::::1;::::0;;;:33:::1;:16;:33;::::0;::::1;::::0;:48;;;;;-1:-1:-1;;4000:48:89;;;;;;;-1:-1:-1;4000:33:89;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5978:38;::::0;;;;;;;5989:10;;5978:38:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;;6246:4:::1;6225:27;::::0;::::1;::::0;;;:12:::1;:7;:12;::::0;::::1;::::0;:27;;;;;::::1;::::0;;;;;;;;-1:-1:-1;6225:12:89;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6270:29:89::1;::::0;-1:-1:-1;6286:12:89;6270:15:::1;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;1825:227:108:-;1972:40;1994:17;1972:21;:40::i;:::-;-1:-1:-1;2023:10:108;:22;;;;;;;;;;;;;;;1825:227::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7929:18;:38;;;7982:43;;;;;;;;;;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;2289:482:108:-;2362:63;:21;:9;:21;2392:19;2414:10;2362:21;:63::i;:::-;2628:10;;2547:217;;;;;;1448:1;2547:217;;;;;;:31;2628:10;;;2547:217;;;;;;;;;;2684:9;2547:217;;;;;;;;;;;;;;;-1:-1:-1;2547:217:108;;;;;;;;:19;:31;;;;;;:217;;;;;-1:-1:-1;;2547:217:108;;;;;;-1:-1:-1;2547:31:108;:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2289:482;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3428:18:89;;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3601:33:89;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;;1256:4;1232:43;;;;:15;:43;;;;;;;;;:15;;;;;;:43;;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1232:43:64;:48;;1218:62;1214:183;;;1332:53;;;;;;;;;;1383:1;1332:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:22;1332:53;;;1296:90;;1324:5;;1296:19;:90::i;:::-;1443:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1466:22;1443:57;;;1407:94;;1435:5;;1407:19;:94::i;:::-;1001:507;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:64;3143:56;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getPolygonZkEVMBridge()":"04ceb300","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IPolygonZkEVMBridge\",\"name\":\"polygonZkEVMBridge\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPolygonZkEVMBridge\",\"outputs\":[{\"internalType\":\"contract IPolygonZkEVMBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Documentation is at https://zkevm.polygon.technology/docs/category/zkevm-bridge.\",\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"notice\":\"Root Gauge for the Polygon zkEVM network.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol\":\"PolygonZkEVMRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol\":{\"keccak256\":\"0xd9c7da32d4ddaf6e32a41af727737a1283fef2792d7f1f06a5eeed4d51e46683\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e84183dbe59c339d19689101bef9c96d0dea0fb459b84fa92196c46c53092382\",\"dweb:/ipfs/QmSb3CzCmonxYztH2unTccSaXkdQv3KyYY1ThP1saLeT3S\"]}},\"version\":1}"}},"contracts/gauges/zkevm/PolygonZkEVMRootGaugeFactory.sol":{"PolygonZkEVMRootGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IPolygonZkEVMBridge","name":"zkEVMBridge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051611d70380380611d7083398101604081905261002f9161009a565b818160405161003d9061008d565b6100489291906100d3565b604051809103906000f080158015610064573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055506101059050565b6118518061051f83390190565b600080604083850312156100ac578182fd5b82516100b7816100ed565b60208401519092506100c8816100ed565b809150509250929050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b038116811461010257600080fd5b50565b61040b806101146000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea2646970667358221220ba7be6c83fb39bb8f489c573440768d1afa055febb8516eb3e9f8b4e2b446ebb64736f6c634300070100336101a06040523480156200001257600080fd5b506040516200185138038062001851833981810160405260408110156200003857600080fd5b508051602091820151600160009081556040805163e6dec36f60e01b815290519394929385936001600160a01b0385169263e6dec36f9260048083019392829003018186803b1580156200008b57600080fd5b505afa158015620000a0573d6000803e3d6000fd5b505050506040513d6020811015620000b757600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010057600080fd5b505afa15801562000115573d6000803e3d6000fd5b505050506040513d60208110156200012c57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017557600080fd5b505afa1580156200018a573d6000803e3d6000fd5b505050506040513d6020811015620001a157600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021257600080fd5b505afa15801562000227573d6000803e3d6000fd5b505050506040513d60208110156200023e57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d6020811015620002be57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030557600080fd5b505afa1580156200031a573d6000803e3d6000fd5b505050506040513d60208110156200033157600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200037857600080fd5b505afa1580156200038d573d6000803e3d6000fd5b505050506040513d6020811015620003a457600080fd5b505161016052505060001960025550506001600160601b031960609190911b16610180525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6113e162000470600039806102ff5280610c755280610d3252508061085c52508061083b5250806107be52806108a85250806103c8528061058352806106635280610a97525080610467528061074c52508061099e525080610e0f5280610f0c525080610c535280610cf352506113e16000f3fe6080604052600436106100dd5760003560e01c80639c868ac01161007f578063b024522511610059578063b024522514610285578063c2c4c5c11461029a578063cd6dc687146102a2578063d34fb267146102e8576100dd565b80639c868ac0146102465780639f8676711461025b578063ab8f094514610270576100dd565b806314e956f5116100bb57806314e956f51461019e5780631b88094d146101c85780634b820093146101dd57806383f5c39b14610231576100dd565b806304ceb300146100e2578063094007071461012057806310d3eb0414610172575b600080fd5b3480156100ee57600080fd5b506100f76102fd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561012c57600080fd5b506101606004803603602081101561014357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610322565b60408051918252519081900360200190f35b34801561017e57600080fd5b5061019c6004803603602081101561019557600080fd5b50356103b0565b005b3480156101aa57600080fd5b50610160600480360360208110156101c157600080fd5b5035610460565b3480156101d457600080fd5b506100f761052e565b3480156101e957600080fd5b5061021d6004803603602081101561020057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661054a565b604080519115158252519081900360200190f35b34801561023d57600080fd5b50610160610550565b34801561025257600080fd5b5061021d610556565b34801561026757600080fd5b5061016061055f565b34801561027c57600080fd5b5061019c61056b565b34801561029157600080fd5b5061016061063c565b61021d610641565b3480156102ae57600080fd5b5061019c600480360360408110156102c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2e565b3480156102f457600080fd5b5061019c610a7f565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461045457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045d81610b4d565b50565b60006105287f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104f457600080fd5b505afa158015610508573d6000803e3d6000fd5b505050506040513d602081101561051e57600080fd5b5051600654610be9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461060f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b600061064b610bf5565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106fc610c0e565b905080821015610a2057604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561079357600080fd5b505af11580156107a7573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561093357848111156107f857610933565b62093a80810260008061080a83610460565b905082851015801561082057508262093a800185105b156108d957828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088457fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ee9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107e0565b50600284905560048054830190558115801590610953575060055460ff16155b15610a1c57604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e657600080fd5b505af11580156109fa573d6000803e3d6000fd5b505050506040513d6020811015610a1057600080fd5b50610a1c905082610c39565b5050505b60019250505061031f610d95565b610a3781610d9c565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113546034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c0760026000541415610190610fae565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610c9a73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610fbc565b600754604080517fcd58657900000000000000000000000000000000000000000000000000000000815260016004820181905273ffffffffffffffffffffffffffffffffffffffff9384166024830152604482018590527f000000000000000000000000000000000000000000000000000000000000000084166064830152608482015260c060a4820152600060c4820181905291517f00000000000000000000000000000000000000000000000000000000000000009093169263cd586579926101048084019391929182900301818387803b158015610d7a57600080fd5b505af1158015610d8e573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7357600080fd5b505afa158015610e87573d6000803e3d6000fd5b505050506040513d6020811015610e9d57600080fd5b5051905080610ef7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113886024913960400191505060405180910390fd5b6001819055610f04610c0e565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f7257600080fd5b505af1158015610f86573d6000803e3d6000fd5b505050506040513d6020811015610f9c57600080fd5b5051600355610faa82610b4d565b5050565b81610faa57610faa81611192565b801580159061106b5750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561103c57600080fd5b505afa158015611050573d6000803e3d6000fd5b505050506040513d602081101561106657600080fd5b505115155b15611100576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111009084906111bc565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261118d9084906111bc565b505050565b61045d817f42414c00000000000000000000000000000000000000000000000000000000006112d8565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061122557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016111e8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611287576040519150601f19603f3d011682016040523d82523d6000602084013e61128c565b606091505b509150915060008214156112a4573d6000803e3d6000fd5b6112d28151600014806112ca57508180602001905160208110156112c757600080fd5b50515b6101a2610fae565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212204d2be520c1e062061f05e17498249fcf846d480e9c2984ef57e16a8948fb86eb64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D70 CODESIZE SUB DUP1 PUSH2 0x1D70 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x9A JUMP JUMPDEST DUP2 DUP2 PUSH1 0x40 MLOAD PUSH2 0x3D SWAP1 PUSH2 0x8D JUMP JUMPDEST PUSH2 0x48 SWAP3 SWAP2 SWAP1 PUSH2 0xD3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x64 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x105 SWAP1 POP JUMP JUMPDEST PUSH2 0x1851 DUP1 PUSH2 0x51F DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xAC JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0xB7 DUP2 PUSH2 0xED JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0xC8 DUP2 PUSH2 0xED JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x40B DUP1 PUSH2 0x114 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA PUSH28 0xE6C83FB39BB8F489C573440768D1AFA055FEBB8516EB3E9F8B4E2B44 PUSH15 0xBB64736F6C634300070100336101A0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1851 CODESIZE SUB DUP1 PUSH3 0x1851 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 DUP6 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x18A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x227 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x31A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x38D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH2 0x180 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x13E1 PUSH3 0x470 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2FF MSTORE DUP1 PUSH2 0xC75 MSTORE DUP1 PUSH2 0xD32 MSTORE POP DUP1 PUSH2 0x85C MSTORE POP DUP1 PUSH2 0x83B MSTORE POP DUP1 PUSH2 0x7BE MSTORE DUP1 PUSH2 0x8A8 MSTORE POP DUP1 PUSH2 0x3C8 MSTORE DUP1 PUSH2 0x583 MSTORE DUP1 PUSH2 0x663 MSTORE DUP1 PUSH2 0xA97 MSTORE POP DUP1 PUSH2 0x467 MSTORE DUP1 PUSH2 0x74C MSTORE POP DUP1 PUSH2 0x99E MSTORE POP DUP1 PUSH2 0xE0F MSTORE DUP1 PUSH2 0xF0C MSTORE POP DUP1 PUSH2 0xC53 MSTORE DUP1 PUSH2 0xCF3 MSTORE POP PUSH2 0x13E1 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C868AC0 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2E8 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x270 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x231 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x4CEB300 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x172 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x322 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3B0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x460 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x52E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x54A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x550 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x556 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x55F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH2 0x56B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x21D PUSH2 0x641 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH2 0xA7F JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x454 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x45D DUP2 PUSH2 0xB4D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x508 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xBE9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x60F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64B PUSH2 0xBF5 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6FC PUSH2 0xC0E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x933 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI PUSH2 0x933 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x80A DUP4 PUSH2 0x460 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x820 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D9 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x884 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EE SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x953 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA1C SWAP1 POP DUP3 PUSH2 0xC39 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x31F PUSH2 0xD95 JUMP JUMPDEST PUSH2 0xA37 DUP2 PUSH2 0xD9C JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1354 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC07 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xFAE JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xC9A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0xFBC JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xCD58657900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 DUP5 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xC4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP4 AND SWAP3 PUSH4 0xCD586579 SWAP3 PUSH2 0x104 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE87 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xEF7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1388 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF04 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0xFAA DUP3 PUSH2 0xB4D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0xFAA JUMPI PUSH2 0xFAA DUP2 PUSH2 0x1192 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x106B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x103C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1050 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1066 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1100 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1100 SWAP1 DUP5 SWAP1 PUSH2 0x11BC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x118D SWAP1 DUP5 SWAP1 PUSH2 0x11BC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x45D DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x12D8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1225 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x11E8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1287 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x128C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x12A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x12D2 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x12CA JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0xFAE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212204D2BE520C1E062061F05E17498249FCF DUP5 PUSH14 0x480E9C2984EF57E16A8948FB86EB PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"820:1006:109:-:0;;;884:226;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1019:6;1027:11;993:46;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;-1:-1:-1;820:1006:109;;-1:-1:-1;820:1006:109;;;;;;;;;:::o;405:517:-1:-;;;596:2;584:9;575:7;571:23;567:32;564:2;;;-1:-1;;602:12;564:2;119:6;113:13;131:63;188:5;131:63;:::i;:::-;795:2;874:22;;313:13;654:104;;-1:-1;331:62;313:13;331:62;:::i;:::-;803:103;;;;558:364;;;;;:::o;1313:451::-;-1:-1;;;;;2186:54;;;1030:80;;2186:54;;1750:2;1735:18;;1030:80;1527:2;1512:18;;1498:266::o;2915:177::-;-1:-1;;;;;2186:54;;3004:65;;2994:2;;3083:1;;3073:12;2994:2;2988:104;:::o;:::-;820:1006:109;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea2646970667358221220ba7be6c83fb39bb8f489c573440768d1afa055febb8516eb3e9f8b4e2b446ebb64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA PUSH28 0xE6C83FB39BB8F489C573440768D1AFA055FEBB8516EB3E9F8B4E2B44 PUSH15 0xBB64736F6C63430007010033000000 ","sourceMap":"820:1006:109:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1592:232;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;1507:131::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1592:232:109:-;1672:7;1691:13;1707:9;:7;:9::i;:::-;1726:69;;;;;1691:25;;-1:-1:-1;1726:39:109;;;;;;:69;;1766:9;;1777:17;;1726:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1812:5:109;;-1:-1:-1;;;;1592:232:109;;;;;:::o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;1507:131::-;1605:26;;;1582:4;1605:26;;;:19;:26;;;;;;;;1507:131;;;;:::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;5:130:-1;72:20;;3226:42;3215:54;;3419:35;;3409:2;;3468:1;;3458:12;279:241;;383:2;371:9;362:7;358:23;354:32;351:2;;;-1:-1;;389:12;351:2;451:53;496:7;472:22;451:53;:::i;:::-;441:63;345:175;-1:-1;;;345:175::o;527:366::-;;;648:2;636:9;627:7;623:23;619:32;616:2;;;-1:-1;;654:12;616:2;716:53;761:7;737:22;716:53;:::i;:::-;706:63;806:2;845:22;;;;209:20;;-1:-1;;;610:283::o;1582:222::-;3226:42;3215:54;;;;971:37;;1709:2;1694:18;;1680:124::o;1811:333::-;3226:42;3215:54;;;;971:37;;2130:2;2115:18;;1533:37;1966:2;1951:18;;1937:207::o;2151:210::-;3127:13;;3120:21;1085:34;;2272:2;2257:18;;2243:118::o;2368:416::-;2568:2;2582:47;;;1356:2;2553:18;;;2895:19;1392:24;2935:14;;;1372:45;1436:12;;;2539:245::o"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getGaugeImplementation()":"39312dee","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IPolygonZkEVMBridge\",\"name\":\"zkEVMBridge\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Polygon ZkEVM.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/zkevm/PolygonZkEVMRootGaugeFactory.sol\":\"PolygonZkEVMRootGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol\":{\"keccak256\":\"0xd9c7da32d4ddaf6e32a41af727737a1283fef2792d7f1f06a5eeed4d51e46683\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e84183dbe59c339d19689101bef9c96d0dea0fb459b84fa92196c46c53092382\",\"dweb:/ipfs/QmSb3CzCmonxYztH2unTccSaXkdQv3KyYY1ThP1saLeT3S\"]},\"contracts/gauges/zkevm/PolygonZkEVMRootGaugeFactory.sol\":{\"keccak256\":\"0x4db826b7e9e490706a1961f82c98a227f5f96e530bfe6f1ce018c77d2e6b5439\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://df71668298057c298d0c307c86b0207ea66a9a4762efeec7fed42745a6b95489\",\"dweb:/ipfs/QmTwiQioJmCGdp8AUFvwJTwPoaJvcFHadbhenkhZcAYy4B\"]}},\"version\":1}"}},"contracts/test/MockAvalancheRootGauge.sol":{"MockAvalancheRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract ILayerZeroBALProxy","name":"lzBALProxy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"bridge","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getBALProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumBridgeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101c06040523480156200001257600080fd5b5060405162002182380380620021828339810160408190526200003591620005a7565b81818160016000819055506000816001600160a01b031663e6dec36f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200007c57600080fd5b505afa15801562000091573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b7919062000581565b90506000816001600160a01b031663c00396996040518163ffffffff1660e01b815260040160206040518083038186803b158015620000f557600080fd5b505afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000130919062000581565b90506000836001600160a01b03166358de9ade6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016e57600080fd5b505afa15801562000183573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a9919062000581565b6001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021857600080fd5b505afa1580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000253919062000581565b6001600160a01b0316610100816001600160a01b031660601b81525050826001600160a01b031663b87b56166040518163ffffffff1660e01b815260040160206040518083038186803b158015620002aa57600080fd5b505afa158015620002bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e59190620005e5565b6101208181525050826001600160a01b03166321609bbf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032757600080fd5b505afa1580156200033c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003629190620005e5565b6101408181525050826001600160a01b0316637efad8e06040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a457600080fd5b505afa158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df9190620005e5565b61016052505060001960025550506001600160601b0319606082901b166101805260408051630857749b60e41b815290516000916001600160a01b0384169163857749b09160048082019260209290919082900301818787803b1580156200044657600080fd5b505af11580156200045b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004819190620005fe565b836001600160a01b031663c00396996040518163ffffffff1660e01b815260040160206040518083038186803b158015620004bb57600080fd5b505afa158015620004d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f6919062000581565b6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200052f57600080fd5b505afa15801562000544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200056a9190620005fe565b0360ff16600a0a6101a052506200063a9350505050565b60006020828403121562000593578081fd5b8151620005a08162000621565b9392505050565b60008060408385031215620005ba578081fd5b8251620005c78162000621565b6020840151909250620005da8162000621565b809150509250929050565b600060208284031215620005f7578081fd5b5051919050565b60006020828403121562000610578081fd5b815160ff81168114620005a0578182fd5b6001600160a01b03811681146200063757600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a051611a7e62000704600039806104865280610be45250806102a4528061097b5280610ca35280610cca5280610dad5280610e8e5280610f5d5250806107645250806107435250806106c652806107b052508061034152806104e452806105a15280610acd5250806103ab528061064c52508061089f5250806110a852806111925250806109445280610c815250611a7e6000f3fe6080604052600436106100f35760003560e01c806390fd50b31161008a578063b024522511610059578063b024522514610250578063c2c4c5c114610265578063cd6dc6871461026d578063d34fb2671461028d576100f3565b806390fd50b3146101fe5780639c868ac0146102115780639f86767114610226578063ab8f09451461023b576100f3565b80631b88094d116100c65780631b88094d146101925780634b820093146101a75780635e8a8389146101d457806383f5c39b146101e9576100f3565b806305c2c78d146100f8578063094007071461012357806310d3eb041461015057806314e956f514610172575b600080fd5b34801561010457600080fd5b5061010d6102a2565b60405161011a91906116b4565b60405180910390f35b34801561012f57600080fd5b5061014361013e36600461153c565b6102c7565b60405161011a91906119f1565b34801561015c57600080fd5b5061017061016b3660046115c6565b610329565b005b34801561017e57600080fd5b5061014361018d3660046115c6565b6103a4565b34801561019e57600080fd5b5061010d610462565b3480156101b357600080fd5b506101c76101c236600461153c565b61047e565b60405161011a91906117c8565b3480156101e057600080fd5b50610143610484565b3480156101f557600080fd5b506101436104a8565b61017061020c3660046115c6565b6104ae565b34801561021d57600080fd5b506101c76104b7565b34801561023257600080fd5b506101436104c0565b34801561024757600080fd5b506101706104cc565b34801561025c57600080fd5b50610143610568565b6101c761057f565b34801561027957600080fd5b5061017061028836600461157b565b610942565b34801561029957600080fd5b50610170610ab5565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff82163014610321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611969565b60405180910390fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610398576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b6103a181610b4e565b50565b600061045c7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b81526004016104049291906117a2565b60206040518083038186803b15801561041c57600080fd5b505afa158015610430573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045491906115de565b600654610bd0565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b60065490565b6103a181610bdc565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461053b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600061057a610575610da9565b610f58565b905090565b600061058961101f565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b6002546000610605611038565b905080821015610934576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e5237906106819030906004016116b4565b600060405180830381600087803b15801561069b57600080fd5b505af11580156106af573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561083d57848111156107005761083d565b62093a808102600080610712836103a4565b905082851015801561072857508262093a800185105b156107e157828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161078c57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506107f69050565b670de0b6b3a764000062093a80828902020491505b827f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced8360405161082691906119f1565b60405180910390a2509390930192506001016106e8565b5060028490556004805483019055811580159061085d575060055460ff16155b15610930576040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636a627842906108d49030906004016116b4565b602060405180830381600087803b1580156108ee57600080fd5b505af1158015610902573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092691906115de565b5061093082610bdc565b5050505b6001925050506102c4611063565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109df57600080fd5b505afa1580156109f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a17919061155f565b73ffffffffffffffffffffffffffffffffffffffff1614610a64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103189061180a565b610a6d8161106a565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610b90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611878565b60068190556040517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb290610bc59083906119f1565b60405180910390a150565b80820390821102900390565b6000610c08827f0000000000000000000000000000000000000000000000000000000000000000611240565b905080610c1557506103a1565b6060610c1f610da9565b90506000610c2c82610f58565b9050803414610c67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611841565b610cc873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000086611257565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632cdf0b958230606a610d18610d13610462565b6113d3565b60408051606081018252338152600060208201528082018a905290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152610d71949392918c918c9190600401611725565b6000604051808303818588803b158015610d8a57600080fd5b505af1158015610d9e573d6000803e3d6000fd5b505050505050505050565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ed629c5c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e1157600080fd5b505afa158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4991906115a6565b15610f43576040517f8cfd8f5c00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690638cfd8f5c90610ec690606a9085906004016119dc565b60206040518083038186803b158015610ede57600080fd5b505afa158015610ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1691906115de565b9050600181604051602001610f2c92919061167f565b6040516020818303038152906040529150506102c4565b506040805160208101909152600081526102c4565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663365260b4606a610fa4610d13610462565b600080886040518663ffffffff1660e01b8152600401610fc89594939291906119a0565b604080518083038186803b158015610fdf57600080fd5b505afa158015610ff3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101791906115f6565b509392505050565b611031600260005414156101906113ec565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6001600055565b600254156110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611932565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561110c57600080fd5b505afa158015611120573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114491906115de565b90508061117d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906118d5565b600181905561118a611038565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111f857600080fd5b505af115801561120c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123091906115de565b60035561123c82610b4e565b5050565b60008082848161124c57fe5b069093039392505050565b801580159061130857506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e906112b590309086906004016116d5565b60206040518083038186803b1580156112cd57600080fd5b505afa1580156112e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130591906115de565b15155b156113af576113af8363095ea7b360e01b84600060405160240161132d9291906116fc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526113fa565b6113ce8363095ea7b360e01b848460405160240161132d9291906117a2565b505050565b73ffffffffffffffffffffffffffffffffffffffff1690565b8161123c5761123c816114ad565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114239190611663565b6000604051808303816000865af19150503d8060008114611460576040519150601f19603f3d011682016040523d82523d6000602084013e611465565b606091505b5091509150600082141561147d573d6000803e3d6000fd5b6114a781516000148061149f57508180602001905181019061149f91906115a6565b6101a26113ec565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526103a1917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b60006020828403121561154d578081fd5b813561155881611a26565b9392505050565b600060208284031215611570578081fd5b815161155881611a26565b6000806040838503121561158d578081fd5b823561159881611a26565b946020939093013593505050565b6000602082840312156115b7578081fd5b81518015158114611558578182fd5b6000602082840312156115d7578081fd5b5035919050565b6000602082840312156115ef578081fd5b5051919050565b60008060408385031215611608578182fd5b505080516020909101519092909150565b600081518084526116318160208601602086016119fa565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516116758184602087016119fa565b9190910192915050565b60f09290921b7fffff000000000000000000000000000000000000000000000000000000000000168252600282015260220190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808916835261ffff8816602084015286604084015285606084015284608084015260c060a08401528084511660c08401528060208501511660e08401525060408301516060610100840152611795610120840182611619565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526012908201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604082015260600190565b60208082526015908201527f496e76616c6964205772617070657220546f6b656e0000000000000000000000604082015260600190565b6020808252601a908201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604082015260600190565b60208082526034908201527f52656c61746976652077656967687420636170206578636565647320616c6c6f60408201527f776564206162736f6c757465206d6178696d756d000000000000000000000000606082015260800190565b60208082526024908201527f42616c616e636572546f6b656e41646d696e206e6f742079657420616374697660408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252601e908201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604082015260600190565b600061ffff87168252856020830152846040830152831515606083015260a060808301526119d160a0830184611619565b979650505050505050565b61ffff92831681529116602082015260400190565b90815260200190565b60005b83811015611a155781810151838201526020016119fd565b838111156114a75750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146103a157600080fdfea264697066735822122045e258a731eb579a717c8fe2e4d03e5f91038db2fc3d39d39697674d7734fd9464736f6c63430007010033","opcodes":"PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2182 CODESIZE SUB DUP1 PUSH3 0x2182 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x5A7 JUMP JUMPDEST DUP2 DUP2 DUP2 PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE6DEC36F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x91 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xB7 SWAP2 SWAP1 PUSH3 0x581 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0039699 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x10A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x130 SWAP2 SWAP1 PUSH3 0x581 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x58DE9ADE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x183 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1A9 SWAP2 SWAP1 PUSH3 0x581 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x22D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x253 SWAP2 SWAP1 PUSH3 0x581 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB87B5616 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x2E5 SWAP2 SWAP1 PUSH3 0x5E5 JUMP JUMPDEST PUSH2 0x120 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x21609BBF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x33C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x362 SWAP2 SWAP1 PUSH3 0x5E5 JUMP JUMPDEST PUSH2 0x140 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7EFAD8E0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3B9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x3DF SWAP2 SWAP1 PUSH3 0x5E5 JUMP JUMPDEST PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH2 0x180 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x857749B PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x857749B0 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x45B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x481 SWAP2 SWAP1 PUSH3 0x5FE JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0039699 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x4D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x4F6 SWAP2 SWAP1 PUSH3 0x581 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x52F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x544 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x56A SWAP2 SWAP1 PUSH3 0x5FE JUMP JUMPDEST SUB PUSH1 0xFF AND PUSH1 0xA EXP PUSH2 0x1A0 MSTORE POP PUSH3 0x63A SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x593 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x5A0 DUP2 PUSH3 0x621 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x5BA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x5C7 DUP2 PUSH3 0x621 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x5DA DUP2 PUSH3 0x621 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5F7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x610 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x5A0 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH2 0x1A7E PUSH3 0x704 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x486 MSTORE DUP1 PUSH2 0xBE4 MSTORE POP DUP1 PUSH2 0x2A4 MSTORE DUP1 PUSH2 0x97B MSTORE DUP1 PUSH2 0xCA3 MSTORE DUP1 PUSH2 0xCCA MSTORE DUP1 PUSH2 0xDAD MSTORE DUP1 PUSH2 0xE8E MSTORE DUP1 PUSH2 0xF5D MSTORE POP DUP1 PUSH2 0x764 MSTORE POP DUP1 PUSH2 0x743 MSTORE POP DUP1 PUSH2 0x6C6 MSTORE DUP1 PUSH2 0x7B0 MSTORE POP DUP1 PUSH2 0x341 MSTORE DUP1 PUSH2 0x4E4 MSTORE DUP1 PUSH2 0x5A1 MSTORE DUP1 PUSH2 0xACD MSTORE POP DUP1 PUSH2 0x3AB MSTORE DUP1 PUSH2 0x64C MSTORE POP DUP1 PUSH2 0x89F MSTORE POP DUP1 PUSH2 0x10A8 MSTORE DUP1 PUSH2 0x1192 MSTORE POP DUP1 PUSH2 0x944 MSTORE DUP1 PUSH2 0xC81 MSTORE POP PUSH2 0x1A7E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90FD50B3 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x28D JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x90FD50B3 EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x23B JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x5E8A8389 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x1E9 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x5C2C78D EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x172 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x153C JUMP JUMPDEST PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x19F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x329 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x18D CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x3A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x462 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C7 PUSH2 0x1C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x153C JUMP JUMPDEST PUSH2 0x47E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x17C8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x484 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x4A8 JUMP JUMPDEST PUSH2 0x170 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x4AE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C7 PUSH2 0x4B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x4C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0x4CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x568 JUMP JUMPDEST PUSH2 0x1C7 PUSH2 0x57F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0x157B JUMP JUMPDEST PUSH2 0x942 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0xAB5 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x321 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1969 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x398 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH2 0x3A1 DUP2 PUSH2 0xB4E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45C PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x404 SWAP3 SWAP2 SWAP1 PUSH2 0x17A2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x430 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x454 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xBD0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3A1 DUP2 PUSH2 0xBDC JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x53B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x57A PUSH2 0x575 PUSH2 0xDA9 JUMP JUMPDEST PUSH2 0xF58 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x589 PUSH2 0x101F JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5F8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x605 PUSH2 0x1038 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x934 JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x681 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x83D JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x700 JUMPI PUSH2 0x83D JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x712 DUP4 PUSH2 0x3A4 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x728 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x7E1 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x78C JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x7F6 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST DUP3 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED DUP4 PUSH1 0x40 MLOAD PUSH2 0x826 SWAP2 SWAP1 PUSH2 0x19F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x6E8 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x85D JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x930 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x8D4 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x902 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x926 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST POP PUSH2 0x930 DUP3 PUSH2 0xBDC JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x2C4 PUSH2 0x1063 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA17 SWAP2 SWAP1 PUSH2 0x155F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x180A JUMP JUMPDEST PUSH2 0xA6D DUP2 PUSH2 0x106A JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB24 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xB90 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1878 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP1 PUSH2 0xBC5 SWAP1 DUP4 SWAP1 PUSH2 0x19F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC08 DUP3 PUSH32 0x0 PUSH2 0x1240 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xC15 JUMPI POP PUSH2 0x3A1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC1F PUSH2 0xDA9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC2C DUP3 PUSH2 0xF58 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xC67 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1841 JUMP JUMPDEST PUSH2 0xCC8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP7 PUSH2 0x1257 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2CDF0B95 DUP3 ADDRESS PUSH1 0x6A PUSH2 0xD18 PUSH2 0xD13 PUSH2 0x462 JUMP JUMPDEST PUSH2 0x13D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE DUP1 DUP3 ADD DUP11 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP9 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xD71 SWAP5 SWAP4 SWAP3 SWAP2 DUP13 SWAP2 DUP13 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1725 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xED629C5C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE25 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE49 SWAP2 SWAP1 PUSH2 0x15A6 JUMP JUMPDEST ISZERO PUSH2 0xF43 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8CFD8F5C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x8CFD8F5C SWAP1 PUSH2 0xEC6 SWAP1 PUSH1 0x6A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x19DC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEF2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF16 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF2C SWAP3 SWAP2 SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2C4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x2C4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x365260B4 PUSH1 0x6A PUSH2 0xFA4 PUSH2 0xD13 PUSH2 0x462 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFC8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1017 SWAP2 SWAP1 PUSH2 0x15F6 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1031 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x13EC JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x10A4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1932 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x110C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1120 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1144 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x117D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x18D5 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x118A PUSH2 0x1038 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x120C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1230 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST PUSH1 0x3 SSTORE PUSH2 0x123C DUP3 PUSH2 0xB4E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 PUSH2 0x124C JUMPI INVALID JUMPDEST MOD SWAP1 SWAP4 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1308 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x12B5 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x16D5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1305 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x13AF JUMPI PUSH2 0x13AF DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x16FC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x13CE DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x17A2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x123C JUMPI PUSH2 0x123C DUP2 PUSH2 0x14AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1423 SWAP2 SWAP1 PUSH2 0x1663 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1460 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1465 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x147D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x14A7 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x149F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x149F SWAP2 SWAP1 PUSH2 0x15A6 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x13EC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x3A1 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x154D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1558 DUP2 PUSH2 0x1A26 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1570 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1558 DUP2 PUSH2 0x1A26 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x158D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1598 DUP2 PUSH2 0x1A26 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15B7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1558 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15D7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15EF JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1608 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1631 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19FA JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1675 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19FA JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xF0 SWAP3 SWAP1 SWAP3 SHL PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND DUP3 MSTORE PUSH1 0x2 DUP3 ADD MSTORE PUSH1 0x22 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE PUSH2 0xFFFF DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP7 PUSH1 0x40 DUP5 ADD MSTORE DUP6 PUSH1 0x60 DUP5 ADD MSTORE DUP5 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP5 ADD MSTORE DUP1 DUP5 MLOAD AND PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0xE0 DUP5 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x1795 PUSH2 0x120 DUP5 ADD DUP3 PUSH2 0x1619 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964205772617070657220546F6B656E0000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C61746976652077656967687420636170206578636565647320616C6C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x776564206162736F6C757465206D6178696D756D000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x42616C616E636572546F6B656E41646D696E206E6F7420796574206163746976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6174656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP8 AND DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x19D1 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1619 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A15 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19FD JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14A7 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASLIMIT 0xE2 PC 0xA7 BALANCE 0xEB JUMPI SWAP11 PUSH18 0x7C8FE2E4D03E5F91038DB2FC3D39D3969767 0x4D PUSH24 0x34FD9464736F6C6343000701003300000000000000000000 ","sourceMap":"942:656:110:-:0;;;1002:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1095:6;1103:10;5694:6:94;2070:1:63;2175:7;:22;;;;2286:30:89;2339:6;-1:-1:-1;;;;;2339:28:89;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2286:84;;2380:15;2398:10;-1:-1:-1;;;;;2398:27:89;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2380:47;;2437:32;2472:6;-1:-1:-1;;;;;2472:25:89;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;2510:20:89;;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;;;2665:23:89;;;;2437:62;;-1:-1:-1;;;;;;2600:34:89;;;2665:21;;:23;;;;;;;;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2644:44:89;;;-1:-1:-1;;;;;2644:44:89;;;;;;;2722:10;-1:-1:-1;;;;;2722:30:89;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2699:55;;;;;;2794:10;-1:-1:-1;;;;;2794:37:89;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2764:69;;;;;;2863:10;-1:-1:-1;;;;;2863:27:89;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2843:49;;-1:-1:-1;;;;3053:7:89;:27;-1:-1:-1;;;;;;;;5712:24:94::1;::::0;;;;::::1;::::0;5827:27:::1;::::0;;-1:-1:-1;;;5827:27:94;;;;5746:23:::1;::::0;-1:-1:-1;;;;;5712:24:94;::::1;::::0;5827:25:::1;::::0;:27:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;5746:23;5712:24;5827:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5786:6;-1:-1:-1::0;;;;;5786:23:94::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5772:50:94::1;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:82;5887:21;;:2;:21;5864:44;::::0;-1:-1:-1;942:656:110;;-1:-1:-1;;;;942:656:110;1612:313:-1;;1752:2;1740:9;1731:7;1727:23;1723:32;1720:2;;;-1:-1;;1758:12;1720:2;114:6;108:13;126:58;178:5;126:58;:::i;:::-;1810:99;1714:211;-1:-1;;;1714:211::o;3188:515::-;;;3378:2;3366:9;3357:7;3353:23;3349:32;3346:2;;;-1:-1;;3384:12;3346:2;1247:6;1241:13;1259:63;1316:5;1259:63;:::i;:::-;3577:2;3655:22;;1042:13;3436:104;;-1:-1;1060:61;1042:13;1060:61;:::i;:::-;3585:102;;;;3340:363;;;;;:::o;3710:263::-;;3825:2;3813:9;3804:7;3800:23;3796:32;3793:2;;;-1:-1;;3831:12;3793:2;-1:-1;1412:13;;3787:186;-1:-1;3787:186::o;3980:259::-;;4093:2;4081:9;4072:7;4068:23;4064:32;4061:2;;;-1:-1;;4099:12;4061:2;1557:6;1551:13;5479:4;6913:5;5468:16;6890:5;6887:33;6877:2;;-1:-1;;6924:12;5496:167;-1:-1;;;;;5263:54;;5580:60;;5570:2;;5654:1;;5644:12;5570:2;5564:99;:::o;:::-;942:656:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":2372},{"length":32,"start":3201}],"14642":[{"length":32,"start":4264},{"length":32,"start":4498}],"14644":[{"length":32,"start":2207}],"14646":[{"length":32,"start":939},{"length":32,"start":1612}],"14648":[{"length":32,"start":833},{"length":32,"start":1252},{"length":32,"start":1441},{"length":32,"start":2765}],"14656":[{"length":32,"start":1734},{"length":32,"start":1968}],"14658":[{"length":32,"start":1859}],"14660":[{"length":32,"start":1892}],"16755":[{"length":32,"start":676},{"length":32,"start":2427},{"length":32,"start":3235},{"length":32,"start":3274},{"length":32,"start":3501},{"length":32,"start":3726},{"length":32,"start":3933}],"16757":[{"length":32,"start":1158},{"length":32,"start":3044}]},"linkReferences":{},"object":"6080604052600436106100f35760003560e01c806390fd50b31161008a578063b024522511610059578063b024522514610250578063c2c4c5c114610265578063cd6dc6871461026d578063d34fb2671461028d576100f3565b806390fd50b3146101fe5780639c868ac0146102115780639f86767114610226578063ab8f09451461023b576100f3565b80631b88094d116100c65780631b88094d146101925780634b820093146101a75780635e8a8389146101d457806383f5c39b146101e9576100f3565b806305c2c78d146100f8578063094007071461012357806310d3eb041461015057806314e956f514610172575b600080fd5b34801561010457600080fd5b5061010d6102a2565b60405161011a91906116b4565b60405180910390f35b34801561012f57600080fd5b5061014361013e36600461153c565b6102c7565b60405161011a91906119f1565b34801561015c57600080fd5b5061017061016b3660046115c6565b610329565b005b34801561017e57600080fd5b5061014361018d3660046115c6565b6103a4565b34801561019e57600080fd5b5061010d610462565b3480156101b357600080fd5b506101c76101c236600461153c565b61047e565b60405161011a91906117c8565b3480156101e057600080fd5b50610143610484565b3480156101f557600080fd5b506101436104a8565b61017061020c3660046115c6565b6104ae565b34801561021d57600080fd5b506101c76104b7565b34801561023257600080fd5b506101436104c0565b34801561024757600080fd5b506101706104cc565b34801561025c57600080fd5b50610143610568565b6101c761057f565b34801561027957600080fd5b5061017061028836600461157b565b610942565b34801561029957600080fd5b50610170610ab5565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff82163014610321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611969565b60405180910390fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610398576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b6103a181610b4e565b50565b600061045c7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b81526004016104049291906117a2565b60206040518083038186803b15801561041c57600080fd5b505afa158015610430573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045491906115de565b600654610bd0565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b60065490565b6103a181610bdc565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461053b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600061057a610575610da9565b610f58565b905090565b600061058961101f565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b6002546000610605611038565b905080821015610934576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e5237906106819030906004016116b4565b600060405180830381600087803b15801561069b57600080fd5b505af11580156106af573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561083d57848111156107005761083d565b62093a808102600080610712836103a4565b905082851015801561072857508262093a800185105b156107e157828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161078c57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506107f69050565b670de0b6b3a764000062093a80828902020491505b827f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced8360405161082691906119f1565b60405180910390a2509390930192506001016106e8565b5060028490556004805483019055811580159061085d575060055460ff16155b15610930576040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636a627842906108d49030906004016116b4565b602060405180830381600087803b1580156108ee57600080fd5b505af1158015610902573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092691906115de565b5061093082610bdc565b5050505b6001925050506102c4611063565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109df57600080fd5b505afa1580156109f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a17919061155f565b73ffffffffffffffffffffffffffffffffffffffff1614610a64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103189061180a565b610a6d8161106a565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610b90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611878565b60068190556040517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb290610bc59083906119f1565b60405180910390a150565b80820390821102900390565b6000610c08827f0000000000000000000000000000000000000000000000000000000000000000611240565b905080610c1557506103a1565b6060610c1f610da9565b90506000610c2c82610f58565b9050803414610c67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611841565b610cc873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000086611257565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632cdf0b958230606a610d18610d13610462565b6113d3565b60408051606081018252338152600060208201528082018a905290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152610d71949392918c918c9190600401611725565b6000604051808303818588803b158015610d8a57600080fd5b505af1158015610d9e573d6000803e3d6000fd5b505050505050505050565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ed629c5c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e1157600080fd5b505afa158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4991906115a6565b15610f43576040517f8cfd8f5c00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690638cfd8f5c90610ec690606a9085906004016119dc565b60206040518083038186803b158015610ede57600080fd5b505afa158015610ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1691906115de565b9050600181604051602001610f2c92919061167f565b6040516020818303038152906040529150506102c4565b506040805160208101909152600081526102c4565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663365260b4606a610fa4610d13610462565b600080886040518663ffffffff1660e01b8152600401610fc89594939291906119a0565b604080518083038186803b158015610fdf57600080fd5b505afa158015610ff3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101791906115f6565b509392505050565b611031600260005414156101906113ec565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6001600055565b600254156110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611932565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561110c57600080fd5b505afa158015611120573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114491906115de565b90508061117d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906118d5565b600181905561118a611038565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111f857600080fd5b505af115801561120c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123091906115de565b60035561123c82610b4e565b5050565b60008082848161124c57fe5b069093039392505050565b801580159061130857506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e906112b590309086906004016116d5565b60206040518083038186803b1580156112cd57600080fd5b505afa1580156112e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130591906115de565b15155b156113af576113af8363095ea7b360e01b84600060405160240161132d9291906116fc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526113fa565b6113ce8363095ea7b360e01b848460405160240161132d9291906117a2565b505050565b73ffffffffffffffffffffffffffffffffffffffff1690565b8161123c5761123c816114ad565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114239190611663565b6000604051808303816000865af19150503d8060008114611460576040519150601f19603f3d011682016040523d82523d6000602084013e611465565b606091505b5091509150600082141561147d573d6000803e3d6000fd5b6114a781516000148061149f57508180602001905181019061149f91906115a6565b6101a26113ec565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526103a1917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b60006020828403121561154d578081fd5b813561155881611a26565b9392505050565b600060208284031215611570578081fd5b815161155881611a26565b6000806040838503121561158d578081fd5b823561159881611a26565b946020939093013593505050565b6000602082840312156115b7578081fd5b81518015158114611558578182fd5b6000602082840312156115d7578081fd5b5035919050565b6000602082840312156115ef578081fd5b5051919050565b60008060408385031215611608578182fd5b505080516020909101519092909150565b600081518084526116318160208601602086016119fa565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516116758184602087016119fa565b9190910192915050565b60f09290921b7fffff000000000000000000000000000000000000000000000000000000000000168252600282015260220190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808916835261ffff8816602084015286604084015285606084015284608084015260c060a08401528084511660c08401528060208501511660e08401525060408301516060610100840152611795610120840182611619565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526012908201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604082015260600190565b60208082526015908201527f496e76616c6964205772617070657220546f6b656e0000000000000000000000604082015260600190565b6020808252601a908201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604082015260600190565b60208082526034908201527f52656c61746976652077656967687420636170206578636565647320616c6c6f60408201527f776564206162736f6c757465206d6178696d756d000000000000000000000000606082015260800190565b60208082526024908201527f42616c616e636572546f6b656e41646d696e206e6f742079657420616374697660408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252601e908201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604082015260600190565b600061ffff87168252856020830152846040830152831515606083015260a060808301526119d160a0830184611619565b979650505050505050565b61ffff92831681529116602082015260400190565b90815260200190565b60005b83811015611a155781810151838201526020016119fd565b838111156114a75750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146103a157600080fdfea264697066735822122045e258a731eb579a717c8fe2e4d03e5f91038db2fc3d39d39697674d7734fd9464736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90FD50B3 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x28D JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x90FD50B3 EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x23B JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x5E8A8389 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x1E9 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x5C2C78D EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x172 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x153C JUMP JUMPDEST PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x19F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x329 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x18D CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x3A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x462 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C7 PUSH2 0x1C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x153C JUMP JUMPDEST PUSH2 0x47E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x17C8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x484 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x4A8 JUMP JUMPDEST PUSH2 0x170 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x4AE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C7 PUSH2 0x4B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x4C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0x4CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x568 JUMP JUMPDEST PUSH2 0x1C7 PUSH2 0x57F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0x157B JUMP JUMPDEST PUSH2 0x942 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0xAB5 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x321 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1969 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x398 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH2 0x3A1 DUP2 PUSH2 0xB4E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45C PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x404 SWAP3 SWAP2 SWAP1 PUSH2 0x17A2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x430 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x454 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xBD0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3A1 DUP2 PUSH2 0xBDC JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x53B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x57A PUSH2 0x575 PUSH2 0xDA9 JUMP JUMPDEST PUSH2 0xF58 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x589 PUSH2 0x101F JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5F8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x605 PUSH2 0x1038 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x934 JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x681 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x83D JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x700 JUMPI PUSH2 0x83D JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x712 DUP4 PUSH2 0x3A4 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x728 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x7E1 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x78C JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x7F6 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST DUP3 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED DUP4 PUSH1 0x40 MLOAD PUSH2 0x826 SWAP2 SWAP1 PUSH2 0x19F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x6E8 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x85D JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x930 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x8D4 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x902 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x926 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST POP PUSH2 0x930 DUP3 PUSH2 0xBDC JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x2C4 PUSH2 0x1063 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA17 SWAP2 SWAP1 PUSH2 0x155F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x180A JUMP JUMPDEST PUSH2 0xA6D DUP2 PUSH2 0x106A JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB24 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xB90 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1878 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP1 PUSH2 0xBC5 SWAP1 DUP4 SWAP1 PUSH2 0x19F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC08 DUP3 PUSH32 0x0 PUSH2 0x1240 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xC15 JUMPI POP PUSH2 0x3A1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC1F PUSH2 0xDA9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC2C DUP3 PUSH2 0xF58 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xC67 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1841 JUMP JUMPDEST PUSH2 0xCC8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP7 PUSH2 0x1257 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2CDF0B95 DUP3 ADDRESS PUSH1 0x6A PUSH2 0xD18 PUSH2 0xD13 PUSH2 0x462 JUMP JUMPDEST PUSH2 0x13D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE DUP1 DUP3 ADD DUP11 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP9 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xD71 SWAP5 SWAP4 SWAP3 SWAP2 DUP13 SWAP2 DUP13 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1725 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xED629C5C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE25 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE49 SWAP2 SWAP1 PUSH2 0x15A6 JUMP JUMPDEST ISZERO PUSH2 0xF43 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8CFD8F5C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x8CFD8F5C SWAP1 PUSH2 0xEC6 SWAP1 PUSH1 0x6A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x19DC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEF2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF16 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF2C SWAP3 SWAP2 SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2C4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x2C4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x365260B4 PUSH1 0x6A PUSH2 0xFA4 PUSH2 0xD13 PUSH2 0x462 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFC8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1017 SWAP2 SWAP1 PUSH2 0x15F6 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1031 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x13EC JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x10A4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1932 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x110C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1120 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1144 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x117D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x18D5 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x118A PUSH2 0x1038 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x120C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1230 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST PUSH1 0x3 SSTORE PUSH2 0x123C DUP3 PUSH2 0xB4E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 PUSH2 0x124C JUMPI INVALID JUMPDEST MOD SWAP1 SWAP4 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1308 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x12B5 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x16D5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1305 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x13AF JUMPI PUSH2 0x13AF DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x16FC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x13CE DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x17A2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x123C JUMPI PUSH2 0x123C DUP2 PUSH2 0x14AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1423 SWAP2 SWAP1 PUSH2 0x1663 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1460 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1465 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x147D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x14A7 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x149F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x149F SWAP2 SWAP1 PUSH2 0x15A6 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x13EC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x3A1 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x154D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1558 DUP2 PUSH2 0x1A26 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1570 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1558 DUP2 PUSH2 0x1A26 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x158D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1598 DUP2 PUSH2 0x1A26 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15B7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1558 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15D7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15EF JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1608 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1631 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19FA JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1675 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19FA JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xF0 SWAP3 SWAP1 SWAP3 SHL PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND DUP3 MSTORE PUSH1 0x2 DUP3 ADD MSTORE PUSH1 0x22 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE PUSH2 0xFFFF DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP7 PUSH1 0x40 DUP5 ADD MSTORE DUP6 PUSH1 0x60 DUP5 ADD MSTORE DUP5 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP5 ADD MSTORE DUP1 DUP5 MLOAD AND PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0xE0 DUP5 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x1795 PUSH2 0x120 DUP5 ADD DUP3 PUSH2 0x1619 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964205772617070657220546F6B656E0000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C61746976652077656967687420636170206578636565647320616C6C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x776564206162736F6C757465206D6178696D756D000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x42616C616E636572546F6B656E41646D696E206E6F7420796574206163746976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6174656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP8 AND DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x19D1 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1619 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A15 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19FD JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14A7 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASLIMIT 0xE2 PC 0xA7 BALANCE 0xEB JUMPI SWAP11 PUSH18 0x7C8FE2E4D03E5F91038DB2FC3D39D3969767 0x4D PUSH24 0x34FD9464736F6C6343000701003300000000000000000000 ","sourceMap":"942:656:110:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6564:99:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6895:191:89;;;;;;;;;;-1:-1:-1;6895:191:89;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7513:214::-;;;;;;;;;;-1:-1:-1;7513:214:89;;;;;:::i;:::-;;:::i;:::-;;8159:199;;;;;;;;;;-1:-1:-1;8159:199:89;;;;;:::i;:::-;;:::i;6381:97:94:-;;;;;;;;;;;;;:::i;6789:100:89:-;;;;;;;;;;-1:-1:-1;6789:100:89;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6832:108:94:-;;;;;;;;;;;;;:::i;8038:115:89:-;;;;;;;;;;;;;:::i;1499:97:110:-;;;;;;:::i;:::-;;:::i;7092:92:89:-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;6982:133:94:-;;;;;;;;;;;;;:::i;3697:2655:89:-;;;:::i;5921:418:94:-;;;;;;;;;;-1:-1:-1;5921:418:94;;;;;:::i;:::-;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;6564:99:94:-;6644:11;6564:99;;:::o;6895:191:89:-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;:::i;:::-;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;6381:97:94:-;6461:10;;;;6381:97;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;6832:108:94:-;6913:20;6832:108;:::o;8038:115:89:-;8128:18;;8038:115;:::o;1499:97:110:-;1562:27;1578:10;1562:15;:27::i;7092:92:89:-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;:::i;:::-;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6982:133:94:-;7042:7;7068:40;7088:19;:17;:19::i;:::-;7068;:40::i;:::-;7061:47;;6982:133;:::o;3697:2655:89:-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;;;;;;;;;;:::i;:::-;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;:33:::1;:16;:33;::::0;::::1;::::0;:48:::1;::::0;4042:4:::1;::::0;4000:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5989:10;5978:38;6001:14;5978:38;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;:12:::1;:7;:12;::::0;::::1;::::0;:27:::1;::::0;6246:4:::1;::::0;6225:27:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6270:29;6286:12;6270:15;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;5921:418:94:-;6150:9;6119:41;;:11;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;;6111:75;;;;;;;;;;;;:::i;:::-;6259:40;6281:17;6259:21;:40::i;:::-;-1:-1:-1;6310:10:94;:22;;;;;;;;;;;;;;;5921:418::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;:::i;:::-;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;:::i;:::-;7929:18;:38;;;7982:43;;;;;;7950:17;;7982:43;:::i;:::-;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;7668:1683:94:-;7741:25;7769:66;7802:10;7814:20;7769:32;:66::i;:::-;7741:94;-1:-1:-1;7908:22:94;7904:59;;7946:7;;;7904:59;7973:26;8002:19;:17;:19::i;:::-;7973:48;;8031:23;8057:34;8077:13;8057:19;:34::i;:::-;8031:60;;8123:15;8110:9;:28;8102:67;;;;;;;;;;;;:::i;:::-;8255:55;:21;:9;:21;8285:11;8299:10;8255:21;:55::i;:::-;9009:11;:20;;;9038:15;9077:4;4193:3;9132:54;9171:14;:12;:14::i;:::-;9132:38;:54::i;:::-;9255:79;;;;;;;;9295:10;9255:79;;-1:-1:-1;9255:79:94;;;;;;;;;;9009:335;;;;;;;;;;;;;;;9200:10;;9224:17;;9255:79;9009:335;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7668:1683;;;;:::o;9357:1248::-;9409:12;10326:11;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10322:277;;;10398:70;;;;;10378:17;;10398:27;:11;:27;;;;:70;;4193:3;;10378:17;;10398:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10378:90;;4760:1;10531:9;10489:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10482:59;;;;;10322:277;-1:-1:-1;10579:9:94;;;;;;;;;-1:-1:-1;10579:9:94;;10572:16;;7121:541;7201:7;7403:17;7426:11;:27;;;4193:3;7503:54;7542:14;:12;:14::i;7503:54::-;7571:1;7586:5;7605:13;7426:202;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7402:226:94;7121:541;-1:-1:-1;;;7121:541:94:o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;:::i;:::-;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3413:33;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;:::i;:::-;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;819:169:96:-;898:7;917:12;941:10;932:6;:19;;;;;;968:13;;;;819:169;-1:-1:-1;;;819:169:96:o;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;:15;;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:19;:90::i;:::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;1407:94::-;1001:507;;;:::o;1073:137:96:-;1175:27;;;1073:137::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o;1459:126:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;696:241:-1;;800:2;788:9;779:7;775:23;771:32;768:2;;;-1:-1;;806:12;768:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;858:63;762:175;-1:-1;;;762:175::o;944:263::-;;1059:2;1047:9;1038:7;1034:23;1030:32;1027:2;;;-1:-1;;1065:12;1027:2;226:6;220:13;238:33;265:5;238:33;:::i;1214:366::-;;;1335:2;1323:9;1314:7;1310:23;1306:32;1303:2;;;-1:-1;;1341:12;1303:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1393:63;1493:2;1532:22;;;;485:20;;-1:-1;;;1297:283::o;1587:257::-;;1699:2;1687:9;1678:7;1674:23;1670:32;1667:2;;;-1:-1;;1705:12;1667:2;364:6;358:13;18615:5;17014:13;17007:21;18593:5;18590:32;18580:2;;-1:-1;;18626:12;1851:241;;1955:2;1943:9;1934:7;1930:23;1926:32;1923:2;;;-1:-1;;1961:12;1923:2;-1:-1;485:20;;1917:175;-1:-1;1917:175::o;2099:263::-;;2214:2;2202:9;2193:7;2189:23;2185:32;2182:2;;;-1:-1;;2220:12;2182:2;-1:-1;633:13;;2176:186;-1:-1;2176:186::o;2369:399::-;;;2501:2;2489:9;2480:7;2476:23;2472:32;2469:2;;;-1:-1;;2507:12;2469:2;-1:-1;;633:13;;2670:2;2720:22;;;633:13;;;;;-1:-1;2463:305::o;3370:323::-;;3502:5;16046:12;16192:6;16187:3;16180:19;3585:52;3630:6;16229:4;16224:3;16220:14;16229:4;3611:5;3607:16;3585:52;:::i;:::-;18289:2;18269:14;18285:7;18265:28;3649:39;;;;16229:4;3649:39;;3450:243;-1:-1;;3450:243::o;8573:271::-;;4210:5;16046:12;4321:52;4366:6;4361:3;4354:4;4347:5;4343:16;4321:52;:::i;:::-;4385:16;;;;;8707:137;-1:-1;;8707:137::o;8851:387::-;18381:3;18377:15;;;;;;8226:56;;9100:1;9091:11;;3321:37;9201:12;;;8993:245::o;9245:222::-;17283:42;17272:54;;;;2852:45;;9372:2;9357:18;;9343:124::o;9474:333::-;17283:42;17272:54;;;2852:45;;17272:54;;9793:2;9778:18;;2852:45;9629:2;9614:18;;9600:207::o;9814:345::-;17283:42;17272:54;;;;2852:45;;17488:4;17477:16;10145:2;10130:18;;4639:56;9975:2;9960:18;;9946:213::o;10166:948::-;;17283:42;;17276:5;17272:54;2859:3;2852:45;17191:6;8120:5;17180:18;10656:2;10645:9;10641:18;8091:36;3351:5;10739:2;10728:9;10724:18;3321:37;3351:5;10822:2;10811:9;10807:18;3321:37;3351:5;10905:3;10894:9;10890:19;3321:37;10493:3;10943;10932:9;10928:19;10921:49;17283:42;7477:16;7471:23;17272:54;10493:3;10482:9;10478:19;2852:45;17283:42;10656:2;7664:5;7660:16;7654:23;17272:54;7731:14;10482:9;7731:14;2852:45;;10739:2;7827:5;7823:16;7817:23;10822:2;7860:14;10482:9;7860:14;7853:38;7906:71;7387:14;10482:9;7387:14;7958:12;7906:71;:::i;:::-;10976:128;10464:650;-1:-1;;;;;;;;;10464:650::o;11121:333::-;17283:42;17272:54;;;;2852:45;;11440:2;11425:18;;3321:37;11276:2;11261:18;;11247:207::o;11461:210::-;17014:13;;17007:21;3204:34;;11582:2;11567:18;;11553:118::o;11678:416::-;11878:2;11892:47;;;4932:2;11863:18;;;16180:19;4968:20;16220:14;;;4948:41;5008:12;;;11849:245::o;12101:416::-;12301:2;12315:47;;;5259:2;12286:18;;;16180:19;5295:23;16220:14;;;5275:44;5338:12;;;12272:245::o;12524:416::-;12724:2;12738:47;;;5589:2;12709:18;;;16180:19;5625:28;16220:14;;;5605:49;5673:12;;;12695:245::o;12947:416::-;13147:2;13161:47;;;5924:2;13132:18;;;16180:19;5960:34;16220:14;;;5940:55;6029:22;6015:12;;;6008:44;6071:12;;;13118:245::o;13370:416::-;13570:2;13584:47;;;6322:2;13555:18;;;16180:19;6358:34;16220:14;;;6338:55;6427:6;6413:12;;;6406:28;6453:12;;;13541:245::o;13793:416::-;13993:2;14007:47;;;6704:2;13978:18;;;16180:19;6740:21;16220:14;;;6720:42;6781:12;;;13964:245::o;14216:416::-;14416:2;14430:47;;;7032:2;14401:18;;;16180:19;7068:32;16220:14;;;7048:53;7120:12;;;14387:245::o;14639:752::-;;17191:6;8120:5;17180:18;8098:3;8091:36;3351:5;15059:2;15048:9;15044:18;3321:37;17592:24;15150:2;15139:9;15135:18;4492:58;3231:5;17014:13;17007:21;15227:2;15216:9;15212:18;3204:34;14896:3;15264;15253:9;15249:19;15242:49;15305:76;14896:3;14885:9;14881:19;15367:6;15305:76;:::i;:::-;15297:84;14867:524;-1:-1;;;;;;;14867:524::o;15398:325::-;17191:6;17180:18;;;8091:36;;17180:18;;15709:2;15694:18;;8091:36;15549:2;15534:18;;15520:203::o;15730:222::-;3321:37;;;15857:2;15842:18;;15828:124::o;17748:268::-;17813:1;17820:101;17834:6;17831:1;17828:13;17820:101;;;17901:11;;;17895:18;17882:11;;;17875:39;17856:2;17849:10;17820:101;;;17936:6;17933:1;17930:13;17927:2;;;-1:-1;;17813:1;17983:16;;17976:27;17797:219::o;18410:117::-;17283:42;18497:5;17272:54;18472:5;18469:35;18459:2;;18518:1;;18508:12"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","bridge(uint256)":"90fd50b3","checkpoint()":"c2c4c5c1","getBALProxy()":"05c2c78d","getCappedRelativeWeight(uint256)":"14e956f5","getMinimumBridgeAmount()":"5e8a8389","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract ILayerZeroBALProxy\",\"name\":\"lzBALProxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"bridge\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBALProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumBridgeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is used by the Avalanche Root Gauge deployment task in the deployments repo, and is referenced there. Do not delete.\",\"kind\":\"dev\",\"methods\":{\"bridge(uint256)\":{\"details\":\"It would be very difficult to contrive a fork test that set the mintAmount to a precise value, so the bridge limits are best tested with a mock and unit tests. It must be payable to send ETH to pay for gas in the child chain.\",\"params\":{\"mintAmount\":\"Amount to be bridged\"}},\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getBALProxy()\":{\"details\":\"Return the Layer Zero proxy contract for the underlying BAL token.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getMinimumBridgeAmount()\":{\"details\":\"Returns the minimum amount of tokens that can be bridged. Values lower than this one will not even be transferred to the proxy.\"},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockAvalancheRootGauge.sol\":\"MockAvalancheRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/avalanche/AvalancheRootGauge.sol\":{\"keccak256\":\"0x43bdf93c991ce12749932136f830478dc8981cd2123591b02b07103c7f4a73d8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0670c48669f090af80c4454a46c5e33d7a499015565cd57854fe9e2d1e9c85a9\",\"dweb:/ipfs/QmVUXzfTTKW2pUYRQ4neK6TmheDSsBazsShvKDLyMUmdiY\"]},\"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol\":{\"keccak256\":\"0xe49df779008ec324de421878d86c9ad9fc2700e47931f8de70460eaacc0e5d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dd6e05a9aeb465123a157098a73625e933ab10fa48c43afd96779289bbb9720c\",\"dweb:/ipfs/Qmd89UuKiLJcrosj2h8e4vM9vTqGdUHpkjQU5np19ZpbUG\"]},\"contracts/test/MockAvalancheRootGauge.sol\":{\"keccak256\":\"0xfe5f303523607bee8cc8a4c29cf9289cd57f41b0c0c4f726cd6de8ade2be5569\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e71d345dce247401106a01c20ce453b7093feffe66c009f769eaecd28abf957\",\"dweb:/ipfs/QmSRS18tEyu2MA9YeYWECuzVB4hYdvTEhDqVLHT2WpyMS8\"]}},\"version\":1}"}},"contracts/test/MockBalancerMinter.sol":{"MockBalancerMinter":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"MintFor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"gauges","type":"address[]"},{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"MintForMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"uint256","name":"minted","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"bool","name":"approval","type":"bool"}],"name":"MinterApprovalSet","type":"event"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"allowed_to_mint_for","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getMinterApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"mintManyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mint_for","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[8]","name":"gauges","type":"address[8]"}],"name":"mint_many","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setMinted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"}],"name":"setMinterApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"setMinterApprovalWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mintForReturn","type":"uint256"}],"name":"setMockMintFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mintForManyReturn","type":"uint256"}],"name":"setMockMintForMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"toggle_approve_mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"61010060405234801561001157600080fd5b506040516110d43803806110d48339818101604052602081101561003457600080fd5b5051604080518082018252600f81526e2130b630b731b2b91026b4b73a32b960891b602082810191825283518085019094526001808552603160f81b918501918252600055915190206080529051902060a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526001600160601b031960609190911b1660e05260805160a05160c05160e05160601c610fde6100f660003980610897525080610ca4525080610ce6525080610cc55250610fde6000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806390193b7c116100b2578063c003969911610081578063dd289d6011610066578063dd289d60146104f2578063e96ff98314610525578063ed24911d1461054257610136565b8063c003969914610463578063c65427941461049457610136565b806390193b7c146103f657806395c3d17c14610429578063a0990033146102bb578063a51e19041461044657610136565b80633c543bc6116101095780636a627842116100ee5780636a6278421461034d5780637504a15d146103805780638b752bb0146103bb57610136565b80633c543bc6146102bb578063484935a21461030a57610136565b80630de54ba01461013b57806327f18ae314610178578063397ada21146101b35780633b9f738414610235575b600080fd5b6101766004803603604081101561015157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135151561054a565b005b6101766004803603604081101561018e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610559565b610223600480360360208110156101c957600080fd5b8101906020810181356401000000008111156101e457600080fd5b8201836020820111156101f657600080fd5b8035906020019184602083028401116401000000008311171561021857600080fd5b5090925090506105ae565b60408051918252519081900360200190f35b6102236004803603604081101561024b57600080fd5b81019060208101813564010000000081111561026657600080fd5b82018360208201111561027857600080fd5b8035906020019184602083028401116401000000008311171561029a57600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff166105d3565b6102f6600480360360408110156102d157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610682565b604080519115158252519081900360200190f35b6101766004803603606081101561032057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356106bd565b6102236004803603602081101561036357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106cd565b6102236004803603604081101561039657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166106f0565b610223600480360360408110156103d157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661078d565b6102236004803603602081101561040c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107c5565b6101766004803603602081101561043f57600080fd5b50356107ed565b610176600480360361010081101561045d57600080fd5b506107f2565b61046b610895565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610176600480360360e08110156104aa57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101351515916040820135169060608101359060ff6080820135169060a08101359060c001356108b9565b6101766004803603602081101561050857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661096b565b6101766004803603602081101561053b57600080fd5b50356109ab565b6102236109b0565b6105558233836109bf565b5050565b610561610a5b565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156105a6576105a48282610a74565b505b610555610ad0565b60006105b8610a5b565b6105c3838333610ad7565b90506105cd610ad0565b92915050565b60006105dd610a5b565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff16610666576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610f866023913960400191505060405180910390fd5b610671848484610ad7565b905061067b610ad0565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260036020908152604080832093909416825291909152205460ff1690565b6106c8838383610b83565b505050565b60006106d7610a5b565b6106e18233610a74565b90506106eb610ad0565b919050565b60006106fa610a5b565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff16610783576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610f866023913960400191505060405180910390fd5b6105c38383610a74565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b600455565b6107fa610a5b565b60005b600881101561088957600082826008811061081457fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561085057610889565b61088082826008811061085f57fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1633610a74565b506001016107fd565b50610892610ad0565b50565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007fc87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd81538088886108e7896107c5565b6040805160208082019690965273ffffffffffffffffffffffffffffffffffffffff909416848201529115156060840152608083015260a08083018990528151808403909101815260c0909201905280519101209050610956868261094d878787610bfa565b886101f8610c39565b6109618887896109bf565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020908152604080832033845290915290205461089290829060ff161561054a565b600555565b60006109ba610ca0565b905090565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291519293927fa3ffb51320bbca4e61e7423e3c97dd7bd7e31b6ea7429eb26ef92780e84572a09281900390910190a3505050565b610a6d60026000541415610190610d6b565b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff80851682528316602082015281516000927fe79957009f47ab19e55b0de47f86d50b7aa34415b86803b58042231fddb55ca1928290030190a15060045492915050565b6001600055565b60007f21f839751f19294048b530b9f94549c7e8191986f1d59d75f002b051401014c084848460405180806020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858582818152602001925060200280828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909201829003965090945050505050a1506005549392505050565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526002602090815260408083209487168084529482529182902085905581519384528301849052805191927f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0929081900390910190a2505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610c4485610d79565b9050610c5a610c54878387610de0565b83610d6b565b610c69428410156101b8610d6b565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600160208190526040909120805490910190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610d0d610ef2565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816105555761055581610ef6565b6000610d83610ca0565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000610df282516041146101b9610d6b565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610e6b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610ee657508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610892917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572a2646970667358221220d3cdce698f2534e91682210b305526a0aaa62723f547610a317c0fc0c63e7b7e64736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x10D4 CODESIZE SUB DUP1 PUSH2 0x10D4 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xF DUP2 MSTORE PUSH15 0x2130B630B731B2B91026B4B73A32B9 PUSH1 0x89 SHL PUSH1 0x20 DUP3 DUP2 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x1 DUP1 DUP6 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP2 DUP6 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 SSTORE SWAP2 MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xA0 MSTORE PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0xFDE PUSH2 0xF6 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x897 MSTORE POP DUP1 PUSH2 0xCA4 MSTORE POP DUP1 PUSH2 0xCE6 MSTORE POP DUP1 PUSH2 0xCC5 MSTORE POP PUSH2 0xFDE PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x136 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90193B7C GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xC0039699 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xDD289D60 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDD289D60 EQ PUSH2 0x4F2 JUMPI DUP1 PUSH4 0xE96FF983 EQ PUSH2 0x525 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x542 JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0xC0039699 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0xC6542794 EQ PUSH2 0x494 JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0x90193B7C EQ PUSH2 0x3F6 JUMPI DUP1 PUSH4 0x95C3D17C EQ PUSH2 0x429 JUMPI DUP1 PUSH4 0xA0990033 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0xA51E1904 EQ PUSH2 0x446 JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x6A627842 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0x7504A15D EQ PUSH2 0x380 JUMPI DUP1 PUSH4 0x8B752BB0 EQ PUSH2 0x3BB JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x484935A2 EQ PUSH2 0x30A JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0xDE54BA0 EQ PUSH2 0x13B JUMPI DUP1 PUSH4 0x27F18AE3 EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x397ADA21 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x3B9F7384 EQ PUSH2 0x235 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x54A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x559 JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5D3 JUMP JUMPDEST PUSH2 0x2F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x682 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6BD JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6CD JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x6F0 JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x78D JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7C5 JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7ED JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x46B PUSH2 0x895 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x8B9 JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x508 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x96B JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9AB JUMP JUMPDEST PUSH2 0x223 PUSH2 0x9B0 JUMP JUMPDEST PUSH2 0x555 DUP3 CALLER DUP4 PUSH2 0x9BF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x561 PUSH2 0xA5B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5A6 JUMPI PUSH2 0x5A4 DUP3 DUP3 PUSH2 0xA74 JUMP JUMPDEST POP JUMPDEST PUSH2 0x555 PUSH2 0xAD0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B8 PUSH2 0xA5B JUMP JUMPDEST PUSH2 0x5C3 DUP4 DUP4 CALLER PUSH2 0xAD7 JUMP JUMPDEST SWAP1 POP PUSH2 0x5CD PUSH2 0xAD0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DD PUSH2 0xA5B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x666 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF86 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x671 DUP5 DUP5 DUP5 PUSH2 0xAD7 JUMP JUMPDEST SWAP1 POP PUSH2 0x67B PUSH2 0xAD0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6C8 DUP4 DUP4 DUP4 PUSH2 0xB83 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D7 PUSH2 0xA5B JUMP JUMPDEST PUSH2 0x6E1 DUP3 CALLER PUSH2 0xA74 JUMP JUMPDEST SWAP1 POP PUSH2 0x6EB PUSH2 0xAD0 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FA PUSH2 0xA5B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x783 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF86 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5C3 DUP4 DUP4 PUSH2 0xA74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH2 0x7FA PUSH2 0xA5B JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x889 JUMPI PUSH1 0x0 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x814 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x850 JUMPI PUSH2 0x889 JUMP JUMPDEST PUSH2 0x880 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x85F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0xA74 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x7FD JUMP JUMPDEST POP PUSH2 0x892 PUSH2 0xAD0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xC87351A089BBDC3B2B9299D2CE29F08FD982826B275B3642939A2F7FDD815380 DUP9 DUP9 PUSH2 0x8E7 DUP10 PUSH2 0x7C5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP10 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH2 0x956 DUP7 DUP3 PUSH2 0x94D DUP8 DUP8 DUP8 PUSH2 0xBFA JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x961 DUP9 DUP8 DUP10 PUSH2 0x9BF JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x892 SWAP1 DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x54A JUMP JUMPDEST PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BA PUSH2 0xCA0 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xA3FFB51320BBCA4E61E7423E3C97DD7BD7E31B6EA7429EB26EF92780E84572A0 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xA6D PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x0 SWAP3 PUSH32 0xE79957009F47AB19E55B0DE47F86D50B7AA34415B86803B58042231FDDB55CA1 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP PUSH1 0x4 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x21F839751F19294048B530B9F94549C7E8191986F1D59D75F002B051401014C0 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP6 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP7 POP SWAP1 SWAP5 POP POP POP POP POP LOG1 POP PUSH1 0x5 SLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE DUP4 ADD DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 PUSH32 0x9D228D69B5FDB8D273A2336F8FB8612D039631024EA9BF09C424A9503AA078F0 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC44 DUP6 PUSH2 0xD79 JUMP JUMPDEST SWAP1 POP PUSH2 0xC5A PUSH2 0xC54 DUP8 DUP4 DUP8 PUSH2 0xDE0 JUMP JUMPDEST DUP4 PUSH2 0xD6B JUMP JUMPDEST PUSH2 0xC69 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xD6B JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xD0D PUSH2 0xEF2 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x555 JUMPI PUSH2 0x555 DUP2 PUSH2 0xEF6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD83 PUSH2 0xCA0 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF2 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xEE6 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x892 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID NUMBER PUSH2 0x6C6C PUSH6 0x72206E6F7420 PUSH2 0x6C6C PUSH16 0x77656420746F206D696E7420666F7220 PUSH22 0x736572A2646970667358221220D3CDCE698F2534E916 DUP3 0x21 SIGNEXTEND ADDRESS SSTORE 0x26 LOG0 0xAA 0xA6 0x27 0x23 CREATE2 SELFBALANCE PUSH2 0xA31 PUSH29 0xFC0C63E7B7E64736F6C63430007010033000000000000000000000000 ","sourceMap":"1182:1169:111:-:0;;;1415:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1415:136:111;1821:152:66;;;;;;;;;;;-1:-1:-1;;;1415:136:111;1821:152:66;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1821:152:66;;;;;;-1:-1:-1;2175:22:63;2100::58;;;;2085:37;;2150:25;;;;2132:43;;2198:95;2185:108;;-1:-1:-1;;;;;;1952:14:66::1;::::0;;;;;::::1;::::0;1182:1169:111;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"5935":[{"length":32,"start":3269}],"5937":[{"length":32,"start":3302}],"5939":[{"length":32,"start":3236}],"7437":[{"length":32,"start":2199}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101365760003560e01c806390193b7c116100b2578063c003969911610081578063dd289d6011610066578063dd289d60146104f2578063e96ff98314610525578063ed24911d1461054257610136565b8063c003969914610463578063c65427941461049457610136565b806390193b7c146103f657806395c3d17c14610429578063a0990033146102bb578063a51e19041461044657610136565b80633c543bc6116101095780636a627842116100ee5780636a6278421461034d5780637504a15d146103805780638b752bb0146103bb57610136565b80633c543bc6146102bb578063484935a21461030a57610136565b80630de54ba01461013b57806327f18ae314610178578063397ada21146101b35780633b9f738414610235575b600080fd5b6101766004803603604081101561015157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135151561054a565b005b6101766004803603604081101561018e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610559565b610223600480360360208110156101c957600080fd5b8101906020810181356401000000008111156101e457600080fd5b8201836020820111156101f657600080fd5b8035906020019184602083028401116401000000008311171561021857600080fd5b5090925090506105ae565b60408051918252519081900360200190f35b6102236004803603604081101561024b57600080fd5b81019060208101813564010000000081111561026657600080fd5b82018360208201111561027857600080fd5b8035906020019184602083028401116401000000008311171561029a57600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff166105d3565b6102f6600480360360408110156102d157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610682565b604080519115158252519081900360200190f35b6101766004803603606081101561032057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356106bd565b6102236004803603602081101561036357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106cd565b6102236004803603604081101561039657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166106f0565b610223600480360360408110156103d157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661078d565b6102236004803603602081101561040c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107c5565b6101766004803603602081101561043f57600080fd5b50356107ed565b610176600480360361010081101561045d57600080fd5b506107f2565b61046b610895565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610176600480360360e08110156104aa57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101351515916040820135169060608101359060ff6080820135169060a08101359060c001356108b9565b6101766004803603602081101561050857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661096b565b6101766004803603602081101561053b57600080fd5b50356109ab565b6102236109b0565b6105558233836109bf565b5050565b610561610a5b565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156105a6576105a48282610a74565b505b610555610ad0565b60006105b8610a5b565b6105c3838333610ad7565b90506105cd610ad0565b92915050565b60006105dd610a5b565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff16610666576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610f866023913960400191505060405180910390fd5b610671848484610ad7565b905061067b610ad0565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260036020908152604080832093909416825291909152205460ff1690565b6106c8838383610b83565b505050565b60006106d7610a5b565b6106e18233610a74565b90506106eb610ad0565b919050565b60006106fa610a5b565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff16610783576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610f866023913960400191505060405180910390fd5b6105c38383610a74565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b600455565b6107fa610a5b565b60005b600881101561088957600082826008811061081457fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561085057610889565b61088082826008811061085f57fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1633610a74565b506001016107fd565b50610892610ad0565b50565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007fc87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd81538088886108e7896107c5565b6040805160208082019690965273ffffffffffffffffffffffffffffffffffffffff909416848201529115156060840152608083015260a08083018990528151808403909101815260c0909201905280519101209050610956868261094d878787610bfa565b886101f8610c39565b6109618887896109bf565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020908152604080832033845290915290205461089290829060ff161561054a565b600555565b60006109ba610ca0565b905090565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291519293927fa3ffb51320bbca4e61e7423e3c97dd7bd7e31b6ea7429eb26ef92780e84572a09281900390910190a3505050565b610a6d60026000541415610190610d6b565b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff80851682528316602082015281516000927fe79957009f47ab19e55b0de47f86d50b7aa34415b86803b58042231fddb55ca1928290030190a15060045492915050565b6001600055565b60007f21f839751f19294048b530b9f94549c7e8191986f1d59d75f002b051401014c084848460405180806020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858582818152602001925060200280828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909201829003965090945050505050a1506005549392505050565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526002602090815260408083209487168084529482529182902085905581519384528301849052805191927f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0929081900390910190a2505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610c4485610d79565b9050610c5a610c54878387610de0565b83610d6b565b610c69428410156101b8610d6b565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600160208190526040909120805490910190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610d0d610ef2565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816105555761055581610ef6565b6000610d83610ca0565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000610df282516041146101b9610d6b565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610e6b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610ee657508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610892917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572a2646970667358221220d3cdce698f2534e91682210b305526a0aaa62723f547610a317c0fc0c63e7b7e64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x136 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90193B7C GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xC0039699 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xDD289D60 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDD289D60 EQ PUSH2 0x4F2 JUMPI DUP1 PUSH4 0xE96FF983 EQ PUSH2 0x525 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x542 JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0xC0039699 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0xC6542794 EQ PUSH2 0x494 JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0x90193B7C EQ PUSH2 0x3F6 JUMPI DUP1 PUSH4 0x95C3D17C EQ PUSH2 0x429 JUMPI DUP1 PUSH4 0xA0990033 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0xA51E1904 EQ PUSH2 0x446 JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x6A627842 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0x7504A15D EQ PUSH2 0x380 JUMPI DUP1 PUSH4 0x8B752BB0 EQ PUSH2 0x3BB JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x484935A2 EQ PUSH2 0x30A JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0xDE54BA0 EQ PUSH2 0x13B JUMPI DUP1 PUSH4 0x27F18AE3 EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x397ADA21 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x3B9F7384 EQ PUSH2 0x235 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x54A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x559 JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5D3 JUMP JUMPDEST PUSH2 0x2F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x682 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6BD JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6CD JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x6F0 JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x78D JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7C5 JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7ED JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x46B PUSH2 0x895 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x8B9 JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x508 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x96B JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9AB JUMP JUMPDEST PUSH2 0x223 PUSH2 0x9B0 JUMP JUMPDEST PUSH2 0x555 DUP3 CALLER DUP4 PUSH2 0x9BF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x561 PUSH2 0xA5B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5A6 JUMPI PUSH2 0x5A4 DUP3 DUP3 PUSH2 0xA74 JUMP JUMPDEST POP JUMPDEST PUSH2 0x555 PUSH2 0xAD0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B8 PUSH2 0xA5B JUMP JUMPDEST PUSH2 0x5C3 DUP4 DUP4 CALLER PUSH2 0xAD7 JUMP JUMPDEST SWAP1 POP PUSH2 0x5CD PUSH2 0xAD0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DD PUSH2 0xA5B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x666 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF86 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x671 DUP5 DUP5 DUP5 PUSH2 0xAD7 JUMP JUMPDEST SWAP1 POP PUSH2 0x67B PUSH2 0xAD0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6C8 DUP4 DUP4 DUP4 PUSH2 0xB83 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D7 PUSH2 0xA5B JUMP JUMPDEST PUSH2 0x6E1 DUP3 CALLER PUSH2 0xA74 JUMP JUMPDEST SWAP1 POP PUSH2 0x6EB PUSH2 0xAD0 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FA PUSH2 0xA5B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x783 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF86 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5C3 DUP4 DUP4 PUSH2 0xA74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH2 0x7FA PUSH2 0xA5B JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x889 JUMPI PUSH1 0x0 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x814 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x850 JUMPI PUSH2 0x889 JUMP JUMPDEST PUSH2 0x880 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x85F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0xA74 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x7FD JUMP JUMPDEST POP PUSH2 0x892 PUSH2 0xAD0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xC87351A089BBDC3B2B9299D2CE29F08FD982826B275B3642939A2F7FDD815380 DUP9 DUP9 PUSH2 0x8E7 DUP10 PUSH2 0x7C5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP10 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH2 0x956 DUP7 DUP3 PUSH2 0x94D DUP8 DUP8 DUP8 PUSH2 0xBFA JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x961 DUP9 DUP8 DUP10 PUSH2 0x9BF JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x892 SWAP1 DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x54A JUMP JUMPDEST PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BA PUSH2 0xCA0 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xA3FFB51320BBCA4E61E7423E3C97DD7BD7E31B6EA7429EB26EF92780E84572A0 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xA6D PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x0 SWAP3 PUSH32 0xE79957009F47AB19E55B0DE47F86D50B7AA34415B86803B58042231FDDB55CA1 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP PUSH1 0x4 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x21F839751F19294048B530B9F94549C7E8191986F1D59D75F002B051401014C0 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP6 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP7 POP SWAP1 SWAP5 POP POP POP POP POP LOG1 POP PUSH1 0x5 SLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE DUP4 ADD DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 PUSH32 0x9D228D69B5FDB8D273A2336F8FB8612D039631024EA9BF09C424A9503AA078F0 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC44 DUP6 PUSH2 0xD79 JUMP JUMPDEST SWAP1 POP PUSH2 0xC5A PUSH2 0xC54 DUP8 DUP4 DUP8 PUSH2 0xDE0 JUMP JUMPDEST DUP4 PUSH2 0xD6B JUMP JUMPDEST PUSH2 0xC69 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xD6B JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xD0D PUSH2 0xEF2 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x555 JUMPI PUSH2 0x555 DUP2 PUSH2 0xEF6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD83 PUSH2 0xCA0 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF2 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xEE6 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x892 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID NUMBER PUSH2 0x6C6C PUSH6 0x72206E6F7420 PUSH2 0x6C6C PUSH16 0x77656420746F206D696E7420666F7220 PUSH22 0x736572A2646970667358221220D3CDCE698F2534E916 DUP3 0x21 SIGNEXTEND ADDRESS SSTORE 0x26 LOG0 0xAA 0xA6 0x27 0x23 CREATE2 SELFBALANCE PUSH2 0xA31 PUSH29 0xFC0C63E7B7E64736F6C63430007010033000000000000000000000000 ","sourceMap":"1182:1169:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3440:139:66;;;;;;;;;;;;;;;;-1:-1:-1;3440:139:66;;;;;;;;;;;:::i;:::-;;5582:178;;;;;;;;;;;;;;;;-1:-1:-1;5582:178:66;;;;;;;;;;;:::i;2324:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2324:150:66;;-1:-1:-1;2324:150:66;-1:-1:-1;2324:150:66;:::i;:::-;;;;;;;;;;;;;;;;2788:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2788:251:66;-1:-1:-1;2788:251:66;;;;:::i;3251:147::-;;;;;;;;;;;;;;;;-1:-1:-1;3251:147:66;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1791:156:111;;;;;;;;;;;;;;;;-1:-1:-1;1791:156:111;;;;;;;;;;;;;;;;;;:::i;2153:129:66:-;;;;;;;;;;;;;;;;-1:-1:-1;2153:129:66;;;;:::i;2516:230::-;;;;;;;;;;;;;;;;-1:-1:-1;2516:230:66;;;;;;;;;;;:::i;3081:128::-;;;;;;;;;;;;;;;;-1:-1:-1;3081:128:66;;;;;;;;;;;:::i;1303:121:47:-;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:47;;;;:::i;1557:103:111:-;;;;;;;;;;;;;;;;-1:-1:-1;1557:103:111;;:::i;5278:262:66:-;;;;;;;;;;;;;;;;-1:-1:-1;5278:262:66;:::i;2015:96::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3621:541;;;;;;;;;;;;;;;;-1:-1:-1;3621:541:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5802:142::-;;;;;;;;;;;;;;;;-1:-1:-1;5802:142:66;;;;:::i;1666:119:111:-;;;;;;;;;;;;;;;;-1:-1:-1;1666:119:111;;:::i;1184:113:47:-;;;:::i;3440:139:66:-;3524:48;3543:6;3551:10;3563:8;3524:18;:48::i;:::-;3440:139;;:::o;5582:178::-;2613:20:63;:18;:20::i;:::-;5689:10:66::1;5674:26;::::0;;;:14:::1;:26;::::0;;;;;;;::::1;:32:::0;::::1;::::0;;;;;;;;::::1;;5670:84;;;5722:21;5731:5;5738:4;5722:8;:21::i;:::-;;5670:84;2654:19:63::0;:17;:19::i;2324:150:66:-;2409:7;2613:20:63;:18;:20::i;:::-;2435:32:66::1;2448:6;;2456:10;2435:12;:32::i;:::-;2428:39;;2654:19:63::0;:17;:19::i;:::-;2324:150:66;;;;:::o;2788:251::-;2890:7;2613:20:63;:18;:20::i;:::-;2932:10:66::1;2917:26;::::0;;;:14:::1;:26;::::0;;;;;;;::::1;:32:::0;::::1;::::0;;;;;;;;::::1;;2909:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3006:26;3019:6;;3027:4;3006:12;:26::i;:::-;2999:33;;2654:19:63::0;:17;:19::i;:::-;2788:251:66;;;;;:::o;3251:147::-;3363:22;;;;3340:4;3363:22;;;:14;:22;;;;;;;;:28;;;;;;;;;;;;;;;3251:147::o;1791:156:111:-;1910:30;1921:4;1927:5;1934;1910:10;:30::i;:::-;1791:156;;;:::o;2153:129:66:-;2222:7;2613:20:63;:18;:20::i;:::-;2248:27:66::1;2257:5;2264:10;2248:8;:27::i;:::-;2241:34;;2654:19:63::0;:17;:19::i;:::-;2153:129:66;;;:::o;2516:230::-;2602:7;2613:20:63;:18;:20::i;:::-;2644:10:66::1;2629:26;::::0;;;:14:::1;:26;::::0;;;;;;;::::1;:32:::0;::::1;::::0;;;;;;;;::::1;;2621:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2718:21;2727:5;2734:4;2718:8;:21::i;3081:128::-:0;3182:13;;;;3156:7;3182:13;;;:7;:13;;;;;;;;:20;;;;;;;;;;;;;3081:128::o;1303:121:47:-;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;1557:103:111:-;1623:14;:30;1557:103::o;5278:262:66:-;2613:20:63;:18;:20::i;:::-;5371:9:66::1;5366:168;5390:1;5386;:5;5366:168;;;5437:1;5416:6:::0;5423:1;5416:9:::1;::::0;::::1;;;;;;;;;;;:23;;;5412:67;;;5459:5;;5412:67;5492:31;5501:6;5508:1;5501:9;;;;;;;;;;;;;5512:10;5492:8;:31::i;:::-;-1:-1:-1::0;5393:3:66::1;;5366:168;;;;2654:19:63::0;:17;:19::i;:::-;5278:262:66;:::o;2015:96::-;2098:6;2015:96;:::o;3621:541::-;3845:18;1618:105;3931:6;3939:8;3949:18;3962:4;3949:12;:18::i;:::-;3889:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3866:122;;;;;;-1:-1:-1;3999:103:66;4021:4;3866:122;4039:26;4057:1;4060;4063;4039:17;:26::i;:::-;4067:8;13190:3:31;3999:21:66;:103::i;:::-;4113:42;4132:6;4140:4;4146:8;4113:18;:42::i;:::-;3621:541;;;;;;;;:::o;5802:142::-;5902:22;;;;;;;:14;:22;;;;;;;;5925:10;5902:34;;;;;;;;5875:62;;5893:6;;5902:34;;5901:35;5875:17;:62::i;1666:119:111:-;1740:18;:38;1666:119::o;1184:113:47:-;1244:7;1270:20;:18;:20::i;:::-;1263:27;;1184:113;:::o;4168:223:66:-;4289:22;;;;;;;;:14;:22;;;;;;;;:28;;;;;;;;;;;;;:39;;;;;;;;;;;;;4343:41;;;;;;;4289:22;;:28;4343:41;;;;;;;;;;4168:223;;;:::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;1980:169:111:-;2091:20;;;;;;;;;;;;;;;;;2054;;2091;;;;;;;;-1:-1:-1;2128:14:111;;1980:169;;;;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;2155:194:111:-;2245:20;2282:25;2294:6;;2302:4;2282:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2282:25:111;;-1:-1:-1;;;;;2282:25:111;-1:-1:-1;2324:18:111;;2155:194;;;;;:::o;4424:189:66:-;4537:13;;;;;;;;:7;:13;;;;;;;;:20;;;;;;;;;;;;;:28;;;4580:26;;;;;;;;;;;;4537:13;;4580:26;;;;;;;;;;;4424:189;;;:::o;3803:419:47:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:47;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:47:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:31;2487:8:47;:63::i;:::-;-1:-1:-1;;;2884:19:47;;;;;;;;2907:1;2884:19;;;;;;;;:24;;;;;;;-1:-1:-1;;1701:1214:47:o;2386:188:58:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;3199:183:58:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:47:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:31;3082:8:47;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:47;;;;;;-1:-1:-1;;3728:30:47;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:47:o;3433:187:58:-;3595:9;;3570:44::o;1459:126:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"allowed_to_mint_for(address,address)":"a0990033","getBalancerToken()":"c0039699","getDomainSeparator()":"ed24911d","getMinterApproval(address,address)":"3c543bc6","getNextNonce(address)":"90193b7c","mint(address)":"6a627842","mintFor(address,address)":"7504a15d","mintMany(address[])":"397ada21","mintManyFor(address[],address)":"3b9f7384","mint_for(address,address)":"27f18ae3","mint_many(address[8])":"a51e1904","minted(address,address)":"8b752bb0","setMinted(address,address,uint256)":"484935a2","setMinterApproval(address,bool)":"0de54ba0","setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)":"c6542794","setMockMintFor(uint256)":"95c3d17c","setMockMintForMany(uint256)":"e96ff983","toggle_approve_mint(address)":"dd289d60"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"MintFor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"MintForMany\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"MinterApprovalSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed_to_mint_for\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinterApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"mintMany\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintManyFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mint_for\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[8]\",\"name\":\"gauges\",\"type\":\"address[8]\"}],\"name\":\"mint_many\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"minted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setMinted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMinterApprovalWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintForReturn\",\"type\":\"uint256\"}],\"name\":\"setMockMintFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintForManyReturn\",\"type\":\"uint256\"}],\"name\":\"setMockMintForMany\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"toggle_approve_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"mint(address)\":{\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\"}},\"mintFor(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mintMany(address[])\":{\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"mintManyFor(address[],address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\",\"user\":\"Address to mint to\"}},\"mint_for(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mint_many(address[8])\":{\"details\":\"This function is not recommended as `mintMany()` is more flexible and gas efficient\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowed_to_mint_for(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"},\"getMinterApproval(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"mint(address)\":{\"notice\":\"Mint everything which belongs to `msg.sender` and send to them\"},\"mintFor(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mintMany(address[])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"mintManyFor(address[],address)\":{\"notice\":\"Mint tokens for `user` across multiple gauges\"},\"mint_for(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mint_many(address[8])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"minted(address,address)\":{\"notice\":\"The total number of tokens minted for `user` from `gauge`\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on your behalf\"},\"setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing them.\"},\"toggle_approve_mint(address)\":{\"notice\":\"Toggle whether `minter` is approved to mint tokens for `user`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockBalancerMinter.sol\":\"MockBalancerMinter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/BalancerMinter.sol\":{\"keccak256\":\"0xbacdfde61937f9cea9166c7e492ac8d65261fb6bdfb621f1f258852799204cc8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3e68da1f25c0211654bb0b04c4ac1a789cb3dfabd7f5db54d6bfbeb49414e0c\",\"dweb:/ipfs/QmRnvBWovj9HNZsEfvrZpbJcs3K7ikwrY8fkX68F7rdxQK\"]},\"contracts/test/MockBalancerMinter.sol\":{\"keccak256\":\"0xf27f93e3a43cc0cdc17ea32eb265ba1046e0b9294747cd9e9bc0de823a8bb0ad\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c1077ef45b45c101b0024874f798ce9df435994c4d35971e0c2dc007110208c9\",\"dweb:/ipfs/Qmd3JbwD7cFCnmA2DmDk5YdELhLeX7NyfNUiEsDNyhqhd4\"]}},\"version\":1}"}},"contracts/test/MockBalancerTokenAdmin.sol":{"MockBalancerTokenAdmin":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IBalancerToken","name":"balancerToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"INITIAL_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"future_epoch_time_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startEpochTimeWrite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161037f38038061037f8339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b039384166001600160a01b03199182161782556001805494909316931692909217905542600255670353c226d6c6f5806080819052906102eb9061009490398061018752506102eb6000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80638d928af811610076578063b26b238e1161005b578063b26b238e14610161578063b87b561614610169578063c003969914610171576100be565b80638d928af814610130578063a228bced14610161576100be565b806340c10f19116100a757806340c10f19146100e55780634dbac733146101205780637efad8e014610128576100be565b806321609bbf146100c35780632c4e722e146100dd575b600080fd5b6100cb610179565b60408051918252519081900360200190f35b6100cb610185565b61011e600480360360408110156100fb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356101a9565b005b6100cb610240565b6100cb61024c565b610138610258565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100cb610274565b6100cb610283565b61013861028b565b671080e992061ab30081565b7f000000000000000000000000000000000000000000000000000000000000000090565b600154604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052915191909216916340c10f1991604480830192600092919082900301818387803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505050565b670353c226d6c6f58081565b670de0b6b3a764000081565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b600061027e6102a7565b905090565b6301e1338081565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60028054600101908190559056fea2646970667358221220f7cd3486b54306f60df95188077fe0b32e09e2e4b0108860f117100e29f6be4864736f6c63430007010033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x37F CODESIZE SUB DUP1 PUSH2 0x37F DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP5 SWAP1 SWAP4 AND SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE TIMESTAMP PUSH1 0x2 SSTORE PUSH8 0x353C226D6C6F580 PUSH1 0x80 DUP2 SWAP1 MSTORE SWAP1 PUSH2 0x2EB SWAP1 PUSH2 0x94 SWAP1 CODECOPY DUP1 PUSH2 0x187 MSTORE POP PUSH2 0x2EB PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xB26B238E GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xB26B238E EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0xB87B5616 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x171 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0xA228BCED EQ PUSH2 0x161 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0x4DBAC733 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x7EFAD8E0 EQ PUSH2 0x128 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x21609BBF EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0xDD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB PUSH2 0x179 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH2 0x185 JUMP JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1A9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xCB PUSH2 0x240 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x24C JUMP JUMPDEST PUSH2 0x138 PUSH2 0x258 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH2 0x274 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x283 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x28B JUMP JUMPDEST PUSH8 0x1080E992061AB300 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x238 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH8 0x353C226D6C6F580 DUP2 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27E PUSH2 0x2A7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH4 0x1E13380 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF7 0xCD CALLVALUE DUP7 0xB5 NUMBER MOD 0xF6 0xD 0xF9 MLOAD DUP9 SMOD PUSH32 0xE0B32E09E2E4B0108860F117100E29F6BE4864736F6C63430007010033000000 ","sourceMap":"1037:1515:112:-:0;;;1535:254;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1535:254:112;;;;;;;1601:6;:14;;-1:-1:-1;;;;;1601:14:112;;;-1:-1:-1;;;;;;1601:14:112;;;;;;-1:-1:-1;1625:30:112;;;;;;;;;;;;;;1737:15;1719;:33;1114:34;1762:20;;;;1114:34;1037:1515;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"18427":[{"length":32,"start":391}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100be5760003560e01c80638d928af811610076578063b26b238e1161005b578063b26b238e14610161578063b87b561614610169578063c003969914610171576100be565b80638d928af814610130578063a228bced14610161576100be565b806340c10f19116100a757806340c10f19146100e55780634dbac733146101205780637efad8e014610128576100be565b806321609bbf146100c35780632c4e722e146100dd575b600080fd5b6100cb610179565b60408051918252519081900360200190f35b6100cb610185565b61011e600480360360408110156100fb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356101a9565b005b6100cb610240565b6100cb61024c565b610138610258565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100cb610274565b6100cb610283565b61013861028b565b671080e992061ab30081565b7f000000000000000000000000000000000000000000000000000000000000000090565b600154604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052915191909216916340c10f1991604480830192600092919082900301818387803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505050565b670353c226d6c6f58081565b670de0b6b3a764000081565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b600061027e6102a7565b905090565b6301e1338081565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60028054600101908190559056fea2646970667358221220f7cd3486b54306f60df95188077fe0b32e09e2e4b0108860f117100e29f6be4864736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xB26B238E GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xB26B238E EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0xB87B5616 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x171 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0xA228BCED EQ PUSH2 0x161 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0x4DBAC733 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x7EFAD8E0 EQ PUSH2 0x128 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x21609BBF EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0xDD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB PUSH2 0x179 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH2 0x185 JUMP JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1A9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xCB PUSH2 0x240 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x24C JUMP JUMPDEST PUSH2 0x138 PUSH2 0x258 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH2 0x274 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x283 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x28B JUMP JUMPDEST PUSH8 0x1080E992061AB300 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x238 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH8 0x353C226D6C6F580 DUP2 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27E PUSH2 0x2A7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH4 0x1E13380 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF7 0xCD CALLVALUE DUP7 0xB5 NUMBER MOD 0xF6 0xD 0xF9 MLOAD DUP9 SMOD PUSH32 0xE0B32E09E2E4B0108860F117100E29F6BE4864736F6C63430007010033000000 ","sourceMap":"1037:1515:112:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1237:72;;;:::i;:::-;;;;;;;;;;;;;;;;2243:77;;;:::i;2451:99::-;;;;;;;;;;;;;;;;-1:-1:-1;2451:99:112;;;;;;;;;:::i;:::-;;1075:73;;;:::i;1336:47::-;;;:::i;1795:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1993:95;;;:::i;1177:54::-;;;:::i;1882:105::-;;;:::i;1237:72::-;1290:19;1237:72;:::o;2243:77::-;2308:5;2243:77;:::o;2451:99::-;2512:14;;:31;;;;;;:14;:31;;;;;;;;;;;;;;;:14;;;;;:19;;:31;;;;;:14;;:31;;;;;;;:14;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2451:99;;:::o;1075:73::-;1114:34;1075:73;:::o;1336:47::-;1379:4;1336:47;:::o;1795:81::-;1838:6;1863;;;1795:81;:::o;1993:95::-;2042:7;2068:13;:11;:13::i;:::-;2061:20;;1993:95;:::o;1177:54::-;1223:8;1177:54;:::o;1882:105::-;1966:14;;;;1882:105;:::o;2326:119::-;2386:15;:20;;2405:1;2386:20;;;;;2326:119;:::o"},"methodIdentifiers":{"INITIAL_RATE()":"4dbac733","RATE_DENOMINATOR()":"7efad8e0","RATE_REDUCTION_COEFFICIENT()":"21609bbf","RATE_REDUCTION_TIME()":"b87b5616","future_epoch_time_write()":"b26b238e","getBalancerToken()":"c0039699","getVault()":"8d928af8","mint(address,uint256)":"40c10f19","rate()":"2c4e722e","startEpochTimeWrite()":"a228bced"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IBalancerToken\",\"name\":\"balancerToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"INITIAL_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_COEFFICIENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"future_epoch_time_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startEpochTimeWrite\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is an incomplete implementation of the token admin. It provides just enough functionality to be able to instantiate Liquidity and Stakeless gauges.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockBalancerTokenAdmin.sol\":\"MockBalancerTokenAdmin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"contracts/test/MockBalancerTokenAdmin.sol\":{\"keccak256\":\"0x97c802518b495a73f92a57d1cfb88878eb25053340409b1ee28e9c834c9ce428\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fe8ec06d5b8e4366ef92e4b2c40a11fa4fb11b649bfb9fa967d819975c110cf5\",\"dweb:/ipfs/QmeZVigTbTtbrBmiqbxLShngeL5phrZwq5UWv6taPKzAeA\"]}},\"version\":1}"}},"contracts/test/MockBaseRootGauge.sol":{"MockBaseRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IL1StandardBridge","name":"baseBridge","type":"address"},{"internalType":"address","name":"baseBAL","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"bridge","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getBaseBal","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseL1StandardBridge","outputs":[{"internalType":"contract IL1StandardBridge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101c06040523480156200001257600080fd5b50604051620019f1380380620019f183398101604081905262000035916200043a565b8282828260016000819055506000816001600160a01b031663e6dec36f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200007d57600080fd5b505afa15801562000092573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b8919062000414565b90506000816001600160a01b031663c00396996040518163ffffffff1660e01b815260040160206040518083038186803b158015620000f657600080fd5b505afa1580156200010b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000131919062000414565b90506000836001600160a01b03166358de9ade6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016f57600080fd5b505afa15801562000184573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001aa919062000414565b6001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021957600080fd5b505afa1580156200022e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000254919062000414565b6001600160a01b0316610100816001600160a01b031660601b81525050826001600160a01b031663b87b56166040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ab57600080fd5b505afa158015620002c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e691906200048d565b6101208181525050826001600160a01b03166321609bbf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032857600080fd5b505afa1580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036391906200048d565b6101408181525050826001600160a01b0316637efad8e06040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a557600080fd5b505afa158015620003ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e091906200048d565b61016052505060001960025550506001600160601b0319606092831b811661018052911b166101a05250620004bf92505050565b60006020828403121562000426578081fd5b81516200043381620004a6565b9392505050565b6000806000606084860312156200044f578182fd5b83516200045c81620004a6565b60208501519093506200046f81620004a6565b60408501519092506200048281620004a6565b809150509250925092565b6000602082840312156200049f578081fd5b5051919050565b6001600160a01b0381168114620004bc57600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c611479620005786000398061054b5280610b995250806104865280610ae45280610b495250806107525250806107315250806106b4528061079e52508061031c52806104c0528061058f5280610999525080610386528061063a52508061088d525080610c875280610d71525080610ac25280610b7752506114796000f3fe6080604052600436106100f35760003560e01c80639f8676711161008a578063b4921aa311610059578063b4921aa314610250578063c2c4c5c114610265578063cd6dc6871461026d578063d34fb2671461028d576100f3565b80639f867671146101fc578063a267b63114610211578063ab8f094514610226578063b02452251461023b576100f3565b80634b820093116100c65780634b8200931461019257806383f5c39b146101bf57806390fd50b3146101d45780639c868ac0146101e7576100f3565b806309400707146100f857806310d3eb041461012e57806314e956f5146101505780631b88094d14610170575b600080fd5b34801561010457600080fd5b5061011861011336600461110f565b6102a2565b604051610125919061143a565b60405180910390f35b34801561013a57600080fd5b5061014e61014936600461117b565b610304565b005b34801561015c57600080fd5b5061011861016b36600461117b565b61037f565b34801561017c57600080fd5b5061018561043d565b60405161012591906111e4565b34801561019e57600080fd5b506101b26101ad36600461110f565b61045a565b60405161012591906112d0565b3480156101cb57600080fd5b50610118610460565b61014e6101e236600461117b565b610466565b3480156101f357600080fd5b506101b261046f565b34801561020857600080fd5b50610118610478565b34801561021d57600080fd5b50610185610484565b34801561023257600080fd5b5061014e6104a8565b34801561024757600080fd5b50610118610544565b34801561025c57600080fd5b50610185610549565b6101b261056d565b34801561027957600080fd5b5061014e610288366004611131565b610930565b34801561029957600080fd5b5061014e610981565b600073ffffffffffffffffffffffffffffffffffffffff821630146102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390611403565b60405180910390fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610373576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b61037c81610a1a565b50565b60006104377f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b81526004016103df9291906112aa565b60206040518083038186803b1580156103f757600080fd5b505afa15801561040b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042f9190611193565b600654610a9c565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b61037c81610aa8565b60055460ff1690565b670de0b6b3a764000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610577610bfe565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b60025460006105f3610c17565b905080821015610922576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e52379061066f9030906004016111e4565b600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561082b57848111156106ee5761082b565b62093a8081026000806107008361037f565b905082851015801561071657508262093a800185105b156107cf57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161077a57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506107e49050565b670de0b6b3a764000062093a80828902020491505b827f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced83604051610814919061143a565b60405180910390a2509390930192506001016106d6565b5060028490556004805483019055811580159061084b575060055460ff16155b1561091e576040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636a627842906108c29030906004016111e4565b602060405180830381600087803b1580156108dc57600080fd5b505af11580156108f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109149190611193565b5061091e82610aa8565b5050505b600192505050610457610c42565b61093981610c49565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610a5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390611312565b60068190556040517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb290610a9190839061143a565b60405180910390a150565b80820390821102900390565b610b0973ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610e1f565b6007546040517f838b252000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169263838b252092610bc9927f0000000000000000000000000000000000000000000000000000000000000000927f000000000000000000000000000000000000000000000000000000000000000092911690879060009060040161122c565b600060405180830381600087803b158015610be357600080fd5b505af1158015610bf7573d6000803e3d6000fd5b5050505050565b610c1060026000541415610190610f9b565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6001600055565b60025415610c83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906113cc565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ceb57600080fd5b505afa158015610cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d239190611193565b905080610d5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f39061136f565b6001819055610d69610c17565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610dd757600080fd5b505af1158015610deb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0f9190611193565b600355610e1b82610a1a565b5050565b8015801590610ed057506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e90610e7d9030908690600401611205565b60206040518083038186803b158015610e9557600080fd5b505afa158015610ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecd9190611193565b15155b15610f7757610f778363095ea7b360e01b846000604051602401610ef5929190611281565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610fa9565b610f968363095ea7b360e01b8484604051602401610ef59291906112aa565b505050565b81610e1b57610e1b8161105c565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610fd291906111ab565b6000604051808303816000865af19150503d806000811461100f576040519150601f19603f3d011682016040523d82523d6000602084013e611014565b606091505b5091509150600082141561102c573d6000803e3d6000fd5b61105681516000148061104e57508180602001905181019061104e919061115b565b6101a2610f9b565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261037c917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461043757600080fd5b600060208284031215611120578081fd5b61112a83836110eb565b9392505050565b60008060408385031215611143578081fd5b61114d84846110eb565b946020939093013593505050565b60006020828403121561116c578081fd5b8151801515811461112a578182fd5b60006020828403121561118c578081fd5b5035919050565b6000602082840312156111a4578081fd5b5051919050565b60008251815b818110156111cb57602081860181015185830152016111b1565b818111156111d95782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff95861681529385166020850152919093166040830152606082019290925263ffffffff909116608082015260c060a0820181905260009082015260e00190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526012908201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604082015260600190565b60208082526034908201527f52656c61746976652077656967687420636170206578636565647320616c6c6f60408201527f776564206162736f6c757465206d6178696d756d000000000000000000000000606082015260800190565b60208082526024908201527f42616c616e636572546f6b656e41646d696e206e6f742079657420616374697660408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252601e908201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604082015260600190565b9081526020019056fea2646970667358221220280da2d21d6bcbbce103388707ac33cebd037d8e2e012b250c0e9a2c7949775164736f6c63430007010033","opcodes":"PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x19F1 CODESIZE SUB DUP1 PUSH3 0x19F1 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x43A JUMP JUMPDEST DUP3 DUP3 DUP3 DUP3 PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE6DEC36F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x92 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xB8 SWAP2 SWAP1 PUSH3 0x414 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0039699 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x10B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x131 SWAP2 SWAP1 PUSH3 0x414 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x58DE9ADE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x16F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x184 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1AA SWAP2 SWAP1 PUSH3 0x414 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x219 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x22E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x254 SWAP2 SWAP1 PUSH3 0x414 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB87B5616 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x2E6 SWAP2 SWAP1 PUSH3 0x48D JUMP JUMPDEST PUSH2 0x120 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x21609BBF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x33D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x363 SWAP2 SWAP1 PUSH3 0x48D JUMP JUMPDEST PUSH2 0x140 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7EFAD8E0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x3E0 SWAP2 SWAP1 PUSH3 0x48D JUMP JUMPDEST PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP2 SHL AND PUSH2 0x1A0 MSTORE POP PUSH3 0x4BF SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x426 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x433 DUP2 PUSH3 0x4A6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x44F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x45C DUP2 PUSH3 0x4A6 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x46F DUP2 PUSH3 0x4A6 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x482 DUP2 PUSH3 0x4A6 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x49F JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x4BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1479 PUSH3 0x578 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x54B MSTORE DUP1 PUSH2 0xB99 MSTORE POP DUP1 PUSH2 0x486 MSTORE DUP1 PUSH2 0xAE4 MSTORE DUP1 PUSH2 0xB49 MSTORE POP DUP1 PUSH2 0x752 MSTORE POP DUP1 PUSH2 0x731 MSTORE POP DUP1 PUSH2 0x6B4 MSTORE DUP1 PUSH2 0x79E MSTORE POP DUP1 PUSH2 0x31C MSTORE DUP1 PUSH2 0x4C0 MSTORE DUP1 PUSH2 0x58F MSTORE DUP1 PUSH2 0x999 MSTORE POP DUP1 PUSH2 0x386 MSTORE DUP1 PUSH2 0x63A MSTORE POP DUP1 PUSH2 0x88D MSTORE POP DUP1 PUSH2 0xC87 MSTORE DUP1 PUSH2 0xD71 MSTORE POP DUP1 PUSH2 0xAC2 MSTORE DUP1 PUSH2 0xB77 MSTORE POP PUSH2 0x1479 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB4921AA3 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB4921AA3 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x28D JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0xA267B631 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x23B JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x4B820093 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0x90FD50B3 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x1E7 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x170 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x110F JUMP JUMPDEST PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x143A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0x117B JUMP JUMPDEST PUSH2 0x304 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0x117B JUMP JUMPDEST PUSH2 0x37F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x185 PUSH2 0x43D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x11E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B2 PUSH2 0x1AD CALLDATASIZE PUSH1 0x4 PUSH2 0x110F JUMP JUMPDEST PUSH2 0x45A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x12D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x460 JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x117B JUMP JUMPDEST PUSH2 0x466 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B2 PUSH2 0x46F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x478 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x185 PUSH2 0x484 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x4A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x544 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x185 PUSH2 0x549 JUMP JUMPDEST PUSH2 0x1B2 PUSH2 0x56D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0x1131 JUMP JUMPDEST PUSH2 0x930 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x981 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x1403 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x373 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0x37C DUP2 PUSH2 0xA1A JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x437 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DF SWAP3 SWAP2 SWAP1 PUSH2 0x12AA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x40B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x42F SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xA9C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x37C DUP2 PUSH2 0xAA8 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x517 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x577 PUSH2 0xBFE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5E6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x5F3 PUSH2 0xC17 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x922 JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x66F SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x11E4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x82B JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x6EE JUMPI PUSH2 0x82B JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x700 DUP4 PUSH2 0x37F JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x716 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x7CF JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x77A JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x7E4 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST DUP3 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED DUP4 PUSH1 0x40 MLOAD PUSH2 0x814 SWAP2 SWAP1 PUSH2 0x143A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x6D6 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x84B JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x91E JUMPI PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x8C2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x11E4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8F0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x914 SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST POP PUSH2 0x91E DUP3 PUSH2 0xAA8 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x457 PUSH2 0xC42 JUMP JUMPDEST PUSH2 0x939 DUP2 PUSH2 0xC49 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x9F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xA5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x1312 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP1 PUSH2 0xA91 SWAP1 DUP4 SWAP1 PUSH2 0x143A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xB09 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0xE1F JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x838B252000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND SWAP3 PUSH4 0x838B2520 SWAP3 PUSH2 0xBC9 SWAP3 PUSH32 0x0 SWAP3 PUSH32 0x0 SWAP3 SWAP2 AND SWAP1 DUP8 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x122C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC10 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xF9B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xC83 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x13CC JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCFF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD23 SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xD5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x136F JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xD69 PUSH2 0xC17 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE0F SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST PUSH1 0x3 SSTORE PUSH2 0xE1B DUP3 PUSH2 0xA1A JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xED0 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0xE7D SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1205 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xECD SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xF77 JUMPI PUSH2 0xF77 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xEF5 SWAP3 SWAP2 SWAP1 PUSH2 0x1281 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0xFA9 JUMP JUMPDEST PUSH2 0xF96 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xEF5 SWAP3 SWAP2 SWAP1 PUSH2 0x12AA JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xE1B JUMPI PUSH2 0xE1B DUP2 PUSH2 0x105C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xFD2 SWAP2 SWAP1 PUSH2 0x11AB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x100F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1014 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x102C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1056 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x104E JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x104E SWAP2 SWAP1 PUSH2 0x115B JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0xF9B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x37C SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1120 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x112A DUP4 DUP4 PUSH2 0x10EB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1143 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x114D DUP5 DUP5 PUSH2 0x10EB JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x112A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x118C JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11A4 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x11CB JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x11B1 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x11D9 JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 DUP6 AND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C61746976652077656967687420636170206578636565647320616C6C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x776564206162736F6C757465206D6178696D756D000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x42616C616E636572546F6B656E41646D696E206E6F7420796574206163746976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6174656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 0xD LOG2 0xD2 SAR PUSH12 0xCBBCE103388707AC33CEBD03 PUSH30 0x8E2E012B250C0E9A2C7949775164736F6C63430007010033000000000000 ","sourceMap":"927:696:113:-:0;;;977:227;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1111:6;1119:10;1131:7;2585:6:97;2070:1:63;2175:7;:22;;;;2286:30:89;2339:6;-1:-1:-1;;;;;2339:28:89;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2286:84;;2380:15;2398:10;-1:-1:-1;;;;;2398:27:89;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2380:47;;2437:32;2472:6;-1:-1:-1;;;;;2472:25:89;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;2510:20:89;;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;;;2665:23:89;;;;2437:62;;-1:-1:-1;;;;;;2600:34:89;;;2665:21;;:23;;;;;;;;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2644:44:89;;;-1:-1:-1;;;;;2644:44:89;;;;;;;2722:10;-1:-1:-1;;;;;2722:30:89;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2699:55;;;;;;2794:10;-1:-1:-1;;;;;2794:37:89;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2764:69;;;;;;2863:10;-1:-1:-1;;;;;2863:27:89;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2843:49;;-1:-1:-1;;;;3053:7:89;:27;-1:-1:-1;;;;;;;;2603:44:97::1;::::0;;;;;::::1;::::0;2657:18;;;::::1;::::0;-1:-1:-1;927:696:113;;-1:-1:-1;;;927:696:113;1439:313:-1;;1579:2;1567:9;1558:7;1554:23;1550:32;1547:2;;;-1:-1;;1585:12;1547:2;255:6;249:13;267:58;319:5;267:58;:::i;:::-;1637:99;1541:211;-1:-1;;;1541:211::o;2715:645::-;;;;2919:2;2907:9;2898:7;2894:23;2890:32;2887:2;;;-1:-1;;2925:12;2887:2;1211:6;1205:13;1223:63;1280:5;1223:63;:::i;:::-;3118:2;3193:22;;1009:13;2977:104;;-1:-1;1027:58;1009:13;1027:58;:::i;:::-;3262:2;3312:22;;83:13;3126:99;;-1:-1;101:33;83:13;101:33;:::i;:::-;3270:74;;;;2881:479;;;;;:::o;3367:263::-;;3482:2;3470:9;3461:7;3457:23;3453:32;3450:2;;;-1:-1;;3488:12;3450:2;-1:-1;1376:13;;3444:186;-1:-1;3444:186::o;4683:117::-;-1:-1;;;;;4538:54;;4742:35;;4732:2;;4791:1;;4781:12;4732:2;4726:74;:::o;:::-;927:696:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":2754},{"length":32,"start":2935}],"14642":[{"length":32,"start":3207},{"length":32,"start":3441}],"14644":[{"length":32,"start":2189}],"14646":[{"length":32,"start":902},{"length":32,"start":1594}],"14648":[{"length":32,"start":796},{"length":32,"start":1216},{"length":32,"start":1423},{"length":32,"start":2457}],"14656":[{"length":32,"start":1716},{"length":32,"start":1950}],"14658":[{"length":32,"start":1841}],"14660":[{"length":32,"start":1874}],"17129":[{"length":32,"start":1158},{"length":32,"start":2788},{"length":32,"start":2889}],"17131":[{"length":32,"start":1355},{"length":32,"start":2969}]},"linkReferences":{},"object":"6080604052600436106100f35760003560e01c80639f8676711161008a578063b4921aa311610059578063b4921aa314610250578063c2c4c5c114610265578063cd6dc6871461026d578063d34fb2671461028d576100f3565b80639f867671146101fc578063a267b63114610211578063ab8f094514610226578063b02452251461023b576100f3565b80634b820093116100c65780634b8200931461019257806383f5c39b146101bf57806390fd50b3146101d45780639c868ac0146101e7576100f3565b806309400707146100f857806310d3eb041461012e57806314e956f5146101505780631b88094d14610170575b600080fd5b34801561010457600080fd5b5061011861011336600461110f565b6102a2565b604051610125919061143a565b60405180910390f35b34801561013a57600080fd5b5061014e61014936600461117b565b610304565b005b34801561015c57600080fd5b5061011861016b36600461117b565b61037f565b34801561017c57600080fd5b5061018561043d565b60405161012591906111e4565b34801561019e57600080fd5b506101b26101ad36600461110f565b61045a565b60405161012591906112d0565b3480156101cb57600080fd5b50610118610460565b61014e6101e236600461117b565b610466565b3480156101f357600080fd5b506101b261046f565b34801561020857600080fd5b50610118610478565b34801561021d57600080fd5b50610185610484565b34801561023257600080fd5b5061014e6104a8565b34801561024757600080fd5b50610118610544565b34801561025c57600080fd5b50610185610549565b6101b261056d565b34801561027957600080fd5b5061014e610288366004611131565b610930565b34801561029957600080fd5b5061014e610981565b600073ffffffffffffffffffffffffffffffffffffffff821630146102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390611403565b60405180910390fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610373576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b61037c81610a1a565b50565b60006104377f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b81526004016103df9291906112aa565b60206040518083038186803b1580156103f757600080fd5b505afa15801561040b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042f9190611193565b600654610a9c565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b61037c81610aa8565b60055460ff1690565b670de0b6b3a764000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610577610bfe565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b60025460006105f3610c17565b905080821015610922576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e52379061066f9030906004016111e4565b600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561082b57848111156106ee5761082b565b62093a8081026000806107008361037f565b905082851015801561071657508262093a800185105b156107cf57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161077a57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506107e49050565b670de0b6b3a764000062093a80828902020491505b827f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced83604051610814919061143a565b60405180910390a2509390930192506001016106d6565b5060028490556004805483019055811580159061084b575060055460ff16155b1561091e576040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636a627842906108c29030906004016111e4565b602060405180830381600087803b1580156108dc57600080fd5b505af11580156108f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109149190611193565b5061091e82610aa8565b5050505b600192505050610457610c42565b61093981610c49565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610a5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390611312565b60068190556040517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb290610a9190839061143a565b60405180910390a150565b80820390821102900390565b610b0973ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610e1f565b6007546040517f838b252000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169263838b252092610bc9927f0000000000000000000000000000000000000000000000000000000000000000927f000000000000000000000000000000000000000000000000000000000000000092911690879060009060040161122c565b600060405180830381600087803b158015610be357600080fd5b505af1158015610bf7573d6000803e3d6000fd5b5050505050565b610c1060026000541415610190610f9b565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6001600055565b60025415610c83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906113cc565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ceb57600080fd5b505afa158015610cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d239190611193565b905080610d5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f39061136f565b6001819055610d69610c17565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610dd757600080fd5b505af1158015610deb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0f9190611193565b600355610e1b82610a1a565b5050565b8015801590610ed057506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e90610e7d9030908690600401611205565b60206040518083038186803b158015610e9557600080fd5b505afa158015610ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecd9190611193565b15155b15610f7757610f778363095ea7b360e01b846000604051602401610ef5929190611281565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610fa9565b610f968363095ea7b360e01b8484604051602401610ef59291906112aa565b505050565b81610e1b57610e1b8161105c565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610fd291906111ab565b6000604051808303816000865af19150503d806000811461100f576040519150601f19603f3d011682016040523d82523d6000602084013e611014565b606091505b5091509150600082141561102c573d6000803e3d6000fd5b61105681516000148061104e57508180602001905181019061104e919061115b565b6101a2610f9b565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261037c917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461043757600080fd5b600060208284031215611120578081fd5b61112a83836110eb565b9392505050565b60008060408385031215611143578081fd5b61114d84846110eb565b946020939093013593505050565b60006020828403121561116c578081fd5b8151801515811461112a578182fd5b60006020828403121561118c578081fd5b5035919050565b6000602082840312156111a4578081fd5b5051919050565b60008251815b818110156111cb57602081860181015185830152016111b1565b818111156111d95782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff95861681529385166020850152919093166040830152606082019290925263ffffffff909116608082015260c060a0820181905260009082015260e00190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526012908201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604082015260600190565b60208082526034908201527f52656c61746976652077656967687420636170206578636565647320616c6c6f60408201527f776564206162736f6c757465206d6178696d756d000000000000000000000000606082015260800190565b60208082526024908201527f42616c616e636572546f6b656e41646d696e206e6f742079657420616374697660408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252601e908201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604082015260600190565b9081526020019056fea2646970667358221220280da2d21d6bcbbce103388707ac33cebd037d8e2e012b250c0e9a2c7949775164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB4921AA3 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB4921AA3 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x28D JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0xA267B631 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x23B JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x4B820093 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0x90FD50B3 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x1E7 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x170 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x110F JUMP JUMPDEST PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x143A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0x117B JUMP JUMPDEST PUSH2 0x304 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0x117B JUMP JUMPDEST PUSH2 0x37F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x185 PUSH2 0x43D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x11E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B2 PUSH2 0x1AD CALLDATASIZE PUSH1 0x4 PUSH2 0x110F JUMP JUMPDEST PUSH2 0x45A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x12D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x460 JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x117B JUMP JUMPDEST PUSH2 0x466 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B2 PUSH2 0x46F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x478 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x185 PUSH2 0x484 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x4A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x544 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x185 PUSH2 0x549 JUMP JUMPDEST PUSH2 0x1B2 PUSH2 0x56D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0x1131 JUMP JUMPDEST PUSH2 0x930 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x981 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x1403 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x373 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0x37C DUP2 PUSH2 0xA1A JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x437 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DF SWAP3 SWAP2 SWAP1 PUSH2 0x12AA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x40B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x42F SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xA9C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x37C DUP2 PUSH2 0xAA8 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x517 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x577 PUSH2 0xBFE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5E6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x5F3 PUSH2 0xC17 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x922 JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x66F SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x11E4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x82B JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x6EE JUMPI PUSH2 0x82B JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x700 DUP4 PUSH2 0x37F JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x716 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x7CF JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x77A JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x7E4 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST DUP3 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED DUP4 PUSH1 0x40 MLOAD PUSH2 0x814 SWAP2 SWAP1 PUSH2 0x143A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x6D6 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x84B JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x91E JUMPI PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x8C2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x11E4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8F0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x914 SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST POP PUSH2 0x91E DUP3 PUSH2 0xAA8 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x457 PUSH2 0xC42 JUMP JUMPDEST PUSH2 0x939 DUP2 PUSH2 0xC49 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x9F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xA5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x1312 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP1 PUSH2 0xA91 SWAP1 DUP4 SWAP1 PUSH2 0x143A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xB09 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0xE1F JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x838B252000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND SWAP3 PUSH4 0x838B2520 SWAP3 PUSH2 0xBC9 SWAP3 PUSH32 0x0 SWAP3 PUSH32 0x0 SWAP3 SWAP2 AND SWAP1 DUP8 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x122C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC10 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xF9B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xC83 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x13CC JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCFF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD23 SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xD5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x136F JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xD69 PUSH2 0xC17 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE0F SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST PUSH1 0x3 SSTORE PUSH2 0xE1B DUP3 PUSH2 0xA1A JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xED0 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0xE7D SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1205 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xECD SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xF77 JUMPI PUSH2 0xF77 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xEF5 SWAP3 SWAP2 SWAP1 PUSH2 0x1281 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0xFA9 JUMP JUMPDEST PUSH2 0xF96 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xEF5 SWAP3 SWAP2 SWAP1 PUSH2 0x12AA JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xE1B JUMPI PUSH2 0xE1B DUP2 PUSH2 0x105C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xFD2 SWAP2 SWAP1 PUSH2 0x11AB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x100F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1014 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x102C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1056 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x104E JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x104E SWAP2 SWAP1 PUSH2 0x115B JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0xF9B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x37C SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1120 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x112A DUP4 DUP4 PUSH2 0x10EB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1143 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x114D DUP5 DUP5 PUSH2 0x10EB JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x112A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x118C JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11A4 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x11CB JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x11B1 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x11D9 JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 DUP6 AND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C61746976652077656967687420636170206578636565647320616C6C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x776564206162736F6C757465206D6178696D756D000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x42616C616E636572546F6B656E41646D696E206E6F7420796574206163746976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6174656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 0xD LOG2 0xD2 SAR PUSH12 0xCBBCE103388707AC33CEBD03 PUSH30 0x8E2E012B250C0E9A2C7949775164736F6C63430007010033000000000000 ","sourceMap":"927:696:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6895:191:89;;;;;;;;;;-1:-1:-1;6895:191:89;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7513:214;;;;;;;;;;-1:-1:-1;7513:214:89;;;;;:::i;:::-;;:::i;:::-;;8159:199;;;;;;;;;;-1:-1:-1;8159:199:89;;;;;:::i;:::-;;:::i;2921:99:97:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6789:100:89:-;;;;;;;;;;-1:-1:-1;6789:100:89;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8038:115::-;;;;;;;;;;;;;:::i;1524:97:113:-;;;;;;:::i;:::-;;:::i;7092:92:89:-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;3026:122:97:-;;;;;;;;;;;;;:::i;7190:154:89:-;;;;;;;;;;;;;:::i;6394:104::-;;;;;;;;;;;;;:::i;3154:86:97:-;;;;;;;;;;;;;:::i;3697:2655:89:-;;;:::i;2688:227:97:-;;;;;;;;;;-1:-1:-1;2688:227:97;;;;;:::i;:::-;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;6895:191::-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;:::i;:::-;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;2921:99:97:-;3003:10;;;;2921:99;;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;8038:115::-;8128:18;;8038:115;:::o;1524:97:113:-;1587:27;1603:10;1587:15;:27::i;7092:92:89:-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;3026:122:97:-;3120:21;3026:122;:::o;7190:154:89:-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;:::i;:::-;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6394:104::-;6464:7;6394:104;:::o;3154:86:97:-;3225:8;3154:86;:::o;3697:2655:89:-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;;;;;;;;;;:::i;:::-;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;:33:::1;:16;:33;::::0;::::1;::::0;:48:::1;::::0;4042:4:::1;::::0;4000:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5989:10;5978:38;6001:14;5978:38;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;:12:::1;:7;:12;::::0;::::1;::::0;:27:::1;::::0;6246:4:::1;::::0;6225:27:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6270:29;6286:12;6270:15;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;2688:227:97:-;2835:40;2857:17;2835:21;:40::i;:::-;-1:-1:-1;2886:10:97;:22;;;;;;;;;;;;;;;2688:227::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;:::i;:::-;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;:::i;:::-;7929:18;:38;;;7982:43;;;;;;7950:17;;7982:43;:::i;:::-;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;3246:334:97:-;3319:65;:21;:9;:21;3349;3373:10;3319:21;:65::i;:::-;3530:10;;3463:110;;;;;:36;:21;:36;;;;;:110;;3508:9;;3520:8;;3530:10;;;3542;;3530;;3463:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3246:334;:::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;:::i;:::-;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3413:33;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;:::i;:::-;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;:15;;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:19;:90::i;:::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;1407:94::-;1001:507;;;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o;1459:126:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;5:130:-1;72:20;;11401:42;11390:54;;12491:35;;12481:2;;12540:1;;12530:12;555:241;;659:2;647:9;638:7;634:23;630:32;627:2;;;-1:-1;;665:12;627:2;727:53;772:7;748:22;727:53;:::i;:::-;717:63;621:175;-1:-1;;;621:175::o;803:366::-;;;924:2;912:9;903:7;899:23;895:32;892:2;;;-1:-1;;930:12;892:2;992:53;1037:7;1013:22;992:53;:::i;:::-;982:63;1082:2;1121:22;;;;344:20;;-1:-1;;;886:283::o;1176:257::-;;1288:2;1276:9;1267:7;1263:23;1259:32;1256:2;;;-1:-1;;1294:12;1256:2;223:6;217:13;12637:5;11302:13;11295:21;12615:5;12612:32;12602:2;;-1:-1;;12648:12;1440:241;;1544:2;1532:9;1523:7;1519:23;1515:32;1512:2;;;-1:-1;;1550:12;1512:2;-1:-1;344:20;;1506:175;-1:-1;1506:175::o;1688:263::-;;1803:2;1791:9;1782:7;1778:23;1774:32;1771:2;;;-1:-1;;1809:12;1771:2;-1:-1;492:13;;1765:186;-1:-1;1765:186::o;5160:271::-;;2349:5;10601:12;-1:-1;12228:101;12242:6;12239:1;12236:13;12228:101;;;2493:4;12309:11;;;;;12303:18;12290:11;;;12283:39;12257:10;12228:101;;;12344:6;12341:1;12338:13;12335:2;;;-1:-1;12400:6;12395:3;12391:16;12384:27;12335:2;-1:-1;2524:16;;;;;5294:137;-1:-1;;5294:137::o;5438:222::-;11401:42;11390:54;;;;2029:37;;5565:2;5550:18;;5536:124::o;5667:333::-;11401:42;11390:54;;;2029:37;;11390:54;;5986:2;5971:18;;2029:37;5822:2;5807:18;;5793:207::o;6007:968::-;11401:42;11390:54;;;2029:37;;11390:54;;;6509:2;6494:18;;2029:37;11390:54;;;;6592:2;6577:18;;2029:37;6675:2;6660:18;;4994:37;;;;11607:10;11596:22;;;6756:3;6741:19;;5112:36;6344:3;6794;6779:19;;6772:49;;;-1:-1;6329:19;;;10745;10785:14;;;6315:660::o;6982:345::-;11401:42;11390:54;;;;2029:37;;11701:4;11690:16;7313:2;7298:18;;2812:56;7143:2;7128:18;;7114:213::o;7334:333::-;11401:42;11390:54;;;;2029:37;;7653:2;7638:18;;4994:37;7489:2;7474:18;;7460:207::o;7674:210::-;11302:13;;11295:21;2143:34;;7795:2;7780:18;;7766:118::o;8170:416::-;8370:2;8384:47;;;3105:2;8355:18;;;10745:19;3141:20;10785:14;;;3121:41;3181:12;;;8341:245::o;8593:416::-;8793:2;8807:47;;;3432:2;8778:18;;;10745:19;3468:34;10785:14;;;3448:55;3537:22;3523:12;;;3516:44;3579:12;;;8764:245::o;9016:416::-;9216:2;9230:47;;;3830:2;9201:18;;;10745:19;3866:34;10785:14;;;3846:55;3935:6;3921:12;;;3914:28;3961:12;;;9187:245::o;9439:416::-;9639:2;9653:47;;;4481:2;9624:18;;;10745:19;4517:21;10785:14;;;4497:42;4558:12;;;9610:245::o;9862:416::-;10062:2;10076:47;;;4809:2;10047:18;;;10745:19;4845:32;10785:14;;;4825:53;4897:12;;;10033:245::o;10285:222::-;4994:37;;;10412:2;10397:18;;10383:124::o"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","bridge(uint256)":"90fd50b3","checkpoint()":"c2c4c5c1","getBaseBal()":"b4921aa3","getBaseL1StandardBridge()":"a267b631","getCappedRelativeWeight(uint256)":"14e956f5","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"baseBridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseBAL\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"bridge\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaseBal\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaseL1StandardBridge\",\"outputs\":[{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is used by the Base Root Gauge deployment task in the deployments repo, and is referenced there. Do not delete.\",\"kind\":\"dev\",\"methods\":{\"bridge(uint256)\":{\"details\":\"It would be very difficult to contrive a fork test that set the mintAmount to a precise value, so the bridge limits are best tested with a mock and unit tests. It must be payable to send ETH to pay for gas in the child chain.\",\"params\":{\"mintAmount\":\"Amount to be bridged\"}},\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockBaseRootGauge.sol\":\"MockBaseRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\":{\"keccak256\":\"0x31b489cbd755b3c789115af4cf3d7af2da15f59030345ac29ecf26a033fc806a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2cc164ca032440222b7984aebbad6a46a6c82eef33564d1c6d78408bafab9934\",\"dweb:/ipfs/QmdgixtcWUX8CFhrTkUiAAmSkpMG2FsZnK18QywDhFoFcp\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/base/BaseRootGauge.sol\":{\"keccak256\":\"0xb5d997651688c44dc3a3c4407b573aa082015504fb91f972a367fb20cf64d344\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bcc43b88d1a141d008a00834d61d49363e297e79eb1de45ff37a59fa662dbca\",\"dweb:/ipfs/QmThj1XX6AbX2n2ajDDLRtJvDqpKb7eLh5zFQui92UA57H\"]},\"contracts/test/MockBaseRootGauge.sol\":{\"keccak256\":\"0x8072abaf812051a22fd48284cf83f2074bf070c539a5612bc7d89cee4a0fceef\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3271fb89d591873e88f3fe8b861f6e267b0c5f6cfafeb8cba0e3ba3bd2a6567a\",\"dweb:/ipfs/QmdB68Fu9RKNSoxvPjfeZAP7mje2jv56Tw3Fc8heZPzYoz\"]}},\"version\":1}"}},"contracts/test/MockChildChainGauge.sol":{"MockChildChainGauge":{"abi":[{"inputs":[{"internalType":"string","name":"_version","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"UserCheckpoint","type":"event"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"string","name":"_version","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lp_token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"checkpointStep","type":"uint256"}],"name":"setMockCheckpointStep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"_factory","type":"address"}],"name":"setMockFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516108a53803806108a583398101604081905261002f916100dc565b8051610042906002906020840190610049565b5050610196565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061008a57805160ff19168380011785556100b7565b828001600101855582156100b7579182015b828111156100b757825182559160200191906001019061009c565b506100c39291506100c7565b5090565b5b808211156100c357600081556001016100c8565b600060208083850312156100ee578182fd5b82516001600160401b0380821115610104578384fd5b818501915085601f830112610117578384fd5b815181811115610125578485fd5b604051601f8201601f1916810185018381118282101715610144578687fd5b604052818152838201850188101561015a578586fd5b8592505b8183101561017b578383018501518184018601529184019161015e565b8183111561018b57858583830101525b979650505050505050565b610700806101a56000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806382c630661161005b57806382c630661461010057806383d9ddb014610115578063c45a015514610128578063f399e22e1461013057610088565b8063094007071461008d5780634b820093146100b657806354fd4d50146100d6578063554fc806146100eb575b600080fd5b6100a061009b366004610502565b610143565b6040516100ad919061069f565b60405180910390f35b6100c96100c4366004610502565b61016b565b6040516100ad9190610623565b6100de610209565b6040516100ad919061062e565b6100fe6100f93660046105ea565b6102b2565b005b6101086102b7565b6040516100ad9190610602565b6100fe610123366004610502565b6102d3565b61010861031a565b6100fe61013e36600461051e565b610336565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b60035473ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081205490916101a0919061039c565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600460205260409081902091909155517f0103c5dd597c7d8e78094c4dc6d76c405761e7dcd771d4a4826d5e1c484d8c3f906101f9908490610602565b60405180910390a1506001919050565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f810184900484028201840190925281815292918301828280156102aa5780601f1061027f576101008083540402835291602001916102aa565b820191906000526020600020905b81548152906001019060200180831161028d57829003601f168201915b505050505081565b600355565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff84167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556001805490911633179055805161039790600290602084019061046f565b505050565b60008282016103ae84821015836103b5565b9392505050565b816103c3576103c3816103c7565b5050565b6103f1817f42414c00000000000000000000000000000000000000000000000000000000006103f4565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106104b057805160ff19168380011785556104dd565b828001600101855582156104dd579182015b828111156104dd5782518255916020019190600101906104c2565b506104e99291506104ed565b5090565b5b808211156104e957600081556001016104ee565b600060208284031215610513578081fd5b81356103ae816106a8565b60008060408385031215610530578081fd5b823561053b816106a8565b915060208381013567ffffffffffffffff80821115610558578384fd5b818601915086601f83011261056b578384fd5b813581811115610579578485fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011682010181811084821117156105b6578687fd5b60405281815283820185018910156105cc578586fd5b81858501868301378585838301015280955050505050509250929050565b6000602082840312156105fb578081fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b6000602080835283518082850152825b8181101561065a5785810183015185820160400152820161063e565b8181111561066b5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff811681146103f157600080fdfea26469706673582212205c308ee2592f4bdf030b623706bee6ab9c75edc92d5d7e6a111a6ff2f05d487b64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x8A5 CODESIZE SUB DUP1 PUSH2 0x8A5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xDC JUMP JUMPDEST DUP1 MLOAD PUSH2 0x42 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x49 JUMP JUMPDEST POP POP PUSH2 0x196 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x8A JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xB7 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xB7 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xB7 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x9C JUMP JUMPDEST POP PUSH2 0xC3 SWAP3 SWAP2 POP PUSH2 0xC7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xC8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x104 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x117 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x125 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD DUP6 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x144 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP9 LT ISZERO PUSH2 0x15A JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 SWAP3 POP JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x17B JUMPI DUP4 DUP4 ADD DUP6 ADD MLOAD DUP2 DUP5 ADD DUP7 ADD MSTORE SWAP2 DUP5 ADD SWAP2 PUSH2 0x15E JUMP JUMPDEST DUP2 DUP4 GT ISZERO PUSH2 0x18B JUMPI DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x700 DUP1 PUSH2 0x1A5 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x82C63066 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x82C63066 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x83D9DDB0 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0xF399E22E EQ PUSH2 0x130 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0x554FC806 EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x502 JUMP JUMPDEST PUSH2 0x143 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC9 PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x502 JUMP JUMPDEST PUSH2 0x16B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x623 JUMP JUMPDEST PUSH2 0xDE PUSH2 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x62E JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EA JUMP JUMPDEST PUSH2 0x2B2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x108 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x602 JUMP JUMPDEST PUSH2 0xFE PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x502 JUMP JUMPDEST PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x31A JUMP JUMPDEST PUSH2 0xFE PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x51E JUMP JUMPDEST PUSH2 0x336 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x1A0 SWAP2 SWAP1 PUSH2 0x39C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x103C5DD597C7D8E78094C4DC6D76C405761E7DCD771D4A4826D5E1C484D8C3F SWAP1 PUSH2 0x1F9 SWAP1 DUP5 SWAP1 PUSH2 0x602 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2AA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x27F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2AA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x28D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND CALLER OR SWAP1 SSTORE DUP1 MLOAD PUSH2 0x397 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x46F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x3AE DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x3B5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x3C3 JUMPI PUSH2 0x3C3 DUP2 PUSH2 0x3C7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3F1 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x3F4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x4B0 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x4DD JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x4DD JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4DD JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x4C2 JUMP JUMPDEST POP PUSH2 0x4E9 SWAP3 SWAP2 POP PUSH2 0x4ED JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x4E9 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x513 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3AE DUP2 PUSH2 0x6A8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x530 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x53B DUP2 PUSH2 0x6A8 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x558 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x56B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x579 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x5B6 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP10 LT ISZERO PUSH2 0x5CC JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5FB JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x65A JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x63E JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x66B JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5C ADDRESS DUP15 0xE2 MSIZE 0x2F 0x4B 0xDF SUB SIGNEXTEND PUSH3 0x3706BE 0xE6 0xAB SWAP13 PUSH22 0xEDC92D5D7E6A111A6FF2F05D487B64736F6C63430007 ADD STOP CALLER ","sourceMap":"1044:1252:114:-:0;;;1441:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1487:18;;;;:7;;:18;;;;;:::i;:::-;;1441:71;1044:1252;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1044:1252:114;;;-1:-1:-1;1044:1252:114;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;458:362:-1;;583:2;;571:9;562:7;558:23;554:32;551:2;;;-1:-1;;589:12;551:2;634:24;;-1:-1;;;;;667:30;;;664:2;;;-1:-1;;700:12;664:2;787:6;776:9;772:22;;;119:3;112:4;104:6;100:17;96:27;86:2;;-1:-1;;127:12;86:2;167:6;161:13;678:18;1226:6;1223:30;1220:2;;;-1:-1;;1256:12;1220:2;889;883:9;1329;1310:17;;-1:-1;;1306:33;915:17;;;;975:34;;;1011:22;;;972:62;969:2;;;-1:-1;;1037:12;969:2;889;1056:22;260:21;;;360:16;;;;;357:25;-1:-1;354:2;;;-1:-1;;385:12;354:2;-1:-1;1476:10;;1492:101;1506:6;1503:1;1500:13;1492:101;;;1573:11;;;;;1567:18;1554:11;;;;;1547:39;1521:10;;;;1492:101;;;1608:6;1605:1;1602:13;1599:2;;;-1:-1;583:2;1664:6;336:5;1655:16;;1648:27;1599:2;720:84;545:275;-1:-1;;;;;;;545:275::o;:::-;1044:1252:114;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c806382c630661161005b57806382c630661461010057806383d9ddb014610115578063c45a015514610128578063f399e22e1461013057610088565b8063094007071461008d5780634b820093146100b657806354fd4d50146100d6578063554fc806146100eb575b600080fd5b6100a061009b366004610502565b610143565b6040516100ad919061069f565b60405180910390f35b6100c96100c4366004610502565b61016b565b6040516100ad9190610623565b6100de610209565b6040516100ad919061062e565b6100fe6100f93660046105ea565b6102b2565b005b6101086102b7565b6040516100ad9190610602565b6100fe610123366004610502565b6102d3565b61010861031a565b6100fe61013e36600461051e565b610336565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b60035473ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081205490916101a0919061039c565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600460205260409081902091909155517f0103c5dd597c7d8e78094c4dc6d76c405761e7dcd771d4a4826d5e1c484d8c3f906101f9908490610602565b60405180910390a1506001919050565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f810184900484028201840190925281815292918301828280156102aa5780601f1061027f576101008083540402835291602001916102aa565b820191906000526020600020905b81548152906001019060200180831161028d57829003601f168201915b505050505081565b600355565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff84167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556001805490911633179055805161039790600290602084019061046f565b505050565b60008282016103ae84821015836103b5565b9392505050565b816103c3576103c3816103c7565b5050565b6103f1817f42414c00000000000000000000000000000000000000000000000000000000006103f4565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106104b057805160ff19168380011785556104dd565b828001600101855582156104dd579182015b828111156104dd5782518255916020019190600101906104c2565b506104e99291506104ed565b5090565b5b808211156104e957600081556001016104ee565b600060208284031215610513578081fd5b81356103ae816106a8565b60008060408385031215610530578081fd5b823561053b816106a8565b915060208381013567ffffffffffffffff80821115610558578384fd5b818601915086601f83011261056b578384fd5b813581811115610579578485fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011682010181811084821117156105b6578687fd5b60405281815283820185018910156105cc578586fd5b81858501868301378585838301015280955050505050509250929050565b6000602082840312156105fb578081fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b6000602080835283518082850152825b8181101561065a5785810183015185820160400152820161063e565b8181111561066b5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff811681146103f157600080fdfea26469706673582212205c308ee2592f4bdf030b623706bee6ab9c75edc92d5d7e6a111a6ff2f05d487b64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x82C63066 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x82C63066 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x83D9DDB0 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0xF399E22E EQ PUSH2 0x130 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0x554FC806 EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x502 JUMP JUMPDEST PUSH2 0x143 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC9 PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x502 JUMP JUMPDEST PUSH2 0x16B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x623 JUMP JUMPDEST PUSH2 0xDE PUSH2 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x62E JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EA JUMP JUMPDEST PUSH2 0x2B2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x108 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x602 JUMP JUMPDEST PUSH2 0xFE PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x502 JUMP JUMPDEST PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x31A JUMP JUMPDEST PUSH2 0xFE PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x51E JUMP JUMPDEST PUSH2 0x336 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x1A0 SWAP2 SWAP1 PUSH2 0x39C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x103C5DD597C7D8E78094C4DC6D76C405761E7DCD771D4A4826D5E1C484D8C3F SWAP1 PUSH2 0x1F9 SWAP1 DUP5 SWAP1 PUSH2 0x602 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2AA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x27F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2AA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x28D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND CALLER OR SWAP1 SSTORE DUP1 MLOAD PUSH2 0x397 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x46F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x3AE DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x3B5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x3C3 JUMPI PUSH2 0x3C3 DUP2 PUSH2 0x3C7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3F1 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x3F4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x4B0 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x4DD JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x4DD JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4DD JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x4C2 JUMP JUMPDEST POP PUSH2 0x4E9 SWAP3 SWAP2 POP PUSH2 0x4ED JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x4E9 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x513 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3AE DUP2 PUSH2 0x6A8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x530 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x53B DUP2 PUSH2 0x6A8 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x558 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x56B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x579 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x5B6 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP10 LT ISZERO PUSH2 0x5CC JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5FB JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x65A JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x63E JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x66B JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5C ADDRESS DUP15 0xE2 MSIZE 0x2F 0x4B 0xDF SUB SIGNEXTEND PUSH3 0x3706BE 0xE6 0xAB SWAP13 PUSH22 0xEDC92D5D7E6A111A6FF2F05D487B64736F6C63430007 ADD STOP CALLER ","sourceMap":"1044:1252:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1940:131;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2077:217;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1306:30::-;;;:::i;:::-;;;;;;;:::i;1714:113::-;;;;;;:::i;:::-;;:::i;:::-;;1225:23;;;:::i;:::-;;;;;;;:::i;1833:101::-;;;;;;:::i;:::-;;:::i;1254:46::-;;;:::i;1518:190::-;;;;;;:::i;:::-;;:::i;1940:131::-;2040:24;;2014:7;2040:24;;;:18;:24;;;;;;;1940:131::o;2077:217::-;2215:15;;2186:24;;;2143:4;2186:24;;;:18;:24;;;;;;2143:4;;2186:45;;:24;:28;:45::i;:::-;2159:24;;;;;;;:18;:24;;;;;;;:72;;;;2246:20;;;;;2178:4;;2246:20;:::i;:::-;;;;;;;;-1:-1:-1;2283:4:114;2077:217;;;:::o;1306:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1714:113::-;1788:15;:32;1714:113::o;1225:23::-;;;;;;:::o;1833:101::-;1909:7;:18;;;;;;;;;;;;;;;1833:101::o;1254:46::-;;;;;;:::o;1518:190::-;1604:8;:15;;;;;;;;;;;;;;1629:44;;;;;1662:10;1629:44;;;1683:18;;;;:7;;:18;;;;;:::i;:::-;;1518:190;;:::o;966:167:65:-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:65:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;927:241;;1031:2;1019:9;1010:7;1006:23;1002:32;999:2;;;-1:-1;;1037:12;999:2;85:6;72:20;97:33;124:5;97:33;:::i;1175:472::-;;;1306:2;1294:9;1285:7;1281:23;1277:32;1274:2;;;-1:-1;;1312:12;1274:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1364:63;-1:-1;1492:2;1477:18;;;1464:32;1516:18;1505:30;;;1502:2;;;-1:-1;;1538:12;1502:2;1614:6;1603:9;1599:22;;;442:3;435:4;427:6;423:17;419:27;409:2;;-1:-1;;450:12;409:2;497:6;484:20;1516:18;4788:6;4785:30;4782:2;;;-1:-1;;4818:12;4782:2;1306;4445:9;1492:2;4891:9;435:4;4876:6;4872:17;4868:33;4481:6;4477:17;;4588:6;4576:10;4573:22;1516:18;4540:10;4537:34;4534:62;4531:2;;;-1:-1;;4599:12;4531:2;1306;4618:22;590:21;;;690:16;;;;;687:25;-1:-1;684:2;;;-1:-1;;715:12;684:2;6222:6;1492:2;632:6;628:17;1492:2;666:5;662:16;6199:30;-1:-1;1492:2;6269:6;666:5;6260:16;;6253:27;1558:73;;;;;;;;1268:379;;;;;:::o;1962:241::-;;2066:2;2054:9;2045:7;2041:23;2037:32;2034:2;;;-1:-1;;2072:12;2034:2;-1:-1;857:20;;2028:175;-1:-1;2028:175::o;3108:222::-;5673:42;5662:54;;;;2281:37;;3235:2;3220:18;;3206:124::o;3337:210::-;5446:13;;5439:21;2395:34;;3458:2;3443:18;;3429:118::o;3843:310::-;;3990:2;;4011:17;4004:47;2779:5;5069:12;5226:6;3990:2;3979:9;3975:18;5214:19;-1:-1;6367:101;6381:6;6378:1;6375:13;6367:101;;;6448:11;;;;;6442:18;6429:11;;;5254:14;6429:11;6422:39;6396:10;;6367:101;;;6483:6;6480:1;6477:13;6474:2;;;-1:-1;5254:14;6539:6;3979:9;6530:16;;6523:27;6474:2;-1:-1;6659:2;6639:14;6655:7;6635:28;2937:39;;;;5254:14;2937:39;;3961:192;-1:-1;;;3961:192::o;4160:222::-;3059:37;;;4287:2;4272:18;;4258:124::o;6676:117::-;5673:42;6763:5;5662:54;6738:5;6735:35;6725:2;;6784:1;;6774:12"},"methodIdentifiers":{"factory()":"c45a0155","initialize(address,string)":"f399e22e","integrate_fraction(address)":"09400707","lp_token()":"82c63066","setMockCheckpointStep(uint256)":"554fc806","setMockFactory(address)":"83d9ddb0","user_checkpoint(address)":"4b820093","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_version\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"UserCheckpoint\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_version\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lp_token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"checkpointStep\",\"type\":\"uint256\"}],\"name\":\"setMockCheckpointStep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"_factory\",\"type\":\"address\"}],\"name\":\"setMockFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}}},\"stateVariables\":{\"version\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"factory()\":{\"notice\":\"Returns gauge factory address.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"user_checkpoint(address)\":{\"notice\":\"Records a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockChildChainGauge.sol\":\"MockChildChainGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\":{\"keccak256\":\"0xffafd017b9f43c8cc47f59e85e8a5354e4028110fb6c7fdbaeb569018f35e4d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bf250a0d068a2c8203dda057beabbf49705114e51086e885d7dc283a0cf3a249\",\"dweb:/ipfs/QmTBZvND9qY9k4EQYkfA9hYVSP3DxaXgKwuvDAQFDfxic2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/test/MockChildChainGauge.sol\":{\"keccak256\":\"0xb7f02645480aa1502732a231a795e03f9c3a88be7e989b4c12459ce2d1fd2ac9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21bd94586c9793e17d5a8b124492287cba0cdb75f58acc4ca7bf70c61bac490a\",\"dweb:/ipfs/QmNnfH3Jwuzrn9hCH8udgaKkzKRA8tM1A5JgqAzf4tyaF3\"]}},\"version\":1}"}},"contracts/test/MockGaugeController.sol":{"MockGaugeController":{"abi":[{"inputs":[{"internalType":"contract IVotingEscrow","name":"votingEscrow","type":"address"},{"internalType":"contract IAuthorizerAdaptor","name":"authorizerAdaptor","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"int128","name":"gauge_type","type":"int128"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"}],"name":"NewGauge","type":"event"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"int128","name":"gaugeType","type":"int128"}],"name":"add_gauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"add_type","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"contract IAuthorizerAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int128","name":"","type":"int128"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"change_type_weight","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkpoint_gauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"gauge_exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"gauge_relative_weight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"gauge_types","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"n_gauge_types","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"uint256","name":"weight","type":"uint256"}],"name":"setGaugeWeight","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bias","type":"uint256"}],"name":"setGaugeWeightBias","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"time_weight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"voting_escrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161091f38038061091f8339818101604052604081101561003357600080fd5b508051602090910151600680546001600160a01b039384166001600160a01b031991821617909155600580549390921692169190911790556108a58061007a6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639fba03a11161008c578063db1ca26011610066578063db1ca2601461033d578063dfe0503114610363578063f851a44014610394578063fc0c546a1461039c576100ea565b80639fba03a1146102b7578063a4d7a250146102bf578063d3078c9414610304576100ea565b806361df1bf9116100c857806361df1bf9146101aa57806372a5d062146101f15780638d57bba41461020e57806392d0d23214610247576100ea565b80633a04f900146100ef5780633f9095b71461012d578063615e523714610177575b600080fd5b61012b6004803603604081101561010557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135600f0b6103a4565b005b6101606004803603602081101561014357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610543565b60408051600f9290920b8252519081900360200190f35b61012b6004803603602081101561018d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105ed565b6101dd600480360360208110156101c057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105f0565b604080519115158252519081900360200190f35b61012b6004803603602081101561020757600080fd5b503561061b565b61012b6004803603604081101561022457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610697565b61012b6004803603604081101561025d57600080fd5b81019060208101813564010000000081111561027857600080fd5b82018360208201111561028a57600080fd5b803590602001918460018302840111640100000000831117156102ac57600080fd5b91935091503561073e565b61016061078a565b6102f2600480360360208110156102d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610793565b60408051918252519081900360200190f35b6102f26004803603604081101561031a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610799565b61012b6004803603604081101561035357600080fd5b508035600f0b90602001356107c9565b61036b6107cd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61036b6107e9565b61036b610805565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff1615610423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061082d6022913960400191505060405180910390fd5b600081600f0b121580156104425750600054600f90810b810b9082900b125b6104ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e76616c696420676175676520747970650000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600081815260016020818152604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092558151938452600f85900b9084015282810191909152517ffd55b3191f9c9dd92f4f134dd700e7d76f6a0c836a08687023d6d38f03ebd8779181900360600190a15050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081205460ff166105c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061084f6021913960400191505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902054600f0b90565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b670de0b6b3a764000081111561069257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4269617320746f6f206869676800000000000000000000000000000000000000604482015290519081900360640190fd5b600455565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061080b6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260036020526040902055565b505060008054600f81810b600101900b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090911617905550565b600054600f0b90565b50600090565b60045473ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260409020540192915050565b5050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60009056fe476175676520646f6573206e6f74206578697374206f6e20636f6e74726f6c6c6572476175676520616c726561647920657869737473206f6e20636f6e74726f6c6c6572476175676520646f65736e2774206578697374206f6e20636f6e74726f6c6c6572a264697066735822122074967dfb0b58688f62394147de190dcd9e863320793058a65093d9bde77954fc64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x91F CODESIZE SUB DUP1 PUSH2 0x91F DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP4 SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x8A5 DUP1 PUSH2 0x7A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9FBA03A1 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDB1CA260 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDB1CA260 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0xDFE05031 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x39C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x9FBA03A1 EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0xA4D7A250 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0xD3078C94 EQ PUSH2 0x304 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x61DF1BF9 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x61DF1BF9 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x72A5D062 EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x8D57BBA4 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x92D0D232 EQ PUSH2 0x247 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x3A04F900 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x3F9095B7 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x615E5237 EQ PUSH2 0x177 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x3A4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x543 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xF SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5ED JUMP JUMPDEST PUSH2 0x1DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x61B JUMP JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x697 JUMP JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x28A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH2 0x73E JUMP JUMPDEST PUSH2 0x160 PUSH2 0x78A JUMP JUMPDEST PUSH2 0x2F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x793 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x799 JUMP JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0xF SIGNEXTEND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7C9 JUMP JUMPDEST PUSH2 0x36B PUSH2 0x7CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36B PUSH2 0x7E9 JUMP JUMPDEST PUSH2 0x36B PUSH2 0x805 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x423 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x82D PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xF SIGNEXTEND SLT ISZERO DUP1 ISZERO PUSH2 0x442 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xF SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 DUP3 SWAP1 SIGNEXTEND SLT JUMPDEST PUSH2 0x4AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676520747970650000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE PUSH1 0xF DUP6 SWAP1 SIGNEXTEND SWAP1 DUP5 ADD MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xFD55B3191F9C9DD92F4F134DD700E7D76F6A0C836A08687023D6D38F03EBD877 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x5C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x84F PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0x692 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4269617320746F6F206869676800000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x715 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x80B PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xF DUP2 DUP2 SIGNEXTEND PUSH1 0x1 ADD SWAP1 SIGNEXTEND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP INVALID SELFBALANCE PUSH2 0x7567 PUSH6 0x20646F657320 PUSH15 0x6F74206578697374206F6E20636F6E PUSH21 0x726F6C6C6572476175676520616C72656164792065 PUSH25 0x69737473206F6E20636F6E74726F6C6C657247617567652064 PUSH16 0x65736E2774206578697374206F6E2063 PUSH16 0x6E74726F6C6C6572A264697066735822 SLT KECCAK256 PUSH21 0x967DFB0B58688F62394147DE190DCD9E8633207930 PC 0xA6 POP SWAP4 0xD9 0xBD 0xE7 PUSH26 0x54FC64736F6C6343000701003300000000000000000000000000 ","sourceMap":"979:2538:115:-:0;;;1556:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1556:158:115;;;;;;;1644:13;:28;;-1:-1:-1;;;;;1644:28:115;;;-1:-1:-1;;;;;;1644:28:115;;;;;;;1682:5;:25;;;;;;;;;;;;;;979:2538;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639fba03a11161008c578063db1ca26011610066578063db1ca2601461033d578063dfe0503114610363578063f851a44014610394578063fc0c546a1461039c576100ea565b80639fba03a1146102b7578063a4d7a250146102bf578063d3078c9414610304576100ea565b806361df1bf9116100c857806361df1bf9146101aa57806372a5d062146101f15780638d57bba41461020e57806392d0d23214610247576100ea565b80633a04f900146100ef5780633f9095b71461012d578063615e523714610177575b600080fd5b61012b6004803603604081101561010557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135600f0b6103a4565b005b6101606004803603602081101561014357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610543565b60408051600f9290920b8252519081900360200190f35b61012b6004803603602081101561018d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105ed565b6101dd600480360360208110156101c057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105f0565b604080519115158252519081900360200190f35b61012b6004803603602081101561020757600080fd5b503561061b565b61012b6004803603604081101561022457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610697565b61012b6004803603604081101561025d57600080fd5b81019060208101813564010000000081111561027857600080fd5b82018360208201111561028a57600080fd5b803590602001918460018302840111640100000000831117156102ac57600080fd5b91935091503561073e565b61016061078a565b6102f2600480360360208110156102d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610793565b60408051918252519081900360200190f35b6102f26004803603604081101561031a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610799565b61012b6004803603604081101561035357600080fd5b508035600f0b90602001356107c9565b61036b6107cd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61036b6107e9565b61036b610805565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff1615610423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061082d6022913960400191505060405180910390fd5b600081600f0b121580156104425750600054600f90810b810b9082900b125b6104ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e76616c696420676175676520747970650000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600081815260016020818152604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092558151938452600f85900b9084015282810191909152517ffd55b3191f9c9dd92f4f134dd700e7d76f6a0c836a08687023d6d38f03ebd8779181900360600190a15050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081205460ff166105c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061084f6021913960400191505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902054600f0b90565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b670de0b6b3a764000081111561069257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4269617320746f6f206869676800000000000000000000000000000000000000604482015290519081900360640190fd5b600455565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061080b6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260036020526040902055565b505060008054600f81810b600101900b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090911617905550565b600054600f0b90565b50600090565b60045473ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260409020540192915050565b5050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60009056fe476175676520646f6573206e6f74206578697374206f6e20636f6e74726f6c6c6572476175676520616c726561647920657869737473206f6e20636f6e74726f6c6c6572476175676520646f65736e2774206578697374206f6e20636f6e74726f6c6c6572a264697066735822122074967dfb0b58688f62394147de190dcd9e863320793058a65093d9bde77954fc64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9FBA03A1 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDB1CA260 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDB1CA260 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0xDFE05031 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x39C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x9FBA03A1 EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0xA4D7A250 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0xD3078C94 EQ PUSH2 0x304 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x61DF1BF9 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x61DF1BF9 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x72A5D062 EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x8D57BBA4 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x92D0D232 EQ PUSH2 0x247 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x3A04F900 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x3F9095B7 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x615E5237 EQ PUSH2 0x177 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x3A4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x543 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xF SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5ED JUMP JUMPDEST PUSH2 0x1DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x61B JUMP JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x697 JUMP JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x28A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH2 0x73E JUMP JUMPDEST PUSH2 0x160 PUSH2 0x78A JUMP JUMPDEST PUSH2 0x2F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x793 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x799 JUMP JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0xF SIGNEXTEND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7C9 JUMP JUMPDEST PUSH2 0x36B PUSH2 0x7CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36B PUSH2 0x7E9 JUMP JUMPDEST PUSH2 0x36B PUSH2 0x805 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x423 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x82D PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xF SIGNEXTEND SLT ISZERO DUP1 ISZERO PUSH2 0x442 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xF SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 DUP3 SWAP1 SIGNEXTEND SLT JUMPDEST PUSH2 0x4AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676520747970650000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE PUSH1 0xF DUP6 SWAP1 SIGNEXTEND SWAP1 DUP5 ADD MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xFD55B3191F9C9DD92F4F134DD700E7D76F6A0C836A08687023D6D38F03EBD877 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x5C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x84F PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0x692 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4269617320746F6F206869676800000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x715 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x80B PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xF DUP2 DUP2 SIGNEXTEND PUSH1 0x1 ADD SWAP1 SIGNEXTEND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP INVALID SELFBALANCE PUSH2 0x7567 PUSH6 0x20646F657320 PUSH15 0x6F74206578697374206F6E20636F6E PUSH21 0x726F6C6C6572476175676520616C72656164792065 PUSH25 0x69737473206F6E20636F6E74726F6C6C657247617567652064 PUSH16 0x65736E2774206578697374206F6E2063 PUSH16 0x6E74726F6C6C6572A264697066735822 SLT KECCAK256 PUSH21 0x967DFB0B58688F62394147DE190DCD9E8633207930 PC 0xA6 POP SWAP4 0xD9 0xBD 0xE7 PUSH26 0x54FC64736F6C6343000701003300000000000000000000000000 ","sourceMap":"979:2538:115:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2026:317;;;;;;;;;;;;;;;;-1:-1:-1;2026:317:115;;;;;;;;;;;:::i;:::-;;1829:191;;;;;;;;;;;;;;;;-1:-1:-1;1829:191:115;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;2549:117;;;;;;;;;;;;;;;;-1:-1:-1;2549:117:115;;;;:::i;2965:::-;;;;;;;;;;;;;;;;-1:-1:-1;2965:117:115;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3274:139;;;;;;;;;;;;;;;;-1:-1:-1;3274:139:115;;:::i;3088:180::-;;;;;;;;;;;;;;;;-1:-1:-1;3088:180:115;;;;;;;;;:::i;2349:98::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2349:98:115;-1:-1:-1;2349:98:115;;:::i;1720:103::-;;;:::i;3419:96::-;;;;;;;;;;;;;;;;-1:-1:-1;3419:96:115;;;;:::i;:::-;;;;;;;;;;;;;;;;2672:154;;;;;;;;;;;;;;;;-1:-1:-1;2672:154:115;;;;;;;;;:::i;2832:127::-;;;;;;;;;;;;;;;;-1:-1:-1;2832:127:115;;;;;;;;;:::i;1357:43::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1259:40;;;:::i;2453:90::-;;;:::i;2026:317::-;2115:18;;;;;;;:11;:18;;;;;;;;2114:19;2106:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2203:1;2190:9;:14;;;;:44;;;;-1:-1:-1;2220:14:115;;;;;;2208:26;;;;;;;2190:44;2182:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2267:18;;;;;;;2288:4;2267:18;;;;;;;;:25;;;;;;;;;;2307:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2026:317;;:::o;1829:191::-;1923:18;;;1897:6;1923:18;;;:11;:18;;;;;;;;1915:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1996:17:115;;;;;;:10;:17;;;;;;;;;1829:191::o;2549:117::-;;:::o;2965:::-;3057:18;;3034:4;3057:18;;;:11;:18;;;;;;;;;2965:117::o;3274:139::-;3351:4;3343;:12;;3335:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3383:16;:23;3274:139::o;3088:180::-;3170:18;;;;;;;:11;:18;;;;;;;;3162:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3237:15;;;;;;;;:8;:15;;;;;:24;3088:180::o;2349:98::-;-1:-1:-1;;2421:14:115;:19;;;;;;2439:1;2421:19;;;;;;;;;;;;-1:-1:-1;2349:98:115:o;1720:103::-;1777:6;1802:14;;;1720:103;:::o;3419:96::-;-1:-1:-1;3481:7:115;;3419:96::o;2672:154::-;2803:16;;2785:15;;;2759:7;2785:15;;;:8;:15;;;;;;:34;2672:154;;;;:::o;2832:127::-;;;:::o;1357:43::-;;;;;;:::o;1259:40::-;;;;;;:::o;2453:90::-;2502:6;2453:90;:::o"},"methodIdentifiers":{"add_gauge(address,int128)":"3a04f900","add_type(string,uint256)":"92d0d232","admin()":"f851a440","change_type_weight(int128,uint256)":"db1ca260","checkpoint_gauge(address)":"615e5237","gauge_exists(address)":"61df1bf9","gauge_relative_weight(address,uint256)":"d3078c94","gauge_types(address)":"3f9095b7","n_gauge_types()":"9fba03a1","setGaugeWeight(address,uint256)":"8d57bba4","setGaugeWeightBias(uint256)":"72a5d062","time_weight(address)":"a4d7a250","token()":"fc0c546a","voting_escrow()":"dfe05031"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"votingEscrow\",\"type\":\"address\"},{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"authorizerAdaptor\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"gauge_type\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"NewGauge\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"int128\",\"name\":\"gaugeType\",\"type\":\"int128\"}],\"name\":\"add_gauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"add_type\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"change_type_weight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"checkpoint_gauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"gauge_exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gauge_relative_weight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"gauge_types\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n_gauge_types\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"setGaugeWeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bias\",\"type\":\"uint256\"}],\"name\":\"setGaugeWeightBias\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"time_weight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"voting_escrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockGaugeController.sol\":\"MockGaugeController\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"contracts/test/MockGaugeController.sol\":{\"keccak256\":\"0x43ca32f14a91a8c5cd2f04907d3dabbd5d70636a7fc8d5c816aec396f77cea8a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://05b40ade64f14ac2cbb4a517df9209967172030a4835ebd9adc88476b0f192ab\",\"dweb:/ipfs/Qmdodi7a66uMyWLgA1PF8JGkJrH72yNmiitsM45qMtFNMX\"]}},\"version\":1}"}},"contracts/test/MockL2LayerZeroDelegation.sol":{"MockL2LayerZeroDelegation":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"OnVeBalBridged","type":"event"},{"anonymous":false,"inputs":[],"name":"OnVeBalSupplyUpdate","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"onVeBalBridged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"onVeBalSupplyUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806396345fb5146037578063df130bfe14603f575b600080fd5b603d606f565b005b603d60048036036020811015605357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16609a565b6040517f1a1847013e2565a8419e50f84464bc78e81a9b06e839cc6196ef88138d4435a990600090a1565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f75e2797830269bd4ffcd50158cc60532b40559a46a0b17249e0a325628d0500e9181900360200190a15056fea2646970667358221220c26c160d41e6876536d3f2977b30b669f150e2b913e3f8087fbd1d0e4a469ded64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96345FB5 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xDF130BFE EQ PUSH1 0x3F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x6F JUMP JUMPDEST STOP JUMPDEST PUSH1 0x3D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x9A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1A1847013E2565A8419E50F84464BC78E81A9B06E839CC6196EF88138D4435A9 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x75E2797830269BD4FFCD50158CC60532B40559A46A0B17249E0A325628D0500E SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 PUSH13 0x160D41E6876536D3F2977B30B6 PUSH10 0xF150E2B913E3F8087FBD SAR 0xE 0x4A CHAINID SWAP14 0xED PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"807:339:116:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060325760003560e01c806396345fb5146037578063df130bfe14603f575b600080fd5b603d606f565b005b603d60048036036020811015605357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16609a565b6040517f1a1847013e2565a8419e50f84464bc78e81a9b06e839cc6196ef88138d4435a990600090a1565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f75e2797830269bd4ffcd50158cc60532b40559a46a0b17249e0a325628d0500e9181900360200190a15056fea2646970667358221220c26c160d41e6876536d3f2977b30b669f150e2b913e3f8087fbd1d0e4a469ded64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96345FB5 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xDF130BFE EQ PUSH1 0x3F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x6F JUMP JUMPDEST STOP JUMPDEST PUSH1 0x3D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x9A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1A1847013E2565A8419E50F84464BC78E81A9B06E839CC6196EF88138D4435A9 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x75E2797830269BD4FFCD50158CC60532B40559A46A0B17249E0A325628D0500E SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 PUSH13 0x160D41E6876536D3F2977B30B6 PUSH10 0xF150E2B913E3F8087FBD SAR 0xE 0x4A CHAINID SWAP14 0xED PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"807:339:116:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1052:92;;;:::i;:::-;;948:98;;;;;;;;;;;;;;;;-1:-1:-1;948:98:116;;;;:::i;1052:92::-;1116:21;;;;;;;1052:92::o;948:98::-;1019:20;;;;;;;;;;;;;;;;;;;948:98;:::o"},"methodIdentifiers":{"onVeBalBridged(address)":"df130bfe","onVeBalSupplyUpdate()":"96345fb5"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"OnVeBalBridged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"OnVeBalSupplyUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"onVeBalBridged\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onVeBalSupplyUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onVeBalBridged(address)\":{\"params\":{\"user\":\"The user whose veBAL balance was updated.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onVeBalBridged(address)\":{\"notice\":\"Called whenever the veBAL balance of a user is updated in a L2 chain.\"},\"onVeBalSupplyUpdate()\":{\"notice\":\"Called whenever the total veBAL supply is updated in a L2 chain.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockL2LayerZeroDelegation.sol\":\"MockL2LayerZeroDelegation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\":{\"keccak256\":\"0xbeed8a8a1802aede5aa6670554125c5938ea06fc5a96c1b75dbc93d1dd586048\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5cf7cef349eba6938df4d8993dcab2b16775b2daf0cc0d5ad71d91f27221eb00\",\"dweb:/ipfs/QmS22HyJFUggLjLx9WABDcMPq6XqC3f4Q23NrKv6CmnkL5\"]},\"contracts/test/MockL2LayerZeroDelegation.sol\":{\"keccak256\":\"0xeb53095183fc013b781e9142635328c9839decfedfe4da22e2a8490df838e2b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dcba70090390a85e97a0b083ab6f9da551f590702134d51561a28757c498a824\",\"dweb:/ipfs/QmVJeNiWFVqtw2o3e3taXu6ErFkk9pStSnaJxBhQLpsPEG\"]}},\"version\":1}"}},"contracts/test/MockLiquidityGauge.sol":{"MockLiquidityGauge":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lp_token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5061041a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806383f5c39b11610076578063ab8f09451161005b578063ab8f09451461014f578063cd6dc68714610157578063d34fb2671461016a576100be565b806383f5c39b1461013f5780639c868ac014610147576100be565b806314e956f5116100a757806314e956f5146101015780634b8200931461010f57806382c630661461012a576100be565b806309400707146100c357806310d3eb04146100ec575b600080fd5b6100d66100d136600461034b565b610172565b6040516100e391906103db565b60405180910390f35b6100ff6100fa366004610397565b610184565b005b6100d66100d1366004610397565b61011d6100d136600461034b565b6040516100e391906103d0565b610132610192565b6040516100e391906103af565b6100d66101ae565b61011d6101be565b6100ff6101df565b6100ff61016536600461036d565b610220565b6100ff610268565b600061017f6103e6610292565b919050565b61018f6103e6610292565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60006101bb6103e6610292565b90565b60005474010000000000000000000000000000000000000000900460ff1690565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261018f917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461034557600080fd5b92915050565b60006020828403121561035c578081fd5b6103668383610321565b9392505050565b6000806040838503121561037f578081fd5b6103898484610321565b946020939093013593505050565b6000602082840312156103a8578081fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b9081526020019056fea2646970667358221220531bab4ff4892ba099430b749f656a77ebc6e324b0e4d8732cc32667555427a764736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41A DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x16A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x147 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x82C63066 EQ PUSH2 0x12A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x34B JUMP JUMPDEST PUSH2 0x172 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x397 JUMP JUMPDEST PUSH2 0x184 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x397 JUMP JUMPDEST PUSH2 0x11D PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x34B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x192 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x3AF JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x1AE JUMP JUMPDEST PUSH2 0x11D PUSH2 0x1BE JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1DF JUMP JUMPDEST PUSH2 0xFF PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0x36D JUMP JUMPDEST PUSH2 0x220 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17F PUSH2 0x3E6 PUSH2 0x292 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18F PUSH2 0x3E6 PUSH2 0x292 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BB PUSH2 0x3E6 PUSH2 0x292 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x18F SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x35C JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x366 DUP4 DUP4 PUSH2 0x321 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x389 DUP5 DUP5 PUSH2 0x321 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A8 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 SHL 0xAB 0x4F DELEGATECALL DUP10 0x2B LOG0 SWAP10 NUMBER SIGNEXTEND PUSH21 0x9F656A77EBC6E324B0E4D8732CC32667555427A764 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"964:1385:117:-:0;;;1127:78;;;;;;;;;;964:1385;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100be5760003560e01c806383f5c39b11610076578063ab8f09451161005b578063ab8f09451461014f578063cd6dc68714610157578063d34fb2671461016a576100be565b806383f5c39b1461013f5780639c868ac014610147576100be565b806314e956f5116100a757806314e956f5146101015780634b8200931461010f57806382c630661461012a576100be565b806309400707146100c357806310d3eb04146100ec575b600080fd5b6100d66100d136600461034b565b610172565b6040516100e391906103db565b60405180910390f35b6100ff6100fa366004610397565b610184565b005b6100d66100d1366004610397565b61011d6100d136600461034b565b6040516100e391906103d0565b610132610192565b6040516100e391906103af565b6100d66101ae565b61011d6101be565b6100ff6101df565b6100ff61016536600461036d565b610220565b6100ff610268565b600061017f6103e6610292565b919050565b61018f6103e6610292565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60006101bb6103e6610292565b90565b60005474010000000000000000000000000000000000000000900460ff1690565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261018f917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461034557600080fd5b92915050565b60006020828403121561035c578081fd5b6103668383610321565b9392505050565b6000806040838503121561037f578081fd5b6103898484610321565b946020939093013593505050565b6000602082840312156103a8578081fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b9081526020019056fea2646970667358221220531bab4ff4892ba099430b749f656a77ebc6e324b0e4d8732cc32667555427a764736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x16A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x147 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x82C63066 EQ PUSH2 0x12A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x34B JUMP JUMPDEST PUSH2 0x172 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x397 JUMP JUMPDEST PUSH2 0x184 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x397 JUMP JUMPDEST PUSH2 0x11D PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x34B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x192 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x3AF JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x1AE JUMP JUMPDEST PUSH2 0x11D PUSH2 0x1BE JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1DF JUMP JUMPDEST PUSH2 0xFF PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0x36D JUMP JUMPDEST PUSH2 0x220 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17F PUSH2 0x3E6 PUSH2 0x292 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18F PUSH2 0x3E6 PUSH2 0x292 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BB PUSH2 0x3E6 PUSH2 0x292 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x18F SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x35C JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x366 DUP4 DUP4 PUSH2 0x321 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x389 DUP5 DUP5 PUSH2 0x321 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A8 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 SHL 0xAB 0x4F DELEGATECALL DUP10 0x2B LOG0 SWAP10 NUMBER SIGNEXTEND PUSH21 0x9F656A77EBC6E324B0E4D8732CC32667555427A764 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"964:1385:117:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1725:124;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1979:108;;;;;;:::i;:::-;;:::i;:::-;;2218:129;;;;;;:::i;1855:118::-;;;;;;:::i;:::-;;;;;;;:::i;1069:23::-;;;:::i;:::-;;;;;;;:::i;2093:119::-;;;:::i;1301:92::-;;;:::i;1399:72::-;;;:::i;1211:84::-;;;;;;:::i;:::-;;:::i;1477:75::-;;;:::i;1725:124::-;1794:7;1813:29;15034:3:31;1813:7:117;:29::i;:::-;1725:124;;;:::o;1979:108::-;2051:29;15034:3:31;2051:7:117;:29::i;:::-;1979:108;:::o;1069:23::-;;;;;;:::o;2093:119::-;2157:7;2176:29;15034:3:31;2176:7:117;:29::i;:::-;2093:119;:::o;1301:92::-;1354:4;1377:9;;;;;;;1301:92::o;1399:72::-;1448:9;:16;;;;;;;;1399:72::o;1211:84::-;-1:-1:-1;1273:8:117;:15;;;;;;;;;;;;;;;1211:84::o;1477:75::-;1540:5;1528:17;;;;;;1477:75::o;1459:126:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;5:130:-1;72:20;;2437:42;2426:54;;2630:35;;2620:2;;2679:1;;2669:12;2620:2;57:78;;;;:::o;279:241::-;;383:2;371:9;362:7;358:23;354:32;351:2;;;-1:-1;;389:12;351:2;451:53;496:7;472:22;451:53;:::i;:::-;441:63;345:175;-1:-1;;;345:175::o;527:366::-;;;648:2;636:9;627:7;623:23;619:32;616:2;;;-1:-1;;654:12;616:2;716:53;761:7;737:22;716:53;:::i;:::-;706:63;806:2;845:22;;;;209:20;;-1:-1;;;610:283::o;900:241::-;;1004:2;992:9;983:7;979:23;975:32;972:2;;;-1:-1;;1010:12;972:2;-1:-1;209:20;;966:175;-1:-1;966:175::o;1499:222::-;2437:42;2426:54;;;;1219:37;;1626:2;1611:18;;1597:124::o;1728:210::-;2338:13;;2331:21;1333:34;;1849:2;1834:18;;1820:118::o;1945:222::-;1450:37;;;2072:2;2057:18;;2043:124::o"},"methodIdentifiers":{"getCappedRelativeWeight(uint256)":"14e956f5","getRelativeWeightCap()":"83f5c39b","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","lp_token()":"82c63066","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lp_token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockLiquidityGauge.sol\":\"MockLiquidityGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"contracts/test/MockLiquidityGauge.sol\":{\"keccak256\":\"0xef3ca6d2d7a3b00181955304573c5f94004a578e48c90544b19798bdbb7cb90c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a105a00bc3cc25f8cd98e787bd33b48539203652defc2d25a2797649bd97eb77\",\"dweb:/ipfs/QmTGFhVcWSiFYidJTmuiszWPpy48xXAHrzR29L2rXkj1E4\"]}},\"version\":1}"}},"contracts/test/MockLiquidityGaugeFactory.sol":{"MockLiquidityGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract MockLiquidityGauge","name":"gaugeImplementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161049c38038061049c83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610082565b600060208284031215610065578081fd5b81516001600160a01b038116811461007b578182fd5b9392505050565b61040b806100916000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea264697066735822122009086b9a47d335444965b77eb2e1745de3726edaff743d11492cddf481d18ca064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x49C CODESIZE SUB DUP1 PUSH2 0x49C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x82 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7B JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x40B DUP1 PUSH2 0x91 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD ADDMOD PUSH12 0x9A47D335444965B77EB2E174 0x5D 0xE3 PUSH19 0x6EDAFF743D11492CDDF481D18CA064736F6C63 NUMBER STOP SMOD ADD STOP CALLER ","sourceMap":"824:453:118:-:0;;;885:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;824:453:118;;202:319:-1;;345:2;333:9;324:7;320:23;316:32;313:2;;;-1:-1;;351:12;313:2;111:13;;-1:-1;;;;;814:54;;967:63;;957:2;;-1:-1;;1034:12;957:2;403:102;307:214;-1:-1;;;307:214::o;:::-;824:453:118;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea264697066735822122009086b9a47d335444965b77eb2e1745de3726edaff743d11492cddf481d18ca064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD ADDMOD PUSH12 0x9A47D335444965B77EB2E174 0x5D 0xE3 PUSH19 0x6EDAFF743D11492CDDF481D18CA064736F6C63 NUMBER STOP SMOD ADD STOP CALLER ","sourceMap":"824:453:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1054:221;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;1507:131::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1054:221:118:-;1129:7;1148:13;1164:9;:7;:9::i;:::-;1184:61;;;;;1148:25;;-1:-1:-1;1184:36:118;;;;;;:61;;1221:4;;1227:17;;1184:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1263:5:118;;-1:-1:-1;;;;1054:221:118;;;;;:::o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;1507:131::-;1605:26;;;1582:4;1605:26;;;:19;:26;;;;;;;;1507:131;;;;:::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;5:130:-1;72:20;;3226:42;3215:54;;3419:35;;3409:2;;3468:1;;3458:12;279:241;;383:2;371:9;362:7;358:23;354:32;351:2;;;-1:-1;;389:12;351:2;451:53;496:7;472:22;451:53;:::i;:::-;441:63;345:175;-1:-1;;;345:175::o;527:366::-;;;648:2;636:9;627:7;623:23;619:32;616:2;;;-1:-1;;654:12;616:2;716:53;761:7;737:22;716:53;:::i;:::-;706:63;806:2;845:22;;;;209:20;;-1:-1;;;610:283::o;1582:222::-;3226:42;3215:54;;;;971:37;;1709:2;1694:18;;1680:124::o;1811:333::-;3226:42;3215:54;;;;971:37;;2130:2;2115:18;;1533:37;1966:2;1951:18;;1937:207::o;2151:210::-;3127:13;;3120:21;1085:34;;2272:2;2257:18;;2243:118::o;2368:416::-;2568:2;2582:47;;;1356:2;2553:18;;;2895:19;1392:24;2935:14;;;1372:45;1436:12;;;2539:245::o"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getGaugeImplementation()":"39312dee","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract MockLiquidityGauge\",\"name\":\"gaugeImplementation\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockLiquidityGaugeFactory.sol\":\"MockLiquidityGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/test/MockLiquidityGauge.sol\":{\"keccak256\":\"0xef3ca6d2d7a3b00181955304573c5f94004a578e48c90544b19798bdbb7cb90c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a105a00bc3cc25f8cd98e787bd33b48539203652defc2d25a2797649bd97eb77\",\"dweb:/ipfs/QmTGFhVcWSiFYidJTmuiszWPpy48xXAHrzR29L2rXkj1E4\"]},\"contracts/test/MockLiquidityGaugeFactory.sol\":{\"keccak256\":\"0x7e97a46a4467c17cf5f0e8900f8a754020bf6d0f0b33d03e754dd5dcc1e447de\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://759ec75a82c6dd64407aa5d629bae10630e0e81ed9a808d98c93a0bd3b9a1955\",\"dweb:/ipfs/QmS5GSxhPv74rirybikWEUnD74pK3gmdyszWS4f5ALbYCe\"]}},\"version\":1}"}},"contracts/test/MockOmniVotingEscrow.sol":{"MockOmniVotingEscrow":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint16","name":"chainId","type":"uint16"},{"indexed":false,"internalType":"address","name":"refundAddress","type":"address"},{"indexed":false,"internalType":"address","name":"zroPaymentAddress","type":"address"},{"indexed":false,"internalType":"bytes","name":"adapterParams","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"SendUserBalance","type":"event"},{"inputs":[{"internalType":"uint16","name":"chainId","type":"uint16"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"estimateSendUserBalance","outputs":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"zroFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"address payable","name":"_refundAddress","type":"address"},{"internalType":"address","name":"_zroPaymentAddress","type":"address"},{"internalType":"bytes","name":"_adapterParams","type":"bytes"}],"name":"sendUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"setNativeFee","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50610416806100206000396000f3fe6080604052600436106100345760003560e01c80634a7594891461003957806365d092d01461004e578063916c4eb514610085575b600080fd5b61004c610047366004610137565b6100a5565b005b34801561005a57600080fd5b5061006e61006936600461023a565b6100ed565b60405161007c9291906103ad565b60405180910390f35b34801561009157600080fd5b5061004c6100a03660046102ca565b61010a565b7f85696fbeb1aa174e49750d531d1e0ee0892390f9f64b05d24692355e1d5700ef8585858585346040516100de969594939291906102f6565b60405180910390a15050505050565b50505061ffff166000908152602081905260409020546001549091565b61ffff16600090815260208190526040902055565b803561ffff8116811461013157600080fd5b92915050565b600080600080600060a0868803121561014e578081fd5b8535610159816103bb565b945060206101698888830161011f565b94506040870135610179816103bb565b93506060870135610189816103bb565b9250608087013567ffffffffffffffff808211156101a5578384fd5b818901915089601f8301126101b8578384fd5b8135818111156101c6578485fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610203578687fd5b60405281815283820185018c1015610219578586fd5b81858501868301378585838301015280955050505050509295509295909350565b6000806000806060858703121561024f578384fd5b610259868661011f565b93506020850135801515811461026d578384fd5b9250604085013567ffffffffffffffff80821115610289578384fd5b818701915087601f83011261029c578384fd5b8135818111156102aa578485fd5b8860208285010111156102bb578485fd5b95989497505060200194505050565b600080604083850312156102dc578182fd5b823591506102ed846020850161011f565b90509250929050565b600073ffffffffffffffffffffffffffffffffffffffff8089168352602061ffff8916818501528188166040850152818716606085015260c06080850152855191508160c0850152825b8281101561035c5786810182015185820160e001528101610340565b8281111561036d578360e084870101525b505060a083019390935250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160e00195945050505050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff811681146103dd57600080fd5b5056fea2646970667358221220b0a6c11d0302990d1b1e561fff607f6f8476397a8cec543d4017d1a33f08edad64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x416 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4A759489 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0x65D092D0 EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0x916C4EB5 EQ PUSH2 0x85 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4C PUSH2 0x47 CALLDATASIZE PUSH1 0x4 PUSH2 0x137 JUMP JUMPDEST PUSH2 0xA5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6E PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0x23A JUMP JUMPDEST PUSH2 0xED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C SWAP3 SWAP2 SWAP1 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C PUSH2 0xA0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CA JUMP JUMPDEST PUSH2 0x10A JUMP JUMPDEST PUSH32 0x85696FBEB1AA174E49750D531D1E0EE0892390F9F64B05D24692355E1D5700EF DUP6 DUP6 DUP6 DUP6 DUP6 CALLVALUE PUSH1 0x40 MLOAD PUSH2 0xDE SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST POP POP POP PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 SLOAD SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x14E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x159 DUP2 PUSH2 0x3BB JUMP JUMPDEST SWAP5 POP PUSH1 0x20 PUSH2 0x169 DUP9 DUP9 DUP4 ADD PUSH2 0x11F JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x179 DUP2 PUSH2 0x3BB JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x189 DUP2 PUSH2 0x3BB JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1A5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1B8 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1C6 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x203 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP13 LT ISZERO PUSH2 0x219 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x24F JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x259 DUP7 DUP7 PUSH2 0x11F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x26D JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x289 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2AA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2BB JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2DC JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2ED DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x11F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE PUSH1 0x20 PUSH2 0xFFFF DUP10 AND DUP2 DUP6 ADD MSTORE DUP2 DUP9 AND PUSH1 0x40 DUP6 ADD MSTORE DUP2 DUP8 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0xC0 PUSH1 0x80 DUP6 ADD MSTORE DUP6 MLOAD SWAP2 POP DUP2 PUSH1 0xC0 DUP6 ADD MSTORE DUP3 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x35C JUMPI DUP7 DUP2 ADD DUP3 ADD MLOAD DUP6 DUP3 ADD PUSH1 0xE0 ADD MSTORE DUP2 ADD PUSH2 0x340 JUMP JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x36D JUMPI DUP4 PUSH1 0xE0 DUP5 DUP8 ADD ADD MSTORE JUMPDEST POP POP PUSH1 0xA0 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0xE0 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 0xA6 0xC1 SAR SUB MUL SWAP10 0xD SHL 0x1E JUMP 0x1F SELFDESTRUCT PUSH1 0x7F PUSH16 0x8476397A8CEC543D4017D1A33F08EDAD PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"836:1058:119:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100345760003560e01c80634a7594891461003957806365d092d01461004e578063916c4eb514610085575b600080fd5b61004c610047366004610137565b6100a5565b005b34801561005a57600080fd5b5061006e61006936600461023a565b6100ed565b60405161007c9291906103ad565b60405180910390f35b34801561009157600080fd5b5061004c6100a03660046102ca565b61010a565b7f85696fbeb1aa174e49750d531d1e0ee0892390f9f64b05d24692355e1d5700ef8585858585346040516100de969594939291906102f6565b60405180910390a15050505050565b50505061ffff166000908152602081905260409020546001549091565b61ffff16600090815260208190526040902055565b803561ffff8116811461013157600080fd5b92915050565b600080600080600060a0868803121561014e578081fd5b8535610159816103bb565b945060206101698888830161011f565b94506040870135610179816103bb565b93506060870135610189816103bb565b9250608087013567ffffffffffffffff808211156101a5578384fd5b818901915089601f8301126101b8578384fd5b8135818111156101c6578485fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610203578687fd5b60405281815283820185018c1015610219578586fd5b81858501868301378585838301015280955050505050509295509295909350565b6000806000806060858703121561024f578384fd5b610259868661011f565b93506020850135801515811461026d578384fd5b9250604085013567ffffffffffffffff80821115610289578384fd5b818701915087601f83011261029c578384fd5b8135818111156102aa578485fd5b8860208285010111156102bb578485fd5b95989497505060200194505050565b600080604083850312156102dc578182fd5b823591506102ed846020850161011f565b90509250929050565b600073ffffffffffffffffffffffffffffffffffffffff8089168352602061ffff8916818501528188166040850152818716606085015260c06080850152855191508160c0850152825b8281101561035c5786810182015185820160e001528101610340565b8281111561036d578360e084870101525b505060a083019390935250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160e00195945050505050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff811681146103dd57600080fd5b5056fea2646970667358221220b0a6c11d0302990d1b1e561fff607f6f8476397a8cec543d4017d1a33f08edad64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4A759489 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0x65D092D0 EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0x916C4EB5 EQ PUSH2 0x85 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4C PUSH2 0x47 CALLDATASIZE PUSH1 0x4 PUSH2 0x137 JUMP JUMPDEST PUSH2 0xA5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6E PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0x23A JUMP JUMPDEST PUSH2 0xED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C SWAP3 SWAP2 SWAP1 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C PUSH2 0xA0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CA JUMP JUMPDEST PUSH2 0x10A JUMP JUMPDEST PUSH32 0x85696FBEB1AA174E49750D531D1E0EE0892390F9F64B05D24692355E1D5700EF DUP6 DUP6 DUP6 DUP6 DUP6 CALLVALUE PUSH1 0x40 MLOAD PUSH2 0xDE SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST POP POP POP PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 SLOAD SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x14E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x159 DUP2 PUSH2 0x3BB JUMP JUMPDEST SWAP5 POP PUSH1 0x20 PUSH2 0x169 DUP9 DUP9 DUP4 ADD PUSH2 0x11F JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x179 DUP2 PUSH2 0x3BB JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x189 DUP2 PUSH2 0x3BB JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1A5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1B8 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1C6 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x203 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP13 LT ISZERO PUSH2 0x219 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x24F JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x259 DUP7 DUP7 PUSH2 0x11F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x26D JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x289 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2AA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2BB JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2DC JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2ED DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x11F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE PUSH1 0x20 PUSH2 0xFFFF DUP10 AND DUP2 DUP6 ADD MSTORE DUP2 DUP9 AND PUSH1 0x40 DUP6 ADD MSTORE DUP2 DUP8 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0xC0 PUSH1 0x80 DUP6 ADD MSTORE DUP6 MLOAD SWAP2 POP DUP2 PUSH1 0xC0 DUP6 ADD MSTORE DUP3 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x35C JUMPI DUP7 DUP2 ADD DUP3 ADD MLOAD DUP6 DUP3 ADD PUSH1 0xE0 ADD MSTORE DUP2 ADD PUSH2 0x340 JUMP JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x36D JUMPI DUP4 PUSH1 0xE0 DUP5 DUP8 ADD ADD MSTORE JUMPDEST POP POP PUSH1 0xA0 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0xE0 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 0xA6 0xC1 SAR SUB MUL SWAP10 0xD SHL 0x1E JUMP 0x1F SELFDESTRUCT PUSH1 0x7F PUSH16 0x8476397A8CEC543D4017D1A33F08EDAD PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"836:1058:119:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1431:341;;;;;;:::i;:::-;;:::i;:::-;;1203:222;;;;;;;;;;-1:-1:-1;1203:222:119;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1778:114;;;;;;;;;;-1:-1:-1;1778:114:119;;;;;:::i;:::-;;:::i;1431:341::-;1667:98;1683:5;1690:11;1703:14;1719:18;1739:14;1755:9;1667:98;;;;;;;;;;;:::i;:::-;;;;;;;;1431:341;;;;;:::o;1203:222::-;-1:-1:-1;;;1389:19:119;;1336:17;1389:19;;;;;;;;;;;1410:7;;1389:19;;1203:222::o;1778:114::-;1854:19;;:10;:19;;;;;;;;;;:31;1778:114::o;1233:128:-1:-;1299:20;;6695:6;6684:18;;8276:34;;8266:2;;8324:1;;8314:12;8266:2;1284:77;;;;:::o;1505:861::-;;;;;;1693:3;1681:9;1672:7;1668:23;1664:33;1661:2;;;-1:-1;;1700:12;1661:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1752:63;-1:-1;1852:2;1870:52;1914:7;1890:22;;;1870:52;:::i;:::-;1860:62;;1959:2;2010:9;2006:22;217:20;242:41;277:5;242:41;:::i;:::-;1967:71;-1:-1;2075:2;2114:22;;72:20;97:33;72:20;97:33;:::i;:::-;2083:63;-1:-1;2211:3;2196:19;;2183:33;2236:18;2225:30;;;2222:2;;;-1:-1;;2258:12;2222:2;2333:6;2322:9;2318:22;;;886:3;879:4;871:6;867:17;863:27;853:2;;-1:-1;;894:12;853:2;941:6;928:20;2236:18;5835:6;5832:30;5829:2;;;-1:-1;;5865:12;5829:2;1959;5493:9;1852:2;5938:9;879:4;5923:6;5919:17;5915:33;5529:6;5525:17;;5636:6;5624:10;5621:22;2236:18;5588:10;5585:34;5582:62;5579:2;;;-1:-1;;5647:12;5579:2;1959;5666:22;1033:21;;;1133:16;;;;;1130:25;-1:-1;1127:2;;;-1:-1;;1158:12;1127:2;7382:6;1852:2;1075:6;1071:17;1852:2;1109:5;1105:16;7359:30;-1:-1;1852:2;7429:6;1109:5;7420:16;;7413:27;2278:72;;;;;;;;1655:711;;;;;;;;:::o;2373:607::-;;;;;2526:2;2514:9;2505:7;2501:23;2497:32;2494:2;;;-1:-1;;2532:12;2494:2;2594:52;2638:7;2614:22;2594:52;:::i;:::-;2584:62;;2683:2;2723:9;2719:22;359:20;8181:5;6597:13;6590:21;8159:5;8156:32;8146:2;;-1:-1;;8192:12;8146:2;2691:60;-1:-1;2816:2;2801:18;;2788:32;2840:18;2829:30;;;2826:2;;;-1:-1;;2862:12;2826:2;2947:6;2936:9;2932:22;;;554:3;547:4;539:6;535:17;531:27;521:2;;-1:-1;;562:12;521:2;605:6;592:20;2840:18;624:6;621:30;618:2;;;-1:-1;;654:12;618:2;749:3;2683:2;729:17;690:6;715:32;;712:41;709:2;;;-1:-1;;756:12;709:2;2488:492;;;;-1:-1;;2683:2;686:17;;-1:-1;;;2488:492::o;2987:364::-;;;3107:2;3095:9;3086:7;3082:23;3078:32;3075:2;;;-1:-1;;3113:12;3075:2;1448:6;1435:20;3165:63;;3283:52;3327:7;3265:2;3307:9;3303:22;3283:52;:::i;:::-;3273:62;;3069:282;;;;;:::o;4214:876::-;;6787:42;;6780:5;6776:54;3585:3;3578:37;4668:2;6695:6;4075:5;6684:18;4668:2;4657:9;4653:18;4046:36;6787:42;6780:5;6776:54;4759:2;4748:9;4744:18;3437:58;6787:42;6780:5;6776:54;4842:2;4831:9;4827:18;3578:37;4505:3;4879;4868:9;4864:19;4857:49;3769:5;6115:12;3723:52;;6271:6;4505:3;4494:9;4490:19;6259;-1:-1;7527:101;7541:6;7538:1;7535:13;7527:101;;;7608:11;;;;;7602:18;7589:11;;;6299:14;7589:11;7582:39;7556:10;;7527:101;;;7643:6;7640:1;7637:13;7634:2;;;-1:-1;6299:14;7699:6;4494:9;7690:16;;7683:27;7634:2;-1:-1;;5075:3;5060:19;;4165:37;;;;-1:-1;7819:2;7799:14;;;;7815:7;7795:28;3926:39;6299:14;3926:39;;4476:614;-1:-1;;;;;4476:614::o;5097:333::-;4165:37;;;5416:2;5401:18;;4165:37;5252:2;5237:18;;5223:207::o;7836:117::-;6787:42;7923:5;6776:54;7898:5;7895:35;7885:2;;7944:1;;7934:12;7885:2;7879:74;:::o"},"methodIdentifiers":{"estimateSendUserBalance(uint16,bool,bytes)":"65d092d0","sendUserBalance(address,uint16,address,address,bytes)":"4a759489","setNativeFee(uint256,uint16)":"916c4eb5"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zroPaymentAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"adapterParams\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SendUserBalance\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"estimateSendUserBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zroFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"},{\"internalType\":\"address payable\",\"name\":\"_refundAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zroPaymentAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_adapterParams\",\"type\":\"bytes\"}],\"name\":\"sendUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"setNativeFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockOmniVotingEscrow.sol\":\"MockOmniVotingEscrow\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol\":{\"keccak256\":\"0xd15a09a7f4b4cca895c325a5d4f5469d368ea95fcf81139c6f9b7a6ff98ebf58\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f5ee21f5ff34cf4f4fb65bbef37229a84cce97e7ae2c46f26b6b5356db04fa56\",\"dweb:/ipfs/Qmc5Lukprx5rxNq4om9uyJR1jiNVFMxQxbWQrpGuZhGtsW\"]},\"contracts/test/MockOmniVotingEscrow.sol\":{\"keccak256\":\"0x7337c295f9b7c881358899393268e3cc3d89930be059c065cce40f14e95d860f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af2bf48c67cd9b0509da9df1c1502c77d3cdb11c8281f3bd71a02491aa3f26a1\",\"dweb:/ipfs/QmXmhchZZUstZZCqs4f8QUdekEoD89QF49XzXBQ62w8YC9\"]}},\"version\":1}"}},"contracts/test/MockRewardTokenDistributor.sol":{"MockRewardTokenDistributor":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"add_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claim_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"claimable_reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"claimable_reward_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit_reward_token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"reward_data","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"period_finish","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"last_update","type":"uint256"},{"internalType":"uint256","name":"integral","type":"uint256"}],"internalType":"struct IRewardTokenDistributor.Reward","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"set_reward_distributor","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506108f1806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806359b7e4091161005b57806359b7e409146100a257806384e9bd7e1461010b57806393f7aa671461011e578063e8de0d4d1461013157610088565b8063058a3a241461008d57806333fd6f74146100a257806348e9c65e146100cb57806354c49fe9146100eb575b600080fd5b6100a061009b3660046106be565b610144565b005b6100b56100b0366004610666565b61019a565b6040516100c29190610890565b60405180910390f35b6100de6100d9366004610643565b6101a2565b6040516100c29190610832565b6100fe6100f93660046106fb565b61021e565b6040516100c2919061077d565b6100a0610119366004610643565b61024b565b6100a061012c3660046106d0565b61024e565b6100a061013f3660046106be565b6102e0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260096020526040902060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b600092915050565b6101aa6105e1565b5073ffffffffffffffffffffffffffffffffffffffff908116600090815260096020908152604091829020825160c08101845281548516815260018201549094169184019190915260028101549183019190915260038101546060830152600481015460808301526005015460a082015290565b60006001826008811061022d57fe5b015473ffffffffffffffffffffffffffffffffffffffff1692915050565b50565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600960205260409020600101541633146102ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b1906107d5565b60405180910390fd5b6102dc73ffffffffffffffffffffffffffffffffffffffff83163330846103f6565b5050565b816001600054600881106102f057fe5b01805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556040805160c0810182528584168082528585166020808401918252600084860181815260608601828152426080880190815260a08801848152968452600990945296822095518654908a1690891617865592516001868101805492909a1691909816179097559051600284015592516003830155915160048201559051600590910155815401908190556008116102dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b19061079e565b610499846323b872dd60e01b8585856040516024016104179392919061074c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261049f565b50505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516104c89190610713565b6000604051808303816000865af19150503d8060008114610505576040519150601f19603f3d011682016040523d82523d6000602084013e61050a565b606091505b50915091506000821415610522573d6000803e3d6000fd5b610499815160001480610544575081806020019051810190610544919061069e565b6101a2816102dc577f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526102dc91839161024b917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b6040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b600060208284031215610654578081fd5b813561065f81610899565b9392505050565b60008060408385031215610678578081fd5b823561068381610899565b9150602083013561069381610899565b809150509250929050565b6000602082840312156106af578081fd5b8151801515811461065f578182fd5b60008060408385031215610678578182fd5b600080604083850312156106e2578182fd5b82356106ed81610899565b946020939093013593505050565b60006020828403121561070c578081fd5b5035919050565b60008251815b818110156107335760208186018101518583015201610719565b818111156107415782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60208082526016908201527f546f6f206d616e792072657761726420746f6b656e7300000000000000000000604082015260600190565b60208082526023908201527f4f6e6c792063616c6c61626c652062792072657761726420646973747269627560408201527f746f720000000000000000000000000000000000000000000000000000000000606082015260800190565b600060c08201905073ffffffffffffffffffffffffffffffffffffffff8084511683528060208501511660208401525060408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461024b57600080fdfea26469706673582212201215b1c8ac1f22b70b665261ab87532f7adc97f1567a544ad839670915ac3e9964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8F1 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x59B7E409 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x59B7E409 EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x84E9BD7E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0x93F7AA67 EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xE8DE0D4D EQ PUSH2 0x131 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x58A3A24 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x33FD6F74 EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x48E9C65E EQ PUSH2 0xCB JUMPI DUP1 PUSH4 0x54C49FE9 EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x144 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB5 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x666 JUMP JUMPDEST PUSH2 0x19A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC2 SWAP2 SWAP1 PUSH2 0x890 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDE PUSH2 0xD9 CALLDATASIZE PUSH1 0x4 PUSH2 0x643 JUMP JUMPDEST PUSH2 0x1A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC2 SWAP2 SWAP1 PUSH2 0x832 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x6FB JUMP JUMPDEST PUSH2 0x21E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC2 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x643 JUMP JUMPDEST PUSH2 0x24B JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x12C CALLDATASIZE PUSH1 0x4 PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x24E JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x13F CALLDATASIZE PUSH1 0x4 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x2E0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x5E1 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0xC0 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP6 AND DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP1 SWAP5 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 ADD SLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x5 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x22D JUMPI INVALID JUMPDEST ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD AND CALLER EQ PUSH2 0x2BA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B1 SWAP1 PUSH2 0x7D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2DC PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x3F6 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x0 SLOAD PUSH1 0x8 DUP2 LT PUSH2 0x2F0 JUMPI INVALID JUMPDEST ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE DUP6 DUP5 AND DUP1 DUP3 MSTORE DUP6 DUP6 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP5 DUP7 ADD DUP2 DUP2 MSTORE PUSH1 0x60 DUP7 ADD DUP3 DUP2 MSTORE TIMESTAMP PUSH1 0x80 DUP9 ADD SWAP1 DUP2 MSTORE PUSH1 0xA0 DUP9 ADD DUP5 DUP2 MSTORE SWAP7 DUP5 MSTORE PUSH1 0x9 SWAP1 SWAP5 MSTORE SWAP7 DUP3 KECCAK256 SWAP6 MLOAD DUP7 SLOAD SWAP1 DUP11 AND SWAP1 DUP10 AND OR DUP7 SSTORE SWAP3 MLOAD PUSH1 0x1 DUP7 DUP2 ADD DUP1 SLOAD SWAP3 SWAP1 SWAP11 AND SWAP2 SWAP1 SWAP9 AND OR SWAP1 SWAP8 SSTORE SWAP1 MLOAD PUSH1 0x2 DUP5 ADD SSTORE SWAP3 MLOAD PUSH1 0x3 DUP4 ADD SSTORE SWAP2 MLOAD PUSH1 0x4 DUP3 ADD SSTORE SWAP1 MLOAD PUSH1 0x5 SWAP1 SWAP2 ADD SSTORE DUP2 SLOAD ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x8 GT PUSH2 0x2DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B1 SWAP1 PUSH2 0x79E JUMP JUMPDEST PUSH2 0x499 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x417 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x49F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x4C8 SWAP2 SWAP1 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x505 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x50A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x522 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x499 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x544 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x544 SWAP2 SWAP1 PUSH2 0x69E JUMP JUMPDEST PUSH2 0x1A2 DUP2 PUSH2 0x2DC JUMPI PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x2DC SWAP2 DUP4 SWAP2 PUSH2 0x24B SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x654 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x65F DUP2 PUSH2 0x899 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x678 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x683 DUP2 PUSH2 0x899 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x693 DUP2 PUSH2 0x899 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6AF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x65F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x678 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6E2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x6ED DUP2 PUSH2 0x899 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x70C JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x733 JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x719 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x741 JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x546F6F206D616E792072657761726420746F6B656E7300000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C792063616C6C61626C6520627920726577617264206469737472696275 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x746F720000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 MLOAD AND DUP4 MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT ISZERO 0xB1 0xC8 0xAC 0x1F 0x22 0xB7 SIGNEXTEND PUSH7 0x5261AB87532F7A 0xDC SWAP8 CALL JUMP PUSH27 0x544AD839670915AC3E9964736F6C63430007010033000000000000 ","sourceMap":"1202:1815:120:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c806359b7e4091161005b57806359b7e409146100a257806384e9bd7e1461010b57806393f7aa671461011e578063e8de0d4d1461013157610088565b8063058a3a241461008d57806333fd6f74146100a257806348e9c65e146100cb57806354c49fe9146100eb575b600080fd5b6100a061009b3660046106be565b610144565b005b6100b56100b0366004610666565b61019a565b6040516100c29190610890565b60405180910390f35b6100de6100d9366004610643565b6101a2565b6040516100c29190610832565b6100fe6100f93660046106fb565b61021e565b6040516100c2919061077d565b6100a0610119366004610643565b61024b565b6100a061012c3660046106d0565b61024e565b6100a061013f3660046106be565b6102e0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260096020526040902060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b600092915050565b6101aa6105e1565b5073ffffffffffffffffffffffffffffffffffffffff908116600090815260096020908152604091829020825160c08101845281548516815260018201549094169184019190915260028101549183019190915260038101546060830152600481015460808301526005015460a082015290565b60006001826008811061022d57fe5b015473ffffffffffffffffffffffffffffffffffffffff1692915050565b50565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600960205260409020600101541633146102ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b1906107d5565b60405180910390fd5b6102dc73ffffffffffffffffffffffffffffffffffffffff83163330846103f6565b5050565b816001600054600881106102f057fe5b01805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556040805160c0810182528584168082528585166020808401918252600084860181815260608601828152426080880190815260a08801848152968452600990945296822095518654908a1690891617865592516001868101805492909a1691909816179097559051600284015592516003830155915160048201559051600590910155815401908190556008116102dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b19061079e565b610499846323b872dd60e01b8585856040516024016104179392919061074c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261049f565b50505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516104c89190610713565b6000604051808303816000865af19150503d8060008114610505576040519150601f19603f3d011682016040523d82523d6000602084013e61050a565b606091505b50915091506000821415610522573d6000803e3d6000fd5b610499815160001480610544575081806020019051810190610544919061069e565b6101a2816102dc577f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526102dc91839161024b917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b6040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b600060208284031215610654578081fd5b813561065f81610899565b9392505050565b60008060408385031215610678578081fd5b823561068381610899565b9150602083013561069381610899565b809150509250929050565b6000602082840312156106af578081fd5b8151801515811461065f578182fd5b60008060408385031215610678578182fd5b600080604083850312156106e2578182fd5b82356106ed81610899565b946020939093013593505050565b60006020828403121561070c578081fd5b5035919050565b60008251815b818110156107335760208186018101518583015201610719565b818111156107415782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60208082526016908201527f546f6f206d616e792072657761726420746f6b656e7300000000000000000000604082015260600190565b60208082526023908201527f4f6e6c792063616c6c61626c652062792072657761726420646973747269627560408201527f746f720000000000000000000000000000000000000000000000000000000000606082015260800190565b600060c08201905073ffffffffffffffffffffffffffffffffffffffff8084511683528060208501511660208401525060408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461024b57600080fdfea26469706673582212201215b1c8ac1f22b70b665261ab87532f7adc97f1567a544ad839670915ac3e9964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x59B7E409 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x59B7E409 EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x84E9BD7E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0x93F7AA67 EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xE8DE0D4D EQ PUSH2 0x131 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x58A3A24 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x33FD6F74 EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x48E9C65E EQ PUSH2 0xCB JUMPI DUP1 PUSH4 0x54C49FE9 EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x144 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB5 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x666 JUMP JUMPDEST PUSH2 0x19A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC2 SWAP2 SWAP1 PUSH2 0x890 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDE PUSH2 0xD9 CALLDATASIZE PUSH1 0x4 PUSH2 0x643 JUMP JUMPDEST PUSH2 0x1A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC2 SWAP2 SWAP1 PUSH2 0x832 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x6FB JUMP JUMPDEST PUSH2 0x21E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC2 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x643 JUMP JUMPDEST PUSH2 0x24B JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x12C CALLDATASIZE PUSH1 0x4 PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x24E JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x13F CALLDATASIZE PUSH1 0x4 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x2E0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x5E1 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0xC0 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP6 AND DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP1 SWAP5 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 ADD SLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x5 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x22D JUMPI INVALID JUMPDEST ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD AND CALLER EQ PUSH2 0x2BA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B1 SWAP1 PUSH2 0x7D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2DC PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x3F6 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x0 SLOAD PUSH1 0x8 DUP2 LT PUSH2 0x2F0 JUMPI INVALID JUMPDEST ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE DUP6 DUP5 AND DUP1 DUP3 MSTORE DUP6 DUP6 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP5 DUP7 ADD DUP2 DUP2 MSTORE PUSH1 0x60 DUP7 ADD DUP3 DUP2 MSTORE TIMESTAMP PUSH1 0x80 DUP9 ADD SWAP1 DUP2 MSTORE PUSH1 0xA0 DUP9 ADD DUP5 DUP2 MSTORE SWAP7 DUP5 MSTORE PUSH1 0x9 SWAP1 SWAP5 MSTORE SWAP7 DUP3 KECCAK256 SWAP6 MLOAD DUP7 SLOAD SWAP1 DUP11 AND SWAP1 DUP10 AND OR DUP7 SSTORE SWAP3 MLOAD PUSH1 0x1 DUP7 DUP2 ADD DUP1 SLOAD SWAP3 SWAP1 SWAP11 AND SWAP2 SWAP1 SWAP9 AND OR SWAP1 SWAP8 SSTORE SWAP1 MLOAD PUSH1 0x2 DUP5 ADD SSTORE SWAP3 MLOAD PUSH1 0x3 DUP4 ADD SSTORE SWAP2 MLOAD PUSH1 0x4 DUP3 ADD SSTORE SWAP1 MLOAD PUSH1 0x5 SWAP1 SWAP2 ADD SSTORE DUP2 SLOAD ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x8 GT PUSH2 0x2DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B1 SWAP1 PUSH2 0x79E JUMP JUMPDEST PUSH2 0x499 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x417 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x49F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x4C8 SWAP2 SWAP1 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x505 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x50A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x522 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x499 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x544 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x544 SWAP2 SWAP1 PUSH2 0x69E JUMP JUMPDEST PUSH2 0x1A2 DUP2 PUSH2 0x2DC JUMPI PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x2DC SWAP2 DUP4 SWAP2 PUSH2 0x24B SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x654 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x65F DUP2 PUSH2 0x899 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x678 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x683 DUP2 PUSH2 0x899 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x693 DUP2 PUSH2 0x899 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6AF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x65F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x678 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6E2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x6ED DUP2 PUSH2 0x899 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x70C JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x733 JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x719 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x741 JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x546F6F206D616E792072657761726420746F6B656E7300000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C792063616C6C61626C6520627920726577617264206469737472696275 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x746F720000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 MLOAD AND DUP4 MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT ISZERO 0xB1 0xC8 0xAC 0x1F 0x22 0xB7 SIGNEXTEND PUSH7 0x5261AB87532F7A 0xDC SWAP8 CALL JUMP PUSH27 0x544AD839670915AC3E9964736F6C63430007010033000000000000 ","sourceMap":"1202:1815:120:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2160:158;;;;;;:::i;:::-;;:::i;:::-;;2783:110;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1555:124;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1427:122::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2658:119::-;;;;;;:::i;:::-;;:::i;2324:328::-;;;;;;:::i;:::-;;:::i;1685:469::-;;;;;;:::i;:::-;;:::i;2160:158::-;2261:24;;;;;;;;:11;:24;;;;;:36;;:50;;;;;;;;;;;2160:158::o;2783:110::-;2859:7;2783:110;;;;:::o;1555:124::-;1622:13;;:::i;:::-;-1:-1:-1;1654:18:120;;;;;;;;:11;:18;;;;;;;;;1647:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1555:124::o;1427:122::-;1497:6;1522:13;1536:5;1522:20;;;;;;;;;;;;1427:122;-1:-1:-1;;1427:122:120:o;2658:119::-;;:::o;2324:328::-;2426:50;:24;;;;;;;:11;:24;;;;;:36;;;;2466:10;2426:50;2418:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;2526:63;:28;;;2555:10;2575:4;2582:6;2526:28;:63::i;:::-;2324:328;;:::o;1685:469::-;1804:11;1774:13;1788:12;;1774:27;;;;;;;;:41;;;;;;;;;;;;;;1852:206;;;;;;;;;;;;;;;;;;;;;;;;1774:27;1852:206;;;;;;;;;;;;2007:15;1852:206;;;;;;;;;;;;1825:24;;;:11;:24;;;;;;:233;;;;;;;;;;;;;;;1774:41;1825:233;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2069:17;;;;;;;2119:1;-1:-1:-1;2096:51:120;;;;;;;;;;;;:::i;1734:250:64:-;1872:105;1900:5;1931:27;;;1960:4;1966:2;1970:5;1908:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1872:19;:105::i;:::-;1734:250;;;;:::o;2324:914::-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:31;995:9;990:34;;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1006:18;;2926;;1506:28;;;;1783:14;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;581:241::-;;685:2;673:9;664:7;660:23;656:32;653:2;;;-1:-1;;691:12;653:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;743:63;647:175;-1:-1;;;647:175::o;829:366::-;;;950:2;938:9;929:7;925:23;921:32;918:2;;;-1:-1;;956:12;918:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1008:63;-1:-1;1108:2;1147:22;;72:20;97:33;72:20;97:33;:::i;:::-;1116:63;;;;912:283;;;;;:::o;1202:257::-;;1314:2;1302:9;1293:7;1289:23;1285:32;1282:2;;;-1:-1;;1320:12;1282:2;223:6;217:13;9996:5;8880:13;8873:21;9974:5;9971:32;9961:2;;-1:-1;;10007:12;1744:396;;;1880:2;1868:9;1859:7;1855:23;1851:32;1848:2;;;-1:-1;;1886:12;2147:396;;;2283:2;2271:9;2262:7;2258:23;2254:32;2251:2;;;-1:-1;;2289:12;2251:2;372:6;359:20;384:48;426:5;384:48;:::i;:::-;2341:78;2456:2;2495:22;;;;511:20;;-1:-1;;;2245:298::o;2550:241::-;;2654:2;2642:9;2633:7;2629:23;2625:32;2622:2;;;-1:-1;;2660:12;2622:2;-1:-1;511:20;;2616:175;-1:-1;2616:175::o;5874:271::-;;3188:5;8350:12;-1:-1;9587:101;9601:6;9598:1;9595:13;9587:101;;;3332:4;9668:11;;;;;9662:18;9649:11;;;9642:39;9616:10;9587:101;;;9703:6;9700:1;9697:13;9694:2;;;-1:-1;9759:6;9754:3;9750:16;9743:27;9694:2;-1:-1;3363:16;;;;;6008:137;-1:-1;;6008:137::o;6152:444::-;9092:42;9081:54;;;2859:37;;9081:54;;;;6499:2;6484:18;;2859:37;6582:2;6567:18;;5705:37;;;;6335:2;6320:18;;6306:290::o;6603:252::-;9092:42;9081:54;;;;3467:65;;6745:2;6730:18;;6716:139::o;6862:416::-;7062:2;7076:47;;;3932:2;7047:18;;;8648:19;3968:24;8688:14;;;3948:45;4012:12;;;7033:245::o;7285:416::-;7485:2;7499:47;;;4263:2;7470:18;;;8648:19;4299:34;8688:14;;;4279:55;4368:5;4354:12;;;4347:27;4393:12;;;7456:245::o;7708:319::-;;7883:3;7872:9;7868:19;7860:27;;9092:42;;4718:16;4712:23;9081:54;3474:3;3467:65;9092:42;4905:4;4898:5;4894:16;4888:23;9081:54;4905:4;4969:3;4965:14;2859:37;;5068:4;5061:5;5057:16;5051:23;5068:4;5132:3;5128:14;5705:37;5222:4;5215:5;5211:16;5205:23;5222:4;5286:3;5282:14;5705:37;5383:4;5376:5;5372:16;5366:23;5383:4;5447:3;5443:14;5705:37;5541:4;5534:5;5530:16;5524:23;5541:4;5605:3;5601:14;5705:37;7854:173;;;;:::o;8034:222::-;5705:37;;;8161:2;8146:18;;8132:124::o;9791:117::-;9092:42;9878:5;9081:54;9853:5;9850:35;9840:2;;9899:1;;9889:12"},"methodIdentifiers":{"add_reward(address,address)":"e8de0d4d","claim_rewards(address)":"84e9bd7e","claimable_reward(address,address)":"33fd6f74","claimable_reward_write(address,address)":"59b7e409","deposit_reward_token(address,uint256)":"93f7aa67","reward_data(address)":"48e9c65e","reward_tokens(uint256)":"54c49fe9","set_reward_distributor(address,address)":"058a3a24"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"add_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claim_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"claimable_reward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"claimable_reward_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit_reward_token\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"reward_data\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"period_finish\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_update\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"integral\",\"type\":\"uint256\"}],\"internalType\":\"struct IRewardTokenDistributor.Reward\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"set_reward_distributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is designed to mock LiquidityGaugeV5's interface for distributing external tokens.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockRewardTokenDistributor.sol\":\"MockRewardTokenDistributor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/test/MockRewardTokenDistributor.sol\":{\"keccak256\":\"0x0928cd88a5f3c86b54e281c34013da5133d91bee18222e53b1d8f17290773896\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3615801365dd7ccb3e4e83be1e6eb8249a32f86eee33dcfbf96c73859f9af9c6\",\"dweb:/ipfs/QmW43qmvDH3TntyFriMDZNxS1qpyjZxBzNHRQynSnmkisj\"]}},\"version\":1}"}},"contracts/test/MockVeDelegation.sol":{"MockVeDelegation":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"adjusted_balance_of","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5060c28061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806318160ddd146037578063bbf7408a14604f575b600080fd5b603d607f565b60408051918252519081900360200190f35b603d60048036036020811015606357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166085565b60015490565b506000549056fea2646970667358221220b8f9c72576ea50b94eaed5b70ca16a15bd0ce584a57f94e1bca9722e94bf0fd664736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC2 DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x18160DDD EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xBBF7408A EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x7F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x85 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x0 SLOAD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 0xF9 0xC7 0x25 PUSH23 0xEA50B94EAED5B70CA16A15BD0CE584A57F94E1BCA9722E SWAP5 0xBF 0xF 0xD6 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"976:349:121:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060325760003560e01c806318160ddd146037578063bbf7408a14604f575b600080fd5b603d607f565b60408051918252519081900360200190f35b603d60048036036020811015606357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166085565b60015490565b506000549056fea2646970667358221220b8f9c72576ea50b94eaed5b70ca16a15bd0ce584a57f94e1bca9722e94bf0fd664736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x18160DDD EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xBBF7408A EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x7F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x85 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x0 SLOAD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 0xF9 0xC7 0x25 PUSH23 0xEA50B94EAED5B70CA16A15BD0CE584A57F94E1BCA9722E SWAP5 0xBF 0xF 0xD6 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"976:349:121:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:100;;;:::i;:::-;;;;;;;;;;;;;;;;1098:119;;;;;;;;;;;;;;;;-1:-1:-1;1098:119:121;;;;:::i;1223:100::-;1304:12;;1223:100;:::o;1098:119::-;-1:-1:-1;1168:7:121;1194:16;;1098:119::o"},"methodIdentifiers":{"adjusted_balance_of(address)":"bbf7408a","totalSupply()":"18160ddd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"adjusted_balance_of\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockVeDelegation.sol\":\"MockVeDelegation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\":{\"keccak256\":\"0xd4ebf4ceca6fa99ec2149d60b36084674621ae87e8a7786b23501749da8cc581\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7dd20ed7be933a3d8ec0be284b8f7f123e69ecb29731e35f70c371eb4f5e26c8\",\"dweb:/ipfs/QmfPp5sBxn92hg32fPFTDBB5kuHP9qU4jN3bSfip8uCnQ6\"]},\"contracts/test/MockVeDelegation.sol\":{\"keccak256\":\"0xfc1c35b3d0e48a08011eb19c269fb041cc1a86f15360437765cefa5cb6e5a8e5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f0bf6d0c01caf98958d2dfacc7fbb7e31d72234c66ca2382a15de01deb83a91a\",\"dweb:/ipfs/QmXW2RjHEDQSjFaYWSGtGBVV1AHR2js4WAHNUg8r28mPWa\"]}},\"version\":1}"}},"contracts/test/MockVotingEscrow.sol":{"MockVotingEscrow":{"abi":[{"inputs":[{"internalType":"contract ISmartWalletChecker","name":"smartWalletChecker","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"locked__end","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"point_history","outputs":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"}],"name":"setBalanceOf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_epoch","type":"uint256"}],"name":"setEpoch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"setLockedEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_epoch","type":"uint256"},{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"point","type":"tuple"}],"name":"setPointHistory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"_epoch","type":"uint256"}],"name":"setUserPointEpoch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"_epoch","type":"uint256"},{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"point","type":"tuple"}],"name":"setUserPointHistory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"smart_wallet_checker","outputs":[{"internalType":"contract ISmartWalletChecker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_point_epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"user_point_history","outputs":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161072538038061072583398101604081905261002f91610054565b600680546001600160a01b0319166001600160a01b0392909216919091179055610082565b600060208284031215610065578081fd5b81516001600160a01b038116811461007b578182fd5b9392505050565b610694806100916000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80637175d4f71161008c578063af8de87111610066578063af8de871146101ae578063b46310f6146101c1578063b67672ab146101d4578063d1febfb9146101e7576100df565b80637175d4f71461017e578063900cf0cf14610193578063adc635891461019b576100df565b806336aeef2a116100bd57806336aeef2a146101455780633dc6f15b1461015857806370a082311461016b576100df565b8063010ae757146100e45780630ceb2cef1461010d57806328d09d4714610122575b600080fd5b6100f76100f2366004610544565b6101fa565b6040516101049190610655565b60405180910390f35b61012061011b3660046105cd565b61020c565b005b610135610130366004610566565b610211565b6040516101049493929190610632565b610120610153366004610566565b610257565b610120610166366004610566565b610280565b6100f7610179366004610544565b6102a9565b6101866102bb565b6040516101049190610611565b6100f76102d7565b6100f76101a9366004610544565b6102dd565b6101206101bc366004610590565b6102ef565b6101206101cf366004610566565b6103a1565b6101206101e23660046105e5565b6103ca565b6101356101f53660046105cd565b61045b565b60036020526000908152604090205481565b600055565b60026020818152600093845260408085209091529183529120805460018201549190920154600f83810b937001000000000000000000000000000000009004900b919084565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260046020526040902055565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260036020526040902055565b60056020526000908152604090205481565b60065473ffffffffffffffffffffffffffffffffffffffff1690565b60005481565b60046020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600260208181526040808420948452938152918390208451815493860151600f90810b6fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029290910b81167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951694909417909316929092178255918301516001820155606090920151910155565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260056020526040902055565b6000918252600160208181526040938490208351815492850151600f90810b6fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029290910b81167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941693909317909216919091178155928201519083015560600151600290910155565b6001602081905260009182526040909120805491810154600290910154600f83810b937001000000000000000000000000000000009004900b919084565b803573ffffffffffffffffffffffffffffffffffffffff811681146104bd57600080fd5b92915050565b8035600f81900b81146104bd57600080fd5b6000608082840312156104e6578081fd5b6040516080810181811067ffffffffffffffff82111715610505578283fd5b60405290508061051584846104c3565b815261052484602085016104c3565b602082015260408301356040820152606083013560608201525092915050565b600060208284031215610555578081fd5b61055f8383610499565b9392505050565b60008060408385031215610578578081fd5b6105828484610499565b946020939093013593505050565b600080600060c084860312156105a4578081fd5b6105ae8585610499565b9250602084013591506105c485604086016104d5565b90509250925092565b6000602082840312156105de578081fd5b5035919050565b60008060a083850312156105f7578182fd5b8235915061060884602085016104d5565b90509250929050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600f94850b81529290930b60208301526040820152606081019190915260800190565b9081526020019056fea2646970667358221220f3cbf8db68092eff52f28c08f8d4fdac36aa8e04af61c65aab42c94cc2fa827964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x725 CODESIZE SUB DUP1 PUSH2 0x725 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x82 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7B JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x694 DUP1 PUSH2 0x91 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7175D4F7 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xAF8DE871 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xAF8DE871 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0xB46310F6 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0xB67672AB EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0xD1FEBFB9 EQ PUSH2 0x1E7 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x7175D4F7 EQ PUSH2 0x17E JUMPI DUP1 PUSH4 0x900CF0CF EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0xADC63589 EQ PUSH2 0x19B JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x36AEEF2A GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x36AEEF2A EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0x3DC6F15B EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x16B JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x10AE757 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0xCEB2CEF EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x28D09D47 EQ PUSH2 0x122 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0x544 JUMP JUMPDEST PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x655 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x5CD JUMP JUMPDEST PUSH2 0x20C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x135 PUSH2 0x130 CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x211 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x632 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x153 CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x257 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x166 CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x280 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x179 CALLDATASIZE PUSH1 0x4 PUSH2 0x544 JUMP JUMPDEST PUSH2 0x2A9 JUMP JUMPDEST PUSH2 0x186 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x611 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x2D7 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x1A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x544 JUMP JUMPDEST PUSH2 0x2DD JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1BC CALLDATASIZE PUSH1 0x4 PUSH2 0x590 JUMP JUMPDEST PUSH2 0x2EF JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1CF CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x3A1 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST PUSH2 0x135 PUSH2 0x1F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x5CD JUMP JUMPDEST PUSH2 0x45B JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 SWAP1 SWAP2 MSTORE SWAP2 DUP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH1 0xF DUP4 DUP2 SIGNEXTEND SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV SWAP1 SIGNEXTEND SWAP2 SWAP1 DUP5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP5 DUP5 MSTORE SWAP4 DUP2 MSTORE SWAP2 DUP4 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SLOAD SWAP4 DUP7 ADD MLOAD PUSH1 0xF SWAP1 DUP2 SIGNEXTEND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP2 SIGNEXTEND DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR DUP3 SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD SWAP2 ADD SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP4 DUP5 SWAP1 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP3 DUP6 ADD MLOAD PUSH1 0xF SWAP1 DUP2 SIGNEXTEND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP2 SIGNEXTEND DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR DUP2 SSTORE SWAP3 DUP3 ADD MLOAD SWAP1 DUP4 ADD SSTORE PUSH1 0x60 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP2 DUP2 ADD SLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH1 0xF DUP4 DUP2 SIGNEXTEND SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV SWAP1 SIGNEXTEND SWAP2 SWAP1 DUP5 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E6 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x505 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP1 POP DUP1 PUSH2 0x515 DUP5 DUP5 PUSH2 0x4C3 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x524 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x4C3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x555 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x55F DUP4 DUP4 PUSH2 0x499 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x578 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x582 DUP5 DUP5 PUSH2 0x499 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5A4 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x5AE DUP6 DUP6 PUSH2 0x499 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x5C4 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x4D5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5DE JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xA0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F7 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x608 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x4D5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0xF SWAP5 DUP6 SIGNEXTEND DUP2 MSTORE SWAP3 SWAP1 SWAP4 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN 0xCB 0xF8 0xDB PUSH9 0x92EFF52F28C08F8D4 REVERT 0xAC CALLDATASIZE 0xAA DUP15 DIV 0xAF PUSH2 0xC65A 0xAB TIMESTAMP 0xC9 0x4C 0xC2 STATICCALL DUP3 PUSH26 0x64736F6C63430007010033000000000000000000000000000000 ","sourceMap":"1227:1538:122:-:0;;;1784:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1846:19;:40;;-1:-1:-1;;;;;;1846:40:122;-1:-1:-1;;;;;1846:40:122;;;;;;;;;;1227:1538;;202:319:-1;;345:2;333:9;324:7;320:23;316:32;313:2;;;-1:-1;;351:12;313:2;111:13;;-1:-1;;;;;814:54;;967:63;;957:2;;-1:-1;;1034:12;957:2;403:102;307:214;-1:-1;;;307:214::o;:::-;1227:1538:122;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100df5760003560e01c80637175d4f71161008c578063af8de87111610066578063af8de871146101ae578063b46310f6146101c1578063b67672ab146101d4578063d1febfb9146101e7576100df565b80637175d4f71461017e578063900cf0cf14610193578063adc635891461019b576100df565b806336aeef2a116100bd57806336aeef2a146101455780633dc6f15b1461015857806370a082311461016b576100df565b8063010ae757146100e45780630ceb2cef1461010d57806328d09d4714610122575b600080fd5b6100f76100f2366004610544565b6101fa565b6040516101049190610655565b60405180910390f35b61012061011b3660046105cd565b61020c565b005b610135610130366004610566565b610211565b6040516101049493929190610632565b610120610153366004610566565b610257565b610120610166366004610566565b610280565b6100f7610179366004610544565b6102a9565b6101866102bb565b6040516101049190610611565b6100f76102d7565b6100f76101a9366004610544565b6102dd565b6101206101bc366004610590565b6102ef565b6101206101cf366004610566565b6103a1565b6101206101e23660046105e5565b6103ca565b6101356101f53660046105cd565b61045b565b60036020526000908152604090205481565b600055565b60026020818152600093845260408085209091529183529120805460018201549190920154600f83810b937001000000000000000000000000000000009004900b919084565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260046020526040902055565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260036020526040902055565b60056020526000908152604090205481565b60065473ffffffffffffffffffffffffffffffffffffffff1690565b60005481565b60046020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600260208181526040808420948452938152918390208451815493860151600f90810b6fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029290910b81167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951694909417909316929092178255918301516001820155606090920151910155565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260056020526040902055565b6000918252600160208181526040938490208351815492850151600f90810b6fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029290910b81167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941693909317909216919091178155928201519083015560600151600290910155565b6001602081905260009182526040909120805491810154600290910154600f83810b937001000000000000000000000000000000009004900b919084565b803573ffffffffffffffffffffffffffffffffffffffff811681146104bd57600080fd5b92915050565b8035600f81900b81146104bd57600080fd5b6000608082840312156104e6578081fd5b6040516080810181811067ffffffffffffffff82111715610505578283fd5b60405290508061051584846104c3565b815261052484602085016104c3565b602082015260408301356040820152606083013560608201525092915050565b600060208284031215610555578081fd5b61055f8383610499565b9392505050565b60008060408385031215610578578081fd5b6105828484610499565b946020939093013593505050565b600080600060c084860312156105a4578081fd5b6105ae8585610499565b9250602084013591506105c485604086016104d5565b90509250925092565b6000602082840312156105de578081fd5b5035919050565b60008060a083850312156105f7578182fd5b8235915061060884602085016104d5565b90509250929050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600f94850b81529290930b60208301526040820152606081019190915260800190565b9081526020019056fea2646970667358221220f3cbf8db68092eff52f28c08f8d4fdac36aa8e04af61c65aab42c94cc2fa827964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7175D4F7 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xAF8DE871 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xAF8DE871 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0xB46310F6 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0xB67672AB EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0xD1FEBFB9 EQ PUSH2 0x1E7 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x7175D4F7 EQ PUSH2 0x17E JUMPI DUP1 PUSH4 0x900CF0CF EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0xADC63589 EQ PUSH2 0x19B JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x36AEEF2A GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x36AEEF2A EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0x3DC6F15B EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x16B JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x10AE757 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0xCEB2CEF EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x28D09D47 EQ PUSH2 0x122 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0x544 JUMP JUMPDEST PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x655 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x5CD JUMP JUMPDEST PUSH2 0x20C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x135 PUSH2 0x130 CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x211 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x632 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x153 CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x257 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x166 CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x280 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x179 CALLDATASIZE PUSH1 0x4 PUSH2 0x544 JUMP JUMPDEST PUSH2 0x2A9 JUMP JUMPDEST PUSH2 0x186 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x611 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x2D7 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x1A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x544 JUMP JUMPDEST PUSH2 0x2DD JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1BC CALLDATASIZE PUSH1 0x4 PUSH2 0x590 JUMP JUMPDEST PUSH2 0x2EF JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1CF CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x3A1 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST PUSH2 0x135 PUSH2 0x1F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x5CD JUMP JUMPDEST PUSH2 0x45B JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 SWAP1 SWAP2 MSTORE SWAP2 DUP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH1 0xF DUP4 DUP2 SIGNEXTEND SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV SWAP1 SIGNEXTEND SWAP2 SWAP1 DUP5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP5 DUP5 MSTORE SWAP4 DUP2 MSTORE SWAP2 DUP4 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SLOAD SWAP4 DUP7 ADD MLOAD PUSH1 0xF SWAP1 DUP2 SIGNEXTEND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP2 SIGNEXTEND DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR DUP3 SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD SWAP2 ADD SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP4 DUP5 SWAP1 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP3 DUP6 ADD MLOAD PUSH1 0xF SWAP1 DUP2 SIGNEXTEND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP2 SIGNEXTEND DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR DUP2 SSTORE SWAP3 DUP3 ADD MLOAD SWAP1 DUP4 ADD SSTORE PUSH1 0x60 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP2 DUP2 ADD SLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH1 0xF DUP4 DUP2 SIGNEXTEND SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV SWAP1 SIGNEXTEND SWAP2 SWAP1 DUP5 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E6 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x505 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP1 POP DUP1 PUSH2 0x515 DUP5 DUP5 PUSH2 0x4C3 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x524 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x4C3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x555 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x55F DUP4 DUP4 PUSH2 0x499 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x578 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x582 DUP5 DUP5 PUSH2 0x499 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5A4 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x5AE DUP6 DUP6 PUSH2 0x499 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x5C4 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x4D5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5DE JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xA0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F7 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x608 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x4D5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0xF SWAP5 DUP6 SIGNEXTEND DUP2 MSTORE SWAP3 SWAP1 SWAP4 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN 0xCB 0xF8 0xDB PUSH9 0x92EFF52F28C08F8D4 REVERT 0xAC CALLDATASIZE 0xAA DUP15 DIV 0xAF PUSH2 0xC65A 0xAB TIMESTAMP 0xC9 0x4C 0xC2 STATICCALL DUP3 PUSH26 0x64736F6C63430007010033000000000000000000000000000000 ","sourceMap":"1227:1538:122:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1519:51;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2024:74;;;;;;:::i;:::-;;:::i;:::-;;1406:85;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;2555:98::-;;;;;;:::i;:::-;;:::i;2240:114::-;;;;;;:::i;:::-;;:::i;1679:44::-;;;;;;:::i;:::-;;:::i;1899:119::-;;;:::i;:::-;;;;;;;:::i;1259:20::-;;;:::i;1603:46::-;;;;;;:::i;:::-;;:::i;2360:189::-;;;;;;:::i;:::-;;:::i;2659:104::-;;;;;;:::i;:::-;;:::i;2104:130::-;;;;;;:::i;:::-;;:::i;1308:60::-;;;;;;:::i;:::-;;:::i;1519:51::-;;;;;;;;;;;;;:::o;2024:74::-;2077:5;:14;2024:74::o;1406:85::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2555:98::-;2623:17;;;;;;;;:11;:17;;;;;:23;2555:98::o;2240:114::-;2316:22;;;;;;;;:16;:22;;;;;:31;2240:114::o;1679:44::-;;;;;;;;;;;;;:::o;1899:119::-;1992:19;;;;1899:119;:::o;1259:20::-;;;;:::o;1603:46::-;;;;;;;;;;;;;:::o;2360:189::-;2502:24;;;;;;;;:18;:24;;;;;;;;:32;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:189::o;2659:104::-;2731:15;;;;;;;;:9;:15;;;;;:25;2659:104::o;2104:130::-;2198:21;;;;:13;:21;;;;;;;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2104:130::o;1308:60::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;5060:42;5049:54;;5580:35;;5570:2;;5629:1;;5619:12;5570:2;57:78;;;;:::o;142:128::-;208:20;;4965:2;4954:21;;;5703:34;;5693:2;;5751:1;;5741:12;310:749;;422:4;410:9;405:3;401:19;397:30;394:2;;;-1:-1;;430:12;394:2;4594;4588:9;422:4;4624:6;4620:17;4731:6;4719:10;4716:22;4695:18;4683:10;4680:34;4677:62;4674:2;;;-1:-1;;4742:12;4674:2;4594;4761:22;449:29;-1:-1;449:29;560:48;604:3;580:22;560:48;:::i;:::-;542:16;535:74;704:48;748:3;671:2;728:9;724:22;704:48;:::i;:::-;671:2;690:5;686:16;679:74;4594:2;870:9;866:22;1133:20;4594:2;831:5;827:16;820:75;955:2;1013:9;1009:22;1133:20;955:2;974:5;970:16;963:75;;388:671;;;;:::o;1203:241::-;;1307:2;1295:9;1286:7;1282:23;1278:32;1275:2;;;-1:-1;;1313:12;1275:2;1375:53;1420:7;1396:22;1375:53;:::i;:::-;1365:63;1269:175;-1:-1;;;1269:175::o;1451:366::-;;;1572:2;1560:9;1551:7;1547:23;1543:32;1540:2;;;-1:-1;;1578:12;1540:2;1640:53;1685:7;1661:22;1640:53;:::i;:::-;1630:63;1730:2;1769:22;;;;1133:20;;-1:-1;;;1534:283::o;1824:538::-;;;;1985:3;1973:9;1964:7;1960:23;1956:33;1953:2;;;-1:-1;;1992:12;1953:2;2054:53;2099:7;2075:22;2054:53;:::i;:::-;2044:63;;2144:2;2187:9;2183:22;1133:20;2152:63;;2270:76;2338:7;2252:2;2318:9;2314:22;2270:76;:::i;:::-;2260:86;;1947:415;;;;;:::o;2369:241::-;;2473:2;2461:9;2452:7;2448:23;2444:32;2441:2;;;-1:-1;;2479:12;2441:2;-1:-1;1133:20;;2435:175;-1:-1;2435:175::o;2617:413::-;;;2761:3;2749:9;2740:7;2736:23;2732:33;2729:2;;;-1:-1;;2768:12;2729:2;2851:22;1133:20;2820:63;;2938:76;3006:7;2920:2;2986:9;2982:22;2938:76;:::i;:::-;2928:86;;2723:307;;;;;:::o;3463:278::-;5060:42;5049:54;;;;3136:78;;3618:2;3603:18;;3589:152::o;3748:548::-;4965:2;4954:21;;;3295:36;;4954:21;;;;4116:2;4101:18;;3295:36;4199:2;4184:18;;3414:37;4282:2;4267:18;;3414:37;;;;3955:3;3940:19;;3926:370::o;4303:222::-;3414:37;;;4430:2;4415:18;;4401:124::o"},"methodIdentifiers":{"balanceOf(address)":"70a08231","epoch()":"900cf0cf","locked__end(address)":"adc63589","point_history(uint256)":"d1febfb9","setBalanceOf(address,uint256)":"b46310f6","setEpoch(uint256)":"0ceb2cef","setLockedEnd(address,uint256)":"36aeef2a","setPointHistory(uint256,(int128,int128,uint256,uint256))":"b67672ab","setUserPointEpoch(address,uint256)":"3dc6f15b","setUserPointHistory(address,uint256,(int128,int128,uint256,uint256))":"af8de871","smart_wallet_checker()":"7175d4f7","user_point_epoch(address)":"010ae757","user_point_history(address,uint256)":"28d09d47"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ISmartWalletChecker\",\"name\":\"smartWalletChecker\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"locked__end\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"point_history\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"name\":\"setBalanceOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_epoch\",\"type\":\"uint256\"}],\"name\":\"setEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"setLockedEnd\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_epoch\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"point\",\"type\":\"tuple\"}],\"name\":\"setPointHistory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_epoch\",\"type\":\"uint256\"}],\"name\":\"setUserPointEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_epoch\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"point\",\"type\":\"tuple\"}],\"name\":\"setUserPointHistory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"smart_wallet_checker\",\"outputs\":[{\"internalType\":\"contract ISmartWalletChecker\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_point_epoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"user_point_history\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Mock voting escrow with setters to manipulate its inner state. Points are represented as mappings just for convenience, while keeping the same API for the public members as the real voting escrow.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockVotingEscrow.sol\":\"MockVotingEscrow\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"contracts/test/MockVotingEscrow.sol\":{\"keccak256\":\"0x419f627988047649de222995db37fef8b3cd20f0b2d7b8cfcd353080a73974d0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cd783011c0e024d61a623eda2bbc3d0d298409e8e22135310d0167370fd93ce7\",\"dweb:/ipfs/Qme4cd3kYtSMsChx7xxH8YmDmcafAQgw5o1fy2pduLR8dj\"]}},\"version\":1}"}},"contracts/test/TestAccessControl.sol":{"TestAccessControl":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.\",\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestAccessControl.sol\":\"TestAccessControl\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"contracts/test/TestAccessControl.sol\":{\"keccak256\":\"0xd7e1e3bdde3a149dfc57de01e4d2fef1a3624af436ae95dfe444d8bfb25772b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1f209648a170f1cb287cc462a78a1733e027c14026bb052a4b8eb372c97d665\",\"dweb:/ipfs/QmYCg7YsmwzAzxLChiek7kFysvqNvSTi6wCeGvwGiYCksT\"]}},\"version\":1}"}},"contracts/test/TestBalancerToken.sol":{"TestBalancerToken":{"abi":[{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Snapshot","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNAPSHOT_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b5060405162001c1738038062001c17833981810160405260608110156200003757600080fd5b8151602083018051604051929492938301929190846401000000008211156200005f57600080fd5b9083019060208201858111156200007557600080fd5b82516401000000008111828201881017156200009057600080fd5b82525081516020918201929091019080838360005b83811015620000bf578181015183820152602001620000a5565b50505050905090810190601f168015620000ed5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011157600080fd5b9083019060208201858111156200012757600080fd5b82516401000000008111828201881017156200014257600080fd5b82525081516020918201929091019080838360005b838110156200017157818101518382015260200162000157565b50505050905090810190601f1680156200019f5780820380516001836020036101000a031916815260200191505b506040525050508180604051806040016040528060018152602001603160f81b81525084848160049080519060200190620001dc929190620003d2565b508051620001f2906005906020840190620003d2565b50506006805460ff1916601290811790915583516020948501206080528251929093019190912060a052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526200024d9150620002bb565b6200025a600084620002d1565b620002867f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a684620002d1565b620002b27f5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f84620002d1565b5050506200046e565b6006805460ff191660ff92909216919091179055565b620002dd8282620002e1565b5050565b6000828152602081815260409091206200030691839062000d7862000348821b17901c565b15620002dd5760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000620003568383620003b1565b620003a757508154600180820184556000848152602080822090930180546001600160a01b0319166001600160a01b03861690811790915585549082528286019093526040902091909155620003ab565b5060005b92915050565b6001600160a01b031660009081526001919091016020526040902054151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200041557805160ff191683800117855562000445565b8280016001018555821562000445579182015b828111156200044557825182559160200191906001019062000428565b506200045392915062000457565b5090565b5b8082111562000453576000815560010162000458565b60805160a05160c05161177c6200049b60003980611251525080611293525080611272525061177c6000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637ecebe0011610104578063a457c2d7116100a2578063d539139311610071578063d5391393146105ed578063d547741f146105f5578063dd62ed3e14610621578063ed24911d1461064f576101da565b8063a457c2d714610527578063a9059cbb14610553578063ca15c8731461057f578063d505accf1461059c576101da565b806391d14854116100de57806391d14854146104e357806395d89b411461050f5780639711715a14610517578063a217fddf1461051f576101da565b80637ecebe00146104585780639010d07c1461047e57806390193b7c146104bd576101da565b80633644e5151161017c57806342966c681161014b57806342966c68146103e15780637028e2cd146103fe57806370a082311461040657806379cc67901461042c576101da565b80633644e5151461035557806336568abe1461035d578063395093511461038957806340c10f19146103b5576101da565b806323b872dd116101b857806323b872dd146102b6578063248a9ca3146102ec5780632f2ff15d14610309578063313ce56714610337576101da565b806306fdde03146101df578063095ea7b31461025c57806318160ddd1461029c575b600080fd5b6101e7610657565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102886004803603604081101561027257600080fd5b506001600160a01b03813516906020013561070b565b604080519115158252519081900360200190f35b6102a4610722565b60408051918252519081900360200190f35b610288600480360360608110156102cc57600080fd5b506001600160a01b03813581169160208101359091169060400135610728565b6102a46004803603602081101561030257600080fd5b503561077c565b6103356004803603604081101561031f57600080fd5b50803590602001356001600160a01b0316610791565b005b61033f610810565b6040805160ff9092168252519081900360200190f35b6102a4610819565b6103356004803603604081101561037357600080fd5b50803590602001356001600160a01b0316610828565b6102886004803603604081101561039f57600080fd5b506001600160a01b038135169060200135610893565b610335600480360360408110156103cb57600080fd5b506001600160a01b0381351690602001356108c9565b610335600480360360208110156103f757600080fd5b5035610968565b6102a4610975565b6102a46004803603602081101561041c57600080fd5b50356001600160a01b0316610999565b6103356004803603604081101561044257600080fd5b506001600160a01b0381351690602001356109b4565b6102a46004803603602081101561046e57600080fd5b50356001600160a01b03166109ea565b6104a16004803603604081101561049457600080fd5b50803590602001356109f5565b604080516001600160a01b039092168252519081900360200190f35b6102a4600480360360208110156104d357600080fd5b50356001600160a01b0316610a14565b610288600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a2f565b6101e7610a47565b610335610ac6565b6102a4610b91565b6102886004803603604081101561053d57600080fd5b506001600160a01b038135169060200135610b96565b6102886004803603604081101561056957600080fd5b506001600160a01b038135169060200135610bcf565b6102a46004803603602081101561059557600080fd5b5035610bdc565b610335600480360360e08110156105b257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610bf3565b6102a4610cae565b6103356004803603604081101561060b57600080fd5b50803590602001356001600160a01b0316610cd2565b6102a46004803603604081101561063757600080fd5b506001600160a01b0381358116916020013516610d43565b6102a4610d6e565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107015780601f106106d657610100808354040283529160200191610701565b820191906000526020600020905b8154815290600101906020018083116106e457829003601f168201915b5050505050905090565b6000610718338484610df3565b5060015b92915050565b60035490565b6000610735848484610e55565b6001600160a01b03841660009081526002602090815260408083203380855292529091205461077291869161076d908661019e610f3f565b610df3565b5060019392505050565b60009081526020819052604090206002015490565b6000828152602081905260409020600201546107ad9033610a2f565b610802576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806116b9602f913960400191505060405180910390fd5b61080c8282610f55565b5050565b60065460ff1690565b6000610823610d6e565b905090565b6001600160a01b0381163314610889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611718602f913960400191505060405180910390fd5b61080c8282610fae565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161071891859061076d9086611007565b6108f37f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610a2f565b61095e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e54455200000000000000000000000000000000000000000000604482015290519081900360640190fd5b61080c8282611019565b61097233826110ba565b50565b7f5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f81565b6001600160a01b031660009081526001602052604090205490565b60006109ce826101a16109c78633610d43565b9190610f3f565b90506109db833383610df3565b6109e583836110ba565b505050565b600061071c82610a14565b6000828152602081905260408120610a0d9083611176565b9392505050565b6001600160a01b031660009081526007602052604090205490565b6000828152602081905260408120610a0d9083611192565b60058054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107015780601f106106d657610100808354040283529160200191610701565b610af07f5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f33610a2f565b610b5b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f534e415053484f545445520000000000000000000000000000000000604482015290519081900360640190fd5b604080516000815290517f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb679181900360200190a1565b600081565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161071891859061076d908661019f610f3f565b6000610718338484610e55565b600081815260208190526040812061071c906111b3565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610c228c610a14565b8960405160200180878152602001866001600160a01b03168152602001856001600160a01b031681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610c998882610c908787876111b7565b886101f86111f6565b610ca4888888610df3565b5050505050505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b600082815260208190526040902060020154610cee9033610a2f565b610889576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806116e86030913960400191505060405180910390fd5b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600061082361124d565b6000610d848383611192565b610deb57508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386169081179091558554908252828601909352604090209190915561071c565b50600061071c565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610e6c6001600160a01b038416151561019861130b565b610e836001600160a01b038316151561019961130b565b610e8e8383836109e5565b6001600160a01b038316600090815260016020526040902054610eb490826101a0610f3f565b6001600160a01b038085166000908152600160205260408082209390935590841681522054610ee39082611007565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610f4e848411158361130b565b5050900390565b6000828152602081905260409020610f6d9082610d78565b1561080c5760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000828152602081905260409020610fc69082611319565b1561080c5760405133906001600160a01b0383169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000828201610a0d848210158361130b565b611025600083836109e5565b61103f61103a82611034610722565b90611007565b611493565b6001600160a01b0382166000908152600160205260409020546110629082611007565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6110d16001600160a01b038316151561019b61130b565b6110dd826000836109e5565b6001600160a01b03821660009081526001602052604090205461110390826101b2610f3f565b6001600160a01b03831660009081526001602052604090205561113161103a8261112b610722565b90611498565b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b8154600090611188908310606461130b565b610a0d83836114a6565b6001600160a01b031660009081526001919091016020526040902054151590565b5490565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000611201856114d3565b905061121761121187838761153a565b8361130b565b611226428410156101b861130b565b5050506001600160a01b039092166000908152600760205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006112ba611625565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b8161080c5761080c81611629565b6001600160a01b038116600090815260018301602052604081205480156114895783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191018082146113fb57600086600001828154811061137a57fe5b60009182526020909120015487546001600160a01b03909116915081908890859081106113a357fe5b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0394851617905592909116815260018881019092526040902090830190555b855486908061140657fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559092019092556001600160a01b038716825260018881019091526040822091909155935061071c92505050565b600091505061071c565b600355565b6000610a0d83836001610f3f565b60008260000182815481106114b757fe5b6000918252602090912001546001600160a01b03169392505050565b60006114dd61124d565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061154c82516041146101b961130b565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156115c5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906116195750876001600160a01b0316816001600160a01b0316145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610972917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a264697066735822122048ad74f0d0e050b9891cc0579e4ab63cec31ef728daeb07662c8785d794e368d64736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1C17 CODESIZE SUB DUP1 PUSH3 0x1C17 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xBF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xED JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x171 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x157 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x19F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP POP DUP2 DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP5 DUP5 DUP2 PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x1DC SWAP3 SWAP2 SWAP1 PUSH3 0x3D2 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1F2 SWAP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x3D2 JUMP JUMPDEST POP POP PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP4 MLOAD PUSH1 0x20 SWAP5 DUP6 ADD KECCAK256 PUSH1 0x80 MSTORE DUP3 MLOAD SWAP3 SWAP1 SWAP4 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0xA0 MSTORE POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH3 0x24D SWAP2 POP PUSH3 0x2BB JUMP JUMPDEST PUSH3 0x25A PUSH1 0x0 DUP5 PUSH3 0x2D1 JUMP JUMPDEST PUSH3 0x286 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP5 PUSH3 0x2D1 JUMP JUMPDEST PUSH3 0x2B2 PUSH32 0x5FDBD35E8DA83EE755D5E62A539E5ED7F47126ABEDE0B8B10F9EA43DC6EED07F DUP5 PUSH3 0x2D1 JUMP JUMPDEST POP POP POP PUSH3 0x46E JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x2DD DUP3 DUP3 PUSH3 0x2E1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH3 0x306 SWAP2 DUP4 SWAP1 PUSH3 0xD78 PUSH3 0x348 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST ISZERO PUSH3 0x2DD JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x356 DUP4 DUP4 PUSH3 0x3B1 JUMP JUMPDEST PUSH3 0x3A7 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH3 0x3AB JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x415 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x445 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x445 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x445 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x428 JUMP JUMPDEST POP PUSH3 0x453 SWAP3 SWAP2 POP PUSH3 0x457 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x453 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x458 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0x177C PUSH3 0x49B PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1251 MSTORE POP DUP1 PUSH2 0x1293 MSTORE POP DUP1 PUSH2 0x1272 MSTORE POP PUSH2 0x177C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD5391393 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x621 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x64F JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x527 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x553 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x59C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x50F JUMPI DUP1 PUSH4 0x9711715A EQ PUSH2 0x517 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x51F JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x458 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x47E JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x4BD JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x42966C68 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x7028E2CD EQ PUSH2 0x3FE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x42C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x35D JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3B5 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x2EC JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x337 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x29C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E7 PUSH2 0x657 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x221 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x24E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0x722 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x728 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x77C JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x791 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33F PUSH2 0x810 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0x819 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x828 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x893 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x968 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x975 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x999 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9B4 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9EA JUMP JUMPDEST PUSH2 0x4A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9F5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA14 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0xA47 JUMP JUMPDEST PUSH2 0x335 PUSH2 0xAC6 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0xB91 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB96 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x569 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBCF JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xBF3 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCD2 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xD43 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0xD6E JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x701 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x701 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6E4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x718 CALLER DUP5 DUP5 PUSH2 0xDF3 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x735 DUP5 DUP5 DUP5 PUSH2 0xE55 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x772 SWAP2 DUP7 SWAP2 PUSH2 0x76D SWAP1 DUP7 PUSH2 0x19E PUSH2 0xF3F JUMP JUMPDEST PUSH2 0xDF3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x7AD SWAP1 CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x802 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16B9 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x80C DUP3 DUP3 PUSH2 0xF55 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x823 PUSH2 0xD6E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x889 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1718 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x80C DUP3 DUP3 PUSH2 0xFAE JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x718 SWAP2 DUP6 SWAP1 PUSH2 0x76D SWAP1 DUP7 PUSH2 0x1007 JUMP JUMPDEST PUSH2 0x8F3 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x95E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4D494E54455200000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x80C DUP3 DUP3 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x972 CALLER DUP3 PUSH2 0x10BA JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x5FDBD35E8DA83EE755D5E62A539E5ED7F47126ABEDE0B8B10F9EA43DC6EED07F DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9CE DUP3 PUSH2 0x1A1 PUSH2 0x9C7 DUP7 CALLER PUSH2 0xD43 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xF3F JUMP JUMPDEST SWAP1 POP PUSH2 0x9DB DUP4 CALLER DUP4 PUSH2 0xDF3 JUMP JUMPDEST PUSH2 0x9E5 DUP4 DUP4 PUSH2 0x10BA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71C DUP3 PUSH2 0xA14 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xA0D SWAP1 DUP4 PUSH2 0x1176 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xA0D SWAP1 DUP4 PUSH2 0x1192 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x701 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x701 JUMP JUMPDEST PUSH2 0xAF0 PUSH32 0x5FDBD35E8DA83EE755D5E62A539E5ED7F47126ABEDE0B8B10F9EA43DC6EED07F CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0xB5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F534E415053484F545445520000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x8030E83B04D87BEF53480E26263266D6CA66863AA8506ACA6F2559D18AA1CB67 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x718 SWAP2 DUP6 SWAP1 PUSH2 0x76D SWAP1 DUP7 PUSH2 0x19F PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x718 CALLER DUP5 DUP5 PUSH2 0xE55 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x71C SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xC22 DUP13 PUSH2 0xA14 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xC99 DUP9 DUP3 PUSH2 0xC90 DUP8 DUP8 DUP8 PUSH2 0x11B7 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0x11F6 JUMP JUMPDEST PUSH2 0xCA4 DUP9 DUP9 DUP9 PUSH2 0xDF3 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xCEE SWAP1 CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x889 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16E8 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x823 PUSH2 0x124D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD84 DUP4 DUP4 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0xDEB JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x71C JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x71C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xE6C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x130B JUMP JUMPDEST PUSH2 0xE83 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x130B JUMP JUMPDEST PUSH2 0xE8E DUP4 DUP4 DUP4 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xEB4 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xEE3 SWAP1 DUP3 PUSH2 0x1007 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF4E DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x130B JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xF6D SWAP1 DUP3 PUSH2 0xD78 JUMP JUMPDEST ISZERO PUSH2 0x80C JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xFC6 SWAP1 DUP3 PUSH2 0x1319 JUMP JUMPDEST ISZERO PUSH2 0x80C JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xA0D DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x130B JUMP JUMPDEST PUSH2 0x1025 PUSH1 0x0 DUP4 DUP4 PUSH2 0x9E5 JUMP JUMPDEST PUSH2 0x103F PUSH2 0x103A DUP3 PUSH2 0x1034 PUSH2 0x722 JUMP JUMPDEST SWAP1 PUSH2 0x1007 JUMP JUMPDEST PUSH2 0x1493 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1062 SWAP1 DUP3 PUSH2 0x1007 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x10D1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x130B JUMP JUMPDEST PUSH2 0x10DD DUP3 PUSH1 0x0 DUP4 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1103 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1131 PUSH2 0x103A DUP3 PUSH2 0x112B PUSH2 0x722 JUMP JUMPDEST SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1188 SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0x130B JUMP JUMPDEST PUSH2 0xA0D DUP4 DUP4 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1201 DUP6 PUSH2 0x14D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1217 PUSH2 0x1211 DUP8 DUP4 DUP8 PUSH2 0x153A JUMP JUMPDEST DUP4 PUSH2 0x130B JUMP JUMPDEST PUSH2 0x1226 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x130B JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x12BA PUSH2 0x1625 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x80C JUMPI PUSH2 0x80C DUP2 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1489 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x13FB JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x137A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x13A3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x1406 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x71C SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x71C JUMP JUMPDEST PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA0D DUP4 DUP4 PUSH1 0x1 PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x14B7 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14DD PUSH2 0x124D JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x154C DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x130B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1619 JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x972 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID COINBASE PUSH4 0x63657373 NUMBER PUSH16 0x6E74726F6C3A2073656E646572206D75 PUSH20 0x7420626520616E2061646D696E20746F20677261 PUSH15 0x74416363657373436F6E74726F6C3A KECCAK256 PUSH20 0x656E646572206D75737420626520616E2061646D PUSH10 0x6E20746F207265766F6B PUSH6 0x416363657373 NUMBER PUSH16 0x6E74726F6C3A2063616E206F6E6C7920 PUSH19 0x656E6F756E636520726F6C657320666F722073 PUSH6 0x6C66A2646970 PUSH7 0x735822122048AD PUSH21 0xF0D0E050B9891CC0579E4AB63CEC31EF728DAEB076 PUSH3 0xC8785D PUSH26 0x4E368D64736F6C63430007010033000000000000000000000000 ","sourceMap":"991:876:124:-:0;;;1254:301;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1254:301:124;;;;;;;;;;-1:-1:-1;1254:301:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1254:301:124;;;;;;;;;;-1:-1:-1;1254:301:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1385:4;1301::61;2020:280:58;;;;;;;;;;;;;-1:-1:-1;;;2020:280:58;;;1359:4:124;1365:6;2126:5:59;2118;:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2141:17:59;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:59;:14;;-1:-1:-1;;2168:14:59;2180:2;2168:14;;;;;;2100:22:58;;;;;;;2085:37;;2150:25;;;;;;;;;;2132:43;;-1:-1:-1;2198:95:58;2185:108;;1401:18:124::2;::::0;-1:-1:-1;1401:14:124::2;:18::i;:::-;1429:37;1934:4:123;1460:5:124::0;1429:10:::2;:37::i;:::-;1476:30;1118:24;1500:5:::0;1476:10:::2;:30::i;:::-;1516:32;1188:26;1542:5:::0;1516:10:::2;:32::i;:::-;1254:301:::0;;;991:876;;10570:88:59;10630:9;:21;;-1:-1:-1;;10630:21:59;;;;;;;;;;;;10570:88::o;6821:110:123:-;6899:25;6910:4;6916:7;6899:10;:25::i;:::-;6821:110;;:::o;7258:182::-;7331:6;:12;;;;;;;;;;;:33;;7356:7;;7331:24;;;;;:33;;:::i;:::-;7327:107;;;7385:38;;7412:10;;-1:-1:-1;;;;;7385:38:123;;;7397:4;;7385:38;;;;;7258:182;;:::o;1851:410:62:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:62;;;;;;;;-1:-1:-1;1978:23:62;;;;;;;;;;;;-1:-1:-1;;;;;;1978:23:62;-1:-1:-1;;;;;1978:23:62;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:62;1937:318;1851:410;;;;:::o;3977:134::-;-1:-1:-1;;;;;4080:19:62;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;991:876:124:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;991:876:124;;;-1:-1:-1;991:876:124;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"5935":[{"length":32,"start":4722}],"5937":[{"length":32,"start":4755}],"5939":[{"length":32,"start":4689}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101da5760003560e01c80637ecebe0011610104578063a457c2d7116100a2578063d539139311610071578063d5391393146105ed578063d547741f146105f5578063dd62ed3e14610621578063ed24911d1461064f576101da565b8063a457c2d714610527578063a9059cbb14610553578063ca15c8731461057f578063d505accf1461059c576101da565b806391d14854116100de57806391d14854146104e357806395d89b411461050f5780639711715a14610517578063a217fddf1461051f576101da565b80637ecebe00146104585780639010d07c1461047e57806390193b7c146104bd576101da565b80633644e5151161017c57806342966c681161014b57806342966c68146103e15780637028e2cd146103fe57806370a082311461040657806379cc67901461042c576101da565b80633644e5151461035557806336568abe1461035d578063395093511461038957806340c10f19146103b5576101da565b806323b872dd116101b857806323b872dd146102b6578063248a9ca3146102ec5780632f2ff15d14610309578063313ce56714610337576101da565b806306fdde03146101df578063095ea7b31461025c57806318160ddd1461029c575b600080fd5b6101e7610657565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102886004803603604081101561027257600080fd5b506001600160a01b03813516906020013561070b565b604080519115158252519081900360200190f35b6102a4610722565b60408051918252519081900360200190f35b610288600480360360608110156102cc57600080fd5b506001600160a01b03813581169160208101359091169060400135610728565b6102a46004803603602081101561030257600080fd5b503561077c565b6103356004803603604081101561031f57600080fd5b50803590602001356001600160a01b0316610791565b005b61033f610810565b6040805160ff9092168252519081900360200190f35b6102a4610819565b6103356004803603604081101561037357600080fd5b50803590602001356001600160a01b0316610828565b6102886004803603604081101561039f57600080fd5b506001600160a01b038135169060200135610893565b610335600480360360408110156103cb57600080fd5b506001600160a01b0381351690602001356108c9565b610335600480360360208110156103f757600080fd5b5035610968565b6102a4610975565b6102a46004803603602081101561041c57600080fd5b50356001600160a01b0316610999565b6103356004803603604081101561044257600080fd5b506001600160a01b0381351690602001356109b4565b6102a46004803603602081101561046e57600080fd5b50356001600160a01b03166109ea565b6104a16004803603604081101561049457600080fd5b50803590602001356109f5565b604080516001600160a01b039092168252519081900360200190f35b6102a4600480360360208110156104d357600080fd5b50356001600160a01b0316610a14565b610288600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a2f565b6101e7610a47565b610335610ac6565b6102a4610b91565b6102886004803603604081101561053d57600080fd5b506001600160a01b038135169060200135610b96565b6102886004803603604081101561056957600080fd5b506001600160a01b038135169060200135610bcf565b6102a46004803603602081101561059557600080fd5b5035610bdc565b610335600480360360e08110156105b257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610bf3565b6102a4610cae565b6103356004803603604081101561060b57600080fd5b50803590602001356001600160a01b0316610cd2565b6102a46004803603604081101561063757600080fd5b506001600160a01b0381358116916020013516610d43565b6102a4610d6e565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107015780601f106106d657610100808354040283529160200191610701565b820191906000526020600020905b8154815290600101906020018083116106e457829003601f168201915b5050505050905090565b6000610718338484610df3565b5060015b92915050565b60035490565b6000610735848484610e55565b6001600160a01b03841660009081526002602090815260408083203380855292529091205461077291869161076d908661019e610f3f565b610df3565b5060019392505050565b60009081526020819052604090206002015490565b6000828152602081905260409020600201546107ad9033610a2f565b610802576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806116b9602f913960400191505060405180910390fd5b61080c8282610f55565b5050565b60065460ff1690565b6000610823610d6e565b905090565b6001600160a01b0381163314610889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611718602f913960400191505060405180910390fd5b61080c8282610fae565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161071891859061076d9086611007565b6108f37f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610a2f565b61095e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e54455200000000000000000000000000000000000000000000604482015290519081900360640190fd5b61080c8282611019565b61097233826110ba565b50565b7f5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f81565b6001600160a01b031660009081526001602052604090205490565b60006109ce826101a16109c78633610d43565b9190610f3f565b90506109db833383610df3565b6109e583836110ba565b505050565b600061071c82610a14565b6000828152602081905260408120610a0d9083611176565b9392505050565b6001600160a01b031660009081526007602052604090205490565b6000828152602081905260408120610a0d9083611192565b60058054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107015780601f106106d657610100808354040283529160200191610701565b610af07f5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f33610a2f565b610b5b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f534e415053484f545445520000000000000000000000000000000000604482015290519081900360640190fd5b604080516000815290517f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb679181900360200190a1565b600081565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161071891859061076d908661019f610f3f565b6000610718338484610e55565b600081815260208190526040812061071c906111b3565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610c228c610a14565b8960405160200180878152602001866001600160a01b03168152602001856001600160a01b031681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610c998882610c908787876111b7565b886101f86111f6565b610ca4888888610df3565b5050505050505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b600082815260208190526040902060020154610cee9033610a2f565b610889576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806116e86030913960400191505060405180910390fd5b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600061082361124d565b6000610d848383611192565b610deb57508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386169081179091558554908252828601909352604090209190915561071c565b50600061071c565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610e6c6001600160a01b038416151561019861130b565b610e836001600160a01b038316151561019961130b565b610e8e8383836109e5565b6001600160a01b038316600090815260016020526040902054610eb490826101a0610f3f565b6001600160a01b038085166000908152600160205260408082209390935590841681522054610ee39082611007565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610f4e848411158361130b565b5050900390565b6000828152602081905260409020610f6d9082610d78565b1561080c5760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000828152602081905260409020610fc69082611319565b1561080c5760405133906001600160a01b0383169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000828201610a0d848210158361130b565b611025600083836109e5565b61103f61103a82611034610722565b90611007565b611493565b6001600160a01b0382166000908152600160205260409020546110629082611007565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6110d16001600160a01b038316151561019b61130b565b6110dd826000836109e5565b6001600160a01b03821660009081526001602052604090205461110390826101b2610f3f565b6001600160a01b03831660009081526001602052604090205561113161103a8261112b610722565b90611498565b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b8154600090611188908310606461130b565b610a0d83836114a6565b6001600160a01b031660009081526001919091016020526040902054151590565b5490565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000611201856114d3565b905061121761121187838761153a565b8361130b565b611226428410156101b861130b565b5050506001600160a01b039092166000908152600760205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006112ba611625565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b8161080c5761080c81611629565b6001600160a01b038116600090815260018301602052604081205480156114895783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191018082146113fb57600086600001828154811061137a57fe5b60009182526020909120015487546001600160a01b03909116915081908890859081106113a357fe5b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0394851617905592909116815260018881019092526040902090830190555b855486908061140657fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559092019092556001600160a01b038716825260018881019091526040822091909155935061071c92505050565b600091505061071c565b600355565b6000610a0d83836001610f3f565b60008260000182815481106114b757fe5b6000918252602090912001546001600160a01b03169392505050565b60006114dd61124d565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061154c82516041146101b961130b565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156115c5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906116195750876001600160a01b0316816001600160a01b0316145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610972917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a264697066735822122048ad74f0d0e050b9891cc0579e4ab63cec31ef728daeb07662c8785d794e368d64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD5391393 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x621 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x64F JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x527 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x553 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x59C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x50F JUMPI DUP1 PUSH4 0x9711715A EQ PUSH2 0x517 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x51F JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x458 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x47E JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x4BD JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x42966C68 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x7028E2CD EQ PUSH2 0x3FE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x42C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x35D JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3B5 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x2EC JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x337 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x29C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E7 PUSH2 0x657 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x221 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x24E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0x722 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x728 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x77C JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x791 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33F PUSH2 0x810 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0x819 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x828 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x893 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x968 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x975 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x999 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9B4 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9EA JUMP JUMPDEST PUSH2 0x4A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9F5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA14 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0xA47 JUMP JUMPDEST PUSH2 0x335 PUSH2 0xAC6 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0xB91 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB96 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x569 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBCF JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xBF3 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCD2 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xD43 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0xD6E JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x701 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x701 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6E4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x718 CALLER DUP5 DUP5 PUSH2 0xDF3 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x735 DUP5 DUP5 DUP5 PUSH2 0xE55 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x772 SWAP2 DUP7 SWAP2 PUSH2 0x76D SWAP1 DUP7 PUSH2 0x19E PUSH2 0xF3F JUMP JUMPDEST PUSH2 0xDF3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x7AD SWAP1 CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x802 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16B9 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x80C DUP3 DUP3 PUSH2 0xF55 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x823 PUSH2 0xD6E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x889 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1718 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x80C DUP3 DUP3 PUSH2 0xFAE JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x718 SWAP2 DUP6 SWAP1 PUSH2 0x76D SWAP1 DUP7 PUSH2 0x1007 JUMP JUMPDEST PUSH2 0x8F3 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x95E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4D494E54455200000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x80C DUP3 DUP3 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x972 CALLER DUP3 PUSH2 0x10BA JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x5FDBD35E8DA83EE755D5E62A539E5ED7F47126ABEDE0B8B10F9EA43DC6EED07F DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9CE DUP3 PUSH2 0x1A1 PUSH2 0x9C7 DUP7 CALLER PUSH2 0xD43 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xF3F JUMP JUMPDEST SWAP1 POP PUSH2 0x9DB DUP4 CALLER DUP4 PUSH2 0xDF3 JUMP JUMPDEST PUSH2 0x9E5 DUP4 DUP4 PUSH2 0x10BA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71C DUP3 PUSH2 0xA14 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xA0D SWAP1 DUP4 PUSH2 0x1176 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xA0D SWAP1 DUP4 PUSH2 0x1192 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x701 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x701 JUMP JUMPDEST PUSH2 0xAF0 PUSH32 0x5FDBD35E8DA83EE755D5E62A539E5ED7F47126ABEDE0B8B10F9EA43DC6EED07F CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0xB5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F534E415053484F545445520000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x8030E83B04D87BEF53480E26263266D6CA66863AA8506ACA6F2559D18AA1CB67 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x718 SWAP2 DUP6 SWAP1 PUSH2 0x76D SWAP1 DUP7 PUSH2 0x19F PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x718 CALLER DUP5 DUP5 PUSH2 0xE55 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x71C SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xC22 DUP13 PUSH2 0xA14 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xC99 DUP9 DUP3 PUSH2 0xC90 DUP8 DUP8 DUP8 PUSH2 0x11B7 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0x11F6 JUMP JUMPDEST PUSH2 0xCA4 DUP9 DUP9 DUP9 PUSH2 0xDF3 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xCEE SWAP1 CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x889 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16E8 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x823 PUSH2 0x124D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD84 DUP4 DUP4 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0xDEB JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x71C JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x71C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xE6C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x130B JUMP JUMPDEST PUSH2 0xE83 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x130B JUMP JUMPDEST PUSH2 0xE8E DUP4 DUP4 DUP4 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xEB4 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xEE3 SWAP1 DUP3 PUSH2 0x1007 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF4E DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x130B JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xF6D SWAP1 DUP3 PUSH2 0xD78 JUMP JUMPDEST ISZERO PUSH2 0x80C JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xFC6 SWAP1 DUP3 PUSH2 0x1319 JUMP JUMPDEST ISZERO PUSH2 0x80C JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xA0D DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x130B JUMP JUMPDEST PUSH2 0x1025 PUSH1 0x0 DUP4 DUP4 PUSH2 0x9E5 JUMP JUMPDEST PUSH2 0x103F PUSH2 0x103A DUP3 PUSH2 0x1034 PUSH2 0x722 JUMP JUMPDEST SWAP1 PUSH2 0x1007 JUMP JUMPDEST PUSH2 0x1493 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1062 SWAP1 DUP3 PUSH2 0x1007 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x10D1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x130B JUMP JUMPDEST PUSH2 0x10DD DUP3 PUSH1 0x0 DUP4 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1103 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1131 PUSH2 0x103A DUP3 PUSH2 0x112B PUSH2 0x722 JUMP JUMPDEST SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1188 SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0x130B JUMP JUMPDEST PUSH2 0xA0D DUP4 DUP4 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1201 DUP6 PUSH2 0x14D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1217 PUSH2 0x1211 DUP8 DUP4 DUP8 PUSH2 0x153A JUMP JUMPDEST DUP4 PUSH2 0x130B JUMP JUMPDEST PUSH2 0x1226 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x130B JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x12BA PUSH2 0x1625 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x80C JUMPI PUSH2 0x80C DUP2 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1489 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x13FB JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x137A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x13A3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x1406 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x71C SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x71C JUMP JUMPDEST PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA0D DUP4 DUP4 PUSH1 0x1 PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x14B7 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14DD PUSH2 0x124D JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x154C DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x130B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1619 JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x972 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID COINBASE PUSH4 0x63657373 NUMBER PUSH16 0x6E74726F6C3A2073656E646572206D75 PUSH20 0x7420626520616E2061646D696E20746F20677261 PUSH15 0x74416363657373436F6E74726F6C3A KECCAK256 PUSH20 0x656E646572206D75737420626520616E2061646D PUSH10 0x6E20746F207265766F6B PUSH6 0x416363657373 NUMBER PUSH16 0x6E74726F6C3A2063616E206F6E6C7920 PUSH19 0x656E6F756E636520726F6C657320666F722073 PUSH6 0x6C66A2646970 PUSH7 0x735822122048AD PUSH21 0xF0D0E050B9891CC0579E4AB63CEC31EF728DAEB076 PUSH3 0xC8785D PUSH26 0x4E368D64736F6C63430007010033000000000000000000000000 ","sourceMap":"991:876:124:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4857:164:59;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5488:386:59;;;;;;;;;;;;;;;;;:::i;4521:112:123:-;;;;;;;;;;;;;;;;-1:-1:-1;4521:112:123;;:::i;4883:221::-;;;;;;;;;;;;;;;;-1:-1:-1;4883:221:123;;;;;;-1:-1:-1;;;;;4883:221:123;;:::i;:::-;;3156:81:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2243:113:61;;;:::i;6053:203:123:-;;;;;;;;;;;;;;;;-1:-1:-1;6053:203:123;;;;;;-1:-1:-1;;;;;6053:203:123;;:::i;6269:211:59:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6269:211:59;;;;;;;;:::i;1561:164:124:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1561:164:124;;;;;;;;:::i;473:87:60:-;;;;;;;;;;;;;;;;-1:-1:-1;473:87:60;;:::i;1148:66:124:-;;;:::i;4022:117:59:-;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:59;-1:-1:-1;;;;;4022:117:59;;:::i;866:283:60:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;866:283:60;;;;;;;;:::i;2006:113:61:-;;;;;;;;;;;;;;;;-1:-1:-1;2006:113:61;-1:-1:-1;;;;;2006:113:61;;:::i;4204:136:123:-;;;;;;;;;;;;;;;;-1:-1:-1;4204:136:123;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;4204:136:123;;;;;;;;;;;;;;1303:121:47;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:47;-1:-1:-1;;;;;1303:121:47;;:::i;3112:137:123:-;;;;;;;;;;;;;;;;-1:-1:-1;3112:137:123;;;;;;-1:-1:-1;;;;;3112:137:123;;:::i;2448:85:59:-;;;:::i;1731:134:124:-;;;:::i;1889:49:123:-;;;:::i;6967:312:59:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6967:312:59;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4342:170:59;;;;;;;;:::i;3417:125:123:-;;;;;;;;;;;;;;;;-1:-1:-1;3417:125:123;;:::i;1437:508:61:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1437:508:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1080:62:124:-;;;:::i;5338:224:123:-;;;;;;;;;;;;;;;;-1:-1:-1;5338:224:123;;;;;;-1:-1:-1;;;;;5338:224:123;;:::i;4570:149:59:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4570:149:59;;;;;;;;;;:::i;1184:113:47:-;;;:::i;2254:81:59:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:59;4857:164;;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;-1:-1:-1;;;;;5752:19:59;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:31;5752:35:59;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:59;5488:386;;;;;:::o;4521:112:123:-;4578:7;4604:12;;;;;;;;;;:22;;;;4521:112::o;4883:221::-;4974:6;:12;;;;;;;;;;:22;;;4966:43;;4998:10;4966:7;:43::i;:::-;4958:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5072:25;5083:4;5089:7;5072:10;:25::i;:::-;4883:221;;:::o;3156:81:59:-;3221:9;;;;3156:81;:::o;2243:113:61:-;2303:7;2329:20;:18;:20::i;:::-;2322:27;;2243:113;:::o;6053:203:123:-;-1:-1:-1;;;;;6139:21:123;;6150:10;6139:21;6131:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6223:26;6235:4;6241:7;6223:11;:26::i;6269:211:59:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6403:32:59;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;1561:164:124:-;1637:32;1118:24;1658:10;1637:7;:32::i;:::-;1629:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:24;1700:9;1711:6;1694:5;:24::i;473:87:60:-;528:25;534:10;546:6;528:5;:25::i;:::-;473:87;:::o;1148:66:124:-;1188:26;1148:66;:::o;4022:117:59:-;-1:-1:-1;;;;;4114:18:59;4088:7;4114:18;;;:9;:18;;;;;;;4022:117::o;866:283:60:-;942:26;971:79;1006:6;11299:3:31;971:30:60;981:7;990:10;971:9;:30::i;:::-;:34;:79;:34;:79::i;:::-;942:108;;1061:49;1070:7;1079:10;1091:18;1061:8;:49::i;:::-;1120:22;1126:7;1135:6;1120:5;:22::i;:::-;866:283;;;:::o;2006:113:61:-;2067:7;2093:19;2106:5;2093:12;:19::i;4204:136:123:-;4277:7;4303:12;;;;;;;;;;:30;;4327:5;4303:23;:30::i;:::-;4296:37;4204:136;-1:-1:-1;;;4204:136:123:o;1303:121:47:-;-1:-1:-1;;;;;1398:19:47;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;3112:137:123:-;3181:4;3204:12;;;;;;;;;;:38;;3234:7;3204:29;:38::i;2448:85:59:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;1731:134:124;1778:34;1188:26;1801:10;1778:7;:34::i;:::-;1770:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1847:11;;;1856:1;1847:11;;;;;;;;;;;;;1731:134::o;1889:49:123:-;1934:4;1889:49;:::o;6967:312:59:-;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7143:32:59;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:31;7143:36:59;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;3417:125:123:-;3480:7;3506:12;;;;;;;;;;:29;;:27;:29::i;1437:508:61:-;1645:18;921:109;1718:5;1725:7;1734:5;1741:19;1754:5;1741:12;:19::i;:::-;1762:8;1689:82;;;;;;;;;;;-1:-1:-1;;;;;1689:82:61;;;;;;-1:-1:-1;;;;;1689:82:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:115;;;;;;1645:136;;1792:104;1814:5;1821:10;1833:26;1851:1;1854;1857;1833:17;:26::i;:::-;1861:8;13190:3:31;1792:21:61;:104::i;:::-;1907:31;1916:5;1923:7;1932:5;1907:8;:31::i;:::-;1437:508;;;;;;;;:::o;1080:62:124:-;1118:24;1080:62;:::o;5338:224:123:-;5430:6;:12;;;;;;;;;;:22;;;5422:43;;5454:10;5422:7;:43::i;:::-;5414:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4570:149:59;-1:-1:-1;;;;;4685:18:59;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1184:113:47:-;1244:7;1270:20;:18;:20::i;1851:410:62:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:62;;;;;;;;-1:-1:-1;1978:23:62;;;;;;;;;;;;;;-1:-1:-1;;;;;1978:23:62;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:62;2232:12;;10034:213:59;-1:-1:-1;;;;;10157:18:59;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;-1:-1:-1;;;;;7889:20:59;;;;10687:3:31;7880:8:59;:71::i;:::-;7961:72;-1:-1:-1;;;;;7970:23:59;;;;10755:3:31;7961:8:59;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;-1:-1:-1;;;;;8122:17:59;;;;;;:9;:17;;;;;;:68;;8144:6;11233:3:31;8122:21:59;:68::i;:::-;-1:-1:-1;;;;;8102:17:59;;;;;;;:9;:17;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;-1:-1:-1;;;;;8200:20:59;;;;;;;:9;:20;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:65:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:65;;;1816:206::o;7258:182:123:-;7331:6;:12;;;;;;;;;;:33;;7356:7;7331:24;:33::i;:::-;7327:107;;;7385:38;;7412:10;;-1:-1:-1;;;;;7385:38:123;;;7397:4;;7385:38;;;;;7258:182;;:::o;7446:186::-;7520:6;:12;;;;;;;;;;:36;;7548:7;7520:27;:36::i;:::-;7516:110;;;7577:38;;7604:10;;-1:-1:-1;;;;;7577:38:123;;;7589:4;;7577:38;;;;;7446:186;;:::o;966:167:65:-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;8583:297:59:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;-1:-1:-1;;;;;8791:18:59;;;;;;:9;:18;;;;;;:30;;8814:6;8791:22;:30::i;:::-;-1:-1:-1;;;;;8770:18:59;;;;;;:9;:18;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;-1:-1:-1;;;;;9284:21:59;;;;10885:3:31;9275:8:59;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;-1:-1:-1;;;;;9435:18:59;;;;;;:9;:18;;;;;;:65;;9458:6;12329:3:31;9435:22:59;:65::i;:::-;-1:-1:-1;;;;;9414:18:59;;;;;;:9;:18;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;-1:-1:-1;;;;;9567:37:59;;;;;;;;;;;;9200:411;;:::o;4648:199:62:-;4750:18;;4722:7;;4741:58;;4750:26;-1:-1:-1;5662:3:31;4741:8:62;:58::i;:::-;4816:24;4829:3;4834:5;4816:12;:24::i;3977:134::-;-1:-1:-1;;;;;4080:19:62;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;4192:114::-;4281:18;;4192:114::o;3803:419:47:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:47;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:47:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:31;2487:8:47;:63::i;:::-;-1:-1:-1;;;;;;;;2884:19:47;;;;;;;:10;:19;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:47:o;2386:188:58:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2483:83:58;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;2429:1467:62:-;-1:-1:-1;;;;;2639:19:62;;2502:4;2639:19;;;:12;;;:19;;;;;;2673:15;;2669:1221;;3114:18;;3066:14;;;;;3114:22;3236:26;;;3232:389;;3282:17;3302:3;:11;;3314:9;3302:22;;;;;;;;;;;;;;;;;;3424:26;;-1:-1:-1;;;;;3302:22:62;;;;-1:-1:-1;3302:22:62;;3424:3;;3436:13;;3424:26;;;;;;;;;;;;;;;;;;:38;;;;-1:-1:-1;;;;;3424:38:62;;;;;;3536:23;;;;;;-1:-1:-1;3536:12:62;;;:23;;;;;;3562:17;;;3536:43;;3232:389;3699:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3791:19:62;;;;3699:17;3791:12;;;:19;;;;;;3784:26;;;;3699:17;-1:-1:-1;3825:11:62;;-1:-1:-1;;;3825:11:62;2669:1221;3874:5;3867:12;;;;;3870:94:59;3937:12;:20;3870:94::o;1404:121:65:-;1462:7;1488:30;1492:1;1495;5194::31;1488:3:65;:30::i;5212:135:62:-;5296:7;5322:3;:11;;5334:5;5322:18;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5322:18:62;;5212:135;-1:-1:-1;;;5212:135:62:o;3199:183:58:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:47:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:31;3082:8:47;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:47;;;;;;-1:-1:-1;;;;;;;3728:30:47;;;;;;:61;;;3782:7;-1:-1:-1;;;;;3762:27:47;:16;-1:-1:-1;;;;;3762:27:47;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:47:o;3433:187:58:-;3595:9;;3570:44::o;1459:126:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DOMAIN_SEPARATOR()":"3644e515","MINTER_ROLE()":"d5391393","SNAPSHOT_ROLE()":"7028e2cd","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","snapshot()":"9711715a","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Snapshot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNAPSHOT_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestBalancerToken.sol\":\"TestBalancerToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/test/TestAccessControl.sol\":{\"keccak256\":\"0xd7e1e3bdde3a149dfc57de01e4d2fef1a3624af436ae95dfe444d8bfb25772b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1f209648a170f1cb287cc462a78a1733e027c14026bb052a4b8eb372c97d665\",\"dweb:/ipfs/QmYCg7YsmwzAzxLChiek7kFysvqNvSTi6wCeGvwGiYCksT\"]},\"contracts/test/TestBalancerToken.sol\":{\"keccak256\":\"0x42c98a8bdc6fdad15f90bb2944c47afc1cbdb5b347047ff05301e73fd7485385\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1a87bf1323acdbb16eaf4615e1ee37e8e4e7f40a63a2c681e613ee88a57d151f\",\"dweb:/ipfs/QmRX15CoExSnvQB6SXrBC2ee48nfpb3JzvVPXAbdj99Jn9\"]}},\"version\":1}"}},"contracts/test/TestFeeDistributor.sol":{"TestFeeDistributor":{"abi":[{"inputs":[{"internalType":"contract IVotingEscrow","name":"votingEscrow","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"OnlyCallerOptIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastCheckpointTimestamp","type":"uint256"}],"name":"TokenCheckpointed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"userTokenTimeCursor","type":"uint256"}],"name":"TokensClaimed","type":"event"},{"inputs":[],"name":"checkpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"checkpointToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"checkpointTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkpointUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"claimToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"claimTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"depositTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenLastBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getTokensDistributedInWeek","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getTotalSupplyAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getUserBalanceAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserLastEpochCheckpointed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getUserTokenTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isOnlyCallerEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setOnlyCallerCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"setOnlyCallerCheckWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101206040523480156200001257600080fd5b50604051620027af380380620027af8339810160408190526200003591620001d5565b604080518082018252600e81526d2332b2a234b9ba3934b13aba37b960911b602080830191825283518085019094526001808552603160f81b9185019182529251909120608052915190912060a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526002556001600160601b0319606083901b1660e0528181620000ca81620001c9565b90506000620000d942620001c9565b905080821015620001075760405162461bcd60e51b8152600401620000fe9062000228565b60405180910390fd5b80821415620001b55760405163bd85b03960e01b81526000906001600160a01b0385169063bd85b0399062000141908590600401620002a5565b60206040518083038186803b1580156200015a57600080fd5b505afa1580156200016f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019591906200020f565b11620001b55760405162461bcd60e51b8152600401620000fe906200025d565b5061010081905260035550620002ae915050565b62093a80908190040290565b60008060408385031215620001e8578182fd5b82516001600160a01b0381168114620001ff578283fd5b6020939093015192949293505050565b60006020828403121562000221578081fd5b5051919050565b6020808252818101527f43616e6e6f74207374617274206265666f72652063757272656e74207765656b604082015260600190565b60208082526028908201527f5a65726f20746f74616c20737570706c7920726573756c747320696e206c6f736040820152677420746f6b656e7360c01b606082015260800190565b90815260200190565b60805160a05160c05160e05160601c610100516124916200031e6000398061097b5280610acd5280610b325280610e8852508061035c52806108aa5280610a3d5280610c3852806113a1528061145b52806118955250806117665250806117a852508061178752506124916000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806388720467116100e3578063ca31879d1161008c578063e811f44b11610066578063e811f44b1461032c578063ed24911d1461033f578063fcaa54ee146103475761018d565b8063ca31879d146102f3578063d3dc4ca114610306578063de681faf146103195761018d565b8063a1648aa5116100bd578063a1648aa5146102b8578063acbc1428146102d8578063c2c4c5c1146102eb5761018d565b8063887204671461027257806390193b7c14610292578063905d10ac146102a55761018d565b80633902b9bc116101455780638050a7ee1161011f5780638050a7ee1461024457806382aa5ad414610257578063876e69a11461025f5761018d565b80633902b9bc1461020b5780634f3c50901461021e5780637b8d6221146102315761018d565b80632308805b116101765780632308805b146101c5578063286d5e7f146101e5578063338b5dea146101f85761018d565b806308b0308a1461019257806314866e08146101b0575b600080fd5b61019a61035a565b6040516101a79190612187565b60405180910390f35b6101c36101be366004611dec565b61037e565b005b6101d86101d3366004611dec565b61039a565b6040516101a7919061225f565b6101d86101f3366004611dec565b6103db565b6101c3610206366004611f62565b61041c565b6101c3610219366004611dec565b61045b565b6101d861022c366004612105565b61046e565b6101c361023f366004611fcd565b610480565b6101d8610252366004611f2a565b610556565b6101d861056b565b6101d861026d366004611dec565b610571565b610285610280366004611e08565b6105a2565b6040516101a7919061221c565b6101d86102a0366004611dec565b610685565b6101c36102b3366004611f8d565b6106a0565b6102cb6102c6366004611dec565b6106d5565b6040516101a79190612254565b6101d86102e6366004611dec565b6106f3565b6101c3610724565b6101d8610301366004611f2a565b61073e565b6101d8610314366004611f62565b610786565b6101d8610327366004611f62565b6107ae565b6101c361033a366004612036565b6107d6565b6101d86107e0565b6101c3610355366004611e5b565b6107ef565b7f000000000000000000000000000000000000000000000000000000000000000090565b610386610860565b61038f81610877565b610397610e06565b50565b6001600160a01b031660009081526005602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b6001600160a01b031660009081526007602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b610424610860565b61042f826000610e0d565b6104446001600160a01b038316333084611210565b61044f826001610e0d565b610457610e06565b5050565b610463610860565b61038f816001610e0d565b60009081526004602052604090205490565b610488610860565b61049283826112b3565b8260005b81811015610546576104c98686838181106104ad57fe5b90506020020160208101906104c29190611dec565b6000610e0d565b61051333308686858181106104da57fe5b905060200201358989868181106104ed57fe5b90506020020160208101906105029190611dec565b6001600160a01b0316929190611210565b61053e86868381811061052257fe5b90506020020160208101906105379190611dec565b6001610e0d565b600101610496565b5050610550610e06565b50505050565b600061056283836112c0565b90505b92915050565b60035490565b6001600160a01b031660009081526007602052604090205468010000000000000000900467ffffffffffffffff1690565b60606105ac610860565b836105b68161133e565b6105be611376565b6105c785610877565b8260608167ffffffffffffffff811180156105e157600080fd5b5060405190808252806020026020018201604052801561060b578160200160208202803683370190505b50905060005b82811015610671576106288787838181106104ad57fe5b6106528888888481811061063857fe5b905060200201602081019061064d9190611dec565b611506565b82828151811061065e57fe5b6020908102919091010152600101610611565b509250505061067e610e06565b9392505050565b6001600160a01b031660009081526020819052604090205490565b6106a8610860565b8060005b818110156106cb576106c384848381811061052257fe5b6001016106ac565b5050610457610e06565b6001600160a01b031660009081526001602052604090205460ff1690565b6001600160a01b031660009081526005602052604090205468010000000000000000900467ffffffffffffffff1690565b61072c610860565b610734611376565b61073c610e06565b565b6000610748610860565b826107528161133e565b61075a611376565b61076384610877565b61076e836000610e0d565b600061077a8585611506565b92505050610565610e06565b6001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6001600160a01b03919091166000908152600860209081526040808320938352929052205490565b61039733826116e2565b60006107ea611762565b905090565b60007fbd291ffccec065968fe20c5f8debdad73ab50837733f357eeae8814178015a90848461081d87610685565b6040516020016108309493929190612268565b6040516020818303038152906040528051906020012090506108568482846101f86117ff565b61055084846116e2565b61087160028054141561019061182c565b60028055565b6040517f010ae7570000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063010ae757906108df908590600401612187565b60206040518083038186803b1580156108f757600080fd5b505afa15801561090b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092f919061211d565b90508061093c5750610397565b6001600160a01b0382166000908152600760205260408120805490916801000000000000000090910467ffffffffffffffff1690816109a9576109a2857f000000000000000000000000000000000000000000000000000000000000000060008761183a565b90506109fc565b4282106109b95750505050610397565b50815470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16601481850311156109fc576109f98583838761183a565b90505b80610a05575060015b610a0d611d63565b6040517f28d09d470000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610a749089908690600401612203565b60806040518083038186803b158015610a8c57600080fd5b505afa158015610aa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac491906120ae565b905082610b98577f00000000000000000000000000000000000000000000000000000000000000004211610b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490612388565b60405180910390fd5b610b637f0000000000000000000000000000000000000000000000000000000000000000610b5e836040015161194e565b61195e565b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff821617855592505b610ba0611d63565b60005b6032811015610d6b5782604001518510158015610bc05750868411155b15610cc75760018401935082915086841115610c085760405180608001604052806000600f0b81526020016000600f0b81526020016000815260200160008152509250610cc2565b6040517f28d09d470000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610c6f908b908890600401612203565b60806040518083038186803b158015610c8757600080fd5b505afa158015610c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbf91906120ae565b92505b610d63565b428510610cd357610d6b565b6000826040015186039050600081846020015102600f0b8460000151600f0b13610cfe576000610d0f565b81846020015102846000015103600f0b5b905080158015610d1e57508886115b15610d3557610d2c4261194e565b96505050610d6b565b6001600160a01b038a1660009081526008602090815260408083208a84529091529020555062093a80909401935b600101610ba3565b505083546fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9290920167ffffffffffffffff90811670010000000000000000000000000000000002929092177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff1668010000000000000000939092169290920217909155505050565b6001600255565b6001600160a01b0382166000908152600560205260408120805490916801000000000000000090910467ffffffffffffffff169081610ee457429150610e524261196a565b83547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff919091161783557f00000000000000000000000000000000000000000000000000000000000000004211610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490612388565b610f36565b814203905083610f36576000610ef98361196a565b610f024261196a565b14905060006201518042610f154261194e565b03109050818015610f24575080155b15610f33575050505050610457565b50505b82547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff16021783556040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038716906370a0823190610fbb903090600401612187565b60206040518083038186803b158015610fd357600080fd5b505afa158015610fe7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100b919061211d565b845490915060009061104490839070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611976565b905080611055575050505050610457565b6fffffffffffffffffffffffffffffffff82111561109f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490612351565b84546fffffffffffffffffffffffffffffffff80841670010000000000000000000000000000000002911617855560006110d88561196a565b6001600160a01b038916600090815260066020526040812091925090815b60148110156111c8578362093a8001925082421015611166578615801561111c57508742145b1561113a576000848152602083905260409020805486019055611161565b8688420386028161114757fe5b600086815260208590526040902080549290910490910190555b6111c8565b8615801561117357508783145b156111915760008481526020839052604090208054860190556111b8565b8688840386028161119e57fe5b600086815260208590526040902080549290910490910190555b91965086925082916001016110f6565b507f9b7f1a85a4c9b4e59e1b6527d9969c50cdfb3a1a467d0c4a51fb0ed8bf07f1308a85896040516111fc93929190612330565b60405180910390a150505050505050505050565b610550846323b872dd60e01b8585856040516024016112319392919061219b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611984565b610457818314606761182c565b6001600160a01b03808316600090815260096020908152604080832093851683529290529081205480156112f5579050610565565b6001600160a01b03808516600090815260076020908152604080832054938716835260059091529020546113369167ffffffffffffffff908116911661195e565b949350505050565b6001600160a01b03811660009081526001602052604090205460ff161561039757610397336001600160a01b0383161461019161182c565b60035460006113844261196a565b90508082118061139357504281145b1561139f57505061073c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c2c4c5c16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156113fa57600080fd5b505af115801561140e573d6000803e3d6000fd5b5050505060005b60148110156114ff578183111561142b576114ff565b6040517fbd85b0390000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd85b0399061149090869060040161225f565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e0919061211d565b60008481526004602052604090205562093a8090920191600101611415565b5050600355565b6001600160a01b03811660009081526005602052604081208161152985856112c0565b6003546001600160a01b0387166000908152600760205260408120549293509161159c9161157691611571919068010000000000000000900467ffffffffffffffff16611a24565b61194e565b84546115979068010000000000000000900467ffffffffffffffff1661196a565b611a24565b6001600160a01b038087166000908152600660209081526040808320938b16835260089091528120929350909190805b6014811015611620578486106115e157611620565b6000868152600460209081526040808320548683528184205492889052922054028161160957fe5b62093a8097909701960491909101906001016115cc565b506001600160a01b03808a166000908152600960209081526040808320938c1683529290522085905580156116d65785546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000808304821684900382160291161786556116986001600160a01b0389168a83611a30565b7fff097c7d8b1957a4ff09ef1361b5fb54dcede3941ba836d0beb9d10bec725de6898983886040516116cd94939291906121da565b60405180910390a15b98975050505050505050565b6001600160a01b0382166000908152600160205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016831515179055517fac9874a7a931a3f5c9f202c6d9cf40de5d21506993c9f9c38ca8265add89584c9061175690849084906121bf565b60405180910390a15050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006117cf611a54565b306040516020016117e495949392919061228e565b60405160208183030381529060405280519060200120905090565b6105508484847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85611a58565b816104575761045781611aaf565b60008282825b60808110156119425781831061185557611942565b6002828401810104611865611d63565b6040517f28d09d470000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906328d09d47906118cc908d908690600401612203565b60806040518083038186803b1580156118e457600080fd5b505afa1580156118f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191c91906120ae565b90508881604001511161193157819450611938565b6001820393505b5050600101611840565b50909695505050505050565b600061056562093a7f830161196a565b80820390821002900390565b62093a80908190040290565b600061056283836001611ad9565b60006060836001600160a01b0316836040516119a09190612135565b6000604051808303816000865af19150503d80600081146119dd576040519150601f19603f3d011682016040523d82523d6000602084013e6119e2565b606091505b509150915060008214156119fa573d6000803e3d6000fd5b610550815160001480611a1c575081806020019051810190611a1c9190612052565b6101a261182c565b80820390821102900390565b611a4f8363a9059cbb60e01b8484604051602401611231929190612203565b505050565b4690565b6000611a6385611aef565b9050611a79611a73878387611b28565b8361182c565b611a88428410156101b861182c565b5050506001600160a01b039092166000908152602081905260409020805460010190555050565b610397817f42414c0000000000000000000000000000000000000000000000000000000000611c16565b6000611ae8848411158361182c565b5050900390565b6000611af9611762565b82604051602001611b0b929190612151565b604051602081830303815290604052805190602001209050919050565b6000611b3c846001600160a01b0316611c91565b15611c04576040517f1626ba7e00000000000000000000000000000000000000000000000000000000808252906001600160a01b03861690631626ba7e90611b8a90879087906004016122ba565b60206040518083038186803b158015611ba257600080fd5b505afa158015611bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bda919061206e565b7fffffffff000000000000000000000000000000000000000000000000000000001614905061067e565b611c0f848484611c97565b905061067e565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b3b151590565b6000611ca982516041146101b961182c565b60208281015160408085015160608601518251600080825295019283905292939092811a91600190611ce2908990859088908890612312565b6020604051602081039080840390855afa158015611d04573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906116d65750876001600160a01b0316816001600160a01b03161498975050505050505050565b60405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525090565b60008083601f840112611da2578182fd5b50813567ffffffffffffffff811115611db9578182fd5b6020830191508360208083028501011115611dd357600080fd5b9250929050565b8051600f81900b811461056557600080fd5b600060208284031215611dfd578081fd5b813561067e81612438565b600080600060408486031215611e1c578182fd5b8335611e2781612438565b9250602084013567ffffffffffffffff811115611e42578283fd5b611e4e86828701611d91565b9497909650939450505050565b600080600060608486031215611e6f578283fd5b8335611e7a81612438565b9250602084810135611e8b8161244d565b9250604085013567ffffffffffffffff80821115611ea7578384fd5b818701915087601f830112611eba578384fd5b813581811115611ec8578485fd5b611ef8847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016123e5565b91508082528884828501011115611f0d578485fd5b808484018584013784848284010152508093505050509250925092565b60008060408385031215611f3c578182fd5b8235611f4781612438565b91506020830135611f5781612438565b809150509250929050565b60008060408385031215611f74578182fd5b8235611f7f81612438565b946020939093013593505050565b60008060208385031215611f9f578182fd5b823567ffffffffffffffff811115611fb5578283fd5b611fc185828601611d91565b90969095509350505050565b60008060008060408587031215611fe2578081fd5b843567ffffffffffffffff80821115611ff9578283fd5b61200588838901611d91565b9096509450602087013591508082111561201d578283fd5b5061202a87828801611d91565b95989497509550505050565b600060208284031215612047578081fd5b813561067e8161244d565b600060208284031215612063578081fd5b815161067e8161244d565b60006020828403121561207f578081fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461067e578182fd5b6000608082840312156120bf578081fd5b6120c960806123e5565b6120d38484611dda565b81526120e28460208501611dda565b602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612116578081fd5b5035919050565b60006020828403121561212e578081fd5b5051919050565b6000825161214781846020870161240c565b9190910192915050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561194257835183529284019291840191600101612238565b901515815260200190565b90815260200190565b9384526001600160a01b0392909216602084015215156040830152606082015260800190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b60008382526040602083015282518060408401526122df81606085016020870161240c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b93845260ff9290921660208401526040830152606082015260800190565b6001600160a01b039390931683526020830191909152604082015260600190565b6020808252601e908201527f4d6178696d756d20746f6b656e2062616c616e63652065786365656465640000604082015260600190565b60208082526024908201527f46656520646973747269627574696f6e20686173206e6f74207374617274656460408201527f2079657400000000000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff8111828210171561240457600080fd5b604052919050565b60005b8381101561242757818101518382015260200161240f565b838111156105505750506000910152565b6001600160a01b038116811461039757600080fd5b801515811461039757600080fdfea26469706673582212202d70ab73116986917a5e903c96ac6fc54acbc4ae72ef90b05c76ae9f48cc9ba164736f6c63430007010033","opcodes":"PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x27AF CODESIZE SUB DUP1 PUSH3 0x27AF DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x1D5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x2332B2A234B9BA3934B13ABA37B9 PUSH1 0x91 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x1 DUP1 DUP6 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP2 DUP6 ADD SWAP2 DUP3 MSTORE SWAP3 MLOAD SWAP1 SWAP2 KECCAK256 PUSH1 0x80 MSTORE SWAP2 MLOAD SWAP1 SWAP2 KECCAK256 PUSH1 0xA0 MSTORE PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0xE0 MSTORE DUP2 DUP2 PUSH3 0xCA DUP2 PUSH3 0x1C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xD9 TIMESTAMP PUSH3 0x1C9 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH3 0x107 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xFE SWAP1 PUSH3 0x228 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 EQ ISZERO PUSH3 0x1B5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xBD85B039 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBD85B039 SWAP1 PUSH3 0x141 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH3 0x2A5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x16F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x195 SWAP2 SWAP1 PUSH3 0x20F JUMP JUMPDEST GT PUSH3 0x1B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xFE SWAP1 PUSH3 0x25D JUMP JUMPDEST POP PUSH2 0x100 DUP2 SWAP1 MSTORE PUSH1 0x3 SSTORE POP PUSH3 0x2AE SWAP2 POP POP JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1E8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1FF JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x221 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x43616E6E6F74207374617274206265666F72652063757272656E74207765656B PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x5A65726F20746F74616C20737570706C7920726573756C747320696E206C6F73 PUSH1 0x40 DUP3 ADD MSTORE PUSH8 0x7420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH2 0x2491 PUSH3 0x31E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x97B MSTORE DUP1 PUSH2 0xACD MSTORE DUP1 PUSH2 0xB32 MSTORE DUP1 PUSH2 0xE88 MSTORE POP DUP1 PUSH2 0x35C MSTORE DUP1 PUSH2 0x8AA MSTORE DUP1 PUSH2 0xA3D MSTORE DUP1 PUSH2 0xC38 MSTORE DUP1 PUSH2 0x13A1 MSTORE DUP1 PUSH2 0x145B MSTORE DUP1 PUSH2 0x1895 MSTORE POP DUP1 PUSH2 0x1766 MSTORE POP DUP1 PUSH2 0x17A8 MSTORE POP DUP1 PUSH2 0x1787 MSTORE POP PUSH2 0x2491 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x88720467 GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0xCA31879D GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE811F44B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xE811F44B EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x33F JUMPI DUP1 PUSH4 0xFCAA54EE EQ PUSH2 0x347 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0xCA31879D EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xD3DC4CA1 EQ PUSH2 0x306 JUMPI DUP1 PUSH4 0xDE681FAF EQ PUSH2 0x319 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0xA1648AA5 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xA1648AA5 EQ PUSH2 0x2B8 JUMPI DUP1 PUSH4 0xACBC1428 EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x2EB JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x88720467 EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0x905D10AC EQ PUSH2 0x2A5 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x3902B9BC GT PUSH2 0x145 JUMPI DUP1 PUSH4 0x8050A7EE GT PUSH2 0x11F JUMPI DUP1 PUSH4 0x8050A7EE EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x82AA5AD4 EQ PUSH2 0x257 JUMPI DUP1 PUSH4 0x876E69A1 EQ PUSH2 0x25F JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x3902B9BC EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x4F3C5090 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x7B8D6221 EQ PUSH2 0x231 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x2308805B GT PUSH2 0x176 JUMPI DUP1 PUSH4 0x2308805B EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0x286D5E7F EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x338B5DEA EQ PUSH2 0x1F8 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x14866E08 EQ PUSH2 0x1B0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A PUSH2 0x35A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x2187 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C3 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x37E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D8 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x225F JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x3DB JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F62 JUMP JUMPDEST PUSH2 0x41C JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x219 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x45B JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x22C CALLDATASIZE PUSH1 0x4 PUSH2 0x2105 JUMP JUMPDEST PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x23F CALLDATASIZE PUSH1 0x4 PUSH2 0x1FCD JUMP JUMPDEST PUSH2 0x480 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x252 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x56B JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x26D CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x571 JUMP JUMPDEST PUSH2 0x285 PUSH2 0x280 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E08 JUMP JUMPDEST PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x221C JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x2A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x685 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x2B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F8D JUMP JUMPDEST PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x2CB PUSH2 0x2C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x6D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x2254 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x2E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x724 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x301 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x73E JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x314 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F62 JUMP JUMPDEST PUSH2 0x786 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x327 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F62 JUMP JUMPDEST PUSH2 0x7AE JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x33A CALLDATASIZE PUSH1 0x4 PUSH2 0x2036 JUMP JUMPDEST PUSH2 0x7D6 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x355 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E5B JUMP JUMPDEST PUSH2 0x7EF JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x386 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x38F DUP2 PUSH2 0x877 JUMP JUMPDEST PUSH2 0x397 PUSH2 0xE06 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x424 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x42F DUP3 PUSH1 0x0 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x444 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x44F DUP3 PUSH1 0x1 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x457 PUSH2 0xE06 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x463 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x38F DUP2 PUSH1 0x1 PUSH2 0xE0D JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x488 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x492 DUP4 DUP3 PUSH2 0x12B3 JUMP JUMPDEST DUP3 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x546 JUMPI PUSH2 0x4C9 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x4AD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4C2 SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x513 CALLER ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x4DA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP10 DUP10 DUP7 DUP2 DUP2 LT PUSH2 0x4ED JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x502 SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x53E DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x522 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x537 SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH1 0x1 PUSH2 0xE0D JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x496 JUMP JUMPDEST POP POP PUSH2 0x550 PUSH2 0xE06 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x562 DUP4 DUP4 PUSH2 0x12C0 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5AC PUSH2 0x860 JUMP JUMPDEST DUP4 PUSH2 0x5B6 DUP2 PUSH2 0x133E JUMP JUMPDEST PUSH2 0x5BE PUSH2 0x1376 JUMP JUMPDEST PUSH2 0x5C7 DUP6 PUSH2 0x877 JUMP JUMPDEST DUP3 PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x60B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x671 JUMPI PUSH2 0x628 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x4AD JUMPI INVALID JUMPDEST PUSH2 0x652 DUP9 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x638 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x64D SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x1506 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x65E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x611 JUMP JUMPDEST POP SWAP3 POP POP POP PUSH2 0x67E PUSH2 0xE06 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6A8 PUSH2 0x860 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6CB JUMPI PUSH2 0x6C3 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x522 JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x6AC JUMP JUMPDEST POP POP PUSH2 0x457 PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x72C PUSH2 0x860 JUMP JUMPDEST PUSH2 0x734 PUSH2 0x1376 JUMP JUMPDEST PUSH2 0x73C PUSH2 0xE06 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x748 PUSH2 0x860 JUMP JUMPDEST DUP3 PUSH2 0x752 DUP2 PUSH2 0x133E JUMP JUMPDEST PUSH2 0x75A PUSH2 0x1376 JUMP JUMPDEST PUSH2 0x763 DUP5 PUSH2 0x877 JUMP JUMPDEST PUSH2 0x76E DUP4 PUSH1 0x0 PUSH2 0xE0D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77A DUP6 DUP6 PUSH2 0x1506 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x565 PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x397 CALLER DUP3 PUSH2 0x16E2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7EA PUSH2 0x1762 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xBD291FFCCEC065968FE20C5F8DEBDAD73AB50837733F357EEAE8814178015A90 DUP5 DUP5 PUSH2 0x81D DUP8 PUSH2 0x685 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x830 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2268 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x856 DUP5 DUP3 DUP5 PUSH2 0x1F8 PUSH2 0x17FF JUMP JUMPDEST PUSH2 0x550 DUP5 DUP5 PUSH2 0x16E2 JUMP JUMPDEST PUSH2 0x871 PUSH1 0x2 DUP1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x2 DUP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x10AE75700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x10AE757 SWAP1 PUSH2 0x8DF SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2187 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x90B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x92F SWAP2 SWAP1 PUSH2 0x211D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x93C JUMPI POP PUSH2 0x397 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0x9A9 JUMPI PUSH2 0x9A2 DUP6 PUSH32 0x0 PUSH1 0x0 DUP8 PUSH2 0x183A JUMP JUMPDEST SWAP1 POP PUSH2 0x9FC JUMP JUMPDEST TIMESTAMP DUP3 LT PUSH2 0x9B9 JUMPI POP POP POP POP PUSH2 0x397 JUMP JUMPDEST POP DUP2 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 DUP2 DUP6 SUB GT ISZERO PUSH2 0x9FC JUMPI PUSH2 0x9F9 DUP6 DUP4 DUP4 DUP8 PUSH2 0x183A JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH2 0xA05 JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0xA0D PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xA74 SWAP1 DUP10 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2203 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAC4 SWAP2 SWAP1 PUSH2 0x20AE JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0xB98 JUMPI PUSH32 0x0 TIMESTAMP GT PUSH2 0xB2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB24 SWAP1 PUSH2 0x2388 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB63 PUSH32 0x0 PUSH2 0xB5E DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x194E JUMP JUMPDEST PUSH2 0x195E JUMP JUMPDEST DUP5 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND OR DUP6 SSTORE SWAP3 POP JUMPDEST PUSH2 0xBA0 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x32 DUP2 LT ISZERO PUSH2 0xD6B JUMPI DUP3 PUSH1 0x40 ADD MLOAD DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xBC0 JUMPI POP DUP7 DUP5 GT ISZERO JUMPDEST ISZERO PUSH2 0xCC7 JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP DUP3 SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0xC08 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP PUSH2 0xCC2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xC6F SWAP1 DUP12 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2203 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC9B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCBF SWAP2 SWAP1 PUSH2 0x20AE JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH2 0xD63 JUMP JUMPDEST TIMESTAMP DUP6 LT PUSH2 0xCD3 JUMPI PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 ADD MLOAD DUP7 SUB SWAP1 POP PUSH1 0x0 DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL PUSH1 0xF SIGNEXTEND DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xF SIGNEXTEND SGT PUSH2 0xCFE JUMPI PUSH1 0x0 PUSH2 0xD0F JUMP JUMPDEST DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL DUP5 PUSH1 0x0 ADD MLOAD SUB PUSH1 0xF SIGNEXTEND JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0xD1E JUMPI POP DUP9 DUP7 GT JUMPDEST ISZERO PUSH2 0xD35 JUMPI PUSH2 0xD2C TIMESTAMP PUSH2 0x194E JUMP JUMPDEST SWAP7 POP POP POP PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE POP PUSH3 0x93A80 SWAP1 SWAP5 ADD SWAP4 JUMPDEST PUSH1 0x1 ADD PUSH2 0xBA3 JUMP JUMPDEST POP POP DUP4 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 ADD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP3 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SWAP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0xEE4 JUMPI TIMESTAMP SWAP2 POP PUSH2 0xE52 TIMESTAMP PUSH2 0x196A JUMP JUMPDEST DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR DUP4 SSTORE PUSH32 0x0 TIMESTAMP GT PUSH2 0xEDF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB24 SWAP1 PUSH2 0x2388 JUMP JUMPDEST PUSH2 0xF36 JUMP JUMPDEST DUP2 TIMESTAMP SUB SWAP1 POP DUP4 PUSH2 0xF36 JUMPI PUSH1 0x0 PUSH2 0xEF9 DUP4 PUSH2 0x196A JUMP JUMPDEST PUSH2 0xF02 TIMESTAMP PUSH2 0x196A JUMP JUMPDEST EQ SWAP1 POP PUSH1 0x0 PUSH3 0x15180 TIMESTAMP PUSH2 0xF15 TIMESTAMP PUSH2 0x194E JUMP JUMPDEST SUB LT SWAP1 POP DUP2 DUP1 ISZERO PUSH2 0xF24 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xF33 JUMPI POP POP POP POP POP PUSH2 0x457 JUMP JUMPDEST POP POP JUMPDEST DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 TIMESTAMP PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xFBB SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2187 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x100B SWAP2 SWAP1 PUSH2 0x211D JUMP JUMPDEST DUP5 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1044 SWAP1 DUP4 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1976 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1055 JUMPI POP POP POP POP POP PUSH2 0x457 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x109F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB24 SWAP1 PUSH2 0x2351 JUMP JUMPDEST DUP5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP2 AND OR DUP6 SSTORE PUSH1 0x0 PUSH2 0x10D8 DUP6 PUSH2 0x196A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP3 POP SWAP1 DUP2 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x11C8 JUMPI DUP4 PUSH3 0x93A80 ADD SWAP3 POP DUP3 TIMESTAMP LT ISZERO PUSH2 0x1166 JUMPI DUP7 ISZERO DUP1 ISZERO PUSH2 0x111C JUMPI POP DUP8 TIMESTAMP EQ JUMPDEST ISZERO PUSH2 0x113A JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x1161 JUMP JUMPDEST DUP7 DUP9 TIMESTAMP SUB DUP7 MUL DUP2 PUSH2 0x1147 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH2 0x11C8 JUMP JUMPDEST DUP7 ISZERO DUP1 ISZERO PUSH2 0x1173 JUMPI POP DUP8 DUP4 EQ JUMPDEST ISZERO PUSH2 0x1191 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x11B8 JUMP JUMPDEST DUP7 DUP9 DUP5 SUB DUP7 MUL DUP2 PUSH2 0x119E JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST SWAP2 SWAP7 POP DUP7 SWAP3 POP DUP3 SWAP2 PUSH1 0x1 ADD PUSH2 0x10F6 JUMP JUMPDEST POP PUSH32 0x9B7F1A85A4C9B4E59E1B6527D9969C50CDFB3A1A467D0C4A51FB0ED8BF07F130 DUP11 DUP6 DUP10 PUSH1 0x40 MLOAD PUSH2 0x11FC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2330 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x550 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1231 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x219B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1984 JUMP JUMPDEST PUSH2 0x457 DUP2 DUP4 EQ PUSH1 0x67 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x12F5 JUMPI SWAP1 POP PUSH2 0x565 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP8 AND DUP4 MSTORE PUSH1 0x5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x1336 SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND PUSH2 0x195E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x397 JUMPI PUSH2 0x397 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ PUSH2 0x191 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 PUSH2 0x1384 TIMESTAMP PUSH2 0x196A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT DUP1 PUSH2 0x1393 JUMPI POP TIMESTAMP DUP2 EQ JUMPDEST ISZERO PUSH2 0x139F JUMPI POP POP PUSH2 0x73C JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC2C4C5C1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x140E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x14FF JUMPI DUP2 DUP4 GT ISZERO PUSH2 0x142B JUMPI PUSH2 0x14FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xBD85B039 SWAP1 PUSH2 0x1490 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x225F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14E0 SWAP2 SWAP1 PUSH2 0x211D JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH3 0x93A80 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1415 JUMP JUMPDEST POP POP PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 PUSH2 0x1529 DUP6 DUP6 PUSH2 0x12C0 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP2 PUSH2 0x159C SWAP2 PUSH2 0x1576 SWAP2 PUSH2 0x1571 SWAP2 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1A24 JUMP JUMPDEST PUSH2 0x194E JUMP JUMPDEST DUP5 SLOAD PUSH2 0x1597 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x196A JUMP JUMPDEST PUSH2 0x1A24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SWAP3 SWAP4 POP SWAP1 SWAP2 SWAP1 DUP1 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x1620 JUMPI DUP5 DUP7 LT PUSH2 0x15E1 JUMPI PUSH2 0x1620 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP7 DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD SWAP3 DUP9 SWAP1 MSTORE SWAP3 KECCAK256 SLOAD MUL DUP2 PUSH2 0x1609 JUMPI INVALID JUMPDEST PUSH3 0x93A80 SWAP8 SWAP1 SWAP8 ADD SWAP7 DIV SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x15CC JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP6 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x16D6 JUMPI DUP6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP5 SWAP1 SUB DUP3 AND MUL SWAP2 AND OR DUP7 SSTORE PUSH2 0x1698 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP11 DUP4 PUSH2 0x1A30 JUMP JUMPDEST PUSH32 0xFF097C7D8B1957A4FF09EF1361B5FB54DCEDE3941BA836D0BEB9D10BEC725DE6 DUP10 DUP10 DUP4 DUP9 PUSH1 0x40 MLOAD PUSH2 0x16CD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x21DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0xAC9874A7A931A3F5C9F202C6D9CF40DE5D21506993C9F9C38CA8265ADD89584C SWAP1 PUSH2 0x1756 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x21BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x17CF PUSH2 0x1A54 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x17E4 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x228E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x550 DUP5 DUP5 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 PUSH2 0x1A58 JUMP JUMPDEST DUP2 PUSH2 0x457 JUMPI PUSH2 0x457 DUP2 PUSH2 0x1AAF JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP3 JUMPDEST PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1942 JUMPI DUP2 DUP4 LT PUSH2 0x1855 JUMPI PUSH2 0x1942 JUMP JUMPDEST PUSH1 0x2 DUP3 DUP5 ADD DUP2 ADD DIV PUSH2 0x1865 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0x18CC SWAP1 DUP14 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2203 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x191C SWAP2 SWAP1 PUSH2 0x20AE JUMP JUMPDEST SWAP1 POP DUP9 DUP2 PUSH1 0x40 ADD MLOAD GT PUSH2 0x1931 JUMPI DUP2 SWAP5 POP PUSH2 0x1938 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1840 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x565 PUSH3 0x93A7F DUP4 ADD PUSH2 0x196A JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 LT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x562 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1AD9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x19A0 SWAP2 SWAP1 PUSH2 0x2135 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x19DD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x19E2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x19FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x550 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1A1C JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1A1C SWAP2 SWAP1 PUSH2 0x2052 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x182C JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x1A4F DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1231 SWAP3 SWAP2 SWAP1 PUSH2 0x2203 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A63 DUP6 PUSH2 0x1AEF JUMP JUMPDEST SWAP1 POP PUSH2 0x1A79 PUSH2 0x1A73 DUP8 DUP4 DUP8 PUSH2 0x1B28 JUMP JUMPDEST DUP4 PUSH2 0x182C JUMP JUMPDEST PUSH2 0x1A88 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x182C JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x397 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1C16 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AE8 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x182C JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AF9 PUSH2 0x1762 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1B0B SWAP3 SWAP2 SWAP1 PUSH2 0x2151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B3C DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C91 JUMP JUMPDEST ISZERO PUSH2 0x1C04 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP1 DUP3 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x1626BA7E SWAP1 PUSH2 0x1B8A SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x22BA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BDA SWAP2 SWAP1 PUSH2 0x206E JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ SWAP1 POP PUSH2 0x67E JUMP JUMPDEST PUSH2 0x1C0F DUP5 DUP5 DUP5 PUSH2 0x1C97 JUMP JUMPDEST SWAP1 POP PUSH2 0x67E JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CA9 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x20 DUP3 DUP2 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD DUP3 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP6 ADD SWAP3 DUP4 SWAP1 MSTORE SWAP3 SWAP4 SWAP1 SWAP3 DUP2 BYTE SWAP2 PUSH1 0x1 SWAP1 PUSH2 0x1CE2 SWAP1 DUP10 SWAP1 DUP6 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x2312 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x16D6 JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1DA2 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1DB9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1DD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x565 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DFD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x67E DUP2 PUSH2 0x2438 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1E1C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1E27 DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E42 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1E4E DUP7 DUP3 DUP8 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1E6F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1E7A DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 DUP2 ADD CALLDATALOAD PUSH2 0x1E8B DUP2 PUSH2 0x244D JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1EA7 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1EBA JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1EC8 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1EF8 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x23E5 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP9 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1F0D JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY DUP5 DUP5 DUP3 DUP5 ADD ADD MSTORE POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F3C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1F47 DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1F57 DUP2 PUSH2 0x2438 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F74 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1F7F DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F9F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1FB5 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1FC1 DUP6 DUP3 DUP7 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1FE2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1FF9 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2005 DUP9 DUP4 DUP10 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x201D JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x202A DUP8 DUP3 DUP9 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2047 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x67E DUP2 PUSH2 0x244D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2063 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x67E DUP2 PUSH2 0x244D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x207F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x67E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20BF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x20C9 PUSH1 0x80 PUSH2 0x23E5 JUMP JUMPDEST PUSH2 0x20D3 DUP5 DUP5 PUSH2 0x1DDA JUMP JUMPDEST DUP2 MSTORE PUSH2 0x20E2 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1DDA JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2116 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x212E JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2147 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x240C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1942 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2238 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x22DF DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x240C JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6178696D756D20746F6B656E2062616C616E63652065786365656465640000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x46656520646973747269627574696F6E20686173206E6F742073746172746564 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2079657400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2427 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x240F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x550 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D PUSH17 0xAB73116986917A5E903C96AC6FC54ACBC4 0xAE PUSH19 0xEF90B05C76AE9F48CC9BA164736F6C63430007 ADD STOP CALLER ","sourceMap":"797:369:125:-:0;;;849:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2020:280:58;;;;;;;;;;;-1:-1:-1;;;2020:280:58;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2020:280:58;;;;;;2100:22;;;;;2085:37;;2150:25;;;;;2132:43;;2198:95;2185:108;;2175:7:63;:22;-1:-1:-1;;;;;;3661:28:82::1;::::0;;;;::::1;::::0;923:12:125;937:9;3712:30:82::1;937:9:125::0;3712:19:82::1;:30::i;:::-;3700:42:::0;-1:-1:-1;3752:19:82::1;3774:36;3794:15;3774:19;:36::i;:::-;3752:58;;3841:11;3828:9;:24;;3820:69;;;;-1:-1:-1::0;;;3820:69:82::1;;;;;;;:::i;:::-;;;;;;;;;3916:11;3903:9;:24;3899:434;;;4236:37;::::0;-1:-1:-1;;;4236:37:82;;4276:1:::1;::::0;-1:-1:-1;;;;;4236:24:82;::::1;::::0;::::1;::::0;:37:::1;::::0;4261:11;;4236:37:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;4228:94;;;;-1:-1:-1::0;;;4228:94:82::1;;;;;;;:::i;:::-;-1:-1:-1::0;4342:22:82::1;::::0;;;4374:11:::1;:23:::0;-1:-1:-1;797:369:125;;-1:-1:-1;;797:369:125;29871:196:82;30042:7;30030:19;;;;30029:31;;29871:196::o;331:443:-1:-;;;485:2;473:9;464:7;460:23;456:32;453:2;;;-1:-1;;491:12;453:2;105:13;;-1:-1;;;;;3425:54;;3651:57;;3641:2;;-1:-1;;3712:12;3641:2;676;726:22;;;;268:13;543:96;;268:13;;-1:-1;;;447:327::o;781:263::-;;896:2;884:9;875:7;871:23;867:32;864:2;;;-1:-1;;902:12;864:2;-1:-1;268:13;;858:186;-1:-1;858:186::o;1898:416::-;2098:2;2112:47;;;2083:18;;;3077:19;1312:34;3117:14;;;1292:55;1366:12;;;2069:245::o;2321:416::-;2521:2;2535:47;;;1617:2;2506:18;;;3077:19;1653:34;3117:14;;;1633:55;-1:-1;;;1708:12;;;1701:32;1752:12;;;2492:245::o;2744:222::-;1849:37;;;2871:2;2856:18;;2842:124::o;:::-;797:369:125;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"5935":[{"length":32,"start":6023}],"5937":[{"length":32,"start":6056}],"5939":[{"length":32,"start":5990}],"12390":[{"length":32,"start":860},{"length":32,"start":2218},{"length":32,"start":2621},{"length":32,"start":3128},{"length":32,"start":5025},{"length":32,"start":5211},{"length":32,"start":6293}],"12392":[{"length":32,"start":2427},{"length":32,"start":2765},{"length":32,"start":2866},{"length":32,"start":3720}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061018d5760003560e01c806388720467116100e3578063ca31879d1161008c578063e811f44b11610066578063e811f44b1461032c578063ed24911d1461033f578063fcaa54ee146103475761018d565b8063ca31879d146102f3578063d3dc4ca114610306578063de681faf146103195761018d565b8063a1648aa5116100bd578063a1648aa5146102b8578063acbc1428146102d8578063c2c4c5c1146102eb5761018d565b8063887204671461027257806390193b7c14610292578063905d10ac146102a55761018d565b80633902b9bc116101455780638050a7ee1161011f5780638050a7ee1461024457806382aa5ad414610257578063876e69a11461025f5761018d565b80633902b9bc1461020b5780634f3c50901461021e5780637b8d6221146102315761018d565b80632308805b116101765780632308805b146101c5578063286d5e7f146101e5578063338b5dea146101f85761018d565b806308b0308a1461019257806314866e08146101b0575b600080fd5b61019a61035a565b6040516101a79190612187565b60405180910390f35b6101c36101be366004611dec565b61037e565b005b6101d86101d3366004611dec565b61039a565b6040516101a7919061225f565b6101d86101f3366004611dec565b6103db565b6101c3610206366004611f62565b61041c565b6101c3610219366004611dec565b61045b565b6101d861022c366004612105565b61046e565b6101c361023f366004611fcd565b610480565b6101d8610252366004611f2a565b610556565b6101d861056b565b6101d861026d366004611dec565b610571565b610285610280366004611e08565b6105a2565b6040516101a7919061221c565b6101d86102a0366004611dec565b610685565b6101c36102b3366004611f8d565b6106a0565b6102cb6102c6366004611dec565b6106d5565b6040516101a79190612254565b6101d86102e6366004611dec565b6106f3565b6101c3610724565b6101d8610301366004611f2a565b61073e565b6101d8610314366004611f62565b610786565b6101d8610327366004611f62565b6107ae565b6101c361033a366004612036565b6107d6565b6101d86107e0565b6101c3610355366004611e5b565b6107ef565b7f000000000000000000000000000000000000000000000000000000000000000090565b610386610860565b61038f81610877565b610397610e06565b50565b6001600160a01b031660009081526005602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b6001600160a01b031660009081526007602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b610424610860565b61042f826000610e0d565b6104446001600160a01b038316333084611210565b61044f826001610e0d565b610457610e06565b5050565b610463610860565b61038f816001610e0d565b60009081526004602052604090205490565b610488610860565b61049283826112b3565b8260005b81811015610546576104c98686838181106104ad57fe5b90506020020160208101906104c29190611dec565b6000610e0d565b61051333308686858181106104da57fe5b905060200201358989868181106104ed57fe5b90506020020160208101906105029190611dec565b6001600160a01b0316929190611210565b61053e86868381811061052257fe5b90506020020160208101906105379190611dec565b6001610e0d565b600101610496565b5050610550610e06565b50505050565b600061056283836112c0565b90505b92915050565b60035490565b6001600160a01b031660009081526007602052604090205468010000000000000000900467ffffffffffffffff1690565b60606105ac610860565b836105b68161133e565b6105be611376565b6105c785610877565b8260608167ffffffffffffffff811180156105e157600080fd5b5060405190808252806020026020018201604052801561060b578160200160208202803683370190505b50905060005b82811015610671576106288787838181106104ad57fe5b6106528888888481811061063857fe5b905060200201602081019061064d9190611dec565b611506565b82828151811061065e57fe5b6020908102919091010152600101610611565b509250505061067e610e06565b9392505050565b6001600160a01b031660009081526020819052604090205490565b6106a8610860565b8060005b818110156106cb576106c384848381811061052257fe5b6001016106ac565b5050610457610e06565b6001600160a01b031660009081526001602052604090205460ff1690565b6001600160a01b031660009081526005602052604090205468010000000000000000900467ffffffffffffffff1690565b61072c610860565b610734611376565b61073c610e06565b565b6000610748610860565b826107528161133e565b61075a611376565b61076384610877565b61076e836000610e0d565b600061077a8585611506565b92505050610565610e06565b6001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6001600160a01b03919091166000908152600860209081526040808320938352929052205490565b61039733826116e2565b60006107ea611762565b905090565b60007fbd291ffccec065968fe20c5f8debdad73ab50837733f357eeae8814178015a90848461081d87610685565b6040516020016108309493929190612268565b6040516020818303038152906040528051906020012090506108568482846101f86117ff565b61055084846116e2565b61087160028054141561019061182c565b60028055565b6040517f010ae7570000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063010ae757906108df908590600401612187565b60206040518083038186803b1580156108f757600080fd5b505afa15801561090b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092f919061211d565b90508061093c5750610397565b6001600160a01b0382166000908152600760205260408120805490916801000000000000000090910467ffffffffffffffff1690816109a9576109a2857f000000000000000000000000000000000000000000000000000000000000000060008761183a565b90506109fc565b4282106109b95750505050610397565b50815470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16601481850311156109fc576109f98583838761183a565b90505b80610a05575060015b610a0d611d63565b6040517f28d09d470000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610a749089908690600401612203565b60806040518083038186803b158015610a8c57600080fd5b505afa158015610aa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac491906120ae565b905082610b98577f00000000000000000000000000000000000000000000000000000000000000004211610b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490612388565b60405180910390fd5b610b637f0000000000000000000000000000000000000000000000000000000000000000610b5e836040015161194e565b61195e565b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff821617855592505b610ba0611d63565b60005b6032811015610d6b5782604001518510158015610bc05750868411155b15610cc75760018401935082915086841115610c085760405180608001604052806000600f0b81526020016000600f0b81526020016000815260200160008152509250610cc2565b6040517f28d09d470000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610c6f908b908890600401612203565b60806040518083038186803b158015610c8757600080fd5b505afa158015610c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbf91906120ae565b92505b610d63565b428510610cd357610d6b565b6000826040015186039050600081846020015102600f0b8460000151600f0b13610cfe576000610d0f565b81846020015102846000015103600f0b5b905080158015610d1e57508886115b15610d3557610d2c4261194e565b96505050610d6b565b6001600160a01b038a1660009081526008602090815260408083208a84529091529020555062093a80909401935b600101610ba3565b505083546fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9290920167ffffffffffffffff90811670010000000000000000000000000000000002929092177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff1668010000000000000000939092169290920217909155505050565b6001600255565b6001600160a01b0382166000908152600560205260408120805490916801000000000000000090910467ffffffffffffffff169081610ee457429150610e524261196a565b83547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff919091161783557f00000000000000000000000000000000000000000000000000000000000000004211610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490612388565b610f36565b814203905083610f36576000610ef98361196a565b610f024261196a565b14905060006201518042610f154261194e565b03109050818015610f24575080155b15610f33575050505050610457565b50505b82547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff16021783556040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038716906370a0823190610fbb903090600401612187565b60206040518083038186803b158015610fd357600080fd5b505afa158015610fe7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100b919061211d565b845490915060009061104490839070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611976565b905080611055575050505050610457565b6fffffffffffffffffffffffffffffffff82111561109f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490612351565b84546fffffffffffffffffffffffffffffffff80841670010000000000000000000000000000000002911617855560006110d88561196a565b6001600160a01b038916600090815260066020526040812091925090815b60148110156111c8578362093a8001925082421015611166578615801561111c57508742145b1561113a576000848152602083905260409020805486019055611161565b8688420386028161114757fe5b600086815260208590526040902080549290910490910190555b6111c8565b8615801561117357508783145b156111915760008481526020839052604090208054860190556111b8565b8688840386028161119e57fe5b600086815260208590526040902080549290910490910190555b91965086925082916001016110f6565b507f9b7f1a85a4c9b4e59e1b6527d9969c50cdfb3a1a467d0c4a51fb0ed8bf07f1308a85896040516111fc93929190612330565b60405180910390a150505050505050505050565b610550846323b872dd60e01b8585856040516024016112319392919061219b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611984565b610457818314606761182c565b6001600160a01b03808316600090815260096020908152604080832093851683529290529081205480156112f5579050610565565b6001600160a01b03808516600090815260076020908152604080832054938716835260059091529020546113369167ffffffffffffffff908116911661195e565b949350505050565b6001600160a01b03811660009081526001602052604090205460ff161561039757610397336001600160a01b0383161461019161182c565b60035460006113844261196a565b90508082118061139357504281145b1561139f57505061073c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c2c4c5c16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156113fa57600080fd5b505af115801561140e573d6000803e3d6000fd5b5050505060005b60148110156114ff578183111561142b576114ff565b6040517fbd85b0390000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd85b0399061149090869060040161225f565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e0919061211d565b60008481526004602052604090205562093a8090920191600101611415565b5050600355565b6001600160a01b03811660009081526005602052604081208161152985856112c0565b6003546001600160a01b0387166000908152600760205260408120549293509161159c9161157691611571919068010000000000000000900467ffffffffffffffff16611a24565b61194e565b84546115979068010000000000000000900467ffffffffffffffff1661196a565b611a24565b6001600160a01b038087166000908152600660209081526040808320938b16835260089091528120929350909190805b6014811015611620578486106115e157611620565b6000868152600460209081526040808320548683528184205492889052922054028161160957fe5b62093a8097909701960491909101906001016115cc565b506001600160a01b03808a166000908152600960209081526040808320938c1683529290522085905580156116d65785546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000808304821684900382160291161786556116986001600160a01b0389168a83611a30565b7fff097c7d8b1957a4ff09ef1361b5fb54dcede3941ba836d0beb9d10bec725de6898983886040516116cd94939291906121da565b60405180910390a15b98975050505050505050565b6001600160a01b0382166000908152600160205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016831515179055517fac9874a7a931a3f5c9f202c6d9cf40de5d21506993c9f9c38ca8265add89584c9061175690849084906121bf565b60405180910390a15050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006117cf611a54565b306040516020016117e495949392919061228e565b60405160208183030381529060405280519060200120905090565b6105508484847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85611a58565b816104575761045781611aaf565b60008282825b60808110156119425781831061185557611942565b6002828401810104611865611d63565b6040517f28d09d470000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906328d09d47906118cc908d908690600401612203565b60806040518083038186803b1580156118e457600080fd5b505afa1580156118f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191c91906120ae565b90508881604001511161193157819450611938565b6001820393505b5050600101611840565b50909695505050505050565b600061056562093a7f830161196a565b80820390821002900390565b62093a80908190040290565b600061056283836001611ad9565b60006060836001600160a01b0316836040516119a09190612135565b6000604051808303816000865af19150503d80600081146119dd576040519150601f19603f3d011682016040523d82523d6000602084013e6119e2565b606091505b509150915060008214156119fa573d6000803e3d6000fd5b610550815160001480611a1c575081806020019051810190611a1c9190612052565b6101a261182c565b80820390821102900390565b611a4f8363a9059cbb60e01b8484604051602401611231929190612203565b505050565b4690565b6000611a6385611aef565b9050611a79611a73878387611b28565b8361182c565b611a88428410156101b861182c565b5050506001600160a01b039092166000908152602081905260409020805460010190555050565b610397817f42414c0000000000000000000000000000000000000000000000000000000000611c16565b6000611ae8848411158361182c565b5050900390565b6000611af9611762565b82604051602001611b0b929190612151565b604051602081830303815290604052805190602001209050919050565b6000611b3c846001600160a01b0316611c91565b15611c04576040517f1626ba7e00000000000000000000000000000000000000000000000000000000808252906001600160a01b03861690631626ba7e90611b8a90879087906004016122ba565b60206040518083038186803b158015611ba257600080fd5b505afa158015611bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bda919061206e565b7fffffffff000000000000000000000000000000000000000000000000000000001614905061067e565b611c0f848484611c97565b905061067e565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b3b151590565b6000611ca982516041146101b961182c565b60208281015160408085015160608601518251600080825295019283905292939092811a91600190611ce2908990859088908890612312565b6020604051602081039080840390855afa158015611d04573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906116d65750876001600160a01b0316816001600160a01b03161498975050505050505050565b60405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525090565b60008083601f840112611da2578182fd5b50813567ffffffffffffffff811115611db9578182fd5b6020830191508360208083028501011115611dd357600080fd5b9250929050565b8051600f81900b811461056557600080fd5b600060208284031215611dfd578081fd5b813561067e81612438565b600080600060408486031215611e1c578182fd5b8335611e2781612438565b9250602084013567ffffffffffffffff811115611e42578283fd5b611e4e86828701611d91565b9497909650939450505050565b600080600060608486031215611e6f578283fd5b8335611e7a81612438565b9250602084810135611e8b8161244d565b9250604085013567ffffffffffffffff80821115611ea7578384fd5b818701915087601f830112611eba578384fd5b813581811115611ec8578485fd5b611ef8847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016123e5565b91508082528884828501011115611f0d578485fd5b808484018584013784848284010152508093505050509250925092565b60008060408385031215611f3c578182fd5b8235611f4781612438565b91506020830135611f5781612438565b809150509250929050565b60008060408385031215611f74578182fd5b8235611f7f81612438565b946020939093013593505050565b60008060208385031215611f9f578182fd5b823567ffffffffffffffff811115611fb5578283fd5b611fc185828601611d91565b90969095509350505050565b60008060008060408587031215611fe2578081fd5b843567ffffffffffffffff80821115611ff9578283fd5b61200588838901611d91565b9096509450602087013591508082111561201d578283fd5b5061202a87828801611d91565b95989497509550505050565b600060208284031215612047578081fd5b813561067e8161244d565b600060208284031215612063578081fd5b815161067e8161244d565b60006020828403121561207f578081fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461067e578182fd5b6000608082840312156120bf578081fd5b6120c960806123e5565b6120d38484611dda565b81526120e28460208501611dda565b602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612116578081fd5b5035919050565b60006020828403121561212e578081fd5b5051919050565b6000825161214781846020870161240c565b9190910192915050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561194257835183529284019291840191600101612238565b901515815260200190565b90815260200190565b9384526001600160a01b0392909216602084015215156040830152606082015260800190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b60008382526040602083015282518060408401526122df81606085016020870161240c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b93845260ff9290921660208401526040830152606082015260800190565b6001600160a01b039390931683526020830191909152604082015260600190565b6020808252601e908201527f4d6178696d756d20746f6b656e2062616c616e63652065786365656465640000604082015260600190565b60208082526024908201527f46656520646973747269627574696f6e20686173206e6f74207374617274656460408201527f2079657400000000000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff8111828210171561240457600080fd5b604052919050565b60005b8381101561242757818101518382015260200161240f565b838111156105505750506000910152565b6001600160a01b038116811461039757600080fd5b801515811461039757600080fdfea26469706673582212202d70ab73116986917a5e903c96ac6fc54acbc4ae72ef90b05c76ae9f48cc9ba164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x88720467 GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0xCA31879D GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE811F44B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xE811F44B EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x33F JUMPI DUP1 PUSH4 0xFCAA54EE EQ PUSH2 0x347 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0xCA31879D EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xD3DC4CA1 EQ PUSH2 0x306 JUMPI DUP1 PUSH4 0xDE681FAF EQ PUSH2 0x319 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0xA1648AA5 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xA1648AA5 EQ PUSH2 0x2B8 JUMPI DUP1 PUSH4 0xACBC1428 EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x2EB JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x88720467 EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0x905D10AC EQ PUSH2 0x2A5 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x3902B9BC GT PUSH2 0x145 JUMPI DUP1 PUSH4 0x8050A7EE GT PUSH2 0x11F JUMPI DUP1 PUSH4 0x8050A7EE EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x82AA5AD4 EQ PUSH2 0x257 JUMPI DUP1 PUSH4 0x876E69A1 EQ PUSH2 0x25F JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x3902B9BC EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x4F3C5090 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x7B8D6221 EQ PUSH2 0x231 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x2308805B GT PUSH2 0x176 JUMPI DUP1 PUSH4 0x2308805B EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0x286D5E7F EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x338B5DEA EQ PUSH2 0x1F8 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x14866E08 EQ PUSH2 0x1B0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A PUSH2 0x35A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x2187 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C3 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x37E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D8 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x225F JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x3DB JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F62 JUMP JUMPDEST PUSH2 0x41C JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x219 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x45B JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x22C CALLDATASIZE PUSH1 0x4 PUSH2 0x2105 JUMP JUMPDEST PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x23F CALLDATASIZE PUSH1 0x4 PUSH2 0x1FCD JUMP JUMPDEST PUSH2 0x480 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x252 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x56B JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x26D CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x571 JUMP JUMPDEST PUSH2 0x285 PUSH2 0x280 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E08 JUMP JUMPDEST PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x221C JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x2A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x685 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x2B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F8D JUMP JUMPDEST PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x2CB PUSH2 0x2C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x6D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x2254 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x2E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x724 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x301 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x73E JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x314 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F62 JUMP JUMPDEST PUSH2 0x786 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x327 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F62 JUMP JUMPDEST PUSH2 0x7AE JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x33A CALLDATASIZE PUSH1 0x4 PUSH2 0x2036 JUMP JUMPDEST PUSH2 0x7D6 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x355 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E5B JUMP JUMPDEST PUSH2 0x7EF JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x386 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x38F DUP2 PUSH2 0x877 JUMP JUMPDEST PUSH2 0x397 PUSH2 0xE06 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x424 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x42F DUP3 PUSH1 0x0 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x444 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x44F DUP3 PUSH1 0x1 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x457 PUSH2 0xE06 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x463 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x38F DUP2 PUSH1 0x1 PUSH2 0xE0D JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x488 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x492 DUP4 DUP3 PUSH2 0x12B3 JUMP JUMPDEST DUP3 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x546 JUMPI PUSH2 0x4C9 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x4AD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4C2 SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x513 CALLER ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x4DA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP10 DUP10 DUP7 DUP2 DUP2 LT PUSH2 0x4ED JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x502 SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x53E DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x522 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x537 SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH1 0x1 PUSH2 0xE0D JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x496 JUMP JUMPDEST POP POP PUSH2 0x550 PUSH2 0xE06 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x562 DUP4 DUP4 PUSH2 0x12C0 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5AC PUSH2 0x860 JUMP JUMPDEST DUP4 PUSH2 0x5B6 DUP2 PUSH2 0x133E JUMP JUMPDEST PUSH2 0x5BE PUSH2 0x1376 JUMP JUMPDEST PUSH2 0x5C7 DUP6 PUSH2 0x877 JUMP JUMPDEST DUP3 PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x60B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x671 JUMPI PUSH2 0x628 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x4AD JUMPI INVALID JUMPDEST PUSH2 0x652 DUP9 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x638 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x64D SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x1506 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x65E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x611 JUMP JUMPDEST POP SWAP3 POP POP POP PUSH2 0x67E PUSH2 0xE06 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6A8 PUSH2 0x860 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6CB JUMPI PUSH2 0x6C3 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x522 JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x6AC JUMP JUMPDEST POP POP PUSH2 0x457 PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x72C PUSH2 0x860 JUMP JUMPDEST PUSH2 0x734 PUSH2 0x1376 JUMP JUMPDEST PUSH2 0x73C PUSH2 0xE06 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x748 PUSH2 0x860 JUMP JUMPDEST DUP3 PUSH2 0x752 DUP2 PUSH2 0x133E JUMP JUMPDEST PUSH2 0x75A PUSH2 0x1376 JUMP JUMPDEST PUSH2 0x763 DUP5 PUSH2 0x877 JUMP JUMPDEST PUSH2 0x76E DUP4 PUSH1 0x0 PUSH2 0xE0D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77A DUP6 DUP6 PUSH2 0x1506 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x565 PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x397 CALLER DUP3 PUSH2 0x16E2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7EA PUSH2 0x1762 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xBD291FFCCEC065968FE20C5F8DEBDAD73AB50837733F357EEAE8814178015A90 DUP5 DUP5 PUSH2 0x81D DUP8 PUSH2 0x685 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x830 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2268 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x856 DUP5 DUP3 DUP5 PUSH2 0x1F8 PUSH2 0x17FF JUMP JUMPDEST PUSH2 0x550 DUP5 DUP5 PUSH2 0x16E2 JUMP JUMPDEST PUSH2 0x871 PUSH1 0x2 DUP1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x2 DUP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x10AE75700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x10AE757 SWAP1 PUSH2 0x8DF SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2187 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x90B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x92F SWAP2 SWAP1 PUSH2 0x211D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x93C JUMPI POP PUSH2 0x397 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0x9A9 JUMPI PUSH2 0x9A2 DUP6 PUSH32 0x0 PUSH1 0x0 DUP8 PUSH2 0x183A JUMP JUMPDEST SWAP1 POP PUSH2 0x9FC JUMP JUMPDEST TIMESTAMP DUP3 LT PUSH2 0x9B9 JUMPI POP POP POP POP PUSH2 0x397 JUMP JUMPDEST POP DUP2 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 DUP2 DUP6 SUB GT ISZERO PUSH2 0x9FC JUMPI PUSH2 0x9F9 DUP6 DUP4 DUP4 DUP8 PUSH2 0x183A JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH2 0xA05 JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0xA0D PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xA74 SWAP1 DUP10 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2203 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAC4 SWAP2 SWAP1 PUSH2 0x20AE JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0xB98 JUMPI PUSH32 0x0 TIMESTAMP GT PUSH2 0xB2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB24 SWAP1 PUSH2 0x2388 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB63 PUSH32 0x0 PUSH2 0xB5E DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x194E JUMP JUMPDEST PUSH2 0x195E JUMP JUMPDEST DUP5 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND OR DUP6 SSTORE SWAP3 POP JUMPDEST PUSH2 0xBA0 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x32 DUP2 LT ISZERO PUSH2 0xD6B JUMPI DUP3 PUSH1 0x40 ADD MLOAD DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xBC0 JUMPI POP DUP7 DUP5 GT ISZERO JUMPDEST ISZERO PUSH2 0xCC7 JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP DUP3 SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0xC08 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP PUSH2 0xCC2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xC6F SWAP1 DUP12 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2203 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC9B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCBF SWAP2 SWAP1 PUSH2 0x20AE JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH2 0xD63 JUMP JUMPDEST TIMESTAMP DUP6 LT PUSH2 0xCD3 JUMPI PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 ADD MLOAD DUP7 SUB SWAP1 POP PUSH1 0x0 DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL PUSH1 0xF SIGNEXTEND DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xF SIGNEXTEND SGT PUSH2 0xCFE JUMPI PUSH1 0x0 PUSH2 0xD0F JUMP JUMPDEST DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL DUP5 PUSH1 0x0 ADD MLOAD SUB PUSH1 0xF SIGNEXTEND JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0xD1E JUMPI POP DUP9 DUP7 GT JUMPDEST ISZERO PUSH2 0xD35 JUMPI PUSH2 0xD2C TIMESTAMP PUSH2 0x194E JUMP JUMPDEST SWAP7 POP POP POP PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE POP PUSH3 0x93A80 SWAP1 SWAP5 ADD SWAP4 JUMPDEST PUSH1 0x1 ADD PUSH2 0xBA3 JUMP JUMPDEST POP POP DUP4 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 ADD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP3 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SWAP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0xEE4 JUMPI TIMESTAMP SWAP2 POP PUSH2 0xE52 TIMESTAMP PUSH2 0x196A JUMP JUMPDEST DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR DUP4 SSTORE PUSH32 0x0 TIMESTAMP GT PUSH2 0xEDF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB24 SWAP1 PUSH2 0x2388 JUMP JUMPDEST PUSH2 0xF36 JUMP JUMPDEST DUP2 TIMESTAMP SUB SWAP1 POP DUP4 PUSH2 0xF36 JUMPI PUSH1 0x0 PUSH2 0xEF9 DUP4 PUSH2 0x196A JUMP JUMPDEST PUSH2 0xF02 TIMESTAMP PUSH2 0x196A JUMP JUMPDEST EQ SWAP1 POP PUSH1 0x0 PUSH3 0x15180 TIMESTAMP PUSH2 0xF15 TIMESTAMP PUSH2 0x194E JUMP JUMPDEST SUB LT SWAP1 POP DUP2 DUP1 ISZERO PUSH2 0xF24 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xF33 JUMPI POP POP POP POP POP PUSH2 0x457 JUMP JUMPDEST POP POP JUMPDEST DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 TIMESTAMP PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xFBB SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2187 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x100B SWAP2 SWAP1 PUSH2 0x211D JUMP JUMPDEST DUP5 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1044 SWAP1 DUP4 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1976 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1055 JUMPI POP POP POP POP POP PUSH2 0x457 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x109F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB24 SWAP1 PUSH2 0x2351 JUMP JUMPDEST DUP5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP2 AND OR DUP6 SSTORE PUSH1 0x0 PUSH2 0x10D8 DUP6 PUSH2 0x196A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP3 POP SWAP1 DUP2 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x11C8 JUMPI DUP4 PUSH3 0x93A80 ADD SWAP3 POP DUP3 TIMESTAMP LT ISZERO PUSH2 0x1166 JUMPI DUP7 ISZERO DUP1 ISZERO PUSH2 0x111C JUMPI POP DUP8 TIMESTAMP EQ JUMPDEST ISZERO PUSH2 0x113A JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x1161 JUMP JUMPDEST DUP7 DUP9 TIMESTAMP SUB DUP7 MUL DUP2 PUSH2 0x1147 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH2 0x11C8 JUMP JUMPDEST DUP7 ISZERO DUP1 ISZERO PUSH2 0x1173 JUMPI POP DUP8 DUP4 EQ JUMPDEST ISZERO PUSH2 0x1191 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x11B8 JUMP JUMPDEST DUP7 DUP9 DUP5 SUB DUP7 MUL DUP2 PUSH2 0x119E JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST SWAP2 SWAP7 POP DUP7 SWAP3 POP DUP3 SWAP2 PUSH1 0x1 ADD PUSH2 0x10F6 JUMP JUMPDEST POP PUSH32 0x9B7F1A85A4C9B4E59E1B6527D9969C50CDFB3A1A467D0C4A51FB0ED8BF07F130 DUP11 DUP6 DUP10 PUSH1 0x40 MLOAD PUSH2 0x11FC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2330 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x550 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1231 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x219B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1984 JUMP JUMPDEST PUSH2 0x457 DUP2 DUP4 EQ PUSH1 0x67 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x12F5 JUMPI SWAP1 POP PUSH2 0x565 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP8 AND DUP4 MSTORE PUSH1 0x5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x1336 SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND PUSH2 0x195E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x397 JUMPI PUSH2 0x397 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ PUSH2 0x191 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 PUSH2 0x1384 TIMESTAMP PUSH2 0x196A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT DUP1 PUSH2 0x1393 JUMPI POP TIMESTAMP DUP2 EQ JUMPDEST ISZERO PUSH2 0x139F JUMPI POP POP PUSH2 0x73C JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC2C4C5C1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x140E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x14FF JUMPI DUP2 DUP4 GT ISZERO PUSH2 0x142B JUMPI PUSH2 0x14FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xBD85B039 SWAP1 PUSH2 0x1490 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x225F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14E0 SWAP2 SWAP1 PUSH2 0x211D JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH3 0x93A80 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1415 JUMP JUMPDEST POP POP PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 PUSH2 0x1529 DUP6 DUP6 PUSH2 0x12C0 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP2 PUSH2 0x159C SWAP2 PUSH2 0x1576 SWAP2 PUSH2 0x1571 SWAP2 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1A24 JUMP JUMPDEST PUSH2 0x194E JUMP JUMPDEST DUP5 SLOAD PUSH2 0x1597 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x196A JUMP JUMPDEST PUSH2 0x1A24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SWAP3 SWAP4 POP SWAP1 SWAP2 SWAP1 DUP1 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x1620 JUMPI DUP5 DUP7 LT PUSH2 0x15E1 JUMPI PUSH2 0x1620 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP7 DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD SWAP3 DUP9 SWAP1 MSTORE SWAP3 KECCAK256 SLOAD MUL DUP2 PUSH2 0x1609 JUMPI INVALID JUMPDEST PUSH3 0x93A80 SWAP8 SWAP1 SWAP8 ADD SWAP7 DIV SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x15CC JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP6 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x16D6 JUMPI DUP6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP5 SWAP1 SUB DUP3 AND MUL SWAP2 AND OR DUP7 SSTORE PUSH2 0x1698 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP11 DUP4 PUSH2 0x1A30 JUMP JUMPDEST PUSH32 0xFF097C7D8B1957A4FF09EF1361B5FB54DCEDE3941BA836D0BEB9D10BEC725DE6 DUP10 DUP10 DUP4 DUP9 PUSH1 0x40 MLOAD PUSH2 0x16CD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x21DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0xAC9874A7A931A3F5C9F202C6D9CF40DE5D21506993C9F9C38CA8265ADD89584C SWAP1 PUSH2 0x1756 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x21BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x17CF PUSH2 0x1A54 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x17E4 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x228E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x550 DUP5 DUP5 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 PUSH2 0x1A58 JUMP JUMPDEST DUP2 PUSH2 0x457 JUMPI PUSH2 0x457 DUP2 PUSH2 0x1AAF JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP3 JUMPDEST PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1942 JUMPI DUP2 DUP4 LT PUSH2 0x1855 JUMPI PUSH2 0x1942 JUMP JUMPDEST PUSH1 0x2 DUP3 DUP5 ADD DUP2 ADD DIV PUSH2 0x1865 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0x18CC SWAP1 DUP14 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2203 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x191C SWAP2 SWAP1 PUSH2 0x20AE JUMP JUMPDEST SWAP1 POP DUP9 DUP2 PUSH1 0x40 ADD MLOAD GT PUSH2 0x1931 JUMPI DUP2 SWAP5 POP PUSH2 0x1938 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1840 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x565 PUSH3 0x93A7F DUP4 ADD PUSH2 0x196A JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 LT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x562 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1AD9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x19A0 SWAP2 SWAP1 PUSH2 0x2135 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x19DD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x19E2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x19FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x550 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1A1C JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1A1C SWAP2 SWAP1 PUSH2 0x2052 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x182C JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x1A4F DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1231 SWAP3 SWAP2 SWAP1 PUSH2 0x2203 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A63 DUP6 PUSH2 0x1AEF JUMP JUMPDEST SWAP1 POP PUSH2 0x1A79 PUSH2 0x1A73 DUP8 DUP4 DUP8 PUSH2 0x1B28 JUMP JUMPDEST DUP4 PUSH2 0x182C JUMP JUMPDEST PUSH2 0x1A88 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x182C JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x397 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1C16 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AE8 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x182C JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AF9 PUSH2 0x1762 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1B0B SWAP3 SWAP2 SWAP1 PUSH2 0x2151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B3C DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C91 JUMP JUMPDEST ISZERO PUSH2 0x1C04 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP1 DUP3 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x1626BA7E SWAP1 PUSH2 0x1B8A SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x22BA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BDA SWAP2 SWAP1 PUSH2 0x206E JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ SWAP1 POP PUSH2 0x67E JUMP JUMPDEST PUSH2 0x1C0F DUP5 DUP5 DUP5 PUSH2 0x1C97 JUMP JUMPDEST SWAP1 POP PUSH2 0x67E JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CA9 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x20 DUP3 DUP2 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD DUP3 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP6 ADD SWAP3 DUP4 SWAP1 MSTORE SWAP3 SWAP4 SWAP1 SWAP3 DUP2 BYTE SWAP2 PUSH1 0x1 SWAP1 PUSH2 0x1CE2 SWAP1 DUP10 SWAP1 DUP6 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x2312 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x16D6 JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1DA2 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1DB9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1DD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x565 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DFD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x67E DUP2 PUSH2 0x2438 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1E1C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1E27 DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E42 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1E4E DUP7 DUP3 DUP8 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1E6F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1E7A DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 DUP2 ADD CALLDATALOAD PUSH2 0x1E8B DUP2 PUSH2 0x244D JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1EA7 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1EBA JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1EC8 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1EF8 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x23E5 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP9 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1F0D JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY DUP5 DUP5 DUP3 DUP5 ADD ADD MSTORE POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F3C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1F47 DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1F57 DUP2 PUSH2 0x2438 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F74 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1F7F DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F9F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1FB5 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1FC1 DUP6 DUP3 DUP7 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1FE2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1FF9 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2005 DUP9 DUP4 DUP10 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x201D JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x202A DUP8 DUP3 DUP9 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2047 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x67E DUP2 PUSH2 0x244D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2063 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x67E DUP2 PUSH2 0x244D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x207F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x67E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20BF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x20C9 PUSH1 0x80 PUSH2 0x23E5 JUMP JUMPDEST PUSH2 0x20D3 DUP5 DUP5 PUSH2 0x1DDA JUMP JUMPDEST DUP2 MSTORE PUSH2 0x20E2 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1DDA JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2116 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x212E JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2147 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x240C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1942 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2238 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x22DF DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x240C JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6178696D756D20746F6B656E2062616C616E63652065786365656465640000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x46656520646973747269627574696F6E20686173206E6F742073746172746564 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2079657400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2427 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x240F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x550 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D PUSH17 0xAB73116986917A5E903C96AC6FC54ACBC4 0xAE PUSH19 0xEF90B05C76AE9F48CC9BA164736F6C63430007 ADD STOP CALLER ","sourceMap":"797:369:125:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4489:111:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10104:114;;;;;;:::i;:::-;;:::i;:::-;;7175:140;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1018:146:125:-;;;;;;:::i;:::-;;:::i;8423:236:82:-;;;;;;:::i;:::-;;:::i;10738:116::-;;;;;;:::i;:::-;;:::i;6938:144::-;;;;;;:::i;:::-;;:::i;9022:463::-;;;;;;:::i;:::-;;:::i;5712:161::-;;;;;;:::i;:::-;;:::i;4720:101::-;;;:::i;5000:133::-;;;;;;:::i;:::-;;:::i;12773:569::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1303:121:47:-;;;;;;:::i;:::-;;:::i;11190:246:82:-;;;;;;:::i;:::-;;:::i;2247:131:49:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5329:136:82:-;;;;;;:::i;:::-;;:::i;9725:94::-;;;:::i;11950:360::-;;;;;;:::i;:::-;;:::i;7606:166::-;;;;;;:::i;:::-;;:::i;6363:173::-;;;;;;:::i;:::-;;:::i;1551:117:49:-;;;;;;:::i;:::-;;:::i;1184:113:47:-;;;:::i;1674:398:49:-;;;;;;:::i;:::-;;:::i;4489:111:82:-;4580:13;4489:111;:::o;10104:114::-;2613:20:63;:18;:20::i;:::-;10183:28:82::1;10206:4;10183:22;:28::i;:::-;2654:19:63::0;:17;:19::i;:::-;10104:114:82;:::o;7175:140::-;-1:-1:-1;;;;;7276:18:82;7250:7;7276:18;;;:11;:18;;;;;:32;;;;;;;7175:140::o;1018:146:125:-;-1:-1:-1;;;;;1119:16:125;1093:7;1119:16;;;:10;:16;;;;;:38;;;;;;;1018:146::o;8423:236:82:-;2613:20:63;:18;:20::i;:::-;8516:30:82::1;8533:5;8540;8516:16;:30::i;:::-;8556:57;-1:-1:-1::0;;;;;8556:22:82;::::1;8579:10;8599:4;8606:6:::0;8556:22:::1;:57::i;:::-;8623:29;8640:5;8647:4;8623:16;:29::i;:::-;2654:19:63::0;:17;:19::i;:::-;8423:236:82;;:::o;10738:116::-;2613:20:63;:18;:20::i;:::-;10818:29:82::1;10835:5;10842:4;10818:16;:29::i;6938:144::-:0;7024:7;7050:25;;;:14;:25;;;;;;;6938:144::o;9022:463::-;2613:20:63;:18;:20::i;:::-;9140:66:82::1;9176:6:::0;9191:7;9140:35:::1;:66::i;:::-;9234:6:::0;9217:14:::1;9257:222;9281:6;9277:1;:10;9257:222;;;9308:34;9325:6;;9332:1;9325:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;9336:5;9308:16;:34::i;:::-;9356:65;9383:10;9403:4;9410:7;;9418:1;9410:10;;;;;;;;;;;;;9356:6;;9363:1;9356:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9356:26:82::1;::::0;:65;;:26:::1;:65::i;:::-;9435:33;9452:6;;9459:1;9452:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;9463:4;9435:16;:33::i;:::-;9289:3;;9257:222;;;;2643:1:63;2654:19:::0;:17;:19::i;:::-;9022:463:82;;;;:::o;5712:161::-;5804:7;5830:36;5854:4;5860:5;5830:23;:36::i;:::-;5823:43;;5712:161;;;;;:::o;4720:101::-;4803:11;;4720:101;:::o;5000:133::-;-1:-1:-1;;;;;5099:16:82;5073:7;5099:16;;;:10;:16;;;;;:27;;;;;;;5000:133::o;12773:569::-;12939:16;2613:20:63;:18;:20::i;:::-;12916:4:82::1;1508:19:49;1522:4;1508:13;:19::i;:::-;12971:24:82::2;:22;:24::i;:::-;13005:28;13028:4;13005:22;:28::i;:::-;13067:6:::0;13090:24:::2;13067:6:::0;13117:27:::2;::::0;::::2;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;13117:27:82::2;;13090:54;;13159:9;13154:157;13178:12;13174:1;:16;13154:157;;;13211:34;13228:6;;13235:1;13228:9;;;;;;13211:34;13272:28;13284:4;13290:6;;13297:1;13290:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;13272:11;:28::i;:::-;13259:7;13267:1;13259:10;;;;;;;;;::::0;;::::2;::::0;;;;;:41;13192:3:::2;;13154:157;;;-1:-1:-1::0;13328:7:82;-1:-1:-1;;2643:1:63::1;2654:19:::0;:17;:19::i;:::-;12773:569:82;;;;;:::o;1303:121:47:-;-1:-1:-1;;;;;1398:19:47;1372:7;1398:19;;;;;;;;;;;;1303:121::o;11190:246:82:-;2613:20:63;:18;:20::i;:::-;11306:6:82;11283:20:::1;11329:101;11353:12;11349:1;:16;11329:101;;;11386:33;11403:6;;11410:1;11403:9;;;;;;11386:33;11367:3;;11329:101;;;;2643:1:63;2654:19:::0;:17;:19::i;2247:131:49:-;-1:-1:-1;;;;;2345:26:49;2322:4;2345:26;;;:20;:26;;;;;;;;;2247:131::o;5329:136:82:-;-1:-1:-1;;;;;5429:18:82;5403:7;5429:18;;;:11;:18;;;;;:29;;;;;;;5329:136::o;9725:94::-;2613:20:63;:18;:20::i;:::-;9788:24:82::1;:22;:24::i;:::-;2654:19:63::0;:17;:19::i;:::-;9725:94:82:o;11950:360::-;12103:7;2613:20:63;:18;:20::i;:::-;12080:4:82::1;1508:19:49;1522:4;1508:13;:19::i;:::-;12126:24:82::2;:22;:24::i;:::-;12160:28;12183:4;12160:22;:28::i;:::-;12198:30;12215:5;12222;12198:16;:30::i;:::-;12239:14;12256:24;12268:4;12274:5;12256:11;:24::i;:::-;12239:41:::0;-1:-1:-1;;2643:1:63::1;2654:19:::0;:17;:19::i;7606:166:82:-;-1:-1:-1;;;;;7733:21:82;;;;7707:7;7733:21;;;:14;:21;;;;;;;;:32;;;;;;;;;7606:166::o;6363:173::-;-1:-1:-1;;;;;6489:29:82;;;;6463:7;6489:29;;;:23;:29;;;;;;;;:40;;;;;;;;;6363:173::o;1551:117:49:-;1621:40;1641:10;1653:7;1621:19;:40::i;1184:113:47:-;1244:7;1270:20;:18;:20::i;:::-;1263:27;;1184:113;:::o;1674:398:49:-;1825:18;1144:86;1900:4;1906:7;1915:18;1928:4;1915:12;:18::i;:::-;1856:78;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1846:89;;;;;;1825:110;;1945:76;1967:4;1973:10;1985:9;13190:3:31;1945:21:49;:76::i;:::-;2031:34;2051:4;2057:7;2031:19;:34::i;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:18;;2686:271::o;20783:6075:82:-;20871:36;;;;;20848:20;;-1:-1:-1;;;;;20871:13:82;:30;;;;:36;;20902:4;;20871:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20848:59;-1:-1:-1;21042:17:82;21038:30;;21061:7;;;21038:30;-1:-1:-1;;;;;21108:16:82;;21078:27;21108:16;;;:10;:16;;;;;21338:20;;21108:16;;21338:20;;;;;;;;21396:1576;;21534:58;21558:4;21564:10;21576:1;21579:12;21534:23;:58::i;:::-;21522:70;;21396:1576;;;21651:15;21627:20;:39;21623:416;;22018:7;;;;;;21623:416;-1:-1:-1;22125:31:82;;;;;;;22837:2;22810:24;;;:29;22806:156;;;22871:76;22895:4;22901:20;22923:9;22934:12;22871:23;:76::i;:::-;22859:88;;22806:156;23082:14;23078:58;;-1:-1:-1;23124:1:82;23078:58;23146:40;;:::i;:::-;23189:49;;;;;-1:-1:-1;;;;;23189:13:82;:32;;;;:49;;23222:4;;23228:9;;23189:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23146:92;-1:-1:-1;23513:25:82;23509:349;;23638:10;23620:15;:28;23612:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;23726:57;23735:10;23747:35;23765:13;:16;;;23747:17;:35::i;:::-;23726:8;:57::i;:::-;23797:50;;;;;;;;;;;-1:-1:-1;23509:349:82;24068:43;;:::i;:::-;24126:9;24121:2279;24145:2;24141:1;:6;24121:2279;;;24196:13;:16;;;24172:20;:40;;:69;;;;;24229:12;24216:9;:25;;24172:69;24168:2222;;;24731:1;24718:14;;;;24769:13;24750:32;;24816:12;24804:9;:24;24800:230;;;24868:31;;;;;;;;24888:1;24868:31;;;;;;24891:1;24868:31;;;;;;24894:1;24868:31;;;;24897:1;24868:31;;;24852:47;;24800:230;;;24962:49;;;;;-1:-1:-1;;;;;24962:13:82;:32;;;;:49;;24995:4;;25001:9;;24962:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24946:65;;24800:230;24168:2222;;;25296:15;25272:20;:39;25268:349;;25593:5;;25268:349;25635:9;25677:16;:19;;;25654:20;:42;25635:62;;25715:19;25786:2;25761:16;:22;;;:27;25737:51;;:16;:21;;;:51;;;:158;;25894:1;25737:158;;;25868:2;25843:16;:22;;;:27;25819:16;:21;;;:51;25811:60;;25737:158;25715:180;-1:-1:-1;25992:16:82;;:44;;;;;26024:12;26012:9;:24;25992:44;25988:175;;;26083:34;26101:15;26083:17;:34::i;:::-;26060:57;;26139:5;;;;25988:175;-1:-1:-1;;;;;26260:29:82;;;;;;:23;:29;;;;;;;;:51;;;;;;;;:65;-1:-1:-1;26368:7:82;26344:31;;;;24168:2222;24149:3;;24121:2279;;;-1:-1:-1;;26735:55:82;;;;26776:13;;;;;26735:55;;;;;;;;;;26800:51;;;;;;;;;;;;;;;-1:-1:-1;;;20783:6075:82:o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;15951:4718:82:-;-1:-1:-1;;;;;16054:18:82;;16022:29;16054:18;;;:11;:18;;;;;16106:21;;16054:18;;16106:21;;;;;;;;16178:1820;;16433:15;16417:31;;16492:36;16512:15;16492:19;:36::i;:::-;16462:67;;;;;;;;;;;;16648:10;16630:15;:28;16622:77;;;;;;;;;;;;:::i;:::-;16178:1820;;;16774:13;16756:15;:31;16730:57;;16807:5;16802:1186;;17170:32;17265:34;17285:13;17265:19;:34::i;:::-;17205:36;17225:15;17205:19;:36::i;:::-;:94;17170:129;;17551:21;17630:6;17612:15;17575:34;17593:15;17575:17;:34::i;:::-;:52;:61;17551:85;;17877:27;:48;;;;;17909:16;17908:17;17877:48;17873:101;;;17949:7;;;;;;;17873:101;16802:1186;;;18008:47;;;;;18039:15;18008:47;;;;;;18089:30;;;;;-1:-1:-1;;;;;;;18089:15:82;;;;;:30;;18113:4;;18089:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18178:24;;18066:53;;-1:-1:-1;18129:29:82;;18161:42;;18066:53;;18178:24;;;;;18161:16;:42::i;:::-;18129:74;-1:-1:-1;18217:26:82;18213:39;;18245:7;;;;;;;18213:39;18285:17;18269:33;;;18261:76;;;;;;;;;;;;:::i;:::-;18347:48;;;;;;;;;;;;;:24;18436:34;18456:13;18436:19;:34::i;:::-;-1:-1:-1;;;;;18778:21:82;;18480:16;18778:21;;;:14;:21;;;;;18406:64;;-1:-1:-1;18480:16:82;;18809:1776;18833:2;18829:1;:6;18809:1776;;;18930:19;18952:7;18930:29;18919:40;;18995:8;18977:15;:26;18973:1405;;;19144:28;;:64;;;;;19195:13;19176:15;:32;19144:64;19140:459;;;19232:34;;;;;;;;;;;:59;;;;;;19140:459;;;19557:23;19515:13;19497:15;:31;19472:21;:57;19471:109;;;;;19409:34;;;;;;;;;;;:171;;19471:109;;;;19409:171;;;;;19140:459;19695:5;;18973:1405;19863:28;;:57;;;;;19907:13;19895:8;:25;19863:57;19859:505;;;20012:34;;;;;;;;;;;:59;;;;;;19859:505;;;20322:23;20280:13;20269:8;:24;20244:21;:50;20243:102;;;;;20181:34;;;;;;;;;;;:164;;20243:102;;;;20181:164;;;;;19859:505;20522:8;;-1:-1:-1;20522:8:82;;-1:-1:-1;20522:8:82;;18837:3;;18809:1776;;;;20600:62;20618:5;20625:21;20648:13;20600:62;;;;;;;;:::i;:::-;;;;;;;;15951:4718;;;;;;;;;;:::o;1734:250:64:-;1872:105;1900:5;1931:27;;;1960:4;1966:2;1970:5;1908:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1872:19;:105::i;920:131:48:-;998:46;1012:1;1007;:6;5826:3:31;998:8:48;:46::i;28204:507:82:-;-1:-1:-1;;;;;28332:26:82;;;28288:7;28332:26;;;:20;:26;;;;;;;;:33;;;;;;;;;;;;28379:18;;28375:45;;28406:14;-1:-1:-1;28399:21:82;;28375:45;-1:-1:-1;;;;;28647:16:82;;;;;;;:10;:16;;;;;;;;:26;28675:18;;;;;:11;:18;;;;;:28;28638:66;;28647:26;;;;;28675:28;28638:8;:66::i;:::-;28631:73;28204:507;-1:-1:-1;;;;28204:507:82:o;2384:178:49:-;-1:-1:-1;;;;;2448:26:49;;;;;;:20;:26;;;;;;;;2444:112;;;2490:55;2499:10;-1:-1:-1;;;;;2499:18:49;;;10270:3:31;2490:8:49;:55::i;26970:1024:82:-;27054:11;;27023:28;27095:36;27115:15;27095:19;:36::i;:::-;27075:56;;27249:9;27226:20;:32;:64;;;;27275:15;27262:9;:28;27226:64;27222:183;;;27388:7;;;;27222:183;27415:13;-1:-1:-1;;;;;27415:24:82;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27560:9;27555:310;27579:2;27575:1;:6;27555:310;;;27629:9;27606:20;:32;27602:43;;;27640:5;;27602:43;27699:47;;;;;-1:-1:-1;;;;;27699:13:82;:25;;;;:47;;27725:20;;27699:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27660:36;;;;:14;:36;;;;;:86;27847:7;27823:31;;;;27583:3;;27555:310;;;-1:-1:-1;;27953:11:82;:34;26970:1024::o;13530:2283::-;-1:-1:-1;;;;;13648:18:82;;13597:7;13648:18;;;:11;:18;;;;;13597:7;13711:36;13735:4;13660:5;13711:23;:36::i;:::-;14490:11;;-1:-1:-1;;;;;14503:16:82;;14410:28;14503:16;;;:10;:16;;;;;:27;13676:71;;-1:-1:-1;14410:28:82;14441:157;;14463:69;;14481:50;;14490:11;14503:27;;;;;14481:8;:50::i;:::-;14463:17;:69::i;:::-;14566:21;;14546:42;;14566:21;;;;;14546:19;:42::i;:::-;14441:8;:157::i;:::-;-1:-1:-1;;;;;14661:21:82;;;14609:49;14661:21;;;:14;:21;;;;;;;;14753:29;;;;;:23;:29;;;;;14410:188;;-1:-1:-1;14661:21:82;;14753:29;14609:49;14817:446;14841:2;14837:1;:6;14817:446;;;14984:20;14956:24;:48;14952:59;;15006:5;;14952:59;15163:40;;;;:14;:40;;;;;;;;;15095:48;;;;;;;15053:39;;;;;;;:90;15163:40;15052:151;;;;15245:7;15217:35;;;;;15052:151;15026:177;;;;;14845:3;;14817:446;;;-1:-1:-1;;;;;;15371:26:82;;;;;;;:20;:26;;;;;;;;:33;;;;;;;;;:60;;;15446:10;;15442:341;;15613:24;;;;;;;;;:33;;;15578:69;;;;;;;;15661:32;-1:-1:-1;;;;;15661:18:82;;15680:4;15640:6;15661:18;:32::i;:::-;15712:60;15726:4;15732:5;15739:6;15747:24;15712:60;;;;;;;;;:::i;:::-;;;;;;;;15442:341;15800:6;13530:2283;-1:-1:-1;;;;;;;;13530:2283:82:o;2078:163:49:-;-1:-1:-1;;;;;2153:26:49;;;;;;:20;:26;;;;;;;:36;;;;;;;;;;2204:30;;;;;2153:26;;:36;;2204:30;:::i;:::-;;;;;;;;2078:163;;:::o;2386:188:58:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;1430:265:47:-;1605:83;1627:7;1636:10;1648:9;1659:17;1678:9;1605:21;:83::i;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;28827:919:82:-;28998:7;29031:12;29067;28998:7;29175:545;29199:3;29195:1;:7;29175:545;;;29234:3;29227;:10;29223:21;;29239:5;;29223:21;29442:1;29425:9;;;:13;;29424:19;29457:29;;:::i;:::-;29489:43;;;;;-1:-1:-1;;;;;29489:13:82;:32;;;;:43;;29522:4;;29528:3;;29489:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29457:75;;29559:9;29550:2;:5;;;:18;29546:164;;29594:3;29588:9;;29546:164;;;29694:1;29688:3;:7;29682:13;;29546:164;-1:-1:-1;;29204:3:82;;29175:545;;;-1:-1:-1;29736:3:82;;28827:919;-1:-1:-1;;;;;;28827:919:82:o;30186:212::-;30254:7;30347:44;30367:23;;;30347:19;:44::i;1922:228:55:-;2113:9;;;2124:8;;;2109:24;2102:32;;;2078:66::o;29871:196:82:-;30042:7;30030:19;;;;30029:31;;29871:196::o;1404:121:65:-;1462:7;1488:30;1492:1;1495;5194::31;1488:3:65;:30::i;2324:914:64:-;2626:12;2640:23;2667:5;-1:-1:-1;;;;;2667:10:64;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:31;3134:8:64;:97::i;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;1514:214:64:-;1626:95;1654:5;1685:23;;;1710:2;1714:5;1662:58;;;;;;;;;:::i;1626:95::-;1514:214;;;:::o;3433:187:58:-;3595:9;;3570:44::o;1701:1214:47:-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:31;2487:8:47;:63::i;:::-;-1:-1:-1;;;;;;;;2884:19:47;;;:10;:19;;;;;;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:47:o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;1816:206:65:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:65;;;1816:206::o;3199:183:58:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;1045:414:50:-;1199:4;1219:20;:7;-1:-1:-1;;;;;1219:18:50;;:20::i;:::-;1215:238;;;1262:53;;1319:34;1262:53;;;1319:34;-1:-1:-1;;;;;1262:34:50;;;1319;;1262:53;;1297:6;;1305:9;;1262:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:91;;;;-1:-1:-1;1255:98:50;;1215:238;1391:51;1415:7;1424:6;1432:9;1391:23;:51::i;:::-;1384:58;;;;1692:3378:31;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1031:433:56;1403:20;1449:8;;;1031:433::o;2921:876:47:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:31;3082:8:47;:60::i;:::-;3427:4;3412:20;;;3406:27;3472:4;3457:20;;;3451:27;3525:4;3510:20;;3504:27;3579:26;;3153:9;3579:26;;;;;;;;;3406:27;;3451;;3496:36;;;3579:26;;;;3589:6;;3496:36;;3406:27;;3451;;3579:26;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:47;;;;;;-1:-1:-1;;;;;;;3728:30:47;;;;;;:61;;;3782:7;-1:-1:-1;;;;;3762:27:47;:16;-1:-1:-1;;;;;3762:27:47;;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:47:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;168:367::-;;;313:3;306:4;298:6;294:17;290:27;280:2;;-1:-1;;321:12;280:2;-1:-1;351:20;;391:18;380:30;;377:2;;;-1:-1;;413:12;377:2;457:4;449:6;445:17;433:29;;508:3;457:4;;492:6;488:17;449:6;474:32;;471:41;468:2;;;525:1;;515:12;468:2;273:262;;;;;:::o;1942:132::-;2019:13;;23087:2;23076:21;;;25194:34;;25184:2;;25242:1;;25232:12;3203:241;;3307:2;3295:9;3286:7;3282:23;3278:32;3275:2;;;-1:-1;;3313:12;3275:2;85:6;72:20;97:33;124:5;97:33;:::i;3451:552::-;;;;3622:2;3610:9;3601:7;3597:23;3593:32;3590:2;;;-1:-1;;3628:12;3590:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3680:63;-1:-1;3808:2;3793:18;;3780:32;3832:18;3821:30;;3818:2;;;-1:-1;;3854:12;3818:2;3892:95;3979:7;3970:6;3959:9;3955:22;3892:95;:::i;:::-;3584:419;;3874:113;;-1:-1;3874:113;;-1:-1;;;;3584:419::o;4010:589::-;;;;4154:2;4142:9;4133:7;4129:23;4125:32;4122:2;;;-1:-1;;4160:12;4122:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4212:63;-1:-1;4312:2;4348:22;;;985:20;1010:30;985:20;1010:30;:::i;:::-;4320:60;-1:-1;4445:2;4430:18;;4417:32;4469:18;4458:30;;;4455:2;;;-1:-1;;4491:12;4455:2;4566:6;4555:9;4551:22;;;1428:3;1421:4;1413:6;1409:17;1405:27;1395:2;;-1:-1;;1436:12;1395:2;1483:6;1470:20;4469:18;20907:6;20904:30;20901:2;;;-1:-1;;20937:12;20901:2;1505:64;4312:2;21010:9;1421:4;20995:6;20991:17;20987:33;21068:15;1505:64;:::i;:::-;1496:73;;1589:6;1582:5;1575:21;1693:3;4312:2;1684:6;1617;1675:16;;1672:25;1669:2;;;-1:-1;;1700:12;1669:2;24083:6;4312:2;1617:6;1613:17;4312:2;1651:5;1647:16;24060:30;-1:-1;4312:2;24130:6;1651:5;24121:16;;24114:27;;4511:72;;;;;;4116:483;;;;;:::o;4606:396::-;;;4742:2;4730:9;4721:7;4717:23;4713:32;4710:2;;;-1:-1;;4748:12;4710:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4800:63;-1:-1;4900:2;4954:22;;1857:20;1882:48;1857:20;1882:48;:::i;:::-;4908:78;;;;4704:298;;;;;:::o;5009:366::-;;;5130:2;5118:9;5109:7;5105:23;5101:32;5098:2;;;-1:-1;;5136:12;5098:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5188:63;5288:2;5327:22;;;;2992:20;;-1:-1;;;5092:283::o;5382:427::-;;;5536:2;5524:9;5515:7;5511:23;5507:32;5504:2;;;-1:-1;;5542:12;5504:2;5600:17;5587:31;5638:18;5630:6;5627:30;5624:2;;;-1:-1;;5660:12;5624:2;5698:95;5785:7;5776:6;5765:9;5761:22;5698:95;:::i;:::-;5680:113;;;;-1:-1;5498:311;-1:-1;;;;5498:311::o;5816:708::-;;;;;6022:2;6010:9;6001:7;5997:23;5993:32;5990:2;;;-1:-1;;6028:12;5990:2;6086:17;6073:31;6124:18;;6116:6;6113:30;6110:2;;;-1:-1;;6146:12;6110:2;6184:95;6271:7;6262:6;6251:9;6247:22;6184:95;:::i;:::-;6166:113;;-1:-1;6166:113;-1:-1;6344:2;6329:18;;6316:32;;-1:-1;6357:30;;;6354:2;;;-1:-1;;6390:12;6354:2;;6428:80;6500:7;6491:6;6480:9;6476:22;6428:80;:::i;:::-;5984:540;;;;-1:-1;6410:98;-1:-1;;;;5984:540::o;6531:235::-;;6632:2;6620:9;6611:7;6607:23;6603:32;6600:2;;;-1:-1;;6638:12;6600:2;998:6;985:20;1010:30;1034:5;1010:30;:::i;6773:257::-;;6885:2;6873:9;6864:7;6860:23;6856:32;6853:2;;;-1:-1;;6891:12;6853:2;1133:6;1127:13;1145:30;1169:5;1145:30;:::i;7037:261::-;;7151:2;7139:9;7130:7;7126:23;7122:32;7119:2;;;-1:-1;;7157:12;7119:2;1270:6;1264:13;22823:66;24945:5;22812:78;24921:5;24918:34;24908:2;;-1:-1;;24956:12;7986:310;;8124:3;8112:9;8103:7;8099:23;8095:33;8092:2;;;-1:-1;;8131:12;8092:2;2273:20;8124:3;2273:20;:::i;:::-;2375:59;2430:3;2406:22;2375:59;:::i;:::-;2357:16;2350:85;2530:59;2585:3;2497:2;2565:9;2561:22;2530:59;:::i;:::-;2497:2;2516:5;2512:16;2505:85;2649:2;2718:9;2714:22;3140:13;2649:2;2668:5;2664:16;2657:86;2803:2;2872:9;2868:22;3140:13;2803:2;2822:5;2818:16;2811:86;8183:97;;;;8086:210;;;;:::o;8303:241::-;;8407:2;8395:9;8386:7;8382:23;8378:32;8375:2;;;-1:-1;;8413:12;8375:2;-1:-1;2992:20;;8369:175;-1:-1;8369:175::o;8551:263::-;;8666:2;8654:9;8645:7;8641:23;8637:32;8634:2;;;-1:-1;;8672:12;8634:2;-1:-1;3140:13;;8628:186;-1:-1;8628:186::o;12767:271::-;;10752:5;21361:12;10863:52;10908:6;10903:3;10896:4;10889:5;10885:16;10863:52;:::i;:::-;10927:16;;;;;12901:137;-1:-1;;12901:137::o;13045:659::-;11591:66;11571:87;;11556:1;11677:11;;10034:37;;;;13556:12;;;10034:37;13667:12;;;13290:414::o;13711:222::-;-1:-1;;;;;23171:54;;;;9074:37;;13838:2;13823:18;;13809:124::o;13940:444::-;-1:-1;;;;;23171:54;;;9074:37;;23171:54;;;;14287:2;14272:18;;9074:37;14370:2;14355:18;;10034:37;;;;14123:2;14108:18;;14094:290::o;14391:321::-;-1:-1;;;;;23171:54;;;;9074:37;;22646:13;22639:21;14698:2;14683:18;;9917:34;14540:2;14525:18;;14511:201::o;14719:586::-;-1:-1;;;;;23171:54;;;9074:37;;23171:54;;;;15125:2;15110:18;;11041:65;15208:2;15193:18;;10034:37;15291:2;15276:18;;10034:37;;;;14945:3;14930:19;;14916:389::o;15312:333::-;-1:-1;;;;;23171:54;;;;9074:37;;15631:2;15616:18;;10034:37;15467:2;15452:18;;15438:207::o;15652:370::-;15829:2;15843:47;;;21361:12;;15814:18;;;21764:19;;;15652:370;;15829:2;21215:14;;;;21804;;;;15652:370;9562:260;9587:6;9584:1;9581:13;9562:260;;;9648:13;;10034:37;;21619:14;;;;8975;;;;9609:1;9602:9;9562:260;;16029:210;22646:13;;22639:21;9917:34;;16150:2;16135:18;;16121:118::o;16246:222::-;10034:37;;;16373:2;16358:18;;16344:124::o;16475:544::-;10034:37;;;-1:-1;;;;;23171:54;;;;16845:2;16830:18;;9074:37;22646:13;22639:21;16922:2;16907:18;;9917:34;17005:2;16990:18;;10034:37;16680:3;16665:19;;16651:368::o;17026:668::-;10034:37;;;17430:2;17415:18;;10034:37;;;;17513:2;17498:18;;10034:37;;;;17596:2;17581:18;;10034:37;-1:-1;;;;;23171:54;17679:3;17664:19;;9074:37;17265:3;17250:19;;17236:458::o;17701:417::-;;10064:5;10041:3;10034:37;17874:2;17992;17981:9;17977:18;17970:48;10384:5;21361:12;21776:6;17874:2;17863:9;17859:18;21764:19;10477:52;10522:6;21804:14;17863:9;21804:14;17992:2;10503:5;10499:16;10477:52;:::i;:::-;24601:2;24581:14;24597:7;24577:28;10541:39;;;;21804:14;10541:39;;17845:273;-1:-1;;;17845:273::o;18125:548::-;10034:37;;;23387:4;23376:16;;;;18493:2;18478:18;;12720:35;18576:2;18561:18;;10034:37;18659:2;18644:18;;10034:37;18332:3;18317:19;;18303:370::o;18680:474::-;-1:-1;;;;;23171:54;;;;11041:65;;19057:2;19042:18;;10034:37;;;;19140:2;19125:18;;10034:37;18878:2;18863:18;;18849:305::o;19434:416::-;19634:2;19648:47;;;11927:2;19619:18;;;21764:19;11963:32;21804:14;;;11943:53;12015:12;;;19605:245::o;19857:416::-;20057:2;20071:47;;;12266:2;20042:18;;;21764:19;12302:34;21804:14;;;12282:55;12371:6;12357:12;;;12350:28;12397:12;;;20028:245::o;20509:256::-;20571:2;20565:9;20597:17;;;20672:18;20657:34;;20693:22;;;20654:62;20651:2;;;20729:1;;20719:12;20651:2;20571;20738:22;20549:216;;-1:-1;20549:216::o;24156:268::-;24221:1;24228:101;24242:6;24239:1;24236:13;24228:101;;;24309:11;;;24303:18;24290:11;;;24283:39;24264:2;24257:10;24228:101;;;24344:6;24341:1;24338:13;24335:2;;;-1:-1;;24221:1;24391:16;;24384:27;24205:219::o;24618:117::-;-1:-1;;;;;24705:5;23171:54;24680:5;24677:35;24667:2;;24726:1;;24716:12;24742:111;24823:5;22646:13;22639:21;24801:5;24798:32;24788:2;;24844:1;;24834:12"},"methodIdentifiers":{"checkpoint()":"c2c4c5c1","checkpointToken(address)":"3902b9bc","checkpointTokens(address[])":"905d10ac","checkpointUser(address)":"14866e08","claimToken(address,address)":"ca31879d","claimTokens(address,address[])":"88720467","depositToken(address,uint256)":"338b5dea","depositTokens(address[],uint256[])":"7b8d6221","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","getTimeCursor()":"82aa5ad4","getTokenLastBalance(address)":"2308805b","getTokenTimeCursor(address)":"acbc1428","getTokensDistributedInWeek(address,uint256)":"d3dc4ca1","getTotalSupplyAtTimestamp(uint256)":"4f3c5090","getUserBalanceAtTimestamp(address,uint256)":"de681faf","getUserLastEpochCheckpointed(address)":"286d5e7f","getUserTimeCursor(address)":"876e69a1","getUserTokenTimeCursor(address,address)":"8050a7ee","getVotingEscrow()":"08b0308a","isOnlyCallerEnabled(address)":"a1648aa5","setOnlyCallerCheck(bool)":"e811f44b","setOnlyCallerCheckWithSignature(address,bool,bytes)":"fcaa54ee"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"votingEscrow\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"OnlyCallerOptIn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastCheckpointTimestamp\",\"type\":\"uint256\"}],\"name\":\"TokenCheckpointed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"userTokenTimeCursor\",\"type\":\"uint256\"}],\"name\":\"TokensClaimed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"checkpointToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"checkpointTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"checkpointUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"depositTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenLastBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getTokensDistributedInWeek\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getTotalSupplyAtTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getUserBalanceAtTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserLastEpochCheckpointed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getUserTokenTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isOnlyCallerEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setOnlyCallerCheck\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"setOnlyCallerCheckWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpointToken(address)\":{\"details\":\"Any `token` balance held by the FeeDistributor above that which is returned by `getTokenLastBalance` will be distributed evenly across the time period since `token` was last checkpointed. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\",\"params\":{\"token\":\"- The ERC20 token address to be checkpointed.\"}},\"checkpointTokens(address[])\":{\"details\":\"A version of `checkpointToken` which supports checkpointing multiple tokens. See `checkpointToken` for more details.\",\"params\":{\"tokens\":\"- An array of ERC20 token addresses to be checkpointed.\"}},\"checkpointUser(address)\":{\"params\":{\"user\":\"- The address of the user to be checkpointed.\"}},\"claimToken(address,address)\":{\"details\":\"It's not necessary to explicitly checkpoint before calling this function, it will ensure the FeeDistributor is up to date before calculating the amount of tokens to be claimed.\",\"params\":{\"token\":\"- The ERC20 token address to be claimed.\",\"user\":\"- The user on behalf of which to claim.\"},\"returns\":{\"_0\":\"The amount of `token` sent to `user` as a result of claiming.\"}},\"claimTokens(address,address[])\":{\"details\":\"A version of `claimToken` which supports claiming multiple `tokens` on behalf of `user`. See `claimToken` for more details.\",\"params\":{\"tokens\":\"- An array of ERC20 token addresses to be claimed.\",\"user\":\"- The user on behalf of which to claim.\"},\"returns\":{\"_0\":\"An array of the amounts of each token in `tokens` sent to `user` as a result of claiming.\"}},\"depositToken(address,uint256)\":{\"details\":\"Sending tokens directly to the FeeDistributor instead of using `depositToken` may result in tokens being retroactively distributed to past weeks, or for the distribution to carry over to future weeks. If for some reason `depositToken` cannot be called, in order to ensure that all tokens are correctly distributed manually call `checkpointToken` before and after the token transfer.\",\"params\":{\"amount\":\"- The amount of tokens to deposit.\",\"token\":\"- The ERC20 token address to distribute.\"}},\"depositTokens(address[],uint256[])\":{\"details\":\"A version of `depositToken` which supports depositing multiple `tokens` at once. See `depositToken` for more details.\",\"params\":{\"amounts\":\"- An array of token amounts to deposit.\",\"tokens\":\"- An array of ERC20 token addresses to distribute.\"}},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getTokenTimeCursor(address)\":{\"params\":{\"token\":\"- The ERC20 token address to query.\"}},\"getTokensDistributedInWeek(address,uint256)\":{\"params\":{\"timestamp\":\"- The timestamp corresponding to the beginning of the week of interest.\",\"token\":\"- The ERC20 token address to query.\"}},\"getTotalSupplyAtTimestamp(uint256)\":{\"details\":\"Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values. This function requires the contract to have been checkpointed past `timestamp` so that the supply is cached.\",\"params\":{\"timestamp\":\"- The timestamp at which to read the cached total supply at.\"}},\"getUserBalanceAtTimestamp(address,uint256)\":{\"details\":\"Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values. This function requires `user` to have been checkpointed past `timestamp` so that their balance is cached.\",\"params\":{\"timestamp\":\"- The timestamp at which to read the `user`'s cached balance at.\",\"user\":\"- The address of the user of which to read the cached balance of.\"}},\"getUserTimeCursor(address)\":{\"params\":{\"user\":\"- The address of the user to query.\"}},\"getUserTokenTimeCursor(address,address)\":{\"params\":{\"token\":\"- The ERC20 token address to query.\",\"user\":\"- The address of the user to query.\"}},\"isOnlyCallerEnabled(address)\":{\"details\":\"Returns true if caller verification is enabled for the given user, false otherwise.\"},\"setOnlyCallerCheck(bool)\":{\"details\":\"Enables / disables verification mechanism for caller.\",\"params\":{\"enabled\":\"- True if caller verification shall be enabled, false otherwise.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"checkpoint()\":{\"notice\":\"Caches the total supply of veBAL at the beginning of each week. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\"},\"checkpointToken(address)\":{\"notice\":\"Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\"},\"checkpointTokens(address[])\":{\"notice\":\"Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\"},\"checkpointUser(address)\":{\"notice\":\"Caches the user's balance of veBAL at the beginning of each week. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\"},\"claimToken(address,address)\":{\"notice\":\"Claims all pending distributions of the provided token for a user.\"},\"claimTokens(address,address[])\":{\"notice\":\"Claims a number of tokens on behalf of a user.\"},\"depositToken(address,uint256)\":{\"notice\":\"Deposits tokens to be distributed in the current week.\"},\"depositTokens(address[],uint256[])\":{\"notice\":\"Deposits tokens to be distributed in the current week.\"},\"getTimeCursor()\":{\"notice\":\"Returns the global time cursor representing the most earliest uncheckpointed week.\"},\"getTokenLastBalance(address)\":{\"notice\":\"Returns the FeeDistributor's cached balance of `token`.\"},\"getTokenTimeCursor(address)\":{\"notice\":\"Returns the token-level time cursor storing the timestamp at up to which tokens have been distributed.\"},\"getTokensDistributedInWeek(address,uint256)\":{\"notice\":\"Returns the amount of `token` which the FeeDistributor received in the week beginning at `timestamp`.\"},\"getTotalSupplyAtTimestamp(uint256)\":{\"notice\":\"Returns the cached total supply of veBAL as of the provided timestamp.\"},\"getUserBalanceAtTimestamp(address,uint256)\":{\"notice\":\"Returns the user's cached balance of veBAL as of the provided timestamp.\"},\"getUserTimeCursor(address)\":{\"notice\":\"Returns the user-level time cursor representing the most earliest uncheckpointed week.\"},\"getUserTokenTimeCursor(address,address)\":{\"notice\":\"Returns the user-level time cursor storing the timestamp of the latest token distribution claimed.\"},\"getVotingEscrow()\":{\"notice\":\"Returns the VotingEscrow (veBAL) token contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestFeeDistributor.sol\":\"TestFeeDistributor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\":{\"keccak256\":\"0x250e4e6dcde3cf83d4d2822e9593c3138f6518ca95d88a0156a292557605640e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a2596b2242650aade0987677bfee7f4ee1359d588244b03cd1b65542f4f06252\",\"dweb:/ipfs/Qmbrb2Lp6suCPngH9sBzmaDBxET6YD6pBH1T8crGw29Cqi\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol\":{\"keccak256\":\"0x7bab0494ee39fb988722edd20b3e5ff747b4acfe93a62d0726c5d63ae3f6e472\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://23e1d154f2fa589cbfa51338c285cf1862edcd6172fdbb26db17a6fcf9581ee2\",\"dweb:/ipfs/Qmbu8wgFjYqZvvv84MKbLiHMSKv3THZuFHCjRchPHLjCdY\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol\":{\"keccak256\":\"0xf82dab09a38bfdaf0983b69829de462c62359bc0bfaa37c4447408d93bd367c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d0172b678ca594e95b7e5d881fd1280b3792052861ca98d77fa6194b524d188\",\"dweb:/ipfs/QmZ3bYEGTrfruXNYAzuFjJeg9Hx6UQw8ZyBzyM72BVGXfT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol\":{\"keccak256\":\"0xc3a9b8d78e475f0290fa6f660b63f42ed4834dfcb61d7935b4b034fd31ef33f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1793575373e2214ceee3aecbd68b8b1a3ff24070b63bf36acb5d7e2bbb700d71\",\"dweb:/ipfs/QmVGYzndTDp2z25g6WqPze1PV5okh7MGBkP3XL2CTggAcM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol\":{\"keccak256\":\"0x028adc486d4df66cfc3157049ebd2772f1033be7159b27173225459d8d833e93\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5a67c6db6916df2ace5765995f45bf03e9ed07dd6e6164a196642ba4d52aa8b4\",\"dweb:/ipfs/QmYkhoC75YFywYqQPCMbj9iWyauVLczE7Db2NLisJR2vqu\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/fee-distribution/FeeDistributor.sol\":{\"keccak256\":\"0xe46c05028895d98f78543b5e663f1f6331a9cee360423b556d5b66a68e391c5d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f21b55c0384a5f1bfd07e1df0c9717f4780bfc726dce026e017d978f3a8c267e\",\"dweb:/ipfs/QmeY8aCe487s6xcq2LNED6hRxR6dJCGzp43wVbPNmQpbCf\"]},\"contracts/test/TestFeeDistributor.sol\":{\"keccak256\":\"0xe96b39cc6a4a66e0bc04cb6f50635851562911489d829e63885ba690c4155a1c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://191e414ae74468cb1e8c1e160cd4d4df7dea724d29134323b87b9906b0bcb169\",\"dweb:/ipfs/QmfYUo6qVupFCMU2FDqz2GSfaPs66iVgsWF2dVzivgN7Lx\"]}},\"version\":1}"}}}}}
\ No newline at end of file
diff --git a/tasks/20240522-fraxtal-root-gauge-factory/build-info/OptimisticRootGaugeFactory.json b/tasks/20240522-fraxtal-root-gauge-factory/build-info/OptimisticRootGaugeFactory.json
new file mode 100644
index 00000000..06e4e21f
--- /dev/null
+++ b/tasks/20240522-fraxtal-root-gauge-factory/build-info/OptimisticRootGaugeFactory.json
@@ -0,0 +1 @@
+{"id":"b7f90c9feeff18c98ec0aa73c9bf16d4","_format":"hh-sol-build-info-1","solcVersion":"0.7.1","solcLongVersion":"0.7.1+commit.f4a555be","input":{"language":"Solidity","sources":{"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IArbitrumFeeProvider {\n function getArbitrumFees()\n external\n view\n returns (\n uint256 gasLimit,\n uint256 gasPrice,\n uint256 maxSubmissionCost\n );\n\n function setArbitrumFees(\n uint64 gasLimit,\n uint64 gasPrice,\n uint64 maxSubmissionCost\n ) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\nimport \"../vault/IVault.sol\";\n\ninterface IAuthorizerAdaptor is IAuthentication {\n /**\n * @notice Returns the Balancer Vault\n */\n function getVault() external view returns (IVault);\n\n /**\n * @notice Returns the Authorizer\n */\n function getAuthorizer() external view returns (IAuthorizer);\n\n /**\n * @notice Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\n * @param target - Address of the contract to be called\n * @param data - Calldata to be sent to the target contract\n * @return The bytes encoded return value from the performed function call\n */\n function performAction(address target, bytes calldata data) external payable returns (bytes memory);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"./IAuthorizerAdaptor.sol\";\n\n/**\n * @notice Interface for `AuthorizerAdaptorEntrypoint`.\n */\ninterface IAuthorizerAdaptorEntrypoint is IAuthorizerAdaptor {\n /**\n * @notice Returns the Authorizer Adaptor\n */\n function getAuthorizerAdaptor() external view returns (IAuthorizerAdaptor);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n/**\n * @dev Base minter interface, applicable to Mainnet minter or L2 pseudo minters.\n */\ninterface IBalancerMinter {\n event Minted(address indexed recipient, address gauge, uint256 minted);\n\n /**\n * @notice Returns the address of the Balancer Governance Token\n */\n function getBalancerToken() external view returns (IERC20);\n\n /**\n * @notice Mint everything which belongs to `msg.sender` and send to them\n * @param gauge `LiquidityGauge` address to get mintable amount from\n */\n function mint(address gauge) external returns (uint256);\n\n /**\n * @notice Mint everything which belongs to `msg.sender` across multiple gauges\n * @param gauges List of `LiquidityGauge` addresses\n */\n function mintMany(address[] calldata gauges) external returns (uint256);\n\n /**\n * @notice Mint tokens for `user`\n * @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n * @param gauge `LiquidityGauge` address to get mintable amount from\n * @param user Address to mint to\n */\n function mintFor(address gauge, address user) external returns (uint256);\n\n /**\n * @notice Mint tokens for `user` across multiple gauges\n * @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n * @param gauges List of `LiquidityGauge` addresses\n * @param user Address to mint to\n */\n function mintManyFor(address[] calldata gauges, address user) external returns (uint256);\n\n /**\n * @notice The total number of tokens minted for `user` from `gauge`\n */\n function minted(address user, address gauge) external view returns (uint256);\n\n /**\n * @notice Whether `minter` is approved to mint tokens for `user`\n */\n function getMinterApproval(address minter, address user) external view returns (bool);\n\n /**\n * @notice Set whether `minter` is approved to mint tokens on your behalf\n */\n function setMinterApproval(address minter, bool approval) external;\n\n /**\n * @notice Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing\n * them.\n */\n function setMinterApprovalWithSignature(\n address minter,\n bool approval,\n address user,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n // The below functions are near-duplicates of functions available above.\n // They are included for ABI compatibility with snake_casing as used in vyper contracts.\n // solhint-disable func-name-mixedcase\n\n /**\n * @notice Whether `minter` is approved to mint tokens for `user`\n */\n function allowed_to_mint_for(address minter, address user) external view returns (bool);\n\n /**\n * @notice Mint everything which belongs to `msg.sender` across multiple gauges\n * @dev This function is not recommended as `mintMany()` is more flexible and gas efficient\n * @param gauges List of `LiquidityGauge` addresses\n */\n function mint_many(address[8] calldata gauges) external;\n\n /**\n * @notice Mint tokens for `user`\n * @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n * @param gauge `LiquidityGauge` address to get mintable amount from\n * @param user Address to mint to\n */\n function mint_for(address gauge, address user) external;\n\n /**\n * @notice Toggle whether `minter` is approved to mint tokens for `user`\n */\n function toggle_approve_mint(address minter) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IBalancerToken is IERC20 {\n function mint(address to, uint256 amount) external;\n\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\n\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\n\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n function grantRole(bytes32 role, address account) external;\n\n function revokeRole(bytes32 role, address account) external;\n\n // solhint-disable-next-line func-name-mixedcase\n function DEFAULT_ADMIN_ROLE() external view returns (bytes32);\n\n // solhint-disable-next-line func-name-mixedcase\n function MINTER_ROLE() external view returns (bytes32);\n\n // solhint-disable-next-line func-name-mixedcase\n function SNAPSHOT_ROLE() external view returns (bytes32);\n\n function snapshot() external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\n\nimport \"./IBalancerToken.sol\";\n\ninterface IBalancerTokenAdmin is IAuthentication {\n // solhint-disable func-name-mixedcase\n function INITIAL_RATE() external view returns (uint256);\n\n function RATE_REDUCTION_TIME() external view returns (uint256);\n\n function RATE_REDUCTION_COEFFICIENT() external view returns (uint256);\n\n function RATE_DENOMINATOR() external view returns (uint256);\n\n // solhint-enable func-name-mixedcase\n\n /**\n * @notice Returns the address of the Balancer Governance Token\n */\n function getBalancerToken() external view returns (IBalancerToken);\n\n function activate() external;\n\n function rate() external view returns (uint256);\n\n function startEpochTimeWrite() external returns (uint256);\n\n function mint(address to, uint256 amount) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/helpers/IVersion.sol\";\nimport \"./ILiquidityGaugeFactory.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n// solhint-disable func-param-name-mixedcase\n\ninterface IChildChainGauge is IVersion {\n /**\n * @notice Proxy constructor.\n * @param lpToken Pool allowed to stake in this gauge.\n * @param version Gauge version string identifier.\n */\n function initialize(address lpToken, string memory version) external;\n\n /**\n * @notice Returns BAL liquidity emissions calculated during checkpoints for the given user.\n * @param user User address.\n * @return uint256 BAL amount to issue for the address.\n */\n function integrate_fraction(address user) external view returns (uint256);\n\n /**\n * @notice Records a checkpoint for a given user.\n * @param user User address.\n * @return bool Always true.\n */\n function user_checkpoint(address user) external returns (bool);\n\n /**\n * @notice Returns gauge factory address.\n */\n function factory() external view returns (ILiquidityGaugeFactory);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IChildChainStreamer.sol\";\nimport \"./ILiquidityGauge.sol\";\nimport \"./ILiquidityGaugeFactory.sol\";\nimport \"./IRewardsOnlyGauge.sol\";\n\ninterface IChildChainLiquidityGaugeFactory is ILiquidityGaugeFactory {\n event RewardsOnlyGaugeCreated(address indexed gauge, address indexed pool, address streamer);\n\n /**\n * @notice Returns the address of the implementation used for gauge deployments.\n */\n function getGaugeImplementation() external view returns (ILiquidityGauge);\n\n /**\n * @notice Returns the address of the implementation used for streamer deployments.\n */\n function getChildChainStreamerImplementation() external view returns (IChildChainStreamer);\n\n /**\n * @notice Returns the address of the gauge belonging to `pool`.\n */\n function getPoolGauge(address pool) external view returns (ILiquidityGauge);\n\n /**\n * @notice Returns the address of the streamer belonging to `gauge`.\n */\n function getGaugeStreamer(address gauge) external view returns (address);\n\n /**\n * @notice Returns true if `streamer` was created by this factory.\n */\n function isStreamerFromFactory(address streamer) external view returns (bool);\n\n /**\n * @notice Returns the address of the pool which `gauge` belongs.\n */\n function getGaugePool(address gauge) external view returns (IERC20);\n\n /**\n * @notice Returns the address of the streamer belonging to `pool`'s gauge.\n */\n function getPoolStreamer(address pool) external view returns (address);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ninterface IChildChainStreamer {\n function initialize(address gauge) external;\n\n function get_reward() external;\n\n function reward_tokens(uint256 index) external view returns (IERC20);\n\n function add_reward(\n IERC20 rewardToken,\n address distributor,\n uint256 duration\n ) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IVotingEscrow.sol\";\n\n/**\n * @title Fee Distributor\n * @notice Distributes any tokens transferred to the contract (e.g. Protocol fees and any BAL emissions) among veBAL\n * holders proportionally based on a snapshot of the week at which the tokens are sent to the FeeDistributor contract.\n * @dev Supports distributing arbitrarily many different tokens. In order to start distributing a new token to veBAL\n * holders simply transfer the tokens to the `FeeDistributor` contract and then call `checkpointToken`.\n */\ninterface IFeeDistributor {\n event TokenCheckpointed(IERC20 token, uint256 amount, uint256 lastCheckpointTimestamp);\n event TokensClaimed(address user, IERC20 token, uint256 amount, uint256 userTokenTimeCursor);\n\n /**\n * @notice Returns the VotingEscrow (veBAL) token contract\n */\n function getVotingEscrow() external view returns (IVotingEscrow);\n\n /**\n * @notice Returns the global time cursor representing the most earliest uncheckpointed week.\n */\n function getTimeCursor() external view returns (uint256);\n\n /**\n * @notice Returns the user-level time cursor representing the most earliest uncheckpointed week.\n * @param user - The address of the user to query.\n */\n function getUserTimeCursor(address user) external view returns (uint256);\n\n /**\n * @notice Returns the token-level time cursor storing the timestamp at up to which tokens have been distributed.\n * @param token - The ERC20 token address to query.\n */\n function getTokenTimeCursor(IERC20 token) external view returns (uint256);\n\n /**\n * @notice Returns the user-level time cursor storing the timestamp of the latest token distribution claimed.\n * @param user - The address of the user to query.\n * @param token - The ERC20 token address to query.\n */\n function getUserTokenTimeCursor(address user, IERC20 token) external view returns (uint256);\n\n /**\n * @notice Returns the user's cached balance of veBAL as of the provided timestamp.\n * @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n * This function requires `user` to have been checkpointed past `timestamp` so that their balance is cached.\n * @param user - The address of the user of which to read the cached balance of.\n * @param timestamp - The timestamp at which to read the `user`'s cached balance at.\n */\n function getUserBalanceAtTimestamp(address user, uint256 timestamp) external view returns (uint256);\n\n /**\n * @notice Returns the cached total supply of veBAL as of the provided timestamp.\n * @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n * This function requires the contract to have been checkpointed past `timestamp` so that the supply is cached.\n * @param timestamp - The timestamp at which to read the cached total supply at.\n */\n function getTotalSupplyAtTimestamp(uint256 timestamp) external view returns (uint256);\n\n /**\n * @notice Returns the FeeDistributor's cached balance of `token`.\n */\n function getTokenLastBalance(IERC20 token) external view returns (uint256);\n\n /**\n * @notice Returns the amount of `token` which the FeeDistributor received in the week beginning at `timestamp`.\n * @param token - The ERC20 token address to query.\n * @param timestamp - The timestamp corresponding to the beginning of the week of interest.\n */\n function getTokensDistributedInWeek(IERC20 token, uint256 timestamp) external view returns (uint256);\n\n // Depositing\n\n /**\n * @notice Deposits tokens to be distributed in the current week.\n * @dev Sending tokens directly to the FeeDistributor instead of using `depositTokens` may result in tokens being\n * retroactively distributed to past weeks, or for the distribution to carry over to future weeks.\n *\n * If for some reason `depositTokens` cannot be called, in order to ensure that all tokens are correctly distributed\n * manually call `checkpointToken` before and after the token transfer.\n * @param token - The ERC20 token address to distribute.\n * @param amount - The amount of tokens to deposit.\n */\n function depositToken(IERC20 token, uint256 amount) external;\n\n /**\n * @notice Deposits tokens to be distributed in the current week.\n * @dev A version of `depositToken` which supports depositing multiple `tokens` at once.\n * See `depositToken` for more details.\n * @param tokens - An array of ERC20 token addresses to distribute.\n * @param amounts - An array of token amounts to deposit.\n */\n function depositTokens(IERC20[] calldata tokens, uint256[] calldata amounts) external;\n\n // Checkpointing\n\n /**\n * @notice Caches the total supply of veBAL at the beginning of each week.\n * This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n */\n function checkpoint() external;\n\n /**\n * @notice Caches the user's balance of veBAL at the beginning of each week.\n * This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n * @param user - The address of the user to be checkpointed.\n */\n function checkpointUser(address user) external;\n\n /**\n * @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n * @dev Any `token` balance held by the FeeDistributor above that which is returned by `getTokenLastBalance`\n * will be distributed evenly across the time period since `token` was last checkpointed.\n *\n * This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n * @param token - The ERC20 token address to be checkpointed.\n */\n function checkpointToken(IERC20 token) external;\n\n /**\n * @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n * @dev A version of `checkpointToken` which supports checkpointing multiple tokens.\n * See `checkpointToken` for more details.\n * @param tokens - An array of ERC20 token addresses to be checkpointed.\n */\n function checkpointTokens(IERC20[] calldata tokens) external;\n\n // Claiming\n\n /**\n * @notice Claims all pending distributions of the provided token for a user.\n * @dev It's not necessary to explicitly checkpoint before calling this function, it will ensure the FeeDistributor\n * is up to date before calculating the amount of tokens to be claimed.\n * @param user - The user on behalf of which to claim.\n * @param token - The ERC20 token address to be claimed.\n * @return The amount of `token` sent to `user` as a result of claiming.\n */\n function claimToken(address user, IERC20 token) external returns (uint256);\n\n /**\n * @notice Claims a number of tokens on behalf of a user.\n * @dev A version of `claimToken` which supports claiming multiple `tokens` on behalf of `user`.\n * See `claimToken` for more details.\n * @param user - The user on behalf of which to claim.\n * @param tokens - An array of ERC20 token addresses to be claimed.\n * @return An array of the amounts of each token in `tokens` sent to `user` as a result of claiming.\n */\n function claimTokens(address user, IERC20[] calldata tokens) external returns (uint256[] memory);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IAuthorizerAdaptorEntrypoint.sol\";\nimport \"./IGaugeController.sol\";\nimport \"./ILiquidityGauge.sol\";\nimport \"./ILiquidityGaugeFactory.sol\";\nimport \"./IStakingLiquidityGauge.sol\";\n\ninterface IGaugeAdder is IAuthentication {\n // Deprecated. TODO: remove from interfaces, and remove references.\n enum GaugeType { LiquidityMiningCommittee, veBAL, Ethereum, Polygon, Arbitrum, Optimism, Gnosis, ZKSync }\n\n // String values are hashed when indexed, so we also emit the raw string as a data field for ease of use.\n event GaugeTypeAdded(string indexed indexedGaugeType, string gaugeType);\n event GaugeFactorySet(string indexed indexedGaugeType, string gaugeType, ILiquidityGaugeFactory gaugeFactory);\n\n /**\n * @notice Returns the address of the Authorizer adaptor entrypoint contract.\n */\n function getAuthorizerAdaptorEntrypoint() external view returns (IAuthorizerAdaptorEntrypoint);\n\n /**\n * @notice Returns the address of the Gauge Controller\n */\n function getGaugeController() external view returns (IGaugeController);\n\n /**\n * @notice Returns the list of gauge types.\n */\n function getGaugeTypes() external view returns (string[] memory);\n\n /**\n * @notice Returns gauge type name registered at the given index.\n */\n function getGaugeTypeAtIndex(uint256 index) external view returns (string memory);\n\n /**\n * @notice Returns the number of gauge types.\n */\n function getGaugeTypesCount() external view returns (uint256);\n\n /**\n * @notice Returns true if the given gauge type is valid; false otherwise.\n */\n function isValidGaugeType(string memory gaugeType) external view returns (bool);\n\n /**\n * @notice Returns the factory for gauge type `gaugeType`.\n */\n function getFactoryForGaugeType(string memory gaugeType) external view returns (ILiquidityGaugeFactory);\n\n /**\n * @notice Returns true if `gauge` has been deployed by the factory for the gauge type `gaugeType`.\n * Note that if a gauge type's factory changes then this function will start returning false for previously\n * valid gauges.\n */\n function isGaugeFromValidFactory(address gauge, string memory gaugeType) external view returns (bool);\n\n /**\n * @notice Adds a new `gaugeType` corresponding to a new network, which allows setting a factory and adding gauges\n * for the type later on.\n * @param gaugeType Name of the new gauge type.\n */\n function addGaugeType(string memory gaugeType) external;\n\n /**\n * @notice Adds a new gauge to the GaugeController for the given `gaugeType` type.\n * @dev When adding gauges for L2 networks or sidechains, this must be called with the address of the *root* gauge\n * which is deployed on Ethereum. It should *not* be called with the address of the child gauge which is deployed on\n * the L2 / sidechain.\n *\n * If the gauge added is an Ethereum gauge, it cannot be a gauge for the 80BAL-20WETH pool.\n */\n function addGauge(address gauge, string memory gaugeType) external;\n\n /**\n * @notice Sets `factory` as the allowlisted factory contract for gauges with type `gaugeType`.\n * @dev This function can either set a new factory or replace an existing one.\n */\n function setGaugeFactory(ILiquidityGaugeFactory factory, string memory gaugeType) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IAuthorizerAdaptor.sol\";\nimport \"./IVotingEscrow.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ninterface IGaugeController {\n function checkpoint_gauge(address gauge) external;\n\n function gauge_relative_weight(address gauge, uint256 time) external view returns (uint256);\n\n function voting_escrow() external view returns (IVotingEscrow);\n\n function token() external view returns (IERC20);\n\n function add_type(string calldata name, uint256 weight) external;\n\n function change_type_weight(int128 typeId, uint256 weight) external;\n\n function add_gauge(address gauge, int128 gaugeType) external;\n\n function n_gauge_types() external view returns (int128);\n\n function gauge_types(address gauge) external view returns (int128);\n\n function admin() external view returns (IAuthorizerAdaptor);\n\n function gauge_exists(address gauge) external view returns (bool);\n\n function time_weight(address gauge) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @notice Standard token bridging interface, common to Optimism and Base networks.\n */\ninterface IL1StandardBridge {\n function depositERC20To(\n address _l1Token,\n address _l2Token,\n address _to,\n uint256 _amount,\n uint32 _l2Gas,\n bytes calldata _data\n ) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @notice Minimal hook interface to be called whenever the veBAL balance of a user is updated in a L2 chain.\n */\ninterface IL2LayerZeroDelegation {\n /**\n * @notice Called whenever the veBAL balance of a user is updated in a L2 chain.\n * @param user The user whose veBAL balance was updated.\n */\n function onVeBalBridged(address user) external;\n\n /**\n * @notice Called whenever the total veBAL supply is updated in a L2 chain.\n */\n function onVeBalSupplyUpdate() external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n// solhint-disable func-param-name-mixedcase\n\ninterface ILiquidityGauge {\n // solhint-disable-next-line var-name-mixedcase\n event RelativeWeightCapChanged(uint256 new_relative_weight_cap);\n\n /**\n * @notice Returns BAL liquidity emissions calculated during checkpoints for the given user.\n * @param user User address.\n * @return uint256 BAL amount to issue for the address.\n */\n function integrate_fraction(address user) external view returns (uint256);\n\n /**\n * @notice Record a checkpoint for a given user.\n * @param user User address.\n * @return bool Always true.\n */\n function user_checkpoint(address user) external returns (bool);\n\n /**\n * @notice Returns true if gauge is killed; false otherwise.\n */\n function is_killed() external view returns (bool);\n\n /**\n * @notice Kills the gauge so it cannot mint BAL.\n */\n function killGauge() external;\n\n /**\n * @notice Unkills the gauge so it can mint BAL again.\n */\n function unkillGauge() external;\n\n /**\n * @notice Sets a new relative weight cap for the gauge.\n * The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\n * @param relativeWeightCap New relative weight cap.\n */\n function setRelativeWeightCap(uint256 relativeWeightCap) external;\n\n /**\n * @notice Gets the relative weight cap for the gauge.\n */\n function getRelativeWeightCap() external view returns (uint256);\n\n /**\n * @notice Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\n * @param time Timestamp in the past or present.\n */\n function getCappedRelativeWeight(uint256 time) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"./ILiquidityGauge.sol\";\n\ninterface ILiquidityGaugeFactory {\n /**\n * @notice Returns true if `gauge` was created by this factory.\n */\n function isGaugeFromFactory(address gauge) external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"./IBalancerTokenAdmin.sol\";\nimport \"./IGaugeController.sol\";\n\ninterface ILMGetters {\n /**\n * @notice Returns the address of the Balancer Token Admin contract\n */\n function getBalancerTokenAdmin() external view returns (IBalancerTokenAdmin);\n\n /**\n * @notice Returns the address of the Gauge Controller\n */\n function getGaugeController() external view returns (IGaugeController);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"./IBalancerMinter.sol\";\nimport \"./ILMGetters.sol\";\n\n/**\n * @dev Full L1 Balancer minter interface with singleton getters.\n */\ninterface IMainnetBalancerMinter is IBalancerMinter, ILMGetters {\n // solhint-disable-previous-line no-empty-blocks\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Partial voting escrow bridge interface.\n * See https://github.com/LayerZero-Labs/lz_gauges/blob/main/contracts/OmniVotingEscrow.sol for reference.\n */\ninterface IOmniVotingEscrow {\n function estimateSendUserBalance(\n uint16 _dstChainId,\n bool _useZro,\n bytes calldata _adapterParams\n ) external view returns (uint256 nativeFee, uint256 zroFee);\n\n function sendUserBalance(\n address _user,\n uint16 _dstChainId,\n address payable _refundAddress,\n address _zroPaymentAddress,\n bytes memory _adapterParams\n ) external payable;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface for `OmniVotingEscrowAdaptor`.\n */\ninterface IOmniVotingEscrowAdaptor {\n /**\n * @notice Forwards `estimateSendUserBalance` call to omni voting escrow.\n * @dev Reverts if `OmniVotingEscrow` is not set.\n * @param _dstChainId - Destination chain ID.\n * @return nativeFee - Native fee reported by the omni voting escrow.\n * @return zroFee - Layer zero fee reported by the omni voting escrow.\n */\n function estimateSendUserBalance(uint16 _dstChainId) external view returns (uint256 nativeFee, uint256 zroFee);\n\n /**\n * @notice Forwards `sendUserBalance` call to omni voting escrow.\n * @dev Reverts if `OmniVotingEscrow` is not set.\n * @param _user - User to bridge the balance from.\n * @param _dstChainId - Destination chain ID.\n * @param _refundAddress - Address where to return excess ETH.\n */\n function sendUserBalance(\n address _user,\n uint16 _dstChainId,\n address payable _refundAddress\n ) external payable;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"./IOmniVotingEscrow.sol\";\n\n/**\n * @dev Interface for `OmniVotingEscrowAdaptor` settings.\n */\ninterface IOmniVotingEscrowAdaptorSettings {\n event OmniVotingEscrowUpdated(IOmniVotingEscrow indexed newOmniVotingEscrow);\n event UseZeroUpdated(bool newUseZero);\n event AdapterParamsUpdated(bytes newAdapterParams);\n event ZeroPaymentAddressUpdated(address indexed newZeroPaymentAddress);\n\n /**\n * @notice Returns Omni Voting Escrow contract address, which is the gateway to bridge veBAL balances to L2s.\n */\n function getOmniVotingEscrow() external view returns (IOmniVotingEscrow);\n\n /**\n * @notice Returns `_useZro` parameter used in `estimateSendUserBalance`.\n */\n function getUseZero() external view returns (bool);\n\n /**\n * @notice Returns `_adapterParams` parameter used in `estimateSendUserBalance` and `sendUserBalance`.\n */\n function getAdapterParams() external view returns (bytes memory);\n\n /**\n * @notice Returns `_zroPaymentAddress` parameter used in `sendUserBalance`.\n */\n function getZeroPaymentAddress() external view returns (address);\n\n /**\n * @notice Sets omni voting escrow address.\n * @dev This step is required before creating any remapping in the `VotingEscrowRemapper`.\n * Omni voting escrow is not set in the constructor to avoid circular dependencies.\n * Emits `OmniVotingEscrowUpdated` event.\n * @param omniVotingEscrow - Address of the omni voting escrow contract.\n */\n function setOmniVotingEscrow(IOmniVotingEscrow omniVotingEscrow) external;\n\n /**\n * @notice Sets `_useZro` parameter for `estimateSendUserBalance` when forwarding calls.\n * @dev Emits `UseZeroUpdated` event.\n */\n function setUseZero(bool useZro) external;\n\n /**\n * @notice Sets `_adapterParams` parameter for `estimateSendUserBalance` and `sendUserBalance` when forwarding\n * calls.\n * @dev Emits `AdapterParamsUpdated` event.\n */\n function setAdapterParams(bytes memory adapterParams) external;\n\n /**\n * @notice Sets `_zroPaymentAddress` parameter for `sendUserBalance` when forwarding calls.\n * @dev Emits `ZeroPaymentAddressUpdated` event.\n */\n function setZeroPaymentAddress(address paymentAddress) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IOptimismGasLimitProvider {\n function getOptimismGasLimit() external view returns (uint32 gasLimit);\n\n function setOptimismGasLimit(uint32 gasLimit) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"./IChildChainStreamer.sol\";\nimport \"./IRewardTokenDistributor.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ninterface IRewardsOnlyGauge is IRewardTokenDistributor {\n function initialize(\n address pool,\n address streamer,\n bytes32 claimSignature\n ) external;\n\n // solhint-disable-next-line func-name-mixedcase\n function lp_token() external view returns (IERC20);\n\n function reward_contract() external view returns (IChildChainStreamer);\n\n function set_rewards(\n address childChainStreamer,\n bytes32 claimSig,\n address[8] calldata rewardTokens\n ) external;\n\n function last_claim() external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase, var-name-mixedcase\n\ninterface IRewardTokenDistributor {\n struct Reward {\n IERC20 token;\n address distributor;\n uint256 period_finish;\n uint256 rate;\n uint256 last_update;\n uint256 integral;\n }\n\n function reward_tokens(uint256 index) external view returns (IERC20);\n\n function reward_data(IERC20 token) external view returns (Reward memory);\n\n function claim_rewards(address user) external;\n\n function add_reward(IERC20 rewardToken, address distributor) external;\n\n function set_reward_distributor(IERC20 rewardToken, address distributor) external;\n\n function deposit_reward_token(IERC20 rewardToken, uint256 amount) external;\n\n function claimable_reward(address rewardToken, address user) external view returns (uint256);\n\n function claimable_reward_write(address rewardToken, address user) external returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface ISmartWalletChecker {\n function check(address contractAddress) external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"./ILiquidityGauge.sol\";\n\ninterface IStakelessGauge is ILiquidityGauge {\n /// @dev Performs a checkpoint, computing how much should be minted for the gauge.\n function checkpoint() external payable returns (bool);\n\n /// @dev Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\n function getRecipient() external view returns (address);\n\n /**\n * @dev Returns total ETH bridge cost (post mint action) in wei.\n * Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH\n * to work; in those cases the cost will be 0.\n */\n function getTotalBridgeCost() external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IGaugeAdder.sol\";\nimport \"./IStakelessGauge.sol\";\n\n/**\n * @title Stakeless Gauge Checkpointer interface\n * @notice Manages checkpoints for L2 and mainnet stakeless root gauges, allowing to perform mutiple checkpoints in a\n * single call.\n * @dev Supports gauge types registered in `GaugeAdder`.\n * Gauges to be checkpointed need to be added to the controller beforehand.\n */\ninterface IStakelessGaugeCheckpointer {\n // String values are hashed when indexed, so we also emit the raw string as a data field for ease of use.\n /**\n * @notice Emitted when a gauge is added to the checkpointer.\n */\n event GaugeAdded(IStakelessGauge indexed gauge, string indexed indexedGaugeType, string gaugeType);\n\n /**\n * @notice Emitted when a gauge is removed from the checkpointer.\n */\n event GaugeRemoved(IStakelessGauge indexed gauge, string indexed indexedGaugeType, string gaugeType);\n\n /**\n * @notice Returns `GaugeAdder` contract.\n */\n function getGaugeAdder() external view returns (IGaugeAdder);\n\n /**\n * @notice Returns gauge types available in the checkpointer.\n */\n function getGaugeTypes() external view returns (string[] memory);\n\n /**\n * @notice Adds an array of gauges from the given type. This is a permissioned function.\n * @dev Gauges added will be considered when performing checkpoints.\n * The gauges to add should meet the following preconditions:\n * - They must exist in the GaugeController, according to GaugeController#gauge_exists.\n * - They must not be killed.\n * - They must not have been previously added to the checkpointer.\n * Unlike `addGauges`, this function can add gauges that were created by factories registered in a deprecated\n * `GaugeAdder`, and therefore cannot be validated by the current `GaugeAdder`.\n * @param gaugeType Type of the gauge.\n * @param gauges Gauges to add.\n */\n function addGaugesWithVerifiedType(string memory gaugeType, IStakelessGauge[] calldata gauges) external;\n\n /**\n * @notice Adds an array of gauges from the given type.\n * @dev Gauges added will be considered when performing checkpoints.\n * The gauges to add should meet the following preconditions:\n * - They must have been created in a valid `GaugeFactory`, according to `GaugeAdder#isGaugeFromValidFactory`.\n * - They must exist in the `GaugeController`, according to `GaugeController#gauge_exists`.\n * - They must not be killed.\n * - They must not have been previously added to the checkpointer.\n * @param gaugeType Type of the gauge.\n * @param gauges Gauges to add.\n */\n function addGauges(string memory gaugeType, IStakelessGauge[] calldata gauges) external;\n\n /**\n * @notice Removes an array of gauges from the given type.\n * @dev Removed gauges will not be considered when performing checkpoints. To remove gauges:\n * - They must be killed.\n * - They must have been previously added to the checkpointer.\n * @param gaugeType Type of the gauge.\n * @param gauges Gauges to remove.\n */\n function removeGauges(string memory gaugeType, IStakelessGauge[] calldata gauges) external;\n\n /**\n * @notice Returns true if the given gauge was added for the given type; false otherwise.\n * @param gaugeType Type of the gauge.\n * @param gauge Gauge to check.\n */\n function hasGauge(string memory gaugeType, IStakelessGauge gauge) external view returns (bool);\n\n /**\n * @notice Returns the amount of added gauges for a given type.\n * @param gaugeType Type of the gauge.\n */\n function getTotalGauges(string memory gaugeType) external view returns (uint256);\n\n /**\n * @notice Returns the gauge of a given type at the given index.\n * @dev Reverts if the index is greater than or equal to the amount of added gauges for the given type.\n * @param gaugeType Type of the gauge.\n * @param index - Index of the added gauge.\n */\n function getGaugeAtIndex(string memory gaugeType, uint256 index) external view returns (IStakelessGauge);\n\n /**\n * @notice Returns the timestamp corresponding to the start of the previous week of the current block.\n */\n function getRoundedDownBlockTimestamp() external view returns (uint256);\n\n /**\n * @notice Performs a checkpoint for all added gauges above the given relative weight threshold.\n * @dev Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getTotalBridgeCost` to\n * determine the required amount of ETH for the execution to succeed.\n * @param minRelativeWeight Threshold to filter out gauges below it.\n */\n function checkpointAllGaugesAboveRelativeWeight(uint256 minRelativeWeight) external payable;\n\n /**\n * @notice Performs a checkpoint for all added gauges above the given relative weight threshold for the given types.\n * @dev Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getGaugeTypesBridgeCost` to\n * determine the required amount of ETH for the execution to succeed.\n * Reverts if invalid gauge types are given.\n * @param gaugeTypes Types of the gauges to checkpoint.\n * @param minRelativeWeight Threshold to filter out gauges below it.\n */\n function checkpointGaugesOfTypesAboveRelativeWeight(string[] memory gaugeTypes, uint256 minRelativeWeight)\n external\n payable;\n\n /**\n * @notice Performs a checkpoint for a single added gauge of a given type.\n * @dev Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getSingleBridgeCost` to\n * determine the required amount of ETH for the execution to succeed.\n * Reverts if the gauge was not added to the checkpointer beforehand.\n * @param gaugeType Type of the gauge.\n * @param gauge Address of the gauge to checkpoint.\n */\n function checkpointSingleGauge(string memory gaugeType, IStakelessGauge gauge) external payable;\n\n /**\n * @notice Performs a checkpoint for a multiple added gauges of the given types.\n * @dev Reverts if the ETH sent in the call is not enough to cover bridge costs.\n * Reverts if the gauges were not added to the checkpointer beforehand, or if an invalid gauge type is given.\n * @param gaugeType Type of the gauges to be checkpointed.\n * @param gauges Addresses of the gauges to checkpoint.\n */\n function checkpointMultipleGaugesOfMatchingType(string memory gaugeType, IStakelessGauge[] memory gauges)\n external\n payable;\n\n /**\n * @notice Performs a checkpoint for a multiple added gauges of the given types.\n * @dev Reverts if the ETH sent in the call is not enough to cover bridge costs.\n * Reverts if the gauges were not added to the checkpointer beforehand, or if invalid gauge types are given.\n * Reverts if the types array does not have the same length as the gauges array.\n * @param gaugeTypes Types of the gauges to be checkpointed, in the same order as the gauges to be checkpointed.\n * @param gauges Addresses of the gauges to checkpoint.\n */\n function checkpointMultipleGauges(string[] memory gaugeTypes, IStakelessGauge[] memory gauges) external payable;\n\n /**\n * @notice Returns the ETH cost to checkpoint all gauges for a given minimum relative weight.\n * @dev A lower minimum relative weight might return higher costs, since more gauges could potentially be included\n * in the checkpoint.\n * @param minRelativeWeight Minimum relative weight filter: gauges below this value do not add to the bridge cost.\n */\n function getTotalBridgeCost(uint256 minRelativeWeight) external view returns (uint256);\n\n /**\n * @notice Returns the ETH cost to checkpoint all gauges from the given types.\n * @dev A lower minimum relative weight might return higher costs, since more gauges could potentially be included\n * in the checkpoint. Reverts for invalid gauge types.\n * @param gaugeTypes Types of the gauges.\n * @param minRelativeWeight Minimum relative weight filter: gauges below this value do not add to the bridge cost.\n */\n function getGaugeTypesBridgeCost(string[] memory gaugeTypes, uint256 minRelativeWeight)\n external\n view\n returns (uint256 totalCost);\n\n /**\n * @notice Returns the ETH cost to checkpoint a single given gauge.\n * @dev Reverts if the gauge was not added to the checkpointer beforehand, or if the gauge type is invalid.\n * @param gaugeType Type of the gauge.\n * @param gauge Address of the gauge to check the bridge costs.\n */\n function getSingleBridgeCost(string memory gaugeType, IStakelessGauge gauge) external view returns (uint256);\n\n /**\n * @notice Returns true if gauge type is valid; false otherwise.\n */\n function isValidGaugeType(string memory gaugeType) external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./ILiquidityGauge.sol\";\nimport \"./IRewardTokenDistributor.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase, var-name-mixedcase\n\ninterface IStakingLiquidityGauge is IRewardTokenDistributor, ILiquidityGauge, IERC20 {\n function initialize(address lpToken, uint256 relativeWeightCap) external;\n\n function lp_token() external view returns (IERC20);\n\n function deposit(uint256 value, address recipient) external;\n\n function withdraw(uint256 value) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ninterface IVeDelegation {\n // solhint-disable-next-line func-name-mixedcase\n function adjusted_balance_of(address user) external view returns (uint256);\n\n function totalSupply() external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IAuthorizerAdaptor.sol\";\nimport \"./ISmartWalletChecker.sol\";\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ninterface IVotingEscrow is IERC20 {\n struct Point {\n int128 bias;\n int128 slope; // - dweight / dt\n uint256 ts;\n uint256 blk; // block\n }\n\n function epoch() external view returns (uint256);\n\n function balanceOf(address user, uint256 timestamp) external view returns (uint256);\n\n function totalSupply(uint256 timestamp) external view returns (uint256);\n\n function user_point_epoch(address user) external view returns (uint256);\n\n function point_history(uint256 timestamp) external view returns (Point memory);\n\n function user_point_history(address user, uint256 timestamp) external view returns (Point memory);\n\n function checkpoint() external;\n\n function admin() external view returns (IAuthorizerAdaptor);\n\n function smart_wallet_checker() external view returns (ISmartWalletChecker);\n\n function commit_smart_wallet_checker(address newSmartWalletChecker) external;\n\n function apply_smart_wallet_checker() external;\n\n function locked__end(address user) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General external License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General external License for more details.\n\n// You should have received a copy of the GNU General external License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IOmniVotingEscrowAdaptor.sol\";\nimport \"./IVotingEscrow.sol\";\n\n/**\n * @notice This contract allows veBAL holders on Ethereum to assign their balance to designated addresses on each L2.\n * This is intended for smart contracts that are not deployed to the same address on all networks. EOA's are\n * expected to either use the same address, or manage delegation on L2 networks themselves.\n *\n * @dev For each network (chainId), we maintain a mapping between local (Ethereum) and remote (L2) addresses.\n * This contract remaps balance queries on remote network addresses to their corresponding local addresses.\n * Users able to call this contract can set their own mappings, or delegate this function to another account if they\n * cannot.\n */\ninterface IVotingEscrowRemapper {\n event AddressMappingUpdated(address indexed localUser, address indexed remoteUser, uint16 indexed chainId);\n event RemoteAddressMappingCleared(address indexed remoteUser, uint16 indexed chainId);\n event AddressDelegateUpdated(address indexed localUser, address indexed delegate);\n\n /**\n * @notice Returns Voting Escrow contract address.\n */\n function getVotingEscrow() external view returns (IVotingEscrow);\n\n /**\n * @notice Returns Omni Voting Escrow Adaptor contract address, which interfaces with the gateway to bridge\n * veBAL balances to L2s.\n */\n function getOmniVotingEscrowAdaptor() external view returns (IOmniVotingEscrowAdaptor);\n\n /**\n * @notice Returns the current total supply of veBAL as a Point.\n * @dev We return the total supply as a Point to allow extrapolating this into the future. Note that this\n * extrapolation will become invalid when crossing weeks, since we're not taking into account veBAL locks that\n * expire then.\n */\n function getTotalSupplyPoint() external view returns (IVotingEscrow.Point memory);\n\n /**\n * @notice Returns a user's current veBAL balance as a Point. Note that we don't apply any remappings in this query.\n * The returned value is taken directly from the voting escrow.\n * @dev We return the balance as a Point to allow extrapolating this into the future.\n */\n function getUserPoint(address user) external view returns (IVotingEscrow.Point memory);\n\n /**\n * @notice Get timestamp when `user`'s lock finishes.\n * @dev The returned value is taken directly from the voting escrow.\n */\n function getLockedEnd(address user) external view returns (uint256);\n\n /**\n * @notice Returns the local user corresponding to an address on a remote chain.\n * @dev Returns `address(0)` if the remapping does not exist for the given remote user.\n * @param remoteUser - Address of the user on the remote chain corresponding to the local address.\n * @param chainId - The chain ID of the remote network.\n */\n function getLocalUser(address remoteUser, uint16 chainId) external view returns (address);\n\n /**\n * @notice Returns the remote user corresponding to an address on the local chain.\n * @dev Returns `address(0)` if the remapping does not exist for the given local user.\n * @param localUser - Address of the user on the local chain corresponding to the remote address.\n * @param chainId - The chain ID of the remote network.\n */\n function getRemoteUser(address localUser, uint16 chainId) external view returns (address);\n\n /**\n * @notice Gets the account that can set a remapping for a given local user.\n * @param localUser - Address of the user on the local chain with a remapping manager.\n */\n function getRemappingManager(address localUser) external view returns (address);\n\n // Remapping Setters\n\n /**\n * @notice Sets up a mapping from `localUser`'s veBAL balance to `remoteUser` for chain `chainId`.\n * @dev In order to set up a remapping on this contract, `localUser` must be a smart contract which has been\n * allowlisted to hold veBAL. EOAs are expected to set up any delegation of their veBAL on L2s directly.\n * @param localUser - The address of a contract allowlisted on the `SmartWalletChecker`.\n * @param remoteUser - The address to receive `localUser`'s balance of veBAL on the remote chain.\n * @param chainId - The chain id of the remote chain on which `remoteUser` resides.\n */\n function setNetworkRemapping(\n address localUser,\n address remoteUser,\n uint16 chainId\n ) external payable;\n\n /**\n * @notice Sets an address to manage the mapping for a given local user on their behalf.\n * @dev This is intended to handle contracts which cannot interact with this contract directly.\n * @param localUser - The address of a contract allowlisted on the `SmartWalletChecker`.\n * @param delegate - The address which is allowed to manage remote users to be linked to `localUser`.\n */\n function setNetworkRemappingManager(address localUser, address delegate) external;\n\n /**\n * @notice Clears a local user's mapping for a particular network.\n * @dev This is intended to discourage and also allow recovery from griefing attacks.\n * If griefing occurs then the griefer can be removed from Smart Wallet Checker and have their remappings erased.\n * The local user can always clear their own mapping, regardless the state of the Smart Wallet Checker.\n * @param localUser - The address of the local user to erase.\n * @param chainId - The chain id of the network to erase.\n */\n function clearNetworkRemapping(address localUser, uint16 chainId) external payable;\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.1 <0.9.0;\n\n// solhint-disable\n\n/**\n * @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n * supported.\n * Uses the default 'BAL' prefix for the error code\n */\nfunction _require(bool condition, uint256 errorCode) pure {\n if (!condition) _revert(errorCode);\n}\n\n/**\n * @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n * supported.\n */\nfunction _require(\n bool condition,\n uint256 errorCode,\n bytes3 prefix\n) pure {\n if (!condition) _revert(errorCode, prefix);\n}\n\n/**\n * @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported.\n * Uses the default 'BAL' prefix for the error code\n */\nfunction _revert(uint256 errorCode) pure {\n _revert(errorCode, 0x42414c); // This is the raw byte representation of \"BAL\"\n}\n\n/**\n * @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported.\n */\nfunction _revert(uint256 errorCode, bytes3 prefix) pure {\n uint256 prefixUint = uint256(uint24(prefix));\n // We're going to dynamically create a revert string based on the error code, with the following format:\n // 'BAL#{errorCode}'\n // where the code is left-padded with zeroes to three digits (so they range from 000 to 999).\n //\n // We don't have revert strings embedded in the contract to save bytecode size: it takes much less space to store a\n // number (8 to 16 bits) than the individual string characters.\n //\n // The dynamic string creation algorithm that follows could be implemented in Solidity, but assembly allows for a\n // much denser implementation, again saving bytecode size. Given this function unconditionally reverts, this is a\n // safe place to rely on it without worrying about how its usage might affect e.g. memory contents.\n assembly {\n // First, we need to compute the ASCII representation of the error code. We assume that it is in the 0-999\n // range, so we only need to convert three digits. To convert the digits to ASCII, we add 0x30, the value for\n // the '0' character.\n\n let units := add(mod(errorCode, 10), 0x30)\n\n errorCode := div(errorCode, 10)\n let tenths := add(mod(errorCode, 10), 0x30)\n\n errorCode := div(errorCode, 10)\n let hundreds := add(mod(errorCode, 10), 0x30)\n\n // With the individual characters, we can now construct the full string.\n // We first append the '#' character (0x23) to the prefix. In the case of 'BAL', it results in 0x42414c23 ('BAL#')\n // Then, we shift this by 24 (to provide space for the 3 bytes of the error code), and add the\n // characters to it, each shifted by a multiple of 8.\n // The revert reason is then shifted left by 200 bits (256 minus the length of the string, 7 characters * 8 bits\n // per character = 56) to locate it in the most significant part of the 256 slot (the beginning of a byte\n // array).\n let formattedPrefix := shl(24, add(0x23, shl(8, prefixUint)))\n\n let revertReason := shl(200, add(formattedPrefix, add(add(units, shl(8, tenths)), shl(16, hundreds))))\n\n // We can now encode the reason in memory, which can be safely overwritten as we're about to revert. The encoded\n // message will have the following layout:\n // [ revert reason identifier ] [ string location offset ] [ string length ] [ string contents ]\n\n // The Solidity revert reason identifier is 0x08c739a0, the function selector of the Error(string) function. We\n // also write zeroes to the next 28 bytes of memory, but those are about to be overwritten.\n mstore(0x0, 0x08c379a000000000000000000000000000000000000000000000000000000000)\n // Next is the offset to the location of the string, which will be placed immediately after (20 bytes away).\n mstore(0x04, 0x0000000000000000000000000000000000000000000000000000000000000020)\n // The string length is fixed: 7 characters.\n mstore(0x24, 7)\n // Finally, the string itself is stored.\n mstore(0x44, revertReason)\n\n // Even if the string is only 7 bytes long, we need to return a full 32 byte slot containing it. The length of\n // the encoded message is therefore 4 + 32 + 32 + 32 = 100.\n revert(0, 100)\n }\n}\n\nlibrary Errors {\n // Math\n uint256 internal constant ADD_OVERFLOW = 0;\n uint256 internal constant SUB_OVERFLOW = 1;\n uint256 internal constant SUB_UNDERFLOW = 2;\n uint256 internal constant MUL_OVERFLOW = 3;\n uint256 internal constant ZERO_DIVISION = 4;\n uint256 internal constant DIV_INTERNAL = 5;\n uint256 internal constant X_OUT_OF_BOUNDS = 6;\n uint256 internal constant Y_OUT_OF_BOUNDS = 7;\n uint256 internal constant PRODUCT_OUT_OF_BOUNDS = 8;\n uint256 internal constant INVALID_EXPONENT = 9;\n\n // Input\n uint256 internal constant OUT_OF_BOUNDS = 100;\n uint256 internal constant UNSORTED_ARRAY = 101;\n uint256 internal constant UNSORTED_TOKENS = 102;\n uint256 internal constant INPUT_LENGTH_MISMATCH = 103;\n uint256 internal constant ZERO_TOKEN = 104;\n uint256 internal constant INSUFFICIENT_DATA = 105;\n\n // Shared pools\n uint256 internal constant MIN_TOKENS = 200;\n uint256 internal constant MAX_TOKENS = 201;\n uint256 internal constant MAX_SWAP_FEE_PERCENTAGE = 202;\n uint256 internal constant MIN_SWAP_FEE_PERCENTAGE = 203;\n uint256 internal constant MINIMUM_BPT = 204;\n uint256 internal constant CALLER_NOT_VAULT = 205;\n uint256 internal constant UNINITIALIZED = 206;\n uint256 internal constant BPT_IN_MAX_AMOUNT = 207;\n uint256 internal constant BPT_OUT_MIN_AMOUNT = 208;\n uint256 internal constant EXPIRED_PERMIT = 209;\n uint256 internal constant NOT_TWO_TOKENS = 210;\n uint256 internal constant DISABLED = 211;\n\n // Pools\n uint256 internal constant MIN_AMP = 300;\n uint256 internal constant MAX_AMP = 301;\n uint256 internal constant MIN_WEIGHT = 302;\n uint256 internal constant MAX_STABLE_TOKENS = 303;\n uint256 internal constant MAX_IN_RATIO = 304;\n uint256 internal constant MAX_OUT_RATIO = 305;\n uint256 internal constant MIN_BPT_IN_FOR_TOKEN_OUT = 306;\n uint256 internal constant MAX_OUT_BPT_FOR_TOKEN_IN = 307;\n uint256 internal constant NORMALIZED_WEIGHT_INVARIANT = 308;\n uint256 internal constant INVALID_TOKEN = 309;\n uint256 internal constant UNHANDLED_JOIN_KIND = 310;\n uint256 internal constant ZERO_INVARIANT = 311;\n uint256 internal constant ORACLE_INVALID_SECONDS_QUERY = 312;\n uint256 internal constant ORACLE_NOT_INITIALIZED = 313;\n uint256 internal constant ORACLE_QUERY_TOO_OLD = 314;\n uint256 internal constant ORACLE_INVALID_INDEX = 315;\n uint256 internal constant ORACLE_BAD_SECS = 316;\n uint256 internal constant AMP_END_TIME_TOO_CLOSE = 317;\n uint256 internal constant AMP_ONGOING_UPDATE = 318;\n uint256 internal constant AMP_RATE_TOO_HIGH = 319;\n uint256 internal constant AMP_NO_ONGOING_UPDATE = 320;\n uint256 internal constant STABLE_INVARIANT_DIDNT_CONVERGE = 321;\n uint256 internal constant STABLE_GET_BALANCE_DIDNT_CONVERGE = 322;\n uint256 internal constant RELAYER_NOT_CONTRACT = 323;\n uint256 internal constant BASE_POOL_RELAYER_NOT_CALLED = 324;\n uint256 internal constant REBALANCING_RELAYER_REENTERED = 325;\n uint256 internal constant GRADUAL_UPDATE_TIME_TRAVEL = 326;\n uint256 internal constant SWAPS_DISABLED = 327;\n uint256 internal constant CALLER_IS_NOT_LBP_OWNER = 328;\n uint256 internal constant PRICE_RATE_OVERFLOW = 329;\n uint256 internal constant INVALID_JOIN_EXIT_KIND_WHILE_SWAPS_DISABLED = 330;\n uint256 internal constant WEIGHT_CHANGE_TOO_FAST = 331;\n uint256 internal constant LOWER_GREATER_THAN_UPPER_TARGET = 332;\n uint256 internal constant UPPER_TARGET_TOO_HIGH = 333;\n uint256 internal constant UNHANDLED_BY_LINEAR_POOL = 334;\n uint256 internal constant OUT_OF_TARGET_RANGE = 335;\n uint256 internal constant UNHANDLED_EXIT_KIND = 336;\n uint256 internal constant UNAUTHORIZED_EXIT = 337;\n uint256 internal constant MAX_MANAGEMENT_SWAP_FEE_PERCENTAGE = 338;\n uint256 internal constant UNHANDLED_BY_MANAGED_POOL = 339;\n uint256 internal constant UNHANDLED_BY_PHANTOM_POOL = 340;\n uint256 internal constant TOKEN_DOES_NOT_HAVE_RATE_PROVIDER = 341;\n uint256 internal constant INVALID_INITIALIZATION = 342;\n uint256 internal constant OUT_OF_NEW_TARGET_RANGE = 343;\n uint256 internal constant FEATURE_DISABLED = 344;\n uint256 internal constant UNINITIALIZED_POOL_CONTROLLER = 345;\n uint256 internal constant SET_SWAP_FEE_DURING_FEE_CHANGE = 346;\n uint256 internal constant SET_SWAP_FEE_PENDING_FEE_CHANGE = 347;\n uint256 internal constant CHANGE_TOKENS_DURING_WEIGHT_CHANGE = 348;\n uint256 internal constant CHANGE_TOKENS_PENDING_WEIGHT_CHANGE = 349;\n uint256 internal constant MAX_WEIGHT = 350;\n uint256 internal constant UNAUTHORIZED_JOIN = 351;\n uint256 internal constant MAX_MANAGEMENT_AUM_FEE_PERCENTAGE = 352;\n uint256 internal constant FRACTIONAL_TARGET = 353;\n uint256 internal constant ADD_OR_REMOVE_BPT = 354;\n uint256 internal constant INVALID_CIRCUIT_BREAKER_BOUNDS = 355;\n uint256 internal constant CIRCUIT_BREAKER_TRIPPED = 356;\n uint256 internal constant MALICIOUS_QUERY_REVERT = 357;\n uint256 internal constant JOINS_EXITS_DISABLED = 358;\n\n // Lib\n uint256 internal constant REENTRANCY = 400;\n uint256 internal constant SENDER_NOT_ALLOWED = 401;\n uint256 internal constant PAUSED = 402;\n uint256 internal constant PAUSE_WINDOW_EXPIRED = 403;\n uint256 internal constant MAX_PAUSE_WINDOW_DURATION = 404;\n uint256 internal constant MAX_BUFFER_PERIOD_DURATION = 405;\n uint256 internal constant INSUFFICIENT_BALANCE = 406;\n uint256 internal constant INSUFFICIENT_ALLOWANCE = 407;\n uint256 internal constant ERC20_TRANSFER_FROM_ZERO_ADDRESS = 408;\n uint256 internal constant ERC20_TRANSFER_TO_ZERO_ADDRESS = 409;\n uint256 internal constant ERC20_MINT_TO_ZERO_ADDRESS = 410;\n uint256 internal constant ERC20_BURN_FROM_ZERO_ADDRESS = 411;\n uint256 internal constant ERC20_APPROVE_FROM_ZERO_ADDRESS = 412;\n uint256 internal constant ERC20_APPROVE_TO_ZERO_ADDRESS = 413;\n uint256 internal constant ERC20_TRANSFER_EXCEEDS_ALLOWANCE = 414;\n uint256 internal constant ERC20_DECREASED_ALLOWANCE_BELOW_ZERO = 415;\n uint256 internal constant ERC20_TRANSFER_EXCEEDS_BALANCE = 416;\n uint256 internal constant ERC20_BURN_EXCEEDS_ALLOWANCE = 417;\n uint256 internal constant SAFE_ERC20_CALL_FAILED = 418;\n uint256 internal constant ADDRESS_INSUFFICIENT_BALANCE = 419;\n uint256 internal constant ADDRESS_CANNOT_SEND_VALUE = 420;\n uint256 internal constant SAFE_CAST_VALUE_CANT_FIT_INT256 = 421;\n uint256 internal constant GRANT_SENDER_NOT_ADMIN = 422;\n uint256 internal constant REVOKE_SENDER_NOT_ADMIN = 423;\n uint256 internal constant RENOUNCE_SENDER_NOT_ALLOWED = 424;\n uint256 internal constant BUFFER_PERIOD_EXPIRED = 425;\n uint256 internal constant CALLER_IS_NOT_OWNER = 426;\n uint256 internal constant NEW_OWNER_IS_ZERO = 427;\n uint256 internal constant CODE_DEPLOYMENT_FAILED = 428;\n uint256 internal constant CALL_TO_NON_CONTRACT = 429;\n uint256 internal constant LOW_LEVEL_CALL_FAILED = 430;\n uint256 internal constant NOT_PAUSED = 431;\n uint256 internal constant ADDRESS_ALREADY_ALLOWLISTED = 432;\n uint256 internal constant ADDRESS_NOT_ALLOWLISTED = 433;\n uint256 internal constant ERC20_BURN_EXCEEDS_BALANCE = 434;\n uint256 internal constant INVALID_OPERATION = 435;\n uint256 internal constant CODEC_OVERFLOW = 436;\n uint256 internal constant IN_RECOVERY_MODE = 437;\n uint256 internal constant NOT_IN_RECOVERY_MODE = 438;\n uint256 internal constant INDUCED_FAILURE = 439;\n uint256 internal constant EXPIRED_SIGNATURE = 440;\n uint256 internal constant MALFORMED_SIGNATURE = 441;\n uint256 internal constant SAFE_CAST_VALUE_CANT_FIT_UINT64 = 442;\n uint256 internal constant UNHANDLED_FEE_TYPE = 443;\n uint256 internal constant BURN_FROM_ZERO = 444;\n\n // Vault\n uint256 internal constant INVALID_POOL_ID = 500;\n uint256 internal constant CALLER_NOT_POOL = 501;\n uint256 internal constant SENDER_NOT_ASSET_MANAGER = 502;\n uint256 internal constant USER_DOESNT_ALLOW_RELAYER = 503;\n uint256 internal constant INVALID_SIGNATURE = 504;\n uint256 internal constant EXIT_BELOW_MIN = 505;\n uint256 internal constant JOIN_ABOVE_MAX = 506;\n uint256 internal constant SWAP_LIMIT = 507;\n uint256 internal constant SWAP_DEADLINE = 508;\n uint256 internal constant CANNOT_SWAP_SAME_TOKEN = 509;\n uint256 internal constant UNKNOWN_AMOUNT_IN_FIRST_SWAP = 510;\n uint256 internal constant MALCONSTRUCTED_MULTIHOP_SWAP = 511;\n uint256 internal constant INTERNAL_BALANCE_OVERFLOW = 512;\n uint256 internal constant INSUFFICIENT_INTERNAL_BALANCE = 513;\n uint256 internal constant INVALID_ETH_INTERNAL_BALANCE = 514;\n uint256 internal constant INVALID_POST_LOAN_BALANCE = 515;\n uint256 internal constant INSUFFICIENT_ETH = 516;\n uint256 internal constant UNALLOCATED_ETH = 517;\n uint256 internal constant ETH_TRANSFER = 518;\n uint256 internal constant CANNOT_USE_ETH_SENTINEL = 519;\n uint256 internal constant TOKENS_MISMATCH = 520;\n uint256 internal constant TOKEN_NOT_REGISTERED = 521;\n uint256 internal constant TOKEN_ALREADY_REGISTERED = 522;\n uint256 internal constant TOKENS_ALREADY_SET = 523;\n uint256 internal constant TOKENS_LENGTH_MUST_BE_2 = 524;\n uint256 internal constant NONZERO_TOKEN_BALANCE = 525;\n uint256 internal constant BALANCE_TOTAL_OVERFLOW = 526;\n uint256 internal constant POOL_NO_TOKENS = 527;\n uint256 internal constant INSUFFICIENT_FLASH_LOAN_BALANCE = 528;\n\n // Fees\n uint256 internal constant SWAP_FEE_PERCENTAGE_TOO_HIGH = 600;\n uint256 internal constant FLASH_LOAN_FEE_PERCENTAGE_TOO_HIGH = 601;\n uint256 internal constant INSUFFICIENT_FLASH_LOAN_FEE_AMOUNT = 602;\n uint256 internal constant AUM_FEE_PERCENTAGE_TOO_HIGH = 603;\n\n // FeeSplitter\n uint256 internal constant SPLITTER_FEE_PERCENTAGE_TOO_HIGH = 700;\n\n // Misc\n uint256 internal constant UNIMPLEMENTED = 998;\n uint256 internal constant SHOULD_NOT_HAPPEN = 999;\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IAuthentication {\n /**\n * @dev Returns the action identifier associated with the external function described by `selector`.\n */\n function getActionId(bytes4 selector) external view returns (bytes32);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface for the OptionalOnlyCaller helper, used to opt in to a caller\n * verification for a given address to methods that are otherwise callable by any address.\n */\ninterface IOptionalOnlyCaller {\n /**\n * @dev Emitted every time setOnlyCallerCheck is called.\n */\n event OnlyCallerOptIn(address user, bool enabled);\n\n /**\n * @dev Enables / disables verification mechanism for caller.\n * @param enabled - True if caller verification shall be enabled, false otherwise.\n */\n function setOnlyCallerCheck(bool enabled) external;\n\n function setOnlyCallerCheckWithSignature(\n address user,\n bool enabled,\n bytes memory signature\n ) external;\n\n /**\n * @dev Returns true if caller verification is enabled for the given user, false otherwise.\n */\n function isOnlyCallerEnabled(address user) external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface for the SignatureValidator helper, used to support meta-transactions.\n */\ninterface ISignaturesValidator {\n /**\n * @dev Returns the EIP712 domain separator.\n */\n function getDomainSeparator() external view returns (bytes32);\n\n /**\n * @dev Returns the next nonce used by an address to sign messages.\n */\n function getNextNonce(address user) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface for the TemporarilyPausable helper.\n */\ninterface ITemporarilyPausable {\n /**\n * @dev Emitted every time the pause state changes by `_setPaused`.\n */\n event PausedStateChanged(bool paused);\n\n /**\n * @dev Returns the current paused state.\n */\n function getPausedState()\n external\n view\n returns (\n bool paused,\n uint256 pauseWindowEndTime,\n uint256 bufferPeriodEndTime\n );\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @notice Simple interface to retrieve the version of a deployed contract.\n */\ninterface IVersion {\n /**\n * @dev Returns a JSON representation of the contract version containing name, version number and task ID.\n */\n function version() external view returns (string memory);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../openzeppelin/IERC20.sol\";\n\n/**\n * @dev Interface for WETH9.\n * See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol\n */\ninterface IWETH is IERC20 {\n function deposit() external payable;\n\n function withdraw(uint256 amount) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (interfaces/IERC1271.sol)\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface of the ERC1271 standard signature validation method for\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\n *\n * _Available since v4.1._\n */\ninterface IERC1271 {\n /**\n * @dev Should return whether the signature provided is valid for the provided data\n * @param hash Hash of the data to be signed\n * @param signature Signature byte array associated with _data\n */\n function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) external returns (bool);\n\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20Permit {\n /**\n * @dev Sets `value` as the allowance of `spender` over `owner`'s tokens,\n * given `owner`'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero\n * address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like\n * types.\n *\n * This concept is unrelated to a Pool's Asset Managers.\n */\ninterface IAsset {\n // solhint-disable-previous-line no-empty-blocks\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IAuthorizer {\n /**\n * @dev Returns true if `account` can perform the action described by `actionId` in the contract `where`.\n */\n function canPerform(\n bytes32 actionId,\n address account,\n address where\n ) external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n// Inspired by Aave Protocol's IFlashLoanReceiver.\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IFlashLoanRecipient {\n /**\n * @dev When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient.\n *\n * At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this\n * call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the\n * Vault, or else the entire flash loan will revert.\n *\n * `userData` is the same value passed in the `IVault.flashLoan` call.\n */\n function receiveFlashLoan(\n IERC20[] memory tokens,\n uint256[] memory amounts,\n uint256[] memory feeAmounts,\n bytes memory userData\n ) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IVault.sol\";\nimport \"./IAuthorizer.sol\";\n\ninterface IProtocolFeesCollector {\n event SwapFeePercentageChanged(uint256 newSwapFeePercentage);\n event FlashLoanFeePercentageChanged(uint256 newFlashLoanFeePercentage);\n\n function withdrawCollectedFees(\n IERC20[] calldata tokens,\n uint256[] calldata amounts,\n address recipient\n ) external;\n\n function setSwapFeePercentage(uint256 newSwapFeePercentage) external;\n\n function setFlashLoanFeePercentage(uint256 newFlashLoanFeePercentage) external;\n\n function getSwapFeePercentage() external view returns (uint256);\n\n function getFlashLoanFeePercentage() external view returns (uint256);\n\n function getCollectedFeeAmounts(IERC20[] memory tokens) external view returns (uint256[] memory feeAmounts);\n\n function getAuthorizer() external view returns (IAuthorizer);\n\n function vault() external view returns (IVault);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\nimport \"../solidity-utils/helpers/ISignaturesValidator.sol\";\nimport \"../solidity-utils/helpers/ITemporarilyPausable.sol\";\nimport \"../solidity-utils/misc/IWETH.sol\";\n\nimport \"./IAsset.sol\";\nimport \"./IAuthorizer.sol\";\nimport \"./IFlashLoanRecipient.sol\";\nimport \"./IProtocolFeesCollector.sol\";\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Full external interface for the Vault core contract - no external or public methods exist in the contract that\n * don't override one of these declarations.\n */\ninterface IVault is ISignaturesValidator, ITemporarilyPausable, IAuthentication {\n // Generalities about the Vault:\n //\n // - Whenever documentation refers to 'tokens', it strictly refers to ERC20-compliant token contracts. Tokens are\n // transferred out of the Vault by calling the `IERC20.transfer` function, and transferred in by calling\n // `IERC20.transferFrom`. In these cases, the sender must have previously allowed the Vault to use their tokens by\n // calling `IERC20.approve`. The only deviation from the ERC20 standard that is supported is functions not returning\n // a boolean value: in these scenarios, a non-reverting call is assumed to be successful.\n //\n // - All non-view functions in the Vault are non-reentrant: calling them while another one is mid-execution (e.g.\n // while execution control is transferred to a token contract during a swap) will result in a revert. View\n // functions can be called in a re-reentrant way, but doing so might cause them to return inconsistent results.\n // Contracts calling view functions in the Vault must make sure the Vault has not already been entered.\n //\n // - View functions revert if referring to either unregistered Pools, or unregistered tokens for registered Pools.\n\n // Authorizer\n //\n // Some system actions are permissioned, like setting and collecting protocol fees. This permissioning system exists\n // outside of the Vault in the Authorizer contract: the Vault simply calls the Authorizer to check if the caller\n // can perform a given action.\n\n /**\n * @dev Returns the Vault's Authorizer.\n */\n function getAuthorizer() external view returns (IAuthorizer);\n\n /**\n * @dev Sets a new Authorizer for the Vault. The caller must be allowed by the current Authorizer to do this.\n *\n * Emits an `AuthorizerChanged` event.\n */\n function setAuthorizer(IAuthorizer newAuthorizer) external;\n\n /**\n * @dev Emitted when a new authorizer is set by `setAuthorizer`.\n */\n event AuthorizerChanged(IAuthorizer indexed newAuthorizer);\n\n // Relayers\n //\n // Additionally, it is possible for an account to perform certain actions on behalf of another one, using their\n // Vault ERC20 allowance and Internal Balance. These accounts are said to be 'relayers' for these Vault functions,\n // and are expected to be smart contracts with sound authentication mechanisms. For an account to be able to wield\n // this power, two things must occur:\n // - The Authorizer must grant the account the permission to be a relayer for the relevant Vault function. This\n // means that Balancer governance must approve each individual contract to act as a relayer for the intended\n // functions.\n // - Each user must approve the relayer to act on their behalf.\n // This double protection means users cannot be tricked into approving malicious relayers (because they will not\n // have been allowed by the Authorizer via governance), nor can malicious relayers approved by a compromised\n // Authorizer or governance drain user funds, since they would also need to be approved by each individual user.\n\n /**\n * @dev Returns true if `user` has approved `relayer` to act as a relayer for them.\n */\n function hasApprovedRelayer(address user, address relayer) external view returns (bool);\n\n /**\n * @dev Allows `relayer` to act as a relayer for `sender` if `approved` is true, and disallows it otherwise.\n *\n * Emits a `RelayerApprovalChanged` event.\n */\n function setRelayerApproval(\n address sender,\n address relayer,\n bool approved\n ) external;\n\n /**\n * @dev Emitted every time a relayer is approved or disapproved by `setRelayerApproval`.\n */\n event RelayerApprovalChanged(address indexed relayer, address indexed sender, bool approved);\n\n // Internal Balance\n //\n // Users can deposit tokens into the Vault, where they are allocated to their Internal Balance, and later\n // transferred or withdrawn. It can also be used as a source of tokens when joining Pools, as a destination\n // when exiting them, and as either when performing swaps. This usage of Internal Balance results in greatly reduced\n // gas costs when compared to relying on plain ERC20 transfers, leading to large savings for frequent users.\n //\n // Internal Balance management features batching, which means a single contract call can be used to perform multiple\n // operations of different kinds, with different senders and recipients, at once.\n\n /**\n * @dev Returns `user`'s Internal Balance for a set of tokens.\n */\n function getInternalBalance(address user, IERC20[] memory tokens) external view returns (uint256[] memory);\n\n /**\n * @dev Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer)\n * and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as\n * it lets integrators reuse a user's Vault allowance.\n *\n * For each operation, if the caller is not `sender`, it must be an authorized relayer for them.\n */\n function manageUserBalance(UserBalanceOp[] memory ops) external payable;\n\n /**\n * @dev Data for `manageUserBalance` operations, which include the possibility for ETH to be sent and received\n without manual WETH wrapping or unwrapping.\n */\n struct UserBalanceOp {\n UserBalanceOpKind kind;\n IAsset asset;\n uint256 amount;\n address sender;\n address payable recipient;\n }\n\n // There are four possible operations in `manageUserBalance`:\n //\n // - DEPOSIT_INTERNAL\n // Increases the Internal Balance of the `recipient` account by transferring tokens from the corresponding\n // `sender`. The sender must have allowed the Vault to use their tokens via `IERC20.approve()`.\n //\n // ETH can be used by passing the ETH sentinel value as the asset and forwarding ETH in the call: it will be wrapped\n // and deposited as WETH. Any ETH amount remaining will be sent back to the caller (not the sender, which is\n // relevant for relayers).\n //\n // Emits an `InternalBalanceChanged` event.\n //\n //\n // - WITHDRAW_INTERNAL\n // Decreases the Internal Balance of the `sender` account by transferring tokens to the `recipient`.\n //\n // ETH can be used by passing the ETH sentinel value as the asset. This will deduct WETH instead, unwrap it and send\n // it to the recipient as ETH.\n //\n // Emits an `InternalBalanceChanged` event.\n //\n //\n // - TRANSFER_INTERNAL\n // Transfers tokens from the Internal Balance of the `sender` account to the Internal Balance of `recipient`.\n //\n // Reverts if the ETH sentinel value is passed.\n //\n // Emits an `InternalBalanceChanged` event.\n //\n //\n // - TRANSFER_EXTERNAL\n // Transfers tokens from `sender` to `recipient`, using the Vault's ERC20 allowance. This is typically used by\n // relayers, as it lets them reuse a user's Vault allowance.\n //\n // Reverts if the ETH sentinel value is passed.\n //\n // Emits an `ExternalBalanceTransfer` event.\n\n enum UserBalanceOpKind { DEPOSIT_INTERNAL, WITHDRAW_INTERNAL, TRANSFER_INTERNAL, TRANSFER_EXTERNAL }\n\n /**\n * @dev Emitted when a user's Internal Balance changes, either from calls to `manageUserBalance`, or through\n * interacting with Pools using Internal Balance.\n *\n * Because Internal Balance works exclusively with ERC20 tokens, ETH deposits and withdrawals will use the WETH\n * address.\n */\n event InternalBalanceChanged(address indexed user, IERC20 indexed token, int256 delta);\n\n /**\n * @dev Emitted when a user's Vault ERC20 allowance is used by the Vault to transfer tokens to an external account.\n */\n event ExternalBalanceTransfer(IERC20 indexed token, address indexed sender, address recipient, uint256 amount);\n\n // Pools\n //\n // There are three specialization settings for Pools, which allow for cheaper swaps at the cost of reduced\n // functionality:\n //\n // - General: no specialization, suited for all Pools. IGeneralPool is used for swap request callbacks, passing the\n // balance of all tokens in the Pool. These Pools have the largest swap costs (because of the extra storage reads),\n // which increase with the number of registered tokens.\n //\n // - Minimal Swap Info: IMinimalSwapInfoPool is used instead of IGeneralPool, which saves gas by only passing the\n // balance of the two tokens involved in the swap. This is suitable for some pricing algorithms, like the weighted\n // constant product one popularized by Balancer V1. Swap costs are smaller compared to general Pools, and are\n // independent of the number of registered tokens.\n //\n // - Two Token: only allows two tokens to be registered. This achieves the lowest possible swap gas cost. Like\n // minimal swap info Pools, these are called via IMinimalSwapInfoPool.\n\n enum PoolSpecialization { GENERAL, MINIMAL_SWAP_INFO, TWO_TOKEN }\n\n /**\n * @dev Registers the caller account as a Pool with a given specialization setting. Returns the Pool's ID, which\n * is used in all Pool-related functions. Pools cannot be deregistered, nor can the Pool's specialization be\n * changed.\n *\n * The caller is expected to be a smart contract that implements either `IGeneralPool` or `IMinimalSwapInfoPool`,\n * depending on the chosen specialization setting. This contract is known as the Pool's contract.\n *\n * Note that the same contract may register itself as multiple Pools with unique Pool IDs, or in other words,\n * multiple Pools may share the same contract.\n *\n * Emits a `PoolRegistered` event.\n */\n function registerPool(PoolSpecialization specialization) external returns (bytes32);\n\n /**\n * @dev Emitted when a Pool is registered by calling `registerPool`.\n */\n event PoolRegistered(bytes32 indexed poolId, address indexed poolAddress, PoolSpecialization specialization);\n\n /**\n * @dev Returns a Pool's contract address and specialization setting.\n */\n function getPool(bytes32 poolId) external view returns (address, PoolSpecialization);\n\n /**\n * @dev Registers `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n *\n * Pools can only interact with tokens they have registered. Users join a Pool by transferring registered tokens,\n * exit by receiving registered tokens, and can only swap registered tokens.\n *\n * Each token can only be registered once. For Pools with the Two Token specialization, `tokens` must have a length\n * of two, that is, both tokens must be registered in the same `registerTokens` call, and they must be sorted in\n * ascending order.\n *\n * The `tokens` and `assetManagers` arrays must have the same length, and each entry in these indicates the Asset\n * Manager for the corresponding token. Asset Managers can manage a Pool's tokens via `managePoolBalance`,\n * depositing and withdrawing them directly, and can even set their balance to arbitrary amounts. They are therefore\n * expected to be highly secured smart contracts with sound design principles, and the decision to register an\n * Asset Manager should not be made lightly.\n *\n * Pools can choose not to assign an Asset Manager to a given token by passing in the zero address. Once an Asset\n * Manager is set, it cannot be changed except by deregistering the associated token and registering again with a\n * different Asset Manager.\n *\n * Emits a `TokensRegistered` event.\n */\n function registerTokens(\n bytes32 poolId,\n IERC20[] memory tokens,\n address[] memory assetManagers\n ) external;\n\n /**\n * @dev Emitted when a Pool registers tokens by calling `registerTokens`.\n */\n event TokensRegistered(bytes32 indexed poolId, IERC20[] tokens, address[] assetManagers);\n\n /**\n * @dev Deregisters `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n *\n * Only registered tokens (via `registerTokens`) can be deregistered. Additionally, they must have zero total\n * balance. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens\n * must be deregistered in the same `deregisterTokens` call.\n *\n * A deregistered token can be re-registered later on, possibly with a different Asset Manager.\n *\n * Emits a `TokensDeregistered` event.\n */\n function deregisterTokens(bytes32 poolId, IERC20[] memory tokens) external;\n\n /**\n * @dev Emitted when a Pool deregisters tokens by calling `deregisterTokens`.\n */\n event TokensDeregistered(bytes32 indexed poolId, IERC20[] tokens);\n\n /**\n * @dev Returns detailed information for a Pool's registered token.\n *\n * `cash` is the number of tokens the Vault currently holds for the Pool. `managed` is the number of tokens\n * withdrawn and held outside the Vault by the Pool's token Asset Manager. The Pool's total balance for `token`\n * equals the sum of `cash` and `managed`.\n *\n * Internally, `cash` and `managed` are stored using 112 bits. No action can ever cause a Pool's token `cash`,\n * `managed` or `total` balance to be greater than 2^112 - 1.\n *\n * `lastChangeBlock` is the number of the block in which `token`'s total balance was last modified (via either a\n * join, exit, swap, or Asset Manager update). This value is useful to avoid so-called 'sandwich attacks', for\n * example when developing price oracles. A change of zero (e.g. caused by a swap with amount zero) is considered a\n * change for this purpose, and will update `lastChangeBlock`.\n *\n * `assetManager` is the Pool's token Asset Manager.\n */\n function getPoolTokenInfo(bytes32 poolId, IERC20 token)\n external\n view\n returns (\n uint256 cash,\n uint256 managed,\n uint256 lastChangeBlock,\n address assetManager\n );\n\n /**\n * @dev Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of\n * the tokens' `balances` changed.\n *\n * The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all\n * Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order.\n *\n * If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same\n * order as passed to `registerTokens`.\n *\n * Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are\n * the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo`\n * instead.\n */\n function getPoolTokens(bytes32 poolId)\n external\n view\n returns (\n IERC20[] memory tokens,\n uint256[] memory balances,\n uint256 lastChangeBlock\n );\n\n /**\n * @dev Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will\n * trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized\n * Pool shares.\n *\n * If the caller is not `sender`, it must be an authorized relayer for them.\n *\n * The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount\n * to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces\n * these maximums.\n *\n * If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable\n * this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the\n * WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent\n * back to the caller (not the sender, which is important for relayers).\n *\n * `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n * interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be\n * sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final\n * `assets` array might not be sorted. Pools with no registered tokens cannot be joined.\n *\n * If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only\n * be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be\n * withdrawn from Internal Balance: attempting to do so will trigger a revert.\n *\n * This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement\n * their own custom logic. This typically requires additional information from the user (such as the expected number\n * of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed\n * directly to the Pool's contract, as is `recipient`.\n *\n * Emits a `PoolBalanceChanged` event.\n */\n function joinPool(\n bytes32 poolId,\n address sender,\n address recipient,\n JoinPoolRequest memory request\n ) external payable;\n\n struct JoinPoolRequest {\n IAsset[] assets;\n uint256[] maxAmountsIn;\n bytes userData;\n bool fromInternalBalance;\n }\n\n /**\n * @dev Called by users to exit a Pool, which transfers tokens from the Pool's balance to `recipient`. This will\n * trigger custom Pool behavior, which will typically ask for something in return from `sender` - often tokenized\n * Pool shares. The amount of tokens that can be withdrawn is limited by the Pool's `cash` balance (see\n * `getPoolTokenInfo`).\n *\n * If the caller is not `sender`, it must be an authorized relayer for them.\n *\n * The `tokens` and `minAmountsOut` arrays must have the same length, and each entry in these indicates the minimum\n * token amount to receive for each token contract. The amounts to send are decided by the Pool and not the Vault:\n * it just enforces these minimums.\n *\n * If exiting a Pool that holds WETH, it is possible to receive ETH directly: the Vault will do the unwrapping. To\n * enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead\n * of the WETH address. Note that it is not possible to combine ETH and WETH in the same exit.\n *\n * `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n * interacting with Pools that register and deregister tokens frequently. If receiving ETH however, the array must\n * be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the\n * final `assets` array might not be sorted. Pools with no registered tokens cannot be exited.\n *\n * If `toInternalBalance` is true, the tokens will be deposited to `recipient`'s Internal Balance. Otherwise,\n * an ERC20 transfer will be performed. Note that ETH cannot be deposited to Internal Balance: attempting to\n * do so will trigger a revert.\n *\n * `minAmountsOut` is the minimum amount of tokens the user expects to get out of the Pool, for each token in the\n * `tokens` array. This array must match the Pool's registered tokens.\n *\n * This causes the Vault to call the `IBasePool.onExitPool` hook on the Pool's contract, where Pools implement\n * their own custom logic. This typically requires additional information from the user (such as the expected number\n * of Pool shares to return). This can be encoded in the `userData` argument, which is ignored by the Vault and\n * passed directly to the Pool's contract.\n *\n * Emits a `PoolBalanceChanged` event.\n */\n function exitPool(\n bytes32 poolId,\n address sender,\n address payable recipient,\n ExitPoolRequest memory request\n ) external;\n\n struct ExitPoolRequest {\n IAsset[] assets;\n uint256[] minAmountsOut;\n bytes userData;\n bool toInternalBalance;\n }\n\n /**\n * @dev Emitted when a user joins or exits a Pool by calling `joinPool` or `exitPool`, respectively.\n */\n event PoolBalanceChanged(\n bytes32 indexed poolId,\n address indexed liquidityProvider,\n IERC20[] tokens,\n int256[] deltas,\n uint256[] protocolFeeAmounts\n );\n\n enum PoolBalanceChangeKind { JOIN, EXIT }\n\n // Swaps\n //\n // Users can swap tokens with Pools by calling the `swap` and `batchSwap` functions. To do this,\n // they need not trust Pool contracts in any way: all security checks are made by the Vault. They must however be\n // aware of the Pools' pricing algorithms in order to estimate the prices Pools will quote.\n //\n // The `swap` function executes a single swap, while `batchSwap` can perform multiple swaps in sequence.\n // In each individual swap, tokens of one kind are sent from the sender to the Pool (this is the 'token in'),\n // and tokens of another kind are sent from the Pool to the recipient in exchange (this is the 'token out').\n // More complex swaps, such as one token in to multiple tokens out can be achieved by batching together\n // individual swaps.\n //\n // There are two swap kinds:\n // - 'given in' swaps, where the amount of tokens in (sent to the Pool) is known, and the Pool determines (via the\n // `onSwap` hook) the amount of tokens out (to send to the recipient).\n // - 'given out' swaps, where the amount of tokens out (received from the Pool) is known, and the Pool determines\n // (via the `onSwap` hook) the amount of tokens in (to receive from the sender).\n //\n // Additionally, it is possible to chain swaps using a placeholder input amount, which the Vault replaces with\n // the calculated output of the previous swap. If the previous swap was 'given in', this will be the calculated\n // tokenOut amount. If the previous swap was 'given out', it will use the calculated tokenIn amount. These extended\n // swaps are known as 'multihop' swaps, since they 'hop' through a number of intermediate tokens before arriving at\n // the final intended token.\n //\n // In all cases, tokens are only transferred in and out of the Vault (or withdrawn from and deposited into Internal\n // Balance) after all individual swaps have been completed, and the net token balance change computed. This makes\n // certain swap patterns, such as multihops, or swaps that interact with the same token pair in multiple Pools, cost\n // much less gas than they would otherwise.\n //\n // It also means that under certain conditions it is possible to perform arbitrage by swapping with multiple\n // Pools in a way that results in net token movement out of the Vault (profit), with no tokens being sent in (only\n // updating the Pool's internal accounting).\n //\n // To protect users from front-running or the market changing rapidly, they supply a list of 'limits' for each token\n // involved in the swap, where either the maximum number of tokens to send (by passing a positive value) or the\n // minimum amount of tokens to receive (by passing a negative value) is specified.\n //\n // Additionally, a 'deadline' timestamp can also be provided, forcing the swap to fail if it occurs after\n // this point in time (e.g. if the transaction failed to be included in a block promptly).\n //\n // If interacting with Pools that hold WETH, it is possible to both send and receive ETH directly: the Vault will do\n // the wrapping and unwrapping. To enable this mechanism, the IAsset sentinel value (the zero address) must be\n // passed in the `assets` array instead of the WETH address. Note that it is possible to combine ETH and WETH in the\n // same swap. Any excess ETH will be sent back to the caller (not the sender, which is relevant for relayers).\n //\n // Finally, Internal Balance can be used when either sending or receiving tokens.\n\n enum SwapKind { GIVEN_IN, GIVEN_OUT }\n\n /**\n * @dev Performs a swap with a single Pool.\n *\n * If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens\n * taken from the Pool, which must be greater than or equal to `limit`.\n *\n * If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens\n * sent to the Pool, which must be less than or equal to `limit`.\n *\n * Internal Balance usage and the recipient are determined by the `funds` struct.\n *\n * Emits a `Swap` event.\n */\n function swap(\n SingleSwap memory singleSwap,\n FundManagement memory funds,\n uint256 limit,\n uint256 deadline\n ) external payable returns (uint256);\n\n /**\n * @dev Data for a single swap executed by `swap`. `amount` is either `amountIn` or `amountOut` depending on\n * the `kind` value.\n *\n * `assetIn` and `assetOut` are either token addresses, or the IAsset sentinel value for ETH (the zero address).\n * Note that Pools never interact with ETH directly: it will be wrapped to or unwrapped from WETH by the Vault.\n *\n * The `userData` field is ignored by the Vault, but forwarded to the Pool in the `onSwap` hook, and may be\n * used to extend swap behavior.\n */\n struct SingleSwap {\n bytes32 poolId;\n SwapKind kind;\n IAsset assetIn;\n IAsset assetOut;\n uint256 amount;\n bytes userData;\n }\n\n /**\n * @dev Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either\n * the amount of tokens sent to or received from the Pool, depending on the `kind` value.\n *\n * Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the\n * Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at\n * the same index in the `assets` array.\n *\n * Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a\n * Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or\n * `amountOut` depending on the swap kind.\n *\n * Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out\n * of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal\n * the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`.\n *\n * The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses,\n * or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and\n * out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to\n * or unwrapped from WETH by the Vault.\n *\n * Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies\n * the minimum or maximum amount of each token the vault is allowed to transfer.\n *\n * `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the\n * equivalent `swap` call.\n *\n * Emits `Swap` events.\n */\n function batchSwap(\n SwapKind kind,\n BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n FundManagement memory funds,\n int256[] memory limits,\n uint256 deadline\n ) external payable returns (int256[] memory);\n\n /**\n * @dev Data for each individual swap executed by `batchSwap`. The asset in and out fields are indexes into the\n * `assets` array passed to that function, and ETH assets are converted to WETH.\n *\n * If `amount` is zero, the multihop mechanism is used to determine the actual amount based on the amount in/out\n * from the previous swap, depending on the swap kind.\n *\n * The `userData` field is ignored by the Vault, but forwarded to the Pool in the `onSwap` hook, and may be\n * used to extend swap behavior.\n */\n struct BatchSwapStep {\n bytes32 poolId;\n uint256 assetInIndex;\n uint256 assetOutIndex;\n uint256 amount;\n bytes userData;\n }\n\n /**\n * @dev Emitted for each individual swap performed by `swap` or `batchSwap`.\n */\n event Swap(\n bytes32 indexed poolId,\n IERC20 indexed tokenIn,\n IERC20 indexed tokenOut,\n uint256 amountIn,\n uint256 amountOut\n );\n\n /**\n * @dev All tokens in a swap are either sent from the `sender` account to the Vault, or from the Vault to the\n * `recipient` account.\n *\n * If the caller is not `sender`, it must be an authorized relayer for them.\n *\n * If `fromInternalBalance` is true, the `sender`'s Internal Balance will be preferred, performing an ERC20\n * transfer for the difference between the requested amount and the User's Internal Balance (if any). The `sender`\n * must have allowed the Vault to use their tokens via `IERC20.approve()`. This matches the behavior of\n * `joinPool`.\n *\n * If `toInternalBalance` is true, tokens will be deposited to `recipient`'s internal balance instead of\n * transferred. This matches the behavior of `exitPool`.\n *\n * Note that ETH cannot be deposited to or withdrawn from Internal Balance: attempting to do so will trigger a\n * revert.\n */\n struct FundManagement {\n address sender;\n bool fromInternalBalance;\n address payable recipient;\n bool toInternalBalance;\n }\n\n /**\n * @dev Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be\n * simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result.\n *\n * Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH)\n * the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it\n * receives are the same that an equivalent `batchSwap` call would receive.\n *\n * Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct.\n * This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens,\n * approve them for the Vault, or even know a user's address.\n *\n * Note that this function is not 'view' (due to implementation details): the client code must explicitly execute\n * eth_call instead of eth_sendTransaction.\n */\n function queryBatchSwap(\n SwapKind kind,\n BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n FundManagement memory funds\n ) external returns (int256[] memory assetDeltas);\n\n // Flash Loans\n\n /**\n * @dev Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it,\n * and then reverting unless the tokens plus a proportional protocol fee have been returned.\n *\n * The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount\n * for each token contract. `tokens` must be sorted in ascending order.\n *\n * The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the\n * `receiveFlashLoan` call.\n *\n * Emits `FlashLoan` events.\n */\n function flashLoan(\n IFlashLoanRecipient recipient,\n IERC20[] memory tokens,\n uint256[] memory amounts,\n bytes memory userData\n ) external;\n\n /**\n * @dev Emitted for each individual flash loan performed by `flashLoan`.\n */\n event FlashLoan(IFlashLoanRecipient indexed recipient, IERC20 indexed token, uint256 amount, uint256 feeAmount);\n\n // Asset Management\n //\n // Each token registered for a Pool can be assigned an Asset Manager, which is able to freely withdraw the Pool's\n // tokens from the Vault, deposit them, or assign arbitrary values to its `managed` balance (see\n // `getPoolTokenInfo`). This makes them extremely powerful and dangerous. Even if an Asset Manager only directly\n // controls one of the tokens in a Pool, a malicious manager could set that token's balance to manipulate the\n // prices of the other tokens, and then drain the Pool with swaps. The risk of using Asset Managers is therefore\n // not constrained to the tokens they are managing, but extends to the entire Pool's holdings.\n //\n // However, a properly designed Asset Manager smart contract can be safely used for the Pool's benefit,\n // for example by lending unused tokens out for interest, or using them to participate in voting protocols.\n //\n // This concept is unrelated to the IAsset interface.\n\n /**\n * @dev Performs a set of Pool balance operations, which may be either withdrawals, deposits or updates.\n *\n * Pool Balance management features batching, which means a single contract call can be used to perform multiple\n * operations of different kinds, with different Pools and tokens, at once.\n *\n * For each operation, the caller must be registered as the Asset Manager for `token` in `poolId`.\n */\n function managePoolBalance(PoolBalanceOp[] memory ops) external;\n\n struct PoolBalanceOp {\n PoolBalanceOpKind kind;\n bytes32 poolId;\n IERC20 token;\n uint256 amount;\n }\n\n /**\n * Withdrawals decrease the Pool's cash, but increase its managed balance, leaving the total balance unchanged.\n *\n * Deposits increase the Pool's cash, but decrease its managed balance, leaving the total balance unchanged.\n *\n * Updates don't affect the Pool's cash balance, but because the managed balance changes, it does alter the total.\n * The external amount can be either increased or decreased by this call (i.e., reporting a gain or a loss).\n */\n enum PoolBalanceOpKind { WITHDRAW, DEPOSIT, UPDATE }\n\n /**\n * @dev Emitted when a Pool's token Asset Manager alters its balance via `managePoolBalance`.\n */\n event PoolBalanceManaged(\n bytes32 indexed poolId,\n address indexed assetManager,\n IERC20 indexed token,\n int256 cashDelta,\n int256 managedDelta\n );\n\n // Protocol Fees\n //\n // Some operations cause the Vault to collect tokens in the form of protocol fees, which can then be withdrawn by\n // permissioned accounts.\n //\n // There are two kinds of protocol fees:\n //\n // - flash loan fees: charged on all flash loans, as a percentage of the amounts lent.\n //\n // - swap fees: a percentage of the fees charged by Pools when performing swaps. For a number of reasons, including\n // swap gas costs and interface simplicity, protocol swap fees are not charged on each individual swap. Rather,\n // Pools are expected to keep track of how much they have charged in swap fees, and pay any outstanding debts to the\n // Vault when they are joined or exited. This prevents users from joining a Pool with unpaid debt, as well as\n // exiting a Pool in debt without first paying their share.\n\n /**\n * @dev Returns the current protocol fee module.\n */\n function getProtocolFeesCollector() external view returns (IProtocolFeesCollector);\n\n /**\n * @dev Safety mechanism to pause most Vault operations in the event of an emergency - typically detection of an\n * error in some part of the system.\n *\n * The Vault can only be paused during an initial time period, after which pausing is forever disabled.\n *\n * While the contract is paused, the following features are disabled:\n * - depositing and transferring internal balance\n * - transferring external balance (using the Vault's allowance)\n * - swaps\n * - joining Pools\n * - Asset Manager interactions\n *\n * Internal Balance can still be withdrawn, and Pools exited.\n */\n function setPaused(bool paused) external;\n\n /**\n * @dev Returns the Vault's WETH instance.\n */\n function WETH() external view returns (IWETH);\n // solhint-disable-previous-line func-name-mixedcase\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\";\n\n/**\n * @dev Building block for performing access control on external functions.\n *\n * This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied\n * to external functions to only make them callable by authorized accounts.\n *\n * Derived contracts must implement the `_canPerform` function, which holds the actual access control logic.\n */\nabstract contract Authentication is IAuthentication {\n bytes32 private immutable _actionIdDisambiguator;\n\n /**\n * @dev The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in\n * multi contract systems.\n *\n * There are two main uses for it:\n * - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers\n * unique. The contract's own address is a good option.\n * - if the contract belongs to a family that shares action identifiers for the same functions, an identifier\n * shared by the entire family (and no other contract) should be used instead.\n */\n constructor(bytes32 actionIdDisambiguator) {\n _actionIdDisambiguator = actionIdDisambiguator;\n }\n\n /**\n * @dev Reverts unless the caller is allowed to call this function. Should only be applied to external functions.\n */\n modifier authenticate() {\n _authenticateCaller();\n _;\n }\n\n /**\n * @dev Reverts unless the caller is allowed to call the entry point function.\n */\n function _authenticateCaller() internal view {\n bytes32 actionId = getActionId(msg.sig);\n _require(_canPerform(actionId, msg.sender), Errors.SENDER_NOT_ALLOWED);\n }\n\n function getActionId(bytes4 selector) public view override returns (bytes32) {\n // Each external function is dynamically assigned an action identifier as the hash of the disambiguator and the\n // function selector. Disambiguation is necessary to avoid potential collisions in the function selectors of\n // multiple contracts.\n return keccak256(abi.encodePacked(_actionIdDisambiguator, selector));\n }\n\n function _canPerform(bytes32 actionId, address user) internal view virtual returns (bool);\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\";\n\nimport \"../openzeppelin/EIP712.sol\";\n\n/**\n * @dev Utility for signing Solidity function calls.\n */\nabstract contract EOASignaturesValidator is ISignaturesValidator, EIP712 {\n // Replay attack prevention for each account.\n mapping(address => uint256) internal _nextNonce;\n\n function getDomainSeparator() public view override returns (bytes32) {\n return _domainSeparatorV4();\n }\n\n function getNextNonce(address account) public view override returns (uint256) {\n return _nextNonce[account];\n }\n\n function _ensureValidSignature(\n address account,\n bytes32 structHash,\n bytes memory signature,\n uint256 errorCode\n ) internal {\n return _ensureValidSignature(account, structHash, signature, type(uint256).max, errorCode);\n }\n\n function _ensureValidSignature(\n address account,\n bytes32 structHash,\n bytes memory signature,\n uint256 deadline,\n uint256 errorCode\n ) internal {\n bytes32 digest = _hashTypedDataV4(structHash);\n _require(_isValidSignature(account, digest, signature), errorCode);\n\n // We could check for the deadline before validating the signature, but this leads to saner error processing (as\n // we only care about expired deadlines if the signature is correct) and only affects the gas cost of the revert\n // scenario, which will only occur infrequently, if ever.\n // The deadline is timestamp-based: it should not be relied upon for sub-minute accuracy.\n // solhint-disable-next-line not-rely-on-time\n _require(deadline >= block.timestamp, Errors.EXPIRED_SIGNATURE);\n\n // We only advance the nonce after validating the signature. This is irrelevant for this module, but it can be\n // important in derived contracts that override _isValidSignature (e.g. SignaturesValidator), as we want for\n // the observable state to still have the current nonce as the next valid one.\n _nextNonce[account] += 1;\n }\n\n function _isValidSignature(\n address account,\n bytes32 digest,\n bytes memory signature\n ) internal view virtual returns (bool) {\n _require(signature.length == 65, Errors.MALFORMED_SIGNATURE);\n\n bytes32 r;\n bytes32 s;\n uint8 v;\n\n // ecrecover takes the r, s and v signature parameters, and the only way to get them is to use assembly.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n\n address recoveredAddress = ecrecover(digest, v, r, s);\n\n // ecrecover returns the zero address on recover failure, so we need to handle that explicitly.\n return (recoveredAddress != address(0) && recoveredAddress == account);\n }\n\n function _toArraySignature(\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (bytes memory) {\n bytes memory signature = new bytes(65);\n // solhint-disable-next-line no-inline-assembly\n assembly {\n mstore(add(signature, 32), r)\n mstore(add(signature, 64), s)\n mstore8(add(signature, 96), v)\n }\n\n return signature;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\nlibrary InputHelpers {\n function ensureInputLengthMatch(uint256 a, uint256 b) internal pure {\n _require(a == b, Errors.INPUT_LENGTH_MISMATCH);\n }\n\n function ensureInputLengthMatch(\n uint256 a,\n uint256 b,\n uint256 c\n ) internal pure {\n _require(a == b && b == c, Errors.INPUT_LENGTH_MISMATCH);\n }\n\n function ensureArrayIsSorted(IERC20[] memory array) internal pure {\n address[] memory addressArray;\n // solhint-disable-next-line no-inline-assembly\n assembly {\n addressArray := array\n }\n ensureArrayIsSorted(addressArray);\n }\n\n function ensureArrayIsSorted(address[] memory array) internal pure {\n if (array.length < 2) {\n return;\n }\n\n address previous = array[0];\n for (uint256 i = 1; i < array.length; ++i) {\n address current = array[i];\n _require(previous < current, Errors.UNSORTED_ARRAY);\n previous = current;\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\nimport \"./SignaturesValidator.sol\";\n\nabstract contract OptionalOnlyCaller is IOptionalOnlyCaller, SignaturesValidator {\n mapping(address => bool) private _isOnlyCallerEnabled;\n\n bytes32 private constant _SET_ONLY_CALLER_CHECK_TYPEHASH = keccak256(\n \"SetOnlyCallerCheck(address user,bool enabled,uint256 nonce)\"\n );\n\n /**\n * @dev Reverts if the verification mechanism is enabled and the given address is not the caller.\n * @param user - Address to validate as the only allowed caller, if the verification is enabled.\n */\n modifier optionalOnlyCaller(address user) {\n _verifyCaller(user);\n _;\n }\n\n function setOnlyCallerCheck(bool enabled) external override {\n _setOnlyCallerCheck(msg.sender, enabled);\n }\n\n function setOnlyCallerCheckWithSignature(\n address user,\n bool enabled,\n bytes memory signature\n ) external override {\n bytes32 structHash = keccak256(abi.encode(_SET_ONLY_CALLER_CHECK_TYPEHASH, user, enabled, getNextNonce(user)));\n _ensureValidSignature(user, structHash, signature, Errors.INVALID_SIGNATURE);\n _setOnlyCallerCheck(user, enabled);\n }\n\n function _setOnlyCallerCheck(address user, bool enabled) private {\n _isOnlyCallerEnabled[user] = enabled;\n emit OnlyCallerOptIn(user, enabled);\n }\n\n function isOnlyCallerEnabled(address user) external view override returns (bool) {\n return _isOnlyCallerEnabled[user];\n }\n\n function _verifyCaller(address user) private view {\n if (_isOnlyCallerEnabled[user]) {\n _require(msg.sender == user, Errors.SENDER_NOT_ALLOWED);\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol\";\n\nimport \"./EOASignaturesValidator.sol\";\nimport \"../openzeppelin/Address.sol\";\n\n/**\n * @dev Utility for signing Solidity function calls.\n */\nabstract contract SignaturesValidator is EOASignaturesValidator {\n using Address for address;\n\n function _isValidSignature(\n address account,\n bytes32 digest,\n bytes memory signature\n ) internal view virtual override returns (bool) {\n if (account.isContract()) {\n return IERC1271(account).isValidSignature(digest, signature) == IERC1271.isValidSignature.selector;\n } else {\n return super._isValidSignature(account, digest, signature);\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"./Authentication.sol\";\n\nabstract contract SingletonAuthentication is Authentication {\n IVault private immutable _vault;\n\n // Use the contract's own address to disambiguate action identifiers\n constructor(IVault vault) Authentication(bytes32(uint256(address(this)))) {\n _vault = vault;\n }\n\n /**\n * @notice Returns the Balancer Vault\n */\n function getVault() public view returns (IVault) {\n return _vault;\n }\n\n /**\n * @notice Returns the Authorizer\n */\n function getAuthorizer() public view returns (IAuthorizer) {\n return getVault().getAuthorizer();\n }\n\n function _canPerform(bytes32 actionId, address account) internal view override returns (bool) {\n return getAuthorizer().canPerform(actionId, account, address(this));\n }\n\n function _canPerform(\n bytes32 actionId,\n address account,\n address where\n ) internal view returns (bool) {\n return getAuthorizer().canPerform(actionId, account, where);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\";\n\n/**\n * @notice Retrieves a contract's version set at creation time from storage.\n */\ncontract Version is IVersion {\n string private _version;\n\n constructor(string memory version) {\n _setVersion(version);\n }\n\n function version() external view override returns (string memory) {\n return _version;\n }\n\n /**\n * @dev Internal setter that allows this contract to be used in proxies.\n */\n function _setVersion(string memory newVersion) internal {\n _version = newVersion;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\nimport \"./LogExpMath.sol\";\n\n/* solhint-disable private-vars-leading-underscore */\n\nlibrary FixedPoint {\n // solhint-disable no-inline-assembly\n\n uint256 internal constant ONE = 1e18; // 18 decimal places\n uint256 internal constant TWO = 2 * ONE;\n uint256 internal constant FOUR = 4 * ONE;\n uint256 internal constant MAX_POW_RELATIVE_ERROR = 10000; // 10^(-14)\n\n // Minimum base for the power function when the exponent is 'free' (larger than ONE).\n uint256 internal constant MIN_POW_BASE_FREE_EXPONENT = 0.7e18;\n\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n // Fixed Point addition is the same as regular checked addition\n\n uint256 c = a + b;\n _require(c >= a, Errors.ADD_OVERFLOW);\n return c;\n }\n\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n // Fixed Point addition is the same as regular checked addition\n\n _require(b <= a, Errors.SUB_OVERFLOW);\n uint256 c = a - b;\n return c;\n }\n\n function mulDown(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 product = a * b;\n _require(a == 0 || product / a == b, Errors.MUL_OVERFLOW);\n\n return product / ONE;\n }\n\n function mulUp(uint256 a, uint256 b) internal pure returns (uint256 result) {\n uint256 product = a * b;\n _require(a == 0 || product / a == b, Errors.MUL_OVERFLOW);\n\n // The traditional divUp formula is:\n // divUp(x, y) := (x + y - 1) / y\n // To avoid intermediate overflow in the addition, we distribute the division and get:\n // divUp(x, y) := (x - 1) / y + 1\n // Note that this requires x != 0, if x == 0 then the result is zero\n //\n // Equivalent to:\n // result = product == 0 ? 0 : ((product - 1) / FixedPoint.ONE) + 1;\n assembly {\n result := mul(iszero(iszero(product)), add(div(sub(product, 1), ONE), 1))\n }\n }\n\n function divDown(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b != 0, Errors.ZERO_DIVISION);\n\n uint256 aInflated = a * ONE;\n _require(a == 0 || aInflated / a == ONE, Errors.DIV_INTERNAL); // mul overflow\n\n return aInflated / b;\n }\n\n function divUp(uint256 a, uint256 b) internal pure returns (uint256 result) {\n _require(b != 0, Errors.ZERO_DIVISION);\n\n uint256 aInflated = a * ONE;\n _require(a == 0 || aInflated / a == ONE, Errors.DIV_INTERNAL); // mul overflow\n\n // The traditional divUp formula is:\n // divUp(x, y) := (x + y - 1) / y\n // To avoid intermediate overflow in the addition, we distribute the division and get:\n // divUp(x, y) := (x - 1) / y + 1\n // Note that this requires x != 0, if x == 0 then the result is zero\n //\n // Equivalent to:\n // result = a == 0 ? 0 : (a * FixedPoint.ONE - 1) / b + 1;\n assembly {\n result := mul(iszero(iszero(aInflated)), add(div(sub(aInflated, 1), b), 1))\n }\n }\n\n /**\n * @dev Returns x^y, assuming both are fixed point numbers, rounding down. The result is guaranteed to not be above\n * the true value (that is, the error function expected - actual is always positive).\n */\n function powDown(uint256 x, uint256 y) internal pure returns (uint256) {\n // Optimize for when y equals 1.0, 2.0 or 4.0, as those are very simple to implement and occur often in 50/50\n // and 80/20 Weighted Pools\n if (y == ONE) {\n return x;\n } else if (y == TWO) {\n return mulDown(x, x);\n } else if (y == FOUR) {\n uint256 square = mulDown(x, x);\n return mulDown(square, square);\n } else {\n uint256 raw = LogExpMath.pow(x, y);\n uint256 maxError = add(mulUp(raw, MAX_POW_RELATIVE_ERROR), 1);\n\n if (raw < maxError) {\n return 0;\n } else {\n return sub(raw, maxError);\n }\n }\n }\n\n /**\n * @dev Returns x^y, assuming both are fixed point numbers, rounding up. The result is guaranteed to not be below\n * the true value (that is, the error function expected - actual is always negative).\n */\n function powUp(uint256 x, uint256 y) internal pure returns (uint256) {\n // Optimize for when y equals 1.0, 2.0 or 4.0, as those are very simple to implement and occur often in 50/50\n // and 80/20 Weighted Pools\n if (y == ONE) {\n return x;\n } else if (y == TWO) {\n return mulUp(x, x);\n } else if (y == FOUR) {\n uint256 square = mulUp(x, x);\n return mulUp(square, square);\n } else {\n uint256 raw = LogExpMath.pow(x, y);\n uint256 maxError = add(mulUp(raw, MAX_POW_RELATIVE_ERROR), 1);\n\n return add(raw, maxError);\n }\n }\n\n /**\n * @dev Returns the complement of a value (1 - x), capped to 0 if x is larger than 1.\n *\n * Useful when computing the complement for values with some level of relative error, as it strips this error and\n * prevents intermediate negative values.\n */\n function complement(uint256 x) internal pure returns (uint256 result) {\n // Equivalent to:\n // result = (x < ONE) ? (ONE - x) : 0;\n assembly {\n result := mul(lt(x, ONE), sub(ONE, x))\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n// documentation files (the “Software”), to deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the\n// Software.\n\n// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE\n// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/* solhint-disable */\n\n/**\n * @dev Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument).\n *\n * Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural\n * exponentiation and logarithm (where the base is Euler's number).\n *\n * @author Fernando Martinelli - @fernandomartinelli\n * @author Sergio Yuhjtman - @sergioyuhjtman\n * @author Daniel Fernandez - @dmf7z\n */\nlibrary LogExpMath {\n // All fixed point multiplications and divisions are inlined. This means we need to divide by ONE when multiplying\n // two numbers, and multiply by ONE when dividing them.\n\n // All arguments and return values are 18 decimal fixed point numbers.\n int256 constant ONE_18 = 1e18;\n\n // Internally, intermediate values are computed with higher precision as 20 decimal fixed point numbers, and in the\n // case of ln36, 36 decimals.\n int256 constant ONE_20 = 1e20;\n int256 constant ONE_36 = 1e36;\n\n // The domain of natural exponentiation is bound by the word size and number of decimals used.\n //\n // Because internally the result will be stored using 20 decimals, the largest possible result is\n // (2^255 - 1) / 10^20, which makes the largest exponent ln((2^255 - 1) / 10^20) = 130.700829182905140221.\n // The smallest possible result is 10^(-18), which makes largest negative argument\n // ln(10^(-18)) = -41.446531673892822312.\n // We use 130.0 and -41.0 to have some safety margin.\n int256 constant MAX_NATURAL_EXPONENT = 130e18;\n int256 constant MIN_NATURAL_EXPONENT = -41e18;\n\n // Bounds for ln_36's argument. Both ln(0.9) and ln(1.1) can be represented with 36 decimal places in a fixed point\n // 256 bit integer.\n int256 constant LN_36_LOWER_BOUND = ONE_18 - 1e17;\n int256 constant LN_36_UPPER_BOUND = ONE_18 + 1e17;\n\n uint256 constant MILD_EXPONENT_BOUND = 2**254 / uint256(ONE_20);\n\n // 18 decimal constants\n int256 constant x0 = 128000000000000000000; // 2ˆ7\n int256 constant a0 = 38877084059945950922200000000000000000000000000000000000; // eˆ(x0) (no decimals)\n int256 constant x1 = 64000000000000000000; // 2ˆ6\n int256 constant a1 = 6235149080811616882910000000; // eˆ(x1) (no decimals)\n\n // 20 decimal constants\n int256 constant x2 = 3200000000000000000000; // 2ˆ5\n int256 constant a2 = 7896296018268069516100000000000000; // eˆ(x2)\n int256 constant x3 = 1600000000000000000000; // 2ˆ4\n int256 constant a3 = 888611052050787263676000000; // eˆ(x3)\n int256 constant x4 = 800000000000000000000; // 2ˆ3\n int256 constant a4 = 298095798704172827474000; // eˆ(x4)\n int256 constant x5 = 400000000000000000000; // 2ˆ2\n int256 constant a5 = 5459815003314423907810; // eˆ(x5)\n int256 constant x6 = 200000000000000000000; // 2ˆ1\n int256 constant a6 = 738905609893065022723; // eˆ(x6)\n int256 constant x7 = 100000000000000000000; // 2ˆ0\n int256 constant a7 = 271828182845904523536; // eˆ(x7)\n int256 constant x8 = 50000000000000000000; // 2ˆ-1\n int256 constant a8 = 164872127070012814685; // eˆ(x8)\n int256 constant x9 = 25000000000000000000; // 2ˆ-2\n int256 constant a9 = 128402541668774148407; // eˆ(x9)\n int256 constant x10 = 12500000000000000000; // 2ˆ-3\n int256 constant a10 = 113314845306682631683; // eˆ(x10)\n int256 constant x11 = 6250000000000000000; // 2ˆ-4\n int256 constant a11 = 106449445891785942956; // eˆ(x11)\n\n /**\n * @dev Exponentiation (x^y) with unsigned 18 decimal fixed point base and exponent.\n *\n * Reverts if ln(x) * y is smaller than `MIN_NATURAL_EXPONENT`, or larger than `MAX_NATURAL_EXPONENT`.\n */\n function pow(uint256 x, uint256 y) internal pure returns (uint256) {\n if (y == 0) {\n // We solve the 0^0 indetermination by making it equal one.\n return uint256(ONE_18);\n }\n\n if (x == 0) {\n return 0;\n }\n\n // Instead of computing x^y directly, we instead rely on the properties of logarithms and exponentiation to\n // arrive at that result. In particular, exp(ln(x)) = x, and ln(x^y) = y * ln(x). This means\n // x^y = exp(y * ln(x)).\n\n // The ln function takes a signed value, so we need to make sure x fits in the signed 256 bit range.\n _require(x >> 255 == 0, Errors.X_OUT_OF_BOUNDS);\n int256 x_int256 = int256(x);\n\n // We will compute y * ln(x) in a single step. Depending on the value of x, we can either use ln or ln_36. In\n // both cases, we leave the division by ONE_18 (due to fixed point multiplication) to the end.\n\n // This prevents y * ln(x) from overflowing, and at the same time guarantees y fits in the signed 256 bit range.\n _require(y < MILD_EXPONENT_BOUND, Errors.Y_OUT_OF_BOUNDS);\n int256 y_int256 = int256(y);\n\n int256 logx_times_y;\n if (LN_36_LOWER_BOUND < x_int256 && x_int256 < LN_36_UPPER_BOUND) {\n int256 ln_36_x = _ln_36(x_int256);\n\n // ln_36_x has 36 decimal places, so multiplying by y_int256 isn't as straightforward, since we can't just\n // bring y_int256 to 36 decimal places, as it might overflow. Instead, we perform two 18 decimal\n // multiplications and add the results: one with the first 18 decimals of ln_36_x, and one with the\n // (downscaled) last 18 decimals.\n logx_times_y = ((ln_36_x / ONE_18) * y_int256 + ((ln_36_x % ONE_18) * y_int256) / ONE_18);\n } else {\n logx_times_y = _ln(x_int256) * y_int256;\n }\n logx_times_y /= ONE_18;\n\n // Finally, we compute exp(y * ln(x)) to arrive at x^y\n _require(\n MIN_NATURAL_EXPONENT <= logx_times_y && logx_times_y <= MAX_NATURAL_EXPONENT,\n Errors.PRODUCT_OUT_OF_BOUNDS\n );\n\n return uint256(exp(logx_times_y));\n }\n\n /**\n * @dev Natural exponentiation (e^x) with signed 18 decimal fixed point exponent.\n *\n * Reverts if `x` is smaller than MIN_NATURAL_EXPONENT, or larger than `MAX_NATURAL_EXPONENT`.\n */\n function exp(int256 x) internal pure returns (int256) {\n _require(x >= MIN_NATURAL_EXPONENT && x <= MAX_NATURAL_EXPONENT, Errors.INVALID_EXPONENT);\n\n if (x < 0) {\n // We only handle positive exponents: e^(-x) is computed as 1 / e^x. We can safely make x positive since it\n // fits in the signed 256 bit range (as it is larger than MIN_NATURAL_EXPONENT).\n // Fixed point division requires multiplying by ONE_18.\n return ((ONE_18 * ONE_18) / exp(-x));\n }\n\n // First, we use the fact that e^(x+y) = e^x * e^y to decompose x into a sum of powers of two, which we call x_n,\n // where x_n == 2^(7 - n), and e^x_n = a_n has been precomputed. We choose the first x_n, x0, to equal 2^7\n // because all larger powers are larger than MAX_NATURAL_EXPONENT, and therefore not present in the\n // decomposition.\n // At the end of this process we will have the product of all e^x_n = a_n that apply, and the remainder of this\n // decomposition, which will be lower than the smallest x_n.\n // exp(x) = k_0 * a_0 * k_1 * a_1 * ... + k_n * a_n * exp(remainder), where each k_n equals either 0 or 1.\n // We mutate x by subtracting x_n, making it the remainder of the decomposition.\n\n // The first two a_n (e^(2^7) and e^(2^6)) are too large if stored as 18 decimal numbers, and could cause\n // intermediate overflows. Instead we store them as plain integers, with 0 decimals.\n // Additionally, x0 + x1 is larger than MAX_NATURAL_EXPONENT, which means they will not both be present in the\n // decomposition.\n\n // For each x_n, we test if that term is present in the decomposition (if x is larger than it), and if so deduct\n // it and compute the accumulated product.\n\n int256 firstAN;\n if (x >= x0) {\n x -= x0;\n firstAN = a0;\n } else if (x >= x1) {\n x -= x1;\n firstAN = a1;\n } else {\n firstAN = 1; // One with no decimal places\n }\n\n // We now transform x into a 20 decimal fixed point number, to have enhanced precision when computing the\n // smaller terms.\n x *= 100;\n\n // `product` is the accumulated product of all a_n (except a0 and a1), which starts at 20 decimal fixed point\n // one. Recall that fixed point multiplication requires dividing by ONE_20.\n int256 product = ONE_20;\n\n if (x >= x2) {\n x -= x2;\n product = (product * a2) / ONE_20;\n }\n if (x >= x3) {\n x -= x3;\n product = (product * a3) / ONE_20;\n }\n if (x >= x4) {\n x -= x4;\n product = (product * a4) / ONE_20;\n }\n if (x >= x5) {\n x -= x5;\n product = (product * a5) / ONE_20;\n }\n if (x >= x6) {\n x -= x6;\n product = (product * a6) / ONE_20;\n }\n if (x >= x7) {\n x -= x7;\n product = (product * a7) / ONE_20;\n }\n if (x >= x8) {\n x -= x8;\n product = (product * a8) / ONE_20;\n }\n if (x >= x9) {\n x -= x9;\n product = (product * a9) / ONE_20;\n }\n\n // x10 and x11 are unnecessary here since we have high enough precision already.\n\n // Now we need to compute e^x, where x is small (in particular, it is smaller than x9). We use the Taylor series\n // expansion for e^x: 1 + x + (x^2 / 2!) + (x^3 / 3!) + ... + (x^n / n!).\n\n int256 seriesSum = ONE_20; // The initial one in the sum, with 20 decimal places.\n int256 term; // Each term in the sum, where the nth term is (x^n / n!).\n\n // The first term is simply x.\n term = x;\n seriesSum += term;\n\n // Each term (x^n / n!) equals the previous one times x, divided by n. Since x is a fixed point number,\n // multiplying by it requires dividing by ONE_20, but dividing by the non-fixed point n values does not.\n\n term = ((term * x) / ONE_20) / 2;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 3;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 4;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 5;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 6;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 7;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 8;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 9;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 10;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 11;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 12;\n seriesSum += term;\n\n // 12 Taylor terms are sufficient for 18 decimal precision.\n\n // We now have the first a_n (with no decimals), and the product of all other a_n present, and the Taylor\n // approximation of the exponentiation of the remainder (both with 20 decimals). All that remains is to multiply\n // all three (one 20 decimal fixed point multiplication, dividing by ONE_20, and one integer multiplication),\n // and then drop two digits to return an 18 decimal value.\n\n return (((product * seriesSum) / ONE_20) * firstAN) / 100;\n }\n\n /**\n * @dev Logarithm (log(arg, base), with signed 18 decimal fixed point base and argument.\n */\n function log(int256 arg, int256 base) internal pure returns (int256) {\n // This performs a simple base change: log(arg, base) = ln(arg) / ln(base).\n\n // Both logBase and logArg are computed as 36 decimal fixed point numbers, either by using ln_36, or by\n // upscaling.\n\n int256 logBase;\n if (LN_36_LOWER_BOUND < base && base < LN_36_UPPER_BOUND) {\n logBase = _ln_36(base);\n } else {\n logBase = _ln(base) * ONE_18;\n }\n\n int256 logArg;\n if (LN_36_LOWER_BOUND < arg && arg < LN_36_UPPER_BOUND) {\n logArg = _ln_36(arg);\n } else {\n logArg = _ln(arg) * ONE_18;\n }\n\n // When dividing, we multiply by ONE_18 to arrive at a result with 18 decimal places\n return (logArg * ONE_18) / logBase;\n }\n\n /**\n * @dev Natural logarithm (ln(a)) with signed 18 decimal fixed point argument.\n */\n function ln(int256 a) internal pure returns (int256) {\n // The real natural logarithm is not defined for negative numbers or zero.\n _require(a > 0, Errors.OUT_OF_BOUNDS);\n if (LN_36_LOWER_BOUND < a && a < LN_36_UPPER_BOUND) {\n return _ln_36(a) / ONE_18;\n } else {\n return _ln(a);\n }\n }\n\n /**\n * @dev Internal natural logarithm (ln(a)) with signed 18 decimal fixed point argument.\n */\n function _ln(int256 a) private pure returns (int256) {\n if (a < ONE_18) {\n // Since ln(a^k) = k * ln(a), we can compute ln(a) as ln(a) = ln((1/a)^(-1)) = - ln((1/a)). If a is less\n // than one, 1/a will be greater than one, and this if statement will not be entered in the recursive call.\n // Fixed point division requires multiplying by ONE_18.\n return (-_ln((ONE_18 * ONE_18) / a));\n }\n\n // First, we use the fact that ln^(a * b) = ln(a) + ln(b) to decompose ln(a) into a sum of powers of two, which\n // we call x_n, where x_n == 2^(7 - n), which are the natural logarithm of precomputed quantities a_n (that is,\n // ln(a_n) = x_n). We choose the first x_n, x0, to equal 2^7 because the exponential of all larger powers cannot\n // be represented as 18 fixed point decimal numbers in 256 bits, and are therefore larger than a.\n // At the end of this process we will have the sum of all x_n = ln(a_n) that apply, and the remainder of this\n // decomposition, which will be lower than the smallest a_n.\n // ln(a) = k_0 * x_0 + k_1 * x_1 + ... + k_n * x_n + ln(remainder), where each k_n equals either 0 or 1.\n // We mutate a by subtracting a_n, making it the remainder of the decomposition.\n\n // For reasons related to how `exp` works, the first two a_n (e^(2^7) and e^(2^6)) are not stored as fixed point\n // numbers with 18 decimals, but instead as plain integers with 0 decimals, so we need to multiply them by\n // ONE_18 to convert them to fixed point.\n // For each a_n, we test if that term is present in the decomposition (if a is larger than it), and if so divide\n // by it and compute the accumulated sum.\n\n int256 sum = 0;\n if (a >= a0 * ONE_18) {\n a /= a0; // Integer, not fixed point division\n sum += x0;\n }\n\n if (a >= a1 * ONE_18) {\n a /= a1; // Integer, not fixed point division\n sum += x1;\n }\n\n // All other a_n and x_n are stored as 20 digit fixed point numbers, so we convert the sum and a to this format.\n sum *= 100;\n a *= 100;\n\n // Because further a_n are 20 digit fixed point numbers, we multiply by ONE_20 when dividing by them.\n\n if (a >= a2) {\n a = (a * ONE_20) / a2;\n sum += x2;\n }\n\n if (a >= a3) {\n a = (a * ONE_20) / a3;\n sum += x3;\n }\n\n if (a >= a4) {\n a = (a * ONE_20) / a4;\n sum += x4;\n }\n\n if (a >= a5) {\n a = (a * ONE_20) / a5;\n sum += x5;\n }\n\n if (a >= a6) {\n a = (a * ONE_20) / a6;\n sum += x6;\n }\n\n if (a >= a7) {\n a = (a * ONE_20) / a7;\n sum += x7;\n }\n\n if (a >= a8) {\n a = (a * ONE_20) / a8;\n sum += x8;\n }\n\n if (a >= a9) {\n a = (a * ONE_20) / a9;\n sum += x9;\n }\n\n if (a >= a10) {\n a = (a * ONE_20) / a10;\n sum += x10;\n }\n\n if (a >= a11) {\n a = (a * ONE_20) / a11;\n sum += x11;\n }\n\n // a is now a small number (smaller than a_11, which roughly equals 1.06). This means we can use a Taylor series\n // that converges rapidly for values of `a` close to one - the same one used in ln_36.\n // Let z = (a - 1) / (a + 1).\n // ln(a) = 2 * (z + z^3 / 3 + z^5 / 5 + z^7 / 7 + ... + z^(2 * n + 1) / (2 * n + 1))\n\n // Recall that 20 digit fixed point division requires multiplying by ONE_20, and multiplication requires\n // division by ONE_20.\n int256 z = ((a - ONE_20) * ONE_20) / (a + ONE_20);\n int256 z_squared = (z * z) / ONE_20;\n\n // num is the numerator of the series: the z^(2 * n + 1) term\n int256 num = z;\n\n // seriesSum holds the accumulated sum of each term in the series, starting with the initial z\n int256 seriesSum = num;\n\n // In each step, the numerator is multiplied by z^2\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 3;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 5;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 7;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 9;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 11;\n\n // 6 Taylor terms are sufficient for 36 decimal precision.\n\n // Finally, we multiply by 2 (non fixed point) to compute ln(remainder)\n seriesSum *= 2;\n\n // We now have the sum of all x_n present, and the Taylor approximation of the logarithm of the remainder (both\n // with 20 decimals). All that remains is to sum these two, and then drop two digits to return a 18 decimal\n // value.\n\n return (sum + seriesSum) / 100;\n }\n\n /**\n * @dev Intrnal high precision (36 decimal places) natural logarithm (ln(x)) with signed 18 decimal fixed point argument,\n * for x close to one.\n *\n * Should only be used if x is between LN_36_LOWER_BOUND and LN_36_UPPER_BOUND.\n */\n function _ln_36(int256 x) private pure returns (int256) {\n // Since ln(1) = 0, a value of x close to one will yield a very small result, which makes using 36 digits\n // worthwhile.\n\n // First, we transform x to a 36 digit fixed point value.\n x *= ONE_18;\n\n // We will use the following Taylor expansion, which converges very rapidly. Let z = (x - 1) / (x + 1).\n // ln(x) = 2 * (z + z^3 / 3 + z^5 / 5 + z^7 / 7 + ... + z^(2 * n + 1) / (2 * n + 1))\n\n // Recall that 36 digit fixed point division requires multiplying by ONE_36, and multiplication requires\n // division by ONE_36.\n int256 z = ((x - ONE_36) * ONE_36) / (x + ONE_36);\n int256 z_squared = (z * z) / ONE_36;\n\n // num is the numerator of the series: the z^(2 * n + 1) term\n int256 num = z;\n\n // seriesSum holds the accumulated sum of each term in the series, starting with the initial z\n int256 seriesSum = num;\n\n // In each step, the numerator is multiplied by z^2\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 3;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 5;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 7;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 9;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 11;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 13;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 15;\n\n // 8 Taylor terms are sufficient for 36 decimal precision.\n\n // All that remains is multiplying by 2 (non fixed point).\n return seriesSum * 2;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow checks.\n * Adapted from OpenZeppelin's SafeMath library.\n */\nlibrary Math {\n // solhint-disable no-inline-assembly\n\n /**\n * @dev Returns the absolute value of a signed integer.\n */\n function abs(int256 a) internal pure returns (uint256 result) {\n // Equivalent to:\n // result = a > 0 ? uint256(a) : uint256(-a)\n assembly {\n let s := sar(255, a)\n result := sub(xor(a, s), s)\n }\n }\n\n /**\n * @dev Returns the addition of two unsigned integers of 256 bits, reverting on overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n _require(c >= a, Errors.ADD_OVERFLOW);\n return c;\n }\n\n /**\n * @dev Returns the addition of two signed integers, reverting on overflow.\n */\n function add(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a + b;\n _require((b >= 0 && c >= a) || (b < 0 && c < a), Errors.ADD_OVERFLOW);\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers of 256 bits, reverting on overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b <= a, Errors.SUB_OVERFLOW);\n uint256 c = a - b;\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two signed integers, reverting on overflow.\n */\n function sub(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a - b;\n _require((b >= 0 && c <= a) || (b < 0 && c > a), Errors.SUB_OVERFLOW);\n return c;\n }\n\n /**\n * @dev Returns the largest of two numbers of 256 bits.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256 result) {\n // Equivalent to:\n // result = (a < b) ? b : a;\n assembly {\n result := sub(a, mul(sub(a, b), lt(a, b)))\n }\n }\n\n /**\n * @dev Returns the smallest of two numbers of 256 bits.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256 result) {\n // Equivalent to `result = (a < b) ? a : b`\n assembly {\n result := sub(a, mul(sub(a, b), gt(a, b)))\n }\n }\n\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a * b;\n _require(a == 0 || c / a == b, Errors.MUL_OVERFLOW);\n return c;\n }\n\n function div(\n uint256 a,\n uint256 b,\n bool roundUp\n ) internal pure returns (uint256) {\n return roundUp ? divUp(a, b) : divDown(a, b);\n }\n\n function divDown(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b != 0, Errors.ZERO_DIVISION);\n return a / b;\n }\n\n function divUp(uint256 a, uint256 b) internal pure returns (uint256 result) {\n _require(b != 0, Errors.ZERO_DIVISION);\n\n // Equivalent to:\n // result = a == 0 ? 0 : 1 + (a - 1) / b;\n assembly {\n result := mul(iszero(iszero(a)), add(1, div(sub(a, 1), b)))\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the Address library from OpenZeppelin Contracts, altered by removing the `isContract` checks on\n// `functionCall` and `functionDelegateCall` in order to save gas, as the recipients are known to be contracts.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize, which returns 0 for contracts in\n // construction, since the code is only stored at the end of the\n // constructor execution.\n\n uint256 size;\n // solhint-disable-next-line no-inline-assembly\n assembly {\n size := extcodesize(account)\n }\n return size > 0;\n }\n\n // solhint-disable max-line-length\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n _require(address(this).balance >= amount, Errors.ADDRESS_INSUFFICIENT_BALANCE);\n\n // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n (bool success, ) = recipient.call{ value: amount }(\"\");\n _require(success, Errors.ADDRESS_CANNOT_SEND_VALUE);\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.call(data);\n return verifyCallResult(success, returndata);\n }\n\n // solhint-enable max-line-length\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but passing some native ETH as msg.value to the call.\n *\n * _Available since v3.4._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.call{ value: value }(data);\n return verifyCallResult(success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling up the\n * revert reason or using the one provided.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n // solhint-disable-next-line no-inline-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n _revert(Errors.LOW_LEVEL_CALL_FAILED);\n }\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/Clones.sol)\n\npragma solidity ^0.7.0;\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n * deploying minimal proxy contracts, also known as \"clones\".\n *\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n *\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n * deterministic method.\n *\n * _Available since v3.4._\n */\nlibrary Clones {\n // solhint-disable no-inline-assembly\n\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create opcode, which should never revert.\n */\n function clone(address implementation) internal returns (address instance) {\n assembly {\n let ptr := mload(0x40)\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\n instance := create(0, ptr, 0x37)\n }\n require(instance != address(0), \"ERC1167: create failed\");\n }\n\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create2 opcode and a `salt` to deterministically deploy\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\n * the clones cannot be deployed twice at the same address.\n */\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\n assembly {\n let ptr := mload(0x40)\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\n instance := create2(0, ptr, 0x37, salt)\n }\n require(instance != address(0), \"ERC1167: create2 failed\");\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n assembly {\n let ptr := mload(0x40)\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000)\n mstore(add(ptr, 0x38), shl(0x60, deployer))\n mstore(add(ptr, 0x4c), salt)\n mstore(add(ptr, 0x6c), keccak256(ptr, 0x37))\n predicted := keccak256(add(ptr, 0x37), 0x55)\n }\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(address implementation, bytes32 salt)\n internal\n view\n returns (address predicted)\n {\n return predictDeterministicAddress(implementation, salt, address(this));\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * _Available since v3.4._\n */\nabstract contract EIP712 {\n /* solhint-disable var-name-mixedcase */\n bytes32 private immutable _HASHED_NAME;\n bytes32 private immutable _HASHED_VERSION;\n bytes32 private immutable _TYPE_HASH;\n\n /* solhint-enable var-name-mixedcase */\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n constructor(string memory name, string memory version) {\n _HASHED_NAME = keccak256(bytes(name));\n _HASHED_VERSION = keccak256(bytes(version));\n _TYPE_HASH = keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view virtual returns (bytes32) {\n return keccak256(abi.encode(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION, _getChainId(), address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x01\", _domainSeparatorV4(), structHash));\n }\n\n // solc-ignore-next-line func-mutability\n function _getChainId() private view returns (uint256 chainId) {\n // solhint-disable-next-line no-inline-assembly\n assembly {\n chainId := chainid()\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the EnumerableSet library from OpenZeppelin Contracts, altered to remove the base private functions that\n// work on bytes32, replacing them with a native implementation for address and bytes32 values, to reduce bytecode\n// size and runtime costs.\n// The `unchecked_at` function was also added, which allows for more gas efficient data reads in some scenarios.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n */\nlibrary EnumerableSet {\n // The original OpenZeppelin implementation uses a generic Set type with bytes32 values: this was replaced with\n // AddressSet, which uses address keys natively, resulting in more dense bytecode.\n\n struct AddressSet {\n // Storage of set values\n address[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(address => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, if it was not already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n if (!contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n // The swap is only necessary if we're not removing the last element\n if (toDeleteIndex != lastIndex) {\n address lastValue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastValue;\n // Update the index for the moved value\n set._indexes[lastValue] = toDeleteIndex + 1; // All indexes are 1-based\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n _require(set._values.length > index, Errors.OUT_OF_BOUNDS);\n return unchecked_at(set, index);\n }\n\n /**\n * @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n * than {length}). O(1).\n *\n * This function performs one less storage read than {at}, but should only be used when `index` is known to be\n * within bounds.\n */\n // solhint-disable-next-line func-name-mixedcase\n function unchecked_at(AddressSet storage set, uint256 index) internal view returns (address) {\n return set._values[index];\n }\n\n function rawIndexOf(AddressSet storage set, address value) internal view returns (uint256) {\n return set._indexes[value] - 1;\n }\n\n struct Bytes32Set {\n // Storage of set values\n bytes32[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(bytes32 => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n if (!contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n // The swap is only necessary if we're not removing the last element\n if (toDeleteIndex != lastIndex) {\n bytes32 lastValue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastValue;\n // Update the index for the moved value\n set._indexes[lastValue] = toDeleteIndex + 1; // All indexes are 1-based\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n _require(set._values.length > index, Errors.OUT_OF_BOUNDS);\n return unchecked_at(set, index);\n }\n\n /**\n * @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n * than {length}). O(1).\n *\n * This function performs one less storage read than {at}, but should only be used when `index` is known to be\n * within bounds.\n */\n // solhint-disable-next-line func-name-mixedcase\n function unchecked_at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return set._values[index];\n }\n\n function rawIndexOf(Bytes32Set storage set, bytes32 value) internal view returns (uint256) {\n return set._indexes[value] - 1;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./SafeMath.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is IERC20 {\n using SafeMath for uint256;\n\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n uint8 private _decimals;\n\n /**\n * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n * a default value of 18.\n *\n * To select a different value for {decimals}, use {_setupDecimals}.\n *\n * All three of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n _decimals = 18;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n\n /**\n * @dev See {IERC20-totalSupply}. The total supply should only be read using this function\n *\n * Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n * storage values).\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev Sets a new value for the total supply. It should only be set using this function.\n *\n * * Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n * storage values).\n */\n function _setTotalSupply(uint256 value) internal virtual {\n _totalSupply = value;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(msg.sender, recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n _approve(msg.sender, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * Requirements:\n *\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for ``sender``'s tokens of at least\n * `amount`.\n */\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) public virtual override returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(\n sender,\n msg.sender,\n _allowances[sender][msg.sender].sub(amount, Errors.ERC20_TRANSFER_EXCEEDS_ALLOWANCE)\n );\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n _approve(\n msg.sender,\n spender,\n _allowances[msg.sender][spender].sub(subtractedValue, Errors.ERC20_DECREASED_ALLOWANCE_BELOW_ZERO)\n );\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(\n address sender,\n address recipient,\n uint256 amount\n ) internal virtual {\n _require(sender != address(0), Errors.ERC20_TRANSFER_FROM_ZERO_ADDRESS);\n _require(recipient != address(0), Errors.ERC20_TRANSFER_TO_ZERO_ADDRESS);\n\n _beforeTokenTransfer(sender, recipient, amount);\n\n _balances[sender] = _balances[sender].sub(amount, Errors.ERC20_TRANSFER_EXCEEDS_BALANCE);\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n _beforeTokenTransfer(address(0), account, amount);\n\n _setTotalSupply(totalSupply().add(amount));\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n _require(account != address(0), Errors.ERC20_BURN_FROM_ZERO_ADDRESS);\n\n _beforeTokenTransfer(account, address(0), amount);\n\n _balances[account] = _balances[account].sub(amount, Errors.ERC20_BURN_EXCEEDS_BALANCE);\n _setTotalSupply(totalSupply().sub(amount));\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(\n address owner,\n address spender,\n uint256 amount\n ) internal virtual {\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Sets {decimals} to a value other than the default one of 18.\n *\n * WARNING: This function should only be called from the constructor. Most\n * applications that interact with token contracts will not expect\n * {decimals} to ever change, and may work incorrectly if it does.\n */\n function _setupDecimals(uint8 decimals_) internal {\n _decimals = decimals_;\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be to transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"./ERC20.sol\";\n\n/**\n * @dev Extension of {ERC20} that allows token holders to destroy both their own\n * tokens and those that they have an allowance for, in a way that can be\n * recognized off-chain (via event analysis).\n */\nabstract contract ERC20Burnable is ERC20 {\n using SafeMath for uint256;\n\n /**\n * @dev Destroys `amount` tokens from the caller.\n *\n * See {ERC20-_burn}.\n */\n function burn(uint256 amount) public virtual {\n _burn(msg.sender, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\n * allowance.\n *\n * See {ERC20-_burn} and {ERC20-allowance}.\n *\n * Requirements:\n *\n * - the caller must have allowance for ``accounts``'s tokens of at least\n * `amount`.\n */\n function burnFrom(address account, uint256 amount) public virtual {\n uint256 decreasedAllowance = allowance(account, msg.sender).sub(amount, Errors.ERC20_BURN_EXCEEDS_ALLOWANCE);\n\n _approve(account, msg.sender, decreasedAllowance);\n _burn(account, amount);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\";\n\nimport \"./ERC20.sol\";\nimport \"../helpers/EOASignaturesValidator.sol\";\n\n/**\n * @dev Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n *\n * _Available since v3.4._\n */\nabstract contract ERC20Permit is ERC20, IERC20Permit, EOASignaturesValidator {\n // solhint-disable-next-line var-name-mixedcase\n bytes32 private constant _PERMIT_TYPEHASH = keccak256(\n \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\"\n );\n\n /**\n * @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n *\n * It's a good idea to use the same `name` that is defined as the ERC20 token name.\n */\n constructor(string memory name) EIP712(name, \"1\") {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @dev See {IERC20Permit-permit}.\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public virtual override {\n bytes32 structHash = keccak256(\n abi.encode(_PERMIT_TYPEHASH, owner, spender, value, getNextNonce(owner), deadline)\n );\n\n _ensureValidSignature(owner, structHash, _toArraySignature(v, r, s), deadline, Errors.INVALID_SIGNATURE);\n\n _approve(owner, spender, value);\n }\n\n /**\n * @dev See {IERC20Permit-nonces}.\n */\n function nonces(address owner) public view override returns (uint256) {\n return getNextNonce(owner);\n }\n\n /**\n * @dev See {IERC20Permit-DOMAIN_SEPARATOR}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view override returns (bytes32) {\n return getDomainSeparator();\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the ReentrancyGuard library from OpenZeppelin Contracts, altered to reduce bytecode size.\n// Modifier code is inlined by the compiler, which causes its code to appear multiple times in the codebase. By using\n// private functions, we achieve the same end result with slightly higher runtime gas costs, but reduced bytecode size.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant _NOT_ENTERED = 1;\n uint256 private constant _ENTERED = 2;\n\n uint256 private _status;\n\n constructor() {\n _status = _NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and make it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n _enterNonReentrant();\n _;\n _exitNonReentrant();\n }\n\n function _enterNonReentrant() private {\n // On the first call to nonReentrant, _status will be _NOT_ENTERED\n _require(_status != _ENTERED, Errors.REENTRANCY);\n\n // Any calls to nonReentrant after this point will fail\n _status = _ENTERED;\n }\n\n function _exitNonReentrant() private {\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = _NOT_ENTERED;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the ReentrancyGuard library from OpenZeppelin Contracts, altered to reduce gas costs.\n// The `safeTransfer` and `safeTransferFrom` functions assume that `token` is a contract (an account with code), and\n// work differently from the OpenZeppelin version if it is not.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n\n function safeApprove(\n IERC20 token,\n address to,\n uint256 value\n ) internal {\n // Some contracts need their allowance reduced to 0 before setting it to an arbitrary amount.\n if (value != 0 && token.allowance(address(this), address(to)) != 0) {\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.approve.selector, to, 0));\n }\n\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.approve.selector, to, value));\n }\n\n function safeTransfer(\n IERC20 token,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n function safeTransferFrom(\n IERC20 token,\n address from,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n *\n * WARNING: `token` is assumed to be a contract: calls to EOAs will *not* revert.\n */\n function _callOptionalReturn(address token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves.\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = token.call(data);\n\n // If the low-level call didn't succeed we return whatever was returned from it.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n if eq(success, 0) {\n returndatacopy(0, 0, returndatasize())\n revert(0, returndatasize())\n }\n }\n\n // Finally we check the returndata size is either zero or true - note that this check will always pass for EOAs\n _require(returndata.length == 0 || abi.decode(returndata, (bool)), Errors.SAFE_ERC20_CALL_FAILED);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n _require(c >= a, Errors.ADD_OVERFLOW);\n\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return sub(a, b, Errors.SUB_OVERFLOW);\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(\n uint256 a,\n uint256 b,\n uint256 errorCode\n ) internal pure returns (uint256) {\n _require(b <= a, errorCode);\n uint256 c = a - b;\n\n return c;\n }\n}\n"},"contracts/admin/AuthorizerAdaptor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\n/**\n * @title Authorizer Adaptor\n *\n * WARNING: this contract contains a *critical bug* that can lead into exploits where it checks for permissions\n * incorrectly. It should *never* be used by itself. We keep a copy of it in the repository, including the bug and all\n * original comments (some of which are incorrect due to the bug), both for historical reasons and because it is part of\n * our immutable infrastructure. See the `AuthorizerAdaptorEntrypoint` contract for more information on how we use this\n * contract safely.\n *\n * @notice This contract is intended to act as an adaptor between systems which expect a single admin address\n * and the Balancer Authorizer such that the Authorizer may grant/revoke admin powers to unlimited addresses.\n *\n * The permissions the Authorizer can grant are granular such they may be global or specific to a particular contract\n *\n * @dev When calculating the actionId to call a function on a target contract, it must be calculated as if it were\n * to be called on this adaptor. This can be done by passing the function selector to the `getActionId` function.\n */\ncontract AuthorizerAdaptor is IAuthorizerAdaptor, ReentrancyGuard {\n using Address for address;\n\n bytes32 private immutable _actionIdDisambiguator;\n IVault private immutable _vault;\n\n constructor(IVault vault) {\n // AuthorizerAdaptor is a singleton, so it simply uses its own address to disambiguate action identifiers\n _actionIdDisambiguator = bytes32(uint256(address(this)));\n _vault = vault;\n }\n\n /**\n * @notice Returns the Balancer Vault\n */\n function getVault() public view override returns (IVault) {\n return _vault;\n }\n\n /**\n * @notice Returns the Authorizer\n */\n function getAuthorizer() public view override returns (IAuthorizer) {\n return getVault().getAuthorizer();\n }\n\n function _canPerform(\n bytes32 actionId,\n address account,\n address where\n ) internal view returns (bool) {\n return getAuthorizer().canPerform(actionId, account, where);\n }\n\n /**\n * @notice Returns the action ID associated with calling a given function through this adaptor\n * @dev As the contracts managed by this adaptor don't have action ID disambiguators, we use the adaptor's globally.\n * This means that contracts with the same function selector will have a matching action ID:\n * if granularity is required then permissions must not be granted globally in the Authorizer.\n *\n * @param selector - The 4 byte selector of the function to be called using `performAction`\n * @return The associated action ID\n */\n function getActionId(bytes4 selector) public view override returns (bytes32) {\n return keccak256(abi.encodePacked(_actionIdDisambiguator, selector));\n }\n\n /**\n * @notice Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\n *\n * This function should not be called directly as that will result in an unconditional revert: instead, use\n * `AuthorizerAdaptorEntrypoint.performAction`.\n * @param target - Address of the contract to be called\n * @param data - Calldata to be sent to the target contract\n * @return The bytes encoded return value from the performed function call\n */\n function performAction(address target, bytes calldata data)\n external\n payable\n override\n nonReentrant\n returns (bytes memory)\n {\n // WARNING: the following line contains a critical bug that allows the caller to trick this contract into\n // checking for an incorrect permission.\n // We unconditionally read memory slot 100, which is where the first four bytes of `data` will reside (i.e. the\n // function selector) given a standard packed ABI encoding. Both the Solidity compiler and clients such as\n // ethers.js will do the ABI encoding in such a way that the selector is actually on slot 100, since this is the\n // way that minimizes gas costs, but it is *not* the only valid way to ABI encode.\n // In particular, it is possible to choose a larger offset and place `data` much further away in calldata. Under\n // those conditions, slot 100 will *not* contain the selector, but it can instead be any arbitrary value. This\n // means that the AuthorizerAdaptor can be made to check for the permission of any arbitrary selector,\n // regardless of the action encoded in `data`.\n //\n // In other words, an account that has permission to execute *any* action via the Adaptor can actually execute\n // *all* of them: there's no permission granularity.\n // Note that actually performing this exploit requires the ability to manually craft calldata: as such,\n // Solidity contracts that call into the Adaptor and create the call via the `abi.encode` function are safe to\n // use since they will always use the standard encoding.\n //\n // To work around this issue, the `TimelockAuthorizer` contract contains a special condition that will check\n // when it is being called by the `AuthorizerAdaptor`, and behave differently when that happens. See the\n // `TimelockAuthorizer.canPerform` and `AuthorizerAdaptorEntrypoint.performAction` functions for more\n // information.\n //\n // All comments below are part of the original source code, and as noted above some of them are incorrect. They\n // are kept for historical reasons.\n\n bytes4 selector;\n\n // We want to check that the caller is authorized to call the function on the target rather than this function.\n // We must then pull the function selector from `data` rather than `msg.sig`. The most effective way to do this\n // is via assembly.\n // Note that if `data` is empty this will return an empty function signature (0x00000000)\n\n // solhint-disable-next-line no-inline-assembly\n assembly {\n // The function selector encoded in `data` has an offset relative to the start of msg.data of:\n // - 4 bytes due to the function selector for `performAction`\n // - 3 words (3 * 32 = 96 bytes) for `target` and the length and offset of `data`\n // 96 + 4 = 100 bytes\n selector := calldataload(100)\n }\n\n // NOTE: The `TimelockAuthorizer` special cases the `AuthorizerAdaptor` calling into it, so that the action ID\n // and `target` values are completely ignored. The following check will only pass if the caller is the\n // `AuthorizerAdaptorEntrypoint`, which will have already checked for permissions correctly.\n _require(_canPerform(getActionId(selector), msg.sender, target), Errors.SENDER_NOT_ALLOWED);\n\n // We don't check that `target` is a contract so all calls to an EOA will succeed.\n return target.functionCallWithValue(data, msg.value);\n }\n}\n"},"contracts/admin/AuthorizerAdaptorEntrypoint.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\n/**\n * @title Authorizer Adaptor Entrypoint\n * @notice This contract exists as a fix for a critical bug in the `AuthorizerAdaptor` that could lead to escalation of\n * privileges. The Entrypoint contract addresses this by working in combination with `TimelockAuthorizer` so that all\n * Adaptor calls that are not made via the Entrypoint fail, while those that do happen through the Entrypoint check for\n * permissions correctly.\n */\ncontract AuthorizerAdaptorEntrypoint is IAuthorizerAdaptorEntrypoint {\n event ActionPerformed(bytes4 indexed selector, address indexed caller, address indexed target, bytes data);\n\n using Address for address;\n\n IAuthorizerAdaptor private immutable _adaptor;\n IVault private immutable _vault;\n\n constructor(IAuthorizerAdaptor adaptor) {\n _adaptor = adaptor;\n _vault = adaptor.getVault();\n }\n\n function getVault() public view override returns (IVault) {\n return _vault;\n }\n\n function getAuthorizer() public view override returns (IAuthorizer) {\n return getVault().getAuthorizer();\n }\n\n function getAuthorizerAdaptor() public view override returns (IAuthorizerAdaptor) {\n return _adaptor;\n }\n\n function canPerform(\n bytes32 actionId,\n address account,\n address where\n ) public view returns (bool) {\n return getAuthorizer().canPerform(actionId, account, where);\n }\n\n /**\n * @notice Returns the action ID associated with calling a given function through the `AuthorizerAdaptor`. Note that\n * even though the Adaptor's action IDs are not actually used by it (since the Authorizer ignores those values - see\n * `TimelockAuthorizer.canPerform`), this contract reuses those IDs to simplify migrations and tooling.\n *\n * See `AuthorizerAdaptor.getActionId` for more information on how the action IDs are computed, and how functions\n * with equal selectors are assigned the same action ID.\n */\n function getActionId(bytes4 selector) public view override returns (bytes32) {\n return getAuthorizerAdaptor().getActionId(selector);\n }\n\n function performAction(address target, bytes calldata data) external payable override returns (bytes memory) {\n // We want to check that the caller is authorized to call the function on the target rather than this function.\n // We must then pull the function selector from `data` rather than `msg.sig`.\n\n // Note that this will revert if `data` is less than 4 bytes long. We test for that to provide a nicer revert\n // reason.\n _require(data.length >= 4, Errors.INSUFFICIENT_DATA);\n bytes4 selector = data[0] | (bytes4(data[1]) >> 8) | (bytes4(data[2]) >> 16) | (bytes4(data[3]) >> 24);\n\n _require(canPerform(getActionId(selector), msg.sender, target), Errors.SENDER_NOT_ALLOWED);\n\n emit ActionPerformed(selector, msg.sender, target, data);\n\n // The `AuthorizerAdaptor` will not check for permissions: it is special-cased in the `TimelockAuthorizer` so\n // that all calls to it that are not made from this entrypoint fail, while those that originate in the\n // entrypoint succeed. This works as we have just checked that the caller has permission to perform the action\n // encoded by `data`. See `TimelockAuthorizer.canPerform` for more details.\n return getAuthorizerAdaptor().performAction{ value: msg.value }(target, data);\n }\n}\n"},"contracts/admin/ChildChainGaugeTokenAdder.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\n/**\n * @title ChildChainGaugeTokenAdder\n * @notice Allows atomically adding a new reward token to a RewardsOnlyGauge while ensuring that it remains in sync\n * with its ChildChainStreamer.\n */\ncontract ChildChainGaugeTokenAdder is SingletonAuthentication {\n // RewardsOnlyGauge expects the claim function selector to be left padded with zeros.\n // We then shift right 28 bytes so that the function selector (top 4 bytes) sits in the lowest 4 bytes.\n bytes32 private constant _CLAIM_SIG = keccak256(\"get_reward()\") >> (28 * 8);\n uint256 private constant _MAX_TOKENS = 8;\n uint256 private constant _REWARD_DURATION = 1 weeks;\n\n IAuthorizerAdaptorEntrypoint private immutable _authorizerAdaptorEntrypoint;\n IChildChainLiquidityGaugeFactory private immutable _gaugeFactory;\n\n constructor(IChildChainLiquidityGaugeFactory gaugeFactory, IAuthorizerAdaptorEntrypoint authorizerAdaptorEntrypoint)\n SingletonAuthentication(authorizerAdaptorEntrypoint.getVault())\n {\n _authorizerAdaptorEntrypoint = authorizerAdaptorEntrypoint;\n _gaugeFactory = gaugeFactory;\n }\n\n /**\n * @notice Returns the address of the Authorizer adaptor entrypoint contract.\n */\n function getAuthorizerAdaptorEntrypoint() external view returns (IAuthorizerAdaptorEntrypoint) {\n return _authorizerAdaptorEntrypoint;\n }\n\n /**\n * @notice Adds a new token to a RewardsOnlyGauge.\n * @dev This is a permissioned function.\n * @param gauge - The gauge we are modifying\n * @param rewardToken - The token to be added.\n * @param distributor - The distributor for the rewards.\n */\n function addTokenToGauge(\n IRewardsOnlyGauge gauge,\n IERC20 rewardToken,\n address distributor\n ) external authenticate {\n require(_gaugeFactory.isGaugeFromFactory(address(gauge)), \"Invalid gauge\");\n IChildChainStreamer streamer = IChildChainStreamer(_gaugeFactory.getGaugeStreamer(address(gauge)));\n require(streamer == gauge.reward_contract(), \"Not original gauge streamer\");\n\n // We first add the new token to the streamer so that the gauge can claim it when checkpointing.\n _addTokenToStreamer(streamer, rewardToken, distributor);\n\n // We must pass the full list of tokens which the gauge should claim from the streamer when adding a new token.\n // We then query this from the streamer to ensure that the reward tokens on each contract are consistent.\n // As we have added the new reward token to the streamer already, this array will include it.\n IERC20[_MAX_TOKENS] memory rewardTokens;\n for (uint256 i; i < _MAX_TOKENS; ++i) {\n rewardTokens[i] = streamer.reward_tokens(i);\n }\n\n // We now let the gauge know to claim the new token.\n _updateGaugeRewardTokens(gauge, streamer, rewardTokens);\n }\n\n function _addTokenToStreamer(\n IChildChainStreamer streamer,\n IERC20 rewardToken,\n address distributor\n ) private {\n _authorizerAdaptorEntrypoint.performAction(\n address(streamer),\n abi.encodeWithSelector(IChildChainStreamer.add_reward.selector, rewardToken, distributor, _REWARD_DURATION)\n );\n }\n\n function _updateGaugeRewardTokens(\n IRewardsOnlyGauge gauge,\n IChildChainStreamer streamer,\n IERC20[_MAX_TOKENS] memory rewardTokens\n ) private {\n _authorizerAdaptorEntrypoint.performAction(\n address(gauge),\n abi.encodeWithSelector(IRewardsOnlyGauge.set_rewards.selector, streamer, _CLAIM_SIG, rewardTokens)\n );\n }\n}\n"},"contracts/admin/DistributionScheduler.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\n// solhint-disable not-rely-on-time\n\n/**\n * @title DistributionScheduler\n * @notice Scheduler for setting up permissionless distributions of liquidity gauge reward tokens.\n * @dev Any address may send tokens to the DistributionSchedule to be distributed among gauge depositors.\n */\ncontract DistributionScheduler {\n using SafeERC20 for IERC20;\n\n uint256 private constant _MAX_REWARDS = 8;\n\n // The node at _HEAD contains no value, and simply points to the actual first node. The last node points to _NULL.\n uint32 private constant _HEAD = 0;\n uint32 private constant _NULL = 0;\n\n // gauge-token pair -> timestamp -> (amount, nextTimestamp)\n mapping(bytes32 => mapping(uint32 => RewardNode)) private _rewardsLists;\n\n struct RewardNode {\n uint224 amount;\n uint32 nextTimestamp;\n }\n\n /**\n * @notice Returns information on the reward paid out to `gauge` in `token` over the week starting at `timestamp`\n * @param gauge - The gauge which is to distribute the reward token.\n * @param token - The token which is to be distributed among gauge depositors.\n * @param timestamp - The timestamp corresponding to the beginning of the week being queried.\n * @return - the amount of `token` which is to be distributed over the week starting at `timestamp`.\n * - the timestamp of the next scheduled distribution of `token` to `gauge`. Zero if no distribution exists.\n */\n function getRewardNode(\n IRewardTokenDistributor gauge,\n IERC20 token,\n uint256 timestamp\n ) external view returns (RewardNode memory) {\n return _rewardsLists[_getRewardsListId(gauge, token)][uint32(timestamp)];\n }\n\n /**\n * @notice Returns the amount of `token` which is ready to be distributed by `gauge` as of the current timestamp.\n * @param gauge - The gauge which is to distribute the reward token.\n * @param token - The token which is to be distributed among gauge depositors.\n */\n function getPendingRewards(IRewardTokenDistributor gauge, IERC20 token) public view returns (uint256) {\n return getPendingRewardsAt(gauge, token, block.timestamp);\n }\n\n /**\n * @notice Returns the amount of `token` which is ready to be distributed by `gauge` as of a specified timestamp.\n * @param gauge - The gauge which is to distribute the reward token.\n * @param token - The token which is to be distributed among gauge depositors.\n * @param timestamp - The future timestamp in which to query.\n */\n function getPendingRewardsAt(\n IRewardTokenDistributor gauge,\n IERC20 token,\n uint256 timestamp\n ) public view returns (uint256) {\n mapping(uint32 => RewardNode) storage rewardsList = _rewardsLists[_getRewardsListId(gauge, token)];\n\n (, uint256 amount) = _getPendingRewards(rewardsList, timestamp);\n return amount;\n }\n\n /**\n * @notice Schedule a distribution of tokens to gauge depositors over the span of 1 week.\n * @dev All distributions must start at the beginning of a week in UNIX time, i.e. Thurs 00:00 UTC.\n * This is to prevent griefing from many low value distributions having to be processed before a meaningful\n * distribution can be processed.\n * @param gauge - The gauge which is to distribute the reward token.\n * @param token - The token which is to be distributed among gauge depositors.\n * @param amount - The amount of tokens which to distribute.\n * @param startTime - The timestamp at the beginning of the week over which to distribute tokens.\n */\n function scheduleDistribution(\n IRewardTokenDistributor gauge,\n IERC20 token,\n uint256 amount,\n uint256 startTime\n ) external {\n require(amount > 0, \"Must provide non-zero number of tokens\");\n\n // Ensure that values won't overflow when put into storage.\n require(amount <= type(uint224).max, \"Reward amount overflow\");\n require(startTime <= type(uint32).max, \"Reward timestamp overflow\");\n\n // Ensure that a user doesn't add a reward token which becomes locked on scheduler\n address rewardDistributor = gauge.reward_data(token).distributor;\n require(rewardDistributor != address(0), \"Reward token does not exist on gauge\");\n require(rewardDistributor == address(this), \"DistributionScheduler is not reward token's distributor\");\n\n // Prevent griefing by creating many small distributions which must be processed.\n require(startTime >= block.timestamp, \"Distribution can only be scheduled for the future\");\n require(startTime == _roundDownTimestamp(startTime), \"Distribution must start at the beginning of the week\");\n\n // Avoid mistakes causing rewards being locked far into the future.\n require(startTime - block.timestamp <= 365 days, \"Distribution too far into the future\");\n\n token.safeTransferFrom(msg.sender, address(this), amount);\n\n _insertReward(_rewardsLists[_getRewardsListId(gauge, token)], uint32(startTime), uint224(amount));\n }\n\n /**\n * @notice Process all pending distributions for a gauge to start distributing the tokens.\n * @param gauge - The gauge which is to distribute the reward token.\n */\n function startDistributions(IRewardTokenDistributor gauge) external {\n for (uint256 i = 0; i < _MAX_REWARDS; ++i) {\n IERC20 token = gauge.reward_tokens(i);\n if (token == IERC20(0)) break;\n\n // Only attempt to start distributions for tokens which we are the distributor for\n address rewardDistributor = gauge.reward_data(token).distributor;\n if (rewardDistributor == address(this)) {\n startDistributionForToken(gauge, token);\n }\n }\n }\n\n /**\n * @notice Process all pending distributions for a given token for a gauge to start distributing tokens.\n * @param gauge - The gauge which is to distribute the reward token.\n * @param token - The token which is to be distributed among gauge depositors.\n */\n function startDistributionForToken(IRewardTokenDistributor gauge, IERC20 token) public {\n mapping(uint32 => RewardNode) storage rewardsList = _rewardsLists[_getRewardsListId(gauge, token)];\n\n (uint32 firstUnprocessedNodeKey, uint256 rewardAmount) = _getPendingRewards(rewardsList, block.timestamp);\n\n // These calls are reentrancy-safe as we've already performed our only state transition (updating the head of\n // the list)\n rewardsList[_HEAD].nextTimestamp = firstUnprocessedNodeKey;\n\n token.safeApprove(address(gauge), rewardAmount);\n gauge.deposit_reward_token(token, rewardAmount);\n }\n\n // Internal functions\n\n function _getRewardsListId(IRewardTokenDistributor gauge, IERC20 rewardToken) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(gauge, rewardToken));\n }\n\n /**\n * @dev Sums the rewards held on all pending reward nodes with a key lesser than `targetKey`.\n * @return - the key corresponding to the first node with a key greater than `targetKey`.\n * - the cumulative rewards held on all pending nodes before `targetKey`\n */\n function _getPendingRewards(mapping(uint32 => RewardNode) storage rewardsList, uint256 targetKey)\n internal\n view\n returns (uint32, uint256)\n {\n uint32 currentNodeKey = rewardsList[_HEAD].nextTimestamp;\n\n // Iterate through all nodes which are ready to be started, summing the values of each.\n uint256 amount;\n while (targetKey >= currentNodeKey && currentNodeKey != _NULL) {\n amount += rewardsList[currentNodeKey].amount;\n\n currentNodeKey = rewardsList[currentNodeKey].nextTimestamp;\n }\n\n return (currentNodeKey, amount);\n }\n\n /**\n * @dev Find the position of the new node in the list of pending nodes and insert it.\n */\n function _insertReward(\n mapping(uint32 => RewardNode) storage rewardsList,\n uint32 insertedNodeKey,\n uint224 amount\n ) private {\n // We want to find two nodes which sit either side of the new node to be created so we can insert between them.\n\n uint32 currentNodeKey = _HEAD;\n uint32 nextNodeKey = rewardsList[currentNodeKey].nextTimestamp;\n\n // Search through nodes until the new node sits somewhere between `currentNodeKey` and `nextNodeKey`, or\n // we process all nodes.\n while (insertedNodeKey > nextNodeKey && nextNodeKey != _NULL) {\n currentNodeKey = nextNodeKey;\n nextNodeKey = rewardsList[currentNodeKey].nextTimestamp;\n }\n\n if (nextNodeKey == _NULL) {\n // We reached the end of the list and so can just append the new node.\n rewardsList[currentNodeKey].nextTimestamp = insertedNodeKey;\n rewardsList[insertedNodeKey] = RewardNode(amount, _NULL);\n } else if (nextNodeKey == insertedNodeKey) {\n // There already exists a node at the time we want to insert one.\n // We then just increase the value of this node.\n\n uint256 rewardAmount = uint256(rewardsList[nextNodeKey].amount) + amount;\n require(rewardAmount <= type(uint224).max, \"Reward amount overflow\");\n rewardsList[nextNodeKey].amount = uint224(rewardAmount);\n } else {\n // We're inserting a node in between `currentNodeKey` and `nextNodeKey` so then update\n // `currentNodeKey` to point to the newly inserted node and the new node to point to `nextNodeKey`.\n rewardsList[insertedNodeKey] = RewardNode(amount, nextNodeKey);\n rewardsList[currentNodeKey].nextTimestamp = insertedNodeKey;\n }\n }\n\n /**\n * @dev Rounds the provided timestamp down to the beginning of the previous week (Thurs 00:00 UTC)\n */\n function _roundDownTimestamp(uint256 timestamp) private pure returns (uint256) {\n return (timestamp / 1 weeks) * 1 weeks;\n }\n}\n"},"contracts/admin/GaugeAdder.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\";\n\ncontract GaugeAdder is IGaugeAdder, SingletonAuthentication, ReentrancyGuard {\n // This is the gauge type as used in the GaugeController for Ethereum gauges, which we'll use for all gauges of all\n // networks from now on.\n int128 private constant _ETHEREUM_GAUGE_CONTROLLER_TYPE = 2;\n\n bytes32 private immutable _ethereum = keccak256(abi.encodePacked(\"Ethereum\"));\n IGaugeController private immutable _gaugeController;\n IERC20 private immutable _balWethBpt;\n IAuthorizerAdaptorEntrypoint private _authorizerAdaptorEntrypoint;\n\n // Registered gauge types. Append-only.\n string[] private _gaugeTypes;\n\n // Mapping from gauge type to address of approved factory for that type\n mapping(string => ILiquidityGaugeFactory) private _gaugeTypeFactory;\n\n constructor(IGaugeController gaugeController, IAuthorizerAdaptorEntrypoint authorizerAdaptorEntrypoint)\n SingletonAuthentication(gaugeController.admin().getVault())\n {\n _gaugeController = gaugeController;\n _authorizerAdaptorEntrypoint = authorizerAdaptorEntrypoint;\n\n // Cache the BAL 80 WETH 20 BPT on this contract.\n _balWethBpt = gaugeController.token();\n }\n\n modifier withValidGaugeType(string memory gaugeType) {\n require(_isValidGaugeType(gaugeType), \"Invalid gauge type\");\n _;\n }\n\n /// @inheritdoc IGaugeAdder\n function getAuthorizerAdaptorEntrypoint() external view override returns (IAuthorizerAdaptorEntrypoint) {\n return _authorizerAdaptorEntrypoint;\n }\n\n /// @inheritdoc IGaugeAdder\n function getGaugeController() external view override returns (IGaugeController) {\n return _gaugeController;\n }\n\n /// @inheritdoc IGaugeAdder\n function getGaugeTypes() external view override returns (string[] memory) {\n return _gaugeTypes;\n }\n\n /// @inheritdoc IGaugeAdder\n function getGaugeTypeAtIndex(uint256 index) external view override returns (string memory) {\n return _gaugeTypes[index];\n }\n\n /// @inheritdoc IGaugeAdder\n function getGaugeTypesCount() external view override returns (uint256) {\n return _gaugeTypes.length;\n }\n\n /// @inheritdoc IGaugeAdder\n function isValidGaugeType(string memory gaugeType) external view override returns (bool) {\n return _isValidGaugeType(gaugeType);\n }\n\n /// @inheritdoc IGaugeAdder\n function getFactoryForGaugeType(string memory gaugeType)\n external\n view\n override\n withValidGaugeType(gaugeType)\n returns (ILiquidityGaugeFactory)\n {\n return _gaugeTypeFactory[gaugeType];\n }\n\n /// @inheritdoc IGaugeAdder\n function isGaugeFromValidFactory(address gauge, string memory gaugeType)\n external\n view\n override\n withValidGaugeType(gaugeType)\n returns (bool)\n {\n return _isGaugeFromValidFactory(gauge, gaugeType);\n }\n\n // Admin Functions\n\n /// @inheritdoc IGaugeAdder\n function addGaugeType(string memory gaugeType) external override authenticate {\n require(bytes(gaugeType).length > 0, \"Gauge type cannot be empty\");\n require(!_isValidGaugeType(gaugeType), \"Gauge type already added\");\n\n _gaugeTypes.push(gaugeType);\n\n emit GaugeTypeAdded(gaugeType, gaugeType);\n }\n\n /// @inheritdoc IGaugeAdder\n function addGauge(address gauge, string memory gaugeType)\n external\n override\n authenticate\n withValidGaugeType(gaugeType)\n {\n if (keccak256(abi.encodePacked(gaugeType)) == _ethereum) {\n IERC20 pool = IStakingLiquidityGauge(gauge).lp_token();\n require(pool != _balWethBpt, \"Cannot add gauge for 80/20 BAL-WETH BPT\");\n }\n\n _addGauge(gauge, gaugeType);\n }\n\n /// @inheritdoc IGaugeAdder\n function setGaugeFactory(ILiquidityGaugeFactory factory, string memory gaugeType)\n external\n override\n authenticate\n withValidGaugeType(gaugeType)\n {\n // Sanity check that calling `isGaugeFromFactory` won't revert\n require(\n (factory == ILiquidityGaugeFactory(0)) || (!factory.isGaugeFromFactory(address(0))),\n \"Invalid factory implementation\"\n );\n\n _gaugeTypeFactory[gaugeType] = factory;\n\n emit GaugeFactorySet(gaugeType, gaugeType, factory);\n }\n\n // Internal functions\n\n function _isGaugeFromValidFactory(address gauge, string memory gaugeType) internal view returns (bool) {\n ILiquidityGaugeFactory gaugeFactory = _gaugeTypeFactory[gaugeType];\n return gaugeFactory == ILiquidityGaugeFactory(0) ? false : gaugeFactory.isGaugeFromFactory(gauge);\n }\n\n /**\n * @dev Adds `gauge` to the GaugeController with type `gaugeType` and an initial weight of zero\n */\n function _addGauge(address gauge, string memory gaugeType) private {\n require(_isGaugeFromValidFactory(gauge, gaugeType), \"Invalid gauge\");\n\n // `_gaugeController` enforces that duplicate gauges may not be added so we do not need to check here.\n _authorizerAdaptorEntrypoint.performAction(\n address(_gaugeController),\n abi.encodeWithSelector(IGaugeController.add_gauge.selector, gauge, _ETHEREUM_GAUGE_CONTROLLER_TYPE)\n );\n }\n\n function _isValidGaugeType(string memory gaugeType) internal view returns (bool) {\n bytes32 gaugeTypeHash = keccak256(abi.encodePacked(gaugeType));\n for (uint256 i = 0; i < _gaugeTypes.length; ++i) {\n if (gaugeTypeHash == keccak256(abi.encodePacked(_gaugeTypes[i]))) {\n return true;\n }\n }\n\n return false;\n }\n}\n"},"contracts/BalancerMinter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\";\n\nabstract contract BalancerMinter is IBalancerMinter, ReentrancyGuard, EOASignaturesValidator {\n using SafeMath for uint256;\n\n IERC20 private immutable _token;\n\n // user -> gauge -> value\n mapping(address => mapping(address => uint256)) private _minted;\n // minter -> user -> can mint?\n mapping(address => mapping(address => bool)) private _allowedMinter;\n\n // solhint-disable-next-line var-name-mixedcase\n bytes32 private constant _SET_MINTER_APPROVAL_TYPEHASH = keccak256(\n \"SetMinterApproval(address minter,bool approval,uint256 nonce,uint256 deadline)\"\n );\n\n event MinterApprovalSet(address indexed user, address indexed minter, bool approval);\n\n constructor(\n IERC20 token,\n string memory name,\n string memory version\n ) EIP712(name, version) {\n _token = token;\n }\n\n /// @inheritdoc IBalancerMinter\n function getBalancerToken() public view override returns (IERC20) {\n return _token;\n }\n\n /// @inheritdoc IBalancerMinter\n function mint(address gauge) external override nonReentrant returns (uint256) {\n return _mintFor(gauge, msg.sender);\n }\n\n /// @inheritdoc IBalancerMinter\n function mintMany(address[] calldata gauges) external override nonReentrant returns (uint256) {\n return _mintForMany(gauges, msg.sender);\n }\n\n /// @inheritdoc IBalancerMinter\n function mintFor(address gauge, address user) external override nonReentrant returns (uint256) {\n require(_allowedMinter[msg.sender][user], \"Caller not allowed to mint for user\");\n return _mintFor(gauge, user);\n }\n\n /// @inheritdoc IBalancerMinter\n function mintManyFor(address[] calldata gauges, address user) external override nonReentrant returns (uint256) {\n require(_allowedMinter[msg.sender][user], \"Caller not allowed to mint for user\");\n return _mintForMany(gauges, user);\n }\n\n /// @inheritdoc IBalancerMinter\n function minted(address user, address gauge) public view override returns (uint256) {\n return _minted[user][gauge];\n }\n\n /// @inheritdoc IBalancerMinter\n function getMinterApproval(address minter, address user) external view override returns (bool) {\n return _allowedMinter[minter][user];\n }\n\n /// @inheritdoc IBalancerMinter\n function setMinterApproval(address minter, bool approval) public override {\n _setMinterApproval(minter, msg.sender, approval);\n }\n\n /// @inheritdoc IBalancerMinter\n function setMinterApprovalWithSignature(\n address minter,\n bool approval,\n address user,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external override {\n bytes32 structHash = keccak256(\n abi.encode(_SET_MINTER_APPROVAL_TYPEHASH, minter, approval, getNextNonce(user), deadline)\n );\n\n _ensureValidSignature(user, structHash, _toArraySignature(v, r, s), deadline, Errors.INVALID_SIGNATURE);\n\n _setMinterApproval(minter, user, approval);\n }\n\n function _setMinterApproval(\n address minter,\n address user,\n bool approval\n ) private {\n _allowedMinter[minter][user] = approval;\n emit MinterApprovalSet(user, minter, approval);\n }\n\n // Internal functions\n\n function _setMinted(\n address user,\n address gauge,\n uint256 value\n ) internal {\n _minted[user][gauge] = value;\n emit Minted(user, gauge, value);\n }\n\n function _mintFor(address gauge, address user) internal virtual returns (uint256 tokensToMint);\n\n function _mintForMany(address[] calldata gauges, address user) internal virtual returns (uint256 tokensToMint);\n\n // The below functions are near-duplicates of functions available above.\n // They are included for ABI compatibility with snake_casing as used in vyper contracts.\n // solhint-disable func-name-mixedcase\n\n /// @inheritdoc IBalancerMinter\n function allowed_to_mint_for(address minter, address user) external view override returns (bool) {\n return _allowedMinter[minter][user];\n }\n\n /// @inheritdoc IBalancerMinter\n function mint_many(address[8] calldata gauges) external override nonReentrant {\n for (uint256 i = 0; i < 8; ++i) {\n if (gauges[i] == address(0)) {\n break;\n }\n _mintFor(gauges[i], msg.sender);\n }\n }\n\n /// @inheritdoc IBalancerMinter\n function mint_for(address gauge, address user) external override nonReentrant {\n if (_allowedMinter[msg.sender][user]) {\n _mintFor(gauge, user);\n }\n }\n\n /// @inheritdoc IBalancerMinter\n function toggle_approve_mint(address minter) external override {\n setMinterApproval(minter, !_allowedMinter[minter][msg.sender]);\n }\n}\n"},"contracts/BalancerTokenAdmin.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\";\n\n// solhint-disable not-rely-on-time\n\n/**\n * @title Balancer Token Admin\n * @notice This contract holds all admin powers over the BAL token passing through calls\n * while delegating access control to the Balancer Authorizer\n *\n * In addition, calls to the mint function must respect the inflation schedule as defined in this contract.\n * As this contract is the only way to mint BAL tokens this ensures that the maximum allowed supply is enforced\n * @dev This contract exists as a consequence of the gauge systems needing to know a fixed inflation schedule\n * in order to know how much BAL a gauge is allowed to mint. As this does not exist within the BAL token itself\n * it is defined here, we must then wrap the token's minting functionality in order for this to be meaningful.\n */\ncontract BalancerTokenAdmin is IBalancerTokenAdmin, SingletonAuthentication, ReentrancyGuard {\n using Math for uint256;\n\n // Initial inflation rate of 145k BAL per week.\n uint256 public constant override INITIAL_RATE = (145000 * 1e18) / uint256(1 weeks); // BAL has 18 decimals\n uint256 public constant override RATE_REDUCTION_TIME = 365 days;\n uint256 public constant override RATE_REDUCTION_COEFFICIENT = 1189207115002721024; // 2 ** (1/4) * 1e18\n uint256 public constant override RATE_DENOMINATOR = 1e18;\n\n IBalancerToken private immutable _balancerToken;\n\n event MiningParametersUpdated(uint256 rate, uint256 supply);\n\n // Supply Variables\n uint256 private _miningEpoch;\n uint256 private _startEpochTime = type(uint256).max; // Sentinel value for contract not being activated\n uint256 private _startEpochSupply;\n uint256 private _rate;\n\n constructor(IVault vault, IBalancerToken balancerToken) SingletonAuthentication(vault) {\n _balancerToken = balancerToken;\n }\n\n /**\n * @dev Returns the Balancer token.\n */\n function getBalancerToken() external view override returns (IBalancerToken) {\n return _balancerToken;\n }\n\n /**\n * @notice Initiate BAL token inflation schedule\n * @dev Reverts if contract does not have sole minting powers over BAL (and no other minters can be added).\n */\n function activate() external override nonReentrant authenticate {\n require(_startEpochTime == type(uint256).max, \"Already activated\");\n\n // We need to check that this contract can't be bypassed to mint more BAL in the future.\n // If other addresses had minting rights over the BAL token then this inflation schedule\n // could be bypassed by minting new tokens directly on the BalancerGovernanceToken contract.\n\n // On the BalancerGovernanceToken contract the minter role's admin is the DEFAULT_ADMIN_ROLE.\n // No external function exists to change the minter role's admin so we cannot make the list of\n // minters immutable without revoking all access to DEFAULT_ADMIN_ROLE.\n bytes32 minterRole = _balancerToken.MINTER_ROLE();\n bytes32 snapshotRole = _balancerToken.SNAPSHOT_ROLE();\n bytes32 adminRole = _balancerToken.DEFAULT_ADMIN_ROLE();\n\n require(_balancerToken.hasRole(adminRole, address(this)), \"BalancerTokenAdmin is not an admin\");\n\n // All other minters must be removed to avoid inflation schedule enforcement being bypassed.\n uint256 numberOfMinters = _balancerToken.getRoleMemberCount(minterRole);\n for (uint256 i = 0; i < numberOfMinters; ++i) {\n address minter = _balancerToken.getRoleMember(minterRole, 0);\n _balancerToken.revokeRole(minterRole, minter);\n }\n // Give this contract minting rights over the BAL token\n _balancerToken.grantRole(minterRole, address(this));\n\n // BalancerGovernanceToken exposes a role-restricted `snapshot` function for performing onchain voting.\n // We delegate control over this to the Balancer Authorizer by removing this role from all current addresses\n // and exposing a function which defers to the Authorizer for access control.\n uint256 numberOfSnapshotters = _balancerToken.getRoleMemberCount(snapshotRole);\n for (uint256 i = 0; i < numberOfSnapshotters; ++i) {\n address snapshotter = _balancerToken.getRoleMember(snapshotRole, 0);\n _balancerToken.revokeRole(snapshotRole, snapshotter);\n }\n // Give this contract snapshotting rights over the BAL token\n _balancerToken.grantRole(snapshotRole, address(this));\n\n // BalancerTokenAdmin now is the only holder of MINTER_ROLE and SNAPSHOT_ROLE for BalancerGovernanceToken.\n\n // We can't prevent any other admins from granting other addresses these roles however.\n // This undermines the ability for BalancerTokenAdmin to enforce the correct inflation schedule.\n // The only way to prevent this is for BalancerTokenAdmin to be the only admin. We then remove all other admins.\n uint256 numberOfAdmins = _balancerToken.getRoleMemberCount(adminRole);\n uint256 skipSelf = 0;\n for (uint256 i = 0; i < numberOfAdmins; ++i) {\n address admin = _balancerToken.getRoleMember(adminRole, skipSelf);\n if (admin != address(this)) {\n _balancerToken.revokeRole(adminRole, admin);\n } else {\n // This contract is now the admin with index 0, we now delete the address with index 1 instead\n skipSelf = 1;\n }\n }\n\n // BalancerTokenAdmin doesn't actually need admin rights any more and won't grant rights to any more addresses\n // We then renounce our admin role to ensure that another address won't gain absolute minting powers.\n _balancerToken.revokeRole(adminRole, address(this));\n\n // Perform sanity checks to make sure we're not leaving the roles in a broken state\n require(_balancerToken.getRoleMemberCount(adminRole) == 0, \"Address exists with admin rights\");\n require(_balancerToken.hasRole(minterRole, address(this)), \"BalancerTokenAdmin is not a minter\");\n require(_balancerToken.hasRole(snapshotRole, address(this)), \"BalancerTokenAdmin is not a snapshotter\");\n require(_balancerToken.getRoleMemberCount(minterRole) == 1, \"Multiple minters exist\");\n require(_balancerToken.getRoleMemberCount(snapshotRole) == 1, \"Multiple snapshotters exist\");\n\n // As BAL inflation is now enforced by this contract we can initialise the relevant variables.\n _startEpochSupply = _balancerToken.totalSupply();\n _startEpochTime = block.timestamp;\n _rate = INITIAL_RATE;\n emit MiningParametersUpdated(INITIAL_RATE, _startEpochSupply);\n }\n\n /**\n * @notice Mint BAL tokens subject to the defined inflation schedule\n * @dev Callable only by addresses defined in the Balancer Authorizer contract\n */\n function mint(address to, uint256 amount) external override authenticate {\n // Check if we've passed into a new epoch such that we should calculate available supply with a smaller rate.\n if (block.timestamp >= _startEpochTime.add(RATE_REDUCTION_TIME)) {\n _updateMiningParameters();\n }\n\n require(\n _balancerToken.totalSupply().add(amount) <= _availableSupply(),\n \"Mint amount exceeds remaining available supply\"\n );\n _balancerToken.mint(to, amount);\n }\n\n /**\n * @notice Perform a snapshot of BAL token balances\n * @dev Callable only by addresses defined in the Balancer Authorizer contract\n */\n function snapshot() external authenticate {\n _balancerToken.snapshot();\n }\n\n /**\n * @notice Returns the current epoch number.\n */\n function getMiningEpoch() external view returns (uint256) {\n return _miningEpoch;\n }\n\n /**\n * @notice Returns the start timestamp of the current epoch.\n */\n function getStartEpochTime() external view returns (uint256) {\n return _startEpochTime;\n }\n\n /**\n * @notice Returns the start timestamp of the next epoch.\n */\n function getFutureEpochTime() external view returns (uint256) {\n return _startEpochTime.add(RATE_REDUCTION_TIME);\n }\n\n /**\n * @notice Returns the available supply at the beginning of the current epoch.\n */\n function getStartEpochSupply() external view returns (uint256) {\n return _startEpochSupply;\n }\n\n /**\n * @notice Returns the current inflation rate of BAL per second\n */\n function getInflationRate() external view returns (uint256) {\n return _rate;\n }\n\n /**\n * @notice Maximum allowable number of tokens in existence (claimed or unclaimed)\n */\n function getAvailableSupply() external view returns (uint256) {\n return _availableSupply();\n }\n\n /**\n * @notice Get timestamp of the current mining epoch start while simultaneously updating mining parameters\n * @return Timestamp of the current epoch\n */\n function startEpochTimeWrite() external override returns (uint256) {\n return _startEpochTimeWrite();\n }\n\n /**\n * @notice Get timestamp of the next mining epoch start while simultaneously updating mining parameters\n * @return Timestamp of the next epoch\n */\n function futureEpochTimeWrite() external returns (uint256) {\n return _startEpochTimeWrite().add(RATE_REDUCTION_TIME);\n }\n\n /**\n * @notice Update mining rate and supply at the start of the epoch\n * @dev Callable by any address, but only once per epoch\n * Total supply becomes slightly larger if this function is called late\n */\n function updateMiningParameters() external {\n require(block.timestamp >= _startEpochTime.add(RATE_REDUCTION_TIME), \"Epoch has not finished yet\");\n _updateMiningParameters();\n }\n\n /**\n * @notice How much supply is mintable from start timestamp till end timestamp\n * @param start Start of the time interval (timestamp)\n * @param end End of the time interval (timestamp)\n * @return Tokens mintable from `start` till `end`\n */\n function mintableInTimeframe(uint256 start, uint256 end) external view returns (uint256) {\n return _mintableInTimeframe(start, end);\n }\n\n // Internal functions\n\n /**\n * @notice Maximum allowable number of tokens in existence (claimed or unclaimed)\n */\n function _availableSupply() internal view returns (uint256) {\n uint256 newSupplyFromCurrentEpoch = (block.timestamp.sub(_startEpochTime)).mul(_rate);\n return _startEpochSupply.add(newSupplyFromCurrentEpoch);\n }\n\n /**\n * @notice Get timestamp of the current mining epoch start while simultaneously updating mining parameters\n * @return Timestamp of the current epoch\n */\n function _startEpochTimeWrite() internal returns (uint256) {\n uint256 startEpochTime = _startEpochTime;\n if (block.timestamp >= startEpochTime.add(RATE_REDUCTION_TIME)) {\n _updateMiningParameters();\n return _startEpochTime;\n }\n return startEpochTime;\n }\n\n function _updateMiningParameters() internal {\n uint256 inflationRate = _rate;\n uint256 startEpochSupply = _startEpochSupply.add(inflationRate.mul(RATE_REDUCTION_TIME));\n inflationRate = inflationRate.mul(RATE_DENOMINATOR).divDown(RATE_REDUCTION_COEFFICIENT);\n\n _miningEpoch = _miningEpoch.add(1);\n _startEpochTime = _startEpochTime.add(RATE_REDUCTION_TIME);\n _rate = inflationRate;\n _startEpochSupply = startEpochSupply;\n\n emit MiningParametersUpdated(inflationRate, startEpochSupply);\n }\n\n /**\n * @notice How much supply is mintable from start timestamp till end timestamp\n * @param start Start of the time interval (timestamp)\n * @param end End of the time interval (timestamp)\n * @return Tokens mintable from `start` till `end`\n */\n function _mintableInTimeframe(uint256 start, uint256 end) internal view returns (uint256) {\n require(start <= end, \"start > end\");\n\n uint256 currentEpochTime = _startEpochTime;\n uint256 currentRate = _rate;\n\n // It shouldn't be possible to over/underflow in here but we add checked maths to be safe\n\n // Special case if end is in future (not yet minted) epoch\n if (end > currentEpochTime.add(RATE_REDUCTION_TIME)) {\n currentEpochTime = currentEpochTime.add(RATE_REDUCTION_TIME);\n currentRate = currentRate.mul(RATE_DENOMINATOR).divDown(RATE_REDUCTION_COEFFICIENT);\n }\n\n require(end <= currentEpochTime.add(RATE_REDUCTION_TIME), \"too far in future\");\n\n uint256 toMint = 0;\n for (uint256 epoch = 0; epoch < 999; ++epoch) {\n if (end >= currentEpochTime) {\n uint256 currentEnd = end;\n if (currentEnd > currentEpochTime.add(RATE_REDUCTION_TIME)) {\n currentEnd = currentEpochTime.add(RATE_REDUCTION_TIME);\n }\n\n uint256 currentStart = start;\n if (currentStart >= currentEpochTime.add(RATE_REDUCTION_TIME)) {\n // We should never get here but what if...\n break;\n } else if (currentStart < currentEpochTime) {\n currentStart = currentEpochTime;\n }\n\n toMint = toMint.add(currentRate.mul(currentEnd.sub(currentStart)));\n\n if (start >= currentEpochTime) {\n break;\n }\n }\n\n currentEpochTime = currentEpochTime.sub(RATE_REDUCTION_TIME);\n // double-division with rounding made rate a bit less => good\n currentRate = currentRate.mul(RATE_REDUCTION_COEFFICIENT).divDown(RATE_DENOMINATOR);\n assert(currentRate <= INITIAL_RATE);\n }\n\n return toMint;\n }\n\n // The below functions are duplicates of functions available above.\n // They are included for ABI compatibility with snake_casing as used in vyper contracts.\n // solhint-disable func-name-mixedcase\n\n function rate() external view override returns (uint256) {\n return _rate;\n }\n\n function available_supply() external view returns (uint256) {\n return _availableSupply();\n }\n\n /**\n * @notice Get timestamp of the current mining epoch start while simultaneously updating mining parameters\n * @return Timestamp of the current epoch\n */\n function start_epoch_time_write() external returns (uint256) {\n return _startEpochTimeWrite();\n }\n\n /**\n * @notice Get timestamp of the next mining epoch start while simultaneously updating mining parameters\n * @return Timestamp of the next epoch\n */\n function future_epoch_time_write() external returns (uint256) {\n return _startEpochTimeWrite().add(RATE_REDUCTION_TIME);\n }\n\n /**\n * @notice Update mining rate and supply at the start of the epoch\n * @dev Callable by any address, but only once per epoch\n * Total supply becomes slightly larger if this function is called late\n */\n function update_mining_parameters() external {\n require(block.timestamp >= _startEpochTime.add(RATE_REDUCTION_TIME), \"Epoch has not finished yet\");\n _updateMiningParameters();\n }\n\n /**\n * @notice How much supply is mintable from start timestamp till end timestamp\n * @param start Start of the time interval (timestamp)\n * @param end End of the time interval (timestamp)\n * @return Tokens mintable from `start` till `end`\n */\n function mintable_in_timeframe(uint256 start, uint256 end) external view returns (uint256) {\n return _mintableInTimeframe(start, end);\n }\n}\n"},"contracts/fee-distribution/FeeDistributor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\";\n\n// solhint-disable not-rely-on-time\n\n/**\n * @title Fee Distributor\n * @notice Distributes any tokens transferred to the contract (e.g. Protocol fees and any BAL emissions) among veBAL\n * holders proportionally based on a snapshot of the week at which the tokens are sent to the FeeDistributor contract.\n * @dev Supports distributing arbitrarily many different tokens. In order to start distributing a new token to veBAL\n * holders simply transfer the tokens to the `FeeDistributor` contract and then call `checkpointToken`.\n */\ncontract FeeDistributor is IFeeDistributor, OptionalOnlyCaller, ReentrancyGuard {\n using SafeMath for uint256;\n using SafeERC20 for IERC20;\n\n IVotingEscrow private immutable _votingEscrow;\n\n uint256 private immutable _startTime;\n\n // Global State\n uint256 private _timeCursor;\n mapping(uint256 => uint256) private _veSupplyCache;\n\n // Token State\n\n // `startTime` and `timeCursor` are both timestamps so comfortably fit in a uint64.\n // `cachedBalance` will comfortably fit the total supply of any meaningful token.\n // Should more than 2^128 tokens be sent to this contract then checkpointing this token will fail until enough\n // tokens have been claimed to bring the total balance back below 2^128.\n struct TokenState {\n uint64 startTime;\n uint64 timeCursor;\n uint128 cachedBalance;\n }\n mapping(IERC20 => TokenState) private _tokenState;\n mapping(IERC20 => mapping(uint256 => uint256)) private _tokensPerWeek;\n\n // User State\n\n // `startTime` and `timeCursor` are timestamps so will comfortably fit in a uint64.\n // For `lastEpochCheckpointed` to overflow would need over 2^128 transactions to the VotingEscrow contract.\n struct UserState {\n uint64 startTime;\n uint64 timeCursor;\n uint128 lastEpochCheckpointed;\n }\n mapping(address => UserState) internal _userState;\n mapping(address => mapping(uint256 => uint256)) private _userBalanceAtTimestamp;\n mapping(address => mapping(IERC20 => uint256)) private _userTokenTimeCursor;\n\n constructor(IVotingEscrow votingEscrow, uint256 startTime) EIP712(\"FeeDistributor\", \"1\") {\n _votingEscrow = votingEscrow;\n\n startTime = _roundDownTimestamp(startTime);\n uint256 currentWeek = _roundDownTimestamp(block.timestamp);\n require(startTime >= currentWeek, \"Cannot start before current week\");\n if (startTime == currentWeek) {\n // We assume that `votingEscrow` has been deployed in a week previous to this one.\n // If `votingEscrow` did not have a non-zero supply at the beginning of the current week\n // then any tokens which are distributed this week will be lost permanently.\n require(votingEscrow.totalSupply(currentWeek) > 0, \"Zero total supply results in lost tokens\");\n }\n _startTime = startTime;\n _timeCursor = startTime;\n }\n\n /**\n * @notice Returns the VotingEscrow (veBAL) token contract\n */\n function getVotingEscrow() external view override returns (IVotingEscrow) {\n return _votingEscrow;\n }\n\n /**\n * @notice Returns the global time cursor representing the most earliest uncheckpointed week.\n */\n function getTimeCursor() external view override returns (uint256) {\n return _timeCursor;\n }\n\n /**\n * @notice Returns the user-level time cursor representing the most earliest uncheckpointed week.\n * @param user - The address of the user to query.\n */\n function getUserTimeCursor(address user) external view override returns (uint256) {\n return _userState[user].timeCursor;\n }\n\n /**\n * @notice Returns the token-level time cursor storing the timestamp at up to which tokens have been distributed.\n * @param token - The ERC20 token address to query.\n */\n function getTokenTimeCursor(IERC20 token) external view override returns (uint256) {\n return _tokenState[token].timeCursor;\n }\n\n /**\n * @notice Returns the user-level time cursor storing the timestamp of the latest token distribution claimed.\n * @param user - The address of the user to query.\n * @param token - The ERC20 token address to query.\n */\n function getUserTokenTimeCursor(address user, IERC20 token) external view override returns (uint256) {\n return _getUserTokenTimeCursor(user, token);\n }\n\n /**\n * @notice Returns the user's cached balance of veBAL as of the provided timestamp.\n * @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n * This function requires `user` to have been checkpointed past `timestamp` so that their balance is cached.\n * @param user - The address of the user of which to read the cached balance of.\n * @param timestamp - The timestamp at which to read the `user`'s cached balance at.\n */\n function getUserBalanceAtTimestamp(address user, uint256 timestamp) external view override returns (uint256) {\n return _userBalanceAtTimestamp[user][timestamp];\n }\n\n /**\n * @notice Returns the cached total supply of veBAL as of the provided timestamp.\n * @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n * This function requires the contract to have been checkpointed past `timestamp` so that the supply is cached.\n * @param timestamp - The timestamp at which to read the cached total supply at.\n */\n function getTotalSupplyAtTimestamp(uint256 timestamp) external view override returns (uint256) {\n return _veSupplyCache[timestamp];\n }\n\n /**\n * @notice Returns the FeeDistributor's cached balance of `token`.\n */\n function getTokenLastBalance(IERC20 token) external view override returns (uint256) {\n return _tokenState[token].cachedBalance;\n }\n\n /**\n * @notice Returns the amount of `token` which the FeeDistributor received in the week beginning at `timestamp`.\n * @param token - The ERC20 token address to query.\n * @param timestamp - The timestamp corresponding to the beginning of the week of interest.\n */\n function getTokensDistributedInWeek(IERC20 token, uint256 timestamp) external view override returns (uint256) {\n return _tokensPerWeek[token][timestamp];\n }\n\n // Depositing\n\n /**\n * @notice Deposits tokens to be distributed in the current week.\n * @dev Sending tokens directly to the FeeDistributor instead of using `depositToken` may result in tokens being\n * retroactively distributed to past weeks, or for the distribution to carry over to future weeks.\n *\n * If for some reason `depositToken` cannot be called, in order to ensure that all tokens are correctly distributed\n * manually call `checkpointToken` before and after the token transfer.\n * @param token - The ERC20 token address to distribute.\n * @param amount - The amount of tokens to deposit.\n */\n function depositToken(IERC20 token, uint256 amount) external override nonReentrant {\n _checkpointToken(token, false);\n token.safeTransferFrom(msg.sender, address(this), amount);\n _checkpointToken(token, true);\n }\n\n /**\n * @notice Deposits tokens to be distributed in the current week.\n * @dev A version of `depositToken` which supports depositing multiple `tokens` at once.\n * See `depositToken` for more details.\n * @param tokens - An array of ERC20 token addresses to distribute.\n * @param amounts - An array of token amounts to deposit.\n */\n function depositTokens(IERC20[] calldata tokens, uint256[] calldata amounts) external override nonReentrant {\n InputHelpers.ensureInputLengthMatch(tokens.length, amounts.length);\n\n uint256 length = tokens.length;\n for (uint256 i = 0; i < length; ++i) {\n _checkpointToken(tokens[i], false);\n tokens[i].safeTransferFrom(msg.sender, address(this), amounts[i]);\n _checkpointToken(tokens[i], true);\n }\n }\n\n // Checkpointing\n\n /**\n * @notice Caches the total supply of veBAL at the beginning of each week.\n * This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n */\n function checkpoint() external override nonReentrant {\n _checkpointTotalSupply();\n }\n\n /**\n * @notice Caches the user's balance of veBAL at the beginning of each week.\n * This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n * @param user - The address of the user to be checkpointed.\n */\n function checkpointUser(address user) external override nonReentrant {\n _checkpointUserBalance(user);\n }\n\n /**\n * @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n * @dev Any `token` balance held by the FeeDistributor above that which is returned by `getTokenLastBalance`\n * will be distributed evenly across the time period since `token` was last checkpointed.\n *\n * This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n * @param token - The ERC20 token address to be checkpointed.\n */\n function checkpointToken(IERC20 token) external override nonReentrant {\n _checkpointToken(token, true);\n }\n\n /**\n * @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n * @dev A version of `checkpointToken` which supports checkpointing multiple tokens.\n * See `checkpointToken` for more details.\n * @param tokens - An array of ERC20 token addresses to be checkpointed.\n */\n function checkpointTokens(IERC20[] calldata tokens) external override nonReentrant {\n uint256 tokensLength = tokens.length;\n for (uint256 i = 0; i < tokensLength; ++i) {\n _checkpointToken(tokens[i], true);\n }\n }\n\n // Claiming\n\n /**\n * @notice Claims all pending distributions of the provided token for a user.\n * @dev It's not necessary to explicitly checkpoint before calling this function, it will ensure the FeeDistributor\n * is up to date before calculating the amount of tokens to be claimed.\n * @param user - The user on behalf of which to claim.\n * @param token - The ERC20 token address to be claimed.\n * @return The amount of `token` sent to `user` as a result of claiming.\n */\n function claimToken(address user, IERC20 token)\n external\n override\n nonReentrant\n optionalOnlyCaller(user)\n returns (uint256)\n {\n _checkpointTotalSupply();\n _checkpointUserBalance(user);\n _checkpointToken(token, false);\n\n uint256 amount = _claimToken(user, token);\n return amount;\n }\n\n /**\n * @notice Claims a number of tokens on behalf of a user.\n * @dev A version of `claimToken` which supports claiming multiple `tokens` on behalf of `user`.\n * See `claimToken` for more details.\n * @param user - The user on behalf of which to claim.\n * @param tokens - An array of ERC20 token addresses to be claimed.\n * @return An array of the amounts of each token in `tokens` sent to `user` as a result of claiming.\n */\n function claimTokens(address user, IERC20[] calldata tokens)\n external\n override\n nonReentrant\n optionalOnlyCaller(user)\n returns (uint256[] memory)\n {\n _checkpointTotalSupply();\n _checkpointUserBalance(user);\n\n uint256 tokensLength = tokens.length;\n uint256[] memory amounts = new uint256[](tokensLength);\n for (uint256 i = 0; i < tokensLength; ++i) {\n _checkpointToken(tokens[i], false);\n amounts[i] = _claimToken(user, tokens[i]);\n }\n\n return amounts;\n }\n\n // Internal functions\n\n /**\n * @dev It is required that both the global, token and user state have been properly checkpointed\n * before calling this function.\n */\n function _claimToken(address user, IERC20 token) internal returns (uint256) {\n TokenState storage tokenState = _tokenState[token];\n uint256 nextUserTokenWeekToClaim = _getUserTokenTimeCursor(user, token);\n\n // The first week which cannot be correctly claimed is the earliest of:\n // - A) The global or user time cursor (whichever is earliest), rounded up to the end of the week.\n // - B) The token time cursor, rounded down to the beginning of the week.\n //\n // This prevents the two failure modes:\n // - A) A user may claim a week for which we have not processed their balance, resulting in tokens being locked.\n // - B) A user may claim a week which then receives more tokens to be distributed. However the user has\n // already claimed for that week so their share of these new tokens are lost.\n uint256 firstUnclaimableWeek = Math.min(\n _roundUpTimestamp(Math.min(_timeCursor, _userState[user].timeCursor)),\n _roundDownTimestamp(tokenState.timeCursor)\n );\n\n mapping(uint256 => uint256) storage tokensPerWeek = _tokensPerWeek[token];\n mapping(uint256 => uint256) storage userBalanceAtTimestamp = _userBalanceAtTimestamp[user];\n\n uint256 amount;\n for (uint256 i = 0; i < 20; ++i) {\n // We clearly cannot claim for `firstUnclaimableWeek` and so we break here.\n if (nextUserTokenWeekToClaim >= firstUnclaimableWeek) break;\n\n amount +=\n (tokensPerWeek[nextUserTokenWeekToClaim] * userBalanceAtTimestamp[nextUserTokenWeekToClaim]) /\n _veSupplyCache[nextUserTokenWeekToClaim];\n nextUserTokenWeekToClaim += 1 weeks;\n }\n // Update the stored user-token time cursor to prevent this user claiming this week again.\n _userTokenTimeCursor[user][token] = nextUserTokenWeekToClaim;\n\n if (amount > 0) {\n // For a token to be claimable it must have been added to the cached balance so this is safe.\n tokenState.cachedBalance = uint128(tokenState.cachedBalance - amount);\n token.safeTransfer(user, amount);\n emit TokensClaimed(user, token, amount, nextUserTokenWeekToClaim);\n }\n\n return amount;\n }\n\n /**\n * @dev Calculate the amount of `token` to be distributed to `_votingEscrow` holders since the last checkpoint.\n */\n function _checkpointToken(IERC20 token, bool force) internal {\n TokenState storage tokenState = _tokenState[token];\n uint256 lastTokenTime = tokenState.timeCursor;\n uint256 timeSinceLastCheckpoint;\n if (lastTokenTime == 0) {\n // If it's the first time we're checkpointing this token then start distributing from now.\n // Also mark at which timestamp users should start attempts to claim this token from.\n lastTokenTime = block.timestamp;\n tokenState.startTime = uint64(_roundDownTimestamp(block.timestamp));\n\n // Prevent someone from assigning tokens to an inaccessible week.\n require(block.timestamp > _startTime, \"Fee distribution has not started yet\");\n } else {\n timeSinceLastCheckpoint = block.timestamp - lastTokenTime;\n\n if (!force) {\n // Checkpointing N times within a single week is completely equivalent to checkpointing once at the end.\n // We then want to get as close as possible to a single checkpoint every Wed 23:59 UTC to save gas.\n\n // We then skip checkpointing if we're in the same week as the previous checkpoint.\n bool alreadyCheckpointedThisWeek = _roundDownTimestamp(block.timestamp) ==\n _roundDownTimestamp(lastTokenTime);\n // However we want to ensure that all of this week's fees are assigned to the current week without\n // overspilling into the next week. To mitigate this, we checkpoint if we're near the end of the week.\n bool nearingEndOfWeek = _roundUpTimestamp(block.timestamp) - block.timestamp < 1 days;\n\n // This ensures that we checkpoint once at the beginning of the week and again for each user interaction\n // towards the end of the week to give an accurate final reading of the balance.\n if (alreadyCheckpointedThisWeek && !nearingEndOfWeek) {\n return;\n }\n }\n }\n\n tokenState.timeCursor = uint64(block.timestamp);\n\n uint256 tokenBalance = token.balanceOf(address(this));\n uint256 newTokensToDistribute = tokenBalance.sub(tokenState.cachedBalance);\n if (newTokensToDistribute == 0) return;\n require(tokenBalance <= type(uint128).max, \"Maximum token balance exceeded\");\n tokenState.cachedBalance = uint128(tokenBalance);\n\n uint256 firstIncompleteWeek = _roundDownTimestamp(lastTokenTime);\n uint256 nextWeek = 0;\n\n // Distribute `newTokensToDistribute` evenly across the time period from `lastTokenTime` to now.\n // These tokens are assigned to weeks proportionally to how much of this period falls into each week.\n mapping(uint256 => uint256) storage tokensPerWeek = _tokensPerWeek[token];\n for (uint256 i = 0; i < 20; ++i) {\n // This is safe as we're incrementing a timestamp.\n nextWeek = firstIncompleteWeek + 1 weeks;\n if (block.timestamp < nextWeek) {\n // `firstIncompleteWeek` is now the beginning of the current week, i.e. this is the final iteration.\n if (timeSinceLastCheckpoint == 0 && block.timestamp == lastTokenTime) {\n tokensPerWeek[firstIncompleteWeek] += newTokensToDistribute;\n } else {\n // block.timestamp >= lastTokenTime by definition.\n tokensPerWeek[firstIncompleteWeek] +=\n (newTokensToDistribute * (block.timestamp - lastTokenTime)) /\n timeSinceLastCheckpoint;\n }\n // As we've caught up to the present then we should now break.\n break;\n } else {\n // We've gone a full week or more without checkpointing so need to distribute tokens to previous weeks.\n if (timeSinceLastCheckpoint == 0 && nextWeek == lastTokenTime) {\n // It shouldn't be possible to enter this block\n tokensPerWeek[firstIncompleteWeek] += newTokensToDistribute;\n } else {\n // nextWeek > lastTokenTime by definition.\n tokensPerWeek[firstIncompleteWeek] +=\n (newTokensToDistribute * (nextWeek - lastTokenTime)) /\n timeSinceLastCheckpoint;\n }\n }\n\n // We've now \"checkpointed\" up to the beginning of next week so must update timestamps appropriately.\n lastTokenTime = nextWeek;\n firstIncompleteWeek = nextWeek;\n }\n\n emit TokenCheckpointed(token, newTokensToDistribute, lastTokenTime);\n }\n\n /**\n * @dev Cache the `user`'s balance of `_votingEscrow` at the beginning of each new week\n */\n function _checkpointUserBalance(address user) internal {\n uint256 maxUserEpoch = _votingEscrow.user_point_epoch(user);\n\n // If user has no epochs then they have never locked veBAL.\n // They clearly will not then receive fees.\n if (maxUserEpoch == 0) return;\n\n UserState storage userState = _userState[user];\n\n // `nextWeekToCheckpoint` represents the timestamp of the beginning of the first week\n // which we haven't checkpointed the user's VotingEscrow balance yet.\n uint256 nextWeekToCheckpoint = userState.timeCursor;\n\n uint256 userEpoch;\n if (nextWeekToCheckpoint == 0) {\n // First checkpoint for user so need to do the initial binary search\n userEpoch = _findTimestampUserEpoch(user, _startTime, 0, maxUserEpoch);\n } else {\n if (nextWeekToCheckpoint >= block.timestamp) {\n // User has checkpointed the current week already so perform early return.\n // This prevents a user from processing epochs created later in this week, however this is not an issue\n // as if a significant number of these builds up then the user will skip past them with a binary search.\n return;\n }\n\n // Otherwise use the value saved from last time\n userEpoch = userState.lastEpochCheckpointed;\n\n // This optimizes a scenario common for power users, which have frequent `VotingEscrow` interactions in\n // the same week. We assume that any such user is also claiming fees every week, and so we only perform\n // a binary search here rather than integrating it into the main search algorithm, effectively skipping\n // most of the week's irrelevant checkpoints.\n // The slight tradeoff is that users who have multiple infrequent `VotingEscrow` interactions and also don't\n // claim frequently will also perform the binary search, despite it not leading to gas savings.\n if (maxUserEpoch - userEpoch > 20) {\n userEpoch = _findTimestampUserEpoch(user, nextWeekToCheckpoint, userEpoch, maxUserEpoch);\n }\n }\n\n // Epoch 0 is always empty so bump onto the next one so that we start on a valid epoch.\n if (userEpoch == 0) {\n userEpoch = 1;\n }\n\n IVotingEscrow.Point memory nextUserPoint = _votingEscrow.user_point_history(user, userEpoch);\n\n // If this is the first checkpoint for the user, calculate the first week they're eligible for.\n // i.e. the timestamp of the first Thursday after they locked.\n // If this is earlier then the first distribution then fast forward to then.\n if (nextWeekToCheckpoint == 0) {\n // Disallow checkpointing before `startTime`.\n require(block.timestamp > _startTime, \"Fee distribution has not started yet\");\n nextWeekToCheckpoint = Math.max(_startTime, _roundUpTimestamp(nextUserPoint.ts));\n userState.startTime = uint64(nextWeekToCheckpoint);\n }\n\n // It's safe to increment `userEpoch` and `nextWeekToCheckpoint` in this loop as epochs and timestamps\n // are always much smaller than 2^256 and are being incremented by small values.\n IVotingEscrow.Point memory currentUserPoint;\n for (uint256 i = 0; i < 50; ++i) {\n if (nextWeekToCheckpoint >= nextUserPoint.ts && userEpoch <= maxUserEpoch) {\n // The week being considered is contained in a user epoch after that described by `currentUserPoint`.\n // We then shift `nextUserPoint` into `currentUserPoint` and query the Point for the next user epoch.\n // We do this in order to step though epochs until we find the first epoch starting after\n // `nextWeekToCheckpoint`, making the previous epoch the one that contains `nextWeekToCheckpoint`.\n userEpoch += 1;\n currentUserPoint = nextUserPoint;\n if (userEpoch > maxUserEpoch) {\n nextUserPoint = IVotingEscrow.Point(0, 0, 0, 0);\n } else {\n nextUserPoint = _votingEscrow.user_point_history(user, userEpoch);\n }\n } else {\n // The week being considered lies inside the user epoch described by `oldUserPoint`\n // we can then use it to calculate the user's balance at the beginning of the week.\n if (nextWeekToCheckpoint >= block.timestamp) {\n // Break if we're trying to cache the user's balance at a timestamp in the future.\n // We only perform this check here to ensure that we can still process checkpoints created\n // in the current week.\n break;\n }\n\n int128 dt = int128(nextWeekToCheckpoint - currentUserPoint.ts);\n uint256 userBalance = currentUserPoint.bias > currentUserPoint.slope * dt\n ? uint256(currentUserPoint.bias - currentUserPoint.slope * dt)\n : 0;\n\n // User's lock has expired and they haven't relocked yet.\n if (userBalance == 0 && userEpoch > maxUserEpoch) {\n nextWeekToCheckpoint = _roundUpTimestamp(block.timestamp);\n break;\n }\n\n // User had a nonzero lock and so is eligible to collect fees.\n _userBalanceAtTimestamp[user][nextWeekToCheckpoint] = userBalance;\n\n nextWeekToCheckpoint += 1 weeks;\n }\n }\n\n // We subtract off 1 from the userEpoch to step back once so that on the next attempt to checkpoint\n // the current `currentUserPoint` will be loaded as `nextUserPoint`. This ensures that we can't skip over the\n // user epoch containing `nextWeekToCheckpoint`.\n // userEpoch > 0 so this is safe.\n userState.lastEpochCheckpointed = uint64(userEpoch - 1);\n userState.timeCursor = uint64(nextWeekToCheckpoint);\n }\n\n /**\n * @dev Cache the totalSupply of VotingEscrow token at the beginning of each new week\n */\n function _checkpointTotalSupply() internal {\n uint256 nextWeekToCheckpoint = _timeCursor;\n uint256 weekStart = _roundDownTimestamp(block.timestamp);\n\n // We expect `timeCursor == weekStart + 1 weeks` when fully up to date.\n if (nextWeekToCheckpoint > weekStart || weekStart == block.timestamp) {\n // We've already checkpointed up to this week so perform early return\n return;\n }\n\n _votingEscrow.checkpoint();\n\n // Step through the each week and cache the total supply at beginning of week on this contract\n for (uint256 i = 0; i < 20; ++i) {\n if (nextWeekToCheckpoint > weekStart) break;\n\n _veSupplyCache[nextWeekToCheckpoint] = _votingEscrow.totalSupply(nextWeekToCheckpoint);\n\n // This is safe as we're incrementing a timestamp\n nextWeekToCheckpoint += 1 weeks;\n }\n // Update state to the end of the current week (`weekStart` + 1 weeks)\n _timeCursor = nextWeekToCheckpoint;\n }\n\n // Helper functions\n\n /**\n * @dev Wrapper around `_userTokenTimeCursor` which returns the start timestamp for `token`\n * if `user` has not attempted to interact with it previously.\n */\n function _getUserTokenTimeCursor(address user, IERC20 token) internal view returns (uint256) {\n uint256 userTimeCursor = _userTokenTimeCursor[user][token];\n if (userTimeCursor > 0) return userTimeCursor;\n // This is the first time that the user has interacted with this token.\n // We then start from the latest out of either when `user` first locked veBAL or `token` was first checkpointed.\n return Math.max(_userState[user].startTime, _tokenState[token].startTime);\n }\n\n /**\n * @dev Return the user epoch number for `user` corresponding to the provided `timestamp`\n */\n function _findTimestampUserEpoch(\n address user,\n uint256 timestamp,\n uint256 minUserEpoch,\n uint256 maxUserEpoch\n ) internal view returns (uint256) {\n uint256 min = minUserEpoch;\n uint256 max = maxUserEpoch;\n\n // Perform binary search through epochs to find epoch containing `timestamp`\n for (uint256 i = 0; i < 128; ++i) {\n if (min >= max) break;\n\n // Algorithm assumes that inputs are less than 2^128 so this operation is safe.\n // +2 avoids getting stuck in min == mid < max\n uint256 mid = (min + max + 2) / 2;\n IVotingEscrow.Point memory pt = _votingEscrow.user_point_history(user, mid);\n if (pt.ts <= timestamp) {\n min = mid;\n } else {\n // max > min so this is safe.\n max = mid - 1;\n }\n }\n return min;\n }\n\n /**\n * @dev Rounds the provided timestamp down to the beginning of the previous week (Thurs 00:00 UTC)\n */\n function _roundDownTimestamp(uint256 timestamp) private pure returns (uint256) {\n // Division by zero or overflows are impossible here.\n return (timestamp / 1 weeks) * 1 weeks;\n }\n\n /**\n * @dev Rounds the provided timestamp up to the beginning of the next week (Thurs 00:00 UTC)\n */\n function _roundUpTimestamp(uint256 timestamp) private pure returns (uint256) {\n // Overflows are impossible here for all realistic inputs.\n return _roundDownTimestamp(timestamp + 1 weeks - 1);\n }\n}\n"},"contracts/gauges/arbitrum/ArbitrumRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"../StakelessGauge.sol\";\nimport \"./IGatewayRouter.sol\";\n\ncontract ArbitrumRootGauge is StakelessGauge {\n using SafeERC20 for IERC20;\n\n address private immutable _gateway;\n IGatewayRouter private immutable _gatewayRouter;\n IArbitrumFeeProvider private immutable _factory;\n\n address private _recipient;\n\n constructor(IMainnetBalancerMinter minter, IGatewayRouter gatewayRouter) StakelessGauge(minter) {\n _gateway = gatewayRouter.getGateway(address(minter.getBalancerToken()));\n _gatewayRouter = gatewayRouter;\n _factory = IArbitrumFeeProvider(msg.sender);\n }\n\n function initialize(address recipient, uint256 relativeWeightCap) external {\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n }\n\n function getRecipient() external view override returns (address) {\n return _recipient;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n // Token needs to be approved on the gateway NOT the gateway router\n _balToken.safeApprove(_gateway, mintAmount);\n\n (uint256 gasLimit, uint256 gasPrice, uint256 maxSubmissionCost) = _factory.getArbitrumFees();\n uint256 totalBridgeCost = _getTotalBridgeCost(gasLimit, gasPrice, maxSubmissionCost);\n require(msg.value == totalBridgeCost, \"Incorrect msg.value passed\");\n\n // After bridging, the BAL should arrive on Arbitrum within 10 minutes. If it\n // does not, the L2 transaction may have failed due to an insufficient amount\n // within `max_submission_cost + (gas_limit * gas_price)`\n // In this case, the transaction can be manually broadcasted on Arbitrum by calling\n // `ArbRetryableTicket(0x000000000000000000000000000000000000006e).redeem(redemption-TxID)`\n // The calldata for this manual transaction is easily obtained by finding the reverted\n // transaction in the tx history for 0x000000000000000000000000000000000000006e on Arbiscan.\n // https://developer.offchainlabs.com/docs/l1_l2_messages#retryable-transaction-lifecycle\n _gatewayRouter.outboundTransfer{ value: totalBridgeCost }(\n _balToken,\n _recipient,\n mintAmount,\n gasLimit,\n gasPrice,\n abi.encode(maxSubmissionCost, \"\")\n );\n }\n\n function getTotalBridgeCost() external view override returns (uint256) {\n (uint256 gasLimit, uint256 gasPrice, uint256 maxSubmissionCost) = _factory.getArbitrumFees();\n return _getTotalBridgeCost(gasLimit, gasPrice, maxSubmissionCost);\n }\n\n function _getTotalBridgeCost(\n uint256 gasLimit,\n uint256 gasPrice,\n uint256 maxSubmissionCost\n ) internal pure returns (uint256) {\n return gasLimit * gasPrice + maxSubmissionCost;\n }\n}\n"},"contracts/gauges/arbitrum/ArbitrumRootGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./ArbitrumRootGauge.sol\";\n\ncontract ArbitrumRootGaugeFactory is IArbitrumFeeProvider, BaseGaugeFactory, SingletonAuthentication {\n uint64 private _gasLimit;\n uint64 private _gasPrice;\n uint64 private _maxSubmissionCost;\n\n event ArbitrumFeesModified(uint256 gasLimit, uint256 gasPrice, uint256 maxSubmissionCost);\n\n constructor(\n IVault vault,\n IMainnetBalancerMinter minter,\n IGatewayRouter gatewayRouter,\n uint64 gasLimit,\n uint64 gasPrice,\n uint64 maxSubmissionCost\n ) BaseGaugeFactory(address(new ArbitrumRootGauge(minter, gatewayRouter))) SingletonAuthentication(vault) {\n _gasLimit = gasLimit;\n _gasPrice = gasPrice;\n _maxSubmissionCost = maxSubmissionCost;\n }\n\n /**\n * @notice Set the fees for the Arbitrum side of the bridging transaction\n */\n function getArbitrumFees()\n external\n view\n override\n returns (\n uint256 gasLimit,\n uint256 gasPrice,\n uint256 maxSubmissionCost\n )\n {\n gasLimit = _gasLimit;\n gasPrice = _gasPrice;\n maxSubmissionCost = _maxSubmissionCost;\n }\n\n /**\n * @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Arbitrum.\n * @dev Care must be taken to ensure that gauges deployed from this factory are\n * suitable before they are added to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @return The address of the deployed gauge\n */\n function create(address recipient, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n ArbitrumRootGauge(gauge).initialize(recipient, relativeWeightCap);\n return gauge;\n }\n\n /**\n * @notice Set the fees for the Arbitrum side of the bridging transaction\n */\n function setArbitrumFees(\n uint64 gasLimit,\n uint64 gasPrice,\n uint64 maxSubmissionCost\n ) external override authenticate {\n _gasLimit = gasLimit;\n _gasPrice = gasPrice;\n _maxSubmissionCost = maxSubmissionCost;\n emit ArbitrumFeesModified(gasLimit, gasPrice, maxSubmissionCost);\n }\n}\n"},"contracts/gauges/arbitrum/IGatewayRouter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IGatewayRouter {\n function outboundTransfer(\n IERC20 token,\n address recipient,\n uint256 amount,\n uint256 gasLimit,\n uint256 gasPrice,\n bytes calldata data\n ) external payable;\n\n function getGateway(address token) external view returns (address gateway);\n}\n"},"contracts/gauges/avalanche/AvalancheRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"./AvalancheRootGaugeLib.sol\";\nimport \"../StakelessGauge.sol\";\n\n/// @dev Partial interface for LayerZero BAL proxy.\ninterface ILayerZeroBALProxy {\n struct LzCallParams {\n address payable refundAddress;\n address zroPaymentAddress;\n bytes adapterParams;\n }\n\n /// @dev Returns packet type to be used in adapter params. It is a constant set to 0.\n // solhint-disable-next-line func-name-mixedcase\n function PT_SEND() external pure returns (uint8);\n\n /// @dev Returns minimum gas limit required for the target `chainId` and `packetType`.\n function minDstGasLookup(uint16 chainId, uint16 packetType) external view returns (uint256);\n\n /// @dev Returns true if custom adapter parameters are activated in the proxy.\n function useCustomAdapterParams() external view returns (bool);\n\n /// @dev Returns the address of the underlying ERC20 token.\n function token() external view returns (address);\n\n /**\n * @dev Estimate fee for sending token `_tokenId` to (`_dstChainId`, `_toAddress`).\n * @param _dstChainId L0 defined chain id to send tokens to.\n * @param _toAddress dynamic bytes array with the address you are sending tokens to on dstChain.\n * @param _amount amount of the tokens to transfer.\n * @param _useZro indicates to use zro to pay L0 fees.\n * @param _adapterParams flexible bytes array to indicate messaging adapter services in L0.\n */\n function estimateSendFee(\n uint16 _dstChainId,\n bytes32 _toAddress,\n uint256 _amount,\n bool _useZro,\n bytes calldata _adapterParams\n ) external view returns (uint256 nativeFee, uint256 zroFee);\n\n /**\n * @dev Send `_amount` amount of token to (`_dstChainId`, `_toAddress`) from `_from`.\n * @param _from the token owner.\n * @param _dstChainId the destination chain identifier.\n * @param _toAddress can be any size depending on the `dstChainId`.\n * @param _amount the quantity of tokens in wei.\n * @param _minAmount the minimum amount of tokens to receive on dstChain.\n * @param _callParams struct with custom options.\n * - refundAddress: the address LayerZero refunds if too much message fee is sent.\n * - zroPaymentAddress set to address(0x0) if not paying in ZRO (LayerZero Token).\n * - adapterParams is a flexible bytes array used to configure messaging adapter services.\n */\n function sendFrom(\n address _from,\n uint16 _dstChainId,\n bytes32 _toAddress,\n uint256 _amount,\n uint256 _minAmount,\n LzCallParams calldata _callParams\n ) external payable;\n\n /// @dev Returns the maximum allowed precision (decimals) for proxy transfers.\n function sharedDecimals() external returns (uint8);\n}\n\n/**\n * @notice Root Gauge for the Avalanche network.\n * @dev Uses LayerZero OFTv2 (Omni Fungible Token V2) proxy contracts to bridge BAL.\n * See https://layerzero.gitbook.io/docs/evm-guides/layerzero-omnichain-contracts/oft/oftv2 for reference.\n */\ncontract AvalancheRootGauge is StakelessGauge {\n using SafeERC20 for IERC20;\n\n // LayerZero uses proprietary chain IDs.\n // https://layerzero.gitbook.io/docs/technical-reference/mainnet/supported-chain-ids#avalanche\n uint16 private constant _AVALANCHE_LZ_CHAIN_ID = 106;\n\n // PT_SEND constant in proxy; replicated here for simplicity.\n // See https://layerzero.gitbook.io/docs/evm-guides/layerzero-tooling/wire-up-configuration.\n // and https://github.com/LayerZero-Labs/solidity-examples/blob/9134640fe5b618a047f365555e760c8736ebc162/contracts/token/oft/v2/OFTCoreV2.sol#L17.\n // solhint-disable-previous-line max-line-length\n uint16 private constant _SEND_PACKET_TYPE = 0;\n\n // https://layerzero.gitbook.io/docs/evm-guides/advanced/relayer-adapter-parameters\n uint16 private constant _ADAPTER_PARAMS_VERSION = 1;\n\n ILayerZeroBALProxy private immutable _lzBALProxy;\n\n // The proxy will truncate the amounts to send using this value, as it does not support 18 decimals.\n // Any amount to send is truncated to this number, which depends on the shared decimals in the proxy.\n // See https://layerzero.gitbook.io/docs/evm-guides/layerzero-omnichain-contracts/oft/oft-v1-vs-oftv2-which-should-i-use#what-are-the-differences-between-the-two-versions\n // solhint-disable-previous-line max-line-length\n uint256 private immutable _minimumBridgeAmount;\n\n // This value is kept in storage and not made immutable to allow for this contract to be proxyable\n address private _recipient;\n\n /**\n * @dev Must be deployed by the AvalancheRootGaugeFactory, or other contract that implements\n * `IAvalancheBridgeLimitsProvider`.\n */\n constructor(IMainnetBalancerMinter minter, ILayerZeroBALProxy lzBALProxy) StakelessGauge(minter) {\n _lzBALProxy = lzBALProxy;\n uint8 decimalDifference = ERC20(address(minter.getBalancerToken())).decimals() - lzBALProxy.sharedDecimals();\n _minimumBridgeAmount = 10**decimalDifference;\n }\n\n function initialize(address recipient, uint256 relativeWeightCap) external {\n // Sanity check that the underlying token of the minter is the same we've wrapped for Avalanche.\n require(_lzBALProxy.token() == address(_balToken), \"Invalid Wrapper Token\");\n\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n }\n\n /// @inheritdoc IStakelessGauge\n function getRecipient() public view override returns (address) {\n return _recipient;\n }\n\n /// @dev Return the Layer Zero proxy contract for the underlying BAL token.\n function getBALProxy() external view returns (address) {\n return address(_lzBALProxy);\n }\n\n /**\n * @dev Returns the minimum amount of tokens that can be bridged.\n * Values lower than this one will not even be transferred to the proxy.\n */\n function getMinimumBridgeAmount() public view returns (uint256) {\n return _minimumBridgeAmount;\n }\n\n /// @inheritdoc IStakelessGauge\n function getTotalBridgeCost() public view override returns (uint256) {\n return _getTotalBridgeCost(_getAdapterParams());\n }\n\n function _getTotalBridgeCost(bytes memory adapterParams) internal view returns (uint256) {\n // Estimate fee does not depend on the amount to bridge.\n // We just set it to 0 so that we can have the same external interface across other gauges that require ETH.\n (uint256 nativeFee, ) = _lzBALProxy.estimateSendFee(\n _AVALANCHE_LZ_CHAIN_ID,\n AvalancheRootGaugeLib.bytes32Recipient(getRecipient()),\n 0,\n false,\n adapterParams\n );\n\n return nativeFee;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n uint256 amountWithoutDust = AvalancheRootGaugeLib.removeDust(mintAmount, _minimumBridgeAmount);\n // If there is nothing to bridge, we return early.\n if (amountWithoutDust == 0) {\n return;\n }\n\n bytes memory adapterParams = _getAdapterParams();\n uint256 totalBridgeCost = _getTotalBridgeCost(adapterParams);\n\n require(msg.value == totalBridgeCost, \"Incorrect msg.value passed\");\n\n // The underlying token will be transferred, and must be approved.\n _balToken.safeApprove(address(_lzBALProxy), mintAmount);\n\n // Progress and results can be monitored using the Layer Zero scanner: https://layerzeroscan.com/\n // The BAL proxy uses less than 18 decimals, so any amount with greater precision than the supported one will\n // be truncated.\n // This is why we remove \"dust\" the same way the proxy does to provide an appropriate minimum amount and\n // ensure the transfer does not revert.\n // This assumes that there is no fee for the token, neither in the proxy (which can be set by governance, but\n // it is not expected to happen ever), nor for the token transfer itself (the BAL token does not take a cut\n // in `transferFrom`, so it is OK).\n _lzBALProxy.sendFrom{ value: totalBridgeCost }(\n address(this),\n _AVALANCHE_LZ_CHAIN_ID,\n AvalancheRootGaugeLib.bytes32Recipient(getRecipient()),\n mintAmount,\n amountWithoutDust,\n ILayerZeroBALProxy.LzCallParams(payable(msg.sender), address(0), adapterParams)\n );\n }\n\n function _getAdapterParams() internal view returns (bytes memory) {\n // Adapter params should either encode the minimum destination gas if custom parameters are used, or be\n // an empty bytes array otherwise.\n // See https://layerzero.gitbook.io/docs/evm-guides/advanced/relayer-adapter-parameters\n // These lines were reverse-engineered from the BAL proxy and its dependencies (LZ endpoint and relayer).\n\n // solhint-disable max-line-length\n // See https://github.com/LayerZero-Labs/LayerZero/blob/48c21c3921931798184367fc02d3a8132b041942/contracts/RelayerV2.sol#L104-L112\n // https://github.com/LayerZero-Labs/solidity-examples/blob/8e00603ae03995622d643722d6d194f830774208/contracts/token/oft/v2/OFTCoreV2.sol#L178-L179\n // https://github.com/LayerZero-Labs/solidity-examples/blob/8e00603ae03995622d643722d6d194f830774208/contracts/lzApp/LzApp.sol#L57-L58\n // solhint-enable max-line-length\n if (_lzBALProxy.useCustomAdapterParams()) {\n uint256 minDstGas = _lzBALProxy.minDstGasLookup(_AVALANCHE_LZ_CHAIN_ID, _SEND_PACKET_TYPE);\n return abi.encodePacked(_ADAPTER_PARAMS_VERSION, minDstGas);\n } else {\n return bytes(\"\");\n }\n }\n}\n"},"contracts/gauges/avalanche/AvalancheRootGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./AvalancheRootGauge.sol\";\n\ncontract AvalancheRootGaugeFactory is BaseGaugeFactory, SingletonAuthentication {\n constructor(\n IVault vault,\n IMainnetBalancerMinter minter,\n ILayerZeroBALProxy lzBALProxy\n ) BaseGaugeFactory(address(new AvalancheRootGauge(minter, lzBALProxy))) SingletonAuthentication(vault) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Avalanche.\n * @dev Care must be taken to ensure that gauges deployed from this factory are suitable before they are added\n * to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @return The address of the deployed gauge\n */\n function create(address recipient, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n AvalancheRootGauge(gauge).initialize(recipient, relativeWeightCap);\n return gauge;\n }\n}\n"},"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nlibrary AvalancheRootGaugeLib {\n /// @dev Truncates given amount to the maximum allowed precision.\n function removeDust(uint256 amount, uint256 dustModulo) internal pure returns (uint256) {\n uint256 dust = amount % dustModulo;\n return amount - dust;\n }\n\n /// @dev Returns given address as bytes32, padded with zeroes to the left.\n function bytes32Recipient(address recipient) internal pure returns (bytes32) {\n return bytes32(uint256(uint160(recipient)));\n }\n}\n"},"contracts/gauges/base/BaseRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"../StakelessGauge.sol\";\n\ncontract BaseRootGauge is StakelessGauge {\n using SafeERC20 for IERC20;\n\n // Unlike on Optimism, on Base we do not need to maintain a dynamic gas limit in the factory to pass along\n // on calls to the bridge.\n //\n // The gas limit on L2 is computed based in part upon the _MIN_GAS_LIMIT passed in on the bridge call.\n // However, this value has a \"floor\" of RELAY_CONSTANT_OVERHEAD, set to 200_000. Since this floor is already\n // twice the gas actually required to simply mint BAL, we can just pass in 0 for `_minGasLimit`, and the full\n // computation will yield a total gas limit of around 288k.\n //\n // This parameter is provided for non-standard bridge tokens, or other unforeseen edge cases where more gas\n // might be required. We do not need it for our simple, conforming token.\n // solhint-disable-next-line max-line-length\n // See https://github.com/ethereum-optimism/optimism/blob/595d5916e568ee4fcff5cb8d236a05361a50a881/packages/contracts-bedrock/src/universal/CrossDomainMessenger.sol#L331\n uint32 private constant _MIN_GAS_LIMIT = 0;\n\n IL1StandardBridge private immutable _baseL1StandardBridge;\n\n // solhint-disable-next-line max-line-length\n // The original BAL token was redeployed; explanation here: https://github.com/balancer/balancer-deployments/pull/77#issue-1848405451\n address private immutable _baseBal;\n\n // This value is kept in storage and not made immutable to allow for this contract to be proxyable\n address private _recipient;\n\n constructor(\n IMainnetBalancerMinter minter,\n IL1StandardBridge baseL1StandardBridge,\n address baseBal\n ) StakelessGauge(minter) {\n _baseL1StandardBridge = baseL1StandardBridge;\n _baseBal = baseBal;\n }\n\n function initialize(address recipient, uint256 relativeWeightCap) external {\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n }\n\n function getRecipient() external view override returns (address) {\n return _recipient;\n }\n\n function getBaseL1StandardBridge() external view returns (IL1StandardBridge) {\n return _baseL1StandardBridge;\n }\n\n function getBaseBal() external view returns (address) {\n return _baseBal;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n _balToken.safeApprove(address(_baseL1StandardBridge), mintAmount);\n\n // This will transfer BAL to `_recipient` on the Base chain\n _baseL1StandardBridge.depositERC20To(address(_balToken), _baseBal, _recipient, mintAmount, _MIN_GAS_LIMIT, \"\");\n }\n}\n"},"contracts/gauges/base/BaseRootGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./BaseRootGauge.sol\";\n\ncontract BaseRootGaugeFactory is BaseGaugeFactory, SingletonAuthentication {\n constructor(\n IVault vault,\n IMainnetBalancerMinter minter,\n IL1StandardBridge baseL1StandardBridge,\n address baseBal\n )\n BaseGaugeFactory(address(new BaseRootGauge(minter, baseL1StandardBridge, baseBal)))\n SingletonAuthentication(vault)\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Optimism.\n * @dev Care must be taken to ensure that gauges deployed from this factory are\n * suitable before they are added to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @return The address of the deployed gauge\n */\n function create(address recipient, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n BaseRootGauge(gauge).initialize(recipient, relativeWeightCap);\n return gauge;\n }\n}\n"},"contracts/gauges/BaseGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\";\n\nabstract contract BaseGaugeFactory is ILiquidityGaugeFactory {\n address private _gaugeImplementation;\n\n mapping(address => bool) private _isGaugeFromFactory;\n\n event GaugeCreated(address indexed gauge);\n\n constructor(address gaugeImplementation) {\n _gaugeImplementation = gaugeImplementation;\n }\n\n /**\n * @notice Returns the address of the implementation used for gauge deployments.\n */\n function getGaugeImplementation() public view returns (address) {\n return _gaugeImplementation;\n }\n\n /**\n * @notice Returns true if `gauge` was created by this factory.\n */\n function isGaugeFromFactory(address gauge) external view override returns (bool) {\n return _isGaugeFromFactory[gauge];\n }\n\n /**\n * @dev Deploys a new gauge as a proxy of the implementation in storage.\n * The deployed gauge must be initialized by the caller method.\n * @return The address of the deployed gauge\n */\n function _create() internal returns (address) {\n address gauge = Clones.clone(_gaugeImplementation);\n\n _isGaugeFromFactory[gauge] = true;\n emit GaugeCreated(gauge);\n\n return gauge;\n }\n}\n"},"contracts/gauges/ChildChainGaugeCheckpointer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\";\n\nimport { ChildChainGaugeRegistry } from \"./ChildChainGaugeRegistry.sol\";\n\n/**\n * @title ChildChainGaugeCheckpointer\n * @notice Checkpointer for all child chain gauges.\n * This contract calls `user_checkpoint` function on every child chain gauge during onVeBalBridged callback.\n */\ncontract ChildChainGaugeCheckpointer is IL2LayerZeroDelegation {\n ChildChainGaugeRegistry private immutable _childChainGaugeRegistry;\n\n constructor(ChildChainGaugeRegistry childChainGaugeRegistry) {\n _childChainGaugeRegistry = childChainGaugeRegistry;\n }\n\n /// @inheritdoc IL2LayerZeroDelegation\n function onVeBalBridged(address user) external override {\n uint256 totalGauges = _childChainGaugeRegistry.totalGauges();\n IChildChainGauge[] memory gauges = _childChainGaugeRegistry.getGauges(0, totalGauges);\n for (uint256 i = 0; i < totalGauges; i++) {\n gauges[i].user_checkpoint(user);\n }\n }\n\n /// @inheritdoc IL2LayerZeroDelegation\n function onVeBalSupplyUpdate() external override {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n"},"contracts/gauges/ChildChainGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\";\n\nimport \"./BaseGaugeFactory.sol\";\n\ncontract ChildChainGaugeFactory is Version, BaseGaugeFactory {\n string private _productVersion;\n\n constructor(\n IChildChainGauge gaugeImplementation,\n string memory factoryVersion,\n string memory productVersion\n ) Version(factoryVersion) BaseGaugeFactory(address(gaugeImplementation)) {\n require(\n keccak256(abi.encodePacked(gaugeImplementation.version())) == keccak256(abi.encodePacked(productVersion)),\n \"VERSION_MISMATCH\"\n );\n _productVersion = productVersion;\n }\n\n /**\n * @notice Returns a JSON representation of the deployed gauge version containing name, version number and task ID.\n *\n * @dev This value will only be updated at factory creation time.\n */\n function getProductVersion() public view returns (string memory) {\n return _productVersion;\n }\n\n /**\n * @notice Deploys a new gauge for a Balancer pool.\n * @dev As anyone can register arbitrary Balancer pools with the Vault,\n * it's impossible to prove onchain that `pool` is a \"valid\" deployment.\n *\n * Care must be taken to ensure that gauges deployed from this factory are suitable to distribute rewards.\n *\n * It is possible to deploy multiple gauges for a single pool.\n * @param pool The address of the pool for which to deploy a gauge\n * @return The address of the deployed gauge\n */\n function create(address pool) external returns (address) {\n address gauge = _create();\n IChildChainGauge(gauge).initialize(pool, getProductVersion());\n return gauge;\n }\n}\n"},"contracts/gauges/ChildChainGaugeRegistry.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\n\nimport \"../L2BalancerPseudoMinter.sol\";\n\n/**\n * @title ChildChainGaugeRegistry\n * @notice Registry for all child chain gauges.\n * This contract enables the addition and removal of child chain gauges to the registry.\n * Duplication is not permitted. Gauges are verified to be valid.\n */\ncontract ChildChainGaugeRegistry is SingletonAuthentication, ReentrancyGuard {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n L2BalancerPseudoMinter private immutable _l2BalancerPseudoMinter;\n ILiquidityGaugeFactory private immutable _liquidityGaugeFactory;\n\n EnumerableSet.AddressSet private _gauges;\n\n event GaugeAdded(IChildChainGauge indexed gauge);\n event GaugeRemoved(IChildChainGauge indexed gauge);\n\n /**\n * @notice Constructor initializes the ChildChainGaugeRegistry contract.\n * @param l2BalancerPseudoMinter The L2 Balancer pseudo minter.\n * @param liquidityGaugeFactory The liquidity gauge factory.\n */\n constructor(L2BalancerPseudoMinter l2BalancerPseudoMinter, ILiquidityGaugeFactory liquidityGaugeFactory)\n SingletonAuthentication(l2BalancerPseudoMinter.getVault())\n {\n _l2BalancerPseudoMinter = l2BalancerPseudoMinter;\n _liquidityGaugeFactory = liquidityGaugeFactory;\n }\n\n /**\n * @notice Add a gauge to the registry after validating its legitimacy.\n * @dev This function checks that the gauge's factory is registered with the L2BalancerPseudoMinter,\n * and that the gauge has been deployed from the registered factory. If these conditions are met,\n * the gauge is added to the registry, and a GaugeAdded event is emitted.\n * @param gauge The gauge to add to the registry.\n */\n function addGauge(IChildChainGauge gauge) external authenticate nonReentrant {\n // Check that the gauge is valid\n // 1. The gauge's factory is registered with the L2BalancerPseudoMinter\n // 2. The gauge is deployed from the registered factory\n ILiquidityGaugeFactory factory = gauge.factory();\n require(_l2BalancerPseudoMinter.isValidGaugeFactory(factory), \"INVALID_GAUGE_FACTORY\");\n require(factory.isGaugeFromFactory(address(gauge)), \"GAUGE_NOT_FROM_FACTORY\");\n\n require(_gauges.add(address(gauge)), \"GAUGE_ALREADY_REGISTERED\");\n\n emit GaugeAdded(gauge);\n }\n\n /**\n * @notice Remove a registered gauge from the registry and emit a GaugeRemoved event.\n * @dev If the gauge is not registered, the function reverts with a \"GAUGE_NOT_REGISTERED\" error.\n * Remove a gauge might affect the order of the remaining gauges.\n * @param gauge The gauge to remove from the registry.\n */\n function removeGauge(IChildChainGauge gauge) external authenticate {\n require(_gauges.remove(address(gauge)), \"GAUGE_NOT_REGISTERED\");\n\n emit GaugeRemoved(gauge);\n }\n\n /**\n * @notice Retrieve the total number of gauges registered in the registry.\n * @return The total number of registered gauges as a uint256.\n */\n function totalGauges() external view returns (uint256) {\n return _gauges.length();\n }\n\n /**\n * @notice Retrieve a list of gauges within the specified index range from the registry.\n * @param startIndex The starting index (inclusive) for retrieving gauges from the registry.\n * @param endIndex The ending index (exclusive) for retrieving gauges from the registry.\n * @return An array of IChildChainGauge containing the gauges within the specified index range.\n */\n function getGauges(uint256 startIndex, uint256 endIndex) external view returns (IChildChainGauge[] memory) {\n require(startIndex < endIndex, \"INVALID_INDICES\");\n require(endIndex <= _gauges.length(), \"END_INDEX_OUT_OF_BOUNDS\");\n\n uint256 size = endIndex - startIndex;\n IChildChainGauge[] memory slicedGauges = new IChildChainGauge[](size);\n\n for (uint256 i = 0; i < size; i++) {\n slicedGauges[i] = IChildChainGauge(_gauges.at(startIndex + i));\n }\n\n return slicedGauges;\n }\n}\n"},"contracts/gauges/ChildChainGaugeRewardHelper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\";\n\n/**\n * @title ChildChainGaugeRewardHelper\n * @author Balancer Labs\n * @notice Helper contract which allows claiming rewards from many RewardsOnlyGauges in a single transaction.\n * This contract manually triggers an update to the gauges' streamers as a workaround for the gauge .\n */\ncontract ChildChainGaugeRewardHelper {\n uint256 public constant CLAIM_FREQUENCY = 3600;\n\n /**\n * @notice Returns the amount of ERC20 token `token` on RewardsOnlyGauge `gauge` claimable by address `user`.\n * @dev This function cannot be marked `view` as it updates the gauge's state (not possible in a view context).\n * Offchain users attempting to read from this function should manually perform a static call or modify the abi.\n * @param gauge - The address of the RewardsOnlyGauge for which to query.\n * @param user - The address of the user for which to query.\n * @param token - The address of the reward token for which to query.\n */\n function getPendingRewards(\n IRewardsOnlyGauge gauge,\n address user,\n address token\n ) external returns (uint256) {\n gauge.reward_contract().get_reward();\n return gauge.claimable_reward_write(user, token);\n }\n\n /**\n * @notice Claims pending rewards on RewardsOnlyGauge `gauge` for account `user`.\n * @param gauge - The address of the RewardsOnlyGauge from which to claim rewards.\n * @param user - The address of the user for which to claim rewards.\n */\n function claimRewardsFromGauge(IRewardsOnlyGauge gauge, address user) external {\n _claimRewardsFromGauge(gauge, user);\n }\n\n /**\n * @notice Claims pending rewards on a list of RewardsOnlyGauges `gauges` for account `user`.\n * @param gauges - An array of address of RewardsOnlyGauges from which to claim rewards.\n * @param user - The address of the user for which to claim rewards.\n */\n function claimRewardsFromGauges(IRewardsOnlyGauge[] calldata gauges, address user) external {\n for (uint256 i = 0; i < gauges.length; i++) {\n _claimRewardsFromGauge(gauges[i], user);\n }\n }\n\n // Internal functions\n\n function _claimRewardsFromGauge(IRewardsOnlyGauge gauge, address user) internal {\n // Force rewards from the streamer onto the gauge.\n gauge.reward_contract().get_reward();\n gauge.claim_rewards(user);\n }\n}\n"},"contracts/gauges/ChildChainLiquidityGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\";\n\ncontract ChildChainLiquidityGaugeFactory is IChildChainLiquidityGaugeFactory {\n // RewardsOnlyGauge expects the claim function selector to be left padded with zeros.\n // We then shift right 28 bytes so that the function selector (top 4 bytes) sits in the lowest 4 bytes.\n bytes32 private constant _CLAIM_SIG = keccak256(\"get_reward()\") >> (28 * 8);\n\n ILiquidityGauge private immutable _gaugeImplementation;\n IChildChainStreamer private immutable _childChainStreamerImplementation;\n\n mapping(address => bool) private _isGaugeFromFactory;\n mapping(address => bool) private _isStreamerFromFactory;\n mapping(address => address) private _poolGauge;\n mapping(address => address) private _gaugeStreamer;\n\n constructor(ILiquidityGauge gauge, IChildChainStreamer childChainStreamer) {\n _gaugeImplementation = gauge;\n _childChainStreamerImplementation = childChainStreamer;\n }\n\n /**\n * @notice Returns the address of the implementation used for gauge deployments.\n */\n function getGaugeImplementation() external view override returns (ILiquidityGauge) {\n return _gaugeImplementation;\n }\n\n /**\n * @notice Returns the address of the implementation used for streamer deployments.\n */\n function getChildChainStreamerImplementation() external view override returns (IChildChainStreamer) {\n return _childChainStreamerImplementation;\n }\n\n /**\n * @notice Returns the address of the gauge belonging to `pool`.\n */\n function getPoolGauge(address pool) public view override returns (ILiquidityGauge) {\n return ILiquidityGauge(_poolGauge[pool]);\n }\n\n /**\n * @notice Returns true if `gauge` was created by this factory.\n */\n function isGaugeFromFactory(address gauge) external view override returns (bool) {\n return _isGaugeFromFactory[gauge];\n }\n\n /**\n * @notice Returns the address of the streamer belonging to `gauge`.\n */\n function getGaugeStreamer(address gauge) public view override returns (address) {\n return _gaugeStreamer[gauge];\n }\n\n /**\n * @notice Returns true if `streamer` was created by this factory.\n */\n function isStreamerFromFactory(address streamer) external view override returns (bool) {\n return _isStreamerFromFactory[streamer];\n }\n\n /**\n * @notice Returns the address of the pool which `gauge` belongs.\n */\n function getGaugePool(address gauge) external view override returns (IERC20) {\n return IRewardsOnlyGauge(gauge).lp_token();\n }\n\n /**\n * @notice Returns the address of the streamer belonging to `pool`'s gauge.\n */\n function getPoolStreamer(address pool) external view override returns (address) {\n return getGaugeStreamer(address(getPoolGauge(pool)));\n }\n\n /**\n * @notice Deploys a new gauge for a Balancer pool.\n * @dev As anyone can register arbitrary Balancer pools with the Vault,\n * it's impossible to prove onchain that `pool` is a \"valid\" deployment.\n *\n * Care must be taken to ensure that gauges deployed from this factory are\n * suitable before they are added to the GaugeController.\n *\n * This factory disallows deploying multiple gauges for a single pool.\n * @param pool The address of the pool for which to deploy a gauge\n * @return The address of the deployed gauge\n */\n function create(address pool) external returns (address) {\n require(_poolGauge[pool] == address(0), \"Gauge already exists\");\n\n address gauge = Clones.clone(address(_gaugeImplementation));\n address streamer = Clones.clone(address(_childChainStreamerImplementation));\n\n IChildChainStreamer(streamer).initialize(gauge);\n IRewardsOnlyGauge(gauge).initialize(pool, streamer, _CLAIM_SIG);\n\n _isGaugeFromFactory[gauge] = true;\n _poolGauge[pool] = gauge;\n _gaugeStreamer[gauge] = streamer;\n emit RewardsOnlyGaugeCreated(gauge, pool, streamer);\n\n return gauge;\n }\n}\n"},"contracts/gauges/ethereum/LiquidityGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\";\n\nimport \"../BaseGaugeFactory.sol\";\n\ncontract LiquidityGaugeFactory is BaseGaugeFactory {\n constructor(IStakingLiquidityGauge gauge) BaseGaugeFactory(address(gauge)) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Deploys a new gauge for a Balancer pool.\n * @dev As anyone can register arbitrary Balancer pools with the Vault,\n * it's impossible to prove onchain that `pool` is a \"valid\" deployment.\n *\n * Care must be taken to ensure that gauges deployed from this factory are\n * suitable before they are added to the GaugeController.\n *\n * It is possible to deploy multiple gauges for a single pool.\n * @param pool The address of the pool for which to deploy a gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @return The address of the deployed gauge\n */\n function create(address pool, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n IStakingLiquidityGauge(gauge).initialize(pool, relativeWeightCap);\n return gauge;\n }\n}\n"},"contracts/gauges/ethereum/SingleRecipientGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"../StakelessGauge.sol\";\n\ncontract SingleRecipientGauge is Version, StakelessGauge {\n using SafeERC20 for IERC20;\n\n address private _recipient;\n bool private _feeDistributorRecipient;\n\n // The version of the implementation is irrelevant, so we use an empty string.\n // The actual gauge version will be set during initialization.\n constructor(IMainnetBalancerMinter minter) Version(\"\") StakelessGauge(minter) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function initialize(\n address recipient,\n uint256 relativeWeightCap,\n bool feeDistributorRecipient,\n string memory version\n ) external {\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n _feeDistributorRecipient = feeDistributorRecipient;\n _setVersion(version);\n }\n\n function getRecipient() public view override returns (address) {\n return _recipient;\n }\n\n function isRecipientFeeDistributor() public view returns (bool) {\n return _feeDistributorRecipient;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n address recipient = getRecipient();\n\n if (isRecipientFeeDistributor()) {\n _balToken.safeApprove(recipient, mintAmount);\n IFeeDistributor(recipient).depositToken(_balToken, mintAmount);\n } else {\n _balToken.safeTransfer(recipient, mintAmount);\n }\n }\n}\n"},"contracts/gauges/ethereum/SingleRecipientGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./SingleRecipientGauge.sol\";\n\ncontract SingleRecipientGaugeFactory is Version, BaseGaugeFactory {\n string private _productVersion;\n\n constructor(\n IMainnetBalancerMinter minter,\n string memory factoryVersion,\n string memory productVersion\n ) Version(factoryVersion) BaseGaugeFactory(address(new SingleRecipientGauge(minter))) {\n _productVersion = productVersion;\n }\n\n function getProductVersion() public view returns (string memory) {\n return _productVersion;\n }\n\n /**\n * @notice Deploys a new gauge which sends all of its BAL allowance to a single recipient.\n * @dev Care must be taken to ensure that gauges deployed from this factory are\n * suitable before they are added to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @param feeDistributorRecipient True if the recipient implements the IFeeDistributor interface and should receive\n * tokens via the `depositToken` function.\n * @return The address of the deployed gauge\n */\n function create(\n address recipient,\n uint256 relativeWeightCap,\n bool feeDistributorRecipient\n ) external returns (address) {\n address gauge = _create();\n SingleRecipientGauge(gauge).initialize(\n recipient,\n relativeWeightCap,\n feeDistributorRecipient,\n getProductVersion()\n );\n return gauge;\n }\n}\n"},"contracts/gauges/gnosis/GnosisRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../StakelessGauge.sol\";\n\ninterface IGnosisBridge {\n function relayTokens(\n IERC20 token,\n address _receiver,\n uint256 _value\n ) external;\n}\n\ncontract GnosisRootGauge is StakelessGauge {\n IGnosisBridge private immutable _gnosisBridge;\n\n // This value is kept in storage and not made immutable to allow for the recipient to be set during `initialize`\n address private _recipient;\n\n constructor(IMainnetBalancerMinter minter, IGnosisBridge gnosisBridge) StakelessGauge(minter) {\n _gnosisBridge = gnosisBridge;\n }\n\n function initialize(address recipient, uint256 relativeWeightCap) external {\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n }\n\n function getRecipient() external view override returns (address) {\n return _recipient;\n }\n\n function getGnosisBridge() external view returns (IGnosisBridge) {\n return _gnosisBridge;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n _balToken.approve(address(_gnosisBridge), mintAmount);\n\n // This will transfer BAL to `_recipient` on Gnosis Chain\n _gnosisBridge.relayTokens(_balToken, _recipient, mintAmount);\n }\n}\n"},"contracts/gauges/gnosis/GnosisRootGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./GnosisRootGauge.sol\";\n\ncontract GnosisRootGaugeFactory is BaseGaugeFactory {\n constructor(IMainnetBalancerMinter minter, IGnosisBridge gnosisBridge)\n BaseGaugeFactory(address(new GnosisRootGauge(minter, gnosisBridge)))\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Gnosis.\n * @dev Care must be taken to ensure that gauges deployed from this factory are suitable before they are\n * added to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge (18-decimal FP value from 0 to 1)\n * @return The address of the deployed gauge\n */\n function create(address recipient, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n GnosisRootGauge(gauge).initialize(recipient, relativeWeightCap);\n return gauge;\n }\n}\n"},"contracts/gauges/optimistic/OptimisticRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"../StakelessGauge.sol\";\n\ncontract OptimisticRootGauge is StakelessGauge {\n using SafeERC20 for IERC20;\n\n // solhint-disable-next-line var-name-mixedcase\n string public NETWORK;\n\n IL1StandardBridge private immutable _optimismL1StandardBridge;\n address private immutable _optimismBal;\n IOptimismGasLimitProvider private immutable _factory;\n\n // This value is kept in storage and not made immutable to allow for this contract to be proxyable\n address private _recipient;\n\n constructor(\n IMainnetBalancerMinter minter,\n IL1StandardBridge optimismL1StandardBridge,\n address optimismBal\n ) StakelessGauge(minter) {\n _optimismL1StandardBridge = optimismL1StandardBridge;\n _optimismBal = optimismBal;\n _factory = IOptimismGasLimitProvider(msg.sender);\n }\n\n function initialize(\n address recipient,\n uint256 relativeWeightCap,\n string memory targetNetwork\n ) external {\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n NETWORK = targetNetwork;\n }\n\n function getRecipient() external view override returns (address) {\n return _recipient;\n }\n\n function getOptimismBridge() external view returns (IL1StandardBridge) {\n return _optimismL1StandardBridge;\n }\n\n function getOptimismBal() external view returns (address) {\n return _optimismBal;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n _balToken.safeApprove(address(_optimismL1StandardBridge), mintAmount);\n\n // This will transfer BAL to `_recipient` on the Optimism chain\n _optimismL1StandardBridge.depositERC20To(\n address(_balToken),\n _optimismBal,\n _recipient,\n mintAmount,\n _factory.getOptimismGasLimit(),\n \"0x\"\n );\n }\n}\n"},"contracts/gauges/optimistic/OptimisticRootGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./OptimisticRootGauge.sol\";\n\ncontract OptimisticRootGaugeFactory is IOptimismGasLimitProvider, BaseGaugeFactory, SingletonAuthentication {\n // solhint-disable-next-line var-name-mixedcase\n string public NETWORK;\n\n uint32 private _gasLimit;\n\n event OptimismGasLimitModified(uint256 gasLimit);\n\n constructor(\n IVault vault,\n IMainnetBalancerMinter minter,\n IL1StandardBridge optimismL1StandardBridge,\n address optimismBal,\n uint32 gasLimit,\n string memory targetNetwork\n )\n BaseGaugeFactory(address(new OptimisticRootGauge(minter, optimismL1StandardBridge, optimismBal)))\n SingletonAuthentication(vault)\n {\n _gasLimit = gasLimit;\n NETWORK = targetNetwork;\n }\n\n /**\n * @notice Returns the gas limit for the Optimism side of the bridging transaction\n */\n function getOptimismGasLimit() external view override returns (uint32) {\n return _gasLimit;\n }\n\n /**\n * @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Optimism.\n * @dev Care must be taken to ensure that gauges deployed from this factory are\n * suitable before they are added to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @return The address of the deployed gauge\n */\n function create(address recipient, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n OptimisticRootGauge(gauge).initialize(recipient, relativeWeightCap, NETWORK);\n return gauge;\n }\n\n /**\n * @notice Set the gas limit for the Optimism side of the bridging transaction\n */\n function setOptimismGasLimit(uint32 gasLimit) external override authenticate {\n _gasLimit = gasLimit;\n emit OptimismGasLimitModified(gasLimit);\n }\n}\n"},"contracts/gauges/polygon/PolygonRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"../StakelessGauge.sol\";\n\ninterface IPolygonRootChainManager {\n function depositFor(\n address user,\n IERC20 token,\n bytes calldata depositData\n ) external;\n}\n\ncontract PolygonRootGauge is StakelessGauge {\n using SafeERC20 for IERC20;\n\n IPolygonRootChainManager private immutable _polygonRootChainManager;\n address private immutable _polygonERC20Predicate;\n\n // This value is kept in storage and not made immutable to allow for this contract to be proxyable\n address private _recipient;\n\n constructor(\n IMainnetBalancerMinter minter,\n IPolygonRootChainManager polygonRootChainManager,\n address polygonERC20Predicate\n ) StakelessGauge(minter) {\n _polygonRootChainManager = polygonRootChainManager;\n _polygonERC20Predicate = polygonERC20Predicate;\n }\n\n function initialize(address recipient, uint256 relativeWeightCap) external {\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n }\n\n function getRecipient() external view override returns (address) {\n return _recipient;\n }\n\n function getPolygonBridge() external view returns (IPolygonRootChainManager) {\n return _polygonRootChainManager;\n }\n\n function getPolygonERC20Predicate() external view returns (address) {\n return _polygonERC20Predicate;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n // Token needs to be approved on the predicate NOT the main bridge contract\n _balToken.safeApprove(_polygonERC20Predicate, mintAmount);\n\n // This will transfer BAL to `_recipient` on the Polygon chain\n _polygonRootChainManager.depositFor(_recipient, _balToken, abi.encode(mintAmount));\n }\n}\n"},"contracts/gauges/polygon/PolygonRootGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./PolygonRootGauge.sol\";\n\ncontract PolygonRootGaugeFactory is BaseGaugeFactory {\n constructor(\n IMainnetBalancerMinter minter,\n IPolygonRootChainManager polygonRootChainManager,\n address polygonERC20Predicate\n ) BaseGaugeFactory(address(new PolygonRootGauge(minter, polygonRootChainManager, polygonERC20Predicate))) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Polygon.\n * @dev Care must be taken to ensure that gauges deployed from this factory are\n * suitable before they are added to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @return The address of the deployed gauge\n */\n function create(address recipient, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n PolygonRootGauge(gauge).initialize(recipient, relativeWeightCap);\n return gauge;\n }\n}\n"},"contracts/gauges/StakelessGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\n\nabstract contract StakelessGauge is IStakelessGauge, ReentrancyGuard {\n uint256 public constant MAX_RELATIVE_WEIGHT_CAP = 1e18;\n\n IERC20 internal immutable _balToken;\n IBalancerTokenAdmin private immutable _tokenAdmin;\n IMainnetBalancerMinter private immutable _minter;\n IGaugeController private immutable _gaugeController;\n IAuthorizerAdaptor private immutable _authorizerAdaptor;\n\n event Checkpoint(uint256 indexed periodTime, uint256 periodEmissions);\n\n // solhint-disable var-name-mixedcase\n uint256 private immutable _RATE_REDUCTION_TIME;\n uint256 private immutable _RATE_REDUCTION_COEFFICIENT;\n uint256 private immutable _RATE_DENOMINATOR;\n // solhint-enable var-name-mixedcase\n\n uint256 private _rate;\n uint256 private _period;\n uint256 private _startEpochTime;\n\n uint256 private _emissions;\n bool private _isKilled;\n\n uint256 private _relativeWeightCap;\n\n constructor(IMainnetBalancerMinter minter) {\n IBalancerTokenAdmin tokenAdmin = IBalancerTokenAdmin(minter.getBalancerTokenAdmin());\n IERC20 balToken = tokenAdmin.getBalancerToken();\n IGaugeController gaugeController = minter.getGaugeController();\n\n _balToken = balToken;\n _tokenAdmin = tokenAdmin;\n _minter = minter;\n _gaugeController = gaugeController;\n _authorizerAdaptor = gaugeController.admin();\n\n _RATE_REDUCTION_TIME = tokenAdmin.RATE_REDUCTION_TIME();\n _RATE_REDUCTION_COEFFICIENT = tokenAdmin.RATE_REDUCTION_COEFFICIENT();\n _RATE_DENOMINATOR = tokenAdmin.RATE_DENOMINATOR();\n\n // Prevent initialisation of implementation contract\n // Choice of `type(uint256).max` prevents implementation from being checkpointed\n _period = type(uint256).max;\n }\n\n // solhint-disable-next-line func-name-mixedcase\n function __StakelessGauge_init(uint256 relativeWeightCap) internal {\n require(_period == 0, \"Already initialized\");\n\n // Because we calculate the rate locally, this gauge cannot\n // be used prior to the start of the first emission period\n uint256 rate = _tokenAdmin.rate();\n require(rate != 0, \"BalancerTokenAdmin not yet activated\");\n\n _rate = rate;\n _period = _currentPeriod();\n _startEpochTime = _tokenAdmin.startEpochTimeWrite();\n _setRelativeWeightCap(relativeWeightCap);\n }\n\n function checkpoint() external payable override nonReentrant returns (bool) {\n require(msg.sender == address(_authorizerAdaptor), \"SENDER_NOT_ALLOWED\");\n uint256 lastPeriod = _period;\n uint256 currentPeriod = _currentPeriod();\n\n if (lastPeriod < currentPeriod) {\n _gaugeController.checkpoint_gauge(address(this));\n\n uint256 rate = _rate;\n uint256 newEmissions = 0;\n lastPeriod += 1;\n uint256 nextEpochTime = _startEpochTime + _RATE_REDUCTION_TIME;\n for (uint256 i = lastPeriod; i < lastPeriod + 255; ++i) {\n if (i > currentPeriod) break;\n\n uint256 periodTime = i * 1 weeks;\n uint256 periodEmission = 0;\n uint256 gaugeWeight = getCappedRelativeWeight(periodTime);\n\n if (nextEpochTime >= periodTime && nextEpochTime < periodTime + 1 weeks) {\n // If the period crosses an epoch, we calculate a reduction in the rate\n // using the same formula as used in `BalancerTokenAdmin`. We perform the calculation\n // locally instead of calling to `BalancerTokenAdmin.rate()` because we are generating\n // the emissions for the upcoming week, so there is a possibility the new\n // rate has not yet been applied.\n\n // Calculate emission up until the epoch change\n uint256 durationInCurrentEpoch = nextEpochTime - periodTime;\n periodEmission = (gaugeWeight * rate * durationInCurrentEpoch) / 10**18;\n // Action the decrease in rate\n rate = (rate * _RATE_DENOMINATOR) / _RATE_REDUCTION_COEFFICIENT;\n // Calculate emission from epoch change to end of period\n uint256 durationInNewEpoch = 1 weeks - durationInCurrentEpoch;\n periodEmission += (gaugeWeight * rate * durationInNewEpoch) / 10**18;\n\n _rate = rate;\n _startEpochTime = nextEpochTime;\n nextEpochTime += _RATE_REDUCTION_TIME;\n } else {\n periodEmission = (gaugeWeight * rate * 1 weeks) / 10**18;\n }\n\n emit Checkpoint(periodTime, periodEmission);\n newEmissions += periodEmission;\n }\n\n _period = currentPeriod;\n _emissions += newEmissions;\n\n if (newEmissions > 0 && !_isKilled) {\n _minter.mint(address(this));\n _postMintAction(newEmissions);\n }\n }\n\n return true;\n }\n\n /// @inheritdoc IStakelessGauge\n function getTotalBridgeCost() external view virtual override returns (uint256) {\n return 0;\n }\n\n function _currentPeriod() internal view returns (uint256) {\n // solhint-disable-next-line not-rely-on-time\n return (block.timestamp / 1 weeks) - 1;\n }\n\n function _postMintAction(uint256 mintAmount) internal virtual;\n\n // solhint-disable func-name-mixedcase\n\n function user_checkpoint(address) external pure override returns (bool) {\n return true;\n }\n\n function integrate_fraction(address user) external view override returns (uint256) {\n require(user == address(this), \"Gauge can only mint for itself\");\n return _emissions;\n }\n\n function is_killed() external view override returns (bool) {\n return _isKilled;\n }\n\n function killGauge() external override {\n require(msg.sender == address(_authorizerAdaptor), \"SENDER_NOT_ALLOWED\");\n _isKilled = true;\n }\n\n function unkillGauge() external override {\n require(msg.sender == address(_authorizerAdaptor), \"SENDER_NOT_ALLOWED\");\n _isKilled = false;\n }\n\n function setRelativeWeightCap(uint256 relativeWeightCap) external override {\n require(msg.sender == address(_authorizerAdaptor), \"SENDER_NOT_ALLOWED\");\n _setRelativeWeightCap(relativeWeightCap);\n }\n\n function _setRelativeWeightCap(uint256 relativeWeightCap) internal {\n require(relativeWeightCap <= MAX_RELATIVE_WEIGHT_CAP, \"Relative weight cap exceeds allowed absolute maximum\");\n _relativeWeightCap = relativeWeightCap;\n emit RelativeWeightCapChanged(relativeWeightCap);\n }\n\n function getRelativeWeightCap() external view override returns (uint256) {\n return _relativeWeightCap;\n }\n\n function getCappedRelativeWeight(uint256 time) public view override returns (uint256) {\n return Math.min(_gaugeController.gauge_relative_weight(address(this), time), _relativeWeightCap);\n }\n}\n"},"contracts/gauges/StakelessGaugeCheckpointer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\n\nimport \"../admin/GaugeAdder.sol\";\nimport \"./arbitrum/ArbitrumRootGauge.sol\";\n\n/**\n * @title Stakeless Gauge Checkpointer\n * @notice Implements IStakelessGaugeCheckpointer; refer to it for API documentation.\n */\ncontract StakelessGaugeCheckpointer is IStakelessGaugeCheckpointer, ReentrancyGuard, SingletonAuthentication {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n mapping(string => EnumerableSet.AddressSet) private _gauges;\n IAuthorizerAdaptorEntrypoint private immutable _authorizerAdaptorEntrypoint;\n IGaugeAdder private immutable _gaugeAdder;\n IGaugeController private immutable _gaugeController;\n\n constructor(IGaugeAdder gaugeAdder, IAuthorizerAdaptorEntrypoint authorizerAdaptorEntrypoint)\n SingletonAuthentication(authorizerAdaptorEntrypoint.getVault())\n {\n _gaugeAdder = gaugeAdder;\n _authorizerAdaptorEntrypoint = authorizerAdaptorEntrypoint;\n _gaugeController = gaugeAdder.getGaugeController();\n }\n\n modifier withValidGaugeType(string memory gaugeType) {\n require(_gaugeAdder.isValidGaugeType(gaugeType), \"Invalid gauge type\");\n _;\n }\n\n modifier withValidGaugeTypes(string[] memory gaugeTypes) {\n for (uint256 i = 0; i < gaugeTypes.length; ++i) {\n require(_gaugeAdder.isValidGaugeType(gaugeTypes[i]), \"Invalid gauge type\");\n }\n _;\n }\n\n modifier withValidGauge(string memory gaugeType, IStakelessGauge gauge) {\n require(hasGauge(gaugeType, gauge), \"Gauge not added\");\n _;\n }\n\n modifier refundsEth() {\n _;\n _returnLeftoverEthIfAny();\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getGaugeAdder() external view override returns (IGaugeAdder) {\n return _gaugeAdder;\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getGaugeTypes() public view override returns (string[] memory) {\n return _gaugeAdder.getGaugeTypes();\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function addGaugesWithVerifiedType(string memory gaugeType, IStakelessGauge[] calldata gauges)\n external\n override\n withValidGaugeType(gaugeType)\n authenticate\n {\n // This is a permissioned call, so we can assume that the gauges' type matches the given one.\n // Therefore, we indicate `_addGauges` not to verify the gauge type.\n _addGauges(gaugeType, gauges, true);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function addGauges(string memory gaugeType, IStakelessGauge[] calldata gauges)\n external\n override\n withValidGaugeType(gaugeType)\n {\n // Since everyone can call this method, the type needs to be verified in the internal `_addGauges` method.\n _addGauges(gaugeType, gauges, false);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function removeGauges(string memory gaugeType, IStakelessGauge[] calldata gauges)\n external\n override\n withValidGaugeType(gaugeType)\n {\n EnumerableSet.AddressSet storage gaugesForType = _gauges[gaugeType];\n\n for (uint256 i = 0; i < gauges.length; i++) {\n // Gauges added must come from a valid factory and exist in the controller, and they can't be removed from\n // them. Therefore, the only required check at this point is whether the gauge was killed.\n IStakelessGauge gauge = gauges[i];\n require(gauge.is_killed(), \"Gauge was not killed\");\n require(gaugesForType.remove(address(gauge)), \"Gauge was not added to the checkpointer\");\n\n emit IStakelessGaugeCheckpointer.GaugeRemoved(gauge, gaugeType, gaugeType);\n }\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function hasGauge(string memory gaugeType, IStakelessGauge gauge)\n public\n view\n override\n withValidGaugeType(gaugeType)\n returns (bool)\n {\n return _gauges[gaugeType].contains(address(gauge));\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getTotalGauges(string memory gaugeType)\n external\n view\n override\n withValidGaugeType(gaugeType)\n returns (uint256)\n {\n return _gauges[gaugeType].length();\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getGaugeAtIndex(string memory gaugeType, uint256 index)\n external\n view\n override\n withValidGaugeType(gaugeType)\n returns (IStakelessGauge)\n {\n return IStakelessGauge(_gauges[gaugeType].at(index));\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getRoundedDownBlockTimestamp() external view override returns (uint256) {\n return _roundDownBlockTimestamp();\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function checkpointAllGaugesAboveRelativeWeight(uint256 minRelativeWeight)\n external\n payable\n override\n nonReentrant\n refundsEth\n {\n string[] memory gaugeTypes = _gaugeAdder.getGaugeTypes();\n _checkpointGaugesAboveRelativeWeight(gaugeTypes, minRelativeWeight);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function checkpointGaugesOfTypesAboveRelativeWeight(string[] memory gaugeTypes, uint256 minRelativeWeight)\n external\n payable\n override\n nonReentrant\n withValidGaugeTypes(gaugeTypes)\n refundsEth\n {\n _checkpointGaugesAboveRelativeWeight(gaugeTypes, minRelativeWeight);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function checkpointSingleGauge(string memory gaugeType, IStakelessGauge gauge)\n external\n payable\n override\n nonReentrant\n withValidGauge(gaugeType, gauge)\n refundsEth\n {\n _checkpointSingleGauge(gauge);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function checkpointMultipleGaugesOfMatchingType(string memory gaugeType, IStakelessGauge[] memory gauges)\n external\n payable\n override\n nonReentrant\n refundsEth\n {\n uint256 length = gauges.length;\n for (uint256 i = 0; i < length; ++i) {\n // The gauge type is also validated here.\n require(hasGauge(gaugeType, gauges[i]), \"Gauge not added\");\n\n _checkpointSingleGauge(gauges[i]);\n }\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function checkpointMultipleGauges(string[] memory gaugeTypes, IStakelessGauge[] memory gauges)\n external\n payable\n override\n nonReentrant\n refundsEth\n {\n require(gaugeTypes.length == gauges.length, \"Mismatch between gauge types and addresses\");\n\n uint256 length = gauges.length;\n for (uint256 i = 0; i < length; ++i) {\n // The gauge type is also validated here.\n require(hasGauge(gaugeTypes[i], gauges[i]), \"Gauge not added\");\n\n _checkpointSingleGauge(gauges[i]);\n }\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getSingleBridgeCost(string memory gaugeType, IStakelessGauge gauge)\n external\n view\n override\n withValidGauge(gaugeType, gauge)\n returns (uint256)\n {\n return _getSingleBridgeCost(gauge);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getGaugeTypesBridgeCost(string[] memory gaugeTypes, uint256 minRelativeWeight)\n external\n view\n override\n withValidGaugeTypes(gaugeTypes)\n returns (uint256)\n {\n return _getGaugeTypesTotalBridgeCost(gaugeTypes, minRelativeWeight);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function getTotalBridgeCost(uint256 minRelativeWeight) external view override returns (uint256) {\n string[] memory gaugeTypes = getGaugeTypes();\n return _getGaugeTypesTotalBridgeCost(gaugeTypes, minRelativeWeight);\n }\n\n /// @inheritdoc IStakelessGaugeCheckpointer\n function isValidGaugeType(string memory gaugeType) external view override returns (bool) {\n return _gaugeAdder.isValidGaugeType(gaugeType);\n }\n\n function _addGauges(\n string memory gaugeType,\n IStakelessGauge[] calldata gauges,\n bool isGaugeTypeVerified\n ) internal {\n EnumerableSet.AddressSet storage gaugesForType = _gauges[gaugeType];\n\n for (uint256 i = 0; i < gauges.length; i++) {\n IStakelessGauge gauge = gauges[i];\n // Gauges must come from a valid factory to be added to the gauge controller, so gauges that don't pass\n // the valid factory check will be rejected by the controller.\n require(_gaugeController.gauge_exists(address(gauge)), \"Gauge was not added to the GaugeController\");\n require(!gauge.is_killed(), \"Gauge was killed\");\n require(gaugesForType.add(address(gauge)), \"Gauge already added to the checkpointer\");\n\n // To ensure that the gauge effectively corresponds to the given type, we query the gauge factory registered\n // in the gauge adder for the gauge type.\n // However, since gauges may come from older factories from previous adders, we need to be able to override\n // this check. This way we can effectively still add older gauges to the checkpointer via authorized calls.\n require(\n isGaugeTypeVerified || _gaugeAdder.getFactoryForGaugeType(gaugeType).isGaugeFromFactory(address(gauge)),\n \"Gauge does not correspond to the selected type\"\n );\n\n emit IStakelessGaugeCheckpointer.GaugeAdded(gauge, gaugeType, gaugeType);\n }\n }\n\n /**\n * @dev Malicious contracts are ruled out at this stage: gauges shall be validated in external functions before\n * reaching this point.\n */\n function _getSingleBridgeCost(IStakelessGauge gauge) internal view returns (uint256) {\n // Some versions of the stakeless gauges did not implement this interface, so we need to try / catch the call.\n // In case the interface is not present, the cost is 0.\n try gauge.getTotalBridgeCost() returns (uint256 cost) {\n return cost;\n } catch {\n return 0;\n }\n }\n\n function _getGaugeTypeTotalBridgeCost(string memory gaugeType, uint256 minRelativeWeight)\n internal\n view\n returns (uint256 totalCost)\n {\n uint256 currentPeriod = _roundDownBlockTimestamp();\n uint256 gaugeCount = _gauges[gaugeType].length();\n EnumerableSet.AddressSet storage gauges = _gauges[gaugeType];\n\n for (uint256 i = 0; i < gaugeCount; ++i) {\n address gauge = gauges.unchecked_at(i);\n\n // The relative weight reported by the gauge controller is only valid if the gauge is updated (i.e. it\n // does not need a checkpoint in the controller).\n // It might be the case that after the checkpoint the gauge is below the weight threshold, but given\n // that we cannot perform the checkpoint in this view function we consider it within the threshold in that\n // case. It is better to overestimate the gas required for the call given that it is returned at the end\n // anyway.\n bool isGaugeUpdated = _gaugeController.time_weight(gauge) >= currentPeriod;\n if (isGaugeUpdated && _gaugeController.gauge_relative_weight(gauge, currentPeriod) < minRelativeWeight) {\n continue;\n }\n\n uint256 gaugeBridgeCost = _getSingleBridgeCost(IStakelessGauge(gauge));\n // If one gauge is costless, the same should apply for all the gauges of the same type.\n if (gaugeBridgeCost == 0) {\n break;\n }\n\n // Cost per gauge might not be the same if gauges come from different factories, so we add each\n // gauge's bridge cost individually.\n totalCost += gaugeBridgeCost;\n }\n }\n\n function _getGaugeTypesTotalBridgeCost(string[] memory gaugeTypes, uint256 minRelativeWeight)\n internal\n view\n returns (uint256 totalCost)\n {\n for (uint256 i = 0; i < gaugeTypes.length; ++i) {\n string memory gaugeType = gaugeTypes[i];\n totalCost += _getGaugeTypeTotalBridgeCost(gaugeType, minRelativeWeight);\n }\n }\n\n function _checkpointGaugesAboveRelativeWeight(string[] memory gaugeTypes, uint256 minRelativeWeight) internal {\n uint256 currentPeriod = _roundDownBlockTimestamp();\n\n for (uint256 i = 0; i < gaugeTypes.length; ++i) {\n _checkpointGauges(gaugeTypes[i], minRelativeWeight, currentPeriod);\n }\n }\n\n /**\n * @dev Performs checkpoints for all gauges of the given type whose relative weight is at least the specified one.\n * @param gaugeType Type of the gauges to checkpoint.\n * @param minRelativeWeight Threshold to filter out gauges below it.\n * @param currentPeriod Current block time rounded down to the start of the previous week.\n * This method doesn't check whether the caller transferred enough ETH to cover the whole operation.\n */\n function _checkpointGauges(\n string memory gaugeType,\n uint256 minRelativeWeight,\n uint256 currentPeriod\n ) private {\n EnumerableSet.AddressSet storage typeGauges = _gauges[gaugeType];\n\n uint256 totalTypeGauges = typeGauges.length();\n if (totalTypeGauges == 0) {\n // Return early if there's no work to be done.\n return;\n }\n\n // Most bridges are costless, and we can determine this by querying the cost of a single gauge.\n // If the cost of the first gauge in the list is 0, then it's 0 for the rest of them.\n // In that case, there's no need to query the bridge cost for every other gauge.\n // At this point we know there is at least one gauge in the set.\n bool isGaugeTypeCostless = (_getSingleBridgeCost(IStakelessGauge(typeGauges.unchecked_at(0))) == 0);\n\n // Arbitrum gauges need to send ETH when performing the checkpoint to pay for bridge costs. Furthermore,\n // if gauges come from different factories, the cost per gauge might not be the same for all gauges.\n function(IStakelessGauge) internal performCheckpoint = isGaugeTypeCostless\n ? _checkpointCostlessBridgeGauge\n : _checkpointPaidBridgeGauge;\n\n for (uint256 i = 0; i < totalTypeGauges; ++i) {\n address gauge = typeGauges.unchecked_at(i);\n\n // The gauge might need to be checkpointed in the controller to update its relative weight.\n // Otherwise it might be filtered out mistakenly.\n if (_gaugeController.time_weight(gauge) < currentPeriod) {\n _gaugeController.checkpoint_gauge(gauge);\n }\n\n // Skip gauges that are below the threshold.\n if (_gaugeController.gauge_relative_weight(gauge, currentPeriod) < minRelativeWeight) {\n continue;\n }\n\n performCheckpoint(IStakelessGauge(gauge));\n }\n }\n\n /**\n * @dev Calls `checkpoint` on a paid gauge, forwarding ETH to cover bridge costs.\n */\n function _checkpointPaidBridgeGauge(IStakelessGauge gauge) private {\n uint256 checkpointCost = gauge.getTotalBridgeCost();\n\n _authorizerAdaptorEntrypoint.performAction{ value: checkpointCost }(\n address(gauge),\n abi.encodeWithSelector(IStakelessGauge.checkpoint.selector)\n );\n }\n\n /**\n * @dev Calls `checkpoint` on a costless gauge; does not forward any ETH.\n */\n function _checkpointCostlessBridgeGauge(IStakelessGauge gauge) private {\n _authorizerAdaptorEntrypoint.performAction(\n address(gauge),\n abi.encodeWithSelector(IStakelessGauge.checkpoint.selector)\n );\n }\n\n /**\n * @dev Performs checkpoint for any gauge, attempting to get the cost beforehand.\n */\n function _checkpointSingleGauge(IStakelessGauge gauge) internal {\n uint256 checkpointCost = _getSingleBridgeCost(gauge);\n\n _authorizerAdaptorEntrypoint.performAction{ value: checkpointCost }(\n address(gauge),\n abi.encodeWithSelector(IStakelessGauge.checkpoint.selector)\n );\n }\n\n /**\n * @dev Send back any leftover ETH to the caller if there is an existing balance in the contract.\n */\n function _returnLeftoverEthIfAny() private {\n // Most gauge types don't need to send value, and this step can be skipped in those cases.\n uint256 remainingBalance = address(this).balance;\n if (remainingBalance > 0) {\n Address.sendValue(msg.sender, remainingBalance);\n }\n }\n\n /**\n * @dev Rounds the provided timestamp down to the beginning of the previous week (Thurs 00:00 UTC) with respect\n * to the current block timestamp.\n */\n function _roundDownBlockTimestamp() private view returns (uint256) {\n // Division by zero or overflows are impossible here.\n // solhint-disable-next-line not-rely-on-time\n return (block.timestamp / 1 weeks - 1) * 1 weeks;\n }\n}\n"},"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"../StakelessGauge.sol\";\n\ninterface IPolygonZkEVMBridge {\n function bridgeAsset(\n uint32 destinationNetwork,\n address destinationAddress,\n uint256 amount,\n address token,\n bool forceUpdateGlobalExitRoot,\n bytes calldata permitData\n ) external;\n}\n\n/**\n * @notice Root Gauge for the Polygon zkEVM network.\n * @dev Documentation is at https://zkevm.polygon.technology/docs/category/zkevm-bridge.\n */\ncontract PolygonZkEVMRootGauge is StakelessGauge {\n using SafeERC20 for IERC20;\n\n bool private constant _FORCE_UPDATE_GLOBAL_EXIT_ROOT = true;\n uint32 private constant _POLYGON_ZKEVM_NETWORK = 1;\n\n IPolygonZkEVMBridge private immutable _polygonZkEVMBridge;\n\n // This value is kept in storage and not made immutable to allow for this contract to be proxyable\n address private _recipient;\n\n constructor(IMainnetBalancerMinter minter, IPolygonZkEVMBridge polygonZkEVMBridge) StakelessGauge(minter) {\n _polygonZkEVMBridge = polygonZkEVMBridge;\n }\n\n function initialize(address recipient, uint256 relativeWeightCap) external {\n // This will revert in all calls except the first one\n __StakelessGauge_init(relativeWeightCap);\n\n _recipient = recipient;\n }\n\n function getRecipient() external view override returns (address) {\n return _recipient;\n }\n\n function getPolygonZkEVMBridge() external view returns (IPolygonZkEVMBridge) {\n return _polygonZkEVMBridge;\n }\n\n function _postMintAction(uint256 mintAmount) internal override {\n _balToken.safeApprove(address(_polygonZkEVMBridge), mintAmount);\n\n // This will transfer BAL to `_recipient` on the Polygon zkEVM chain\n // Emits a `BridgeEvent`.\n _polygonZkEVMBridge.bridgeAsset(\n _POLYGON_ZKEVM_NETWORK,\n _recipient,\n mintAmount,\n address(_balToken),\n _FORCE_UPDATE_GLOBAL_EXIT_ROOT,\n \"\"\n );\n }\n}\n"},"contracts/gauges/zkevm/PolygonZkEVMRootGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../BaseGaugeFactory.sol\";\nimport \"./PolygonZkEVMRootGauge.sol\";\n\ncontract PolygonZkEVMRootGaugeFactory is BaseGaugeFactory {\n constructor(IMainnetBalancerMinter minter, IPolygonZkEVMBridge zkEVMBridge)\n BaseGaugeFactory(address(new PolygonZkEVMRootGauge(minter, zkEVMBridge)))\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Polygon ZkEVM.\n * @dev Care must be taken to ensure that gauges deployed from this factory are suitable before they are added\n * to the GaugeController.\n * @param recipient The address to receive BAL minted from the gauge\n * @param relativeWeightCap The relative weight cap for the created gauge\n * @return The address of the deployed gauge\n */\n function create(address recipient, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n PolygonZkEVMRootGauge(gauge).initialize(recipient, relativeWeightCap);\n return gauge;\n }\n}\n"},"contracts/GaugeWorkingBalanceHelper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\";\n\ninterface IVeDelegationProxy is IVeDelegation {\n function getVotingEscrow() external view returns (IERC20);\n}\n\ninterface IGauge {\n function balanceOf(address user) external view returns (uint256);\n\n function totalSupply() external view returns (uint256);\n\n // solhint-disable func-name-mixedcase\n function working_balances(address user) external view returns (uint256);\n\n function working_supply() external view returns (uint256);\n // solhint-enable func-name-mixedcase\n}\n\n/**\n * @notice Get the current and projected `working_balance` (effective veBAL boosted balance) for a user on a gauge.\n * @dev The `working_balance` can range between 40% and 100% of the nominal user balance on a gauge, depending on the\n * veBAL \"voting power\" of the user with respect to the total \"voting power\" supply. This value generally decays over\n * time, but will increase with additional veBAL locking.\n *\n * Also computes the working balance ratios: balance/supply, which is more informative when deciding whether\n * it would be advantageous for the user to checkpoint a gauge.\n */\ncontract GaugeWorkingBalanceHelper {\n using FixedPoint for uint256;\n\n // 40% (minimum balance, with no veBAL)\n uint256 private constant _TOKENLESS_PRODUCTION = 40e16;\n\n IVeDelegationProxy private immutable _veDelegationProxy;\n IERC20 private immutable _veBAL;\n\n // The veBAL user balance always comes from the proxy (on L1 and L2), but versions deployed to some\n // networks require the total supply of veBAL to come from the VotingEscrow instead.\n bool private immutable _readTotalSupplyFromVE;\n\n constructor(IVeDelegationProxy veDelegationProxy, bool readTotalSupplyFromVE) {\n _veDelegationProxy = veDelegationProxy;\n _veBAL = veDelegationProxy.getVotingEscrow();\n\n _readTotalSupplyFromVE = readTotalSupplyFromVE;\n }\n\n /**\n * @dev Returns the VotingEscrowDelegationProxy (as an IVeDelegation, which is exported).\n */\n function getVotingEscrowDelegationProxy() external view returns (IVeDelegation) {\n return _veDelegationProxy;\n }\n\n /**\n * @dev Returns the VotingEscrow contract associated with the proxy.\n */\n function getVotingEscrow() external view returns (IERC20) {\n return _veBAL;\n }\n\n /**\n * @dev Returns whether the total supply will be read from the VotingEscrow contract. If false,\n * it will be read from the delegation proxy instead.\n */\n function readsTotalSupplyFromVE() external view returns (bool) {\n return _readTotalSupplyFromVE;\n }\n\n /**\n * @dev The gauge allocates 60% of the emissions it receives to veBAL holders, which it accomplishes by computing\n * an effective \"working\" balance for each user, starting with 40% of the true balance (i.e., BPT deposited in\n * the gauge), and adding a \"boost\" proportional to that user's share of the total voting power.\n *\n * @param gauge - address of a gauge (L1 or L2).\n * @param user - address of a user.\n * @return current and projected balances.\n */\n function getWorkingBalances(IGauge gauge, address user) public view returns (uint256, uint256) {\n uint256 gaugeUserBalance = gauge.balanceOf(user);\n uint256 projectedWorkingBalance = gaugeUserBalance.mulDown(_TOKENLESS_PRODUCTION);\n IVeDelegationProxy proxy = _veDelegationProxy;\n\n uint256 veTotalSupply = _readTotalSupplyFromVE ? _veBAL.totalSupply() : proxy.totalSupply();\n\n if (veTotalSupply > 0) {\n uint256 veUserBalance = proxy.adjusted_balance_of(user);\n uint256 gaugeTotalSupply = gauge.totalSupply();\n\n projectedWorkingBalance = projectedWorkingBalance.add(\n gaugeTotalSupply.mulDown(veUserBalance).mulDown(_TOKENLESS_PRODUCTION.complement()).divDown(\n veTotalSupply\n )\n );\n\n projectedWorkingBalance = Math.min(gaugeUserBalance, projectedWorkingBalance);\n }\n\n return (gauge.working_balances(user), projectedWorkingBalance);\n }\n\n /**\n * @dev There is also a \"working\" supply, needed to ensure that all the emissions are allocated.\n * Compute and return the balance/supply ratios. This captures the behavior of other users, and more\n * accurately reflects this user's relative position.\n *\n * @param gauge - address of a gauge (L1 or L2).\n * @param user - address of a user.\n * @return ratio of the current `working_balance` of the user to the current `working_supply` of the gauge.\n * @return ratio of the projected `working_balance` of the user (after `user_checkpoint`),\n * to the projected `working_supply` of the gauge.\n */\n function getWorkingBalanceToSupplyRatios(IGauge gauge, address user) external view returns (uint256, uint256) {\n (uint256 currentWorkingBalance, uint256 projectedWorkingBalance) = getWorkingBalances(gauge, user);\n uint256 currentWorkingSupply = gauge.working_supply();\n\n uint256 projectedWorkingSupply = currentWorkingSupply.add(projectedWorkingBalance).sub(currentWorkingBalance);\n\n return (\n currentWorkingBalance.divDown(currentWorkingSupply),\n projectedWorkingBalance.divDown(projectedWorkingSupply)\n );\n }\n}\n"},"contracts/L2BalancerPseudoMinter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\";\n\nimport \"./BalancerMinter.sol\";\n\n/**\n * @dev Distributes bridged BAL tokens in child chains, using the same interface as the mainnet Balancer minter.\n *\n * This contract is analogous to the mainnet minter: it has the same interface and interacts with (L2) gauges in a\n * similar manner, keeping track of how many tokens were already distributed to each gauge and user.\n *\n * The difference with the mainnet minter is that this contract does not have a way of minting BAL directly: the tokens\n * are only minted in mainnet, and then bridged to L2s. Then, this contract accumulates the emissions received by\n * child chain gauges and distributes them to users.\n *\n * Every time the tokens are 'minted' (i.e. distributed) from a gauge to a given user, the pseudo minter will query the\n * child chain gauge for the total amount of tokes that need to be distributed to that user. By keeping track of the\n * amount that it has already distributed for that gauge / user, the pseudo minter can then transfer the difference\n * to the user and update the total transferred amount.\n */\ncontract L2BalancerPseudoMinter is BalancerMinter, SingletonAuthentication {\n event GaugeFactoryAdded(ILiquidityGaugeFactory indexed factory);\n event GaugeFactoryRemoved(ILiquidityGaugeFactory indexed factory);\n\n using SafeMath for uint256;\n using SafeERC20 for IERC20;\n\n mapping(ILiquidityGaugeFactory => bool) private _validFactories;\n\n constructor(IVault vault, IERC20 balancerToken)\n BalancerMinter(balancerToken, \"Balancer Pseudo Minter\", \"1\")\n SingletonAuthentication(vault)\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Adds a given child chain gauge factory to the allowlist.\n * @dev This is a permissioned function.\n * Reverts if the given factory was added beforehand; emits `GaugeFactoryAdded` event upon success.\n */\n function addGaugeFactory(ILiquidityGaugeFactory factory) external authenticate {\n require(!_validFactories[factory], \"FACTORY_ALREADY_ADDED\");\n _validFactories[factory] = true;\n emit GaugeFactoryAdded(factory);\n }\n\n /**\n * @notice Removes a given child chain gauge factory from the allowlist.\n * @dev This is a permissioned function.\n * Reverts if the given factory had not been added beforehand; emits `GaugeFactoryRemoved` event upon success.\n */\n function removeGaugeFactory(ILiquidityGaugeFactory factory) external authenticate {\n require(_validFactories[factory], \"FACTORY_NOT_ADDED\");\n _validFactories[factory] = false;\n emit GaugeFactoryRemoved(factory);\n }\n\n /**\n * @notice Returns true if the given child chain gauge factory is in the allowlist; false otherwise.\n */\n function isValidGaugeFactory(ILiquidityGaugeFactory factory) public view returns (bool) {\n return _validFactories[factory];\n }\n\n // Internal functions\n\n function _mintFor(address gauge, address user) internal override returns (uint256 tokensToMint) {\n tokensToMint = _updateGauge(gauge, user);\n _pseudoMint(user, tokensToMint);\n }\n\n function _mintForMany(address[] calldata gauges, address user) internal override returns (uint256 tokensToMint) {\n uint256 length = gauges.length;\n for (uint256 i = 0; i < length; ++i) {\n tokensToMint = tokensToMint.add(_updateGauge(gauges[i], user));\n }\n _pseudoMint(user, tokensToMint);\n }\n\n /**\n * @dev Checkpoints given gauge and updates the internal accounting with the total tokens that should be transfered\n * to the user since the start.\n *\n * @param gauge Gauge to checkpoint and query for total tokens to be transferred.\n * @param user User to query in the given gauge.\n * @return tokensToMint Amount of tokens to be transferred to the user, calculated as the difference between the\n * total amount of tokens as indicated by the gauge and the tokens that have already been transferred to the user.\n */\n function _updateGauge(address gauge, address user) internal returns (uint256 tokensToMint) {\n // First, we retrieve the factory address registered from the gauge.\n // If the factory address is allowlisted in this contract, we verify that the gauge was actually created by\n // the factory (otherwise it could be just a malicious gauge that claims to be created by an allowed factory).\n IChildChainGauge ccGauge = IChildChainGauge(gauge);\n ILiquidityGaugeFactory factory = ccGauge.factory();\n require(isValidGaugeFactory(factory), \"INVALID_GAUGE_FACTORY\");\n require(factory.isGaugeFromFactory(gauge), \"INVALID_GAUGE\");\n\n ccGauge.user_checkpoint(user);\n uint256 totalMint = ccGauge.integrate_fraction(user);\n tokensToMint = totalMint.sub(minted(user, gauge));\n\n if (tokensToMint > 0) {\n _setMinted(user, gauge, totalMint);\n }\n }\n\n /**\n * @dev Transfers tokens to user if the given amount is not zero.\n */\n function _pseudoMint(address user, uint256 tokensToMint) internal {\n if (tokensToMint > 0) {\n getBalancerToken().safeTransfer(user, tokensToMint);\n }\n }\n}\n"},"contracts/L2LayerZeroBridgeForwarder.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\n/**\n * @notice Forwards calls from LayerZero's system to a custom hook whenever a veBAL balance is updated for a given user\n * in a L2 chain.\n * @dev The delegation contract can be set so that e.g. Child Chain Gauges are updated automatically whenever there is\n * a veBAL balance update.\n */\ncontract L2LayerZeroBridgeForwarder is IL2LayerZeroDelegation, SingletonAuthentication {\n event DelegationImplementationUpdated(IL2LayerZeroDelegation indexed newImplementation);\n\n IL2LayerZeroDelegation private _delegation;\n\n constructor(IVault vault) SingletonAuthentication(vault) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @notice Returns the current delegation implementation contract.\n */\n function getDelegationImplementation() external view returns (IL2LayerZeroDelegation) {\n return _delegation;\n }\n\n /**\n * @notice Hook to be called whenever the veBAL balance of a user is updated.\n */\n function onVeBalBridged(address user) external override {\n if (_delegation != IL2LayerZeroDelegation(0)) {\n _delegation.onVeBalBridged(user);\n }\n }\n\n /**\n * @notice Hook to be called whenever the veBAL supply is updated.\n */\n function onVeBalSupplyUpdate() external override {\n if (_delegation != IL2LayerZeroDelegation(0)) {\n _delegation.onVeBalSupplyUpdate();\n }\n }\n\n /**\n * @notice Sets a new delegation implementation for `onVeBalBridged`.\n */\n function setDelegation(IL2LayerZeroDelegation delegation) external authenticate {\n _delegation = delegation;\n\n emit DelegationImplementationUpdated(delegation);\n }\n}\n"},"contracts/MainnetBalancerMinter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\";\n\nimport \"./BalancerMinter.sol\";\n\ncontract MainnetBalancerMinter is IMainnetBalancerMinter, BalancerMinter {\n using SafeMath for uint256;\n\n IBalancerTokenAdmin private immutable _tokenAdmin;\n IGaugeController private immutable _gaugeController;\n\n constructor(IBalancerTokenAdmin tokenAdmin, IGaugeController gaugeController)\n BalancerMinter(tokenAdmin.getBalancerToken(), \"Balancer Minter\", \"1\")\n {\n _tokenAdmin = tokenAdmin;\n _gaugeController = gaugeController;\n }\n\n /// @inheritdoc ILMGetters\n function getBalancerTokenAdmin() external view override returns (IBalancerTokenAdmin) {\n return _tokenAdmin;\n }\n\n /// @inheritdoc ILMGetters\n function getGaugeController() external view override returns (IGaugeController) {\n return _gaugeController;\n }\n\n // Internal functions\n\n function _mintFor(address gauge, address user) internal override returns (uint256 tokensToMint) {\n tokensToMint = _updateGauge(gauge, user);\n if (tokensToMint > 0) {\n _tokenAdmin.mint(user, tokensToMint);\n }\n }\n\n function _mintForMany(address[] calldata gauges, address user) internal override returns (uint256 tokensToMint) {\n uint256 length = gauges.length;\n for (uint256 i = 0; i < length; ++i) {\n tokensToMint = tokensToMint.add(_updateGauge(gauges[i], user));\n }\n\n if (tokensToMint > 0) {\n _tokenAdmin.mint(user, tokensToMint);\n }\n }\n\n function _updateGauge(address gauge, address user) internal returns (uint256 tokensToMint) {\n require(_gaugeController.gauge_types(gauge) >= 0, \"Gauge does not exist on Controller\");\n\n ILiquidityGauge(gauge).user_checkpoint(user);\n uint256 totalMint = ILiquidityGauge(gauge).integrate_fraction(user);\n tokensToMint = totalMint.sub(minted(user, gauge));\n\n if (tokensToMint > 0) {\n _setMinted(user, gauge, totalMint);\n }\n }\n}\n"},"contracts/NullVotingEscrow.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @title Null VotingEscrow\n * @notice This contract fulfils the role of a `VotingEscrow` contract\n * where no accounts hold a balance for the purposes of gauge boosts.\n * @dev This contract is to be used as the fallback `VotingEscrow` on chains other than Ethereum mainnet.\n * In the situation where boosts are not properly relayed from Ethereum mainnet to a chain and the veBoost\n * implementation is killed, values will be read from here which will have the effect of zeroing out any boosts.\n */\ncontract NullVotingEscrow is IERC20 {\n function totalSupply() external pure override returns (uint256) {\n return 0;\n }\n\n function balanceOf(address) external pure override returns (uint256) {\n return 0;\n }\n\n function allowance(address, address) external pure override returns (uint256) {\n return 0;\n }\n\n function approve(address, uint256) external pure override returns (bool) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function transfer(address, uint256) external pure override returns (bool) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function transferFrom(\n address,\n address,\n uint256\n ) external pure override returns (bool) {\n _revert(Errors.UNIMPLEMENTED);\n }\n}\n"},"contracts/OmniVotingEscrowAdaptor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\n/**\n * @notice Adaptor contract between `VotingEscrowRemapper` and `OmniVotingEscrow`.\n * @dev Provides the remapper a stable interface to forward requests to the omni voting escrow, while allowing to\n * configure optional parameters and even swap the target omni voting escrow contract.\n */\ncontract OmniVotingEscrowAdaptor is\n IOmniVotingEscrowAdaptor,\n IOmniVotingEscrowAdaptorSettings,\n SingletonAuthentication\n{\n IOmniVotingEscrow private _omniVotingEscrow;\n bool private _useZro;\n bytes private _adapterParams;\n address private _zroPaymentAddress;\n\n constructor(IVault vault) SingletonAuthentication(vault) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function getOmniVotingEscrow() public view override returns (IOmniVotingEscrow) {\n return _omniVotingEscrow;\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function getUseZero() external view override returns (bool) {\n return _useZro;\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function getAdapterParams() external view override returns (bytes memory) {\n return _adapterParams;\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function getZeroPaymentAddress() external view override returns (address) {\n return _zroPaymentAddress;\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptor\n function estimateSendUserBalance(uint16 _dstChainId)\n external\n view\n override\n returns (uint256 nativeFee, uint256 zroFee)\n {\n IOmniVotingEscrow omniVotingEscrow = getOmniVotingEscrow();\n require(omniVotingEscrow != IOmniVotingEscrow(0), \"Omni voting escrow not set\");\n\n return omniVotingEscrow.estimateSendUserBalance(_dstChainId, _useZro, _adapterParams);\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptor\n function sendUserBalance(\n address _user,\n uint16 _dstChainId,\n address payable _refundAddress\n ) external payable override {\n IOmniVotingEscrow omniVotingEscrow = getOmniVotingEscrow();\n require(omniVotingEscrow != IOmniVotingEscrow(0), \"Omni voting escrow not set\");\n\n omniVotingEscrow.sendUserBalance{ value: msg.value }(\n _user,\n _dstChainId,\n _refundAddress,\n _zroPaymentAddress,\n _adapterParams\n );\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function setOmniVotingEscrow(IOmniVotingEscrow omniVotingEscrow) external override authenticate {\n _omniVotingEscrow = omniVotingEscrow;\n emit OmniVotingEscrowUpdated(omniVotingEscrow);\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function setUseZero(bool useZro) external override authenticate {\n _useZro = useZro;\n emit UseZeroUpdated(useZro);\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function setAdapterParams(bytes memory adapterParams) external override authenticate {\n _adapterParams = adapterParams;\n emit AdapterParamsUpdated(adapterParams);\n }\n\n /// @inheritdoc IOmniVotingEscrowAdaptorSettings\n function setZeroPaymentAddress(address paymentAddress) external override authenticate {\n _zroPaymentAddress = paymentAddress;\n emit ZeroPaymentAddressUpdated(paymentAddress);\n }\n}\n"},"contracts/SmartWalletChecker.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\";\n\ncontract SmartWalletChecker is ISmartWalletChecker, SingletonAuthentication {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n event ContractAddressAdded(address contractAddress);\n event ContractAddressRemoved(address contractAddress);\n\n EnumerableSet.AddressSet private _allowlistedAddresses;\n\n constructor(IVault vault, address[] memory initialAllowedAddresses) SingletonAuthentication(vault) {\n uint256 addressesLength = initialAllowedAddresses.length;\n for (uint256 i = 0; i < addressesLength; ++i) {\n _allowlistAddress(initialAllowedAddresses[i]);\n }\n }\n\n function check(address contractAddress) external view override returns (bool) {\n return _allowlistedAddresses.contains(contractAddress);\n }\n\n function getAllowlistedAddress(uint256 index) external view returns (address) {\n return _allowlistedAddresses.at(index);\n }\n\n function getAllowlistedAddressesLength() external view returns (uint256) {\n return _allowlistedAddresses.length();\n }\n\n function allowlistAddress(address contractAddress) external authenticate {\n _allowlistAddress(contractAddress);\n }\n\n function denylistAddress(address contractAddress) external authenticate {\n require(_allowlistedAddresses.remove(contractAddress), \"Address is not allowlisted\");\n emit ContractAddressRemoved(contractAddress);\n }\n\n // Internal functions\n\n function _allowlistAddress(address contractAddress) internal {\n require(_allowlistedAddresses.add(contractAddress), \"Address already allowlisted\");\n emit ContractAddressAdded(contractAddress);\n }\n}\n"},"contracts/test/MockAvalancheRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../gauges/avalanche/AvalancheRootGauge.sol\";\n\n/**\n * @dev This is used by the Avalanche Root Gauge deployment task in the deployments repo, and is referenced there.\n * Do not delete.\n */\ncontract MockAvalancheRootGauge is AvalancheRootGauge {\n constructor(IMainnetBalancerMinter minter, ILayerZeroBALProxy lzBALProxy) AvalancheRootGauge(minter, lzBALProxy) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @dev It would be very difficult to contrive a fork test that set the mintAmount to a precise value,\n * so the bridge limits are best tested with a mock and unit tests.\n * It must be payable to send ETH to pay for gas in the child chain.\n * @param mintAmount Amount to be bridged\n */\n function bridge(uint256 mintAmount) external payable {\n _postMintAction(mintAmount);\n }\n}\n"},"contracts/test/MockBalancerMinter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\";\n\nimport \"../BalancerMinter.sol\";\n\ncontract MockBalancerMinter is BalancerMinter {\n event MintFor(address gauge, address user);\n event MintForMany(address[] gauges, address user);\n\n uint256 private _mintForReturn;\n uint256 private _mintForManyReturn;\n\n constructor(IERC20 token) BalancerMinter(token, \"Balancer Minter\", \"1\") {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function setMockMintFor(uint256 mintForReturn) external {\n _mintForReturn = mintForReturn;\n }\n\n function setMockMintForMany(uint256 mintForManyReturn) external {\n _mintForManyReturn = mintForManyReturn;\n }\n\n function setMinted(\n address user,\n address gauge,\n uint256 value\n ) external {\n return _setMinted(user, gauge, value);\n }\n\n // Internal functions\n\n function _mintFor(address gauge, address user) internal override returns (uint256 tokensToMint) {\n emit MintFor(gauge, user);\n return _mintForReturn;\n }\n\n function _mintForMany(address[] calldata gauges, address user) internal override returns (uint256 tokensToMint) {\n emit MintForMany(gauges, user);\n return _mintForManyReturn;\n }\n}\n"},"contracts/test/MockBalancerTokenAdmin.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\n/**\n * @dev This is an incomplete implementation of the token admin. It provides just enough functionality to be able to\n * instantiate Liquidity and Stakeless gauges.\n */\ncontract MockBalancerTokenAdmin {\n uint256 public constant INITIAL_RATE = (145000 * 1e18) / uint256(1 weeks); // BAL has 18 decimals\n uint256 public constant RATE_REDUCTION_TIME = 365 days;\n uint256 public constant RATE_REDUCTION_COEFFICIENT = 1189207115002721024; // 2 ** (1/4) * 1e18\n uint256 public constant RATE_DENOMINATOR = 1e18;\n\n IVault private _vault;\n IBalancerToken private _balancerToken;\n uint256 private _startEpochTime;\n uint256 private immutable _rate;\n\n constructor(IVault vault, IBalancerToken balancerToken) {\n _vault = vault;\n _balancerToken = balancerToken;\n // solhint-disable-next-line not-rely-on-time\n _startEpochTime = block.timestamp;\n _rate = INITIAL_RATE;\n }\n\n function getVault() external view returns (IVault) {\n return _vault;\n }\n\n function getBalancerToken() external view returns (IBalancerToken) {\n return _balancerToken;\n }\n\n function startEpochTimeWrite() external returns (uint256) {\n return _epochWrite();\n }\n\n // solhint-disable func-name-mixedcase\n\n function future_epoch_time_write() external returns (uint256) {\n return _epochWrite();\n }\n\n function rate() external view returns (uint256) {\n return _rate;\n }\n\n function _epochWrite() internal returns (uint256) {\n _startEpochTime += 1;\n return _startEpochTime;\n }\n\n function mint(address to, uint256 amount) external {\n _balancerToken.mint(to, amount);\n }\n}\n"},"contracts/test/MockBaseRootGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../gauges/base/BaseRootGauge.sol\";\n\n/**\n * @dev This is used by the Base Root Gauge deployment task in the deployments repo, and is referenced there.\n * Do not delete.\n */\ncontract MockBaseRootGauge is BaseRootGauge {\n constructor(\n IMainnetBalancerMinter minter,\n IL1StandardBridge baseBridge,\n address baseBAL\n ) BaseRootGauge(minter, baseBridge, baseBAL) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @dev It would be very difficult to contrive a fork test that set the mintAmount to a precise value,\n * so the bridge limits are best tested with a mock and unit tests.\n * It must be payable to send ETH to pay for gas in the child chain.\n * @param mintAmount Amount to be bridged\n */\n function bridge(uint256 mintAmount) external payable {\n _postMintAction(mintAmount);\n }\n}\n"},"contracts/test/MockChildChainGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\";\n\n// solhint-disable func-name-mixedcase\ncontract MockChildChainGauge is IChildChainGauge {\n event UserCheckpoint(address user);\n\n using SafeMath for uint256;\n\n // solhint-disable-next-line var-name-mixedcase\n address public lp_token;\n ILiquidityGaugeFactory public override factory;\n string public override version;\n\n uint256 private _checkpointStep;\n mapping(address => uint256) private _integrateFraction;\n\n constructor(string memory _version) {\n version = _version;\n }\n\n function initialize(address pool, string memory _version) external override {\n lp_token = pool;\n factory = ILiquidityGaugeFactory(msg.sender);\n version = _version;\n }\n\n function setMockCheckpointStep(uint256 checkpointStep) external {\n _checkpointStep = checkpointStep;\n }\n\n function setMockFactory(ILiquidityGaugeFactory _factory) external {\n factory = _factory;\n }\n\n function integrate_fraction(address user) external view override returns (uint256) {\n return _integrateFraction[user];\n }\n\n function user_checkpoint(address user) external override returns (bool) {\n _integrateFraction[user] = _integrateFraction[user].add(_checkpointStep);\n emit UserCheckpoint(user);\n return true;\n }\n}\n"},"contracts/test/MockGaugeController.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ncontract MockGaugeController is IGaugeController {\n int128 private _numGaugeTypes;\n mapping(address => bool) private _validGauge;\n mapping(address => int128) private _gaugeType;\n mapping(address => uint256) private _weights;\n uint256 private _gaugeWeightBias;\n\n IAuthorizerAdaptor public override admin;\n // solhint-disable-next-line var-name-mixedcase\n IVotingEscrow public override voting_escrow;\n\n // solhint-disable-next-line func-param-name-mixedcase, var-name-mixedcase\n event NewGauge(address addr, int128 gauge_type, uint256 weight);\n\n constructor(IVotingEscrow votingEscrow, IAuthorizerAdaptor authorizerAdaptor) {\n voting_escrow = votingEscrow;\n admin = authorizerAdaptor;\n }\n\n function n_gauge_types() external view override returns (int128) {\n return _numGaugeTypes;\n }\n\n function gauge_types(address gauge) external view override returns (int128) {\n require(_validGauge[gauge], \"Gauge doesn't exist on controller\");\n return _gaugeType[gauge];\n }\n\n function add_gauge(address gauge, int128 gaugeType) external override {\n require(!_validGauge[gauge], \"Gauge already exists on controller\");\n require(gaugeType >= 0 && gaugeType < _numGaugeTypes, \"Invalid gauge type\");\n _validGauge[gauge] = true;\n emit NewGauge(gauge, gaugeType, 0);\n }\n\n function add_type(string calldata, uint256) external override {\n _numGaugeTypes += 1;\n }\n\n function token() external pure override returns (IERC20) {\n return IERC20(0);\n }\n\n function checkpoint_gauge(address) external override {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function gauge_relative_weight(address gauge, uint256) external view override returns (uint256) {\n return _weights[gauge] + _gaugeWeightBias;\n }\n\n function change_type_weight(int128, uint256) external override {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function gauge_exists(address gauge) external view override returns (bool) {\n return _validGauge[gauge];\n }\n\n function setGaugeWeight(address gauge, uint256 weight) external {\n require(_validGauge[gauge], \"Gauge does not exist on controller\");\n _weights[gauge] = weight;\n }\n\n function setGaugeWeightBias(uint256 bias) external {\n require(bias <= 1e18, \"Bias too high\");\n _gaugeWeightBias = bias;\n }\n\n function time_weight(address) external pure override returns (uint256) {\n return 0;\n }\n}\n"},"contracts/test/MockL2LayerZeroDelegation.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\";\n\ncontract MockL2LayerZeroDelegation is IL2LayerZeroDelegation {\n event OnVeBalBridged(address user);\n event OnVeBalSupplyUpdate();\n\n function onVeBalBridged(address user) external override {\n emit OnVeBalBridged(user);\n }\n\n function onVeBalSupplyUpdate() external override {\n emit OnVeBalSupplyUpdate();\n }\n}\n"},"contracts/test/MockLiquidityGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n// solhint-disable func-name-mixedcase\ncontract MockLiquidityGauge is ILiquidityGauge {\n // solhint-disable-next-line var-name-mixedcase\n address public lp_token;\n bool private _isKilled;\n\n constructor() {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function initialize(address pool, uint256) external {\n lp_token = pool;\n }\n\n function is_killed() external view override returns (bool) {\n return _isKilled;\n }\n\n function killGauge() external override {\n _isKilled = true;\n }\n\n function unkillGauge() external override {\n _isKilled = false;\n }\n\n // Methods below are not implemented; they are present just to comply with ILiquidityGauge.\n // State mutability was set to \"pure\" to avoid compiler warnings.\n\n function integrate_fraction(address) external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function user_checkpoint(address) external pure override returns (bool) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function setRelativeWeightCap(uint256) external pure override {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getRelativeWeightCap() external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getCappedRelativeWeight(uint256) external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n}\n"},"contracts/test/MockLiquidityGaugeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../gauges/BaseGaugeFactory.sol\";\nimport \"./MockLiquidityGauge.sol\";\n\ncontract MockLiquidityGaugeFactory is BaseGaugeFactory {\n constructor(MockLiquidityGauge gaugeImplementation) BaseGaugeFactory(address(gaugeImplementation)) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function create(address pool, uint256 relativeWeightCap) external returns (address) {\n address gauge = _create();\n\n MockLiquidityGauge(gauge).initialize(pool, relativeWeightCap);\n\n return gauge;\n }\n}\n"},"contracts/test/MockOmniVotingEscrow.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol\";\n\ncontract MockOmniVotingEscrow is IOmniVotingEscrow {\n event SendUserBalance(\n address user,\n uint16 chainId,\n address refundAddress,\n address zroPaymentAddress,\n bytes adapterParams,\n uint256 value\n );\n\n // chain ID --> native fee\n mapping(uint16 => uint256) private _nativeFee;\n uint256 private _zroFee;\n\n function estimateSendUserBalance(\n uint16 chainId,\n bool,\n bytes calldata\n ) external view override returns (uint256 nativeFee, uint256 zroFee) {\n return (_nativeFee[chainId], _zroFee);\n }\n\n function sendUserBalance(\n address _user,\n uint16 _dstChainId,\n address payable _refundAddress,\n address _zroPaymentAddress,\n bytes memory _adapterParams\n ) external payable override {\n emit SendUserBalance(_user, _dstChainId, _refundAddress, _zroPaymentAddress, _adapterParams, msg.value);\n }\n\n function setNativeFee(uint256 nativeFee, uint16 chainId) external {\n _nativeFee[chainId] = nativeFee;\n }\n}\n"},"contracts/test/MockRewardTokenDistributor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\";\n\n// solhint-disable func-name-mixedcase, var-name-mixedcase, not-rely-on-time\n\n/**\n * @dev This contract is designed to mock LiquidityGaugeV5's interface for distributing external tokens.\n */\ncontract MockRewardTokenDistributor is IRewardTokenDistributor {\n using SafeERC20 for IERC20;\n\n uint256 private _rewardCount;\n IERC20[8] private _rewardTokens;\n mapping(IERC20 => Reward) private _rewardData;\n\n function reward_tokens(uint256 index) external view override returns (IERC20) {\n return _rewardTokens[index];\n }\n\n function reward_data(IERC20 token) external view override returns (Reward memory) {\n return _rewardData[token];\n }\n\n function add_reward(IERC20 rewardToken, address distributor) external override {\n _rewardTokens[_rewardCount] = rewardToken;\n _rewardData[rewardToken] = Reward({\n token: rewardToken,\n distributor: distributor,\n period_finish: 0,\n rate: 0,\n last_update: block.timestamp,\n integral: 0\n });\n\n _rewardCount += 1;\n require(_rewardCount < 8, \"Too many reward tokens\");\n }\n\n function set_reward_distributor(IERC20 rewardToken, address distributor) external override {\n _rewardData[rewardToken].distributor = distributor;\n }\n\n function deposit_reward_token(IERC20 rewardToken, uint256 amount) external override {\n require(_rewardData[rewardToken].distributor == msg.sender, \"Only callable by reward distributor\");\n rewardToken.safeTransferFrom(msg.sender, address(this), amount);\n\n // We don't care about the rest of the update.\n }\n\n function claim_rewards(address user) external override {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function claimable_reward(address, address) external pure override returns (uint256) {\n return 0;\n }\n\n function claimable_reward_write(address, address) external pure override returns (uint256) {\n return 0;\n }\n}\n"},"contracts/test/MockVeDelegation.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ncontract MockVeDelegation is IVeDelegation {\n uint256 private _adjustedBalance;\n uint256 private _totalSupply;\n\n function adjusted_balance_of(address) external view override returns (uint256) {\n return _adjustedBalance;\n }\n\n function totalSupply() external view override returns (uint256) {\n return _totalSupply;\n }\n}\n"},"contracts/test/MockVotingEscrow.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\";\n\n// solhint-disable var-name-mixedcase\n// solhint-disable func-name-mixedcase\n\n/**\n * @dev Mock voting escrow with setters to manipulate its inner state.\n * Points are represented as mappings just for convenience, while keeping the same API for the public members\n * as the real voting escrow.\n */\ncontract MockVotingEscrow {\n uint256 public epoch;\n // epoch ==> Point\n mapping(uint256 => IVotingEscrow.Point) public point_history;\n // user ==> epoch ==> Point\n mapping(address => mapping(uint256 => IVotingEscrow.Point)) public user_point_history;\n // user ==> epoch\n mapping(address => uint256) public user_point_epoch;\n // user ==> lock's end\n mapping(address => uint256) public locked__end;\n // user ==> balance\n mapping(address => uint256) public balanceOf;\n\n ISmartWalletChecker private _smartWalletChecker;\n\n constructor(ISmartWalletChecker smartWalletChecker) {\n _smartWalletChecker = smartWalletChecker;\n }\n\n function smart_wallet_checker() external view returns (ISmartWalletChecker) {\n return _smartWalletChecker;\n }\n\n function setEpoch(uint256 _epoch) external {\n epoch = _epoch;\n }\n\n function setPointHistory(uint256 _epoch, IVotingEscrow.Point memory point) external {\n point_history[_epoch] = point;\n }\n\n function setUserPointEpoch(address user, uint256 _epoch) external {\n user_point_epoch[user] = _epoch;\n }\n\n function setUserPointHistory(\n address user,\n uint256 _epoch,\n IVotingEscrow.Point memory point\n ) external {\n user_point_history[user][_epoch] = point;\n }\n\n function setLockedEnd(address user, uint256 end) external {\n locked__end[user] = end;\n }\n\n function setBalanceOf(address user, uint256 balance) external {\n balanceOf[user] = balance;\n }\n}\n"},"contracts/test/TestAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\n// This contract maintains the old AccessControl behaviour which is used by BalancerGovernanceToken in production\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it.\n */\nabstract contract TestAccessControl {\n using EnumerableSet for EnumerableSet.AddressSet;\n using Address for address;\n\n struct RoleData {\n EnumerableSet.AddressSet members;\n bytes32 adminRole;\n }\n\n mapping(bytes32 => RoleData) private _roles;\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view returns (bool) {\n return _roles[role].members.contains(account);\n }\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\n return _roles[role].members.length();\n }\n\n // solhint-disable max-line-length\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n // solhint-enable max-line-length\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\n return _roles[role].members.at(index);\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\n return _roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) public virtual {\n require(hasRole(_roles[role].adminRole, msg.sender), \"AccessControl: sender must be an admin to grant\");\n\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) public virtual {\n require(hasRole(_roles[role].adminRole, msg.sender), \"AccessControl: sender must be an admin to revoke\");\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) public virtual {\n require(account == msg.sender, \"AccessControl: can only renounce roles for self\");\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event. Note that unlike {grantRole}, this function doesn't perform any\n * checks on the calling account.\n *\n * [WARNING]\n * ====\n * This function should only be called from the constructor when setting\n * up the initial roles for the system.\n *\n * Using this function in any other way is effectively circumventing the admin\n * system imposed by {AccessControl}.\n * ====\n */\n function _setupRole(bytes32 role, address account) internal virtual {\n _grantRole(role, account);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\n _roles[role].adminRole = adminRole;\n }\n\n function _grantRole(bytes32 role, address account) private {\n if (_roles[role].members.add(account)) {\n emit RoleGranted(role, account, msg.sender);\n }\n }\n\n function _revokeRole(bytes32 role, address account) private {\n if (_roles[role].members.remove(account)) {\n emit RoleRevoked(role, account, msg.sender);\n }\n }\n}\n"},"contracts/test/TestBalancerToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\";\n\nimport \"./TestAccessControl.sol\";\n\ncontract TestBalancerToken is TestAccessControl, ERC20, ERC20Burnable, ERC20Permit {\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n bytes32 public constant SNAPSHOT_ROLE = keccak256(\"SNAPSHOT_ROLE\");\n\n event Snapshot(uint256 id);\n\n constructor(\n address admin,\n string memory name,\n string memory symbol\n ) ERC20(name, symbol) ERC20Permit(name) {\n _setupDecimals(18);\n _setupRole(DEFAULT_ADMIN_ROLE, admin);\n _setupRole(MINTER_ROLE, admin);\n _setupRole(SNAPSHOT_ROLE, admin);\n }\n\n function mint(address recipient, uint256 amount) external {\n require(hasRole(MINTER_ROLE, msg.sender), \"NOT_MINTER\");\n _mint(recipient, amount);\n }\n\n function snapshot() external {\n require(hasRole(SNAPSHOT_ROLE, msg.sender), \"NOT_SNAPSHOTTER\");\n emit Snapshot(0);\n }\n}\n"},"contracts/test/TestFeeDistributor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../fee-distribution/FeeDistributor.sol\";\n\ncontract TestFeeDistributor is FeeDistributor {\n constructor(IVotingEscrow votingEscrow, uint256 startTime) FeeDistributor(votingEscrow, startTime) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function getUserLastEpochCheckpointed(address user) external view returns (uint256) {\n return _userState[user].lastEpochCheckpointed;\n }\n}\n"},"contracts/VotingEscrowDelegationProxy.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\ncontract VotingEscrowDelegationProxy is SingletonAuthentication {\n IERC20 private immutable _votingEscrow;\n IVeDelegation private _delegation;\n\n event DelegationImplementationUpdated(address indexed newImplementation);\n\n constructor(\n IVault vault,\n IERC20 votingEscrow,\n IVeDelegation delegation\n ) SingletonAuthentication(vault) {\n _votingEscrow = votingEscrow;\n _delegation = delegation;\n }\n\n /**\n * @notice Returns the current delegation implementation contract.\n */\n function getDelegationImplementation() external view returns (IVeDelegation) {\n return _delegation;\n }\n\n /**\n * @notice Returns the Voting Escrow (veBAL) contract.\n */\n function getVotingEscrow() external view returns (IERC20) {\n return _votingEscrow;\n }\n\n /**\n * @notice Get the adjusted veBAL balance from the active boost delegation contract\n * @param user The user to query the adjusted veBAL balance of\n * @return veBAL balance\n */\n function adjustedBalanceOf(address user) external view returns (uint256) {\n return _adjustedBalanceOf(user);\n }\n\n /**\n * @notice Get the adjusted veBAL balance from the active boost delegation contract\n * @param user The user to query the adjusted veBAL balance of\n * @return veBAL balance\n */\n // solhint-disable-next-line func-name-mixedcase\n function adjusted_balance_of(address user) external view returns (uint256) {\n return _adjustedBalanceOf(user);\n }\n\n /**\n * @notice Get the current veBAL total supply from the votingEscrow contract.\n * @return The current veBAL total supply.\n */\n function totalSupply() external view returns (uint256) {\n IVeDelegation implementation = _delegation;\n if (implementation == IVeDelegation(0)) {\n return IERC20(_votingEscrow).totalSupply();\n }\n return implementation.totalSupply();\n }\n\n // Internal functions\n\n function _adjustedBalanceOf(address user) internal view returns (uint256) {\n IVeDelegation implementation = _delegation;\n if (implementation == IVeDelegation(0)) {\n return IERC20(_votingEscrow).balanceOf(user);\n }\n return implementation.adjusted_balance_of(user);\n }\n\n // Admin functions\n\n function setDelegation(IVeDelegation delegation) external authenticate {\n // call `adjusted_balance_of` to make sure it works\n delegation.adjusted_balance_of(msg.sender);\n\n _delegation = delegation;\n emit DelegationImplementationUpdated(address(delegation));\n }\n\n function killDelegation() external authenticate {\n _delegation = IVeDelegation(0);\n emit DelegationImplementationUpdated(address(0));\n }\n}\n"},"contracts/VotingEscrowRemapper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\n/**\n * @notice This contract allows veBAL holders on Ethereum to assign their balance to designated addresses on each L2.\n * This is intended for smart contracts that are not deployed to the same address on all networks. EOA's are\n * expected to either use the same address, or manage delegation on L2 networks themselves.\n *\n * @dev For each network (chainId), we maintain a mapping between local (Ethereum) and remote (L2) addresses.\n * This contract remaps balance queries on remote network addresses to their corresponding local addresses.\n * Users able to call this contract can set their own mappings, or delegate this function to another account if they\n * cannot.\n */\ncontract VotingEscrowRemapper is IVotingEscrowRemapper, SingletonAuthentication, ReentrancyGuard {\n IVotingEscrow private immutable _votingEscrow;\n IOmniVotingEscrowAdaptor private _omniVotingEscrowAdaptor;\n mapping(uint16 => mapping(address => address)) private _localToRemoteAddressMap;\n mapping(uint16 => mapping(address => address)) private _remoteToLocalAddressMap;\n\n // Records a mapping from an address to another address which is authorized to manage its remote users.\n mapping(address => address) private _localRemappingManager;\n\n constructor(\n IVault vault,\n IVotingEscrow votingEscrow,\n IOmniVotingEscrowAdaptor omniVotingEscrowAdaptor\n ) SingletonAuthentication(vault) {\n _votingEscrow = votingEscrow;\n _omniVotingEscrowAdaptor = omniVotingEscrowAdaptor;\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getVotingEscrow() public view override returns (IVotingEscrow) {\n return _votingEscrow;\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getOmniVotingEscrowAdaptor() public view override returns (IOmniVotingEscrowAdaptor) {\n return _omniVotingEscrowAdaptor;\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getTotalSupplyPoint() external view override returns (IVotingEscrow.Point memory) {\n IVotingEscrow votingEscrow = getVotingEscrow();\n uint256 totalSupplyEpoch = votingEscrow.epoch();\n return votingEscrow.point_history(totalSupplyEpoch);\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getUserPoint(address user) external view override returns (IVotingEscrow.Point memory) {\n IVotingEscrow votingEscrow = getVotingEscrow();\n uint256 userEpoch = votingEscrow.user_point_epoch(user);\n return votingEscrow.user_point_history(user, userEpoch);\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getLockedEnd(address user) external view override returns (uint256) {\n return getVotingEscrow().locked__end(user);\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getLocalUser(address remoteUser, uint16 chainId) public view override returns (address) {\n return _remoteToLocalAddressMap[chainId][remoteUser];\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getRemoteUser(address localUser, uint16 chainId) public view override returns (address) {\n return _localToRemoteAddressMap[chainId][localUser];\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function getRemappingManager(address localUser) public view override returns (address) {\n return _localRemappingManager[localUser];\n }\n\n // Remapping Setters\n\n /// @inheritdoc IVotingEscrowRemapper\n function setNetworkRemapping(\n address localUser,\n address remoteUser,\n uint16 chainId\n ) external payable override nonReentrant {\n _require(msg.sender == localUser || msg.sender == _localRemappingManager[localUser], Errors.SENDER_NOT_ALLOWED);\n require(_isAllowedContract(localUser), \"Only contracts which can hold veBAL can set up a mapping\");\n require(remoteUser != address(0), \"Zero address cannot be used as remote user\");\n IOmniVotingEscrowAdaptor omniVotingEscrowAdaptor = getOmniVotingEscrowAdaptor();\n\n // We keep a 1-to-1 local-remote mapping for each chain.\n // If A --> B (i.e. A in the local chain is remapped to B in the remote chain), to keep the state consistent\n // the user effectively 'owns' both A and B in both chains.\n //\n // This means that whenever a new remapping is created (assuming A --> B previously):\n // - The remote address must not already be in use by another local user (C --> B is forbidden).\n // - The remote address must not be a local address that has already been remapped (C --> A is forbidden).\n // - The local address must not be the target remote address for another local user (B --> C is forbidden).\n //\n // Note that this means that it is possible to frontrun this call to grief a user by taking up their\n // selected remote address before they do so. This is mitigated somewhat by restricting potential attackers to\n // the set of contracts that are allowlisted to hold veBAL (and their remapping managers). Should\n // one of them grief, then Balancer governance can remove them from these allowlists.\n\n // B cannot be remapped to (i.e. be a remote) if a prior A --> B mapping exists.\n // To prevent it, we verify that the reverse mapping of our remote does not exist.\n require(\n _remoteToLocalAddressMap[chainId][remoteUser] == address(0),\n \"Cannot overwrite an existing mapping by another user\"\n );\n\n // A cannot be remapped to (i.e. be a remote) if a prior A --> B mapping exists.\n // To prevent it, we verify that the mapping of our remote does not exist.\n require(\n _localToRemoteAddressMap[chainId][remoteUser] == address(0),\n \"Cannot remap to an address that is in use locally\"\n );\n\n // B cannot be mapped from (i.e. be a local) if a prior A --> B mapping exists.\n // To prevent it, we verify that the reverse mapping of our local does not exist.\n require(\n _remoteToLocalAddressMap[chainId][localUser] == address(0),\n \"Cannot remap to an address that is in use remotely\"\n );\n\n // This is a best-effort check: we should not allow griefing the existing balance of an account,\n // because with this remapping we would overwrite it in the target chain ID.\n require(_votingEscrow.balanceOf(remoteUser) == 0, \"Target remote address has non-zero veBAL balance\");\n\n // Clear out the old remote user to avoid orphaned entries.\n address oldRemoteUser = _localToRemoteAddressMap[chainId][localUser];\n if (oldRemoteUser != address(0)) {\n _remoteToLocalAddressMap[chainId][oldRemoteUser] = address(0);\n emit RemoteAddressMappingCleared(oldRemoteUser, chainId);\n }\n\n // Set up new remapping.\n _remoteToLocalAddressMap[chainId][remoteUser] = localUser;\n _localToRemoteAddressMap[chainId][localUser] = remoteUser;\n\n emit AddressMappingUpdated(localUser, remoteUser, chainId);\n\n // Note: it is important to perform the bridge calls _after_ the mappings are settled, since the\n // omni voting escrow will rely on the correct mappings to bridge the balances.\n (uint256 nativeFee, ) = omniVotingEscrowAdaptor.estimateSendUserBalance(chainId);\n if (oldRemoteUser != address(0)) {\n require(msg.value >= nativeFee * 2, \"Insufficient ETH to bridge user balance\");\n // If there was an old mapping, send balance from (local) oldRemoteUser --> (remote) oldRemoteUser\n // This should clean up the existing bridged balance from localUser --> oldRemoteUser.\n omniVotingEscrowAdaptor.sendUserBalance{ value: nativeFee }(oldRemoteUser, chainId, payable(msg.sender));\n } else {\n require(msg.value >= nativeFee, \"Insufficient ETH to bridge user balance\");\n }\n\n // Bridge balance for new mapping localUser --> remoteUser.\n omniVotingEscrowAdaptor.sendUserBalance{ value: nativeFee }(localUser, chainId, payable(msg.sender));\n\n // Send back any leftover ETH to the caller.\n uint256 remainingBalance = address(this).balance;\n if (remainingBalance > 0) {\n Address.sendValue(msg.sender, remainingBalance);\n }\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function setNetworkRemappingManager(address localUser, address delegate)\n external\n override\n authenticate\n nonReentrant\n {\n require(_isAllowedContract(localUser), \"Only contracts which can hold veBAL may have a delegate\");\n\n _localRemappingManager[localUser] = delegate;\n emit AddressDelegateUpdated(localUser, delegate);\n }\n\n /// @inheritdoc IVotingEscrowRemapper\n function clearNetworkRemapping(address localUser, uint16 chainId) external payable override nonReentrant {\n require(localUser != address(0), \"localUser cannot be zero address\");\n require(!_isAllowedContract(localUser) || localUser == msg.sender, \"localUser is still in good standing\");\n IOmniVotingEscrowAdaptor omniVotingEscrowAdaptor = getOmniVotingEscrowAdaptor();\n\n address remoteUser = _localToRemoteAddressMap[chainId][localUser];\n require(remoteUser != address(0), \"Remapping to clear does not exist\");\n\n _remoteToLocalAddressMap[chainId][remoteUser] = address(0);\n _localToRemoteAddressMap[chainId][localUser] = address(0);\n\n emit AddressMappingUpdated(localUser, address(0), chainId);\n emit RemoteAddressMappingCleared(remoteUser, chainId);\n\n // Note: it is important to perform the bridge calls _after_ the mappings are settled, since the\n // omni voting escrow will rely on the correct mappings to bridge the balances.\n // Clean up the balance for the old mapping, and bridge the new (default) one.\n (uint256 nativeFee, ) = omniVotingEscrowAdaptor.estimateSendUserBalance(chainId);\n require(msg.value >= nativeFee * 2, \"Insufficient ETH to bridge user balance\");\n\n omniVotingEscrowAdaptor.sendUserBalance{ value: nativeFee }(localUser, chainId, payable(msg.sender));\n omniVotingEscrowAdaptor.sendUserBalance{ value: nativeFee }(remoteUser, chainId, payable(msg.sender));\n\n // Send back any leftover ETH to the caller.\n uint256 remainingBalance = address(this).balance;\n if (remainingBalance > 0) {\n Address.sendValue(msg.sender, remainingBalance);\n }\n }\n\n // Internal Functions\n\n /**\n * @notice Returns whether `localUser` is a contract which is authorized to hold veBAL.\n * @param localUser - The address to check against the `SmartWalletChecker`.\n */\n function _isAllowedContract(address localUser) private view returns (bool) {\n ISmartWalletChecker smartWalletChecker = getVotingEscrow().smart_wallet_checker();\n return smartWalletChecker.check(localUser);\n }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":9999},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"errors":[{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:34:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1582,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1343},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:42:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1827,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1588},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:34:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1582,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1343},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:42:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1827,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1588},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:34:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1582,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1343},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:42:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1827,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1588},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol:77:5: Warning: Function state mutability can be restricted to pure\n function _getChainId() private view returns (uint256 chainId) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Function state mutability can be restricted to pure","severity":"warning","sourceLocation":{"end":3620,"file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","start":3433},"type":"Warning"}],"sources":{"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol","exportedSymbols":{"IArbitrumFeeProvider":[20]},"id":21,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":20,"linearizedBaseContracts":[20],"name":"IArbitrumFeeProvider","nodeType":"ContractDefinition","nodes":[{"functionSelector":"ac8288c0","id":10,"implemented":false,"kind":"function","modifiers":[],"name":"getArbitrumFees","nodeType":"FunctionDefinition","parameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"782:2:0"},"returnParameters":{"id":9,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":10,"src":"845:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3,"name":"uint256","nodeType":"ElementaryTypeName","src":"845:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":10,"src":"875:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5,"name":"uint256","nodeType":"ElementaryTypeName","src":"875:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":10,"src":"905:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7,"name":"uint256","nodeType":"ElementaryTypeName","src":"905:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"831:109:0"},"scope":20,"src":"758:183:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e9bde604","id":19,"implemented":false,"kind":"function","modifiers":[],"name":"setArbitrumFees","nodeType":"FunctionDefinition","parameters":{"id":17,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":19,"src":"981:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":11,"name":"uint64","nodeType":"ElementaryTypeName","src":"981:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":14,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":19,"src":"1006:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":13,"name":"uint64","nodeType":"ElementaryTypeName","src":"1006:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":16,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":19,"src":"1031:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":15,"name":"uint64","nodeType":"ElementaryTypeName","src":"1031:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"971:90:0"},"returnParameters":{"id":18,"nodeType":"ParameterList","parameters":[],"src":"1070:0:0"},"scope":20,"src":"947:124:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":21,"src":"721:352:0"}],"src":"688:386:0"},"id":0},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","exportedSymbols":{"IAuthorizerAdaptor":[49]},"id":50,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":22,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:1"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":23,"nodeType":"ImportDirective","scope":50,"sourceUnit":2260,"src":"721:55:1","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":24,"nodeType":"ImportDirective","scope":50,"sourceUnit":3052,"src":"777:29:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":25,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":2259,"src":"840:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$2259","typeString":"contract IAuthentication"}},"id":26,"nodeType":"InheritanceSpecifier","src":"840:15:1"}],"contractDependencies":[2259],"contractKind":"interface","fullyImplemented":false,"id":49,"linearizedBaseContracts":[49,2259],"name":"IAuthorizerAdaptor","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":27,"nodeType":"StructuredDocumentation","src":"862:53:1","text":" @notice Returns the Balancer Vault"},"functionSelector":"8d928af8","id":32,"implemented":false,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":28,"nodeType":"ParameterList","parameters":[],"src":"937:2:1"},"returnParameters":{"id":31,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":32,"src":"963:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":29,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"963:6:1","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"962:8:1"},"scope":49,"src":"920:51:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":33,"nodeType":"StructuredDocumentation","src":"977:49:1","text":" @notice Returns the Authorizer"},"functionSelector":"aaabadc5","id":38,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":34,"nodeType":"ParameterList","parameters":[],"src":"1053:2:1"},"returnParameters":{"id":37,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":38,"src":"1079:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":35,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"1079:11:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1078:13:1"},"scope":49,"src":"1031:61:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":39,"nodeType":"StructuredDocumentation","src":"1098:331:1","text":" @notice Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\n @param target - Address of the contract to be called\n @param data - Calldata to be sent to the target contract\n @return The bytes encoded return value from the performed function call"},"functionSelector":"4036176a","id":48,"implemented":false,"kind":"function","modifiers":[],"name":"performAction","nodeType":"FunctionDefinition","parameters":{"id":44,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":48,"src":"1457:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40,"name":"address","nodeType":"ElementaryTypeName","src":"1457:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":48,"src":"1473:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":42,"name":"bytes","nodeType":"ElementaryTypeName","src":"1473:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1456:37:1"},"returnParameters":{"id":47,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":48,"src":"1520:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":45,"name":"bytes","nodeType":"ElementaryTypeName","src":"1520:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1519:14:1"},"scope":49,"src":"1434:100:1","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":50,"src":"808:728:1"}],"src":"688:849:1"},"id":1},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","exportedSymbols":{"IAuthorizerAdaptorEntrypoint":[62]},"id":63,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":51,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:2"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","file":"./IAuthorizerAdaptor.sol","id":52,"nodeType":"ImportDirective","scope":63,"sourceUnit":50,"src":"721:34:2","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":54,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"863:18:2","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":55,"nodeType":"InheritanceSpecifier","src":"863:18:2"}],"contractDependencies":[49,2259],"contractKind":"interface","documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"757:63:2","text":" @notice Interface for `AuthorizerAdaptorEntrypoint`."},"fullyImplemented":false,"id":62,"linearizedBaseContracts":[62,49,2259],"name":"IAuthorizerAdaptorEntrypoint","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":56,"nodeType":"StructuredDocumentation","src":"888:57:2","text":" @notice Returns the Authorizer Adaptor"},"functionSelector":"e758d36b","id":61,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizerAdaptor","nodeType":"FunctionDefinition","parameters":{"id":57,"nodeType":"ParameterList","parameters":[],"src":"979:2:2"},"returnParameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":61,"src":"1005:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":58,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1005:18:2","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"1004:20:2"},"scope":62,"src":"950:75:2","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":63,"src":"821:206:2"}],"src":"688:340:2"},"id":2},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","exportedSymbols":{"IBalancerMinter":[197]},"id":198,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":64,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:3"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":65,"nodeType":"ImportDirective","scope":198,"sourceUnit":2448,"src":"721:51:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":66,"nodeType":"StructuredDocumentation","src":"774:89:3","text":" @dev Base minter interface, applicable to Mainnet minter or L2 pseudo minters."},"fullyImplemented":false,"id":197,"linearizedBaseContracts":[197],"name":"IBalancerMinter","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":74,"name":"Minted","nodeType":"EventDefinition","parameters":{"id":73,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":74,"src":"909:25:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67,"name":"address","nodeType":"ElementaryTypeName","src":"909:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":70,"indexed":false,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":74,"src":"936:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69,"name":"address","nodeType":"ElementaryTypeName","src":"936:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":72,"indexed":false,"mutability":"mutable","name":"minted","nodeType":"VariableDeclaration","scope":74,"src":"951:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71,"name":"uint256","nodeType":"ElementaryTypeName","src":"951:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"908:58:3"},"src":"896:71:3"},{"documentation":{"id":75,"nodeType":"StructuredDocumentation","src":"973:79:3","text":" @notice Returns the address of the Balancer Governance Token"},"functionSelector":"c0039699","id":80,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":76,"nodeType":"ParameterList","parameters":[],"src":"1082:2:3"},"returnParameters":{"id":79,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":80,"src":"1108:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":77,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1108:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1107:8:3"},"scope":197,"src":"1057:59:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":81,"nodeType":"StructuredDocumentation","src":"1122:162:3","text":" @notice Mint everything which belongs to `msg.sender` and send to them\n @param gauge `LiquidityGauge` address to get mintable amount from"},"functionSelector":"6a627842","id":88,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":84,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":88,"src":"1303:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82,"name":"address","nodeType":"ElementaryTypeName","src":"1303:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1302:15:3"},"returnParameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":88,"src":"1336:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1335:9:3"},"scope":197,"src":"1289:56:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":89,"nodeType":"StructuredDocumentation","src":"1351:151:3","text":" @notice Mint everything which belongs to `msg.sender` across multiple gauges\n @param gauges List of `LiquidityGauge` addresses"},"functionSelector":"397ada21","id":97,"implemented":false,"kind":"function","modifiers":[],"name":"mintMany","nodeType":"FunctionDefinition","parameters":{"id":93,"nodeType":"ParameterList","parameters":[{"constant":false,"id":92,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":97,"src":"1525:25:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":90,"name":"address","nodeType":"ElementaryTypeName","src":"1525:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":91,"nodeType":"ArrayTypeName","src":"1525:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1524:27:3"},"returnParameters":{"id":96,"nodeType":"ParameterList","parameters":[{"constant":false,"id":95,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":97,"src":"1570:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"1570:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1569:9:3"},"scope":197,"src":"1507:72:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":98,"nodeType":"StructuredDocumentation","src":"1585:256:3","text":" @notice Mint tokens for `user`\n @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n @param gauge `LiquidityGauge` address to get mintable amount from\n @param user Address to mint to"},"functionSelector":"7504a15d","id":107,"implemented":false,"kind":"function","modifiers":[],"name":"mintFor","nodeType":"FunctionDefinition","parameters":{"id":103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":100,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":107,"src":"1863:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":99,"name":"address","nodeType":"ElementaryTypeName","src":"1863:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":102,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":107,"src":"1878:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":101,"name":"address","nodeType":"ElementaryTypeName","src":"1878:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1862:29:3"},"returnParameters":{"id":106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":105,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":107,"src":"1910:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1910:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1909:9:3"},"scope":197,"src":"1846:73:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":108,"nodeType":"StructuredDocumentation","src":"1925:262:3","text":" @notice Mint tokens for `user` across multiple gauges\n @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n @param gauges List of `LiquidityGauge` addresses\n @param user Address to mint to"},"functionSelector":"3b9f7384","id":118,"implemented":false,"kind":"function","modifiers":[],"name":"mintManyFor","nodeType":"FunctionDefinition","parameters":{"id":114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":111,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":118,"src":"2213:25:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":109,"name":"address","nodeType":"ElementaryTypeName","src":"2213:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":110,"nodeType":"ArrayTypeName","src":"2213:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":113,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":118,"src":"2240:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":112,"name":"address","nodeType":"ElementaryTypeName","src":"2240:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2212:41:3"},"returnParameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":118,"src":"2272:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":115,"name":"uint256","nodeType":"ElementaryTypeName","src":"2272:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2271:9:3"},"scope":197,"src":"2192:89:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"2287:84:3","text":" @notice The total number of tokens minted for `user` from `gauge`"},"functionSelector":"8b752bb0","id":128,"implemented":false,"kind":"function","modifiers":[],"name":"minted","nodeType":"FunctionDefinition","parameters":{"id":124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":128,"src":"2392:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"2392:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":123,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":128,"src":"2406:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":122,"name":"address","nodeType":"ElementaryTypeName","src":"2406:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2391:29:3"},"returnParameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":128,"src":"2444:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":125,"name":"uint256","nodeType":"ElementaryTypeName","src":"2444:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2443:9:3"},"scope":197,"src":"2376:77:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"2459:81:3","text":" @notice Whether `minter` is approved to mint tokens for `user`"},"functionSelector":"3c543bc6","id":138,"implemented":false,"kind":"function","modifiers":[],"name":"getMinterApproval","nodeType":"FunctionDefinition","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":138,"src":"2572:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":130,"name":"address","nodeType":"ElementaryTypeName","src":"2572:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":138,"src":"2588:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":132,"name":"address","nodeType":"ElementaryTypeName","src":"2588:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2571:30:3"},"returnParameters":{"id":137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":136,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":138,"src":"2625:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":135,"name":"bool","nodeType":"ElementaryTypeName","src":"2625:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2624:6:3"},"scope":197,"src":"2545:86:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"2637:89:3","text":" @notice Set whether `minter` is approved to mint tokens on your behalf"},"functionSelector":"0de54ba0","id":146,"implemented":false,"kind":"function","modifiers":[],"name":"setMinterApproval","nodeType":"FunctionDefinition","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":146,"src":"2758:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"2758:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":146,"src":"2774:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":142,"name":"bool","nodeType":"ElementaryTypeName","src":"2774:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2757:31:3"},"returnParameters":{"id":145,"nodeType":"ParameterList","parameters":[],"src":"2797:0:3"},"scope":197,"src":"2731:67:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":147,"nodeType":"StructuredDocumentation","src":"2804:145:3","text":" @notice Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing\n them."},"functionSelector":"c6542794","id":164,"implemented":false,"kind":"function","modifiers":[],"name":"setMinterApprovalWithSignature","nodeType":"FunctionDefinition","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":149,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":164,"src":"3003:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":148,"name":"address","nodeType":"ElementaryTypeName","src":"3003:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":151,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":164,"src":"3027:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":150,"name":"bool","nodeType":"ElementaryTypeName","src":"3027:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":153,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":164,"src":"3050:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":152,"name":"address","nodeType":"ElementaryTypeName","src":"3050:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":155,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":164,"src":"3072:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":154,"name":"uint256","nodeType":"ElementaryTypeName","src":"3072:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":157,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":164,"src":"3098:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":156,"name":"uint8","nodeType":"ElementaryTypeName","src":"3098:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":159,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":164,"src":"3115:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":158,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3115:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":164,"src":"3134:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":160,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3134:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2993:156:3"},"returnParameters":{"id":163,"nodeType":"ParameterList","parameters":[],"src":"3158:0:3"},"scope":197,"src":"2954:205:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":165,"nodeType":"StructuredDocumentation","src":"3379:81:3","text":" @notice Whether `minter` is approved to mint tokens for `user`"},"functionSelector":"a0990033","id":174,"implemented":false,"kind":"function","modifiers":[],"name":"allowed_to_mint_for","nodeType":"FunctionDefinition","parameters":{"id":170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":167,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":174,"src":"3494:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":166,"name":"address","nodeType":"ElementaryTypeName","src":"3494:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":169,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":174,"src":"3510:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":168,"name":"address","nodeType":"ElementaryTypeName","src":"3510:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3493:30:3"},"returnParameters":{"id":173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":172,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":174,"src":"3547:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":171,"name":"bool","nodeType":"ElementaryTypeName","src":"3547:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3546:6:3"},"scope":197,"src":"3465:88:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"3559:247:3","text":" @notice Mint everything which belongs to `msg.sender` across multiple gauges\n @dev This function is not recommended as `mintMany()` is more flexible and gas efficient\n @param gauges List of `LiquidityGauge` addresses"},"functionSelector":"a51e1904","id":182,"implemented":false,"kind":"function","modifiers":[],"name":"mint_many","nodeType":"FunctionDefinition","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":179,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":182,"src":"3830:26:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_calldata_ptr","typeString":"address[8]"},"typeName":{"baseType":{"id":176,"name":"address","nodeType":"ElementaryTypeName","src":"3830:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":178,"length":{"hexValue":"38","id":177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3838:1:3","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"ArrayTypeName","src":"3830:10:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_storage_ptr","typeString":"address[8]"}},"visibility":"internal"}],"src":"3829:28:3"},"returnParameters":{"id":181,"nodeType":"ParameterList","parameters":[],"src":"3866:0:3"},"scope":197,"src":"3811:56:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":183,"nodeType":"StructuredDocumentation","src":"3873:256:3","text":" @notice Mint tokens for `user`\n @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n @param gauge `LiquidityGauge` address to get mintable amount from\n @param user Address to mint to"},"functionSelector":"27f18ae3","id":190,"implemented":false,"kind":"function","modifiers":[],"name":"mint_for","nodeType":"FunctionDefinition","parameters":{"id":188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":185,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":190,"src":"4152:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":184,"name":"address","nodeType":"ElementaryTypeName","src":"4152:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":187,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":190,"src":"4167:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":186,"name":"address","nodeType":"ElementaryTypeName","src":"4167:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4151:29:3"},"returnParameters":{"id":189,"nodeType":"ParameterList","parameters":[],"src":"4189:0:3"},"scope":197,"src":"4134:56:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":191,"nodeType":"StructuredDocumentation","src":"4196:88:3","text":" @notice Toggle whether `minter` is approved to mint tokens for `user`"},"functionSelector":"dd289d60","id":196,"implemented":false,"kind":"function","modifiers":[],"name":"toggle_approve_mint","nodeType":"FunctionDefinition","parameters":{"id":194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":193,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":196,"src":"4318:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":192,"name":"address","nodeType":"ElementaryTypeName","src":"4318:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4317:16:3"},"returnParameters":{"id":195,"nodeType":"ParameterList","parameters":[],"src":"4342:0:3"},"scope":197,"src":"4289:54:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":198,"src":"864:3481:3"}],"src":"688:3658:3"},"id":3},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","exportedSymbols":{"IBalancerToken":[274]},"id":275,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":199,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:4"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":200,"nodeType":"ImportDirective","scope":275,"sourceUnit":2448,"src":"721:51:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":201,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"802:6:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":202,"nodeType":"InheritanceSpecifier","src":"802:6:4"}],"contractDependencies":[2447],"contractKind":"interface","fullyImplemented":false,"id":274,"linearizedBaseContracts":[274,2447],"name":"IBalancerToken","nodeType":"ContractDefinition","nodes":[{"functionSelector":"40c10f19","id":209,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":204,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":209,"src":"829:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":203,"name":"address","nodeType":"ElementaryTypeName","src":"829:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":206,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":209,"src":"841:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":205,"name":"uint256","nodeType":"ElementaryTypeName","src":"841:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"828:28:4"},"returnParameters":{"id":208,"nodeType":"ParameterList","parameters":[],"src":"865:0:4"},"scope":274,"src":"815:51:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ca15c873","id":216,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleMemberCount","nodeType":"FunctionDefinition","parameters":{"id":212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":211,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":216,"src":"900:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":210,"name":"bytes32","nodeType":"ElementaryTypeName","src":"900:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"899:14:4"},"returnParameters":{"id":215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":214,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":216,"src":"937:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":213,"name":"uint256","nodeType":"ElementaryTypeName","src":"937:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"936:9:4"},"scope":274,"src":"872:74:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9010d07c","id":225,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleMember","nodeType":"FunctionDefinition","parameters":{"id":221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":218,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":225,"src":"975:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":217,"name":"bytes32","nodeType":"ElementaryTypeName","src":"975:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":220,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":225,"src":"989:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":219,"name":"uint256","nodeType":"ElementaryTypeName","src":"989:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"974:29:4"},"returnParameters":{"id":224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":223,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":225,"src":"1027:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":222,"name":"address","nodeType":"ElementaryTypeName","src":"1027:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1026:9:4"},"scope":274,"src":"952:84:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"91d14854","id":234,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nodeType":"FunctionDefinition","parameters":{"id":230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":227,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":234,"src":"1059:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":226,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1059:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":229,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":234,"src":"1073:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":228,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1058:31:4"},"returnParameters":{"id":233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":232,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":234,"src":"1113:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":231,"name":"bool","nodeType":"ElementaryTypeName","src":"1113:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1112:6:4"},"scope":274,"src":"1042:77:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"248a9ca3","id":241,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nodeType":"FunctionDefinition","parameters":{"id":237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":236,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":241,"src":"1147:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":235,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1147:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1146:14:4"},"returnParameters":{"id":240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":239,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":241,"src":"1184:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":238,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1184:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1183:9:4"},"scope":274,"src":"1125:68:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2f2ff15d","id":248,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nodeType":"FunctionDefinition","parameters":{"id":246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":243,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":248,"src":"1218:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":242,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1218:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":245,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":248,"src":"1232:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":244,"name":"address","nodeType":"ElementaryTypeName","src":"1232:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1217:31:4"},"returnParameters":{"id":247,"nodeType":"ParameterList","parameters":[],"src":"1257:0:4"},"scope":274,"src":"1199:59:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d547741f","id":255,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nodeType":"FunctionDefinition","parameters":{"id":253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":250,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":255,"src":"1284:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":249,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1284:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":252,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":255,"src":"1298:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":251,"name":"address","nodeType":"ElementaryTypeName","src":"1298:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1283:31:4"},"returnParameters":{"id":254,"nodeType":"ParameterList","parameters":[],"src":"1323:0:4"},"scope":274,"src":"1264:60:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a217fddf","id":260,"implemented":false,"kind":"function","modifiers":[],"name":"DEFAULT_ADMIN_ROLE","nodeType":"FunctionDefinition","parameters":{"id":256,"nodeType":"ParameterList","parameters":[],"src":"1410:2:4"},"returnParameters":{"id":259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":260,"src":"1436:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":257,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1436:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1435:9:4"},"scope":274,"src":"1383:62:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d5391393","id":265,"implemented":false,"kind":"function","modifiers":[],"name":"MINTER_ROLE","nodeType":"FunctionDefinition","parameters":{"id":261,"nodeType":"ParameterList","parameters":[],"src":"1524:2:4"},"returnParameters":{"id":264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":263,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":265,"src":"1550:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":262,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1550:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1549:9:4"},"scope":274,"src":"1504:55:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7028e2cd","id":270,"implemented":false,"kind":"function","modifiers":[],"name":"SNAPSHOT_ROLE","nodeType":"FunctionDefinition","parameters":{"id":266,"nodeType":"ParameterList","parameters":[],"src":"1640:2:4"},"returnParameters":{"id":269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":268,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":270,"src":"1666:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":267,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1666:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1665:9:4"},"scope":274,"src":"1618:57:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9711715a","id":273,"implemented":false,"kind":"function","modifiers":[],"name":"snapshot","nodeType":"FunctionDefinition","parameters":{"id":271,"nodeType":"ParameterList","parameters":[],"src":"1698:2:4"},"returnParameters":{"id":272,"nodeType":"ParameterList","parameters":[],"src":"1709:0:4"},"scope":274,"src":"1681:29:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":275,"src":"774:938:4"}],"src":"688:1025:4"},"id":4},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","exportedSymbols":{"IBalancerTokenAdmin":[327]},"id":328,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":276,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:5"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":277,"nodeType":"ImportDirective","scope":328,"sourceUnit":2260,"src":"721:55:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","file":"./IBalancerToken.sol","id":278,"nodeType":"ImportDirective","scope":328,"sourceUnit":275,"src":"778:30:5","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":279,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":2259,"src":"843:15:5","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$2259","typeString":"contract IAuthentication"}},"id":280,"nodeType":"InheritanceSpecifier","src":"843:15:5"}],"contractDependencies":[2259],"contractKind":"interface","fullyImplemented":false,"id":327,"linearizedBaseContracts":[327,2259],"name":"IBalancerTokenAdmin","nodeType":"ContractDefinition","nodes":[{"functionSelector":"4dbac733","id":285,"implemented":false,"kind":"function","modifiers":[],"name":"INITIAL_RATE","nodeType":"FunctionDefinition","parameters":{"id":281,"nodeType":"ParameterList","parameters":[],"src":"929:2:5"},"returnParameters":{"id":284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":283,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":285,"src":"955:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":282,"name":"uint256","nodeType":"ElementaryTypeName","src":"955:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"954:9:5"},"scope":327,"src":"908:56:5","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b87b5616","id":290,"implemented":false,"kind":"function","modifiers":[],"name":"RATE_REDUCTION_TIME","nodeType":"FunctionDefinition","parameters":{"id":286,"nodeType":"ParameterList","parameters":[],"src":"998:2:5"},"returnParameters":{"id":289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":288,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":290,"src":"1024:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":287,"name":"uint256","nodeType":"ElementaryTypeName","src":"1024:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1023:9:5"},"scope":327,"src":"970:63:5","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"21609bbf","id":295,"implemented":false,"kind":"function","modifiers":[],"name":"RATE_REDUCTION_COEFFICIENT","nodeType":"FunctionDefinition","parameters":{"id":291,"nodeType":"ParameterList","parameters":[],"src":"1074:2:5"},"returnParameters":{"id":294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":293,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":295,"src":"1100:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":292,"name":"uint256","nodeType":"ElementaryTypeName","src":"1100:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1099:9:5"},"scope":327,"src":"1039:70:5","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7efad8e0","id":300,"implemented":false,"kind":"function","modifiers":[],"name":"RATE_DENOMINATOR","nodeType":"FunctionDefinition","parameters":{"id":296,"nodeType":"ParameterList","parameters":[],"src":"1140:2:5"},"returnParameters":{"id":299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":298,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":300,"src":"1166:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":297,"name":"uint256","nodeType":"ElementaryTypeName","src":"1166:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1165:9:5"},"scope":327,"src":"1115:60:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":301,"nodeType":"StructuredDocumentation","src":"1224:79:5","text":" @notice Returns the address of the Balancer Governance Token"},"functionSelector":"c0039699","id":306,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":302,"nodeType":"ParameterList","parameters":[],"src":"1333:2:5"},"returnParameters":{"id":305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":304,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":306,"src":"1359:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"},"typeName":{"id":303,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":274,"src":"1359:14:5","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"1358:16:5"},"scope":327,"src":"1308:67:5","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0f15f4c0","id":309,"implemented":false,"kind":"function","modifiers":[],"name":"activate","nodeType":"FunctionDefinition","parameters":{"id":307,"nodeType":"ParameterList","parameters":[],"src":"1398:2:5"},"returnParameters":{"id":308,"nodeType":"ParameterList","parameters":[],"src":"1409:0:5"},"scope":327,"src":"1381:29:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2c4e722e","id":314,"implemented":false,"kind":"function","modifiers":[],"name":"rate","nodeType":"FunctionDefinition","parameters":{"id":310,"nodeType":"ParameterList","parameters":[],"src":"1429:2:5"},"returnParameters":{"id":313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":312,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":314,"src":"1455:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":311,"name":"uint256","nodeType":"ElementaryTypeName","src":"1455:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1454:9:5"},"scope":327,"src":"1416:48:5","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a228bced","id":319,"implemented":false,"kind":"function","modifiers":[],"name":"startEpochTimeWrite","nodeType":"FunctionDefinition","parameters":{"id":315,"nodeType":"ParameterList","parameters":[],"src":"1498:2:5"},"returnParameters":{"id":318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":317,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":319,"src":"1519:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":316,"name":"uint256","nodeType":"ElementaryTypeName","src":"1519:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1518:9:5"},"scope":327,"src":"1470:58:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"40c10f19","id":326,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":321,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":326,"src":"1548:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":320,"name":"address","nodeType":"ElementaryTypeName","src":"1548:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":323,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":326,"src":"1560:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":322,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1547:28:5"},"returnParameters":{"id":325,"nodeType":"ParameterList","parameters":[],"src":"1584:0:5"},"scope":327,"src":"1534:51:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":328,"src":"810:777:5"}],"src":"688:900:5"},"id":5},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","exportedSymbols":{"IChildChainGauge":[364]},"id":365,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":329,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:6"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol","file":"../solidity-utils/helpers/IVersion.sol","id":330,"nodeType":"ImportDirective","scope":365,"sourceUnit":2341,"src":"721:48:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","file":"./ILiquidityGaugeFactory.sol","id":331,"nodeType":"ImportDirective","scope":365,"sourceUnit":942,"src":"770:38:6","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":332,"name":"IVersion","nodeType":"UserDefinedTypeName","referencedDeclaration":2340,"src":"1063:8:6","typeDescriptions":{"typeIdentifier":"t_contract$_IVersion_$2340","typeString":"contract IVersion"}},"id":333,"nodeType":"InheritanceSpecifier","src":"1063:8:6"}],"contractDependencies":[2340],"contractKind":"interface","fullyImplemented":false,"id":364,"linearizedBaseContracts":[364,2340],"name":"IChildChainGauge","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":334,"nodeType":"StructuredDocumentation","src":"1078:159:6","text":" @notice Proxy constructor.\n @param lpToken Pool allowed to stake in this gauge.\n @param version Gauge version string identifier."},"functionSelector":"f399e22e","id":341,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":336,"mutability":"mutable","name":"lpToken","nodeType":"VariableDeclaration","scope":341,"src":"1262:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":335,"name":"address","nodeType":"ElementaryTypeName","src":"1262:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":338,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":341,"src":"1279:21:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":337,"name":"string","nodeType":"ElementaryTypeName","src":"1279:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1261:40:6"},"returnParameters":{"id":340,"nodeType":"ParameterList","parameters":[],"src":"1310:0:6"},"scope":364,"src":"1242:69:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":342,"nodeType":"StructuredDocumentation","src":"1317:201:6","text":" @notice Returns BAL liquidity emissions calculated during checkpoints for the given user.\n @param user User address.\n @return uint256 BAL amount to issue for the address."},"functionSelector":"09400707","id":349,"implemented":false,"kind":"function","modifiers":[],"name":"integrate_fraction","nodeType":"FunctionDefinition","parameters":{"id":345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":344,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":349,"src":"1551:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":343,"name":"address","nodeType":"ElementaryTypeName","src":"1551:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1550:14:6"},"returnParameters":{"id":348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":347,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":349,"src":"1588:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":346,"name":"uint256","nodeType":"ElementaryTypeName","src":"1588:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1587:9:6"},"scope":364,"src":"1523:74:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":350,"nodeType":"StructuredDocumentation","src":"1603:131:6","text":" @notice Records a checkpoint for a given user.\n @param user User address.\n @return bool Always true."},"functionSelector":"4b820093","id":357,"implemented":false,"kind":"function","modifiers":[],"name":"user_checkpoint","nodeType":"FunctionDefinition","parameters":{"id":353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":352,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":357,"src":"1764:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":351,"name":"address","nodeType":"ElementaryTypeName","src":"1764:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1763:14:6"},"returnParameters":{"id":356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":357,"src":"1796:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":354,"name":"bool","nodeType":"ElementaryTypeName","src":"1796:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1795:6:6"},"scope":364,"src":"1739:63:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":358,"nodeType":"StructuredDocumentation","src":"1808:57:6","text":" @notice Returns gauge factory address."},"functionSelector":"c45a0155","id":363,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nodeType":"FunctionDefinition","parameters":{"id":359,"nodeType":"ParameterList","parameters":[],"src":"1886:2:6"},"returnParameters":{"id":362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":361,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":363,"src":"1912:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":360,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"1912:22:6","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"1911:24:6"},"scope":364,"src":"1870:66:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":365,"src":"1033:905:6"}],"src":"688:1251:6"},"id":6},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol","exportedSymbols":{"IChildChainLiquidityGaugeFactory":[434]},"id":435,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":366,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:7"},{"id":367,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:7"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol","file":"./IChildChainStreamer.sol","id":368,"nodeType":"ImportDirective","scope":435,"sourceUnit":463,"src":"755:35:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"./ILiquidityGauge.sol","id":369,"nodeType":"ImportDirective","scope":435,"sourceUnit":929,"src":"791:31:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","file":"./ILiquidityGaugeFactory.sol","id":370,"nodeType":"ImportDirective","scope":435,"sourceUnit":942,"src":"823:38:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol","file":"./IRewardsOnlyGauge.sol","id":371,"nodeType":"ImportDirective","scope":435,"sourceUnit":1206,"src":"862:33:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":372,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"943:22:7","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":373,"nodeType":"InheritanceSpecifier","src":"943:22:7"}],"contractDependencies":[941],"contractKind":"interface","fullyImplemented":false,"id":434,"linearizedBaseContracts":[434,941],"name":"IChildChainLiquidityGaugeFactory","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":381,"name":"RewardsOnlyGaugeCreated","nodeType":"EventDefinition","parameters":{"id":380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":375,"indexed":true,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":381,"src":"1002:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":374,"name":"address","nodeType":"ElementaryTypeName","src":"1002:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":377,"indexed":true,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":381,"src":"1025:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":376,"name":"address","nodeType":"ElementaryTypeName","src":"1025:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":379,"indexed":false,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":381,"src":"1047:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":378,"name":"address","nodeType":"ElementaryTypeName","src":"1047:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1001:63:7"},"src":"972:93:7"},{"documentation":{"id":382,"nodeType":"StructuredDocumentation","src":"1071:96:7","text":" @notice Returns the address of the implementation used for gauge deployments."},"functionSelector":"39312dee","id":387,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeImplementation","nodeType":"FunctionDefinition","parameters":{"id":383,"nodeType":"ParameterList","parameters":[],"src":"1203:2:7"},"returnParameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":385,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":387,"src":"1229:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"},"typeName":{"id":384,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"1229:15:7","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"visibility":"internal"}],"src":"1228:17:7"},"scope":434,"src":"1172:74:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":388,"nodeType":"StructuredDocumentation","src":"1252:99:7","text":" @notice Returns the address of the implementation used for streamer deployments."},"functionSelector":"f9e0a13e","id":393,"implemented":false,"kind":"function","modifiers":[],"name":"getChildChainStreamerImplementation","nodeType":"FunctionDefinition","parameters":{"id":389,"nodeType":"ParameterList","parameters":[],"src":"1400:2:7"},"returnParameters":{"id":392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":391,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":393,"src":"1426:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":390,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"1426:19:7","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"internal"}],"src":"1425:21:7"},"scope":434,"src":"1356:91:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":394,"nodeType":"StructuredDocumentation","src":"1453:80:7","text":" @notice Returns the address of the gauge belonging to `pool`."},"functionSelector":"a8ea6875","id":401,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolGauge","nodeType":"FunctionDefinition","parameters":{"id":397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":396,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":401,"src":"1560:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":395,"name":"address","nodeType":"ElementaryTypeName","src":"1560:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1559:14:7"},"returnParameters":{"id":400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":399,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":401,"src":"1597:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"},"typeName":{"id":398,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"1597:15:7","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"visibility":"internal"}],"src":"1596:17:7"},"scope":434,"src":"1538:76:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":402,"nodeType":"StructuredDocumentation","src":"1620:84:7","text":" @notice Returns the address of the streamer belonging to `gauge`."},"functionSelector":"90b20087","id":409,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeStreamer","nodeType":"FunctionDefinition","parameters":{"id":405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":404,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":409,"src":"1735:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":403,"name":"address","nodeType":"ElementaryTypeName","src":"1735:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1734:15:7"},"returnParameters":{"id":408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":407,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":409,"src":"1773:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":406,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1772:9:7"},"scope":434,"src":"1709:73:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":410,"nodeType":"StructuredDocumentation","src":"1788:82:7","text":" @notice Returns true if `streamer` was created by this factory."},"functionSelector":"cbda9327","id":417,"implemented":false,"kind":"function","modifiers":[],"name":"isStreamerFromFactory","nodeType":"FunctionDefinition","parameters":{"id":413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":412,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":417,"src":"1906:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":411,"name":"address","nodeType":"ElementaryTypeName","src":"1906:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1905:18:7"},"returnParameters":{"id":416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":415,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":417,"src":"1947:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":414,"name":"bool","nodeType":"ElementaryTypeName","src":"1947:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1946:6:7"},"scope":434,"src":"1875:78:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":418,"nodeType":"StructuredDocumentation","src":"1959:81:7","text":" @notice Returns the address of the pool which `gauge` belongs."},"functionSelector":"744a65dd","id":425,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugePool","nodeType":"FunctionDefinition","parameters":{"id":421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":420,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":425,"src":"2067:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":419,"name":"address","nodeType":"ElementaryTypeName","src":"2067:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2066:15:7"},"returnParameters":{"id":424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":423,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":425,"src":"2105:6:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":422,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2105:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2104:8:7"},"scope":434,"src":"2045:68:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":426,"nodeType":"StructuredDocumentation","src":"2119:91:7","text":" @notice Returns the address of the streamer belonging to `pool`'s gauge."},"functionSelector":"8a4ffeb0","id":433,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolStreamer","nodeType":"FunctionDefinition","parameters":{"id":429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":428,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":433,"src":"2240:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":427,"name":"address","nodeType":"ElementaryTypeName","src":"2240:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2239:14:7"},"returnParameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":431,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":433,"src":"2277:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":430,"name":"address","nodeType":"ElementaryTypeName","src":"2277:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2276:9:7"},"scope":434,"src":"2215:71:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":435,"src":"897:1391:7"}],"src":"688:1601:7"},"id":7},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol","exportedSymbols":{"IChildChainStreamer":[462]},"id":463,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":436,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:8"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":437,"nodeType":"ImportDirective","scope":463,"sourceUnit":2448,"src":"721:51:8","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":462,"linearizedBaseContracts":[462],"name":"IChildChainStreamer","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c4d66de8","id":442,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":439,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":442,"src":"1008:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":438,"name":"address","nodeType":"ElementaryTypeName","src":"1008:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1007:15:8"},"returnParameters":{"id":441,"nodeType":"ParameterList","parameters":[],"src":"1031:0:8"},"scope":462,"src":"988:44:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1afe22a6","id":445,"implemented":false,"kind":"function","modifiers":[],"name":"get_reward","nodeType":"FunctionDefinition","parameters":{"id":443,"nodeType":"ParameterList","parameters":[],"src":"1057:2:8"},"returnParameters":{"id":444,"nodeType":"ParameterList","parameters":[],"src":"1068:0:8"},"scope":462,"src":"1038:31:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"54c49fe9","id":452,"implemented":false,"kind":"function","modifiers":[],"name":"reward_tokens","nodeType":"FunctionDefinition","parameters":{"id":448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":452,"src":"1098:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"1098:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1097:15:8"},"returnParameters":{"id":451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":450,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":452,"src":"1136:6:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":449,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1136:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1135:8:8"},"scope":462,"src":"1075:69:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"661ab0b2","id":461,"implemented":false,"kind":"function","modifiers":[],"name":"add_reward","nodeType":"FunctionDefinition","parameters":{"id":459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":454,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":461,"src":"1179:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":453,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1179:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":456,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":461,"src":"1207:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":455,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":458,"mutability":"mutable","name":"duration","nodeType":"VariableDeclaration","scope":461,"src":"1236:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":457,"name":"uint256","nodeType":"ElementaryTypeName","src":"1236:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1169:89:8"},"returnParameters":{"id":460,"nodeType":"ParameterList","parameters":[],"src":"1267:0:8"},"scope":462,"src":"1150:118:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":463,"src":"952:318:8"}],"src":"688:583:8"},"id":8},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol","exportedSymbols":{"IFeeDistributor":[624]},"id":625,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":464,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:9"},{"id":465,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:9"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":466,"nodeType":"ImportDirective","scope":625,"sourceUnit":2448,"src":"755:51:9","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","file":"./IVotingEscrow.sol","id":467,"nodeType":"ImportDirective","scope":625,"sourceUnit":1560,"src":"808:29:9","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"839:490:9","text":" @title Fee Distributor\n @notice Distributes any tokens transferred to the contract (e.g. Protocol fees and any BAL emissions) among veBAL\n holders proportionally based on a snapshot of the week at which the tokens are sent to the FeeDistributor contract.\n @dev Supports distributing arbitrarily many different tokens. In order to start distributing a new token to veBAL\n holders simply transfer the tokens to the `FeeDistributor` contract and then call `checkpointToken`."},"fullyImplemented":false,"id":624,"linearizedBaseContracts":[624],"name":"IFeeDistributor","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":476,"name":"TokenCheckpointed","nodeType":"EventDefinition","parameters":{"id":475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"indexed":false,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":476,"src":"1386:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":469,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1386:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":472,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":476,"src":"1400:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"1400:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":474,"indexed":false,"mutability":"mutable","name":"lastCheckpointTimestamp","nodeType":"VariableDeclaration","scope":476,"src":"1416:31:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":473,"name":"uint256","nodeType":"ElementaryTypeName","src":"1416:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1385:63:9"},"src":"1362:87:9"},{"anonymous":false,"id":486,"name":"TokensClaimed","nodeType":"EventDefinition","parameters":{"id":485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":478,"indexed":false,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":486,"src":"1474:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":477,"name":"address","nodeType":"ElementaryTypeName","src":"1474:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":480,"indexed":false,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":486,"src":"1488:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":479,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1488:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":482,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":486,"src":"1502:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":481,"name":"uint256","nodeType":"ElementaryTypeName","src":"1502:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":484,"indexed":false,"mutability":"mutable","name":"userTokenTimeCursor","nodeType":"VariableDeclaration","scope":486,"src":"1518:27:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":483,"name":"uint256","nodeType":"ElementaryTypeName","src":"1518:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1473:73:9"},"src":"1454:93:9"},{"documentation":{"id":487,"nodeType":"StructuredDocumentation","src":"1553:74:9","text":" @notice Returns the VotingEscrow (veBAL) token contract"},"functionSelector":"08b0308a","id":492,"implemented":false,"kind":"function","modifiers":[],"name":"getVotingEscrow","nodeType":"FunctionDefinition","parameters":{"id":488,"nodeType":"ParameterList","parameters":[],"src":"1656:2:9"},"returnParameters":{"id":491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":490,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":492,"src":"1682:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":489,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"1682:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"src":"1681:15:9"},"scope":624,"src":"1632:65:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":493,"nodeType":"StructuredDocumentation","src":"1703:109:9","text":" @notice Returns the global time cursor representing the most earliest uncheckpointed week."},"functionSelector":"82aa5ad4","id":498,"implemented":false,"kind":"function","modifiers":[],"name":"getTimeCursor","nodeType":"FunctionDefinition","parameters":{"id":494,"nodeType":"ParameterList","parameters":[],"src":"1839:2:9"},"returnParameters":{"id":497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":496,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":498,"src":"1865:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":495,"name":"uint256","nodeType":"ElementaryTypeName","src":"1865:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1864:9:9"},"scope":624,"src":"1817:57:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":499,"nodeType":"StructuredDocumentation","src":"1880:168:9","text":" @notice Returns the user-level time cursor representing the most earliest uncheckpointed week.\n @param user - The address of the user to query."},"functionSelector":"876e69a1","id":506,"implemented":false,"kind":"function","modifiers":[],"name":"getUserTimeCursor","nodeType":"FunctionDefinition","parameters":{"id":502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":501,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":506,"src":"2080:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":500,"name":"address","nodeType":"ElementaryTypeName","src":"2080:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2079:14:9"},"returnParameters":{"id":505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":506,"src":"2117:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"2117:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2116:9:9"},"scope":624,"src":"2053:73:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":507,"nodeType":"StructuredDocumentation","src":"2132:185:9","text":" @notice Returns the token-level time cursor storing the timestamp at up to which tokens have been distributed.\n @param token - The ERC20 token address to query."},"functionSelector":"acbc1428","id":514,"implemented":false,"kind":"function","modifiers":[],"name":"getTokenTimeCursor","nodeType":"FunctionDefinition","parameters":{"id":510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":509,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":514,"src":"2350:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":508,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2350:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2349:14:9"},"returnParameters":{"id":513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":512,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":514,"src":"2387:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":511,"name":"uint256","nodeType":"ElementaryTypeName","src":"2387:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2386:9:9"},"scope":624,"src":"2322:74:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":515,"nodeType":"StructuredDocumentation","src":"2402:236:9","text":" @notice Returns the user-level time cursor storing the timestamp of the latest token distribution claimed.\n @param user - The address of the user to query.\n @param token - The ERC20 token address to query."},"functionSelector":"8050a7ee","id":524,"implemented":false,"kind":"function","modifiers":[],"name":"getUserTokenTimeCursor","nodeType":"FunctionDefinition","parameters":{"id":520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":517,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":524,"src":"2675:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":516,"name":"address","nodeType":"ElementaryTypeName","src":"2675:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":519,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":524,"src":"2689:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":518,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2689:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2674:28:9"},"returnParameters":{"id":523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":522,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":524,"src":"2726:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":521,"name":"uint256","nodeType":"ElementaryTypeName","src":"2726:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2725:9:9"},"scope":624,"src":"2643:92:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":525,"nodeType":"StructuredDocumentation","src":"2741:479:9","text":" @notice Returns the user's cached balance of veBAL as of the provided timestamp.\n @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n This function requires `user` to have been checkpointed past `timestamp` so that their balance is cached.\n @param user - The address of the user of which to read the cached balance of.\n @param timestamp - The timestamp at which to read the `user`'s cached balance at."},"functionSelector":"de681faf","id":534,"implemented":false,"kind":"function","modifiers":[],"name":"getUserBalanceAtTimestamp","nodeType":"FunctionDefinition","parameters":{"id":530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":527,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":534,"src":"3260:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":526,"name":"address","nodeType":"ElementaryTypeName","src":"3260:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":529,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":534,"src":"3274:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":528,"name":"uint256","nodeType":"ElementaryTypeName","src":"3274:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3259:33:9"},"returnParameters":{"id":533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":532,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":534,"src":"3316:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":531,"name":"uint256","nodeType":"ElementaryTypeName","src":"3316:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3315:9:9"},"scope":624,"src":"3225:100:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":535,"nodeType":"StructuredDocumentation","src":"3331:391:9","text":" @notice Returns the cached total supply of veBAL as of the provided timestamp.\n @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n This function requires the contract to have been checkpointed past `timestamp` so that the supply is cached.\n @param timestamp - The timestamp at which to read the cached total supply at."},"functionSelector":"4f3c5090","id":542,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalSupplyAtTimestamp","nodeType":"FunctionDefinition","parameters":{"id":538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":537,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":542,"src":"3762:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":536,"name":"uint256","nodeType":"ElementaryTypeName","src":"3762:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3761:19:9"},"returnParameters":{"id":541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":540,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":542,"src":"3804:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":539,"name":"uint256","nodeType":"ElementaryTypeName","src":"3804:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3803:9:9"},"scope":624,"src":"3727:86:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":543,"nodeType":"StructuredDocumentation","src":"3819:82:9","text":" @notice Returns the FeeDistributor's cached balance of `token`."},"functionSelector":"2308805b","id":550,"implemented":false,"kind":"function","modifiers":[],"name":"getTokenLastBalance","nodeType":"FunctionDefinition","parameters":{"id":546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":545,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":550,"src":"3935:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":544,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3935:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"3934:14:9"},"returnParameters":{"id":549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":548,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":550,"src":"3972:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":547,"name":"uint256","nodeType":"ElementaryTypeName","src":"3972:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3971:9:9"},"scope":624,"src":"3906:75:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":551,"nodeType":"StructuredDocumentation","src":"3987:280:9","text":" @notice Returns the amount of `token` which the FeeDistributor received in the week beginning at `timestamp`.\n @param token - The ERC20 token address to query.\n @param timestamp - The timestamp corresponding to the beginning of the week of interest."},"functionSelector":"d3dc4ca1","id":560,"implemented":false,"kind":"function","modifiers":[],"name":"getTokensDistributedInWeek","nodeType":"FunctionDefinition","parameters":{"id":556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":553,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":560,"src":"4308:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":552,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"4308:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":555,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":560,"src":"4322:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":554,"name":"uint256","nodeType":"ElementaryTypeName","src":"4322:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4307:33:9"},"returnParameters":{"id":559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":558,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":560,"src":"4364:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":557,"name":"uint256","nodeType":"ElementaryTypeName","src":"4364:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4363:9:9"},"scope":624,"src":"4272:101:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":561,"nodeType":"StructuredDocumentation","src":"4398:623:9","text":" @notice Deposits tokens to be distributed in the current week.\n @dev Sending tokens directly to the FeeDistributor instead of using `depositTokens` may result in tokens being\n retroactively distributed to past weeks, or for the distribution to carry over to future weeks.\n If for some reason `depositTokens` cannot be called, in order to ensure that all tokens are correctly distributed\n manually call `checkpointToken` before and after the token transfer.\n @param token - The ERC20 token address to distribute.\n @param amount - The amount of tokens to deposit."},"functionSelector":"338b5dea","id":568,"implemented":false,"kind":"function","modifiers":[],"name":"depositToken","nodeType":"FunctionDefinition","parameters":{"id":566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":563,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":568,"src":"5048:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":562,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"5048:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":565,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":568,"src":"5062:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":564,"name":"uint256","nodeType":"ElementaryTypeName","src":"5062:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5047:30:9"},"returnParameters":{"id":567,"nodeType":"ParameterList","parameters":[],"src":"5086:0:9"},"scope":624,"src":"5026:61:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":569,"nodeType":"StructuredDocumentation","src":"5093:352:9","text":" @notice Deposits tokens to be distributed in the current week.\n @dev A version of `depositToken` which supports depositing multiple `tokens` at once.\n See `depositToken` for more details.\n @param tokens - An array of ERC20 token addresses to distribute.\n @param amounts - An array of token amounts to deposit."},"functionSelector":"7b8d6221","id":578,"implemented":false,"kind":"function","modifiers":[],"name":"depositTokens","nodeType":"FunctionDefinition","parameters":{"id":576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":572,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":578,"src":"5473:24:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":570,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"5473:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":571,"nodeType":"ArrayTypeName","src":"5473:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":575,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":578,"src":"5499:26:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":573,"name":"uint256","nodeType":"ElementaryTypeName","src":"5499:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":574,"nodeType":"ArrayTypeName","src":"5499:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5472:54:9"},"returnParameters":{"id":577,"nodeType":"ParameterList","parameters":[],"src":"5535:0:9"},"scope":624,"src":"5450:86:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":579,"nodeType":"StructuredDocumentation","src":"5564:207:9","text":" @notice Caches the total supply of veBAL at the beginning of each week.\n This function will be called automatically before claiming tokens to ensure the contract is properly updated."},"functionSelector":"c2c4c5c1","id":582,"implemented":false,"kind":"function","modifiers":[],"name":"checkpoint","nodeType":"FunctionDefinition","parameters":{"id":580,"nodeType":"ParameterList","parameters":[],"src":"5795:2:9"},"returnParameters":{"id":581,"nodeType":"ParameterList","parameters":[],"src":"5806:0:9"},"scope":624,"src":"5776:31:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":583,"nodeType":"StructuredDocumentation","src":"5813:274:9","text":" @notice Caches the user's balance of veBAL at the beginning of each week.\n This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n @param user - The address of the user to be checkpointed."},"functionSelector":"14866e08","id":588,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointUser","nodeType":"FunctionDefinition","parameters":{"id":586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":585,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":588,"src":"6116:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":584,"name":"address","nodeType":"ElementaryTypeName","src":"6116:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6115:14:9"},"returnParameters":{"id":587,"nodeType":"ParameterList","parameters":[],"src":"6138:0:9"},"scope":624,"src":"6092:47:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":589,"nodeType":"StructuredDocumentation","src":"6145:509:9","text":" @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n @dev Any `token` balance held by the FeeDistributor above that which is returned by `getTokenLastBalance`\n will be distributed evenly across the time period since `token` was last checkpointed.\n This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n @param token - The ERC20 token address to be checkpointed."},"functionSelector":"3902b9bc","id":594,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointToken","nodeType":"FunctionDefinition","parameters":{"id":592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":591,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":594,"src":"6684:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":590,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"6684:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"6683:14:9"},"returnParameters":{"id":593,"nodeType":"ParameterList","parameters":[],"src":"6706:0:9"},"scope":624,"src":"6659:48:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":595,"nodeType":"StructuredDocumentation","src":"6713:325:9","text":" @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n @dev A version of `checkpointToken` which supports checkpointing multiple tokens.\n See `checkpointToken` for more details.\n @param tokens - An array of ERC20 token addresses to be checkpointed."},"functionSelector":"905d10ac","id":601,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointTokens","nodeType":"FunctionDefinition","parameters":{"id":599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":598,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":601,"src":"7069:24:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":596,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"7069:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":597,"nodeType":"ArrayTypeName","src":"7069:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"7068:26:9"},"returnParameters":{"id":600,"nodeType":"ParameterList","parameters":[],"src":"7103:0:9"},"scope":624,"src":"7043:61:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":602,"nodeType":"StructuredDocumentation","src":"7127:486:9","text":" @notice Claims all pending distributions of the provided token for a user.\n @dev It's not necessary to explicitly checkpoint before calling this function, it will ensure the FeeDistributor\n is up to date before calculating the amount of tokens to be claimed.\n @param user - The user on behalf of which to claim.\n @param token - The ERC20 token address to be claimed.\n @return The amount of `token` sent to `user` as a result of claiming."},"functionSelector":"ca31879d","id":611,"implemented":false,"kind":"function","modifiers":[],"name":"claimToken","nodeType":"FunctionDefinition","parameters":{"id":607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":604,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":611,"src":"7638:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":603,"name":"address","nodeType":"ElementaryTypeName","src":"7638:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":606,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":611,"src":"7652:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":605,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"7652:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"7637:28:9"},"returnParameters":{"id":610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":609,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":611,"src":"7684:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":608,"name":"uint256","nodeType":"ElementaryTypeName","src":"7684:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7683:9:9"},"scope":624,"src":"7618:75:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":612,"nodeType":"StructuredDocumentation","src":"7699:452:9","text":" @notice Claims a number of tokens on behalf of a user.\n @dev A version of `claimToken` which supports claiming multiple `tokens` on behalf of `user`.\n See `claimToken` for more details.\n @param user - The user on behalf of which to claim.\n @param tokens - An array of ERC20 token addresses to be claimed.\n @return An array of the amounts of each token in `tokens` sent to `user` as a result of claiming."},"functionSelector":"88720467","id":623,"implemented":false,"kind":"function","modifiers":[],"name":"claimTokens","nodeType":"FunctionDefinition","parameters":{"id":618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":614,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":623,"src":"8177:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":613,"name":"address","nodeType":"ElementaryTypeName","src":"8177:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":617,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":623,"src":"8191:24:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":615,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"8191:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":616,"nodeType":"ArrayTypeName","src":"8191:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"8176:40:9"},"returnParameters":{"id":622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":621,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":623,"src":"8235:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":619,"name":"uint256","nodeType":"ElementaryTypeName","src":"8235:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":620,"nodeType":"ArrayTypeName","src":"8235:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"8234:18:9"},"scope":624,"src":"8156:97:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":625,"src":"1330:6925:9"}],"src":"688:7568:9"},"id":9},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol","exportedSymbols":{"IGaugeAdder":[739]},"id":740,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":626,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:10"},{"id":627,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:10"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","file":"./IAuthorizerAdaptorEntrypoint.sol","id":628,"nodeType":"ImportDirective","scope":740,"sourceUnit":63,"src":"755:44:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"./IGaugeController.sol","id":629,"nodeType":"ImportDirective","scope":740,"sourceUnit":822,"src":"800:32:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"./ILiquidityGauge.sol","id":630,"nodeType":"ImportDirective","scope":740,"sourceUnit":929,"src":"833:31:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","file":"./ILiquidityGaugeFactory.sol","id":631,"nodeType":"ImportDirective","scope":740,"sourceUnit":942,"src":"865:38:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","file":"./IStakingLiquidityGauge.sol","id":632,"nodeType":"ImportDirective","scope":740,"sourceUnit":1455,"src":"904:38:10","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":633,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":2259,"src":"969:15:10","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$2259","typeString":"contract IAuthentication"}},"id":634,"nodeType":"InheritanceSpecifier","src":"969:15:10"}],"contractDependencies":[2259],"contractKind":"interface","fullyImplemented":false,"id":739,"linearizedBaseContracts":[739,2259],"name":"IGaugeAdder","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IGaugeAdder.GaugeType","id":643,"members":[{"id":635,"name":"LiquidityMiningCommittee","nodeType":"EnumValue","src":"1080:24:10"},{"id":636,"name":"veBAL","nodeType":"EnumValue","src":"1106:5:10"},{"id":637,"name":"Ethereum","nodeType":"EnumValue","src":"1113:8:10"},{"id":638,"name":"Polygon","nodeType":"EnumValue","src":"1123:7:10"},{"id":639,"name":"Arbitrum","nodeType":"EnumValue","src":"1132:8:10"},{"id":640,"name":"Optimism","nodeType":"EnumValue","src":"1142:8:10"},{"id":641,"name":"Gnosis","nodeType":"EnumValue","src":"1152:6:10"},{"id":642,"name":"ZKSync","nodeType":"EnumValue","src":"1160:6:10"}],"name":"GaugeType","nodeType":"EnumDefinition","src":"1063:105:10"},{"anonymous":false,"id":649,"name":"GaugeTypeAdded","nodeType":"EventDefinition","parameters":{"id":648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":645,"indexed":true,"mutability":"mutable","name":"indexedGaugeType","nodeType":"VariableDeclaration","scope":649,"src":"1305:31:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":644,"name":"string","nodeType":"ElementaryTypeName","src":"1305:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":647,"indexed":false,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":649,"src":"1338:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":646,"name":"string","nodeType":"ElementaryTypeName","src":"1338:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1304:51:10"},"src":"1284:72:10"},{"anonymous":false,"id":657,"name":"GaugeFactorySet","nodeType":"EventDefinition","parameters":{"id":656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":651,"indexed":true,"mutability":"mutable","name":"indexedGaugeType","nodeType":"VariableDeclaration","scope":657,"src":"1383:31:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":650,"name":"string","nodeType":"ElementaryTypeName","src":"1383:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":653,"indexed":false,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":657,"src":"1416:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":652,"name":"string","nodeType":"ElementaryTypeName","src":"1416:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":655,"indexed":false,"mutability":"mutable","name":"gaugeFactory","nodeType":"VariableDeclaration","scope":657,"src":"1434:35:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":654,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"1434:22:10","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"1382:88:10"},"src":"1361:110:10"},{"documentation":{"id":658,"nodeType":"StructuredDocumentation","src":"1477:93:10","text":" @notice Returns the address of the Authorizer adaptor entrypoint contract."},"functionSelector":"7afcf0e6","id":663,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizerAdaptorEntrypoint","nodeType":"FunctionDefinition","parameters":{"id":659,"nodeType":"ParameterList","parameters":[],"src":"1614:2:10"},"returnParameters":{"id":662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":661,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":663,"src":"1640:28:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":660,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"1640:28:10","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"internal"}],"src":"1639:30:10"},"scope":739,"src":"1575:95:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":664,"nodeType":"StructuredDocumentation","src":"1676:70:10","text":" @notice Returns the address of the Gauge Controller"},"functionSelector":"58de9ade","id":669,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeController","nodeType":"FunctionDefinition","parameters":{"id":665,"nodeType":"ParameterList","parameters":[],"src":"1778:2:10"},"returnParameters":{"id":668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":667,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":669,"src":"1804:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":666,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1804:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"internal"}],"src":"1803:18:10"},"scope":739,"src":"1751:71:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":670,"nodeType":"StructuredDocumentation","src":"1828:59:10","text":" @notice Returns the list of gauge types."},"functionSelector":"afcb1a86","id":676,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeTypes","nodeType":"FunctionDefinition","parameters":{"id":671,"nodeType":"ParameterList","parameters":[],"src":"1914:2:10"},"returnParameters":{"id":675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":674,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":676,"src":"1940:15:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":672,"name":"string","nodeType":"ElementaryTypeName","src":"1940:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":673,"nodeType":"ArrayTypeName","src":"1940:8:10","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"src":"1939:17:10"},"scope":739,"src":"1892:65:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":677,"nodeType":"StructuredDocumentation","src":"1963:81:10","text":" @notice Returns gauge type name registered at the given index."},"functionSelector":"08ceb030","id":684,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeTypeAtIndex","nodeType":"FunctionDefinition","parameters":{"id":680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":679,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":684,"src":"2078:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":678,"name":"uint256","nodeType":"ElementaryTypeName","src":"2078:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2077:15:10"},"returnParameters":{"id":683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":682,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":684,"src":"2116:13:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":681,"name":"string","nodeType":"ElementaryTypeName","src":"2116:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2115:15:10"},"scope":739,"src":"2049:82:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":685,"nodeType":"StructuredDocumentation","src":"2137:61:10","text":" @notice Returns the number of gauge types."},"functionSelector":"96432aeb","id":690,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeTypesCount","nodeType":"FunctionDefinition","parameters":{"id":686,"nodeType":"ParameterList","parameters":[],"src":"2230:2:10"},"returnParameters":{"id":689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":688,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":690,"src":"2256:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":687,"name":"uint256","nodeType":"ElementaryTypeName","src":"2256:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2255:9:10"},"scope":739,"src":"2203:62:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":691,"nodeType":"StructuredDocumentation","src":"2271:90:10","text":" @notice Returns true if the given gauge type is valid; false otherwise."},"functionSelector":"16e772bc","id":698,"implemented":false,"kind":"function","modifiers":[],"name":"isValidGaugeType","nodeType":"FunctionDefinition","parameters":{"id":694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":693,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":698,"src":"2392:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":692,"name":"string","nodeType":"ElementaryTypeName","src":"2392:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2391:25:10"},"returnParameters":{"id":697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":696,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":698,"src":"2440:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":695,"name":"bool","nodeType":"ElementaryTypeName","src":"2440:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2439:6:10"},"scope":739,"src":"2366:80:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":699,"nodeType":"StructuredDocumentation","src":"2452:74:10","text":" @notice Returns the factory for gauge type `gaugeType`."},"functionSelector":"572cb6a5","id":706,"implemented":false,"kind":"function","modifiers":[],"name":"getFactoryForGaugeType","nodeType":"FunctionDefinition","parameters":{"id":702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":701,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":706,"src":"2563:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":700,"name":"string","nodeType":"ElementaryTypeName","src":"2563:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2562:25:10"},"returnParameters":{"id":705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":704,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":706,"src":"2611:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":703,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"2611:22:10","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"2610:24:10"},"scope":739,"src":"2531:104:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":707,"nodeType":"StructuredDocumentation","src":"2641:248:10","text":" @notice Returns true if `gauge` has been deployed by the factory for the gauge type `gaugeType`.\n Note that if a gauge type's factory changes then this function will start returning false for previously\n valid gauges."},"functionSelector":"a0ade33e","id":716,"implemented":false,"kind":"function","modifiers":[],"name":"isGaugeFromValidFactory","nodeType":"FunctionDefinition","parameters":{"id":712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":709,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":716,"src":"2927:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":708,"name":"address","nodeType":"ElementaryTypeName","src":"2927:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":711,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":716,"src":"2942:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":710,"name":"string","nodeType":"ElementaryTypeName","src":"2942:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2926:40:10"},"returnParameters":{"id":715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":714,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":716,"src":"2990:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":713,"name":"bool","nodeType":"ElementaryTypeName","src":"2990:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2989:6:10"},"scope":739,"src":"2894:102:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":717,"nodeType":"StructuredDocumentation","src":"3002:212:10","text":" @notice Adds a new `gaugeType` corresponding to a new network, which allows setting a factory and adding gauges\n for the type later on.\n @param gaugeType Name of the new gauge type."},"functionSelector":"231856fa","id":722,"implemented":false,"kind":"function","modifiers":[],"name":"addGaugeType","nodeType":"FunctionDefinition","parameters":{"id":720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":719,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":722,"src":"3241:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":718,"name":"string","nodeType":"ElementaryTypeName","src":"3241:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3240:25:10"},"returnParameters":{"id":721,"nodeType":"ParameterList","parameters":[],"src":"3274:0:10"},"scope":739,"src":"3219:56:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":723,"nodeType":"StructuredDocumentation","src":"3281:468:10","text":" @notice Adds a new gauge to the GaugeController for the given `gaugeType` type.\n @dev When adding gauges for L2 networks or sidechains, this must be called with the address of the *root* gauge\n which is deployed on Ethereum. It should *not* be called with the address of the child gauge which is deployed on\n the L2 / sidechain.\n If the gauge added is an Ethereum gauge, it cannot be a gauge for the 80BAL-20WETH pool."},"functionSelector":"5bf71434","id":730,"implemented":false,"kind":"function","modifiers":[],"name":"addGauge","nodeType":"FunctionDefinition","parameters":{"id":728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":725,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":730,"src":"3772:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":724,"name":"address","nodeType":"ElementaryTypeName","src":"3772:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":727,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":730,"src":"3787:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":726,"name":"string","nodeType":"ElementaryTypeName","src":"3787:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3771:40:10"},"returnParameters":{"id":729,"nodeType":"ParameterList","parameters":[],"src":"3820:0:10"},"scope":739,"src":"3754:67:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":731,"nodeType":"StructuredDocumentation","src":"3827:194:10","text":" @notice Sets `factory` as the allowlisted factory contract for gauges with type `gaugeType`.\n @dev This function can either set a new factory or replace an existing one."},"functionSelector":"066edd7a","id":738,"implemented":false,"kind":"function","modifiers":[],"name":"setGaugeFactory","nodeType":"FunctionDefinition","parameters":{"id":736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":733,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":738,"src":"4051:30:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":732,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"4051:22:10","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"},{"constant":false,"id":735,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":738,"src":"4083:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":734,"name":"string","nodeType":"ElementaryTypeName","src":"4083:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4050:57:10"},"returnParameters":{"id":737,"nodeType":"ParameterList","parameters":[],"src":"4116:0:10"},"scope":739,"src":"4026:91:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":740,"src":"944:3175:10"}],"src":"688:3432:10"},"id":10},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","exportedSymbols":{"IGaugeController":[821]},"id":822,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":741,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:11"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":742,"nodeType":"ImportDirective","scope":822,"sourceUnit":2448,"src":"721:51:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","file":"./IAuthorizerAdaptor.sol","id":743,"nodeType":"ImportDirective","scope":822,"sourceUnit":50,"src":"774:34:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","file":"./IVotingEscrow.sol","id":744,"nodeType":"ImportDirective","scope":822,"sourceUnit":1560,"src":"809:29:11","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":821,"linearizedBaseContracts":[821],"name":"IGaugeController","nodeType":"ContractDefinition","nodes":[{"functionSelector":"615e5237","id":749,"implemented":false,"kind":"function","modifiers":[],"name":"checkpoint_gauge","nodeType":"FunctionDefinition","parameters":{"id":747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":746,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":749,"src":"1077:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":745,"name":"address","nodeType":"ElementaryTypeName","src":"1077:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1076:15:11"},"returnParameters":{"id":748,"nodeType":"ParameterList","parameters":[],"src":"1100:0:11"},"scope":821,"src":"1051:50:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d3078c94","id":758,"implemented":false,"kind":"function","modifiers":[],"name":"gauge_relative_weight","nodeType":"FunctionDefinition","parameters":{"id":754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":751,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":758,"src":"1138:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":750,"name":"address","nodeType":"ElementaryTypeName","src":"1138:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":753,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":758,"src":"1153:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":752,"name":"uint256","nodeType":"ElementaryTypeName","src":"1153:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1137:29:11"},"returnParameters":{"id":757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":756,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":758,"src":"1190:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":755,"name":"uint256","nodeType":"ElementaryTypeName","src":"1190:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1189:9:11"},"scope":821,"src":"1107:92:11","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"dfe05031","id":763,"implemented":false,"kind":"function","modifiers":[],"name":"voting_escrow","nodeType":"FunctionDefinition","parameters":{"id":759,"nodeType":"ParameterList","parameters":[],"src":"1227:2:11"},"returnParameters":{"id":762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":761,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":763,"src":"1253:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":760,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"1253:13:11","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"src":"1252:15:11"},"scope":821,"src":"1205:63:11","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fc0c546a","id":768,"implemented":false,"kind":"function","modifiers":[],"name":"token","nodeType":"FunctionDefinition","parameters":{"id":764,"nodeType":"ParameterList","parameters":[],"src":"1288:2:11"},"returnParameters":{"id":767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":766,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":768,"src":"1314:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":765,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1314:6:11","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1313:8:11"},"scope":821,"src":"1274:48:11","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"92d0d232","id":775,"implemented":false,"kind":"function","modifiers":[],"name":"add_type","nodeType":"FunctionDefinition","parameters":{"id":773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":770,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":775,"src":"1346:20:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":769,"name":"string","nodeType":"ElementaryTypeName","src":"1346:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":772,"mutability":"mutable","name":"weight","nodeType":"VariableDeclaration","scope":775,"src":"1368:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":771,"name":"uint256","nodeType":"ElementaryTypeName","src":"1368:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1345:38:11"},"returnParameters":{"id":774,"nodeType":"ParameterList","parameters":[],"src":"1392:0:11"},"scope":821,"src":"1328:65:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"db1ca260","id":782,"implemented":false,"kind":"function","modifiers":[],"name":"change_type_weight","nodeType":"FunctionDefinition","parameters":{"id":780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":777,"mutability":"mutable","name":"typeId","nodeType":"VariableDeclaration","scope":782,"src":"1427:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":776,"name":"int128","nodeType":"ElementaryTypeName","src":"1427:6:11","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":779,"mutability":"mutable","name":"weight","nodeType":"VariableDeclaration","scope":782,"src":"1442:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":778,"name":"uint256","nodeType":"ElementaryTypeName","src":"1442:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1426:31:11"},"returnParameters":{"id":781,"nodeType":"ParameterList","parameters":[],"src":"1466:0:11"},"scope":821,"src":"1399:68:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3a04f900","id":789,"implemented":false,"kind":"function","modifiers":[],"name":"add_gauge","nodeType":"FunctionDefinition","parameters":{"id":787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":784,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":789,"src":"1492:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":783,"name":"address","nodeType":"ElementaryTypeName","src":"1492:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":786,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":789,"src":"1507:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":785,"name":"int128","nodeType":"ElementaryTypeName","src":"1507:6:11","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1491:33:11"},"returnParameters":{"id":788,"nodeType":"ParameterList","parameters":[],"src":"1533:0:11"},"scope":821,"src":"1473:61:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9fba03a1","id":794,"implemented":false,"kind":"function","modifiers":[],"name":"n_gauge_types","nodeType":"FunctionDefinition","parameters":{"id":790,"nodeType":"ParameterList","parameters":[],"src":"1562:2:11"},"returnParameters":{"id":793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":792,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":794,"src":"1588:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":791,"name":"int128","nodeType":"ElementaryTypeName","src":"1588:6:11","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1587:8:11"},"scope":821,"src":"1540:56:11","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"3f9095b7","id":801,"implemented":false,"kind":"function","modifiers":[],"name":"gauge_types","nodeType":"FunctionDefinition","parameters":{"id":797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":796,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":801,"src":"1623:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":795,"name":"address","nodeType":"ElementaryTypeName","src":"1623:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1622:15:11"},"returnParameters":{"id":800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":799,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":801,"src":"1661:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":798,"name":"int128","nodeType":"ElementaryTypeName","src":"1661:6:11","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1660:8:11"},"scope":821,"src":"1602:67:11","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"f851a440","id":806,"implemented":false,"kind":"function","modifiers":[],"name":"admin","nodeType":"FunctionDefinition","parameters":{"id":802,"nodeType":"ParameterList","parameters":[],"src":"1689:2:11"},"returnParameters":{"id":805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":804,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":806,"src":"1715:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":803,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1715:18:11","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"1714:20:11"},"scope":821,"src":"1675:60:11","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"61df1bf9","id":813,"implemented":false,"kind":"function","modifiers":[],"name":"gauge_exists","nodeType":"FunctionDefinition","parameters":{"id":809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":808,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":813,"src":"1763:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":807,"name":"address","nodeType":"ElementaryTypeName","src":"1763:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1762:15:11"},"returnParameters":{"id":812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":813,"src":"1801:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":810,"name":"bool","nodeType":"ElementaryTypeName","src":"1801:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1800:6:11"},"scope":821,"src":"1741:66:11","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a4d7a250","id":820,"implemented":false,"kind":"function","modifiers":[],"name":"time_weight","nodeType":"FunctionDefinition","parameters":{"id":816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":815,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":820,"src":"1834:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":814,"name":"address","nodeType":"ElementaryTypeName","src":"1834:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1833:15:11"},"returnParameters":{"id":819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":818,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":820,"src":"1872:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":817,"name":"uint256","nodeType":"ElementaryTypeName","src":"1872:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1871:9:11"},"scope":821,"src":"1813:68:11","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":822,"src":"1018:865:11"}],"src":"688:1196:11"},"id":11},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol","exportedSymbols":{"IL1StandardBridge":[840]},"id":841,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":823,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:12"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":824,"nodeType":"StructuredDocumentation","src":"721:91:12","text":" @notice Standard token bridging interface, common to Optimism and Base networks."},"fullyImplemented":false,"id":840,"linearizedBaseContracts":[840],"name":"IL1StandardBridge","nodeType":"ContractDefinition","nodes":[{"functionSelector":"838b2520","id":839,"implemented":false,"kind":"function","modifiers":[],"name":"depositERC20To","nodeType":"FunctionDefinition","parameters":{"id":837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":826,"mutability":"mutable","name":"_l1Token","nodeType":"VariableDeclaration","scope":839,"src":"880:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":825,"name":"address","nodeType":"ElementaryTypeName","src":"880:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":828,"mutability":"mutable","name":"_l2Token","nodeType":"VariableDeclaration","scope":839,"src":"906:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":827,"name":"address","nodeType":"ElementaryTypeName","src":"906:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":830,"mutability":"mutable","name":"_to","nodeType":"VariableDeclaration","scope":839,"src":"932:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":829,"name":"address","nodeType":"ElementaryTypeName","src":"932:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":832,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":839,"src":"953:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":831,"name":"uint256","nodeType":"ElementaryTypeName","src":"953:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":834,"mutability":"mutable","name":"_l2Gas","nodeType":"VariableDeclaration","scope":839,"src":"978:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":833,"name":"uint32","nodeType":"ElementaryTypeName","src":"978:6:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":836,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":839,"src":"1001:20:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":835,"name":"bytes","nodeType":"ElementaryTypeName","src":"1001:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"870:157:12"},"returnParameters":{"id":838,"nodeType":"ParameterList","parameters":[],"src":"1036:0:12"},"scope":840,"src":"847:190:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":841,"src":"813:226:12"}],"src":"688:352:12"},"id":12},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol","exportedSymbols":{"IL2LayerZeroDelegation":[854]},"id":855,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":842,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:13"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":843,"nodeType":"StructuredDocumentation","src":"721:117:13","text":" @notice Minimal hook interface to be called whenever the veBAL balance of a user is updated in a L2 chain."},"fullyImplemented":false,"id":854,"linearizedBaseContracts":[854],"name":"IL2LayerZeroDelegation","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":844,"nodeType":"StructuredDocumentation","src":"878:157:13","text":" @notice Called whenever the veBAL balance of a user is updated in a L2 chain.\n @param user The user whose veBAL balance was updated."},"functionSelector":"df130bfe","id":849,"implemented":false,"kind":"function","modifiers":[],"name":"onVeBalBridged","nodeType":"FunctionDefinition","parameters":{"id":847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":846,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":849,"src":"1064:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":845,"name":"address","nodeType":"ElementaryTypeName","src":"1064:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1063:14:13"},"returnParameters":{"id":848,"nodeType":"ParameterList","parameters":[],"src":"1086:0:13"},"scope":854,"src":"1040:47:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":850,"nodeType":"StructuredDocumentation","src":"1093:91:13","text":" @notice Called whenever the total veBAL supply is updated in a L2 chain."},"functionSelector":"96345fb5","id":853,"implemented":false,"kind":"function","modifiers":[],"name":"onVeBalSupplyUpdate","nodeType":"FunctionDefinition","parameters":{"id":851,"nodeType":"ParameterList","parameters":[],"src":"1217:2:13"},"returnParameters":{"id":852,"nodeType":"ParameterList","parameters":[],"src":"1228:0:13"},"scope":854,"src":"1189:40:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":855,"src":"839:392:13"}],"src":"688:544:13"},"id":13},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol","exportedSymbols":{"ILMGetters":[871]},"id":872,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":856,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:14"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","file":"./IBalancerTokenAdmin.sol","id":857,"nodeType":"ImportDirective","scope":872,"sourceUnit":328,"src":"721:35:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"./IGaugeController.sol","id":858,"nodeType":"ImportDirective","scope":872,"sourceUnit":822,"src":"757:32:14","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":871,"linearizedBaseContracts":[871],"name":"ILMGetters","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":859,"nodeType":"StructuredDocumentation","src":"818:83:14","text":" @notice Returns the address of the Balancer Token Admin contract"},"functionSelector":"e6dec36f","id":864,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerTokenAdmin","nodeType":"FunctionDefinition","parameters":{"id":860,"nodeType":"ParameterList","parameters":[],"src":"936:2:14"},"returnParameters":{"id":863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":862,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":864,"src":"962:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"},"typeName":{"id":861,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":327,"src":"962:19:14","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"visibility":"internal"}],"src":"961:21:14"},"scope":871,"src":"906:77:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":865,"nodeType":"StructuredDocumentation","src":"989:70:14","text":" @notice Returns the address of the Gauge Controller"},"functionSelector":"58de9ade","id":870,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeController","nodeType":"FunctionDefinition","parameters":{"id":866,"nodeType":"ParameterList","parameters":[],"src":"1091:2:14"},"returnParameters":{"id":869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":868,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":870,"src":"1117:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":867,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1117:16:14","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"internal"}],"src":"1116:18:14"},"scope":871,"src":"1064:71:14","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":872,"src":"791:346:14"}],"src":"688:450:14"},"id":14},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","exportedSymbols":{"ILiquidityGauge":[928]},"id":929,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":873,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:15"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":928,"linearizedBaseContracts":[928],"name":"ILiquidityGauge","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":877,"name":"RelativeWeightCapChanged","nodeType":"EventDefinition","parameters":{"id":876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":875,"indexed":false,"mutability":"mutable","name":"new_relative_weight_cap","nodeType":"VariableDeclaration","scope":877,"src":"1059:31:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":874,"name":"uint256","nodeType":"ElementaryTypeName","src":"1059:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1058:33:15"},"src":"1028:64:15"},{"documentation":{"id":878,"nodeType":"StructuredDocumentation","src":"1098:201:15","text":" @notice Returns BAL liquidity emissions calculated during checkpoints for the given user.\n @param user User address.\n @return uint256 BAL amount to issue for the address."},"functionSelector":"09400707","id":885,"implemented":false,"kind":"function","modifiers":[],"name":"integrate_fraction","nodeType":"FunctionDefinition","parameters":{"id":881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":880,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":885,"src":"1332:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":879,"name":"address","nodeType":"ElementaryTypeName","src":"1332:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1331:14:15"},"returnParameters":{"id":884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":883,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":885,"src":"1369:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":882,"name":"uint256","nodeType":"ElementaryTypeName","src":"1369:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1368:9:15"},"scope":928,"src":"1304:74:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":886,"nodeType":"StructuredDocumentation","src":"1384:130:15","text":" @notice Record a checkpoint for a given user.\n @param user User address.\n @return bool Always true."},"functionSelector":"4b820093","id":893,"implemented":false,"kind":"function","modifiers":[],"name":"user_checkpoint","nodeType":"FunctionDefinition","parameters":{"id":889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":888,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":893,"src":"1544:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":887,"name":"address","nodeType":"ElementaryTypeName","src":"1544:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1543:14:15"},"returnParameters":{"id":892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":891,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":893,"src":"1576:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":890,"name":"bool","nodeType":"ElementaryTypeName","src":"1576:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1575:6:15"},"scope":928,"src":"1519:63:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":894,"nodeType":"StructuredDocumentation","src":"1588:76:15","text":" @notice Returns true if gauge is killed; false otherwise."},"functionSelector":"9c868ac0","id":899,"implemented":false,"kind":"function","modifiers":[],"name":"is_killed","nodeType":"FunctionDefinition","parameters":{"id":895,"nodeType":"ParameterList","parameters":[],"src":"1687:2:15"},"returnParameters":{"id":898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":897,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":899,"src":"1713:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":896,"name":"bool","nodeType":"ElementaryTypeName","src":"1713:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1712:6:15"},"scope":928,"src":"1669:50:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":900,"nodeType":"StructuredDocumentation","src":"1725:65:15","text":" @notice Kills the gauge so it cannot mint BAL."},"functionSelector":"ab8f0945","id":903,"implemented":false,"kind":"function","modifiers":[],"name":"killGauge","nodeType":"FunctionDefinition","parameters":{"id":901,"nodeType":"ParameterList","parameters":[],"src":"1813:2:15"},"returnParameters":{"id":902,"nodeType":"ParameterList","parameters":[],"src":"1824:0:15"},"scope":928,"src":"1795:30:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":904,"nodeType":"StructuredDocumentation","src":"1831:70:15","text":" @notice Unkills the gauge so it can mint BAL again."},"functionSelector":"d34fb267","id":907,"implemented":false,"kind":"function","modifiers":[],"name":"unkillGauge","nodeType":"FunctionDefinition","parameters":{"id":905,"nodeType":"ParameterList","parameters":[],"src":"1926:2:15"},"returnParameters":{"id":906,"nodeType":"ParameterList","parameters":[],"src":"1937:0:15"},"scope":928,"src":"1906:32:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":908,"nodeType":"StructuredDocumentation","src":"1944:221:15","text":" @notice Sets a new relative weight cap for the gauge.\n The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\n @param relativeWeightCap New relative weight cap."},"functionSelector":"10d3eb04","id":913,"implemented":false,"kind":"function","modifiers":[],"name":"setRelativeWeightCap","nodeType":"FunctionDefinition","parameters":{"id":911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":910,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":913,"src":"2200:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":909,"name":"uint256","nodeType":"ElementaryTypeName","src":"2200:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2199:27:15"},"returnParameters":{"id":912,"nodeType":"ParameterList","parameters":[],"src":"2235:0:15"},"scope":928,"src":"2170:66:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":914,"nodeType":"StructuredDocumentation","src":"2242:70:15","text":" @notice Gets the relative weight cap for the gauge."},"functionSelector":"83f5c39b","id":919,"implemented":false,"kind":"function","modifiers":[],"name":"getRelativeWeightCap","nodeType":"FunctionDefinition","parameters":{"id":915,"nodeType":"ParameterList","parameters":[],"src":"2346:2:15"},"returnParameters":{"id":918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":917,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":919,"src":"2372:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":916,"name":"uint256","nodeType":"ElementaryTypeName","src":"2372:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2371:9:15"},"scope":928,"src":"2317:64:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":920,"nodeType":"StructuredDocumentation","src":"2387:178:15","text":" @notice Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\n @param time Timestamp in the past or present."},"functionSelector":"14e956f5","id":927,"implemented":false,"kind":"function","modifiers":[],"name":"getCappedRelativeWeight","nodeType":"FunctionDefinition","parameters":{"id":923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":922,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":927,"src":"2603:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":921,"name":"uint256","nodeType":"ElementaryTypeName","src":"2603:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2602:14:15"},"returnParameters":{"id":926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":925,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":927,"src":"2640:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":924,"name":"uint256","nodeType":"ElementaryTypeName","src":"2640:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2639:9:15"},"scope":928,"src":"2570:79:15","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":929,"src":"944:1707:15"}],"src":"688:1964:15"},"id":15},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","exportedSymbols":{"ILiquidityGaugeFactory":[941]},"id":942,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":930,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:16"},{"id":931,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:16"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"./ILiquidityGauge.sol","id":932,"nodeType":"ImportDirective","scope":942,"sourceUnit":929,"src":"755:31:16","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":941,"linearizedBaseContracts":[941],"name":"ILiquidityGaugeFactory","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":933,"nodeType":"StructuredDocumentation","src":"827:79:16","text":" @notice Returns true if `gauge` was created by this factory."},"functionSelector":"ce3cc8bd","id":940,"implemented":false,"kind":"function","modifiers":[],"name":"isGaugeFromFactory","nodeType":"FunctionDefinition","parameters":{"id":936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":935,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":940,"src":"939:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":934,"name":"address","nodeType":"ElementaryTypeName","src":"939:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"938:15:16"},"returnParameters":{"id":939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":938,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":940,"src":"977:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":937,"name":"bool","nodeType":"ElementaryTypeName","src":"977:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"976:6:16"},"scope":941,"src":"911:72:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":942,"src":"788:197:16"}],"src":"688:298:16"},"id":16},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol","exportedSymbols":{"IMainnetBalancerMinter":[951]},"id":952,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":943,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:17"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","file":"./IBalancerMinter.sol","id":944,"nodeType":"ImportDirective","scope":952,"sourceUnit":198,"src":"721:31:17","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol","file":"./ILMGetters.sol","id":945,"nodeType":"ImportDirective","scope":952,"sourceUnit":872,"src":"753:26:17","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":947,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":197,"src":"891:15:17","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$197","typeString":"contract IBalancerMinter"}},"id":948,"nodeType":"InheritanceSpecifier","src":"891:15:17"},{"baseName":{"id":949,"name":"ILMGetters","nodeType":"UserDefinedTypeName","referencedDeclaration":871,"src":"908:10:17","typeDescriptions":{"typeIdentifier":"t_contract$_ILMGetters_$871","typeString":"contract ILMGetters"}},"id":950,"nodeType":"InheritanceSpecifier","src":"908:10:17"}],"contractDependencies":[197,871],"contractKind":"interface","documentation":{"id":946,"nodeType":"StructuredDocumentation","src":"781:73:17","text":" @dev Full L1 Balancer minter interface with singleton getters."},"fullyImplemented":false,"id":951,"linearizedBaseContracts":[951,871,197],"name":"IMainnetBalancerMinter","nodeType":"ContractDefinition","nodes":[],"scope":952,"src":"855:120:17"}],"src":"688:288:17"},"id":17},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol","exportedSymbols":{"IOmniVotingEscrow":[981]},"id":982,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":953,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:18"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":954,"nodeType":"StructuredDocumentation","src":"721:162:18","text":" @dev Partial voting escrow bridge interface.\n See https://github.com/LayerZero-Labs/lz_gauges/blob/main/contracts/OmniVotingEscrow.sol for reference."},"fullyImplemented":false,"id":981,"linearizedBaseContracts":[981],"name":"IOmniVotingEscrow","nodeType":"ContractDefinition","nodes":[{"functionSelector":"65d092d0","id":967,"implemented":false,"kind":"function","modifiers":[],"name":"estimateSendUserBalance","nodeType":"FunctionDefinition","parameters":{"id":961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":956,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":967,"src":"960:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":955,"name":"uint16","nodeType":"ElementaryTypeName","src":"960:6:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":958,"mutability":"mutable","name":"_useZro","nodeType":"VariableDeclaration","scope":967,"src":"988:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":957,"name":"bool","nodeType":"ElementaryTypeName","src":"988:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":960,"mutability":"mutable","name":"_adapterParams","nodeType":"VariableDeclaration","scope":967,"src":"1010:29:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":959,"name":"bytes","nodeType":"ElementaryTypeName","src":"1010:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"950:95:18"},"returnParameters":{"id":966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":963,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":967,"src":"1069:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":962,"name":"uint256","nodeType":"ElementaryTypeName","src":"1069:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":965,"mutability":"mutable","name":"zroFee","nodeType":"VariableDeclaration","scope":967,"src":"1088:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":964,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1068:35:18"},"scope":981,"src":"918:186:18","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"4a759489","id":980,"implemented":false,"kind":"function","modifiers":[],"name":"sendUserBalance","nodeType":"FunctionDefinition","parameters":{"id":978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":969,"mutability":"mutable","name":"_user","nodeType":"VariableDeclaration","scope":980,"src":"1144:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":968,"name":"address","nodeType":"ElementaryTypeName","src":"1144:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":971,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":980,"src":"1167:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":970,"name":"uint16","nodeType":"ElementaryTypeName","src":"1167:6:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":973,"mutability":"mutable","name":"_refundAddress","nodeType":"VariableDeclaration","scope":980,"src":"1195:30:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":972,"name":"address","nodeType":"ElementaryTypeName","src":"1195:15:18","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":975,"mutability":"mutable","name":"_zroPaymentAddress","nodeType":"VariableDeclaration","scope":980,"src":"1235:26:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":974,"name":"address","nodeType":"ElementaryTypeName","src":"1235:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":977,"mutability":"mutable","name":"_adapterParams","nodeType":"VariableDeclaration","scope":980,"src":"1271:27:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":976,"name":"bytes","nodeType":"ElementaryTypeName","src":"1271:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1134:170:18"},"returnParameters":{"id":979,"nodeType":"ParameterList","parameters":[],"src":"1321:0:18"},"scope":981,"src":"1110:212:18","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":982,"src":"884:440:18"}],"src":"688:637:18"},"id":18},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol","exportedSymbols":{"IOmniVotingEscrowAdaptor":[1005]},"id":1006,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":983,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:19"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":984,"nodeType":"StructuredDocumentation","src":"721:56:19","text":" @dev Interface for `OmniVotingEscrowAdaptor`."},"fullyImplemented":false,"id":1005,"linearizedBaseContracts":[1005],"name":"IOmniVotingEscrowAdaptor","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"819:342:19","text":" @notice Forwards `estimateSendUserBalance` call to omni voting escrow.\n @dev Reverts if `OmniVotingEscrow` is not set.\n @param _dstChainId - Destination chain ID.\n @return nativeFee - Native fee reported by the omni voting escrow.\n @return zroFee - Layer zero fee reported by the omni voting escrow."},"functionSelector":"ecc4c583","id":994,"implemented":false,"kind":"function","modifiers":[],"name":"estimateSendUserBalance","nodeType":"FunctionDefinition","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":994,"src":"1199:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":986,"name":"uint16","nodeType":"ElementaryTypeName","src":"1199:6:19","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1198:20:19"},"returnParameters":{"id":993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":994,"src":"1242:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"1242:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":992,"mutability":"mutable","name":"zroFee","nodeType":"VariableDeclaration","scope":994,"src":"1261:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":991,"name":"uint256","nodeType":"ElementaryTypeName","src":"1261:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1241:35:19"},"scope":1005,"src":"1166:111:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":995,"nodeType":"StructuredDocumentation","src":"1283:307:19","text":" @notice Forwards `sendUserBalance` call to omni voting escrow.\n @dev Reverts if `OmniVotingEscrow` is not set.\n @param _user - User to bridge the balance from.\n @param _dstChainId - Destination chain ID.\n @param _refundAddress - Address where to return excess ETH."},"functionSelector":"57fb8345","id":1004,"implemented":false,"kind":"function","modifiers":[],"name":"sendUserBalance","nodeType":"FunctionDefinition","parameters":{"id":1002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":997,"mutability":"mutable","name":"_user","nodeType":"VariableDeclaration","scope":1004,"src":"1629:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":996,"name":"address","nodeType":"ElementaryTypeName","src":"1629:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":999,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":1004,"src":"1652:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":998,"name":"uint16","nodeType":"ElementaryTypeName","src":"1652:6:19","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":1001,"mutability":"mutable","name":"_refundAddress","nodeType":"VariableDeclaration","scope":1004,"src":"1680:30:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1000,"name":"address","nodeType":"ElementaryTypeName","src":"1680:15:19","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"1619:97:19"},"returnParameters":{"id":1003,"nodeType":"ParameterList","parameters":[],"src":"1733:0:19"},"scope":1005,"src":"1595:139:19","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":1006,"src":"778:958:19"}],"src":"688:1049:19"},"id":19},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol","exportedSymbols":{"IOmniVotingEscrowAdaptorSettings":[1074]},"id":1075,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1007,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:20"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol","file":"./IOmniVotingEscrow.sol","id":1008,"nodeType":"ImportDirective","scope":1075,"sourceUnit":982,"src":"721:33:20","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1009,"nodeType":"StructuredDocumentation","src":"756:65:20","text":" @dev Interface for `OmniVotingEscrowAdaptor` settings."},"fullyImplemented":false,"id":1074,"linearizedBaseContracts":[1074],"name":"IOmniVotingEscrowAdaptorSettings","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":1013,"name":"OmniVotingEscrowUpdated","nodeType":"EventDefinition","parameters":{"id":1012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1011,"indexed":true,"mutability":"mutable","name":"newOmniVotingEscrow","nodeType":"VariableDeclaration","scope":1013,"src":"901:45:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":1010,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"901:17:20","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"internal"}],"src":"900:47:20"},"src":"871:77:20"},{"anonymous":false,"id":1017,"name":"UseZeroUpdated","nodeType":"EventDefinition","parameters":{"id":1016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1015,"indexed":false,"mutability":"mutable","name":"newUseZero","nodeType":"VariableDeclaration","scope":1017,"src":"974:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1014,"name":"bool","nodeType":"ElementaryTypeName","src":"974:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"973:17:20"},"src":"953:38:20"},{"anonymous":false,"id":1021,"name":"AdapterParamsUpdated","nodeType":"EventDefinition","parameters":{"id":1020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1019,"indexed":false,"mutability":"mutable","name":"newAdapterParams","nodeType":"VariableDeclaration","scope":1021,"src":"1023:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1018,"name":"bytes","nodeType":"ElementaryTypeName","src":"1023:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1022:24:20"},"src":"996:51:20"},{"anonymous":false,"id":1025,"name":"ZeroPaymentAddressUpdated","nodeType":"EventDefinition","parameters":{"id":1024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1023,"indexed":true,"mutability":"mutable","name":"newZeroPaymentAddress","nodeType":"VariableDeclaration","scope":1025,"src":"1084:37:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1022,"name":"address","nodeType":"ElementaryTypeName","src":"1084:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1083:39:20"},"src":"1052:71:20"},{"documentation":{"id":1026,"nodeType":"StructuredDocumentation","src":"1129:125:20","text":" @notice Returns Omni Voting Escrow contract address, which is the gateway to bridge veBAL balances to L2s."},"functionSelector":"550f2f7f","id":1031,"implemented":false,"kind":"function","modifiers":[],"name":"getOmniVotingEscrow","nodeType":"FunctionDefinition","parameters":{"id":1027,"nodeType":"ParameterList","parameters":[],"src":"1287:2:20"},"returnParameters":{"id":1030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1029,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1031,"src":"1313:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":1028,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"1313:17:20","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"internal"}],"src":"1312:19:20"},"scope":1074,"src":"1259:73:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1032,"nodeType":"StructuredDocumentation","src":"1338:89:20","text":" @notice Returns `_useZro` parameter used in `estimateSendUserBalance`."},"functionSelector":"00986fe0","id":1037,"implemented":false,"kind":"function","modifiers":[],"name":"getUseZero","nodeType":"FunctionDefinition","parameters":{"id":1033,"nodeType":"ParameterList","parameters":[],"src":"1451:2:20"},"returnParameters":{"id":1036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1035,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1037,"src":"1477:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1034,"name":"bool","nodeType":"ElementaryTypeName","src":"1477:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1476:6:20"},"scope":1074,"src":"1432:51:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1038,"nodeType":"StructuredDocumentation","src":"1489:118:20","text":" @notice Returns `_adapterParams` parameter used in `estimateSendUserBalance` and `sendUserBalance`."},"functionSelector":"4cfde448","id":1043,"implemented":false,"kind":"function","modifiers":[],"name":"getAdapterParams","nodeType":"FunctionDefinition","parameters":{"id":1039,"nodeType":"ParameterList","parameters":[],"src":"1637:2:20"},"returnParameters":{"id":1042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1041,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1043,"src":"1663:12:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1040,"name":"bytes","nodeType":"ElementaryTypeName","src":"1663:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1662:14:20"},"scope":1074,"src":"1612:65:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1044,"nodeType":"StructuredDocumentation","src":"1683:92:20","text":" @notice Returns `_zroPaymentAddress` parameter used in `sendUserBalance`."},"functionSelector":"0943b7b8","id":1049,"implemented":false,"kind":"function","modifiers":[],"name":"getZeroPaymentAddress","nodeType":"FunctionDefinition","parameters":{"id":1045,"nodeType":"ParameterList","parameters":[],"src":"1810:2:20"},"returnParameters":{"id":1048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1047,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1049,"src":"1836:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1046,"name":"address","nodeType":"ElementaryTypeName","src":"1836:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1835:9:20"},"scope":1074,"src":"1780:65:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1050,"nodeType":"StructuredDocumentation","src":"1851:365:20","text":" @notice Sets omni voting escrow address.\n @dev This step is required before creating any remapping in the `VotingEscrowRemapper`.\n Omni voting escrow is not set in the constructor to avoid circular dependencies.\n Emits `OmniVotingEscrowUpdated` event.\n @param omniVotingEscrow - Address of the omni voting escrow contract."},"functionSelector":"09d401f9","id":1055,"implemented":false,"kind":"function","modifiers":[],"name":"setOmniVotingEscrow","nodeType":"FunctionDefinition","parameters":{"id":1053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1052,"mutability":"mutable","name":"omniVotingEscrow","nodeType":"VariableDeclaration","scope":1055,"src":"2250:34:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":1051,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"2250:17:20","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"internal"}],"src":"2249:36:20"},"returnParameters":{"id":1054,"nodeType":"ParameterList","parameters":[],"src":"2294:0:20"},"scope":1074,"src":"2221:74:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1056,"nodeType":"StructuredDocumentation","src":"2301:146:20","text":" @notice Sets `_useZro` parameter for `estimateSendUserBalance` when forwarding calls.\n @dev Emits `UseZeroUpdated` event."},"functionSelector":"299fd6fc","id":1061,"implemented":false,"kind":"function","modifiers":[],"name":"setUseZero","nodeType":"FunctionDefinition","parameters":{"id":1059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1058,"mutability":"mutable","name":"useZro","nodeType":"VariableDeclaration","scope":1061,"src":"2472:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1057,"name":"bool","nodeType":"ElementaryTypeName","src":"2472:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2471:13:20"},"returnParameters":{"id":1060,"nodeType":"ParameterList","parameters":[],"src":"2493:0:20"},"scope":1074,"src":"2452:42:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1062,"nodeType":"StructuredDocumentation","src":"2500:188:20","text":" @notice Sets `_adapterParams` parameter for `estimateSendUserBalance` and `sendUserBalance` when forwarding\n calls.\n @dev Emits `AdapterParamsUpdated` event."},"functionSelector":"d56b6a4a","id":1067,"implemented":false,"kind":"function","modifiers":[],"name":"setAdapterParams","nodeType":"FunctionDefinition","parameters":{"id":1065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1064,"mutability":"mutable","name":"adapterParams","nodeType":"VariableDeclaration","scope":1067,"src":"2719:26:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1063,"name":"bytes","nodeType":"ElementaryTypeName","src":"2719:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2718:28:20"},"returnParameters":{"id":1066,"nodeType":"ParameterList","parameters":[],"src":"2755:0:20"},"scope":1074,"src":"2693:63:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1068,"nodeType":"StructuredDocumentation","src":"2762:160:20","text":" @notice Sets `_zroPaymentAddress` parameter for `sendUserBalance` when forwarding calls.\n @dev Emits `ZeroPaymentAddressUpdated` event."},"functionSelector":"e241e489","id":1073,"implemented":false,"kind":"function","modifiers":[],"name":"setZeroPaymentAddress","nodeType":"FunctionDefinition","parameters":{"id":1071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1070,"mutability":"mutable","name":"paymentAddress","nodeType":"VariableDeclaration","scope":1073,"src":"2958:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1069,"name":"address","nodeType":"ElementaryTypeName","src":"2958:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2957:24:20"},"returnParameters":{"id":1072,"nodeType":"ParameterList","parameters":[],"src":"2990:0:20"},"scope":1074,"src":"2927:64:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1075,"src":"822:2171:20"}],"src":"688:2306:20"},"id":20},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol","exportedSymbols":{"IOptimismGasLimitProvider":[1087]},"id":1088,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1076,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:21"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1087,"linearizedBaseContracts":[1087],"name":"IOptimismGasLimitProvider","nodeType":"ContractDefinition","nodes":[{"functionSelector":"a0566e72","id":1081,"implemented":false,"kind":"function","modifiers":[],"name":"getOptimismGasLimit","nodeType":"FunctionDefinition","parameters":{"id":1077,"nodeType":"ParameterList","parameters":[],"src":"791:2:21"},"returnParameters":{"id":1080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1079,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":1081,"src":"817:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1078,"name":"uint32","nodeType":"ElementaryTypeName","src":"817:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"816:17:21"},"scope":1087,"src":"763:71:21","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bf5fa772","id":1086,"implemented":false,"kind":"function","modifiers":[],"name":"setOptimismGasLimit","nodeType":"FunctionDefinition","parameters":{"id":1084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1083,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":1086,"src":"869:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1082,"name":"uint32","nodeType":"ElementaryTypeName","src":"869:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"868:17:21"},"returnParameters":{"id":1085,"nodeType":"ParameterList","parameters":[],"src":"894:0:21"},"scope":1087,"src":"840:55:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1088,"src":"721:176:21"}],"src":"688:210:21"},"id":21},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","exportedSymbols":{"IRewardTokenDistributor":[1163]},"id":1164,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1089,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:22"},{"id":1090,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:22"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":1091,"nodeType":"ImportDirective","scope":1164,"sourceUnit":2448,"src":"755:51:22","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1163,"linearizedBaseContracts":[1163],"name":"IRewardTokenDistributor","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IRewardTokenDistributor.Reward","id":1104,"members":[{"constant":false,"id":1093,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":1104,"src":"1070:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1092,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1070:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1095,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":1104,"src":"1092:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1094,"name":"address","nodeType":"ElementaryTypeName","src":"1092:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1097,"mutability":"mutable","name":"period_finish","nodeType":"VariableDeclaration","scope":1104,"src":"1121:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1096,"name":"uint256","nodeType":"ElementaryTypeName","src":"1121:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1099,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":1104,"src":"1152:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1098,"name":"uint256","nodeType":"ElementaryTypeName","src":"1152:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1101,"mutability":"mutable","name":"last_update","nodeType":"VariableDeclaration","scope":1104,"src":"1174:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1100,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1103,"mutability":"mutable","name":"integral","nodeType":"VariableDeclaration","scope":1104,"src":"1203:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1102,"name":"uint256","nodeType":"ElementaryTypeName","src":"1203:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Reward","nodeType":"StructDefinition","scope":1163,"src":"1046:180:22","visibility":"public"},{"functionSelector":"54c49fe9","id":1111,"implemented":false,"kind":"function","modifiers":[],"name":"reward_tokens","nodeType":"FunctionDefinition","parameters":{"id":1107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1106,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":1111,"src":"1255:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1105,"name":"uint256","nodeType":"ElementaryTypeName","src":"1255:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1254:15:22"},"returnParameters":{"id":1110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1109,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1111,"src":"1293:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1108,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1293:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1292:8:22"},"scope":1163,"src":"1232:69:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"48e9c65e","id":1118,"implemented":false,"kind":"function","modifiers":[],"name":"reward_data","nodeType":"FunctionDefinition","parameters":{"id":1114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1113,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":1118,"src":"1328:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1112,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1328:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1327:14:22"},"returnParameters":{"id":1117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1118,"src":"1365:13:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_memory_ptr","typeString":"struct IRewardTokenDistributor.Reward"},"typeName":{"id":1115,"name":"Reward","nodeType":"UserDefinedTypeName","referencedDeclaration":1104,"src":"1365:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage_ptr","typeString":"struct IRewardTokenDistributor.Reward"}},"visibility":"internal"}],"src":"1364:15:22"},"scope":1163,"src":"1307:73:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"84e9bd7e","id":1123,"implemented":false,"kind":"function","modifiers":[],"name":"claim_rewards","nodeType":"FunctionDefinition","parameters":{"id":1121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1120,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1123,"src":"1409:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1119,"name":"address","nodeType":"ElementaryTypeName","src":"1409:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1408:14:22"},"returnParameters":{"id":1122,"nodeType":"ParameterList","parameters":[],"src":"1431:0:22"},"scope":1163,"src":"1386:46:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e8de0d4d","id":1130,"implemented":false,"kind":"function","modifiers":[],"name":"add_reward","nodeType":"FunctionDefinition","parameters":{"id":1128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1125,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":1130,"src":"1458:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1124,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1458:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1127,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":1130,"src":"1478:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1126,"name":"address","nodeType":"ElementaryTypeName","src":"1478:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1457:41:22"},"returnParameters":{"id":1129,"nodeType":"ParameterList","parameters":[],"src":"1507:0:22"},"scope":1163,"src":"1438:70:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"058a3a24","id":1137,"implemented":false,"kind":"function","modifiers":[],"name":"set_reward_distributor","nodeType":"FunctionDefinition","parameters":{"id":1135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1132,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":1137,"src":"1546:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1131,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1546:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1134,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":1137,"src":"1566:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1133,"name":"address","nodeType":"ElementaryTypeName","src":"1566:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1545:41:22"},"returnParameters":{"id":1136,"nodeType":"ParameterList","parameters":[],"src":"1595:0:22"},"scope":1163,"src":"1514:82:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"93f7aa67","id":1144,"implemented":false,"kind":"function","modifiers":[],"name":"deposit_reward_token","nodeType":"FunctionDefinition","parameters":{"id":1142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1139,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":1144,"src":"1632:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1138,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1632:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1141,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1144,"src":"1652:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1140,"name":"uint256","nodeType":"ElementaryTypeName","src":"1652:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1631:36:22"},"returnParameters":{"id":1143,"nodeType":"ParameterList","parameters":[],"src":"1676:0:22"},"scope":1163,"src":"1602:75:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"33fd6f74","id":1153,"implemented":false,"kind":"function","modifiers":[],"name":"claimable_reward","nodeType":"FunctionDefinition","parameters":{"id":1149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1146,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":1153,"src":"1709:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1145,"name":"address","nodeType":"ElementaryTypeName","src":"1709:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1148,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1153,"src":"1730:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1147,"name":"address","nodeType":"ElementaryTypeName","src":"1730:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1708:35:22"},"returnParameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1153,"src":"1767:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"1767:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1766:9:22"},"scope":1163,"src":"1683:93:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"59b7e409","id":1162,"implemented":false,"kind":"function","modifiers":[],"name":"claimable_reward_write","nodeType":"FunctionDefinition","parameters":{"id":1158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1155,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":1162,"src":"1814:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1154,"name":"address","nodeType":"ElementaryTypeName","src":"1814:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1157,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1162,"src":"1835:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1156,"name":"address","nodeType":"ElementaryTypeName","src":"1835:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1813:35:22"},"returnParameters":{"id":1161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1160,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1162,"src":"1867:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1159,"name":"uint256","nodeType":"ElementaryTypeName","src":"1867:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1866:9:22"},"scope":1163,"src":"1782:94:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1164,"src":"1006:872:22"}],"src":"688:1191:22"},"id":22},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol","exportedSymbols":{"IRewardsOnlyGauge":[1205]},"id":1206,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1165,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:23"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol","file":"./IChildChainStreamer.sol","id":1166,"nodeType":"ImportDirective","scope":1206,"sourceUnit":463,"src":"721:35:23","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","file":"./IRewardTokenDistributor.sol","id":1167,"nodeType":"ImportDirective","scope":1206,"sourceUnit":1164,"src":"757:39:23","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1168,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"1007:23:23","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"id":1169,"nodeType":"InheritanceSpecifier","src":"1007:23:23"}],"contractDependencies":[1163],"contractKind":"interface","fullyImplemented":false,"id":1205,"linearizedBaseContracts":[1205,1163],"name":"IRewardsOnlyGauge","nodeType":"ContractDefinition","nodes":[{"functionSelector":"6133f985","id":1178,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":1176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1171,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":1178,"src":"1066:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1170,"name":"address","nodeType":"ElementaryTypeName","src":"1066:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1173,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":1178,"src":"1088:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1172,"name":"address","nodeType":"ElementaryTypeName","src":"1088:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1175,"mutability":"mutable","name":"claimSignature","nodeType":"VariableDeclaration","scope":1178,"src":"1114:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1174,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1114:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1056:86:23"},"returnParameters":{"id":1177,"nodeType":"ParameterList","parameters":[],"src":"1151:0:23"},"scope":1205,"src":"1037:115:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"82c63066","id":1183,"implemented":false,"kind":"function","modifiers":[],"name":"lp_token","nodeType":"FunctionDefinition","parameters":{"id":1179,"nodeType":"ParameterList","parameters":[],"src":"1228:2:23"},"returnParameters":{"id":1182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1181,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1183,"src":"1254:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1180,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1254:6:23","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1253:8:23"},"scope":1205,"src":"1211:51:23","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bf88a6ff","id":1188,"implemented":false,"kind":"function","modifiers":[],"name":"reward_contract","nodeType":"FunctionDefinition","parameters":{"id":1184,"nodeType":"ParameterList","parameters":[],"src":"1292:2:23"},"returnParameters":{"id":1187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1186,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1188,"src":"1318:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":1185,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"1318:19:23","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"internal"}],"src":"1317:21:23"},"scope":1205,"src":"1268:71:23","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"47d2d5d3","id":1199,"implemented":false,"kind":"function","modifiers":[],"name":"set_rewards","nodeType":"FunctionDefinition","parameters":{"id":1197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1190,"mutability":"mutable","name":"childChainStreamer","nodeType":"VariableDeclaration","scope":1199,"src":"1375:26:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1189,"name":"address","nodeType":"ElementaryTypeName","src":"1375:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1192,"mutability":"mutable","name":"claimSig","nodeType":"VariableDeclaration","scope":1199,"src":"1411:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1191,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1411:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1196,"mutability":"mutable","name":"rewardTokens","nodeType":"VariableDeclaration","scope":1199,"src":"1437:32:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_calldata_ptr","typeString":"address[8]"},"typeName":{"baseType":{"id":1193,"name":"address","nodeType":"ElementaryTypeName","src":"1437:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1195,"length":{"hexValue":"38","id":1194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1445:1:23","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"ArrayTypeName","src":"1437:10:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_storage_ptr","typeString":"address[8]"}},"visibility":"internal"}],"src":"1365:110:23"},"returnParameters":{"id":1198,"nodeType":"ParameterList","parameters":[],"src":"1484:0:23"},"scope":1205,"src":"1345:140:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3488bd19","id":1204,"implemented":false,"kind":"function","modifiers":[],"name":"last_claim","nodeType":"FunctionDefinition","parameters":{"id":1200,"nodeType":"ParameterList","parameters":[],"src":"1510:2:23"},"returnParameters":{"id":1203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1202,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1204,"src":"1536:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1201,"name":"uint256","nodeType":"ElementaryTypeName","src":"1536:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1535:9:23"},"scope":1205,"src":"1491:54:23","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1206,"src":"976:571:23"}],"src":"688:860:23"},"id":23},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol","exportedSymbols":{"ISmartWalletChecker":[1215]},"id":1216,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1207,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:24"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1215,"linearizedBaseContracts":[1215],"name":"ISmartWalletChecker","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c23697a8","id":1214,"implemented":false,"kind":"function","modifiers":[],"name":"check","nodeType":"FunctionDefinition","parameters":{"id":1210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1209,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":1214,"src":"772:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1208,"name":"address","nodeType":"ElementaryTypeName","src":"772:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"771:25:24"},"returnParameters":{"id":1213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1212,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1214,"src":"820:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1211,"name":"bool","nodeType":"ElementaryTypeName","src":"820:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"819:6:24"},"scope":1215,"src":"757:69:24","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1216,"src":"721:107:24"}],"src":"688:141:24"},"id":24},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol","exportedSymbols":{"IStakelessGauge":[1239]},"id":1240,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1217,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:25"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"./ILiquidityGauge.sol","id":1218,"nodeType":"ImportDirective","scope":1240,"sourceUnit":929,"src":"721:31:25","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1219,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"783:15:25","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"id":1220,"nodeType":"InheritanceSpecifier","src":"783:15:25"}],"contractDependencies":[928],"contractKind":"interface","fullyImplemented":false,"id":1239,"linearizedBaseContracts":[1239,928],"name":"IStakelessGauge","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1221,"nodeType":"StructuredDocumentation","src":"805:82:25","text":"@dev Performs a checkpoint, computing how much should be minted for the gauge."},"functionSelector":"c2c4c5c1","id":1226,"implemented":false,"kind":"function","modifiers":[],"name":"checkpoint","nodeType":"FunctionDefinition","parameters":{"id":1222,"nodeType":"ParameterList","parameters":[],"src":"911:2:25"},"returnParameters":{"id":1225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1224,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1226,"src":"940:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1223,"name":"bool","nodeType":"ElementaryTypeName","src":"940:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"939:6:25"},"scope":1239,"src":"892:54:25","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1227,"nodeType":"StructuredDocumentation","src":"952:106:25","text":"@dev Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address)."},"functionSelector":"1b88094d","id":1232,"implemented":false,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","parameters":{"id":1228,"nodeType":"ParameterList","parameters":[],"src":"1084:2:25"},"returnParameters":{"id":1231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1230,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1232,"src":"1110:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1229,"name":"address","nodeType":"ElementaryTypeName","src":"1110:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1109:9:25"},"scope":1239,"src":"1063:56:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1233,"nodeType":"StructuredDocumentation","src":"1125:244:25","text":" @dev Returns total ETH bridge cost (post mint action) in wei.\n Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH\n to work; in those cases the cost will be 0."},"functionSelector":"b0245225","id":1238,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":1234,"nodeType":"ParameterList","parameters":[],"src":"1401:2:25"},"returnParameters":{"id":1237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1236,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1238,"src":"1427:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1235,"name":"uint256","nodeType":"ElementaryTypeName","src":"1427:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1426:9:25"},"scope":1239,"src":"1374:62:25","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1240,"src":"754:684:25"}],"src":"688:751:25"},"id":25},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol","exportedSymbols":{"IStakelessGaugeCheckpointer":[1417]},"id":1418,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1241,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:26"},{"id":1242,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:26"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol","file":"./IGaugeAdder.sol","id":1243,"nodeType":"ImportDirective","scope":1418,"sourceUnit":740,"src":"747:27:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol","file":"./IStakelessGauge.sol","id":1244,"nodeType":"ImportDirective","scope":1418,"sourceUnit":1240,"src":"775:31:26","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1245,"nodeType":"StructuredDocumentation","src":"808:323:26","text":" @title Stakeless Gauge Checkpointer interface\n @notice Manages checkpoints for L2 and mainnet stakeless root gauges, allowing to perform mutiple checkpoints in a\n single call.\n @dev Supports gauge types registered in `GaugeAdder`.\n Gauges to be checkpointed need to be added to the controller beforehand."},"fullyImplemented":false,"id":1417,"linearizedBaseContracts":[1417],"name":"IStakelessGaugeCheckpointer","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1246,"nodeType":"StructuredDocumentation","src":"1286:77:26","text":" @notice Emitted when a gauge is added to the checkpointer."},"id":1254,"name":"GaugeAdded","nodeType":"EventDefinition","parameters":{"id":1253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1248,"indexed":true,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":1254,"src":"1385:29:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":1247,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"1385:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"},{"constant":false,"id":1250,"indexed":true,"mutability":"mutable","name":"indexedGaugeType","nodeType":"VariableDeclaration","scope":1254,"src":"1416:31:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1249,"name":"string","nodeType":"ElementaryTypeName","src":"1416:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1252,"indexed":false,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1254,"src":"1449:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1251,"name":"string","nodeType":"ElementaryTypeName","src":"1449:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1384:82:26"},"src":"1368:99:26"},{"anonymous":false,"documentation":{"id":1255,"nodeType":"StructuredDocumentation","src":"1473:81:26","text":" @notice Emitted when a gauge is removed from the checkpointer."},"id":1263,"name":"GaugeRemoved","nodeType":"EventDefinition","parameters":{"id":1262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1257,"indexed":true,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":1263,"src":"1578:29:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":1256,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"1578:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"},{"constant":false,"id":1259,"indexed":true,"mutability":"mutable","name":"indexedGaugeType","nodeType":"VariableDeclaration","scope":1263,"src":"1609:31:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1258,"name":"string","nodeType":"ElementaryTypeName","src":"1609:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1261,"indexed":false,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1263,"src":"1642:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1260,"name":"string","nodeType":"ElementaryTypeName","src":"1642:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1577:82:26"},"src":"1559:101:26"},{"documentation":{"id":1264,"nodeType":"StructuredDocumentation","src":"1666:57:26","text":" @notice Returns `GaugeAdder` contract."},"functionSelector":"7c1fef51","id":1269,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeAdder","nodeType":"FunctionDefinition","parameters":{"id":1265,"nodeType":"ParameterList","parameters":[],"src":"1750:2:26"},"returnParameters":{"id":1268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1267,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1269,"src":"1776:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"},"typeName":{"id":1266,"name":"IGaugeAdder","nodeType":"UserDefinedTypeName","referencedDeclaration":739,"src":"1776:11:26","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"visibility":"internal"}],"src":"1775:13:26"},"scope":1417,"src":"1728:61:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1270,"nodeType":"StructuredDocumentation","src":"1795:77:26","text":" @notice Returns gauge types available in the checkpointer."},"functionSelector":"afcb1a86","id":1276,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeTypes","nodeType":"FunctionDefinition","parameters":{"id":1271,"nodeType":"ParameterList","parameters":[],"src":"1899:2:26"},"returnParameters":{"id":1275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1274,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1276,"src":"1925:15:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":1272,"name":"string","nodeType":"ElementaryTypeName","src":"1925:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":1273,"nodeType":"ArrayTypeName","src":"1925:8:26","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"src":"1924:17:26"},"scope":1417,"src":"1877:65:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1277,"nodeType":"StructuredDocumentation","src":"1948:717:26","text":" @notice Adds an array of gauges from the given type. This is a permissioned function.\n @dev Gauges added will be considered when performing checkpoints.\n The gauges to add should meet the following preconditions:\n - They must exist in the GaugeController, according to GaugeController#gauge_exists.\n - They must not be killed.\n - They must not have been previously added to the checkpointer.\n Unlike `addGauges`, this function can add gauges that were created by factories registered in a deprecated\n `GaugeAdder`, and therefore cannot be validated by the current `GaugeAdder`.\n @param gaugeType Type of the gauge.\n @param gauges Gauges to add."},"functionSelector":"d8dba2ce","id":1285,"implemented":false,"kind":"function","modifiers":[],"name":"addGaugesWithVerifiedType","nodeType":"FunctionDefinition","parameters":{"id":1283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1279,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1285,"src":"2705:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1278,"name":"string","nodeType":"ElementaryTypeName","src":"2705:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1282,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":1285,"src":"2730:33:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":1280,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"2730:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":1281,"nodeType":"ArrayTypeName","src":"2730:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"2704:60:26"},"returnParameters":{"id":1284,"nodeType":"ParameterList","parameters":[],"src":"2773:0:26"},"scope":1417,"src":"2670:104:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1286,"nodeType":"StructuredDocumentation","src":"2780:605:26","text":" @notice Adds an array of gauges from the given type.\n @dev Gauges added will be considered when performing checkpoints.\n The gauges to add should meet the following preconditions:\n - They must have been created in a valid `GaugeFactory`, according to `GaugeAdder#isGaugeFromValidFactory`.\n - They must exist in the `GaugeController`, according to `GaugeController#gauge_exists`.\n - They must not be killed.\n - They must not have been previously added to the checkpointer.\n @param gaugeType Type of the gauge.\n @param gauges Gauges to add."},"functionSelector":"f7178b88","id":1294,"implemented":false,"kind":"function","modifiers":[],"name":"addGauges","nodeType":"FunctionDefinition","parameters":{"id":1292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1288,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1294,"src":"3409:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1287,"name":"string","nodeType":"ElementaryTypeName","src":"3409:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1291,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":1294,"src":"3434:33:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":1289,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"3434:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":1290,"nodeType":"ArrayTypeName","src":"3434:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"3408:60:26"},"returnParameters":{"id":1293,"nodeType":"ParameterList","parameters":[],"src":"3477:0:26"},"scope":1417,"src":"3390:88:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"3484:350:26","text":" @notice Removes an array of gauges from the given type.\n @dev Removed gauges will not be considered when performing checkpoints. To remove gauges:\n - They must be killed.\n - They must have been previously added to the checkpointer.\n @param gaugeType Type of the gauge.\n @param gauges Gauges to remove."},"functionSelector":"73ebd060","id":1303,"implemented":false,"kind":"function","modifiers":[],"name":"removeGauges","nodeType":"FunctionDefinition","parameters":{"id":1301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1297,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1303,"src":"3861:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1296,"name":"string","nodeType":"ElementaryTypeName","src":"3861:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1300,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":1303,"src":"3886:33:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":1298,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"3886:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":1299,"nodeType":"ArrayTypeName","src":"3886:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"3860:60:26"},"returnParameters":{"id":1302,"nodeType":"ParameterList","parameters":[],"src":"3929:0:26"},"scope":1417,"src":"3839:91:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1304,"nodeType":"StructuredDocumentation","src":"3936:184:26","text":" @notice Returns true if the given gauge was added for the given type; false otherwise.\n @param gaugeType Type of the gauge.\n @param gauge Gauge to check."},"functionSelector":"c91be043","id":1313,"implemented":false,"kind":"function","modifiers":[],"name":"hasGauge","nodeType":"FunctionDefinition","parameters":{"id":1309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1306,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1313,"src":"4143:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1305,"name":"string","nodeType":"ElementaryTypeName","src":"4143:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1308,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":1313,"src":"4168:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":1307,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"4168:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"4142:48:26"},"returnParameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1313,"src":"4214:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1310,"name":"bool","nodeType":"ElementaryTypeName","src":"4214:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4213:6:26"},"scope":1417,"src":"4125:95:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1314,"nodeType":"StructuredDocumentation","src":"4226:122:26","text":" @notice Returns the amount of added gauges for a given type.\n @param gaugeType Type of the gauge."},"functionSelector":"4db34d2a","id":1321,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalGauges","nodeType":"FunctionDefinition","parameters":{"id":1317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1316,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1321,"src":"4377:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1315,"name":"string","nodeType":"ElementaryTypeName","src":"4377:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4376:25:26"},"returnParameters":{"id":1320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1319,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1321,"src":"4425:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1318,"name":"uint256","nodeType":"ElementaryTypeName","src":"4425:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4424:9:26"},"scope":1417,"src":"4353:81:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1322,"nodeType":"StructuredDocumentation","src":"4440:279:26","text":" @notice Returns the gauge of a given type at the given index.\n @dev Reverts if the index is greater than or equal to the amount of added gauges for the given type.\n @param gaugeType Type of the gauge.\n @param index - Index of the added gauge."},"functionSelector":"27cb2a3b","id":1331,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeAtIndex","nodeType":"FunctionDefinition","parameters":{"id":1327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1324,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1331,"src":"4749:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1323,"name":"string","nodeType":"ElementaryTypeName","src":"4749:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1326,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":1331,"src":"4774:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1325,"name":"uint256","nodeType":"ElementaryTypeName","src":"4774:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4748:40:26"},"returnParameters":{"id":1330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1329,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1331,"src":"4812:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":1328,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"4812:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"4811:17:26"},"scope":1417,"src":"4724:105:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1332,"nodeType":"StructuredDocumentation","src":"4835:118:26","text":" @notice Returns the timestamp corresponding to the start of the previous week of the current block."},"functionSelector":"46583adf","id":1337,"implemented":false,"kind":"function","modifiers":[],"name":"getRoundedDownBlockTimestamp","nodeType":"FunctionDefinition","parameters":{"id":1333,"nodeType":"ParameterList","parameters":[],"src":"4995:2:26"},"returnParameters":{"id":1336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1335,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1337,"src":"5021:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1334,"name":"uint256","nodeType":"ElementaryTypeName","src":"5021:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5020:9:26"},"scope":1417,"src":"4958:72:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1338,"nodeType":"StructuredDocumentation","src":"5036:372:26","text":" @notice Performs a checkpoint for all added gauges above the given relative weight threshold.\n @dev Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getTotalBridgeCost` to\n determine the required amount of ETH for the execution to succeed.\n @param minRelativeWeight Threshold to filter out gauges below it."},"functionSelector":"804d17dc","id":1343,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointAllGaugesAboveRelativeWeight","nodeType":"FunctionDefinition","parameters":{"id":1341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1340,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":1343,"src":"5461:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1339,"name":"uint256","nodeType":"ElementaryTypeName","src":"5461:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5460:27:26"},"returnParameters":{"id":1342,"nodeType":"ParameterList","parameters":[],"src":"5504:0:26"},"scope":1417,"src":"5413:92:26","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1344,"nodeType":"StructuredDocumentation","src":"5511:506:26","text":" @notice Performs a checkpoint for all added gauges above the given relative weight threshold for the given types.\n @dev Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getGaugeTypesBridgeCost` to\n determine the required amount of ETH for the execution to succeed.\n Reverts if invalid gauge types are given.\n @param gaugeTypes Types of the gauges to checkpoint.\n @param minRelativeWeight Threshold to filter out gauges below it."},"functionSelector":"97510496","id":1352,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointGaugesOfTypesAboveRelativeWeight","nodeType":"FunctionDefinition","parameters":{"id":1350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1347,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":1352,"src":"6074:26:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":1345,"name":"string","nodeType":"ElementaryTypeName","src":"6074:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":1346,"nodeType":"ArrayTypeName","src":"6074:8:26","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":1349,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":1352,"src":"6102:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1348,"name":"uint256","nodeType":"ElementaryTypeName","src":"6102:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6073:55:26"},"returnParameters":{"id":1351,"nodeType":"ParameterList","parameters":[],"src":"6161:0:26"},"scope":1417,"src":"6022:140:26","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1353,"nodeType":"StructuredDocumentation","src":"6168:451:26","text":" @notice Performs a checkpoint for a single added gauge of a given type.\n @dev Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getSingleBridgeCost` to\n determine the required amount of ETH for the execution to succeed.\n Reverts if the gauge was not added to the checkpointer beforehand.\n @param gaugeType Type of the gauge.\n @param gauge Address of the gauge to checkpoint."},"functionSelector":"7d0a6616","id":1360,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointSingleGauge","nodeType":"FunctionDefinition","parameters":{"id":1358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1355,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1360,"src":"6655:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1354,"name":"string","nodeType":"ElementaryTypeName","src":"6655:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1357,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":1360,"src":"6680:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":1356,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"6680:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"6654:48:26"},"returnParameters":{"id":1359,"nodeType":"ParameterList","parameters":[],"src":"6719:0:26"},"scope":1417,"src":"6624:96:26","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1361,"nodeType":"StructuredDocumentation","src":"6726:418:26","text":" @notice Performs a checkpoint for a multiple added gauges of the given types.\n @dev Reverts if the ETH sent in the call is not enough to cover bridge costs.\n Reverts if the gauges were not added to the checkpointer beforehand, or if an invalid gauge type is given.\n @param gaugeType Type of the gauges to be checkpointed.\n @param gauges Addresses of the gauges to checkpoint."},"functionSelector":"43590308","id":1369,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointMultipleGaugesOfMatchingType","nodeType":"FunctionDefinition","parameters":{"id":1367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1363,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1369,"src":"7197:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1362,"name":"string","nodeType":"ElementaryTypeName","src":"7197:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1366,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":1369,"src":"7222:31:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":1364,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"7222:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":1365,"nodeType":"ArrayTypeName","src":"7222:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"7196:58:26"},"returnParameters":{"id":1368,"nodeType":"ParameterList","parameters":[],"src":"7287:0:26"},"scope":1417,"src":"7149:139:26","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1370,"nodeType":"StructuredDocumentation","src":"7294:556:26","text":" @notice Performs a checkpoint for a multiple added gauges of the given types.\n @dev Reverts if the ETH sent in the call is not enough to cover bridge costs.\n Reverts if the gauges were not added to the checkpointer beforehand, or if invalid gauge types are given.\n Reverts if the types array does not have the same length as the gauges array.\n @param gaugeTypes Types of the gauges to be checkpointed, in the same order as the gauges to be checkpointed.\n @param gauges Addresses of the gauges to checkpoint."},"functionSelector":"4a3a1e11","id":1379,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointMultipleGauges","nodeType":"FunctionDefinition","parameters":{"id":1377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1373,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":1379,"src":"7889:26:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":1371,"name":"string","nodeType":"ElementaryTypeName","src":"7889:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":1372,"nodeType":"ArrayTypeName","src":"7889:8:26","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":1376,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":1379,"src":"7917:31:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":1374,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"7917:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":1375,"nodeType":"ArrayTypeName","src":"7917:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"7888:61:26"},"returnParameters":{"id":1378,"nodeType":"ParameterList","parameters":[],"src":"7966:0:26"},"scope":1417,"src":"7855:112:26","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1380,"nodeType":"StructuredDocumentation","src":"7973:373:26","text":" @notice Returns the ETH cost to checkpoint all gauges for a given minimum relative weight.\n @dev A lower minimum relative weight might return higher costs, since more gauges could potentially be included\n in the checkpoint.\n @param minRelativeWeight Minimum relative weight filter: gauges below this value do not add to the bridge cost."},"functionSelector":"27f79107","id":1387,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":1383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1382,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":1387,"src":"8379:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1381,"name":"uint256","nodeType":"ElementaryTypeName","src":"8379:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8378:27:26"},"returnParameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1387,"src":"8429:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"8429:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8428:9:26"},"scope":1417,"src":"8351:87:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1388,"nodeType":"StructuredDocumentation","src":"8444:437:26","text":" @notice Returns the ETH cost to checkpoint all gauges from the given types.\n @dev A lower minimum relative weight might return higher costs, since more gauges could potentially be included\n in the checkpoint. Reverts for invalid gauge types.\n @param gaugeTypes Types of the gauges.\n @param minRelativeWeight Minimum relative weight filter: gauges below this value do not add to the bridge cost."},"functionSelector":"a9a7f87e","id":1398,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeTypesBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":1394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1391,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":1398,"src":"8919:26:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":1389,"name":"string","nodeType":"ElementaryTypeName","src":"8919:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":1390,"nodeType":"ArrayTypeName","src":"8919:8:26","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":1393,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":1398,"src":"8947:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1392,"name":"uint256","nodeType":"ElementaryTypeName","src":"8947:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8918:55:26"},"returnParameters":{"id":1397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1396,"mutability":"mutable","name":"totalCost","nodeType":"VariableDeclaration","scope":1398,"src":"9021:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1395,"name":"uint256","nodeType":"ElementaryTypeName","src":"9021:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9020:19:26"},"scope":1417,"src":"8886:154:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1399,"nodeType":"StructuredDocumentation","src":"9046:306:26","text":" @notice Returns the ETH cost to checkpoint a single given gauge.\n @dev Reverts if the gauge was not added to the checkpointer beforehand, or if the gauge type is invalid.\n @param gaugeType Type of the gauge.\n @param gauge Address of the gauge to check the bridge costs."},"functionSelector":"2adbe5ac","id":1408,"implemented":false,"kind":"function","modifiers":[],"name":"getSingleBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":1404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1401,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1408,"src":"9386:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1400,"name":"string","nodeType":"ElementaryTypeName","src":"9386:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1403,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":1408,"src":"9411:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":1402,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"9411:15:26","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"9385:48:26"},"returnParameters":{"id":1407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1406,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1408,"src":"9457:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1405,"name":"uint256","nodeType":"ElementaryTypeName","src":"9457:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9456:9:26"},"scope":1417,"src":"9357:109:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1409,"nodeType":"StructuredDocumentation","src":"9472:80:26","text":" @notice Returns true if gauge type is valid; false otherwise."},"functionSelector":"16e772bc","id":1416,"implemented":false,"kind":"function","modifiers":[],"name":"isValidGaugeType","nodeType":"FunctionDefinition","parameters":{"id":1412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1411,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":1416,"src":"9583:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1410,"name":"string","nodeType":"ElementaryTypeName","src":"9583:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9582:25:26"},"returnParameters":{"id":1415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1414,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1416,"src":"9631:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1413,"name":"bool","nodeType":"ElementaryTypeName","src":"9631:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9630:6:26"},"scope":1417,"src":"9557:80:26","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1418,"src":"1132:8507:26"}],"src":"688:8952:26"},"id":26},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","exportedSymbols":{"IStakingLiquidityGauge":[1454]},"id":1455,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1419,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:27"},{"id":1420,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:27"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":1421,"nodeType":"ImportDirective","scope":1455,"sourceUnit":2448,"src":"755:51:27","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"./ILiquidityGauge.sol","id":1422,"nodeType":"ImportDirective","scope":1455,"sourceUnit":929,"src":"808:31:27","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","file":"./IRewardTokenDistributor.sol","id":1423,"nodeType":"ImportDirective","scope":1455,"sourceUnit":1164,"src":"840:39:27","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1424,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"1115:23:27","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"id":1425,"nodeType":"InheritanceSpecifier","src":"1115:23:27"},{"baseName":{"id":1426,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"1140:15:27","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"id":1427,"nodeType":"InheritanceSpecifier","src":"1140:15:27"},{"baseName":{"id":1428,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1157:6:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":1429,"nodeType":"InheritanceSpecifier","src":"1157:6:27"}],"contractDependencies":[928,1163,2447],"contractKind":"interface","fullyImplemented":false,"id":1454,"linearizedBaseContracts":[1454,2447,928,1163],"name":"IStakingLiquidityGauge","nodeType":"ContractDefinition","nodes":[{"functionSelector":"cd6dc687","id":1436,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":1434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1431,"mutability":"mutable","name":"lpToken","nodeType":"VariableDeclaration","scope":1436,"src":"1190:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1430,"name":"address","nodeType":"ElementaryTypeName","src":"1190:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1433,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":1436,"src":"1207:25:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1432,"name":"uint256","nodeType":"ElementaryTypeName","src":"1207:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1189:44:27"},"returnParameters":{"id":1435,"nodeType":"ParameterList","parameters":[],"src":"1242:0:27"},"scope":1454,"src":"1170:73:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"82c63066","id":1441,"implemented":false,"kind":"function","modifiers":[],"name":"lp_token","nodeType":"FunctionDefinition","parameters":{"id":1437,"nodeType":"ParameterList","parameters":[],"src":"1266:2:27"},"returnParameters":{"id":1440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1439,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1441,"src":"1292:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":1438,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1292:6:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1291:8:27"},"scope":1454,"src":"1249:51:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6e553f65","id":1448,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":1446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1443,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":1448,"src":"1323:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1442,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1445,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":1448,"src":"1338:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1444,"name":"address","nodeType":"ElementaryTypeName","src":"1338:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1322:34:27"},"returnParameters":{"id":1447,"nodeType":"ParameterList","parameters":[],"src":"1365:0:27"},"scope":1454,"src":"1306:60:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2e1a7d4d","id":1453,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":1451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1450,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":1453,"src":"1390:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1449,"name":"uint256","nodeType":"ElementaryTypeName","src":"1390:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1389:15:27"},"returnParameters":{"id":1452,"nodeType":"ParameterList","parameters":[],"src":"1413:0:27"},"scope":1454,"src":"1372:42:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1455,"src":"1079:337:27"}],"src":"688:729:27"},"id":27},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol","exportedSymbols":{"IVeDelegation":[1469]},"id":1470,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1456,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:28"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1469,"linearizedBaseContracts":[1469],"name":"IVeDelegation","nodeType":"ContractDefinition","nodes":[{"functionSelector":"bbf7408a","id":1463,"implemented":false,"kind":"function","modifiers":[],"name":"adjusted_balance_of","nodeType":"FunctionDefinition","parameters":{"id":1459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1458,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1463,"src":"1011:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1457,"name":"address","nodeType":"ElementaryTypeName","src":"1011:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1010:14:28"},"returnParameters":{"id":1462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1461,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1463,"src":"1048:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1460,"name":"uint256","nodeType":"ElementaryTypeName","src":"1048:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1047:9:28"},"scope":1469,"src":"982:75:28","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"18160ddd","id":1468,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":1464,"nodeType":"ParameterList","parameters":[],"src":"1083:2:28"},"returnParameters":{"id":1467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1466,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1468,"src":"1109:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1465,"name":"uint256","nodeType":"ElementaryTypeName","src":"1109:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1108:9:28"},"scope":1469,"src":"1063:55:28","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1470,"src":"899:221:28"}],"src":"688:433:28"},"id":28},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","exportedSymbols":{"IVotingEscrow":[1559]},"id":1560,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1471,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:29"},{"id":1472,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:29"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","file":"./IAuthorizerAdaptor.sol","id":1473,"nodeType":"ImportDirective","scope":1560,"sourceUnit":50,"src":"755:34:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol","file":"./ISmartWalletChecker.sol","id":1474,"nodeType":"ImportDirective","scope":1560,"sourceUnit":1216,"src":"790:35:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":1475,"nodeType":"ImportDirective","scope":1560,"sourceUnit":2448,"src":"826:51:29","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1476,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1084:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":1477,"nodeType":"InheritanceSpecifier","src":"1084:6:29"}],"contractDependencies":[2447],"contractKind":"interface","fullyImplemented":false,"id":1559,"linearizedBaseContracts":[1559,2447],"name":"IVotingEscrow","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IVotingEscrow.Point","id":1486,"members":[{"constant":false,"id":1479,"mutability":"mutable","name":"bias","nodeType":"VariableDeclaration","scope":1486,"src":"1120:11:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":1478,"name":"int128","nodeType":"ElementaryTypeName","src":"1120:6:29","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":1481,"mutability":"mutable","name":"slope","nodeType":"VariableDeclaration","scope":1486,"src":"1141:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":1480,"name":"int128","nodeType":"ElementaryTypeName","src":"1141:6:29","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":1483,"mutability":"mutable","name":"ts","nodeType":"VariableDeclaration","scope":1486,"src":"1181:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1482,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1485,"mutability":"mutable","name":"blk","nodeType":"VariableDeclaration","scope":1486,"src":"1201:11:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1484,"name":"uint256","nodeType":"ElementaryTypeName","src":"1201:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Point","nodeType":"StructDefinition","scope":1559,"src":"1097:131:29","visibility":"public"},{"functionSelector":"900cf0cf","id":1491,"implemented":false,"kind":"function","modifiers":[],"name":"epoch","nodeType":"FunctionDefinition","parameters":{"id":1487,"nodeType":"ParameterList","parameters":[],"src":"1248:2:29"},"returnParameters":{"id":1490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1489,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1491,"src":"1274:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1488,"name":"uint256","nodeType":"ElementaryTypeName","src":"1274:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1273:9:29"},"scope":1559,"src":"1234:49:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"00fdd58e","id":1500,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":1496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1493,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1500,"src":"1308:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1492,"name":"address","nodeType":"ElementaryTypeName","src":"1308:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1495,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":1500,"src":"1322:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"1322:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1307:33:29"},"returnParameters":{"id":1499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1498,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1500,"src":"1364:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1497,"name":"uint256","nodeType":"ElementaryTypeName","src":"1364:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1363:9:29"},"scope":1559,"src":"1289:84:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bd85b039","id":1507,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":1503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1502,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":1507,"src":"1400:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1501,"name":"uint256","nodeType":"ElementaryTypeName","src":"1400:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1399:19:29"},"returnParameters":{"id":1506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1505,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1507,"src":"1442:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1504,"name":"uint256","nodeType":"ElementaryTypeName","src":"1442:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1441:9:29"},"scope":1559,"src":"1379:72:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"010ae757","id":1514,"implemented":false,"kind":"function","modifiers":[],"name":"user_point_epoch","nodeType":"FunctionDefinition","parameters":{"id":1510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1509,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1514,"src":"1483:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1508,"name":"address","nodeType":"ElementaryTypeName","src":"1483:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1482:14:29"},"returnParameters":{"id":1513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1512,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1514,"src":"1520:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1511,"name":"uint256","nodeType":"ElementaryTypeName","src":"1520:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1519:9:29"},"scope":1559,"src":"1457:72:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d1febfb9","id":1521,"implemented":false,"kind":"function","modifiers":[],"name":"point_history","nodeType":"FunctionDefinition","parameters":{"id":1517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1516,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":1521,"src":"1558:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1515,"name":"uint256","nodeType":"ElementaryTypeName","src":"1558:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1557:19:29"},"returnParameters":{"id":1520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1519,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1521,"src":"1600:12:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":1518,"name":"Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"1600:5:29","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"1599:14:29"},"scope":1559,"src":"1535:79:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"28d09d47","id":1530,"implemented":false,"kind":"function","modifiers":[],"name":"user_point_history","nodeType":"FunctionDefinition","parameters":{"id":1526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1523,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1530,"src":"1648:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1522,"name":"address","nodeType":"ElementaryTypeName","src":"1648:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1525,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":1530,"src":"1662:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1524,"name":"uint256","nodeType":"ElementaryTypeName","src":"1662:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1647:33:29"},"returnParameters":{"id":1529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1528,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1530,"src":"1704:12:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":1527,"name":"Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"1704:5:29","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"1703:14:29"},"scope":1559,"src":"1620:98:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c2c4c5c1","id":1533,"implemented":false,"kind":"function","modifiers":[],"name":"checkpoint","nodeType":"FunctionDefinition","parameters":{"id":1531,"nodeType":"ParameterList","parameters":[],"src":"1743:2:29"},"returnParameters":{"id":1532,"nodeType":"ParameterList","parameters":[],"src":"1754:0:29"},"scope":1559,"src":"1724:31:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f851a440","id":1538,"implemented":false,"kind":"function","modifiers":[],"name":"admin","nodeType":"FunctionDefinition","parameters":{"id":1534,"nodeType":"ParameterList","parameters":[],"src":"1775:2:29"},"returnParameters":{"id":1537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1536,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1538,"src":"1801:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":1535,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1801:18:29","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"1800:20:29"},"scope":1559,"src":"1761:60:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7175d4f7","id":1543,"implemented":false,"kind":"function","modifiers":[],"name":"smart_wallet_checker","nodeType":"FunctionDefinition","parameters":{"id":1539,"nodeType":"ParameterList","parameters":[],"src":"1856:2:29"},"returnParameters":{"id":1542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1541,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1543,"src":"1882:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"},"typeName":{"id":1540,"name":"ISmartWalletChecker","nodeType":"UserDefinedTypeName","referencedDeclaration":1215,"src":"1882:19:29","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"visibility":"internal"}],"src":"1881:21:29"},"scope":1559,"src":"1827:76:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"57f901e2","id":1548,"implemented":false,"kind":"function","modifiers":[],"name":"commit_smart_wallet_checker","nodeType":"FunctionDefinition","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1545,"mutability":"mutable","name":"newSmartWalletChecker","nodeType":"VariableDeclaration","scope":1548,"src":"1946:29:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1544,"name":"address","nodeType":"ElementaryTypeName","src":"1946:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1945:31:29"},"returnParameters":{"id":1547,"nodeType":"ParameterList","parameters":[],"src":"1985:0:29"},"scope":1559,"src":"1909:77:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8e5b490f","id":1551,"implemented":false,"kind":"function","modifiers":[],"name":"apply_smart_wallet_checker","nodeType":"FunctionDefinition","parameters":{"id":1549,"nodeType":"ParameterList","parameters":[],"src":"2027:2:29"},"returnParameters":{"id":1550,"nodeType":"ParameterList","parameters":[],"src":"2038:0:29"},"scope":1559,"src":"1992:47:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"adc63589","id":1558,"implemented":false,"kind":"function","modifiers":[],"name":"locked__end","nodeType":"FunctionDefinition","parameters":{"id":1554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1553,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1558,"src":"2066:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1552,"name":"address","nodeType":"ElementaryTypeName","src":"2066:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2065:14:29"},"returnParameters":{"id":1557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1556,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1558,"src":"2103:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1555,"name":"uint256","nodeType":"ElementaryTypeName","src":"2103:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2102:9:29"},"scope":1559,"src":"2045:67:29","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1560,"src":"1057:1057:29"}],"src":"688:1427:29"},"id":29},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol","exportedSymbols":{"IVotingEscrowRemapper":[1674]},"id":1675,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1561,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"694:23:30"},{"id":1562,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"718:33:30"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol","file":"./IOmniVotingEscrowAdaptor.sol","id":1563,"nodeType":"ImportDirective","scope":1675,"sourceUnit":1006,"src":"753:40:30","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","file":"./IVotingEscrow.sol","id":1564,"nodeType":"ImportDirective","scope":1675,"sourceUnit":1560,"src":"794:29:30","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1565,"nodeType":"StructuredDocumentation","src":"825:675:30","text":" @notice This contract allows veBAL holders on Ethereum to assign their balance to designated addresses on each L2.\n This is intended for smart contracts that are not deployed to the same address on all networks. EOA's are\n expected to either use the same address, or manage delegation on L2 networks themselves.\n @dev For each network (chainId), we maintain a mapping between local (Ethereum) and remote (L2) addresses.\n This contract remaps balance queries on remote network addresses to their corresponding local addresses.\n Users able to call this contract can set their own mappings, or delegate this function to another account if they\n cannot."},"fullyImplemented":false,"id":1674,"linearizedBaseContracts":[1674],"name":"IVotingEscrowRemapper","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":1573,"name":"AddressMappingUpdated","nodeType":"EventDefinition","parameters":{"id":1572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1567,"indexed":true,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":1573,"src":"1567:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1566,"name":"address","nodeType":"ElementaryTypeName","src":"1567:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1569,"indexed":true,"mutability":"mutable","name":"remoteUser","nodeType":"VariableDeclaration","scope":1573,"src":"1594:26:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1568,"name":"address","nodeType":"ElementaryTypeName","src":"1594:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1571,"indexed":true,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":1573,"src":"1622:22:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1570,"name":"uint16","nodeType":"ElementaryTypeName","src":"1622:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1566:79:30"},"src":"1539:107:30"},{"anonymous":false,"id":1579,"name":"RemoteAddressMappingCleared","nodeType":"EventDefinition","parameters":{"id":1578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1575,"indexed":true,"mutability":"mutable","name":"remoteUser","nodeType":"VariableDeclaration","scope":1579,"src":"1685:26:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1574,"name":"address","nodeType":"ElementaryTypeName","src":"1685:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1577,"indexed":true,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":1579,"src":"1713:22:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1576,"name":"uint16","nodeType":"ElementaryTypeName","src":"1713:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1684:52:30"},"src":"1651:86:30"},{"anonymous":false,"id":1585,"name":"AddressDelegateUpdated","nodeType":"EventDefinition","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1581,"indexed":true,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":1585,"src":"1771:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1580,"name":"address","nodeType":"ElementaryTypeName","src":"1771:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1583,"indexed":true,"mutability":"mutable","name":"delegate","nodeType":"VariableDeclaration","scope":1585,"src":"1798:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1582,"name":"address","nodeType":"ElementaryTypeName","src":"1798:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1770:53:30"},"src":"1742:82:30"},{"documentation":{"id":1586,"nodeType":"StructuredDocumentation","src":"1830:66:30","text":" @notice Returns Voting Escrow contract address."},"functionSelector":"08b0308a","id":1591,"implemented":false,"kind":"function","modifiers":[],"name":"getVotingEscrow","nodeType":"FunctionDefinition","parameters":{"id":1587,"nodeType":"ParameterList","parameters":[],"src":"1925:2:30"},"returnParameters":{"id":1590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1589,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1591,"src":"1951:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":1588,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"1951:13:30","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"src":"1950:15:30"},"scope":1674,"src":"1901:65:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"1972:153:30","text":" @notice Returns Omni Voting Escrow Adaptor contract address, which interfaces with the gateway to bridge\n veBAL balances to L2s."},"functionSelector":"5e5543be","id":1597,"implemented":false,"kind":"function","modifiers":[],"name":"getOmniVotingEscrowAdaptor","nodeType":"FunctionDefinition","parameters":{"id":1593,"nodeType":"ParameterList","parameters":[],"src":"2165:2:30"},"returnParameters":{"id":1596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1595,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1597,"src":"2191:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"},"typeName":{"id":1594,"name":"IOmniVotingEscrowAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":1005,"src":"2191:24:30","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"visibility":"internal"}],"src":"2190:26:30"},"scope":1674,"src":"2130:87:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1598,"nodeType":"StructuredDocumentation","src":"2223:325:30","text":" @notice Returns the current total supply of veBAL as a Point.\n @dev We return the total supply as a Point to allow extrapolating this into the future. Note that this\n extrapolation will become invalid when crossing weeks, since we're not taking into account veBAL locks that\n expire then."},"functionSelector":"f6f4a332","id":1603,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalSupplyPoint","nodeType":"FunctionDefinition","parameters":{"id":1599,"nodeType":"ParameterList","parameters":[],"src":"2581:2:30"},"returnParameters":{"id":1602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1601,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1603,"src":"2607:26:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":1600,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"2607:19:30","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"2606:28:30"},"scope":1674,"src":"2553:82:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1604,"nodeType":"StructuredDocumentation","src":"2641:290:30","text":" @notice Returns a user's current veBAL balance as a Point. Note that we don't apply any remappings in this query.\n The returned value is taken directly from the voting escrow.\n @dev We return the balance as a Point to allow extrapolating this into the future."},"functionSelector":"71628bfd","id":1611,"implemented":false,"kind":"function","modifiers":[],"name":"getUserPoint","nodeType":"FunctionDefinition","parameters":{"id":1607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1606,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1611,"src":"2958:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1605,"name":"address","nodeType":"ElementaryTypeName","src":"2958:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2957:14:30"},"returnParameters":{"id":1610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1609,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1611,"src":"2995:26:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":1608,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"2995:19:30","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"2994:28:30"},"scope":1674,"src":"2936:87:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1612,"nodeType":"StructuredDocumentation","src":"3029:142:30","text":" @notice Get timestamp when `user`'s lock finishes.\n @dev The returned value is taken directly from the voting escrow."},"functionSelector":"3e7df7c8","id":1619,"implemented":false,"kind":"function","modifiers":[],"name":"getLockedEnd","nodeType":"FunctionDefinition","parameters":{"id":1615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1614,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1619,"src":"3198:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1613,"name":"address","nodeType":"ElementaryTypeName","src":"3198:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3197:14:30"},"returnParameters":{"id":1618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1617,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1619,"src":"3235:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1616,"name":"uint256","nodeType":"ElementaryTypeName","src":"3235:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3234:9:30"},"scope":1674,"src":"3176:68:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1620,"nodeType":"StructuredDocumentation","src":"3250:351:30","text":" @notice Returns the local user corresponding to an address on a remote chain.\n @dev Returns `address(0)` if the remapping does not exist for the given remote user.\n @param remoteUser - Address of the user on the remote chain corresponding to the local address.\n @param chainId - The chain ID of the remote network."},"functionSelector":"70d1bd17","id":1629,"implemented":false,"kind":"function","modifiers":[],"name":"getLocalUser","nodeType":"FunctionDefinition","parameters":{"id":1625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1622,"mutability":"mutable","name":"remoteUser","nodeType":"VariableDeclaration","scope":1629,"src":"3628:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1621,"name":"address","nodeType":"ElementaryTypeName","src":"3628:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1624,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":1629,"src":"3648:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1623,"name":"uint16","nodeType":"ElementaryTypeName","src":"3648:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"3627:36:30"},"returnParameters":{"id":1628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1627,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1629,"src":"3687:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1626,"name":"address","nodeType":"ElementaryTypeName","src":"3687:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3686:9:30"},"scope":1674,"src":"3606:90:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1630,"nodeType":"StructuredDocumentation","src":"3702:351:30","text":" @notice Returns the remote user corresponding to an address on the local chain.\n @dev Returns `address(0)` if the remapping does not exist for the given local user.\n @param localUser - Address of the user on the local chain corresponding to the remote address.\n @param chainId - The chain ID of the remote network."},"functionSelector":"bda75c38","id":1639,"implemented":false,"kind":"function","modifiers":[],"name":"getRemoteUser","nodeType":"FunctionDefinition","parameters":{"id":1635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1632,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":1639,"src":"4081:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1631,"name":"address","nodeType":"ElementaryTypeName","src":"4081:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1634,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":1639,"src":"4100:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1633,"name":"uint16","nodeType":"ElementaryTypeName","src":"4100:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"4080:35:30"},"returnParameters":{"id":1638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1639,"src":"4139:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4138:9:30"},"scope":1674,"src":"4058:90:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1640,"nodeType":"StructuredDocumentation","src":"4154:183:30","text":" @notice Gets the account that can set a remapping for a given local user.\n @param localUser - Address of the user on the local chain with a remapping manager."},"functionSelector":"ee98b1e7","id":1647,"implemented":false,"kind":"function","modifiers":[],"name":"getRemappingManager","nodeType":"FunctionDefinition","parameters":{"id":1643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1642,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":1647,"src":"4371:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1641,"name":"address","nodeType":"ElementaryTypeName","src":"4371:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4370:19:30"},"returnParameters":{"id":1646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1645,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1647,"src":"4413:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1644,"name":"address","nodeType":"ElementaryTypeName","src":"4413:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4412:9:30"},"scope":1674,"src":"4342:80:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1648,"nodeType":"StructuredDocumentation","src":"4454:619:30","text":" @notice Sets up a mapping from `localUser`'s veBAL balance to `remoteUser` for chain `chainId`.\n @dev In order to set up a remapping on this contract, `localUser` must be a smart contract which has been\n allowlisted to hold veBAL. EOAs are expected to set up any delegation of their veBAL on L2s directly.\n @param localUser - The address of a contract allowlisted on the `SmartWalletChecker`.\n @param remoteUser - The address to receive `localUser`'s balance of veBAL on the remote chain.\n @param chainId - The chain id of the remote chain on which `remoteUser` resides."},"functionSelector":"21861fde","id":1657,"implemented":false,"kind":"function","modifiers":[],"name":"setNetworkRemapping","nodeType":"FunctionDefinition","parameters":{"id":1655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1650,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":1657,"src":"5116:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1649,"name":"address","nodeType":"ElementaryTypeName","src":"5116:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1652,"mutability":"mutable","name":"remoteUser","nodeType":"VariableDeclaration","scope":1657,"src":"5143:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1651,"name":"address","nodeType":"ElementaryTypeName","src":"5143:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1654,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":1657,"src":"5171:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1653,"name":"uint16","nodeType":"ElementaryTypeName","src":"5171:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"5106:85:30"},"returnParameters":{"id":1656,"nodeType":"ParameterList","parameters":[],"src":"5208:0:30"},"scope":1674,"src":"5078:131:30","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1658,"nodeType":"StructuredDocumentation","src":"5215:403:30","text":" @notice Sets an address to manage the mapping for a given local user on their behalf.\n @dev This is intended to handle contracts which cannot interact with this contract directly.\n @param localUser - The address of a contract allowlisted on the `SmartWalletChecker`.\n @param delegate - The address which is allowed to manage remote users to be linked to `localUser`."},"functionSelector":"a9f3f44e","id":1665,"implemented":false,"kind":"function","modifiers":[],"name":"setNetworkRemappingManager","nodeType":"FunctionDefinition","parameters":{"id":1663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1660,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":1665,"src":"5659:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1659,"name":"address","nodeType":"ElementaryTypeName","src":"5659:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1662,"mutability":"mutable","name":"delegate","nodeType":"VariableDeclaration","scope":1665,"src":"5678:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1661,"name":"address","nodeType":"ElementaryTypeName","src":"5678:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5658:37:30"},"returnParameters":{"id":1664,"nodeType":"ParameterList","parameters":[],"src":"5704:0:30"},"scope":1674,"src":"5623:82:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1666,"nodeType":"StructuredDocumentation","src":"5711:526:30","text":" @notice Clears a local user's mapping for a particular network.\n @dev This is intended to discourage and also allow recovery from griefing attacks.\n If griefing occurs then the griefer can be removed from Smart Wallet Checker and have their remappings erased.\n The local user can always clear their own mapping, regardless the state of the Smart Wallet Checker.\n @param localUser - The address of the local user to erase.\n @param chainId - The chain id of the network to erase."},"functionSelector":"76601a18","id":1673,"implemented":false,"kind":"function","modifiers":[],"name":"clearNetworkRemapping","nodeType":"FunctionDefinition","parameters":{"id":1671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1668,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":1673,"src":"6273:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1667,"name":"address","nodeType":"ElementaryTypeName","src":"6273:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1670,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":1673,"src":"6292:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1669,"name":"uint16","nodeType":"ElementaryTypeName","src":"6292:6:30","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"6272:35:30"},"returnParameters":{"id":1672,"nodeType":"ParameterList","parameters":[],"src":"6324:0:30"},"scope":1674,"src":"6242:83:30","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":1675,"src":"1501:4826:30"}],"src":"694:5634:30"},"id":30},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","exportedSymbols":{"Errors":[2248],"_require":[1692,1711],"_revert":[1723,1743]},"id":2249,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1676,"literals":["solidity",">=","0.7",".1","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:31"},{"body":{"id":1691,"nodeType":"Block","src":"984:43:31","statements":[{"condition":{"id":1685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"994:10:31","subExpression":{"id":1684,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1679,"src":"995:9:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1690,"nodeType":"IfStatement","src":"990:34:31","trueBody":{"expression":{"arguments":[{"id":1687,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1681,"src":"1014:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1686,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"1006:7:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1006:18:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1689,"nodeType":"ExpressionStatement","src":"1006:18:31"}}]},"documentation":{"id":1677,"nodeType":"StructuredDocumentation","src":"741:184:31","text":" @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n supported.\n Uses the default 'BAL' prefix for the error code"},"id":1692,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_require","nodeType":"FunctionDefinition","parameters":{"id":1682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1679,"mutability":"mutable","name":"condition","nodeType":"VariableDeclaration","scope":1692,"src":"944:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1678,"name":"bool","nodeType":"ElementaryTypeName","src":"944:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1681,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1692,"src":"960:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1680,"name":"uint256","nodeType":"ElementaryTypeName","src":"960:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"943:35:31"},"returnParameters":{"id":1683,"nodeType":"ParameterList","parameters":[],"src":"984:0:31"},"scope":2249,"src":"926:101:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1710,"nodeType":"Block","src":"1249:51:31","statements":[{"condition":{"id":1703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1259:10:31","subExpression":{"id":1702,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1695,"src":"1260:9:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1709,"nodeType":"IfStatement","src":"1255:42:31","trueBody":{"expression":{"arguments":[{"id":1705,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1697,"src":"1279:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1706,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1699,"src":"1290:6:31","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes3","typeString":"bytes3"}],"id":1704,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1743,"src":"1271:7:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_bytes3_$returns$__$","typeString":"function (uint256,bytes3) pure"}},"id":1707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1271:26:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1708,"nodeType":"ExpressionStatement","src":"1271:26:31"}}]},"documentation":{"id":1693,"nodeType":"StructuredDocumentation","src":"1029:132:31","text":" @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n supported."},"id":1711,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_require","nodeType":"FunctionDefinition","parameters":{"id":1700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1695,"mutability":"mutable","name":"condition","nodeType":"VariableDeclaration","scope":1711,"src":"1185:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1694,"name":"bool","nodeType":"ElementaryTypeName","src":"1185:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1711,"src":"1205:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"1205:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1699,"mutability":"mutable","name":"prefix","nodeType":"VariableDeclaration","scope":1711,"src":"1228:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"},"typeName":{"id":1698,"name":"bytes3","nodeType":"ElementaryTypeName","src":"1228:6:31","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}},"visibility":"internal"}],"src":"1179:64:31"},"returnParameters":{"id":1701,"nodeType":"ParameterList","parameters":[],"src":"1249:0:31"},"scope":2249,"src":"1162:138:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1722,"nodeType":"Block","src":"1500:85:31","statements":[{"expression":{"arguments":[{"id":1718,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1714,"src":"1514:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"3078343234313463","id":1719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1525:8:31","typeDescriptions":{"typeIdentifier":"t_rational_4342092_by_1","typeString":"int_const 4342092"},"value":"0x42414c"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_4342092_by_1","typeString":"int_const 4342092"}],"id":1717,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1743,"src":"1506:7:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_bytes3_$returns$__$","typeString":"function (uint256,bytes3) pure"}},"id":1720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1506:28:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1721,"nodeType":"ExpressionStatement","src":"1506:28:31"}]},"documentation":{"id":1712,"nodeType":"StructuredDocumentation","src":"1302:156:31","text":" @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported.\n Uses the default 'BAL' prefix for the error code"},"id":1723,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_revert","nodeType":"FunctionDefinition","parameters":{"id":1715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1714,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1723,"src":"1476:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1713,"name":"uint256","nodeType":"ElementaryTypeName","src":"1476:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1475:19:31"},"returnParameters":{"id":1716,"nodeType":"ParameterList","parameters":[],"src":"1500:0:31"},"scope":2249,"src":"1459:126:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1742,"nodeType":"Block","src":"1748:3322:31","statements":[{"assignments":[1732],"declarations":[{"constant":false,"id":1732,"mutability":"mutable","name":"prefixUint","nodeType":"VariableDeclaration","scope":1742,"src":"1754:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1731,"name":"uint256","nodeType":"ElementaryTypeName","src":"1754:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1740,"initialValue":{"arguments":[{"arguments":[{"id":1737,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1728,"src":"1790:6:31","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes3","typeString":"bytes3"}],"id":1736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1783:6:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":1735,"name":"uint24","nodeType":"ElementaryTypeName","src":"1783:6:31","typeDescriptions":{}}},"id":1738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1783:14:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":1734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1775:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1733,"name":"uint256","nodeType":"ElementaryTypeName","src":"1775:7:31","typeDescriptions":{}}},"id":1739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1775:23:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1754:44:31"},{"AST":{"nodeType":"YulBlock","src":"2587:2481:31","statements":[{"nodeType":"YulVariableDeclaration","src":"2861:42:31","value":{"arguments":[{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2882:9:31"},{"kind":"number","nodeType":"YulLiteral","src":"2893:2:31","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"2878:3:31"},"nodeType":"YulFunctionCall","src":"2878:18:31"},{"kind":"number","nodeType":"YulLiteral","src":"2898:4:31","type":"","value":"0x30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2874:3:31"},"nodeType":"YulFunctionCall","src":"2874:29:31"},"variables":[{"name":"units","nodeType":"YulTypedName","src":"2865:5:31","type":""}]},{"nodeType":"YulAssignment","src":"2913:31:31","value":{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2930:9:31"},{"kind":"number","nodeType":"YulLiteral","src":"2941:2:31","type":"","value":"10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2926:3:31"},"nodeType":"YulFunctionCall","src":"2926:18:31"},"variableNames":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2913:9:31"}]},{"nodeType":"YulVariableDeclaration","src":"2953:43:31","value":{"arguments":[{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2975:9:31"},{"kind":"number","nodeType":"YulLiteral","src":"2986:2:31","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"2971:3:31"},"nodeType":"YulFunctionCall","src":"2971:18:31"},{"kind":"number","nodeType":"YulLiteral","src":"2991:4:31","type":"","value":"0x30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2967:3:31"},"nodeType":"YulFunctionCall","src":"2967:29:31"},"variables":[{"name":"tenths","nodeType":"YulTypedName","src":"2957:6:31","type":""}]},{"nodeType":"YulAssignment","src":"3006:31:31","value":{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"3023:9:31"},{"kind":"number","nodeType":"YulLiteral","src":"3034:2:31","type":"","value":"10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3019:3:31"},"nodeType":"YulFunctionCall","src":"3019:18:31"},"variableNames":[{"name":"errorCode","nodeType":"YulIdentifier","src":"3006:9:31"}]},{"nodeType":"YulVariableDeclaration","src":"3046:45:31","value":{"arguments":[{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"3070:9:31"},{"kind":"number","nodeType":"YulLiteral","src":"3081:2:31","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"3066:3:31"},"nodeType":"YulFunctionCall","src":"3066:18:31"},{"kind":"number","nodeType":"YulLiteral","src":"3086:4:31","type":"","value":"0x30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3062:3:31"},"nodeType":"YulFunctionCall","src":"3062:29:31"},"variables":[{"name":"hundreds","nodeType":"YulTypedName","src":"3050:8:31","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3724:61:31","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3751:2:31","type":"","value":"24"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3759:4:31","type":"","value":"0x23"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3769:1:31","type":"","value":"8"},{"name":"prefixUint","nodeType":"YulIdentifier","src":"3772:10:31"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3765:3:31"},"nodeType":"YulFunctionCall","src":"3765:18:31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3755:3:31"},"nodeType":"YulFunctionCall","src":"3755:29:31"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3747:3:31"},"nodeType":"YulFunctionCall","src":"3747:38:31"},"variables":[{"name":"formattedPrefix","nodeType":"YulTypedName","src":"3728:15:31","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3795:102:31","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3819:3:31","type":"","value":"200"},{"arguments":[{"name":"formattedPrefix","nodeType":"YulIdentifier","src":"3828:15:31"},{"arguments":[{"arguments":[{"name":"units","nodeType":"YulIdentifier","src":"3853:5:31"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3864:1:31","type":"","value":"8"},{"name":"tenths","nodeType":"YulIdentifier","src":"3867:6:31"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3860:3:31"},"nodeType":"YulFunctionCall","src":"3860:14:31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3849:3:31"},"nodeType":"YulFunctionCall","src":"3849:26:31"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3881:2:31","type":"","value":"16"},{"name":"hundreds","nodeType":"YulIdentifier","src":"3885:8:31"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3877:3:31"},"nodeType":"YulFunctionCall","src":"3877:17:31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3845:3:31"},"nodeType":"YulFunctionCall","src":"3845:50:31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3824:3:31"},"nodeType":"YulFunctionCall","src":"3824:72:31"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3815:3:31"},"nodeType":"YulFunctionCall","src":"3815:82:31"},"variables":[{"name":"revertReason","nodeType":"YulTypedName","src":"3799:12:31","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4412:3:31","type":"","value":"0x0"},{"kind":"number","nodeType":"YulLiteral","src":"4417:66:31","type":"","value":"0x08c379a000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4405:6:31"},"nodeType":"YulFunctionCall","src":"4405:79:31"},"nodeType":"YulExpressionStatement","src":"4405:79:31"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4617:4:31","type":"","value":"0x04"},{"kind":"number","nodeType":"YulLiteral","src":"4623:66:31","type":"","value":"0x0000000000000000000000000000000000000000000000000000000000000020"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4610:6:31"},"nodeType":"YulFunctionCall","src":"4610:80:31"},"nodeType":"YulExpressionStatement","src":"4610:80:31"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4759:4:31","type":"","value":"0x24"},{"kind":"number","nodeType":"YulLiteral","src":"4765:1:31","type":"","value":"7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4752:6:31"},"nodeType":"YulFunctionCall","src":"4752:15:31"},"nodeType":"YulExpressionStatement","src":"4752:15:31"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4832:4:31","type":"","value":"0x44"},{"name":"revertReason","nodeType":"YulIdentifier","src":"4838:12:31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4825:6:31"},"nodeType":"YulFunctionCall","src":"4825:26:31"},"nodeType":"YulExpressionStatement","src":"4825:26:31"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5055:1:31","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5058:3:31","type":"","value":"100"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5048:6:31"},"nodeType":"YulFunctionCall","src":"5048:14:31"},"nodeType":"YulExpressionStatement","src":"5048:14:31"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1726,"isOffset":false,"isSlot":false,"src":"2882:9:31","valueSize":1},{"declaration":1726,"isOffset":false,"isSlot":false,"src":"2913:9:31","valueSize":1},{"declaration":1726,"isOffset":false,"isSlot":false,"src":"2930:9:31","valueSize":1},{"declaration":1726,"isOffset":false,"isSlot":false,"src":"2975:9:31","valueSize":1},{"declaration":1726,"isOffset":false,"isSlot":false,"src":"3006:9:31","valueSize":1},{"declaration":1726,"isOffset":false,"isSlot":false,"src":"3023:9:31","valueSize":1},{"declaration":1726,"isOffset":false,"isSlot":false,"src":"3070:9:31","valueSize":1},{"declaration":1732,"isOffset":false,"isSlot":false,"src":"3772:10:31","valueSize":1}],"id":1741,"nodeType":"InlineAssembly","src":"2578:2490:31"}]},"documentation":{"id":1724,"nodeType":"StructuredDocumentation","src":"1587:104:31","text":" @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported."},"id":1743,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_revert","nodeType":"FunctionDefinition","parameters":{"id":1729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1726,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1743,"src":"1709:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1725,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1728,"mutability":"mutable","name":"prefix","nodeType":"VariableDeclaration","scope":1743,"src":"1728:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"},"typeName":{"id":1727,"name":"bytes3","nodeType":"ElementaryTypeName","src":"1728:6:31","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}},"visibility":"internal"}],"src":"1708:34:31"},"returnParameters":{"id":1730,"nodeType":"ParameterList","parameters":[],"src":"1748:0:31"},"scope":2249,"src":"1692:3378:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":2248,"linearizedBaseContracts":[2248],"name":"Errors","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1746,"mutability":"constant","name":"ADD_OVERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"5105:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1744,"name":"uint256","nodeType":"ElementaryTypeName","src":"5105:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":1745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5146:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"constant":true,"id":1749,"mutability":"constant","name":"SUB_OVERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"5153:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1747,"name":"uint256","nodeType":"ElementaryTypeName","src":"5153:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":1748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5194:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":1752,"mutability":"constant","name":"SUB_UNDERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"5201:43:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1750,"name":"uint256","nodeType":"ElementaryTypeName","src":"5201:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":1751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5243:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":1755,"mutability":"constant","name":"MUL_OVERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"5250:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"5250:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":1754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5291:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":true,"id":1758,"mutability":"constant","name":"ZERO_DIVISION","nodeType":"VariableDeclaration","scope":2248,"src":"5298:43:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1756,"name":"uint256","nodeType":"ElementaryTypeName","src":"5298:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"34","id":1757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5340:1:31","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"visibility":"internal"},{"constant":true,"id":1761,"mutability":"constant","name":"DIV_INTERNAL","nodeType":"VariableDeclaration","scope":2248,"src":"5347:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1759,"name":"uint256","nodeType":"ElementaryTypeName","src":"5347:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35","id":1760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5388:1:31","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"internal"},{"constant":true,"id":1764,"mutability":"constant","name":"X_OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":2248,"src":"5395:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1762,"name":"uint256","nodeType":"ElementaryTypeName","src":"5395:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"36","id":1763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5439:1:31","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"visibility":"internal"},{"constant":true,"id":1767,"mutability":"constant","name":"Y_OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":2248,"src":"5446:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1765,"name":"uint256","nodeType":"ElementaryTypeName","src":"5446:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"37","id":1766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5490:1:31","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"visibility":"internal"},{"constant":true,"id":1770,"mutability":"constant","name":"PRODUCT_OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":2248,"src":"5497:51:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1768,"name":"uint256","nodeType":"ElementaryTypeName","src":"5497:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38","id":1769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5547:1:31","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"internal"},{"constant":true,"id":1773,"mutability":"constant","name":"INVALID_EXPONENT","nodeType":"VariableDeclaration","scope":2248,"src":"5554:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1771,"name":"uint256","nodeType":"ElementaryTypeName","src":"5554:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"39","id":1772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5599:1:31","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"visibility":"internal"},{"constant":true,"id":1776,"mutability":"constant","name":"OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":2248,"src":"5620:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"5620:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313030","id":1775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5662:3:31","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"visibility":"internal"},{"constant":true,"id":1779,"mutability":"constant","name":"UNSORTED_ARRAY","nodeType":"VariableDeclaration","scope":2248,"src":"5671:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1777,"name":"uint256","nodeType":"ElementaryTypeName","src":"5671:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313031","id":1778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5714:3:31","typeDescriptions":{"typeIdentifier":"t_rational_101_by_1","typeString":"int_const 101"},"value":"101"},"visibility":"internal"},{"constant":true,"id":1782,"mutability":"constant","name":"UNSORTED_TOKENS","nodeType":"VariableDeclaration","scope":2248,"src":"5723:47:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"5723:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313032","id":1781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5767:3:31","typeDescriptions":{"typeIdentifier":"t_rational_102_by_1","typeString":"int_const 102"},"value":"102"},"visibility":"internal"},{"constant":true,"id":1785,"mutability":"constant","name":"INPUT_LENGTH_MISMATCH","nodeType":"VariableDeclaration","scope":2248,"src":"5776:53:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1783,"name":"uint256","nodeType":"ElementaryTypeName","src":"5776:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313033","id":1784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5826:3:31","typeDescriptions":{"typeIdentifier":"t_rational_103_by_1","typeString":"int_const 103"},"value":"103"},"visibility":"internal"},{"constant":true,"id":1788,"mutability":"constant","name":"ZERO_TOKEN","nodeType":"VariableDeclaration","scope":2248,"src":"5835:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1786,"name":"uint256","nodeType":"ElementaryTypeName","src":"5835:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313034","id":1787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5874:3:31","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},"visibility":"internal"},{"constant":true,"id":1791,"mutability":"constant","name":"INSUFFICIENT_DATA","nodeType":"VariableDeclaration","scope":2248,"src":"5883:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1789,"name":"uint256","nodeType":"ElementaryTypeName","src":"5883:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313035","id":1790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5929:3:31","typeDescriptions":{"typeIdentifier":"t_rational_105_by_1","typeString":"int_const 105"},"value":"105"},"visibility":"internal"},{"constant":true,"id":1794,"mutability":"constant","name":"MIN_TOKENS","nodeType":"VariableDeclaration","scope":2248,"src":"5959:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1792,"name":"uint256","nodeType":"ElementaryTypeName","src":"5959:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323030","id":1793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5998:3:31","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},"visibility":"internal"},{"constant":true,"id":1797,"mutability":"constant","name":"MAX_TOKENS","nodeType":"VariableDeclaration","scope":2248,"src":"6007:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1795,"name":"uint256","nodeType":"ElementaryTypeName","src":"6007:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323031","id":1796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6046:3:31","typeDescriptions":{"typeIdentifier":"t_rational_201_by_1","typeString":"int_const 201"},"value":"201"},"visibility":"internal"},{"constant":true,"id":1800,"mutability":"constant","name":"MAX_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":2248,"src":"6055:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1798,"name":"uint256","nodeType":"ElementaryTypeName","src":"6055:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323032","id":1799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6107:3:31","typeDescriptions":{"typeIdentifier":"t_rational_202_by_1","typeString":"int_const 202"},"value":"202"},"visibility":"internal"},{"constant":true,"id":1803,"mutability":"constant","name":"MIN_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":2248,"src":"6116:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1801,"name":"uint256","nodeType":"ElementaryTypeName","src":"6116:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323033","id":1802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6168:3:31","typeDescriptions":{"typeIdentifier":"t_rational_203_by_1","typeString":"int_const 203"},"value":"203"},"visibility":"internal"},{"constant":true,"id":1806,"mutability":"constant","name":"MINIMUM_BPT","nodeType":"VariableDeclaration","scope":2248,"src":"6177:43:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1804,"name":"uint256","nodeType":"ElementaryTypeName","src":"6177:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323034","id":1805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6217:3:31","typeDescriptions":{"typeIdentifier":"t_rational_204_by_1","typeString":"int_const 204"},"value":"204"},"visibility":"internal"},{"constant":true,"id":1809,"mutability":"constant","name":"CALLER_NOT_VAULT","nodeType":"VariableDeclaration","scope":2248,"src":"6226:48:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1807,"name":"uint256","nodeType":"ElementaryTypeName","src":"6226:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323035","id":1808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6271:3:31","typeDescriptions":{"typeIdentifier":"t_rational_205_by_1","typeString":"int_const 205"},"value":"205"},"visibility":"internal"},{"constant":true,"id":1812,"mutability":"constant","name":"UNINITIALIZED","nodeType":"VariableDeclaration","scope":2248,"src":"6280:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1810,"name":"uint256","nodeType":"ElementaryTypeName","src":"6280:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323036","id":1811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6322:3:31","typeDescriptions":{"typeIdentifier":"t_rational_206_by_1","typeString":"int_const 206"},"value":"206"},"visibility":"internal"},{"constant":true,"id":1815,"mutability":"constant","name":"BPT_IN_MAX_AMOUNT","nodeType":"VariableDeclaration","scope":2248,"src":"6331:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1813,"name":"uint256","nodeType":"ElementaryTypeName","src":"6331:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323037","id":1814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6377:3:31","typeDescriptions":{"typeIdentifier":"t_rational_207_by_1","typeString":"int_const 207"},"value":"207"},"visibility":"internal"},{"constant":true,"id":1818,"mutability":"constant","name":"BPT_OUT_MIN_AMOUNT","nodeType":"VariableDeclaration","scope":2248,"src":"6386:50:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1816,"name":"uint256","nodeType":"ElementaryTypeName","src":"6386:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323038","id":1817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6433:3:31","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},"visibility":"internal"},{"constant":true,"id":1821,"mutability":"constant","name":"EXPIRED_PERMIT","nodeType":"VariableDeclaration","scope":2248,"src":"6442:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1819,"name":"uint256","nodeType":"ElementaryTypeName","src":"6442:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323039","id":1820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6485:3:31","typeDescriptions":{"typeIdentifier":"t_rational_209_by_1","typeString":"int_const 209"},"value":"209"},"visibility":"internal"},{"constant":true,"id":1824,"mutability":"constant","name":"NOT_TWO_TOKENS","nodeType":"VariableDeclaration","scope":2248,"src":"6494:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1822,"name":"uint256","nodeType":"ElementaryTypeName","src":"6494:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323130","id":1823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6537:3:31","typeDescriptions":{"typeIdentifier":"t_rational_210_by_1","typeString":"int_const 210"},"value":"210"},"visibility":"internal"},{"constant":true,"id":1827,"mutability":"constant","name":"DISABLED","nodeType":"VariableDeclaration","scope":2248,"src":"6546:40:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1825,"name":"uint256","nodeType":"ElementaryTypeName","src":"6546:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323131","id":1826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6583:3:31","typeDescriptions":{"typeIdentifier":"t_rational_211_by_1","typeString":"int_const 211"},"value":"211"},"visibility":"internal"},{"constant":true,"id":1830,"mutability":"constant","name":"MIN_AMP","nodeType":"VariableDeclaration","scope":2248,"src":"6606:39:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1828,"name":"uint256","nodeType":"ElementaryTypeName","src":"6606:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333030","id":1829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6642:3:31","typeDescriptions":{"typeIdentifier":"t_rational_300_by_1","typeString":"int_const 300"},"value":"300"},"visibility":"internal"},{"constant":true,"id":1833,"mutability":"constant","name":"MAX_AMP","nodeType":"VariableDeclaration","scope":2248,"src":"6651:39:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1831,"name":"uint256","nodeType":"ElementaryTypeName","src":"6651:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333031","id":1832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6687:3:31","typeDescriptions":{"typeIdentifier":"t_rational_301_by_1","typeString":"int_const 301"},"value":"301"},"visibility":"internal"},{"constant":true,"id":1836,"mutability":"constant","name":"MIN_WEIGHT","nodeType":"VariableDeclaration","scope":2248,"src":"6696:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1834,"name":"uint256","nodeType":"ElementaryTypeName","src":"6696:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333032","id":1835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6735:3:31","typeDescriptions":{"typeIdentifier":"t_rational_302_by_1","typeString":"int_const 302"},"value":"302"},"visibility":"internal"},{"constant":true,"id":1839,"mutability":"constant","name":"MAX_STABLE_TOKENS","nodeType":"VariableDeclaration","scope":2248,"src":"6744:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1837,"name":"uint256","nodeType":"ElementaryTypeName","src":"6744:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333033","id":1838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6790:3:31","typeDescriptions":{"typeIdentifier":"t_rational_303_by_1","typeString":"int_const 303"},"value":"303"},"visibility":"internal"},{"constant":true,"id":1842,"mutability":"constant","name":"MAX_IN_RATIO","nodeType":"VariableDeclaration","scope":2248,"src":"6799:44:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1840,"name":"uint256","nodeType":"ElementaryTypeName","src":"6799:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333034","id":1841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6840:3:31","typeDescriptions":{"typeIdentifier":"t_rational_304_by_1","typeString":"int_const 304"},"value":"304"},"visibility":"internal"},{"constant":true,"id":1845,"mutability":"constant","name":"MAX_OUT_RATIO","nodeType":"VariableDeclaration","scope":2248,"src":"6849:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1843,"name":"uint256","nodeType":"ElementaryTypeName","src":"6849:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333035","id":1844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6891:3:31","typeDescriptions":{"typeIdentifier":"t_rational_305_by_1","typeString":"int_const 305"},"value":"305"},"visibility":"internal"},{"constant":true,"id":1848,"mutability":"constant","name":"MIN_BPT_IN_FOR_TOKEN_OUT","nodeType":"VariableDeclaration","scope":2248,"src":"6900:56:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1846,"name":"uint256","nodeType":"ElementaryTypeName","src":"6900:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333036","id":1847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6953:3:31","typeDescriptions":{"typeIdentifier":"t_rational_306_by_1","typeString":"int_const 306"},"value":"306"},"visibility":"internal"},{"constant":true,"id":1851,"mutability":"constant","name":"MAX_OUT_BPT_FOR_TOKEN_IN","nodeType":"VariableDeclaration","scope":2248,"src":"6962:56:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1849,"name":"uint256","nodeType":"ElementaryTypeName","src":"6962:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333037","id":1850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7015:3:31","typeDescriptions":{"typeIdentifier":"t_rational_307_by_1","typeString":"int_const 307"},"value":"307"},"visibility":"internal"},{"constant":true,"id":1854,"mutability":"constant","name":"NORMALIZED_WEIGHT_INVARIANT","nodeType":"VariableDeclaration","scope":2248,"src":"7024:59:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1852,"name":"uint256","nodeType":"ElementaryTypeName","src":"7024:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333038","id":1853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7080:3:31","typeDescriptions":{"typeIdentifier":"t_rational_308_by_1","typeString":"int_const 308"},"value":"308"},"visibility":"internal"},{"constant":true,"id":1857,"mutability":"constant","name":"INVALID_TOKEN","nodeType":"VariableDeclaration","scope":2248,"src":"7089:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1855,"name":"uint256","nodeType":"ElementaryTypeName","src":"7089:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333039","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7131:3:31","typeDescriptions":{"typeIdentifier":"t_rational_309_by_1","typeString":"int_const 309"},"value":"309"},"visibility":"internal"},{"constant":true,"id":1860,"mutability":"constant","name":"UNHANDLED_JOIN_KIND","nodeType":"VariableDeclaration","scope":2248,"src":"7140:51:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1858,"name":"uint256","nodeType":"ElementaryTypeName","src":"7140:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333130","id":1859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7188:3:31","typeDescriptions":{"typeIdentifier":"t_rational_310_by_1","typeString":"int_const 310"},"value":"310"},"visibility":"internal"},{"constant":true,"id":1863,"mutability":"constant","name":"ZERO_INVARIANT","nodeType":"VariableDeclaration","scope":2248,"src":"7197:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1861,"name":"uint256","nodeType":"ElementaryTypeName","src":"7197:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333131","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7240:3:31","typeDescriptions":{"typeIdentifier":"t_rational_311_by_1","typeString":"int_const 311"},"value":"311"},"visibility":"internal"},{"constant":true,"id":1866,"mutability":"constant","name":"ORACLE_INVALID_SECONDS_QUERY","nodeType":"VariableDeclaration","scope":2248,"src":"7249:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1864,"name":"uint256","nodeType":"ElementaryTypeName","src":"7249:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333132","id":1865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7306:3:31","typeDescriptions":{"typeIdentifier":"t_rational_312_by_1","typeString":"int_const 312"},"value":"312"},"visibility":"internal"},{"constant":true,"id":1869,"mutability":"constant","name":"ORACLE_NOT_INITIALIZED","nodeType":"VariableDeclaration","scope":2248,"src":"7315:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1867,"name":"uint256","nodeType":"ElementaryTypeName","src":"7315:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333133","id":1868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7366:3:31","typeDescriptions":{"typeIdentifier":"t_rational_313_by_1","typeString":"int_const 313"},"value":"313"},"visibility":"internal"},{"constant":true,"id":1872,"mutability":"constant","name":"ORACLE_QUERY_TOO_OLD","nodeType":"VariableDeclaration","scope":2248,"src":"7375:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1870,"name":"uint256","nodeType":"ElementaryTypeName","src":"7375:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333134","id":1871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7424:3:31","typeDescriptions":{"typeIdentifier":"t_rational_314_by_1","typeString":"int_const 314"},"value":"314"},"visibility":"internal"},{"constant":true,"id":1875,"mutability":"constant","name":"ORACLE_INVALID_INDEX","nodeType":"VariableDeclaration","scope":2248,"src":"7433:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1873,"name":"uint256","nodeType":"ElementaryTypeName","src":"7433:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333135","id":1874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7482:3:31","typeDescriptions":{"typeIdentifier":"t_rational_315_by_1","typeString":"int_const 315"},"value":"315"},"visibility":"internal"},{"constant":true,"id":1878,"mutability":"constant","name":"ORACLE_BAD_SECS","nodeType":"VariableDeclaration","scope":2248,"src":"7491:47:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1876,"name":"uint256","nodeType":"ElementaryTypeName","src":"7491:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333136","id":1877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7535:3:31","typeDescriptions":{"typeIdentifier":"t_rational_316_by_1","typeString":"int_const 316"},"value":"316"},"visibility":"internal"},{"constant":true,"id":1881,"mutability":"constant","name":"AMP_END_TIME_TOO_CLOSE","nodeType":"VariableDeclaration","scope":2248,"src":"7544:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1879,"name":"uint256","nodeType":"ElementaryTypeName","src":"7544:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333137","id":1880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7595:3:31","typeDescriptions":{"typeIdentifier":"t_rational_317_by_1","typeString":"int_const 317"},"value":"317"},"visibility":"internal"},{"constant":true,"id":1884,"mutability":"constant","name":"AMP_ONGOING_UPDATE","nodeType":"VariableDeclaration","scope":2248,"src":"7604:50:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1882,"name":"uint256","nodeType":"ElementaryTypeName","src":"7604:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333138","id":1883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7651:3:31","typeDescriptions":{"typeIdentifier":"t_rational_318_by_1","typeString":"int_const 318"},"value":"318"},"visibility":"internal"},{"constant":true,"id":1887,"mutability":"constant","name":"AMP_RATE_TOO_HIGH","nodeType":"VariableDeclaration","scope":2248,"src":"7660:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1885,"name":"uint256","nodeType":"ElementaryTypeName","src":"7660:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333139","id":1886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7706:3:31","typeDescriptions":{"typeIdentifier":"t_rational_319_by_1","typeString":"int_const 319"},"value":"319"},"visibility":"internal"},{"constant":true,"id":1890,"mutability":"constant","name":"AMP_NO_ONGOING_UPDATE","nodeType":"VariableDeclaration","scope":2248,"src":"7715:53:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1888,"name":"uint256","nodeType":"ElementaryTypeName","src":"7715:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333230","id":1889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7765:3:31","typeDescriptions":{"typeIdentifier":"t_rational_320_by_1","typeString":"int_const 320"},"value":"320"},"visibility":"internal"},{"constant":true,"id":1893,"mutability":"constant","name":"STABLE_INVARIANT_DIDNT_CONVERGE","nodeType":"VariableDeclaration","scope":2248,"src":"7774:63:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1891,"name":"uint256","nodeType":"ElementaryTypeName","src":"7774:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333231","id":1892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7834:3:31","typeDescriptions":{"typeIdentifier":"t_rational_321_by_1","typeString":"int_const 321"},"value":"321"},"visibility":"internal"},{"constant":true,"id":1896,"mutability":"constant","name":"STABLE_GET_BALANCE_DIDNT_CONVERGE","nodeType":"VariableDeclaration","scope":2248,"src":"7843:65:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1894,"name":"uint256","nodeType":"ElementaryTypeName","src":"7843:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333232","id":1895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7905:3:31","typeDescriptions":{"typeIdentifier":"t_rational_322_by_1","typeString":"int_const 322"},"value":"322"},"visibility":"internal"},{"constant":true,"id":1899,"mutability":"constant","name":"RELAYER_NOT_CONTRACT","nodeType":"VariableDeclaration","scope":2248,"src":"7914:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1897,"name":"uint256","nodeType":"ElementaryTypeName","src":"7914:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333233","id":1898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7963:3:31","typeDescriptions":{"typeIdentifier":"t_rational_323_by_1","typeString":"int_const 323"},"value":"323"},"visibility":"internal"},{"constant":true,"id":1902,"mutability":"constant","name":"BASE_POOL_RELAYER_NOT_CALLED","nodeType":"VariableDeclaration","scope":2248,"src":"7972:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1900,"name":"uint256","nodeType":"ElementaryTypeName","src":"7972:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333234","id":1901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8029:3:31","typeDescriptions":{"typeIdentifier":"t_rational_324_by_1","typeString":"int_const 324"},"value":"324"},"visibility":"internal"},{"constant":true,"id":1905,"mutability":"constant","name":"REBALANCING_RELAYER_REENTERED","nodeType":"VariableDeclaration","scope":2248,"src":"8038:61:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1903,"name":"uint256","nodeType":"ElementaryTypeName","src":"8038:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333235","id":1904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8096:3:31","typeDescriptions":{"typeIdentifier":"t_rational_325_by_1","typeString":"int_const 325"},"value":"325"},"visibility":"internal"},{"constant":true,"id":1908,"mutability":"constant","name":"GRADUAL_UPDATE_TIME_TRAVEL","nodeType":"VariableDeclaration","scope":2248,"src":"8105:58:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"8105:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333236","id":1907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8160:3:31","typeDescriptions":{"typeIdentifier":"t_rational_326_by_1","typeString":"int_const 326"},"value":"326"},"visibility":"internal"},{"constant":true,"id":1911,"mutability":"constant","name":"SWAPS_DISABLED","nodeType":"VariableDeclaration","scope":2248,"src":"8169:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1909,"name":"uint256","nodeType":"ElementaryTypeName","src":"8169:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333237","id":1910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8212:3:31","typeDescriptions":{"typeIdentifier":"t_rational_327_by_1","typeString":"int_const 327"},"value":"327"},"visibility":"internal"},{"constant":true,"id":1914,"mutability":"constant","name":"CALLER_IS_NOT_LBP_OWNER","nodeType":"VariableDeclaration","scope":2248,"src":"8221:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1912,"name":"uint256","nodeType":"ElementaryTypeName","src":"8221:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333238","id":1913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8273:3:31","typeDescriptions":{"typeIdentifier":"t_rational_328_by_1","typeString":"int_const 328"},"value":"328"},"visibility":"internal"},{"constant":true,"id":1917,"mutability":"constant","name":"PRICE_RATE_OVERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"8282:51:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1915,"name":"uint256","nodeType":"ElementaryTypeName","src":"8282:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333239","id":1916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8330:3:31","typeDescriptions":{"typeIdentifier":"t_rational_329_by_1","typeString":"int_const 329"},"value":"329"},"visibility":"internal"},{"constant":true,"id":1920,"mutability":"constant","name":"INVALID_JOIN_EXIT_KIND_WHILE_SWAPS_DISABLED","nodeType":"VariableDeclaration","scope":2248,"src":"8339:75:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1918,"name":"uint256","nodeType":"ElementaryTypeName","src":"8339:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333330","id":1919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8411:3:31","typeDescriptions":{"typeIdentifier":"t_rational_330_by_1","typeString":"int_const 330"},"value":"330"},"visibility":"internal"},{"constant":true,"id":1923,"mutability":"constant","name":"WEIGHT_CHANGE_TOO_FAST","nodeType":"VariableDeclaration","scope":2248,"src":"8420:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1921,"name":"uint256","nodeType":"ElementaryTypeName","src":"8420:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333331","id":1922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8471:3:31","typeDescriptions":{"typeIdentifier":"t_rational_331_by_1","typeString":"int_const 331"},"value":"331"},"visibility":"internal"},{"constant":true,"id":1926,"mutability":"constant","name":"LOWER_GREATER_THAN_UPPER_TARGET","nodeType":"VariableDeclaration","scope":2248,"src":"8480:63:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1924,"name":"uint256","nodeType":"ElementaryTypeName","src":"8480:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333332","id":1925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8540:3:31","typeDescriptions":{"typeIdentifier":"t_rational_332_by_1","typeString":"int_const 332"},"value":"332"},"visibility":"internal"},{"constant":true,"id":1929,"mutability":"constant","name":"UPPER_TARGET_TOO_HIGH","nodeType":"VariableDeclaration","scope":2248,"src":"8549:53:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1927,"name":"uint256","nodeType":"ElementaryTypeName","src":"8549:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333333","id":1928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8599:3:31","typeDescriptions":{"typeIdentifier":"t_rational_333_by_1","typeString":"int_const 333"},"value":"333"},"visibility":"internal"},{"constant":true,"id":1932,"mutability":"constant","name":"UNHANDLED_BY_LINEAR_POOL","nodeType":"VariableDeclaration","scope":2248,"src":"8608:56:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1930,"name":"uint256","nodeType":"ElementaryTypeName","src":"8608:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333334","id":1931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8661:3:31","typeDescriptions":{"typeIdentifier":"t_rational_334_by_1","typeString":"int_const 334"},"value":"334"},"visibility":"internal"},{"constant":true,"id":1935,"mutability":"constant","name":"OUT_OF_TARGET_RANGE","nodeType":"VariableDeclaration","scope":2248,"src":"8670:51:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1933,"name":"uint256","nodeType":"ElementaryTypeName","src":"8670:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333335","id":1934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8718:3:31","typeDescriptions":{"typeIdentifier":"t_rational_335_by_1","typeString":"int_const 335"},"value":"335"},"visibility":"internal"},{"constant":true,"id":1938,"mutability":"constant","name":"UNHANDLED_EXIT_KIND","nodeType":"VariableDeclaration","scope":2248,"src":"8727:51:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1936,"name":"uint256","nodeType":"ElementaryTypeName","src":"8727:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333336","id":1937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8775:3:31","typeDescriptions":{"typeIdentifier":"t_rational_336_by_1","typeString":"int_const 336"},"value":"336"},"visibility":"internal"},{"constant":true,"id":1941,"mutability":"constant","name":"UNAUTHORIZED_EXIT","nodeType":"VariableDeclaration","scope":2248,"src":"8784:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1939,"name":"uint256","nodeType":"ElementaryTypeName","src":"8784:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333337","id":1940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8830:3:31","typeDescriptions":{"typeIdentifier":"t_rational_337_by_1","typeString":"int_const 337"},"value":"337"},"visibility":"internal"},{"constant":true,"id":1944,"mutability":"constant","name":"MAX_MANAGEMENT_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":2248,"src":"8839:66:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1942,"name":"uint256","nodeType":"ElementaryTypeName","src":"8839:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333338","id":1943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8902:3:31","typeDescriptions":{"typeIdentifier":"t_rational_338_by_1","typeString":"int_const 338"},"value":"338"},"visibility":"internal"},{"constant":true,"id":1947,"mutability":"constant","name":"UNHANDLED_BY_MANAGED_POOL","nodeType":"VariableDeclaration","scope":2248,"src":"8911:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1945,"name":"uint256","nodeType":"ElementaryTypeName","src":"8911:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333339","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8965:3:31","typeDescriptions":{"typeIdentifier":"t_rational_339_by_1","typeString":"int_const 339"},"value":"339"},"visibility":"internal"},{"constant":true,"id":1950,"mutability":"constant","name":"UNHANDLED_BY_PHANTOM_POOL","nodeType":"VariableDeclaration","scope":2248,"src":"8974:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1948,"name":"uint256","nodeType":"ElementaryTypeName","src":"8974:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333430","id":1949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9028:3:31","typeDescriptions":{"typeIdentifier":"t_rational_340_by_1","typeString":"int_const 340"},"value":"340"},"visibility":"internal"},{"constant":true,"id":1953,"mutability":"constant","name":"TOKEN_DOES_NOT_HAVE_RATE_PROVIDER","nodeType":"VariableDeclaration","scope":2248,"src":"9037:65:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1951,"name":"uint256","nodeType":"ElementaryTypeName","src":"9037:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333431","id":1952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9099:3:31","typeDescriptions":{"typeIdentifier":"t_rational_341_by_1","typeString":"int_const 341"},"value":"341"},"visibility":"internal"},{"constant":true,"id":1956,"mutability":"constant","name":"INVALID_INITIALIZATION","nodeType":"VariableDeclaration","scope":2248,"src":"9108:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1954,"name":"uint256","nodeType":"ElementaryTypeName","src":"9108:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333432","id":1955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9159:3:31","typeDescriptions":{"typeIdentifier":"t_rational_342_by_1","typeString":"int_const 342"},"value":"342"},"visibility":"internal"},{"constant":true,"id":1959,"mutability":"constant","name":"OUT_OF_NEW_TARGET_RANGE","nodeType":"VariableDeclaration","scope":2248,"src":"9168:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1957,"name":"uint256","nodeType":"ElementaryTypeName","src":"9168:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333433","id":1958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9220:3:31","typeDescriptions":{"typeIdentifier":"t_rational_343_by_1","typeString":"int_const 343"},"value":"343"},"visibility":"internal"},{"constant":true,"id":1962,"mutability":"constant","name":"FEATURE_DISABLED","nodeType":"VariableDeclaration","scope":2248,"src":"9229:48:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1960,"name":"uint256","nodeType":"ElementaryTypeName","src":"9229:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333434","id":1961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9274:3:31","typeDescriptions":{"typeIdentifier":"t_rational_344_by_1","typeString":"int_const 344"},"value":"344"},"visibility":"internal"},{"constant":true,"id":1965,"mutability":"constant","name":"UNINITIALIZED_POOL_CONTROLLER","nodeType":"VariableDeclaration","scope":2248,"src":"9283:61:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1963,"name":"uint256","nodeType":"ElementaryTypeName","src":"9283:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333435","id":1964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9341:3:31","typeDescriptions":{"typeIdentifier":"t_rational_345_by_1","typeString":"int_const 345"},"value":"345"},"visibility":"internal"},{"constant":true,"id":1968,"mutability":"constant","name":"SET_SWAP_FEE_DURING_FEE_CHANGE","nodeType":"VariableDeclaration","scope":2248,"src":"9350:62:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1966,"name":"uint256","nodeType":"ElementaryTypeName","src":"9350:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333436","id":1967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9409:3:31","typeDescriptions":{"typeIdentifier":"t_rational_346_by_1","typeString":"int_const 346"},"value":"346"},"visibility":"internal"},{"constant":true,"id":1971,"mutability":"constant","name":"SET_SWAP_FEE_PENDING_FEE_CHANGE","nodeType":"VariableDeclaration","scope":2248,"src":"9418:63:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1969,"name":"uint256","nodeType":"ElementaryTypeName","src":"9418:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333437","id":1970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9478:3:31","typeDescriptions":{"typeIdentifier":"t_rational_347_by_1","typeString":"int_const 347"},"value":"347"},"visibility":"internal"},{"constant":true,"id":1974,"mutability":"constant","name":"CHANGE_TOKENS_DURING_WEIGHT_CHANGE","nodeType":"VariableDeclaration","scope":2248,"src":"9487:66:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1972,"name":"uint256","nodeType":"ElementaryTypeName","src":"9487:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333438","id":1973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9550:3:31","typeDescriptions":{"typeIdentifier":"t_rational_348_by_1","typeString":"int_const 348"},"value":"348"},"visibility":"internal"},{"constant":true,"id":1977,"mutability":"constant","name":"CHANGE_TOKENS_PENDING_WEIGHT_CHANGE","nodeType":"VariableDeclaration","scope":2248,"src":"9559:67:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1975,"name":"uint256","nodeType":"ElementaryTypeName","src":"9559:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333439","id":1976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9623:3:31","typeDescriptions":{"typeIdentifier":"t_rational_349_by_1","typeString":"int_const 349"},"value":"349"},"visibility":"internal"},{"constant":true,"id":1980,"mutability":"constant","name":"MAX_WEIGHT","nodeType":"VariableDeclaration","scope":2248,"src":"9632:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1978,"name":"uint256","nodeType":"ElementaryTypeName","src":"9632:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333530","id":1979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9671:3:31","typeDescriptions":{"typeIdentifier":"t_rational_350_by_1","typeString":"int_const 350"},"value":"350"},"visibility":"internal"},{"constant":true,"id":1983,"mutability":"constant","name":"UNAUTHORIZED_JOIN","nodeType":"VariableDeclaration","scope":2248,"src":"9680:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1981,"name":"uint256","nodeType":"ElementaryTypeName","src":"9680:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333531","id":1982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9726:3:31","typeDescriptions":{"typeIdentifier":"t_rational_351_by_1","typeString":"int_const 351"},"value":"351"},"visibility":"internal"},{"constant":true,"id":1986,"mutability":"constant","name":"MAX_MANAGEMENT_AUM_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":2248,"src":"9735:65:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1984,"name":"uint256","nodeType":"ElementaryTypeName","src":"9735:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333532","id":1985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9797:3:31","typeDescriptions":{"typeIdentifier":"t_rational_352_by_1","typeString":"int_const 352"},"value":"352"},"visibility":"internal"},{"constant":true,"id":1989,"mutability":"constant","name":"FRACTIONAL_TARGET","nodeType":"VariableDeclaration","scope":2248,"src":"9806:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1987,"name":"uint256","nodeType":"ElementaryTypeName","src":"9806:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333533","id":1988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9852:3:31","typeDescriptions":{"typeIdentifier":"t_rational_353_by_1","typeString":"int_const 353"},"value":"353"},"visibility":"internal"},{"constant":true,"id":1992,"mutability":"constant","name":"ADD_OR_REMOVE_BPT","nodeType":"VariableDeclaration","scope":2248,"src":"9861:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1990,"name":"uint256","nodeType":"ElementaryTypeName","src":"9861:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333534","id":1991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9907:3:31","typeDescriptions":{"typeIdentifier":"t_rational_354_by_1","typeString":"int_const 354"},"value":"354"},"visibility":"internal"},{"constant":true,"id":1995,"mutability":"constant","name":"INVALID_CIRCUIT_BREAKER_BOUNDS","nodeType":"VariableDeclaration","scope":2248,"src":"9916:62:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1993,"name":"uint256","nodeType":"ElementaryTypeName","src":"9916:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333535","id":1994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9975:3:31","typeDescriptions":{"typeIdentifier":"t_rational_355_by_1","typeString":"int_const 355"},"value":"355"},"visibility":"internal"},{"constant":true,"id":1998,"mutability":"constant","name":"CIRCUIT_BREAKER_TRIPPED","nodeType":"VariableDeclaration","scope":2248,"src":"9984:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1996,"name":"uint256","nodeType":"ElementaryTypeName","src":"9984:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333536","id":1997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10036:3:31","typeDescriptions":{"typeIdentifier":"t_rational_356_by_1","typeString":"int_const 356"},"value":"356"},"visibility":"internal"},{"constant":true,"id":2001,"mutability":"constant","name":"MALICIOUS_QUERY_REVERT","nodeType":"VariableDeclaration","scope":2248,"src":"10045:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1999,"name":"uint256","nodeType":"ElementaryTypeName","src":"10045:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333537","id":2000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10096:3:31","typeDescriptions":{"typeIdentifier":"t_rational_357_by_1","typeString":"int_const 357"},"value":"357"},"visibility":"internal"},{"constant":true,"id":2004,"mutability":"constant","name":"JOINS_EXITS_DISABLED","nodeType":"VariableDeclaration","scope":2248,"src":"10105:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2002,"name":"uint256","nodeType":"ElementaryTypeName","src":"10105:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333538","id":2003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10154:3:31","typeDescriptions":{"typeIdentifier":"t_rational_358_by_1","typeString":"int_const 358"},"value":"358"},"visibility":"internal"},{"constant":true,"id":2007,"mutability":"constant","name":"REENTRANCY","nodeType":"VariableDeclaration","scope":2248,"src":"10175:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2005,"name":"uint256","nodeType":"ElementaryTypeName","src":"10175:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343030","id":2006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10214:3:31","typeDescriptions":{"typeIdentifier":"t_rational_400_by_1","typeString":"int_const 400"},"value":"400"},"visibility":"internal"},{"constant":true,"id":2010,"mutability":"constant","name":"SENDER_NOT_ALLOWED","nodeType":"VariableDeclaration","scope":2248,"src":"10223:50:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2008,"name":"uint256","nodeType":"ElementaryTypeName","src":"10223:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343031","id":2009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10270:3:31","typeDescriptions":{"typeIdentifier":"t_rational_401_by_1","typeString":"int_const 401"},"value":"401"},"visibility":"internal"},{"constant":true,"id":2013,"mutability":"constant","name":"PAUSED","nodeType":"VariableDeclaration","scope":2248,"src":"10279:38:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2011,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343032","id":2012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10314:3:31","typeDescriptions":{"typeIdentifier":"t_rational_402_by_1","typeString":"int_const 402"},"value":"402"},"visibility":"internal"},{"constant":true,"id":2016,"mutability":"constant","name":"PAUSE_WINDOW_EXPIRED","nodeType":"VariableDeclaration","scope":2248,"src":"10323:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2014,"name":"uint256","nodeType":"ElementaryTypeName","src":"10323:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343033","id":2015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10372:3:31","typeDescriptions":{"typeIdentifier":"t_rational_403_by_1","typeString":"int_const 403"},"value":"403"},"visibility":"internal"},{"constant":true,"id":2019,"mutability":"constant","name":"MAX_PAUSE_WINDOW_DURATION","nodeType":"VariableDeclaration","scope":2248,"src":"10381:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2017,"name":"uint256","nodeType":"ElementaryTypeName","src":"10381:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343034","id":2018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10435:3:31","typeDescriptions":{"typeIdentifier":"t_rational_404_by_1","typeString":"int_const 404"},"value":"404"},"visibility":"internal"},{"constant":true,"id":2022,"mutability":"constant","name":"MAX_BUFFER_PERIOD_DURATION","nodeType":"VariableDeclaration","scope":2248,"src":"10444:58:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2020,"name":"uint256","nodeType":"ElementaryTypeName","src":"10444:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343035","id":2021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10499:3:31","typeDescriptions":{"typeIdentifier":"t_rational_405_by_1","typeString":"int_const 405"},"value":"405"},"visibility":"internal"},{"constant":true,"id":2025,"mutability":"constant","name":"INSUFFICIENT_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"10508:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2023,"name":"uint256","nodeType":"ElementaryTypeName","src":"10508:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343036","id":2024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10557:3:31","typeDescriptions":{"typeIdentifier":"t_rational_406_by_1","typeString":"int_const 406"},"value":"406"},"visibility":"internal"},{"constant":true,"id":2028,"mutability":"constant","name":"INSUFFICIENT_ALLOWANCE","nodeType":"VariableDeclaration","scope":2248,"src":"10566:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2026,"name":"uint256","nodeType":"ElementaryTypeName","src":"10566:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343037","id":2027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10617:3:31","typeDescriptions":{"typeIdentifier":"t_rational_407_by_1","typeString":"int_const 407"},"value":"407"},"visibility":"internal"},{"constant":true,"id":2031,"mutability":"constant","name":"ERC20_TRANSFER_FROM_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":2248,"src":"10626:64:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2029,"name":"uint256","nodeType":"ElementaryTypeName","src":"10626:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343038","id":2030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10687:3:31","typeDescriptions":{"typeIdentifier":"t_rational_408_by_1","typeString":"int_const 408"},"value":"408"},"visibility":"internal"},{"constant":true,"id":2034,"mutability":"constant","name":"ERC20_TRANSFER_TO_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":2248,"src":"10696:62:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2032,"name":"uint256","nodeType":"ElementaryTypeName","src":"10696:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343039","id":2033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10755:3:31","typeDescriptions":{"typeIdentifier":"t_rational_409_by_1","typeString":"int_const 409"},"value":"409"},"visibility":"internal"},{"constant":true,"id":2037,"mutability":"constant","name":"ERC20_MINT_TO_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":2248,"src":"10764:58:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2035,"name":"uint256","nodeType":"ElementaryTypeName","src":"10764:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343130","id":2036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10819:3:31","typeDescriptions":{"typeIdentifier":"t_rational_410_by_1","typeString":"int_const 410"},"value":"410"},"visibility":"internal"},{"constant":true,"id":2040,"mutability":"constant","name":"ERC20_BURN_FROM_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":2248,"src":"10828:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2038,"name":"uint256","nodeType":"ElementaryTypeName","src":"10828:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343131","id":2039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10885:3:31","typeDescriptions":{"typeIdentifier":"t_rational_411_by_1","typeString":"int_const 411"},"value":"411"},"visibility":"internal"},{"constant":true,"id":2043,"mutability":"constant","name":"ERC20_APPROVE_FROM_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":2248,"src":"10894:63:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2041,"name":"uint256","nodeType":"ElementaryTypeName","src":"10894:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343132","id":2042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10954:3:31","typeDescriptions":{"typeIdentifier":"t_rational_412_by_1","typeString":"int_const 412"},"value":"412"},"visibility":"internal"},{"constant":true,"id":2046,"mutability":"constant","name":"ERC20_APPROVE_TO_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":2248,"src":"10963:61:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2044,"name":"uint256","nodeType":"ElementaryTypeName","src":"10963:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343133","id":2045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11021:3:31","typeDescriptions":{"typeIdentifier":"t_rational_413_by_1","typeString":"int_const 413"},"value":"413"},"visibility":"internal"},{"constant":true,"id":2049,"mutability":"constant","name":"ERC20_TRANSFER_EXCEEDS_ALLOWANCE","nodeType":"VariableDeclaration","scope":2248,"src":"11030:64:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2047,"name":"uint256","nodeType":"ElementaryTypeName","src":"11030:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343134","id":2048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11091:3:31","typeDescriptions":{"typeIdentifier":"t_rational_414_by_1","typeString":"int_const 414"},"value":"414"},"visibility":"internal"},{"constant":true,"id":2052,"mutability":"constant","name":"ERC20_DECREASED_ALLOWANCE_BELOW_ZERO","nodeType":"VariableDeclaration","scope":2248,"src":"11100:68:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2050,"name":"uint256","nodeType":"ElementaryTypeName","src":"11100:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343135","id":2051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11165:3:31","typeDescriptions":{"typeIdentifier":"t_rational_415_by_1","typeString":"int_const 415"},"value":"415"},"visibility":"internal"},{"constant":true,"id":2055,"mutability":"constant","name":"ERC20_TRANSFER_EXCEEDS_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"11174:62:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2053,"name":"uint256","nodeType":"ElementaryTypeName","src":"11174:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343136","id":2054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11233:3:31","typeDescriptions":{"typeIdentifier":"t_rational_416_by_1","typeString":"int_const 416"},"value":"416"},"visibility":"internal"},{"constant":true,"id":2058,"mutability":"constant","name":"ERC20_BURN_EXCEEDS_ALLOWANCE","nodeType":"VariableDeclaration","scope":2248,"src":"11242:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2056,"name":"uint256","nodeType":"ElementaryTypeName","src":"11242:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343137","id":2057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11299:3:31","typeDescriptions":{"typeIdentifier":"t_rational_417_by_1","typeString":"int_const 417"},"value":"417"},"visibility":"internal"},{"constant":true,"id":2061,"mutability":"constant","name":"SAFE_ERC20_CALL_FAILED","nodeType":"VariableDeclaration","scope":2248,"src":"11308:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2059,"name":"uint256","nodeType":"ElementaryTypeName","src":"11308:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343138","id":2060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11359:3:31","typeDescriptions":{"typeIdentifier":"t_rational_418_by_1","typeString":"int_const 418"},"value":"418"},"visibility":"internal"},{"constant":true,"id":2064,"mutability":"constant","name":"ADDRESS_INSUFFICIENT_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"11368:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2062,"name":"uint256","nodeType":"ElementaryTypeName","src":"11368:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343139","id":2063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11425:3:31","typeDescriptions":{"typeIdentifier":"t_rational_419_by_1","typeString":"int_const 419"},"value":"419"},"visibility":"internal"},{"constant":true,"id":2067,"mutability":"constant","name":"ADDRESS_CANNOT_SEND_VALUE","nodeType":"VariableDeclaration","scope":2248,"src":"11434:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2065,"name":"uint256","nodeType":"ElementaryTypeName","src":"11434:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343230","id":2066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11488:3:31","typeDescriptions":{"typeIdentifier":"t_rational_420_by_1","typeString":"int_const 420"},"value":"420"},"visibility":"internal"},{"constant":true,"id":2070,"mutability":"constant","name":"SAFE_CAST_VALUE_CANT_FIT_INT256","nodeType":"VariableDeclaration","scope":2248,"src":"11497:63:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2068,"name":"uint256","nodeType":"ElementaryTypeName","src":"11497:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343231","id":2069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11557:3:31","typeDescriptions":{"typeIdentifier":"t_rational_421_by_1","typeString":"int_const 421"},"value":"421"},"visibility":"internal"},{"constant":true,"id":2073,"mutability":"constant","name":"GRANT_SENDER_NOT_ADMIN","nodeType":"VariableDeclaration","scope":2248,"src":"11566:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2071,"name":"uint256","nodeType":"ElementaryTypeName","src":"11566:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343232","id":2072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11617:3:31","typeDescriptions":{"typeIdentifier":"t_rational_422_by_1","typeString":"int_const 422"},"value":"422"},"visibility":"internal"},{"constant":true,"id":2076,"mutability":"constant","name":"REVOKE_SENDER_NOT_ADMIN","nodeType":"VariableDeclaration","scope":2248,"src":"11626:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2074,"name":"uint256","nodeType":"ElementaryTypeName","src":"11626:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343233","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11678:3:31","typeDescriptions":{"typeIdentifier":"t_rational_423_by_1","typeString":"int_const 423"},"value":"423"},"visibility":"internal"},{"constant":true,"id":2079,"mutability":"constant","name":"RENOUNCE_SENDER_NOT_ALLOWED","nodeType":"VariableDeclaration","scope":2248,"src":"11687:59:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2077,"name":"uint256","nodeType":"ElementaryTypeName","src":"11687:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343234","id":2078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11743:3:31","typeDescriptions":{"typeIdentifier":"t_rational_424_by_1","typeString":"int_const 424"},"value":"424"},"visibility":"internal"},{"constant":true,"id":2082,"mutability":"constant","name":"BUFFER_PERIOD_EXPIRED","nodeType":"VariableDeclaration","scope":2248,"src":"11752:53:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2080,"name":"uint256","nodeType":"ElementaryTypeName","src":"11752:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343235","id":2081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11802:3:31","typeDescriptions":{"typeIdentifier":"t_rational_425_by_1","typeString":"int_const 425"},"value":"425"},"visibility":"internal"},{"constant":true,"id":2085,"mutability":"constant","name":"CALLER_IS_NOT_OWNER","nodeType":"VariableDeclaration","scope":2248,"src":"11811:51:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2083,"name":"uint256","nodeType":"ElementaryTypeName","src":"11811:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343236","id":2084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11859:3:31","typeDescriptions":{"typeIdentifier":"t_rational_426_by_1","typeString":"int_const 426"},"value":"426"},"visibility":"internal"},{"constant":true,"id":2088,"mutability":"constant","name":"NEW_OWNER_IS_ZERO","nodeType":"VariableDeclaration","scope":2248,"src":"11868:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2086,"name":"uint256","nodeType":"ElementaryTypeName","src":"11868:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343237","id":2087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11914:3:31","typeDescriptions":{"typeIdentifier":"t_rational_427_by_1","typeString":"int_const 427"},"value":"427"},"visibility":"internal"},{"constant":true,"id":2091,"mutability":"constant","name":"CODE_DEPLOYMENT_FAILED","nodeType":"VariableDeclaration","scope":2248,"src":"11923:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2089,"name":"uint256","nodeType":"ElementaryTypeName","src":"11923:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343238","id":2090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11974:3:31","typeDescriptions":{"typeIdentifier":"t_rational_428_by_1","typeString":"int_const 428"},"value":"428"},"visibility":"internal"},{"constant":true,"id":2094,"mutability":"constant","name":"CALL_TO_NON_CONTRACT","nodeType":"VariableDeclaration","scope":2248,"src":"11983:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2092,"name":"uint256","nodeType":"ElementaryTypeName","src":"11983:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343239","id":2093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12032:3:31","typeDescriptions":{"typeIdentifier":"t_rational_429_by_1","typeString":"int_const 429"},"value":"429"},"visibility":"internal"},{"constant":true,"id":2097,"mutability":"constant","name":"LOW_LEVEL_CALL_FAILED","nodeType":"VariableDeclaration","scope":2248,"src":"12041:53:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2095,"name":"uint256","nodeType":"ElementaryTypeName","src":"12041:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343330","id":2096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12091:3:31","typeDescriptions":{"typeIdentifier":"t_rational_430_by_1","typeString":"int_const 430"},"value":"430"},"visibility":"internal"},{"constant":true,"id":2100,"mutability":"constant","name":"NOT_PAUSED","nodeType":"VariableDeclaration","scope":2248,"src":"12100:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2098,"name":"uint256","nodeType":"ElementaryTypeName","src":"12100:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343331","id":2099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12139:3:31","typeDescriptions":{"typeIdentifier":"t_rational_431_by_1","typeString":"int_const 431"},"value":"431"},"visibility":"internal"},{"constant":true,"id":2103,"mutability":"constant","name":"ADDRESS_ALREADY_ALLOWLISTED","nodeType":"VariableDeclaration","scope":2248,"src":"12148:59:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2101,"name":"uint256","nodeType":"ElementaryTypeName","src":"12148:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343332","id":2102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12204:3:31","typeDescriptions":{"typeIdentifier":"t_rational_432_by_1","typeString":"int_const 432"},"value":"432"},"visibility":"internal"},{"constant":true,"id":2106,"mutability":"constant","name":"ADDRESS_NOT_ALLOWLISTED","nodeType":"VariableDeclaration","scope":2248,"src":"12213:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2104,"name":"uint256","nodeType":"ElementaryTypeName","src":"12213:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343333","id":2105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12265:3:31","typeDescriptions":{"typeIdentifier":"t_rational_433_by_1","typeString":"int_const 433"},"value":"433"},"visibility":"internal"},{"constant":true,"id":2109,"mutability":"constant","name":"ERC20_BURN_EXCEEDS_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"12274:58:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"12274:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343334","id":2108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12329:3:31","typeDescriptions":{"typeIdentifier":"t_rational_434_by_1","typeString":"int_const 434"},"value":"434"},"visibility":"internal"},{"constant":true,"id":2112,"mutability":"constant","name":"INVALID_OPERATION","nodeType":"VariableDeclaration","scope":2248,"src":"12338:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2110,"name":"uint256","nodeType":"ElementaryTypeName","src":"12338:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343335","id":2111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12384:3:31","typeDescriptions":{"typeIdentifier":"t_rational_435_by_1","typeString":"int_const 435"},"value":"435"},"visibility":"internal"},{"constant":true,"id":2115,"mutability":"constant","name":"CODEC_OVERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"12393:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2113,"name":"uint256","nodeType":"ElementaryTypeName","src":"12393:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343336","id":2114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12436:3:31","typeDescriptions":{"typeIdentifier":"t_rational_436_by_1","typeString":"int_const 436"},"value":"436"},"visibility":"internal"},{"constant":true,"id":2118,"mutability":"constant","name":"IN_RECOVERY_MODE","nodeType":"VariableDeclaration","scope":2248,"src":"12445:48:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2116,"name":"uint256","nodeType":"ElementaryTypeName","src":"12445:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343337","id":2117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12490:3:31","typeDescriptions":{"typeIdentifier":"t_rational_437_by_1","typeString":"int_const 437"},"value":"437"},"visibility":"internal"},{"constant":true,"id":2121,"mutability":"constant","name":"NOT_IN_RECOVERY_MODE","nodeType":"VariableDeclaration","scope":2248,"src":"12499:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2119,"name":"uint256","nodeType":"ElementaryTypeName","src":"12499:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343338","id":2120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12548:3:31","typeDescriptions":{"typeIdentifier":"t_rational_438_by_1","typeString":"int_const 438"},"value":"438"},"visibility":"internal"},{"constant":true,"id":2124,"mutability":"constant","name":"INDUCED_FAILURE","nodeType":"VariableDeclaration","scope":2248,"src":"12557:47:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2122,"name":"uint256","nodeType":"ElementaryTypeName","src":"12557:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343339","id":2123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12601:3:31","typeDescriptions":{"typeIdentifier":"t_rational_439_by_1","typeString":"int_const 439"},"value":"439"},"visibility":"internal"},{"constant":true,"id":2127,"mutability":"constant","name":"EXPIRED_SIGNATURE","nodeType":"VariableDeclaration","scope":2248,"src":"12610:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2125,"name":"uint256","nodeType":"ElementaryTypeName","src":"12610:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343430","id":2126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12656:3:31","typeDescriptions":{"typeIdentifier":"t_rational_440_by_1","typeString":"int_const 440"},"value":"440"},"visibility":"internal"},{"constant":true,"id":2130,"mutability":"constant","name":"MALFORMED_SIGNATURE","nodeType":"VariableDeclaration","scope":2248,"src":"12665:51:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2128,"name":"uint256","nodeType":"ElementaryTypeName","src":"12665:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343431","id":2129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12713:3:31","typeDescriptions":{"typeIdentifier":"t_rational_441_by_1","typeString":"int_const 441"},"value":"441"},"visibility":"internal"},{"constant":true,"id":2133,"mutability":"constant","name":"SAFE_CAST_VALUE_CANT_FIT_UINT64","nodeType":"VariableDeclaration","scope":2248,"src":"12722:63:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2131,"name":"uint256","nodeType":"ElementaryTypeName","src":"12722:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343432","id":2132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12782:3:31","typeDescriptions":{"typeIdentifier":"t_rational_442_by_1","typeString":"int_const 442"},"value":"442"},"visibility":"internal"},{"constant":true,"id":2136,"mutability":"constant","name":"UNHANDLED_FEE_TYPE","nodeType":"VariableDeclaration","scope":2248,"src":"12791:50:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2134,"name":"uint256","nodeType":"ElementaryTypeName","src":"12791:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343433","id":2135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12838:3:31","typeDescriptions":{"typeIdentifier":"t_rational_443_by_1","typeString":"int_const 443"},"value":"443"},"visibility":"internal"},{"constant":true,"id":2139,"mutability":"constant","name":"BURN_FROM_ZERO","nodeType":"VariableDeclaration","scope":2248,"src":"12847:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"12847:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343434","id":2138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12890:3:31","typeDescriptions":{"typeIdentifier":"t_rational_444_by_1","typeString":"int_const 444"},"value":"444"},"visibility":"internal"},{"constant":true,"id":2142,"mutability":"constant","name":"INVALID_POOL_ID","nodeType":"VariableDeclaration","scope":2248,"src":"12913:47:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2140,"name":"uint256","nodeType":"ElementaryTypeName","src":"12913:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353030","id":2141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12957:3:31","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},"visibility":"internal"},{"constant":true,"id":2145,"mutability":"constant","name":"CALLER_NOT_POOL","nodeType":"VariableDeclaration","scope":2248,"src":"12966:47:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2143,"name":"uint256","nodeType":"ElementaryTypeName","src":"12966:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353031","id":2144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13010:3:31","typeDescriptions":{"typeIdentifier":"t_rational_501_by_1","typeString":"int_const 501"},"value":"501"},"visibility":"internal"},{"constant":true,"id":2148,"mutability":"constant","name":"SENDER_NOT_ASSET_MANAGER","nodeType":"VariableDeclaration","scope":2248,"src":"13019:56:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2146,"name":"uint256","nodeType":"ElementaryTypeName","src":"13019:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353032","id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13072:3:31","typeDescriptions":{"typeIdentifier":"t_rational_502_by_1","typeString":"int_const 502"},"value":"502"},"visibility":"internal"},{"constant":true,"id":2151,"mutability":"constant","name":"USER_DOESNT_ALLOW_RELAYER","nodeType":"VariableDeclaration","scope":2248,"src":"13081:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2149,"name":"uint256","nodeType":"ElementaryTypeName","src":"13081:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353033","id":2150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13135:3:31","typeDescriptions":{"typeIdentifier":"t_rational_503_by_1","typeString":"int_const 503"},"value":"503"},"visibility":"internal"},{"constant":true,"id":2154,"mutability":"constant","name":"INVALID_SIGNATURE","nodeType":"VariableDeclaration","scope":2248,"src":"13144:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2152,"name":"uint256","nodeType":"ElementaryTypeName","src":"13144:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353034","id":2153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13190:3:31","typeDescriptions":{"typeIdentifier":"t_rational_504_by_1","typeString":"int_const 504"},"value":"504"},"visibility":"internal"},{"constant":true,"id":2157,"mutability":"constant","name":"EXIT_BELOW_MIN","nodeType":"VariableDeclaration","scope":2248,"src":"13199:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2155,"name":"uint256","nodeType":"ElementaryTypeName","src":"13199:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353035","id":2156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13242:3:31","typeDescriptions":{"typeIdentifier":"t_rational_505_by_1","typeString":"int_const 505"},"value":"505"},"visibility":"internal"},{"constant":true,"id":2160,"mutability":"constant","name":"JOIN_ABOVE_MAX","nodeType":"VariableDeclaration","scope":2248,"src":"13251:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2158,"name":"uint256","nodeType":"ElementaryTypeName","src":"13251:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353036","id":2159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13294:3:31","typeDescriptions":{"typeIdentifier":"t_rational_506_by_1","typeString":"int_const 506"},"value":"506"},"visibility":"internal"},{"constant":true,"id":2163,"mutability":"constant","name":"SWAP_LIMIT","nodeType":"VariableDeclaration","scope":2248,"src":"13303:42:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2161,"name":"uint256","nodeType":"ElementaryTypeName","src":"13303:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353037","id":2162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13342:3:31","typeDescriptions":{"typeIdentifier":"t_rational_507_by_1","typeString":"int_const 507"},"value":"507"},"visibility":"internal"},{"constant":true,"id":2166,"mutability":"constant","name":"SWAP_DEADLINE","nodeType":"VariableDeclaration","scope":2248,"src":"13351:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2164,"name":"uint256","nodeType":"ElementaryTypeName","src":"13351:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353038","id":2165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13393:3:31","typeDescriptions":{"typeIdentifier":"t_rational_508_by_1","typeString":"int_const 508"},"value":"508"},"visibility":"internal"},{"constant":true,"id":2169,"mutability":"constant","name":"CANNOT_SWAP_SAME_TOKEN","nodeType":"VariableDeclaration","scope":2248,"src":"13402:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2167,"name":"uint256","nodeType":"ElementaryTypeName","src":"13402:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353039","id":2168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13453:3:31","typeDescriptions":{"typeIdentifier":"t_rational_509_by_1","typeString":"int_const 509"},"value":"509"},"visibility":"internal"},{"constant":true,"id":2172,"mutability":"constant","name":"UNKNOWN_AMOUNT_IN_FIRST_SWAP","nodeType":"VariableDeclaration","scope":2248,"src":"13462:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2170,"name":"uint256","nodeType":"ElementaryTypeName","src":"13462:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353130","id":2171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13519:3:31","typeDescriptions":{"typeIdentifier":"t_rational_510_by_1","typeString":"int_const 510"},"value":"510"},"visibility":"internal"},{"constant":true,"id":2175,"mutability":"constant","name":"MALCONSTRUCTED_MULTIHOP_SWAP","nodeType":"VariableDeclaration","scope":2248,"src":"13528:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"13528:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353131","id":2174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13585:3:31","typeDescriptions":{"typeIdentifier":"t_rational_511_by_1","typeString":"int_const 511"},"value":"511"},"visibility":"internal"},{"constant":true,"id":2178,"mutability":"constant","name":"INTERNAL_BALANCE_OVERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"13594:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2176,"name":"uint256","nodeType":"ElementaryTypeName","src":"13594:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353132","id":2177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13648:3:31","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"512"},"visibility":"internal"},{"constant":true,"id":2181,"mutability":"constant","name":"INSUFFICIENT_INTERNAL_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"13657:61:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2179,"name":"uint256","nodeType":"ElementaryTypeName","src":"13657:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353133","id":2180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13715:3:31","typeDescriptions":{"typeIdentifier":"t_rational_513_by_1","typeString":"int_const 513"},"value":"513"},"visibility":"internal"},{"constant":true,"id":2184,"mutability":"constant","name":"INVALID_ETH_INTERNAL_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"13724:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2182,"name":"uint256","nodeType":"ElementaryTypeName","src":"13724:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353134","id":2183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13781:3:31","typeDescriptions":{"typeIdentifier":"t_rational_514_by_1","typeString":"int_const 514"},"value":"514"},"visibility":"internal"},{"constant":true,"id":2187,"mutability":"constant","name":"INVALID_POST_LOAN_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"13790:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2185,"name":"uint256","nodeType":"ElementaryTypeName","src":"13790:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353135","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13844:3:31","typeDescriptions":{"typeIdentifier":"t_rational_515_by_1","typeString":"int_const 515"},"value":"515"},"visibility":"internal"},{"constant":true,"id":2190,"mutability":"constant","name":"INSUFFICIENT_ETH","nodeType":"VariableDeclaration","scope":2248,"src":"13853:48:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2188,"name":"uint256","nodeType":"ElementaryTypeName","src":"13853:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353136","id":2189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13898:3:31","typeDescriptions":{"typeIdentifier":"t_rational_516_by_1","typeString":"int_const 516"},"value":"516"},"visibility":"internal"},{"constant":true,"id":2193,"mutability":"constant","name":"UNALLOCATED_ETH","nodeType":"VariableDeclaration","scope":2248,"src":"13907:47:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2191,"name":"uint256","nodeType":"ElementaryTypeName","src":"13907:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353137","id":2192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13951:3:31","typeDescriptions":{"typeIdentifier":"t_rational_517_by_1","typeString":"int_const 517"},"value":"517"},"visibility":"internal"},{"constant":true,"id":2196,"mutability":"constant","name":"ETH_TRANSFER","nodeType":"VariableDeclaration","scope":2248,"src":"13960:44:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2194,"name":"uint256","nodeType":"ElementaryTypeName","src":"13960:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353138","id":2195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14001:3:31","typeDescriptions":{"typeIdentifier":"t_rational_518_by_1","typeString":"int_const 518"},"value":"518"},"visibility":"internal"},{"constant":true,"id":2199,"mutability":"constant","name":"CANNOT_USE_ETH_SENTINEL","nodeType":"VariableDeclaration","scope":2248,"src":"14010:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2197,"name":"uint256","nodeType":"ElementaryTypeName","src":"14010:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353139","id":2198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14062:3:31","typeDescriptions":{"typeIdentifier":"t_rational_519_by_1","typeString":"int_const 519"},"value":"519"},"visibility":"internal"},{"constant":true,"id":2202,"mutability":"constant","name":"TOKENS_MISMATCH","nodeType":"VariableDeclaration","scope":2248,"src":"14071:47:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2200,"name":"uint256","nodeType":"ElementaryTypeName","src":"14071:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353230","id":2201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14115:3:31","typeDescriptions":{"typeIdentifier":"t_rational_520_by_1","typeString":"int_const 520"},"value":"520"},"visibility":"internal"},{"constant":true,"id":2205,"mutability":"constant","name":"TOKEN_NOT_REGISTERED","nodeType":"VariableDeclaration","scope":2248,"src":"14124:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2203,"name":"uint256","nodeType":"ElementaryTypeName","src":"14124:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353231","id":2204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14173:3:31","typeDescriptions":{"typeIdentifier":"t_rational_521_by_1","typeString":"int_const 521"},"value":"521"},"visibility":"internal"},{"constant":true,"id":2208,"mutability":"constant","name":"TOKEN_ALREADY_REGISTERED","nodeType":"VariableDeclaration","scope":2248,"src":"14182:56:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2206,"name":"uint256","nodeType":"ElementaryTypeName","src":"14182:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353232","id":2207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14235:3:31","typeDescriptions":{"typeIdentifier":"t_rational_522_by_1","typeString":"int_const 522"},"value":"522"},"visibility":"internal"},{"constant":true,"id":2211,"mutability":"constant","name":"TOKENS_ALREADY_SET","nodeType":"VariableDeclaration","scope":2248,"src":"14244:50:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2209,"name":"uint256","nodeType":"ElementaryTypeName","src":"14244:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353233","id":2210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14291:3:31","typeDescriptions":{"typeIdentifier":"t_rational_523_by_1","typeString":"int_const 523"},"value":"523"},"visibility":"internal"},{"constant":true,"id":2214,"mutability":"constant","name":"TOKENS_LENGTH_MUST_BE_2","nodeType":"VariableDeclaration","scope":2248,"src":"14300:55:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2212,"name":"uint256","nodeType":"ElementaryTypeName","src":"14300:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353234","id":2213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14352:3:31","typeDescriptions":{"typeIdentifier":"t_rational_524_by_1","typeString":"int_const 524"},"value":"524"},"visibility":"internal"},{"constant":true,"id":2217,"mutability":"constant","name":"NONZERO_TOKEN_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"14361:53:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2215,"name":"uint256","nodeType":"ElementaryTypeName","src":"14361:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353235","id":2216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14411:3:31","typeDescriptions":{"typeIdentifier":"t_rational_525_by_1","typeString":"int_const 525"},"value":"525"},"visibility":"internal"},{"constant":true,"id":2220,"mutability":"constant","name":"BALANCE_TOTAL_OVERFLOW","nodeType":"VariableDeclaration","scope":2248,"src":"14420:54:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2218,"name":"uint256","nodeType":"ElementaryTypeName","src":"14420:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353236","id":2219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14471:3:31","typeDescriptions":{"typeIdentifier":"t_rational_526_by_1","typeString":"int_const 526"},"value":"526"},"visibility":"internal"},{"constant":true,"id":2223,"mutability":"constant","name":"POOL_NO_TOKENS","nodeType":"VariableDeclaration","scope":2248,"src":"14480:46:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2221,"name":"uint256","nodeType":"ElementaryTypeName","src":"14480:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353237","id":2222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14523:3:31","typeDescriptions":{"typeIdentifier":"t_rational_527_by_1","typeString":"int_const 527"},"value":"527"},"visibility":"internal"},{"constant":true,"id":2226,"mutability":"constant","name":"INSUFFICIENT_FLASH_LOAN_BALANCE","nodeType":"VariableDeclaration","scope":2248,"src":"14532:63:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"14532:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353238","id":2225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14592:3:31","typeDescriptions":{"typeIdentifier":"t_rational_528_by_1","typeString":"int_const 528"},"value":"528"},"visibility":"internal"},{"constant":true,"id":2229,"mutability":"constant","name":"SWAP_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":2248,"src":"14614:60:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2227,"name":"uint256","nodeType":"ElementaryTypeName","src":"14614:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363030","id":2228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14671:3:31","typeDescriptions":{"typeIdentifier":"t_rational_600_by_1","typeString":"int_const 600"},"value":"600"},"visibility":"internal"},{"constant":true,"id":2232,"mutability":"constant","name":"FLASH_LOAN_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":2248,"src":"14680:66:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2230,"name":"uint256","nodeType":"ElementaryTypeName","src":"14680:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363031","id":2231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14743:3:31","typeDescriptions":{"typeIdentifier":"t_rational_601_by_1","typeString":"int_const 601"},"value":"601"},"visibility":"internal"},{"constant":true,"id":2235,"mutability":"constant","name":"INSUFFICIENT_FLASH_LOAN_FEE_AMOUNT","nodeType":"VariableDeclaration","scope":2248,"src":"14752:66:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2233,"name":"uint256","nodeType":"ElementaryTypeName","src":"14752:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363032","id":2234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14815:3:31","typeDescriptions":{"typeIdentifier":"t_rational_602_by_1","typeString":"int_const 602"},"value":"602"},"visibility":"internal"},{"constant":true,"id":2238,"mutability":"constant","name":"AUM_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":2248,"src":"14824:59:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2236,"name":"uint256","nodeType":"ElementaryTypeName","src":"14824:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363033","id":2237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14880:3:31","typeDescriptions":{"typeIdentifier":"t_rational_603_by_1","typeString":"int_const 603"},"value":"603"},"visibility":"internal"},{"constant":true,"id":2241,"mutability":"constant","name":"SPLITTER_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":2248,"src":"14909:64:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2239,"name":"uint256","nodeType":"ElementaryTypeName","src":"14909:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"373030","id":2240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14970:3:31","typeDescriptions":{"typeIdentifier":"t_rational_700_by_1","typeString":"int_const 700"},"value":"700"},"visibility":"internal"},{"constant":true,"id":2244,"mutability":"constant","name":"UNIMPLEMENTED","nodeType":"VariableDeclaration","scope":2248,"src":"14992:45:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2242,"name":"uint256","nodeType":"ElementaryTypeName","src":"14992:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"393938","id":2243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15034:3:31","typeDescriptions":{"typeIdentifier":"t_rational_998_by_1","typeString":"int_const 998"},"value":"998"},"visibility":"internal"},{"constant":true,"id":2247,"mutability":"constant","name":"SHOULD_NOT_HAPPEN","nodeType":"VariableDeclaration","scope":2248,"src":"15043:49:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2245,"name":"uint256","nodeType":"ElementaryTypeName","src":"15043:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"393939","id":2246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15089:3:31","typeDescriptions":{"typeIdentifier":"t_rational_999_by_1","typeString":"int_const 999"},"value":"999"},"visibility":"internal"}],"scope":2249,"src":"5072:10023:31"}],"src":"688:14408:31"},"id":31},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","exportedSymbols":{"IAuthentication":[2259]},"id":2260,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2250,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:32"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2259,"linearizedBaseContracts":[2259],"name":"IAuthentication","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2251,"nodeType":"StructuredDocumentation","src":"753:116:32","text":" @dev Returns the action identifier associated with the external function described by `selector`."},"functionSelector":"851c1bb3","id":2258,"implemented":false,"kind":"function","modifiers":[],"name":"getActionId","nodeType":"FunctionDefinition","parameters":{"id":2254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2253,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":2258,"src":"895:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2252,"name":"bytes4","nodeType":"ElementaryTypeName","src":"895:6:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"894:17:32"},"returnParameters":{"id":2257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2256,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2258,"src":"935:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2255,"name":"bytes32","nodeType":"ElementaryTypeName","src":"935:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"934:9:32"},"scope":2259,"src":"874:70:32","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2260,"src":"721:225:32"}],"src":"688:259:32"},"id":32},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol","exportedSymbols":{"IOptionalOnlyCaller":[2293]},"id":2294,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2261,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:33"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2262,"nodeType":"StructuredDocumentation","src":"721:178:33","text":" @dev Interface for the OptionalOnlyCaller helper, used to opt in to a caller\n verification for a given address to methods that are otherwise callable by any address."},"fullyImplemented":false,"id":2293,"linearizedBaseContracts":[2293],"name":"IOptionalOnlyCaller","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2263,"nodeType":"StructuredDocumentation","src":"936:72:33","text":" @dev Emitted every time setOnlyCallerCheck is called."},"id":2269,"name":"OnlyCallerOptIn","nodeType":"EventDefinition","parameters":{"id":2268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2265,"indexed":false,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2269,"src":"1035:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"1035:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2267,"indexed":false,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":2269,"src":"1049:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2266,"name":"bool","nodeType":"ElementaryTypeName","src":"1049:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1034:28:33"},"src":"1013:50:33"},{"documentation":{"id":2270,"nodeType":"StructuredDocumentation","src":"1069:164:33","text":" @dev Enables / disables verification mechanism for caller.\n @param enabled - True if caller verification shall be enabled, false otherwise."},"functionSelector":"e811f44b","id":2275,"implemented":false,"kind":"function","modifiers":[],"name":"setOnlyCallerCheck","nodeType":"FunctionDefinition","parameters":{"id":2273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2272,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":2275,"src":"1266:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2271,"name":"bool","nodeType":"ElementaryTypeName","src":"1266:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1265:14:33"},"returnParameters":{"id":2274,"nodeType":"ParameterList","parameters":[],"src":"1288:0:33"},"scope":2293,"src":"1238:51:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"fcaa54ee","id":2284,"implemented":false,"kind":"function","modifiers":[],"name":"setOnlyCallerCheckWithSignature","nodeType":"FunctionDefinition","parameters":{"id":2282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2277,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2284,"src":"1345:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2276,"name":"address","nodeType":"ElementaryTypeName","src":"1345:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2279,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":2284,"src":"1367:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2278,"name":"bool","nodeType":"ElementaryTypeName","src":"1367:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2281,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":2284,"src":"1389:22:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2280,"name":"bytes","nodeType":"ElementaryTypeName","src":"1389:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1335:82:33"},"returnParameters":{"id":2283,"nodeType":"ParameterList","parameters":[],"src":"1426:0:33"},"scope":2293,"src":"1295:132:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2285,"nodeType":"StructuredDocumentation","src":"1433:107:33","text":" @dev Returns true if caller verification is enabled for the given user, false otherwise."},"functionSelector":"a1648aa5","id":2292,"implemented":false,"kind":"function","modifiers":[],"name":"isOnlyCallerEnabled","nodeType":"FunctionDefinition","parameters":{"id":2288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2287,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2292,"src":"1574:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2286,"name":"address","nodeType":"ElementaryTypeName","src":"1574:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1573:14:33"},"returnParameters":{"id":2291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2290,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2292,"src":"1611:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2289,"name":"bool","nodeType":"ElementaryTypeName","src":"1611:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1610:6:33"},"scope":2293,"src":"1545:72:33","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2294,"src":"900:719:33"}],"src":"688:932:33"},"id":33},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","exportedSymbols":{"ISignaturesValidator":[2311]},"id":2312,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2295,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:34"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2296,"nodeType":"StructuredDocumentation","src":"721:95:34","text":" @dev Interface for the SignatureValidator helper, used to support meta-transactions."},"fullyImplemented":false,"id":2311,"linearizedBaseContracts":[2311],"name":"ISignaturesValidator","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2297,"nodeType":"StructuredDocumentation","src":"854:60:34","text":" @dev Returns the EIP712 domain separator."},"functionSelector":"ed24911d","id":2302,"implemented":false,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","parameters":{"id":2298,"nodeType":"ParameterList","parameters":[],"src":"946:2:34"},"returnParameters":{"id":2301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2300,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2302,"src":"972:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2299,"name":"bytes32","nodeType":"ElementaryTypeName","src":"972:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"971:9:34"},"scope":2311,"src":"919:62:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2303,"nodeType":"StructuredDocumentation","src":"987:83:34","text":" @dev Returns the next nonce used by an address to sign messages."},"functionSelector":"90193b7c","id":2310,"implemented":false,"kind":"function","modifiers":[],"name":"getNextNonce","nodeType":"FunctionDefinition","parameters":{"id":2306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2305,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2310,"src":"1097:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2304,"name":"address","nodeType":"ElementaryTypeName","src":"1097:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1096:14:34"},"returnParameters":{"id":2309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2308,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2310,"src":"1134:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2307,"name":"uint256","nodeType":"ElementaryTypeName","src":"1134:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1133:9:34"},"scope":2311,"src":"1075:68:34","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2312,"src":"817:328:34"}],"src":"688:458:34"},"id":34},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol","exportedSymbols":{"ITemporarilyPausable":[2330]},"id":2331,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2313,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:35"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2314,"nodeType":"StructuredDocumentation","src":"721:61:35","text":" @dev Interface for the TemporarilyPausable helper."},"fullyImplemented":false,"id":2330,"linearizedBaseContracts":[2330],"name":"ITemporarilyPausable","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2315,"nodeType":"StructuredDocumentation","src":"820:83:35","text":" @dev Emitted every time the pause state changes by `_setPaused`."},"id":2319,"name":"PausedStateChanged","nodeType":"EventDefinition","parameters":{"id":2318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2317,"indexed":false,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":2319,"src":"933:11:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2316,"name":"bool","nodeType":"ElementaryTypeName","src":"933:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"932:13:35"},"src":"908:38:35"},{"documentation":{"id":2320,"nodeType":"StructuredDocumentation","src":"952:57:35","text":" @dev Returns the current paused state."},"functionSelector":"1c0de051","id":2329,"implemented":false,"kind":"function","modifiers":[],"name":"getPausedState","nodeType":"FunctionDefinition","parameters":{"id":2321,"nodeType":"ParameterList","parameters":[],"src":"1037:2:35"},"returnParameters":{"id":2328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2323,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":2329,"src":"1100:11:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2322,"name":"bool","nodeType":"ElementaryTypeName","src":"1100:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2325,"mutability":"mutable","name":"pauseWindowEndTime","nodeType":"VariableDeclaration","scope":2329,"src":"1125:26:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2324,"name":"uint256","nodeType":"ElementaryTypeName","src":"1125:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2327,"mutability":"mutable","name":"bufferPeriodEndTime","nodeType":"VariableDeclaration","scope":2329,"src":"1165:27:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2326,"name":"uint256","nodeType":"ElementaryTypeName","src":"1165:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1086:116:35"},"scope":2330,"src":"1014:189:35","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2331,"src":"783:422:35"}],"src":"688:518:35"},"id":35},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol","exportedSymbols":{"IVersion":[2340]},"id":2341,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2332,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:36"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2333,"nodeType":"StructuredDocumentation","src":"721:83:36","text":" @notice Simple interface to retrieve the version of a deployed contract."},"fullyImplemented":false,"id":2340,"linearizedBaseContracts":[2340],"name":"IVersion","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2334,"nodeType":"StructuredDocumentation","src":"830:122:36","text":" @dev Returns a JSON representation of the contract version containing name, version number and task ID."},"functionSelector":"54fd4d50","id":2339,"implemented":false,"kind":"function","modifiers":[],"name":"version","nodeType":"FunctionDefinition","parameters":{"id":2335,"nodeType":"ParameterList","parameters":[],"src":"973:2:36"},"returnParameters":{"id":2338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2337,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2339,"src":"999:13:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2336,"name":"string","nodeType":"ElementaryTypeName","src":"999:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"998:15:36"},"scope":2340,"src":"957:57:36","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2341,"src":"805:211:36"}],"src":"688:329:36"},"id":36},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","exportedSymbols":{"IWETH":[2355]},"id":2356,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2342,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:37"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../openzeppelin/IERC20.sol","id":2343,"nodeType":"ImportDirective","scope":2356,"sourceUnit":2448,"src":"721:36:37","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2345,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"929:6:37","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2346,"nodeType":"InheritanceSpecifier","src":"929:6:37"}],"contractDependencies":[2447],"contractKind":"interface","documentation":{"id":2344,"nodeType":"StructuredDocumentation","src":"759:150:37","text":" @dev Interface for WETH9.\n See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol"},"fullyImplemented":false,"id":2355,"linearizedBaseContracts":[2355,2447],"name":"IWETH","nodeType":"ContractDefinition","nodes":[{"functionSelector":"d0e30db0","id":2349,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":2347,"nodeType":"ParameterList","parameters":[],"src":"958:2:37"},"returnParameters":{"id":2348,"nodeType":"ParameterList","parameters":[],"src":"977:0:37"},"scope":2355,"src":"942:36:37","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"2e1a7d4d","id":2354,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":2352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2351,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2354,"src":"1002:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2350,"name":"uint256","nodeType":"ElementaryTypeName","src":"1002:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1001:16:37"},"returnParameters":{"id":2353,"nodeType":"ParameterList","parameters":[],"src":"1026:0:37"},"scope":2355,"src":"984:43:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2356,"src":"910:119:37"}],"src":"688:342:37"},"id":37},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol","exportedSymbols":{"IERC1271":[2369]},"id":2370,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2357,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"92:31:38"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2358,"nodeType":"StructuredDocumentation","src":"125:189:38","text":" @dev Interface of the ERC1271 standard signature validation method for\n contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\n _Available since v4.1._"},"fullyImplemented":false,"id":2369,"linearizedBaseContracts":[2369],"name":"IERC1271","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2359,"nodeType":"StructuredDocumentation","src":"340:220:38","text":" @dev Should return whether the signature provided is valid for the provided data\n @param hash Hash of the data to be signed\n @param signature Signature byte array associated with _data"},"functionSelector":"1626ba7e","id":2368,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nodeType":"FunctionDefinition","parameters":{"id":2364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2361,"mutability":"mutable","name":"hash","nodeType":"VariableDeclaration","scope":2368,"src":"591:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2360,"name":"bytes32","nodeType":"ElementaryTypeName","src":"591:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2363,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":2368,"src":"605:22:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2362,"name":"bytes","nodeType":"ElementaryTypeName","src":"605:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"590:38:38"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2366,"mutability":"mutable","name":"magicValue","nodeType":"VariableDeclaration","scope":2368,"src":"652:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2365,"name":"bytes4","nodeType":"ElementaryTypeName","src":"652:6:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"651:19:38"},"scope":2369,"src":"565:106:38","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2370,"src":"315:358:38"}],"src":"92:582:38"},"id":38},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","exportedSymbols":{"IERC20":[2447]},"id":2448,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2371,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"33:31:39"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2372,"nodeType":"StructuredDocumentation","src":"66:70:39","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":2447,"linearizedBaseContracts":[2447],"name":"IERC20","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2373,"nodeType":"StructuredDocumentation","src":"160:66:39","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":2378,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":2374,"nodeType":"ParameterList","parameters":[],"src":"251:2:39"},"returnParameters":{"id":2377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2376,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2378,"src":"277:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2375,"name":"uint256","nodeType":"ElementaryTypeName","src":"277:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"276:9:39"},"scope":2447,"src":"231:55:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2379,"nodeType":"StructuredDocumentation","src":"292:72:39","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":2386,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":2382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2381,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":2386,"src":"388:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2380,"name":"address","nodeType":"ElementaryTypeName","src":"388:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"387:17:39"},"returnParameters":{"id":2385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2384,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2386,"src":"428:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2383,"name":"uint256","nodeType":"ElementaryTypeName","src":"428:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"427:9:39"},"scope":2447,"src":"369:68:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2387,"nodeType":"StructuredDocumentation","src":"443:209:39","text":" @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":2396,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":2392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2389,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2396,"src":"675:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2388,"name":"address","nodeType":"ElementaryTypeName","src":"675:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2391,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2396,"src":"694:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2390,"name":"uint256","nodeType":"ElementaryTypeName","src":"694:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"674:35:39"},"returnParameters":{"id":2395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2394,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2396,"src":"728:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2393,"name":"bool","nodeType":"ElementaryTypeName","src":"728:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"727:6:39"},"scope":2447,"src":"657:77:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2397,"nodeType":"StructuredDocumentation","src":"740:264:39","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":2406,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":2402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2399,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2406,"src":"1028:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2398,"name":"address","nodeType":"ElementaryTypeName","src":"1028:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2401,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2406,"src":"1043:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2400,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1027:32:39"},"returnParameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2406,"src":"1083:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"1083:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1082:9:39"},"scope":2447,"src":"1009:83:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2407,"nodeType":"StructuredDocumentation","src":"1098:642:39","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":2416,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":2412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2409,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2416,"src":"1762:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2408,"name":"address","nodeType":"ElementaryTypeName","src":"1762:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2411,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2416,"src":"1779:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2410,"name":"uint256","nodeType":"ElementaryTypeName","src":"1779:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1761:33:39"},"returnParameters":{"id":2415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2414,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2416,"src":"1813:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2413,"name":"bool","nodeType":"ElementaryTypeName","src":"1813:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1812:6:39"},"scope":2447,"src":"1745:74:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2417,"nodeType":"StructuredDocumentation","src":"1825:296:39","text":" @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":2428,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":2424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2419,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2428,"src":"2157:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2418,"name":"address","nodeType":"ElementaryTypeName","src":"2157:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2421,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2428,"src":"2181:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2420,"name":"address","nodeType":"ElementaryTypeName","src":"2181:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2423,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2428,"src":"2208:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2422,"name":"uint256","nodeType":"ElementaryTypeName","src":"2208:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2147:81:39"},"returnParameters":{"id":2427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2426,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2428,"src":"2247:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2425,"name":"bool","nodeType":"ElementaryTypeName","src":"2247:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2246:6:39"},"scope":2447,"src":"2126:127:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2429,"nodeType":"StructuredDocumentation","src":"2259:158:39","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"id":2437,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":2436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2431,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2437,"src":"2437:20:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2430,"name":"address","nodeType":"ElementaryTypeName","src":"2437:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2433,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2437,"src":"2459:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2432,"name":"address","nodeType":"ElementaryTypeName","src":"2459:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2435,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2437,"src":"2479:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2434,"name":"uint256","nodeType":"ElementaryTypeName","src":"2479:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2436:57:39"},"src":"2422:72:39"},{"anonymous":false,"documentation":{"id":2438,"nodeType":"StructuredDocumentation","src":"2500:148:39","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"id":2446,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":2445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2440,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2446,"src":"2668:21:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2439,"name":"address","nodeType":"ElementaryTypeName","src":"2668:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2442,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2446,"src":"2691:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2441,"name":"address","nodeType":"ElementaryTypeName","src":"2691:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2444,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2446,"src":"2716:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2443,"name":"uint256","nodeType":"ElementaryTypeName","src":"2716:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:63:39"},"src":"2653:78:39"}],"scope":2448,"src":"137:2596:39"}],"src":"33:2701:39"},"id":39},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","exportedSymbols":{"IERC20Permit":[2483]},"id":2484,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2449,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"33:31:40"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2450,"nodeType":"StructuredDocumentation","src":"66:482:40","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":false,"id":2483,"linearizedBaseContracts":[2483],"name":"IERC20Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2451,"nodeType":"StructuredDocumentation","src":"578:788:40","text":" @dev Sets `value` as the allowance of `spender` over `owner`'s tokens,\n given `owner`'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."},"functionSelector":"d505accf","id":2468,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":2466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2453,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2468,"src":"1396:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2452,"name":"address","nodeType":"ElementaryTypeName","src":"1396:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2455,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2468,"src":"1419:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2454,"name":"address","nodeType":"ElementaryTypeName","src":"1419:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2457,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2468,"src":"1444:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2456,"name":"uint256","nodeType":"ElementaryTypeName","src":"1444:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2459,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2468,"src":"1467:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2458,"name":"uint256","nodeType":"ElementaryTypeName","src":"1467:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2461,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2468,"src":"1493:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2460,"name":"uint8","nodeType":"ElementaryTypeName","src":"1493:5:40","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2463,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2468,"src":"1510:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2462,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1510:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2465,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2468,"src":"1529:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2464,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1529:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1386:158:40"},"returnParameters":{"id":2467,"nodeType":"ParameterList","parameters":[],"src":"1553:0:40"},"scope":2483,"src":"1371:183:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2469,"nodeType":"StructuredDocumentation","src":"1560:294:40","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":2476,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","parameters":{"id":2472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2471,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2476,"src":"1875:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2470,"name":"address","nodeType":"ElementaryTypeName","src":"1875:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1874:15:40"},"returnParameters":{"id":2475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2474,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2476,"src":"1913:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2473,"name":"uint256","nodeType":"ElementaryTypeName","src":"1913:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1912:9:40"},"scope":2483,"src":"1859:63:40","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2477,"nodeType":"StructuredDocumentation","src":"1928:128:40","text":" @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}."},"functionSelector":"3644e515","id":2482,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":2478,"nodeType":"ParameterList","parameters":[],"src":"2139:2:40"},"returnParameters":{"id":2481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2480,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2482,"src":"2165:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2479,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2165:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2164:9:40"},"scope":2483,"src":"2114:60:40","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2484,"src":"549:1627:40"}],"src":"33:2144:40"},"id":40},"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","exportedSymbols":{"IAsset":[2487]},"id":2488,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2485,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:41"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2486,"nodeType":"StructuredDocumentation","src":"721:309:41","text":" @dev This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero\n address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like\n types.\n This concept is unrelated to a Pool's Asset Managers."},"fullyImplemented":true,"id":2487,"linearizedBaseContracts":[2487],"name":"IAsset","nodeType":"ContractDefinition","nodes":[],"scope":2488,"src":"1031:73:41"}],"src":"688:417:41"},"id":41},"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","exportedSymbols":{"IAuthorizer":[2502]},"id":2503,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2489,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:42"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2502,"linearizedBaseContracts":[2502],"name":"IAuthorizer","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2490,"nodeType":"StructuredDocumentation","src":"749:121:42","text":" @dev Returns true if `account` can perform the action described by `actionId` in the contract `where`."},"functionSelector":"9be2a884","id":2501,"implemented":false,"kind":"function","modifiers":[],"name":"canPerform","nodeType":"FunctionDefinition","parameters":{"id":2497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2492,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":2501,"src":"904:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2491,"name":"bytes32","nodeType":"ElementaryTypeName","src":"904:7:42","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2494,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":2501,"src":"930:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2493,"name":"address","nodeType":"ElementaryTypeName","src":"930:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2496,"mutability":"mutable","name":"where","nodeType":"VariableDeclaration","scope":2501,"src":"955:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2495,"name":"address","nodeType":"ElementaryTypeName","src":"955:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"894:80:42"},"returnParameters":{"id":2500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2499,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2501,"src":"998:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2498,"name":"bool","nodeType":"ElementaryTypeName","src":"998:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"997:6:42"},"scope":2502,"src":"875:129:42","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2503,"src":"721:285:42"}],"src":"688:319:42"},"id":42},"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","exportedSymbols":{"IFlashLoanRecipient":[2521]},"id":2522,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2504,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:43"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2505,"nodeType":"ImportDirective","scope":2522,"sourceUnit":2448,"src":"773:51:43","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2521,"linearizedBaseContracts":[2521],"name":"IFlashLoanRecipient","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2506,"nodeType":"StructuredDocumentation","src":"862:496:43","text":" @dev When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient.\n At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this\n call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the\n Vault, or else the entire flash loan will revert.\n `userData` is the same value passed in the `IVault.flashLoan` call."},"functionSelector":"f04f2707","id":2520,"implemented":false,"kind":"function","modifiers":[],"name":"receiveFlashLoan","nodeType":"FunctionDefinition","parameters":{"id":2518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2509,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2520,"src":"1398:22:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2507,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1398:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2508,"nodeType":"ArrayTypeName","src":"1398:8:43","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2512,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":2520,"src":"1430:24:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2510,"name":"uint256","nodeType":"ElementaryTypeName","src":"1430:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2511,"nodeType":"ArrayTypeName","src":"1430:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2515,"mutability":"mutable","name":"feeAmounts","nodeType":"VariableDeclaration","scope":2520,"src":"1464:27:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2513,"name":"uint256","nodeType":"ElementaryTypeName","src":"1464:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2514,"nodeType":"ArrayTypeName","src":"1464:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2520,"src":"1501:21:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2516,"name":"bytes","nodeType":"ElementaryTypeName","src":"1501:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1388:140:43"},"returnParameters":{"id":2519,"nodeType":"ParameterList","parameters":[],"src":"1537:0:43"},"scope":2521,"src":"1363:175:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2522,"src":"826:714:43"}],"src":"688:853:43"},"id":43},"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","exportedSymbols":{"IProtocolFeesCollector":[2586]},"id":2587,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2523,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:44"},{"id":2524,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:44"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2525,"nodeType":"ImportDirective","scope":2587,"sourceUnit":2448,"src":"755:51:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"./IVault.sol","id":2526,"nodeType":"ImportDirective","scope":2587,"sourceUnit":3052,"src":"808:22:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"./IAuthorizer.sol","id":2527,"nodeType":"ImportDirective","scope":2587,"sourceUnit":2503,"src":"831:27:44","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2586,"linearizedBaseContracts":[2586],"name":"IProtocolFeesCollector","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":2531,"name":"SwapFeePercentageChanged","nodeType":"EventDefinition","parameters":{"id":2530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2529,"indexed":false,"mutability":"mutable","name":"newSwapFeePercentage","nodeType":"VariableDeclaration","scope":2531,"src":"930:28:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2528,"name":"uint256","nodeType":"ElementaryTypeName","src":"930:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"929:30:44"},"src":"899:61:44"},{"anonymous":false,"id":2535,"name":"FlashLoanFeePercentageChanged","nodeType":"EventDefinition","parameters":{"id":2534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2533,"indexed":false,"mutability":"mutable","name":"newFlashLoanFeePercentage","nodeType":"VariableDeclaration","scope":2535,"src":"1001:33:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2532,"name":"uint256","nodeType":"ElementaryTypeName","src":"1001:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1000:35:44"},"src":"965:71:44"},{"functionSelector":"6daefab6","id":2546,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawCollectedFees","nodeType":"FunctionDefinition","parameters":{"id":2544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2538,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2546,"src":"1082:24:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2536,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1082:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2537,"nodeType":"ArrayTypeName","src":"1082:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2541,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":2546,"src":"1116:26:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2539,"name":"uint256","nodeType":"ElementaryTypeName","src":"1116:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2540,"nodeType":"ArrayTypeName","src":"1116:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2546,"src":"1152:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2542,"name":"address","nodeType":"ElementaryTypeName","src":"1152:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1072:103:44"},"returnParameters":{"id":2545,"nodeType":"ParameterList","parameters":[],"src":"1184:0:44"},"scope":2586,"src":"1042:143:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"38e9922e","id":2551,"implemented":false,"kind":"function","modifiers":[],"name":"setSwapFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2548,"mutability":"mutable","name":"newSwapFeePercentage","nodeType":"VariableDeclaration","scope":2551,"src":"1221:28:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2547,"name":"uint256","nodeType":"ElementaryTypeName","src":"1221:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1220:30:44"},"returnParameters":{"id":2550,"nodeType":"ParameterList","parameters":[],"src":"1259:0:44"},"scope":2586,"src":"1191:69:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6b6b9f69","id":2556,"implemented":false,"kind":"function","modifiers":[],"name":"setFlashLoanFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2553,"mutability":"mutable","name":"newFlashLoanFeePercentage","nodeType":"VariableDeclaration","scope":2556,"src":"1301:33:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2552,"name":"uint256","nodeType":"ElementaryTypeName","src":"1301:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1300:35:44"},"returnParameters":{"id":2555,"nodeType":"ParameterList","parameters":[],"src":"1344:0:44"},"scope":2586,"src":"1266:79:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"55c67628","id":2561,"implemented":false,"kind":"function","modifiers":[],"name":"getSwapFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2557,"nodeType":"ParameterList","parameters":[],"src":"1380:2:44"},"returnParameters":{"id":2560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2561,"src":"1406:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2558,"name":"uint256","nodeType":"ElementaryTypeName","src":"1406:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1405:9:44"},"scope":2586,"src":"1351:64:44","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d877845c","id":2566,"implemented":false,"kind":"function","modifiers":[],"name":"getFlashLoanFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2562,"nodeType":"ParameterList","parameters":[],"src":"1455:2:44"},"returnParameters":{"id":2565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2564,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2566,"src":"1481:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2563,"name":"uint256","nodeType":"ElementaryTypeName","src":"1481:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1480:9:44"},"scope":2586,"src":"1421:69:44","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e42abf35","id":2575,"implemented":false,"kind":"function","modifiers":[],"name":"getCollectedFeeAmounts","nodeType":"FunctionDefinition","parameters":{"id":2570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2569,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2575,"src":"1528:22:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2567,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1528:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2568,"nodeType":"ArrayTypeName","src":"1528:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1527:24:44"},"returnParameters":{"id":2574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2573,"mutability":"mutable","name":"feeAmounts","nodeType":"VariableDeclaration","scope":2575,"src":"1575:27:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2571,"name":"uint256","nodeType":"ElementaryTypeName","src":"1575:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2572,"nodeType":"ArrayTypeName","src":"1575:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1574:29:44"},"scope":2586,"src":"1496:108:44","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"aaabadc5","id":2580,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":2576,"nodeType":"ParameterList","parameters":[],"src":"1632:2:44"},"returnParameters":{"id":2579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2578,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2580,"src":"1658:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":2577,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"1658:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1657:13:44"},"scope":2586,"src":"1610:61:44","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fbfa77cf","id":2585,"implemented":false,"kind":"function","modifiers":[],"name":"vault","nodeType":"FunctionDefinition","parameters":{"id":2581,"nodeType":"ParameterList","parameters":[],"src":"1691:2:44"},"returnParameters":{"id":2584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2583,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2585,"src":"1717:6:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":2582,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1717:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1716:8:44"},"scope":2586,"src":"1677:48:44","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2587,"src":"860:867:44"}],"src":"688:1040:44"},"id":44},"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","exportedSymbols":{"IVault":[3051]},"id":3052,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2588,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"688:33:45"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2589,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2448,"src":"723:51:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":2590,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2260,"src":"775:55:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","file":"../solidity-utils/helpers/ISignaturesValidator.sol","id":2591,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2312,"src":"831:60:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol","file":"../solidity-utils/helpers/ITemporarilyPausable.sol","id":2592,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2331,"src":"892:60:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"../solidity-utils/misc/IWETH.sol","id":2593,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2356,"src":"953:42:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","file":"./IAsset.sol","id":2594,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2488,"src":"997:22:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"./IAuthorizer.sol","id":2595,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2503,"src":"1020:27:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","file":"./IFlashLoanRecipient.sol","id":2596,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2522,"src":"1048:35:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","file":"./IProtocolFeesCollector.sol","id":2597,"nodeType":"ImportDirective","scope":3052,"sourceUnit":2587,"src":"1084:38:45","symbolAliases":[],"unitAlias":""},{"id":2598,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"1124:31:45"},{"abstract":false,"baseContracts":[{"baseName":{"id":2600,"name":"ISignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":2311,"src":"1349:20:45","typeDescriptions":{"typeIdentifier":"t_contract$_ISignaturesValidator_$2311","typeString":"contract ISignaturesValidator"}},"id":2601,"nodeType":"InheritanceSpecifier","src":"1349:20:45"},{"baseName":{"id":2602,"name":"ITemporarilyPausable","nodeType":"UserDefinedTypeName","referencedDeclaration":2330,"src":"1371:20:45","typeDescriptions":{"typeIdentifier":"t_contract$_ITemporarilyPausable_$2330","typeString":"contract ITemporarilyPausable"}},"id":2603,"nodeType":"InheritanceSpecifier","src":"1371:20:45"},{"baseName":{"id":2604,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":2259,"src":"1393:15:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$2259","typeString":"contract IAuthentication"}},"id":2605,"nodeType":"InheritanceSpecifier","src":"1393:15:45"}],"contractDependencies":[2259,2311,2330],"contractKind":"interface","documentation":{"id":2599,"nodeType":"StructuredDocumentation","src":"1157:171:45","text":" @dev Full external interface for the Vault core contract - no external or public methods exist in the contract that\n don't override one of these declarations."},"fullyImplemented":false,"id":3051,"linearizedBaseContracts":[3051,2259,2330,2311],"name":"IVault","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2606,"nodeType":"StructuredDocumentation","src":"2906:55:45","text":" @dev Returns the Vault's Authorizer."},"functionSelector":"aaabadc5","id":2611,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":2607,"nodeType":"ParameterList","parameters":[],"src":"2988:2:45"},"returnParameters":{"id":2610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2609,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2611,"src":"3014:11:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":2608,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"3014:11:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"3013:13:45"},"scope":3051,"src":"2966:61:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2612,"nodeType":"StructuredDocumentation","src":"3033:175:45","text":" @dev Sets a new Authorizer for the Vault. The caller must be allowed by the current Authorizer to do this.\n Emits an `AuthorizerChanged` event."},"functionSelector":"058a628f","id":2617,"implemented":false,"kind":"function","modifiers":[],"name":"setAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":2615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2614,"mutability":"mutable","name":"newAuthorizer","nodeType":"VariableDeclaration","scope":2617,"src":"3236:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":2613,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"3236:11:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"3235:27:45"},"returnParameters":{"id":2616,"nodeType":"ParameterList","parameters":[],"src":"3271:0:45"},"scope":3051,"src":"3213:59:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2618,"nodeType":"StructuredDocumentation","src":"3278:80:45","text":" @dev Emitted when a new authorizer is set by `setAuthorizer`."},"id":2622,"name":"AuthorizerChanged","nodeType":"EventDefinition","parameters":{"id":2621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2620,"indexed":true,"mutability":"mutable","name":"newAuthorizer","nodeType":"VariableDeclaration","scope":2622,"src":"3387:33:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":2619,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"3387:11:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"3386:35:45"},"src":"3363:59:45"},{"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"4518:99:45","text":" @dev Returns true if `user` has approved `relayer` to act as a relayer for them."},"functionSelector":"fec90d72","id":2632,"implemented":false,"kind":"function","modifiers":[],"name":"hasApprovedRelayer","nodeType":"FunctionDefinition","parameters":{"id":2628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2632,"src":"4650:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"4650:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":2632,"src":"4664:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"4664:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4649:31:45"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2630,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2632,"src":"4704:4:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2629,"name":"bool","nodeType":"ElementaryTypeName","src":"4704:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4703:6:45"},"scope":3051,"src":"4622:88:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2633,"nodeType":"StructuredDocumentation","src":"4716:178:45","text":" @dev Allows `relayer` to act as a relayer for `sender` if `approved` is true, and disallows it otherwise.\n Emits a `RelayerApprovalChanged` event."},"functionSelector":"fa6e671d","id":2642,"implemented":false,"kind":"function","modifiers":[],"name":"setRelayerApproval","nodeType":"FunctionDefinition","parameters":{"id":2640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2635,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2642,"src":"4936:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2634,"name":"address","nodeType":"ElementaryTypeName","src":"4936:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2637,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":2642,"src":"4960:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2636,"name":"address","nodeType":"ElementaryTypeName","src":"4960:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2639,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":2642,"src":"4985:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2638,"name":"bool","nodeType":"ElementaryTypeName","src":"4985:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4926:78:45"},"returnParameters":{"id":2641,"nodeType":"ParameterList","parameters":[],"src":"5013:0:45"},"scope":3051,"src":"4899:115:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2643,"nodeType":"StructuredDocumentation","src":"5020:104:45","text":" @dev Emitted every time a relayer is approved or disapproved by `setRelayerApproval`."},"id":2651,"name":"RelayerApprovalChanged","nodeType":"EventDefinition","parameters":{"id":2650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2645,"indexed":true,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":2651,"src":"5158:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2644,"name":"address","nodeType":"ElementaryTypeName","src":"5158:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2647,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2651,"src":"5183:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2646,"name":"address","nodeType":"ElementaryTypeName","src":"5183:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2649,"indexed":false,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":2651,"src":"5207:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2648,"name":"bool","nodeType":"ElementaryTypeName","src":"5207:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5157:64:45"},"src":"5129:93:45"},{"documentation":{"id":2652,"nodeType":"StructuredDocumentation","src":"5930:78:45","text":" @dev Returns `user`'s Internal Balance for a set of tokens."},"functionSelector":"0f5a6efa","id":2663,"implemented":false,"kind":"function","modifiers":[],"name":"getInternalBalance","nodeType":"FunctionDefinition","parameters":{"id":2658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2654,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2663,"src":"6041:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2653,"name":"address","nodeType":"ElementaryTypeName","src":"6041:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2657,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2663,"src":"6055:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2655,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"6055:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2656,"nodeType":"ArrayTypeName","src":"6055:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"6040:38:45"},"returnParameters":{"id":2662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2661,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2663,"src":"6102:16:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2659,"name":"uint256","nodeType":"ElementaryTypeName","src":"6102:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2660,"nodeType":"ArrayTypeName","src":"6102:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6101:18:45"},"scope":3051,"src":"6013:107:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2664,"nodeType":"StructuredDocumentation","src":"6126:416:45","text":" @dev Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer)\n and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as\n it lets integrators reuse a user's Vault allowance.\n For each operation, if the caller is not `sender`, it must be an authorized relayer for them."},"functionSelector":"0e8e3e84","id":2670,"implemented":false,"kind":"function","modifiers":[],"name":"manageUserBalance","nodeType":"FunctionDefinition","parameters":{"id":2668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2667,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":2670,"src":"6574:26:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$2681_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp[]"},"typeName":{"baseType":{"id":2665,"name":"UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":2681,"src":"6574:13:45","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$2681_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":2666,"nodeType":"ArrayTypeName","src":"6574:15:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$2681_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}},"visibility":"internal"}],"src":"6573:28:45"},"returnParameters":{"id":2669,"nodeType":"ParameterList","parameters":[],"src":"6618:0:45"},"scope":3051,"src":"6547:72:45","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.UserBalanceOp","id":2681,"members":[{"constant":false,"id":2672,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":2681,"src":"6836:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_UserBalanceOpKind_$2686","typeString":"enum IVault.UserBalanceOpKind"},"typeName":{"id":2671,"name":"UserBalanceOpKind","nodeType":"UserDefinedTypeName","referencedDeclaration":2686,"src":"6836:17:45","typeDescriptions":{"typeIdentifier":"t_enum$_UserBalanceOpKind_$2686","typeString":"enum IVault.UserBalanceOpKind"}},"visibility":"internal"},{"constant":false,"id":2674,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":2681,"src":"6868:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"},"typeName":{"id":2673,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2487,"src":"6868:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"}},"visibility":"internal"},{"constant":false,"id":2676,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2681,"src":"6890:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2675,"name":"uint256","nodeType":"ElementaryTypeName","src":"6890:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2678,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2681,"src":"6914:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2677,"name":"address","nodeType":"ElementaryTypeName","src":"6914:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2680,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2681,"src":"6938:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":2679,"name":"address","nodeType":"ElementaryTypeName","src":"6938:15:45","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"name":"UserBalanceOp","nodeType":"StructDefinition","scope":3051,"src":"6805:165:45","visibility":"public"},{"canonicalName":"IVault.UserBalanceOpKind","id":2686,"members":[{"id":2682,"name":"DEPOSIT_INTERNAL","nodeType":"EnumValue","src":"8608:16:45"},{"id":2683,"name":"WITHDRAW_INTERNAL","nodeType":"EnumValue","src":"8626:17:45"},{"id":2684,"name":"TRANSFER_INTERNAL","nodeType":"EnumValue","src":"8645:17:45"},{"id":2685,"name":"TRANSFER_EXTERNAL","nodeType":"EnumValue","src":"8664:17:45"}],"name":"UserBalanceOpKind","nodeType":"EnumDefinition","src":"8583:100:45"},{"anonymous":false,"documentation":{"id":2687,"nodeType":"StructuredDocumentation","src":"8689:317:45","text":" @dev Emitted when a user's Internal Balance changes, either from calls to `manageUserBalance`, or through\n interacting with Pools using Internal Balance.\n Because Internal Balance works exclusively with ERC20 tokens, ETH deposits and withdrawals will use the WETH\n address."},"id":2695,"name":"InternalBalanceChanged","nodeType":"EventDefinition","parameters":{"id":2694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2689,"indexed":true,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2695,"src":"9040:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2688,"name":"address","nodeType":"ElementaryTypeName","src":"9040:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2691,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2695,"src":"9062:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":2690,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"9062:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2693,"indexed":false,"mutability":"mutable","name":"delta","nodeType":"VariableDeclaration","scope":2695,"src":"9084:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2692,"name":"int256","nodeType":"ElementaryTypeName","src":"9084:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9039:58:45"},"src":"9011:87:45"},{"anonymous":false,"documentation":{"id":2696,"nodeType":"StructuredDocumentation","src":"9104:131:45","text":" @dev Emitted when a user's Vault ERC20 allowance is used by the Vault to transfer tokens to an external account."},"id":2706,"name":"ExternalBalanceTransfer","nodeType":"EventDefinition","parameters":{"id":2705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2698,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2706,"src":"9270:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":2697,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"9270:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2700,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2706,"src":"9292:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2699,"name":"address","nodeType":"ElementaryTypeName","src":"9292:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2702,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2706,"src":"9316:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2701,"name":"address","nodeType":"ElementaryTypeName","src":"9316:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2704,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2706,"src":"9335:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2703,"name":"uint256","nodeType":"ElementaryTypeName","src":"9335:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9269:81:45"},"src":"9240:111:45"},{"canonicalName":"IVault.PoolSpecialization","id":2710,"members":[{"id":2707,"name":"GENERAL","nodeType":"EnumValue","src":"10457:7:45"},{"id":2708,"name":"MINIMAL_SWAP_INFO","nodeType":"EnumValue","src":"10466:17:45"},{"id":2709,"name":"TWO_TOKEN","nodeType":"EnumValue","src":"10485:9:45"}],"name":"PoolSpecialization","nodeType":"EnumDefinition","src":"10431:65:45"},{"documentation":{"id":2711,"nodeType":"StructuredDocumentation","src":"10502:702:45","text":" @dev Registers the caller account as a Pool with a given specialization setting. Returns the Pool's ID, which\n is used in all Pool-related functions. Pools cannot be deregistered, nor can the Pool's specialization be\n changed.\n The caller is expected to be a smart contract that implements either `IGeneralPool` or `IMinimalSwapInfoPool`,\n depending on the chosen specialization setting. This contract is known as the Pool's contract.\n Note that the same contract may register itself as multiple Pools with unique Pool IDs, or in other words,\n multiple Pools may share the same contract.\n Emits a `PoolRegistered` event."},"functionSelector":"09b2760f","id":2718,"implemented":false,"kind":"function","modifiers":[],"name":"registerPool","nodeType":"FunctionDefinition","parameters":{"id":2714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2713,"mutability":"mutable","name":"specialization","nodeType":"VariableDeclaration","scope":2718,"src":"11231:33:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$2710","typeString":"enum IVault.PoolSpecialization"},"typeName":{"id":2712,"name":"PoolSpecialization","nodeType":"UserDefinedTypeName","referencedDeclaration":2710,"src":"11231:18:45","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$2710","typeString":"enum IVault.PoolSpecialization"}},"visibility":"internal"}],"src":"11230:35:45"},"returnParameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2718,"src":"11284:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2715,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11284:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11283:9:45"},"scope":3051,"src":"11209:84:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2719,"nodeType":"StructuredDocumentation","src":"11299:84:45","text":" @dev Emitted when a Pool is registered by calling `registerPool`."},"id":2727,"name":"PoolRegistered","nodeType":"EventDefinition","parameters":{"id":2726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2721,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2727,"src":"11409:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2720,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11409:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2723,"indexed":true,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":2727,"src":"11433:27:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2722,"name":"address","nodeType":"ElementaryTypeName","src":"11433:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2725,"indexed":false,"mutability":"mutable","name":"specialization","nodeType":"VariableDeclaration","scope":2727,"src":"11462:33:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$2710","typeString":"enum IVault.PoolSpecialization"},"typeName":{"id":2724,"name":"PoolSpecialization","nodeType":"UserDefinedTypeName","referencedDeclaration":2710,"src":"11462:18:45","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$2710","typeString":"enum IVault.PoolSpecialization"}},"visibility":"internal"}],"src":"11408:88:45"},"src":"11388:109:45"},{"documentation":{"id":2728,"nodeType":"StructuredDocumentation","src":"11503:85:45","text":" @dev Returns a Pool's contract address and specialization setting."},"functionSelector":"f6c00927","id":2737,"implemented":false,"kind":"function","modifiers":[],"name":"getPool","nodeType":"FunctionDefinition","parameters":{"id":2731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2730,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2737,"src":"11610:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2729,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11610:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11609:16:45"},"returnParameters":{"id":2736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2733,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2737,"src":"11649:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2732,"name":"address","nodeType":"ElementaryTypeName","src":"11649:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2735,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2737,"src":"11658:18:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$2710","typeString":"enum IVault.PoolSpecialization"},"typeName":{"id":2734,"name":"PoolSpecialization","nodeType":"UserDefinedTypeName","referencedDeclaration":2710,"src":"11658:18:45","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$2710","typeString":"enum IVault.PoolSpecialization"}},"visibility":"internal"}],"src":"11648:29:45"},"scope":3051,"src":"11593:85:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2738,"nodeType":"StructuredDocumentation","src":"11684:1422:45","text":" @dev Registers `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n Pools can only interact with tokens they have registered. Users join a Pool by transferring registered tokens,\n exit by receiving registered tokens, and can only swap registered tokens.\n Each token can only be registered once. For Pools with the Two Token specialization, `tokens` must have a length\n of two, that is, both tokens must be registered in the same `registerTokens` call, and they must be sorted in\n ascending order.\n The `tokens` and `assetManagers` arrays must have the same length, and each entry in these indicates the Asset\n Manager for the corresponding token. Asset Managers can manage a Pool's tokens via `managePoolBalance`,\n depositing and withdrawing them directly, and can even set their balance to arbitrary amounts. They are therefore\n expected to be highly secured smart contracts with sound design principles, and the decision to register an\n Asset Manager should not be made lightly.\n Pools can choose not to assign an Asset Manager to a given token by passing in the zero address. Once an Asset\n Manager is set, it cannot be changed except by deregistering the associated token and registering again with a\n different Asset Manager.\n Emits a `TokensRegistered` event."},"functionSelector":"66a9c7d2","id":2749,"implemented":false,"kind":"function","modifiers":[],"name":"registerTokens","nodeType":"FunctionDefinition","parameters":{"id":2747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2740,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2749,"src":"13144:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2739,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13144:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2743,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2749,"src":"13168:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2741,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"13168:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2742,"nodeType":"ArrayTypeName","src":"13168:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2746,"mutability":"mutable","name":"assetManagers","nodeType":"VariableDeclaration","scope":2749,"src":"13200:30:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2744,"name":"address","nodeType":"ElementaryTypeName","src":"13200:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2745,"nodeType":"ArrayTypeName","src":"13200:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13134:102:45"},"returnParameters":{"id":2748,"nodeType":"ParameterList","parameters":[],"src":"13245:0:45"},"scope":3051,"src":"13111:135:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2750,"nodeType":"StructuredDocumentation","src":"13252:89:45","text":" @dev Emitted when a Pool registers tokens by calling `registerTokens`."},"id":2760,"name":"TokensRegistered","nodeType":"EventDefinition","parameters":{"id":2759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2752,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2760,"src":"13369:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2751,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13369:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2755,"indexed":false,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2760,"src":"13393:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2753,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"13393:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2754,"nodeType":"ArrayTypeName","src":"13393:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2758,"indexed":false,"mutability":"mutable","name":"assetManagers","nodeType":"VariableDeclaration","scope":2760,"src":"13410:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2756,"name":"address","nodeType":"ElementaryTypeName","src":"13410:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2757,"nodeType":"ArrayTypeName","src":"13410:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13368:66:45"},"src":"13346:89:45"},{"documentation":{"id":2761,"nodeType":"StructuredDocumentation","src":"13441:567:45","text":" @dev Deregisters `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n Only registered tokens (via `registerTokens`) can be deregistered. Additionally, they must have zero total\n balance. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens\n must be deregistered in the same `deregisterTokens` call.\n A deregistered token can be re-registered later on, possibly with a different Asset Manager.\n Emits a `TokensDeregistered` event."},"functionSelector":"7d3aeb96","id":2769,"implemented":false,"kind":"function","modifiers":[],"name":"deregisterTokens","nodeType":"FunctionDefinition","parameters":{"id":2767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2763,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2769,"src":"14039:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2762,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14039:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2766,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2769,"src":"14055:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2764,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"14055:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2765,"nodeType":"ArrayTypeName","src":"14055:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"14038:40:45"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"14087:0:45"},"scope":3051,"src":"14013:75:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2770,"nodeType":"StructuredDocumentation","src":"14094:93:45","text":" @dev Emitted when a Pool deregisters tokens by calling `deregisterTokens`."},"id":2777,"name":"TokensDeregistered","nodeType":"EventDefinition","parameters":{"id":2776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2777,"src":"14217:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2771,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14217:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2775,"indexed":false,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2777,"src":"14241:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2773,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"14241:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2774,"nodeType":"ArrayTypeName","src":"14241:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"14216:41:45"},"src":"14192:66:45"},{"documentation":{"id":2778,"nodeType":"StructuredDocumentation","src":"14264:1043:45","text":" @dev Returns detailed information for a Pool's registered token.\n `cash` is the number of tokens the Vault currently holds for the Pool. `managed` is the number of tokens\n withdrawn and held outside the Vault by the Pool's token Asset Manager. The Pool's total balance for `token`\n equals the sum of `cash` and `managed`.\n Internally, `cash` and `managed` are stored using 112 bits. No action can ever cause a Pool's token `cash`,\n `managed` or `total` balance to be greater than 2^112 - 1.\n `lastChangeBlock` is the number of the block in which `token`'s total balance was last modified (via either a\n join, exit, swap, or Asset Manager update). This value is useful to avoid so-called 'sandwich attacks', for\n example when developing price oracles. A change of zero (e.g. caused by a swap with amount zero) is considered a\n change for this purpose, and will update `lastChangeBlock`.\n `assetManager` is the Pool's token Asset Manager."},"functionSelector":"b05f8e48","id":2793,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolTokenInfo","nodeType":"FunctionDefinition","parameters":{"id":2783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2780,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2793,"src":"15338:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2779,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15338:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2782,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2793,"src":"15354:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":2781,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"15354:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"15337:30:45"},"returnParameters":{"id":2792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2785,"mutability":"mutable","name":"cash","nodeType":"VariableDeclaration","scope":2793,"src":"15428:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2784,"name":"uint256","nodeType":"ElementaryTypeName","src":"15428:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2787,"mutability":"mutable","name":"managed","nodeType":"VariableDeclaration","scope":2793,"src":"15454:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2786,"name":"uint256","nodeType":"ElementaryTypeName","src":"15454:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2789,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":2793,"src":"15483:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2788,"name":"uint256","nodeType":"ElementaryTypeName","src":"15483:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2791,"mutability":"mutable","name":"assetManager","nodeType":"VariableDeclaration","scope":2793,"src":"15520:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2790,"name":"address","nodeType":"ElementaryTypeName","src":"15520:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15414:136:45"},"scope":3051,"src":"15312:239:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2794,"nodeType":"StructuredDocumentation","src":"15557:828:45","text":" @dev Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of\n the tokens' `balances` changed.\n The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all\n Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order.\n If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same\n order as passed to `registerTokens`.\n Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are\n the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo`\n instead."},"functionSelector":"f94d4668","id":2807,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolTokens","nodeType":"FunctionDefinition","parameters":{"id":2797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2796,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2807,"src":"16413:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2795,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16413:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16412:16:45"},"returnParameters":{"id":2806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2800,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2807,"src":"16489:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2798,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"16489:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2799,"nodeType":"ArrayTypeName","src":"16489:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2803,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":2807,"src":"16525:25:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2801,"name":"uint256","nodeType":"ElementaryTypeName","src":"16525:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2802,"nodeType":"ArrayTypeName","src":"16525:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2805,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":2807,"src":"16564:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2804,"name":"uint256","nodeType":"ElementaryTypeName","src":"16564:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16475:122:45"},"scope":3051,"src":"16390:208:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2808,"nodeType":"StructuredDocumentation","src":"16604:2304:45","text":" @dev Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will\n trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized\n Pool shares.\n If the caller is not `sender`, it must be an authorized relayer for them.\n The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount\n to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces\n these maximums.\n If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable\n this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the\n WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent\n back to the caller (not the sender, which is important for relayers).\n `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be\n sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final\n `assets` array might not be sorted. Pools with no registered tokens cannot be joined.\n If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only\n be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be\n withdrawn from Internal Balance: attempting to do so will trigger a revert.\n This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement\n their own custom logic. This typically requires additional information from the user (such as the expected number\n of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed\n directly to the Pool's contract, as is `recipient`.\n Emits a `PoolBalanceChanged` event."},"functionSelector":"b95cac28","id":2819,"implemented":false,"kind":"function","modifiers":[],"name":"joinPool","nodeType":"FunctionDefinition","parameters":{"id":2817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2810,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2819,"src":"18940:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2809,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18940:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2812,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2819,"src":"18964:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2811,"name":"address","nodeType":"ElementaryTypeName","src":"18964:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2814,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2819,"src":"18988:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2813,"name":"address","nodeType":"ElementaryTypeName","src":"18988:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2816,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":2819,"src":"19015:30:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$2830_memory_ptr","typeString":"struct IVault.JoinPoolRequest"},"typeName":{"id":2815,"name":"JoinPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":2830,"src":"19015:15:45","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$2830_storage_ptr","typeString":"struct IVault.JoinPoolRequest"}},"visibility":"internal"}],"src":"18930:121:45"},"returnParameters":{"id":2818,"nodeType":"ParameterList","parameters":[],"src":"19068:0:45"},"scope":3051,"src":"18913:156:45","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.JoinPoolRequest","id":2830,"members":[{"constant":false,"id":2822,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":2830,"src":"19108:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_storage_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":2820,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2487,"src":"19108:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"}},"id":2821,"nodeType":"ArrayTypeName","src":"19108:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":2825,"mutability":"mutable","name":"maxAmountsIn","nodeType":"VariableDeclaration","scope":2830,"src":"19133:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2823,"name":"uint256","nodeType":"ElementaryTypeName","src":"19133:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2824,"nodeType":"ArrayTypeName","src":"19133:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2827,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2830,"src":"19165:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2826,"name":"bytes","nodeType":"ElementaryTypeName","src":"19165:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2829,"mutability":"mutable","name":"fromInternalBalance","nodeType":"VariableDeclaration","scope":2830,"src":"19189:24:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2828,"name":"bool","nodeType":"ElementaryTypeName","src":"19189:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"JoinPoolRequest","nodeType":"StructDefinition","scope":3051,"src":"19075:145:45","visibility":"public"},{"documentation":{"id":2831,"nodeType":"StructuredDocumentation","src":"19226:2489:45","text":" @dev Called by users to exit a Pool, which transfers tokens from the Pool's balance to `recipient`. This will\n trigger custom Pool behavior, which will typically ask for something in return from `sender` - often tokenized\n Pool shares. The amount of tokens that can be withdrawn is limited by the Pool's `cash` balance (see\n `getPoolTokenInfo`).\n If the caller is not `sender`, it must be an authorized relayer for them.\n The `tokens` and `minAmountsOut` arrays must have the same length, and each entry in these indicates the minimum\n token amount to receive for each token contract. The amounts to send are decided by the Pool and not the Vault:\n it just enforces these minimums.\n If exiting a Pool that holds WETH, it is possible to receive ETH directly: the Vault will do the unwrapping. To\n enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead\n of the WETH address. Note that it is not possible to combine ETH and WETH in the same exit.\n `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n interacting with Pools that register and deregister tokens frequently. If receiving ETH however, the array must\n be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the\n final `assets` array might not be sorted. Pools with no registered tokens cannot be exited.\n If `toInternalBalance` is true, the tokens will be deposited to `recipient`'s Internal Balance. Otherwise,\n an ERC20 transfer will be performed. Note that ETH cannot be deposited to Internal Balance: attempting to\n do so will trigger a revert.\n `minAmountsOut` is the minimum amount of tokens the user expects to get out of the Pool, for each token in the\n `tokens` array. This array must match the Pool's registered tokens.\n This causes the Vault to call the `IBasePool.onExitPool` hook on the Pool's contract, where Pools implement\n their own custom logic. This typically requires additional information from the user (such as the expected number\n of Pool shares to return). This can be encoded in the `userData` argument, which is ignored by the Vault and\n passed directly to the Pool's contract.\n Emits a `PoolBalanceChanged` event."},"functionSelector":"8bdb3913","id":2842,"implemented":false,"kind":"function","modifiers":[],"name":"exitPool","nodeType":"FunctionDefinition","parameters":{"id":2840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2833,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2842,"src":"21747:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2832,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21747:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2835,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2842,"src":"21771:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2834,"name":"address","nodeType":"ElementaryTypeName","src":"21771:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2837,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2842,"src":"21795:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"21795:15:45","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":2839,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":2842,"src":"21830:30:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$2853_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":2838,"name":"ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":2853,"src":"21830:15:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$2853_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"src":"21737:129:45"},"returnParameters":{"id":2841,"nodeType":"ParameterList","parameters":[],"src":"21875:0:45"},"scope":3051,"src":"21720:156:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.ExitPoolRequest","id":2853,"members":[{"constant":false,"id":2845,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":2853,"src":"21915:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_storage_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":2843,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2487,"src":"21915:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"}},"id":2844,"nodeType":"ArrayTypeName","src":"21915:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":2848,"mutability":"mutable","name":"minAmountsOut","nodeType":"VariableDeclaration","scope":2853,"src":"21940:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2846,"name":"uint256","nodeType":"ElementaryTypeName","src":"21940:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2847,"nodeType":"ArrayTypeName","src":"21940:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2850,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2853,"src":"21973:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2849,"name":"bytes","nodeType":"ElementaryTypeName","src":"21973:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2852,"mutability":"mutable","name":"toInternalBalance","nodeType":"VariableDeclaration","scope":2853,"src":"21997:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2851,"name":"bool","nodeType":"ElementaryTypeName","src":"21997:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"ExitPoolRequest","nodeType":"StructDefinition","scope":3051,"src":"21882:144:45","visibility":"public"},{"anonymous":false,"documentation":{"id":2854,"nodeType":"StructuredDocumentation","src":"22032:116:45","text":" @dev Emitted when a user joins or exits a Pool by calling `joinPool` or `exitPool`, respectively."},"id":2869,"name":"PoolBalanceChanged","nodeType":"EventDefinition","parameters":{"id":2868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2856,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2869,"src":"22187:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2855,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22187:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2858,"indexed":true,"mutability":"mutable","name":"liquidityProvider","nodeType":"VariableDeclaration","scope":2869,"src":"22219:33:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2857,"name":"address","nodeType":"ElementaryTypeName","src":"22219:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2861,"indexed":false,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2869,"src":"22262:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2859,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"22262:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2860,"nodeType":"ArrayTypeName","src":"22262:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2864,"indexed":false,"mutability":"mutable","name":"deltas","nodeType":"VariableDeclaration","scope":2869,"src":"22287:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":2862,"name":"int256","nodeType":"ElementaryTypeName","src":"22287:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2863,"nodeType":"ArrayTypeName","src":"22287:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"},{"constant":false,"id":2867,"indexed":false,"mutability":"mutable","name":"protocolFeeAmounts","nodeType":"VariableDeclaration","scope":2869,"src":"22312:28:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2865,"name":"uint256","nodeType":"ElementaryTypeName","src":"22312:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2866,"nodeType":"ArrayTypeName","src":"22312:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"22177:169:45"},"src":"22153:194:45"},{"canonicalName":"IVault.PoolBalanceChangeKind","id":2872,"members":[{"id":2870,"name":"JOIN","nodeType":"EnumValue","src":"22382:4:45"},{"id":2871,"name":"EXIT","nodeType":"EnumValue","src":"22388:4:45"}],"name":"PoolBalanceChangeKind","nodeType":"EnumDefinition","src":"22353:41:45"},{"canonicalName":"IVault.SwapKind","id":2875,"members":[{"id":2873,"name":"GIVEN_IN","nodeType":"EnumValue","src":"25995:8:45"},{"id":2874,"name":"GIVEN_OUT","nodeType":"EnumValue","src":"26005:9:45"}],"name":"SwapKind","nodeType":"EnumDefinition","src":"25979:37:45"},{"documentation":{"id":2876,"nodeType":"StructuredDocumentation","src":"26022:587:45","text":" @dev Performs a swap with a single Pool.\n If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens\n taken from the Pool, which must be greater than or equal to `limit`.\n If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens\n sent to the Pool, which must be less than or equal to `limit`.\n Internal Balance usage and the recipient are determined by the `funds` struct.\n Emits a `Swap` event."},"functionSelector":"52bbbe29","id":2889,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":2885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2878,"mutability":"mutable","name":"singleSwap","nodeType":"VariableDeclaration","scope":2889,"src":"26637:28:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$2902_memory_ptr","typeString":"struct IVault.SingleSwap"},"typeName":{"id":2877,"name":"SingleSwap","nodeType":"UserDefinedTypeName","referencedDeclaration":2902,"src":"26637:10:45","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$2902_storage_ptr","typeString":"struct IVault.SingleSwap"}},"visibility":"internal"},{"constant":false,"id":2880,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":2889,"src":"26675:27:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$2957_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":2879,"name":"FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":2957,"src":"26675:14:45","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$2957_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":2882,"mutability":"mutable","name":"limit","nodeType":"VariableDeclaration","scope":2889,"src":"26712:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2881,"name":"uint256","nodeType":"ElementaryTypeName","src":"26712:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2884,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2889,"src":"26735:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2883,"name":"uint256","nodeType":"ElementaryTypeName","src":"26735:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26627:130:45"},"returnParameters":{"id":2888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2887,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2889,"src":"26784:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2886,"name":"uint256","nodeType":"ElementaryTypeName","src":"26784:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26783:9:45"},"scope":3051,"src":"26614:179:45","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.SingleSwap","id":2902,"members":[{"constant":false,"id":2891,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2902,"src":"27377:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2890,"name":"bytes32","nodeType":"ElementaryTypeName","src":"27377:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2893,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":2902,"src":"27401:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$2875","typeString":"enum IVault.SwapKind"},"typeName":{"id":2892,"name":"SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":2875,"src":"27401:8:45","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$2875","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":2895,"mutability":"mutable","name":"assetIn","nodeType":"VariableDeclaration","scope":2902,"src":"27424:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"},"typeName":{"id":2894,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2487,"src":"27424:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"}},"visibility":"internal"},{"constant":false,"id":2897,"mutability":"mutable","name":"assetOut","nodeType":"VariableDeclaration","scope":2902,"src":"27448:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"},"typeName":{"id":2896,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2487,"src":"27448:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"}},"visibility":"internal"},{"constant":false,"id":2899,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2902,"src":"27473:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2898,"name":"uint256","nodeType":"ElementaryTypeName","src":"27473:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2901,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2902,"src":"27497:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2900,"name":"bytes","nodeType":"ElementaryTypeName","src":"27497:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SingleSwap","nodeType":"StructDefinition","scope":3051,"src":"27349:169:45","visibility":"public"},{"documentation":{"id":2903,"nodeType":"StructuredDocumentation","src":"27524:1980:45","text":" @dev Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either\n the amount of tokens sent to or received from the Pool, depending on the `kind` value.\n Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the\n Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at\n the same index in the `assets` array.\n Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a\n Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or\n `amountOut` depending on the swap kind.\n Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out\n of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal\n the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`.\n The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses,\n or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and\n out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to\n or unwrapped from WETH by the Vault.\n Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies\n the minimum or maximum amount of each token the vault is allowed to transfer.\n `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the\n equivalent `swap` call.\n Emits `Swap` events."},"functionSelector":"945bcec9","id":2924,"implemented":false,"kind":"function","modifiers":[],"name":"batchSwap","nodeType":"FunctionDefinition","parameters":{"id":2919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2905,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":2924,"src":"29537:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$2875","typeString":"enum IVault.SwapKind"},"typeName":{"id":2904,"name":"SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":2875,"src":"29537:8:45","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$2875","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":2908,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":2924,"src":"29560:28:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$2935_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":2906,"name":"BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":2935,"src":"29560:13:45","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$2935_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":2907,"nodeType":"ArrayTypeName","src":"29560:15:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$2935_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":2911,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":2924,"src":"29598:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":2909,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2487,"src":"29598:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"}},"id":2910,"nodeType":"ArrayTypeName","src":"29598:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":2913,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":2924,"src":"29630:27:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$2957_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":2912,"name":"FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":2957,"src":"29630:14:45","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$2957_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":2916,"mutability":"mutable","name":"limits","nodeType":"VariableDeclaration","scope":2924,"src":"29667:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":2914,"name":"int256","nodeType":"ElementaryTypeName","src":"29667:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2915,"nodeType":"ArrayTypeName","src":"29667:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"},{"constant":false,"id":2918,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2924,"src":"29699:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2917,"name":"uint256","nodeType":"ElementaryTypeName","src":"29699:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29527:194:45"},"returnParameters":{"id":2923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2922,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2924,"src":"29748:15:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":2920,"name":"int256","nodeType":"ElementaryTypeName","src":"29748:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2921,"nodeType":"ArrayTypeName","src":"29748:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"29747:17:45"},"scope":3051,"src":"29509:256:45","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.BatchSwapStep","id":2935,"members":[{"constant":false,"id":2926,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2935,"src":"30358:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2925,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30358:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2928,"mutability":"mutable","name":"assetInIndex","nodeType":"VariableDeclaration","scope":2935,"src":"30382:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2927,"name":"uint256","nodeType":"ElementaryTypeName","src":"30382:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2930,"mutability":"mutable","name":"assetOutIndex","nodeType":"VariableDeclaration","scope":2935,"src":"30412:21:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2929,"name":"uint256","nodeType":"ElementaryTypeName","src":"30412:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2932,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2935,"src":"30443:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2931,"name":"uint256","nodeType":"ElementaryTypeName","src":"30443:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2934,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2935,"src":"30467:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2933,"name":"bytes","nodeType":"ElementaryTypeName","src":"30467:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BatchSwapStep","nodeType":"StructDefinition","scope":3051,"src":"30327:161:45","visibility":"public"},{"anonymous":false,"documentation":{"id":2936,"nodeType":"StructuredDocumentation","src":"30494:92:45","text":" @dev Emitted for each individual swap performed by `swap` or `batchSwap`."},"id":2948,"name":"Swap","nodeType":"EventDefinition","parameters":{"id":2947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2938,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2948,"src":"30611:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2937,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30611:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2940,"indexed":true,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":2948,"src":"30643:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":2939,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"30643:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2942,"indexed":true,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":2948,"src":"30675:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":2941,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"30675:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2944,"indexed":false,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":2948,"src":"30708:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2943,"name":"uint256","nodeType":"ElementaryTypeName","src":"30708:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2946,"indexed":false,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":2948,"src":"30734:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2945,"name":"uint256","nodeType":"ElementaryTypeName","src":"30734:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30601:156:45"},"src":"30591:167:45"},{"canonicalName":"IVault.FundManagement","id":2957,"members":[{"constant":false,"id":2950,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2957,"src":"31721:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2949,"name":"address","nodeType":"ElementaryTypeName","src":"31721:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2952,"mutability":"mutable","name":"fromInternalBalance","nodeType":"VariableDeclaration","scope":2957,"src":"31745:24:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2951,"name":"bool","nodeType":"ElementaryTypeName","src":"31745:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2954,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2957,"src":"31779:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":2953,"name":"address","nodeType":"ElementaryTypeName","src":"31779:15:45","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":2956,"mutability":"mutable","name":"toInternalBalance","nodeType":"VariableDeclaration","scope":2957,"src":"31814:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2955,"name":"bool","nodeType":"ElementaryTypeName","src":"31814:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"FundManagement","nodeType":"StructDefinition","scope":3051,"src":"31689:154:45","visibility":"public"},{"documentation":{"id":2958,"nodeType":"StructuredDocumentation","src":"31849:1027:45","text":" @dev Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be\n simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result.\n Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH)\n the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it\n receives are the same that an equivalent `batchSwap` call would receive.\n Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct.\n This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens,\n approve them for the Vault, or even know a user's address.\n Note that this function is not 'view' (due to implementation details): the client code must explicitly execute\n eth_call instead of eth_sendTransaction."},"functionSelector":"f84d066e","id":2974,"implemented":false,"kind":"function","modifiers":[],"name":"queryBatchSwap","nodeType":"FunctionDefinition","parameters":{"id":2969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2960,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":2974,"src":"32914:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$2875","typeString":"enum IVault.SwapKind"},"typeName":{"id":2959,"name":"SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":2875,"src":"32914:8:45","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$2875","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":2963,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":2974,"src":"32937:28:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$2935_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":2961,"name":"BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":2935,"src":"32937:13:45","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$2935_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":2962,"nodeType":"ArrayTypeName","src":"32937:15:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$2935_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":2966,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":2974,"src":"32975:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":2964,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2487,"src":"32975:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2487","typeString":"contract IAsset"}},"id":2965,"nodeType":"ArrayTypeName","src":"32975:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2487_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":2968,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":2974,"src":"33007:27:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$2957_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":2967,"name":"FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":2957,"src":"33007:14:45","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$2957_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"32904:136:45"},"returnParameters":{"id":2973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2972,"mutability":"mutable","name":"assetDeltas","nodeType":"VariableDeclaration","scope":2974,"src":"33059:27:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":2970,"name":"int256","nodeType":"ElementaryTypeName","src":"33059:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2971,"nodeType":"ArrayTypeName","src":"33059:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"33058:29:45"},"scope":3051,"src":"32881:207:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2975,"nodeType":"StructuredDocumentation","src":"33114:604:45","text":" @dev Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it,\n and then reverting unless the tokens plus a proportional protocol fee have been returned.\n The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount\n for each token contract. `tokens` must be sorted in ascending order.\n The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the\n `receiveFlashLoan` call.\n Emits `FlashLoan` events."},"functionSelector":"5c38449e","id":2988,"implemented":false,"kind":"function","modifiers":[],"name":"flashLoan","nodeType":"FunctionDefinition","parameters":{"id":2986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2977,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2988,"src":"33751:29:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$2521","typeString":"contract IFlashLoanRecipient"},"typeName":{"id":2976,"name":"IFlashLoanRecipient","nodeType":"UserDefinedTypeName","referencedDeclaration":2521,"src":"33751:19:45","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$2521","typeString":"contract IFlashLoanRecipient"}},"visibility":"internal"},{"constant":false,"id":2980,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2988,"src":"33790:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2978,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"33790:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":2979,"nodeType":"ArrayTypeName","src":"33790:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2983,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":2988,"src":"33822:24:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2981,"name":"uint256","nodeType":"ElementaryTypeName","src":"33822:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2982,"nodeType":"ArrayTypeName","src":"33822:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2985,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2988,"src":"33856:21:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2984,"name":"bytes","nodeType":"ElementaryTypeName","src":"33856:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"33741:142:45"},"returnParameters":{"id":2987,"nodeType":"ParameterList","parameters":[],"src":"33892:0:45"},"scope":3051,"src":"33723:170:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2989,"nodeType":"StructuredDocumentation","src":"33899:88:45","text":" @dev Emitted for each individual flash loan performed by `flashLoan`."},"id":2999,"name":"FlashLoan","nodeType":"EventDefinition","parameters":{"id":2998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2991,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2999,"src":"34008:37:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$2521","typeString":"contract IFlashLoanRecipient"},"typeName":{"id":2990,"name":"IFlashLoanRecipient","nodeType":"UserDefinedTypeName","referencedDeclaration":2521,"src":"34008:19:45","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$2521","typeString":"contract IFlashLoanRecipient"}},"visibility":"internal"},{"constant":false,"id":2993,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2999,"src":"34047:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":2992,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"34047:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2995,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2999,"src":"34069:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2994,"name":"uint256","nodeType":"ElementaryTypeName","src":"34069:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2997,"indexed":false,"mutability":"mutable","name":"feeAmount","nodeType":"VariableDeclaration","scope":2999,"src":"34085:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2996,"name":"uint256","nodeType":"ElementaryTypeName","src":"34085:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34007:96:45"},"src":"33992:112:45"},{"documentation":{"id":3000,"nodeType":"StructuredDocumentation","src":"35100:434:45","text":" @dev Performs a set of Pool balance operations, which may be either withdrawals, deposits or updates.\n Pool Balance management features batching, which means a single contract call can be used to perform multiple\n operations of different kinds, with different Pools and tokens, at once.\n For each operation, the caller must be registered as the Asset Manager for `token` in `poolId`."},"functionSelector":"e6c46092","id":3006,"implemented":false,"kind":"function","modifiers":[],"name":"managePoolBalance","nodeType":"FunctionDefinition","parameters":{"id":3004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3003,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":3006,"src":"35566:26:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PoolBalanceOp_$3015_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.PoolBalanceOp[]"},"typeName":{"baseType":{"id":3001,"name":"PoolBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3015,"src":"35566:13:45","typeDescriptions":{"typeIdentifier":"t_struct$_PoolBalanceOp_$3015_storage_ptr","typeString":"struct IVault.PoolBalanceOp"}},"id":3002,"nodeType":"ArrayTypeName","src":"35566:15:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PoolBalanceOp_$3015_storage_$dyn_storage_ptr","typeString":"struct IVault.PoolBalanceOp[]"}},"visibility":"internal"}],"src":"35565:28:45"},"returnParameters":{"id":3005,"nodeType":"ParameterList","parameters":[],"src":"35602:0:45"},"scope":3051,"src":"35539:64:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.PoolBalanceOp","id":3015,"members":[{"constant":false,"id":3008,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3015,"src":"35640:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolBalanceOpKind_$3019","typeString":"enum IVault.PoolBalanceOpKind"},"typeName":{"id":3007,"name":"PoolBalanceOpKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3019,"src":"35640:17:45","typeDescriptions":{"typeIdentifier":"t_enum$_PoolBalanceOpKind_$3019","typeString":"enum IVault.PoolBalanceOpKind"}},"visibility":"internal"},{"constant":false,"id":3010,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3015,"src":"35672:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3009,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35672:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3012,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3015,"src":"35696:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":3011,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"35696:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3014,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3015,"src":"35718:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3013,"name":"uint256","nodeType":"ElementaryTypeName","src":"35718:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"PoolBalanceOp","nodeType":"StructDefinition","scope":3051,"src":"35609:130:45","visibility":"public"},{"canonicalName":"IVault.PoolBalanceOpKind","id":3019,"members":[{"id":3016,"name":"WITHDRAW","nodeType":"EnumValue","src":"36261:8:45"},{"id":3017,"name":"DEPOSIT","nodeType":"EnumValue","src":"36271:7:45"},{"id":3018,"name":"UPDATE","nodeType":"EnumValue","src":"36280:6:45"}],"name":"PoolBalanceOpKind","nodeType":"EnumDefinition","src":"36236:52:45"},{"anonymous":false,"documentation":{"id":3020,"nodeType":"StructuredDocumentation","src":"36294:109:45","text":" @dev Emitted when a Pool's token Asset Manager alters its balance via `managePoolBalance`."},"id":3032,"name":"PoolBalanceManaged","nodeType":"EventDefinition","parameters":{"id":3031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3022,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3032,"src":"36442:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3021,"name":"bytes32","nodeType":"ElementaryTypeName","src":"36442:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3024,"indexed":true,"mutability":"mutable","name":"assetManager","nodeType":"VariableDeclaration","scope":3032,"src":"36474:28:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3023,"name":"address","nodeType":"ElementaryTypeName","src":"36474:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3026,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3032,"src":"36512:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":3025,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"36512:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3028,"indexed":false,"mutability":"mutable","name":"cashDelta","nodeType":"VariableDeclaration","scope":3032,"src":"36542:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3027,"name":"int256","nodeType":"ElementaryTypeName","src":"36542:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3030,"indexed":false,"mutability":"mutable","name":"managedDelta","nodeType":"VariableDeclaration","scope":3032,"src":"36568:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3029,"name":"int256","nodeType":"ElementaryTypeName","src":"36568:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"36432:161:45"},"src":"36408:186:45"},{"documentation":{"id":3033,"nodeType":"StructuredDocumentation","src":"37471:64:45","text":" @dev Returns the current protocol fee module."},"functionSelector":"d2946c2b","id":3038,"implemented":false,"kind":"function","modifiers":[],"name":"getProtocolFeesCollector","nodeType":"FunctionDefinition","parameters":{"id":3034,"nodeType":"ParameterList","parameters":[],"src":"37573:2:45"},"returnParameters":{"id":3037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3036,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3038,"src":"37599:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2586","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":3035,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":2586,"src":"37599:22:45","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2586","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"src":"37598:24:45"},"scope":3051,"src":"37540:83:45","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3039,"nodeType":"StructuredDocumentation","src":"37629:635:45","text":" @dev Safety mechanism to pause most Vault operations in the event of an emergency - typically detection of an\n error in some part of the system.\n The Vault can only be paused during an initial time period, after which pausing is forever disabled.\n While the contract is paused, the following features are disabled:\n - depositing and transferring internal balance\n - transferring external balance (using the Vault's allowance)\n - swaps\n - joining Pools\n - Asset Manager interactions\n Internal Balance can still be withdrawn, and Pools exited."},"functionSelector":"16c38b3c","id":3044,"implemented":false,"kind":"function","modifiers":[],"name":"setPaused","nodeType":"FunctionDefinition","parameters":{"id":3042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3041,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":3044,"src":"38288:11:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3040,"name":"bool","nodeType":"ElementaryTypeName","src":"38288:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38287:13:45"},"returnParameters":{"id":3043,"nodeType":"ParameterList","parameters":[],"src":"38309:0:45"},"scope":3051,"src":"38269:41:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3045,"nodeType":"StructuredDocumentation","src":"38316:58:45","text":" @dev Returns the Vault's WETH instance."},"functionSelector":"ad5c4648","id":3050,"implemented":false,"kind":"function","modifiers":[],"name":"WETH","nodeType":"FunctionDefinition","parameters":{"id":3046,"nodeType":"ParameterList","parameters":[],"src":"38392:2:45"},"returnParameters":{"id":3049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3048,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3050,"src":"38418:5:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2355","typeString":"contract IWETH"},"typeName":{"id":3047,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2355,"src":"38418:5:45","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2355","typeString":"contract IWETH"}},"visibility":"internal"}],"src":"38417:7:45"},"scope":3051,"src":"38379:46:45","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3052,"src":"1329:37155:45"}],"src":"688:37797:45"},"id":45},"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","exportedSymbols":{"Authentication":[3128]},"id":3129,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3053,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:46"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3054,"nodeType":"ImportDirective","scope":3129,"sourceUnit":2249,"src":"713:90:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","id":3055,"nodeType":"ImportDirective","scope":3129,"sourceUnit":2260,"src":"804:91:46","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3057,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":2259,"src":"1327:15:46","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$2259","typeString":"contract IAuthentication"}},"id":3058,"nodeType":"InheritanceSpecifier","src":"1327:15:46"}],"contractDependencies":[2259],"contractKind":"contract","documentation":{"id":3056,"nodeType":"StructuredDocumentation","src":"897:393:46","text":" @dev Building block for performing access control on external functions.\n This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied\n to external functions to only make them callable by authorized accounts.\n Derived contracts must implement the `_canPerform` function, which holds the actual access control logic."},"fullyImplemented":false,"id":3128,"linearizedBaseContracts":[3128,2259],"name":"Authentication","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3060,"mutability":"immutable","name":"_actionIdDisambiguator","nodeType":"VariableDeclaration","scope":3128,"src":"1349:48:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3059,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1349:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":3070,"nodeType":"Block","src":"2039:63:46","statements":[{"expression":{"id":3068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3066,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3060,"src":"2049:22:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3067,"name":"actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"2074:21:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2049:46:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3069,"nodeType":"ExpressionStatement","src":"2049:46:46"}]},"documentation":{"id":3061,"nodeType":"StructuredDocumentation","src":"1404:587:46","text":" @dev The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in\n multi contract systems.\n There are two main uses for it:\n - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers\n unique. The contract's own address is a good option.\n - if the contract belongs to a family that shares action identifiers for the same functions, an identifier\n shared by the entire family (and no other contract) should be used instead."},"id":3071,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3063,"mutability":"mutable","name":"actionIdDisambiguator","nodeType":"VariableDeclaration","scope":3071,"src":"2008:29:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3062,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2008:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2007:31:46"},"returnParameters":{"id":3065,"nodeType":"ParameterList","parameters":[],"src":"2039:0:46"},"scope":3128,"src":"1996:106:46","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3078,"nodeType":"Block","src":"2266:49:46","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3074,"name":"_authenticateCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3101,"src":"2276:19:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2276:21:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3076,"nodeType":"ExpressionStatement","src":"2276:21:46"},{"id":3077,"nodeType":"PlaceholderStatement","src":"2307:1:46"}]},"documentation":{"id":3072,"nodeType":"StructuredDocumentation","src":"2108:129:46","text":" @dev Reverts unless the caller is allowed to call this function. Should only be applied to external functions."},"id":3079,"name":"authenticate","nodeType":"ModifierDefinition","parameters":{"id":3073,"nodeType":"ParameterList","parameters":[],"src":"2263:2:46"},"src":"2242:73:46","virtual":false,"visibility":"internal"},{"body":{"id":3100,"nodeType":"Block","src":"2465:136:46","statements":[{"assignments":[3084],"declarations":[{"constant":false,"id":3084,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":3100,"src":"2475:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3083,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2475:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3089,"initialValue":{"arguments":[{"expression":{"id":3086,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2506:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sig","nodeType":"MemberAccess","src":"2506:7:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":3085,"name":"getActionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3118,"src":"2494:11:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (bytes4) view returns (bytes32)"}},"id":3088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2494:20:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2475:39:46"},{"expression":{"arguments":[{"arguments":[{"id":3092,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3084,"src":"2545:8:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3093,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2555:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2555:10:46","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":3091,"name":"_canPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3127,"src":"2533:11:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":3095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2533:33:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3096,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2568:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SENDER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":2010,"src":"2568:25:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3090,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2524:8:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2524:70:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3099,"nodeType":"ExpressionStatement","src":"2524:70:46"}]},"documentation":{"id":3080,"nodeType":"StructuredDocumentation","src":"2321:94:46","text":" @dev Reverts unless the caller is allowed to call the entry point function."},"id":3101,"implemented":true,"kind":"function","modifiers":[],"name":"_authenticateCaller","nodeType":"FunctionDefinition","parameters":{"id":3081,"nodeType":"ParameterList","parameters":[],"src":"2448:2:46"},"returnParameters":{"id":3082,"nodeType":"ParameterList","parameters":[],"src":"2465:0:46"},"scope":3128,"src":"2420:181:46","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[2258],"body":{"id":3117,"nodeType":"Block","src":"2684:353:46","statements":[{"expression":{"arguments":[{"arguments":[{"id":3112,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3060,"src":"2996:22:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3113,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3103,"src":"3020:8:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":3110,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2979:3:46","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3111,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2979:16:46","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2979:50:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3109,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2969:9:46","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2969:61:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3108,"id":3116,"nodeType":"Return","src":"2962:68:46"}]},"functionSelector":"851c1bb3","id":3118,"implemented":true,"kind":"function","modifiers":[],"name":"getActionId","nodeType":"FunctionDefinition","overrides":{"id":3105,"nodeType":"OverrideSpecifier","overrides":[],"src":"2657:8:46"},"parameters":{"id":3104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3103,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":3118,"src":"2628:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3102,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2628:6:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2627:17:46"},"returnParameters":{"id":3108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3107,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3118,"src":"2675:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3106,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2675:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2674:9:46"},"scope":3128,"src":"2607:430:46","stateMutability":"view","virtual":false,"visibility":"public"},{"id":3127,"implemented":false,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","parameters":{"id":3123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3120,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":3127,"src":"3064:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3119,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3064:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3122,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3127,"src":"3082:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3121,"name":"address","nodeType":"ElementaryTypeName","src":"3082:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3063:32:46"},"returnParameters":{"id":3126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3125,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3127,"src":"3127:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3124,"name":"bool","nodeType":"ElementaryTypeName","src":"3127:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3126:6:46"},"scope":3128,"src":"3043:90:46","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":3129,"src":"1291:1844:46"}],"src":"688:2448:46"},"id":46},"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","exportedSymbols":{"EOASignaturesValidator":[3308]},"id":3309,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3130,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:47"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3131,"nodeType":"ImportDirective","scope":3309,"sourceUnit":2249,"src":"713:90:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","id":3132,"nodeType":"ImportDirective","scope":3309,"sourceUnit":2312,"src":"804:96:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","file":"../openzeppelin/EIP712.sol","id":3133,"nodeType":"ImportDirective","scope":3309,"sourceUnit":6022,"src":"902:36:47","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3135,"name":"ISignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":2311,"src":"1045:20:47","typeDescriptions":{"typeIdentifier":"t_contract$_ISignaturesValidator_$2311","typeString":"contract ISignaturesValidator"}},"id":3136,"nodeType":"InheritanceSpecifier","src":"1045:20:47"},{"baseName":{"id":3137,"name":"EIP712","nodeType":"UserDefinedTypeName","referencedDeclaration":6021,"src":"1067:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$6021","typeString":"contract EIP712"}},"id":3138,"nodeType":"InheritanceSpecifier","src":"1067:6:47"}],"contractDependencies":[2311,6021],"contractKind":"contract","documentation":{"id":3134,"nodeType":"StructuredDocumentation","src":"940:60:47","text":" @dev Utility for signing Solidity function calls."},"fullyImplemented":false,"id":3308,"linearizedBaseContracts":[3308,6021,2311],"name":"EOASignaturesValidator","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3142,"mutability":"mutable","name":"_nextNonce","nodeType":"VariableDeclaration","scope":3308,"src":"1130:47:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":3141,"keyType":{"id":3139,"name":"address","nodeType":"ElementaryTypeName","src":"1138:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1130:27:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":3140,"name":"uint256","nodeType":"ElementaryTypeName","src":"1149:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"baseFunctions":[2302],"body":{"id":3151,"nodeType":"Block","src":"1253:44:47","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3148,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5994,"src":"1270:18:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":3149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1270:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3147,"id":3150,"nodeType":"Return","src":"1263:27:47"}]},"functionSelector":"ed24911d","id":3152,"implemented":true,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","overrides":{"id":3144,"nodeType":"OverrideSpecifier","overrides":[],"src":"1226:8:47"},"parameters":{"id":3143,"nodeType":"ParameterList","parameters":[],"src":"1211:2:47"},"returnParameters":{"id":3147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3146,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3152,"src":"1244:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3145,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1244:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1243:9:47"},"scope":3308,"src":"1184:113:47","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2310],"body":{"id":3164,"nodeType":"Block","src":"1381:43:47","statements":[{"expression":{"baseExpression":{"id":3160,"name":"_nextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3142,"src":"1398:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3162,"indexExpression":{"id":3161,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3154,"src":"1409:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1398:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3159,"id":3163,"nodeType":"Return","src":"1391:26:47"}]},"functionSelector":"90193b7c","id":3165,"implemented":true,"kind":"function","modifiers":[],"name":"getNextNonce","nodeType":"FunctionDefinition","overrides":{"id":3156,"nodeType":"OverrideSpecifier","overrides":[],"src":"1354:8:47"},"parameters":{"id":3155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3154,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3165,"src":"1325:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3153,"name":"address","nodeType":"ElementaryTypeName","src":"1325:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1324:17:47"},"returnParameters":{"id":3159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3158,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3165,"src":"1372:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3157,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1371:9:47"},"scope":3308,"src":"1303:121:47","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":3188,"nodeType":"Block","src":"1588:107:47","statements":[{"expression":{"arguments":[{"id":3177,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3167,"src":"1627:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3178,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3169,"src":"1636:10:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3179,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3171,"src":"1648:9:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"arguments":[{"id":3182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1664:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3181,"name":"uint256","nodeType":"ElementaryTypeName","src":"1664:7:47","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3180,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1659:4:47","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1659:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1659:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3185,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3173,"src":"1678:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3176,"name":"_ensureValidSignature","nodeType":"Identifier","overloadedDeclarations":[3189,3233],"referencedDeclaration":3233,"src":"1605:21:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,bytes32,bytes memory,uint256,uint256)"}},"id":3186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1605:83:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":3175,"id":3187,"nodeType":"Return","src":"1598:90:47"}]},"id":3189,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureValidSignature","nodeType":"FunctionDefinition","parameters":{"id":3174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3167,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3189,"src":"1470:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3166,"name":"address","nodeType":"ElementaryTypeName","src":"1470:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3169,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":3189,"src":"1495:18:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3168,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1495:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3171,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3189,"src":"1523:22:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3170,"name":"bytes","nodeType":"ElementaryTypeName","src":"1523:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3173,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":3189,"src":"1555:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3172,"name":"uint256","nodeType":"ElementaryTypeName","src":"1555:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1460:118:47"},"returnParameters":{"id":3175,"nodeType":"ParameterList","parameters":[],"src":"1588:0:47"},"scope":3308,"src":"1430:265:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3232,"nodeType":"Block","src":"1885:1030:47","statements":[{"assignments":[3203],"declarations":[{"constant":false,"id":3203,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":3232,"src":"1895:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3202,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1895:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3207,"initialValue":{"arguments":[{"id":3205,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3193,"src":"1929:10:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3204,"name":"_hashTypedDataV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6013,"src":"1912:16:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":3206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1912:28:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1895:45:47"},{"expression":{"arguments":[{"arguments":[{"id":3210,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3191,"src":"1977:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3211,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3203,"src":"1986:6:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3212,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3195,"src":"1994:9:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3209,"name":"_isValidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"1959:17:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes32,bytes memory) view returns (bool)"}},"id":3213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1959:45:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3214,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3199,"src":"2006:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3208,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1950:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1950:66:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3216,"nodeType":"ExpressionStatement","src":"1950:66:47"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3218,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3197,"src":"2496:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":3219,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2508:5:47","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"2508:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2496:27:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3222,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2525:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"EXPIRED_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":2127,"src":"2525:24:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3217,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2487:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2487:63:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3225,"nodeType":"ExpressionStatement","src":"2487:63:47"},{"expression":{"id":3230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3226,"name":"_nextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3142,"src":"2884:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3228,"indexExpression":{"id":3227,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3191,"src":"2895:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2884:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2907:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2884:24:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3231,"nodeType":"ExpressionStatement","src":"2884:24:47"}]},"id":3233,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureValidSignature","nodeType":"FunctionDefinition","parameters":{"id":3200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3191,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3233,"src":"1741:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3190,"name":"address","nodeType":"ElementaryTypeName","src":"1741:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3193,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":3233,"src":"1766:18:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3192,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1766:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3195,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3233,"src":"1794:22:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3194,"name":"bytes","nodeType":"ElementaryTypeName","src":"1794:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3197,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3233,"src":"1826:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3196,"name":"uint256","nodeType":"ElementaryTypeName","src":"1826:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3199,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":3233,"src":"1852:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3198,"name":"uint256","nodeType":"ElementaryTypeName","src":"1852:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1731:144:47"},"returnParameters":{"id":3201,"nodeType":"ParameterList","parameters":[],"src":"1885:0:47"},"scope":3308,"src":"1701:1214:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3284,"nodeType":"Block","src":"3072:725:47","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3245,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3239,"src":"3091:9:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3091:16:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":3247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3111:2:47","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"3091:22:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3249,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"3115:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MALFORMED_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":2130,"src":"3115:26:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3244,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"3082:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3082:60:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3252,"nodeType":"ExpressionStatement","src":"3082:60:47"},{"assignments":[3254],"declarations":[{"constant":false,"id":3254,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":3284,"src":"3153:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3253,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3153:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3255,"nodeType":"VariableDeclarationStatement","src":"3153:9:47"},{"assignments":[3257],"declarations":[{"constant":false,"id":3257,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":3284,"src":"3172:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3256,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3172:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3258,"nodeType":"VariableDeclarationStatement","src":"3172:9:47"},{"assignments":[3260],"declarations":[{"constant":false,"id":3260,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":3284,"src":"3191:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3259,"name":"uint8","nodeType":"ElementaryTypeName","src":"3191:5:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3261,"nodeType":"VariableDeclarationStatement","src":"3191:7:47"},{"AST":{"nodeType":"YulBlock","src":"3387:155:47","statements":[{"nodeType":"YulAssignment","src":"3401:32:47","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3416:9:47"},{"kind":"number","nodeType":"YulLiteral","src":"3427:4:47","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3412:3:47"},"nodeType":"YulFunctionCall","src":"3412:20:47"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3406:5:47"},"nodeType":"YulFunctionCall","src":"3406:27:47"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"3401:1:47"}]},{"nodeType":"YulAssignment","src":"3446:32:47","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3461:9:47"},{"kind":"number","nodeType":"YulLiteral","src":"3472:4:47","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3457:3:47"},"nodeType":"YulFunctionCall","src":"3457:20:47"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3451:5:47"},"nodeType":"YulFunctionCall","src":"3451:27:47"},"variableNames":[{"name":"s","nodeType":"YulIdentifier","src":"3446:1:47"}]},{"nodeType":"YulAssignment","src":"3491:41:47","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3501:1:47","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3514:9:47"},{"kind":"number","nodeType":"YulLiteral","src":"3525:4:47","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3510:3:47"},"nodeType":"YulFunctionCall","src":"3510:20:47"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3504:5:47"},"nodeType":"YulFunctionCall","src":"3504:27:47"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"3496:4:47"},"nodeType":"YulFunctionCall","src":"3496:36:47"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"3491:1:47"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3254,"isOffset":false,"isSlot":false,"src":"3401:1:47","valueSize":1},{"declaration":3257,"isOffset":false,"isSlot":false,"src":"3446:1:47","valueSize":1},{"declaration":3239,"isOffset":false,"isSlot":false,"src":"3416:9:47","valueSize":1},{"declaration":3239,"isOffset":false,"isSlot":false,"src":"3461:9:47","valueSize":1},{"declaration":3239,"isOffset":false,"isSlot":false,"src":"3514:9:47","valueSize":1},{"declaration":3260,"isOffset":false,"isSlot":false,"src":"3491:1:47","valueSize":1}],"id":3262,"nodeType":"InlineAssembly","src":"3378:164:47"},{"assignments":[3264],"declarations":[{"constant":false,"id":3264,"mutability":"mutable","name":"recoveredAddress","nodeType":"VariableDeclaration","scope":3284,"src":"3552:24:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3263,"name":"address","nodeType":"ElementaryTypeName","src":"3552:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3271,"initialValue":{"arguments":[{"id":3266,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"3589:6:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3267,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"3597:1:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3268,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3254,"src":"3600:1:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3269,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3257,"src":"3603:1:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3265,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"3579:9:47","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":3270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3579:26:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3552:53:47"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3272,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"3728:16:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3756:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3748:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3273,"name":"address","nodeType":"ElementaryTypeName","src":"3748:7:47","typeDescriptions":{}}},"id":3276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3748:10:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3728:30:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3278,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"3762:16:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3279,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"3782:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3762:27:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3728:61:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3282,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3727:63:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3243,"id":3283,"nodeType":"Return","src":"3720:70:47"}]},"id":3285,"implemented":true,"kind":"function","modifiers":[],"name":"_isValidSignature","nodeType":"FunctionDefinition","parameters":{"id":3240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3235,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3285,"src":"2957:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3234,"name":"address","nodeType":"ElementaryTypeName","src":"2957:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3237,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":3285,"src":"2982:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2982:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3239,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3285,"src":"3006:22:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3238,"name":"bytes","nodeType":"ElementaryTypeName","src":"3006:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2947:87:47"},"returnParameters":{"id":3243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3242,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3285,"src":"3066:4:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3241,"name":"bool","nodeType":"ElementaryTypeName","src":"3066:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3065:6:47"},"scope":3308,"src":"2921:876:47","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3306,"nodeType":"Block","src":"3928:294:47","statements":[{"assignments":[3297],"declarations":[{"constant":false,"id":3297,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3306,"src":"3938:22:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3296,"name":"bytes","nodeType":"ElementaryTypeName","src":"3938:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3302,"initialValue":{"arguments":[{"hexValue":"3635","id":3300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3973:2:47","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"}],"id":3299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3963:9:47","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3298,"name":"bytes","nodeType":"ElementaryTypeName","src":"3967:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3963:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3938:38:47"},{"AST":{"nodeType":"YulBlock","src":"4051:138:47","statements":[{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4076:9:47"},{"kind":"number","nodeType":"YulLiteral","src":"4087:2:47","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4072:3:47"},"nodeType":"YulFunctionCall","src":"4072:18:47"},{"name":"r","nodeType":"YulIdentifier","src":"4092:1:47"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4065:6:47"},"nodeType":"YulFunctionCall","src":"4065:29:47"},"nodeType":"YulExpressionStatement","src":"4065:29:47"},{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4118:9:47"},{"kind":"number","nodeType":"YulLiteral","src":"4129:2:47","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4114:3:47"},"nodeType":"YulFunctionCall","src":"4114:18:47"},{"name":"s","nodeType":"YulIdentifier","src":"4134:1:47"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4107:6:47"},"nodeType":"YulFunctionCall","src":"4107:29:47"},"nodeType":"YulExpressionStatement","src":"4107:29:47"},{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4161:9:47"},{"kind":"number","nodeType":"YulLiteral","src":"4172:2:47","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4157:3:47"},"nodeType":"YulFunctionCall","src":"4157:18:47"},{"name":"v","nodeType":"YulIdentifier","src":"4177:1:47"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"4149:7:47"},"nodeType":"YulFunctionCall","src":"4149:30:47"},"nodeType":"YulExpressionStatement","src":"4149:30:47"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3289,"isOffset":false,"isSlot":false,"src":"4092:1:47","valueSize":1},{"declaration":3291,"isOffset":false,"isSlot":false,"src":"4134:1:47","valueSize":1},{"declaration":3297,"isOffset":false,"isSlot":false,"src":"4076:9:47","valueSize":1},{"declaration":3297,"isOffset":false,"isSlot":false,"src":"4118:9:47","valueSize":1},{"declaration":3297,"isOffset":false,"isSlot":false,"src":"4161:9:47","valueSize":1},{"declaration":3287,"isOffset":false,"isSlot":false,"src":"4177:1:47","valueSize":1}],"id":3303,"nodeType":"InlineAssembly","src":"4042:147:47"},{"expression":{"id":3304,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3297,"src":"4206:9:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3295,"id":3305,"nodeType":"Return","src":"4199:16:47"}]},"id":3307,"implemented":true,"kind":"function","modifiers":[],"name":"_toArraySignature","nodeType":"FunctionDefinition","parameters":{"id":3292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3287,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":3307,"src":"3839:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3286,"name":"uint8","nodeType":"ElementaryTypeName","src":"3839:5:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3289,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":3307,"src":"3856:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3288,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3856:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3291,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":3307,"src":"3875:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3290,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3875:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3829:61:47"},"returnParameters":{"id":3295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3294,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3307,"src":"3914:12:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3293,"name":"bytes","nodeType":"ElementaryTypeName","src":"3914:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3913:14:47"},"scope":3308,"src":"3803:419:47","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3309,"src":"1001:3223:47"}],"src":"688:3537:47"},"id":47},"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","exportedSymbols":{"InputHelpers":[3420]},"id":3421,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3310,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:48"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":3311,"nodeType":"ImportDirective","scope":3421,"sourceUnit":2448,"src":"713:87:48","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3312,"nodeType":"ImportDirective","scope":3421,"sourceUnit":2249,"src":"801:90:48","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":3420,"linearizedBaseContracts":[3420],"name":"InputHelpers","nodeType":"ContractDefinition","nodes":[{"body":{"id":3327,"nodeType":"Block","src":"988:63:48","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3320,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3314,"src":"1007:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3321,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3316,"src":"1012:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1007:6:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3323,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1015:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INPUT_LENGTH_MISMATCH","nodeType":"MemberAccess","referencedDeclaration":1785,"src":"1015:28:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3319,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"998:8:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"998:46:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3326,"nodeType":"ExpressionStatement","src":"998:46:48"}]},"id":3328,"implemented":true,"kind":"function","modifiers":[],"name":"ensureInputLengthMatch","nodeType":"FunctionDefinition","parameters":{"id":3317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3314,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3328,"src":"952:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3313,"name":"uint256","nodeType":"ElementaryTypeName","src":"952:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3316,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3328,"src":"963:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3315,"name":"uint256","nodeType":"ElementaryTypeName","src":"963:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"951:22:48"},"returnParameters":{"id":3318,"nodeType":"ParameterList","parameters":[],"src":"988:0:48"},"scope":3420,"src":"920:131:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3349,"nodeType":"Block","src":"1166:73:48","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3338,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3330,"src":"1185:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3332,"src":"1190:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1185:6:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3341,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3332,"src":"1195:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3342,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3334,"src":"1200:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1195:6:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1185:16:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3345,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1203:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INPUT_LENGTH_MISMATCH","nodeType":"MemberAccess","referencedDeclaration":1785,"src":"1203:28:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3337,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1176:8:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1176:56:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3348,"nodeType":"ExpressionStatement","src":"1176:56:48"}]},"id":3350,"implemented":true,"kind":"function","modifiers":[],"name":"ensureInputLengthMatch","nodeType":"FunctionDefinition","parameters":{"id":3335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3330,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3350,"src":"1098:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3329,"name":"uint256","nodeType":"ElementaryTypeName","src":"1098:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3332,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3350,"src":"1117:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3331,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3334,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":3350,"src":"1136:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3333,"name":"uint256","nodeType":"ElementaryTypeName","src":"1136:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1088:63:48"},"returnParameters":{"id":3336,"nodeType":"ParameterList","parameters":[],"src":"1166:0:48"},"scope":3420,"src":"1057:182:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3367,"nodeType":"Block","src":"1311:208:48","statements":[{"assignments":[3360],"declarations":[{"constant":false,"id":3360,"mutability":"mutable","name":"addressArray","nodeType":"VariableDeclaration","scope":3367,"src":"1321:29:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3358,"name":"address","nodeType":"ElementaryTypeName","src":"1321:7:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3359,"nodeType":"ArrayTypeName","src":"1321:9:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":3361,"nodeType":"VariableDeclarationStatement","src":"1321:29:48"},{"AST":{"nodeType":"YulBlock","src":"1425:45:48","statements":[{"nodeType":"YulAssignment","src":"1439:21:48","value":{"name":"array","nodeType":"YulIdentifier","src":"1455:5:48"},"variableNames":[{"name":"addressArray","nodeType":"YulIdentifier","src":"1439:12:48"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3360,"isOffset":false,"isSlot":false,"src":"1439:12:48","valueSize":1},{"declaration":3353,"isOffset":false,"isSlot":false,"src":"1455:5:48","valueSize":1}],"id":3362,"nodeType":"InlineAssembly","src":"1416:54:48"},{"expression":{"arguments":[{"id":3364,"name":"addressArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3360,"src":"1499:12:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":3363,"name":"ensureArrayIsSorted","nodeType":"Identifier","overloadedDeclarations":[3368,3419],"referencedDeclaration":3419,"src":"1479:19:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory) pure"}},"id":3365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1479:33:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3366,"nodeType":"ExpressionStatement","src":"1479:33:48"}]},"id":3368,"implemented":true,"kind":"function","modifiers":[],"name":"ensureArrayIsSorted","nodeType":"FunctionDefinition","parameters":{"id":3354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3353,"mutability":"mutable","name":"array","nodeType":"VariableDeclaration","scope":3368,"src":"1274:21:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3351,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1274:6:48","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":3352,"nodeType":"ArrayTypeName","src":"1274:8:48","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1273:23:48"},"returnParameters":{"id":3355,"nodeType":"ParameterList","parameters":[],"src":"1311:0:48"},"scope":3420,"src":"1245:274:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3418,"nodeType":"Block","src":"1592:307:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3374,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"1606:5:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1606:12:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":3376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1621:1:48","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1606:16:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3380,"nodeType":"IfStatement","src":"1602:53:48","trueBody":{"id":3379,"nodeType":"Block","src":"1624:31:48","statements":[{"functionReturnParameters":3373,"id":3378,"nodeType":"Return","src":"1638:7:48"}]}},{"assignments":[3382],"declarations":[{"constant":false,"id":3382,"mutability":"mutable","name":"previous","nodeType":"VariableDeclaration","scope":3418,"src":"1665:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3381,"name":"address","nodeType":"ElementaryTypeName","src":"1665:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3386,"initialValue":{"baseExpression":{"id":3383,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"1684:5:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3385,"indexExpression":{"hexValue":"30","id":3384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1690:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1684:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1665:27:48"},{"body":{"id":3416,"nodeType":"Block","src":"1745:148:48","statements":[{"assignments":[3399],"declarations":[{"constant":false,"id":3399,"mutability":"mutable","name":"current","nodeType":"VariableDeclaration","scope":3416,"src":"1759:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3398,"name":"address","nodeType":"ElementaryTypeName","src":"1759:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3403,"initialValue":{"baseExpression":{"id":3400,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"1777:5:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3402,"indexExpression":{"id":3401,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3388,"src":"1783:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1777:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1759:26:48"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3405,"name":"previous","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"1808:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3406,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"1819:7:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1808:18:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3408,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1828:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNSORTED_ARRAY","nodeType":"MemberAccess","referencedDeclaration":1779,"src":"1828:21:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3404,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1799:8:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1799:51:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3411,"nodeType":"ExpressionStatement","src":"1799:51:48"},{"expression":{"id":3414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3412,"name":"previous","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"1864:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3413,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"1875:7:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1864:18:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3415,"nodeType":"ExpressionStatement","src":"1864:18:48"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3391,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3388,"src":"1722:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3392,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"1726:5:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1726:12:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1722:16:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3417,"initializationExpression":{"assignments":[3388],"declarations":[{"constant":false,"id":3388,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":3417,"src":"1707:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3387,"name":"uint256","nodeType":"ElementaryTypeName","src":"1707:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3390,"initialValue":{"hexValue":"31","id":3389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1719:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"1707:13:48"},"loopExpression":{"expression":{"id":3396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1740:3:48","subExpression":{"id":3395,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3388,"src":"1742:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3397,"nodeType":"ExpressionStatement","src":"1740:3:48"},"nodeType":"ForStatement","src":"1702:191:48"}]},"id":3419,"implemented":true,"kind":"function","modifiers":[],"name":"ensureArrayIsSorted","nodeType":"FunctionDefinition","parameters":{"id":3372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3371,"mutability":"mutable","name":"array","nodeType":"VariableDeclaration","scope":3419,"src":"1554:22:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3369,"name":"address","nodeType":"ElementaryTypeName","src":"1554:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3370,"nodeType":"ArrayTypeName","src":"1554:9:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1553:24:48"},"returnParameters":{"id":3373,"nodeType":"ParameterList","parameters":[],"src":"1592:0:48"},"scope":3420,"src":"1525:374:48","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3421,"src":"893:1008:48"}],"src":"688:1214:48"},"id":48},"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol","exportedSymbols":{"OptionalOnlyCaller":[3553]},"id":3554,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3422,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:49"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol","id":3423,"nodeType":"ImportDirective","scope":3554,"sourceUnit":2294,"src":"713:95:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3424,"nodeType":"ImportDirective","scope":3554,"sourceUnit":2249,"src":"809:90:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol","file":"./SignaturesValidator.sol","id":3425,"nodeType":"ImportDirective","scope":3554,"sourceUnit":3604,"src":"901:35:49","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3426,"name":"IOptionalOnlyCaller","nodeType":"UserDefinedTypeName","referencedDeclaration":2293,"src":"978:19:49","typeDescriptions":{"typeIdentifier":"t_contract$_IOptionalOnlyCaller_$2293","typeString":"contract IOptionalOnlyCaller"}},"id":3427,"nodeType":"InheritanceSpecifier","src":"978:19:49"},{"baseName":{"id":3428,"name":"SignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":3603,"src":"999:19:49","typeDescriptions":{"typeIdentifier":"t_contract$_SignaturesValidator_$3603","typeString":"contract SignaturesValidator"}},"id":3429,"nodeType":"InheritanceSpecifier","src":"999:19:49"}],"contractDependencies":[2293,2311,3308,3603,6021],"contractKind":"contract","fullyImplemented":false,"id":3553,"linearizedBaseContracts":[3553,3603,3308,6021,2311,2293],"name":"OptionalOnlyCaller","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3433,"mutability":"mutable","name":"_isOnlyCallerEnabled","nodeType":"VariableDeclaration","scope":3553,"src":"1025:53:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":3432,"keyType":{"id":3430,"name":"address","nodeType":"ElementaryTypeName","src":"1033:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1025:24:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":3431,"name":"bool","nodeType":"ElementaryTypeName","src":"1044:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"constant":true,"id":3438,"mutability":"constant","name":"_SET_ONLY_CALLER_CHECK_TYPEHASH","nodeType":"VariableDeclaration","scope":3553,"src":"1085:145:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3434,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1085:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5365744f6e6c7943616c6c6572436865636b286164647265737320757365722c626f6f6c20656e61626c65642c75696e74323536206e6f6e636529","id":3436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1163:61:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_bd291ffccec065968fe20c5f8debdad73ab50837733f357eeae8814178015a90","typeString":"literal_string \"SetOnlyCallerCheck(address user,bool enabled,uint256 nonce)\""},"value":"SetOnlyCallerCheck(address user,bool enabled,uint256 nonce)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_bd291ffccec065968fe20c5f8debdad73ab50837733f357eeae8814178015a90","typeString":"literal_string \"SetOnlyCallerCheck(address user,bool enabled,uint256 nonce)\""}],"id":3435,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1144:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1144:86:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":3448,"nodeType":"Block","src":"1498:47:49","statements":[{"expression":{"arguments":[{"id":3444,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3441,"src":"1522:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3443,"name":"_verifyCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"1508:13:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":3445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1508:19:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3446,"nodeType":"ExpressionStatement","src":"1508:19:49"},{"id":3447,"nodeType":"PlaceholderStatement","src":"1537:1:49"}]},"documentation":{"id":3439,"nodeType":"StructuredDocumentation","src":"1237:214:49","text":" @dev Reverts if the verification mechanism is enabled and the given address is not the caller.\n @param user - Address to validate as the only allowed caller, if the verification is enabled."},"id":3449,"name":"optionalOnlyCaller","nodeType":"ModifierDefinition","parameters":{"id":3442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3441,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3449,"src":"1484:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3440,"name":"address","nodeType":"ElementaryTypeName","src":"1484:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1483:14:49"},"src":"1456:89:49","virtual":false,"visibility":"internal"},{"baseFunctions":[2275],"body":{"id":3461,"nodeType":"Block","src":"1611:57:49","statements":[{"expression":{"arguments":[{"expression":{"id":3456,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1641:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1641:10:49","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":3458,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3451,"src":"1653:7:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3455,"name":"_setOnlyCallerCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3519,"src":"1621:19:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":3459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1621:40:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3460,"nodeType":"ExpressionStatement","src":"1621:40:49"}]},"functionSelector":"e811f44b","id":3462,"implemented":true,"kind":"function","modifiers":[],"name":"setOnlyCallerCheck","nodeType":"FunctionDefinition","overrides":{"id":3453,"nodeType":"OverrideSpecifier","overrides":[],"src":"1602:8:49"},"parameters":{"id":3452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3451,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":3462,"src":"1579:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3450,"name":"bool","nodeType":"ElementaryTypeName","src":"1579:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1578:14:49"},"returnParameters":{"id":3454,"nodeType":"ParameterList","parameters":[],"src":"1611:0:49"},"scope":3553,"src":"1551:117:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2284],"body":{"id":3499,"nodeType":"Block","src":"1815:257:49","statements":[{"assignments":[3473],"declarations":[{"constant":false,"id":3473,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":3499,"src":"1825:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3472,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1825:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3485,"initialValue":{"arguments":[{"arguments":[{"id":3477,"name":"_SET_ONLY_CALLER_CHECK_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3438,"src":"1867:31:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3478,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"1900:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3479,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3466,"src":"1906:7:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":3481,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"1928:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3480,"name":"getNextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"1915:12:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1915:18:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3475,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1856:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1856:10:49","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1856:78:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3474,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1846:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1846:89:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1825:110:49"},{"expression":{"arguments":[{"id":3487,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"1967:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3488,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3473,"src":"1973:10:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3489,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3468,"src":"1985:9:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":3490,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1996:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":2154,"src":"1996:24:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3486,"name":"_ensureValidSignature","nodeType":"Identifier","overloadedDeclarations":[3189,3233],"referencedDeclaration":3189,"src":"1945:21:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes32,bytes memory,uint256)"}},"id":3492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1945:76:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3493,"nodeType":"ExpressionStatement","src":"1945:76:49"},{"expression":{"arguments":[{"id":3495,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"2051:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3496,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3466,"src":"2057:7:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3494,"name":"_setOnlyCallerCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3519,"src":"2031:19:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":3497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2031:34:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3498,"nodeType":"ExpressionStatement","src":"2031:34:49"}]},"functionSelector":"fcaa54ee","id":3500,"implemented":true,"kind":"function","modifiers":[],"name":"setOnlyCallerCheckWithSignature","nodeType":"FunctionDefinition","overrides":{"id":3470,"nodeType":"OverrideSpecifier","overrides":[],"src":"1806:8:49"},"parameters":{"id":3469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3464,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3500,"src":"1724:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3463,"name":"address","nodeType":"ElementaryTypeName","src":"1724:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3466,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":3500,"src":"1746:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3465,"name":"bool","nodeType":"ElementaryTypeName","src":"1746:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3468,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3500,"src":"1768:22:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3467,"name":"bytes","nodeType":"ElementaryTypeName","src":"1768:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1714:82:49"},"returnParameters":{"id":3471,"nodeType":"ParameterList","parameters":[],"src":"1815:0:49"},"scope":3553,"src":"1674:398:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3518,"nodeType":"Block","src":"2143:98:49","statements":[{"expression":{"id":3511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3507,"name":"_isOnlyCallerEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3433,"src":"2153:20:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3509,"indexExpression":{"id":3508,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3502,"src":"2174:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2153:26:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3510,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"2182:7:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2153:36:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3512,"nodeType":"ExpressionStatement","src":"2153:36:49"},{"eventCall":{"arguments":[{"id":3514,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3502,"src":"2220:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3515,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"2226:7:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3513,"name":"OnlyCallerOptIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2269,"src":"2204:15:49","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":3516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2204:30:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3517,"nodeType":"EmitStatement","src":"2199:35:49"}]},"id":3519,"implemented":true,"kind":"function","modifiers":[],"name":"_setOnlyCallerCheck","nodeType":"FunctionDefinition","parameters":{"id":3505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3502,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3519,"src":"2107:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3501,"name":"address","nodeType":"ElementaryTypeName","src":"2107:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3504,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":3519,"src":"2121:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3503,"name":"bool","nodeType":"ElementaryTypeName","src":"2121:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2106:28:49"},"returnParameters":{"id":3506,"nodeType":"ParameterList","parameters":[],"src":"2143:0:49"},"scope":3553,"src":"2078:163:49","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[2292],"body":{"id":3531,"nodeType":"Block","src":"2328:50:49","statements":[{"expression":{"baseExpression":{"id":3527,"name":"_isOnlyCallerEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3433,"src":"2345:20:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3529,"indexExpression":{"id":3528,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"2366:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2345:26:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3526,"id":3530,"nodeType":"Return","src":"2338:33:49"}]},"functionSelector":"a1648aa5","id":3532,"implemented":true,"kind":"function","modifiers":[],"name":"isOnlyCallerEnabled","nodeType":"FunctionDefinition","overrides":{"id":3523,"nodeType":"OverrideSpecifier","overrides":[],"src":"2304:8:49"},"parameters":{"id":3522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3521,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3532,"src":"2276:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3520,"name":"address","nodeType":"ElementaryTypeName","src":"2276:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2275:14:49"},"returnParameters":{"id":3526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3525,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3532,"src":"2322:4:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3524,"name":"bool","nodeType":"ElementaryTypeName","src":"2322:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2321:6:49"},"scope":3553,"src":"2247:131:49","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3551,"nodeType":"Block","src":"2434:128:49","statements":[{"condition":{"baseExpression":{"id":3537,"name":"_isOnlyCallerEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3433,"src":"2448:20:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3539,"indexExpression":{"id":3538,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"2469:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2448:26:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3550,"nodeType":"IfStatement","src":"2444:112:49","trueBody":{"id":3549,"nodeType":"Block","src":"2476:80:49","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3541,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2499:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2499:10:49","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3543,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"2513:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2499:18:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3545,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2519:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SENDER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":2010,"src":"2519:25:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3540,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2490:8:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2490:55:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3548,"nodeType":"ExpressionStatement","src":"2490:55:49"}]}}]},"id":3552,"implemented":true,"kind":"function","modifiers":[],"name":"_verifyCaller","nodeType":"FunctionDefinition","parameters":{"id":3535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3534,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3552,"src":"2407:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3533,"name":"address","nodeType":"ElementaryTypeName","src":"2407:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2406:14:49"},"returnParameters":{"id":3536,"nodeType":"ParameterList","parameters":[],"src":"2434:0:49"},"scope":3553,"src":"2384:178:49","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":3554,"src":"938:1626:49"}],"src":"688:1877:49"},"id":49},"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol","exportedSymbols":{"SignaturesValidator":[3603]},"id":3604,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3555,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:50"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol","id":3556,"nodeType":"ImportDirective","scope":3604,"sourceUnit":2370,"src":"713:89:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","file":"./EOASignaturesValidator.sol","id":3557,"nodeType":"ImportDirective","scope":3604,"sourceUnit":3309,"src":"804:38:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"../openzeppelin/Address.sol","id":3558,"nodeType":"ImportDirective","scope":3604,"sourceUnit":5851,"src":"843:37:50","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3560,"name":"EOASignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":3308,"src":"984:22:50","typeDescriptions":{"typeIdentifier":"t_contract$_EOASignaturesValidator_$3308","typeString":"contract EOASignaturesValidator"}},"id":3561,"nodeType":"InheritanceSpecifier","src":"984:22:50"}],"contractDependencies":[2311,3308,6021],"contractKind":"contract","documentation":{"id":3559,"nodeType":"StructuredDocumentation","src":"882:60:50","text":" @dev Utility for signing Solidity function calls."},"fullyImplemented":false,"id":3603,"linearizedBaseContracts":[3603,3308,6021,2311],"name":"SignaturesValidator","nodeType":"ContractDefinition","nodes":[{"id":3564,"libraryName":{"id":3562,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":5850,"src":"1019:7:50","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$5850","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1013:26:50","typeName":{"id":3563,"name":"address","nodeType":"ElementaryTypeName","src":"1031:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"baseFunctions":[3285],"body":{"id":3601,"nodeType":"Block","src":"1205:254:50","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3576,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"1219:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":5704,"src":"1219:18:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":3578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1219:20:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3599,"nodeType":"Block","src":"1370:83:50","statements":[{"expression":{"arguments":[{"id":3594,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"1415:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3595,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"1424:6:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3596,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3570,"src":"1432:9:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3592,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1391:5:50","typeDescriptions":{"typeIdentifier":"t_super$_SignaturesValidator_$3603","typeString":"contract super SignaturesValidator"}},"id":3593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_isValidSignature","nodeType":"MemberAccess","referencedDeclaration":3285,"src":"1391:23:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes32,bytes memory) view returns (bool)"}},"id":3597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1391:51:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3575,"id":3598,"nodeType":"Return","src":"1384:58:50"}]},"id":3600,"nodeType":"IfStatement","src":"1215:238:50","trueBody":{"id":3591,"nodeType":"Block","src":"1241:123:50","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3583,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"1297:6:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3584,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3570,"src":"1305:9:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":3580,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"1271:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3579,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2369,"src":"1262:8:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$2369_$","typeString":"type(contract IERC1271)"}},"id":3581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1262:17:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1271_$2369","typeString":"contract IERC1271"}},"id":3582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":2368,"src":"1262:34:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (bytes32,bytes memory) view external returns (bytes4)"}},"id":3585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1262:53:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":3586,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2369,"src":"1319:8:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$2369_$","typeString":"type(contract IERC1271)"}},"id":3587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":2368,"src":"1319:25:50","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function IERC1271.isValidSignature(bytes32,bytes memory) view returns (bytes4)"}},"id":3588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1319:34:50","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1262:91:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3575,"id":3590,"nodeType":"Return","src":"1255:98:50"}]}}]},"id":3602,"implemented":true,"kind":"function","modifiers":[],"name":"_isValidSignature","nodeType":"FunctionDefinition","overrides":{"id":3572,"nodeType":"OverrideSpecifier","overrides":[],"src":"1181:8:50"},"parameters":{"id":3571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3566,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3602,"src":"1081:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3565,"name":"address","nodeType":"ElementaryTypeName","src":"1081:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3568,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":3602,"src":"1106:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3567,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1106:7:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3570,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3602,"src":"1130:22:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3569,"name":"bytes","nodeType":"ElementaryTypeName","src":"1130:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1071:87:50"},"returnParameters":{"id":3575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3574,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3602,"src":"1199:4:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3573,"name":"bool","nodeType":"ElementaryTypeName","src":"1199:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1198:6:50"},"scope":3603,"src":"1045:414:50","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":3604,"src":"943:518:50"}],"src":"688:774:50"},"id":50},"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","exportedSymbols":{"SingletonAuthentication":[3697]},"id":3698,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3605,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:51"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":3606,"nodeType":"ImportDirective","scope":3698,"sourceUnit":3052,"src":"713:65:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","file":"./Authentication.sol","id":3607,"nodeType":"ImportDirective","scope":3698,"sourceUnit":3129,"src":"780:30:51","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3608,"name":"Authentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3128,"src":"857:14:51","typeDescriptions":{"typeIdentifier":"t_contract$_Authentication_$3128","typeString":"contract Authentication"}},"id":3609,"nodeType":"InheritanceSpecifier","src":"857:14:51"}],"contractDependencies":[2259,3128],"contractKind":"contract","fullyImplemented":true,"id":3697,"linearizedBaseContracts":[3697,3128,2259],"name":"SingletonAuthentication","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3611,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":3697,"src":"878:31:51","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":3610,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"878:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"private"},{"body":{"id":3632,"nodeType":"Block","src":"1063:31:51","statements":[{"expression":{"id":3630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3628,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3611,"src":"1073:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3629,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3613,"src":"1082:5:51","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"src":"1073:14:51","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"id":3631,"nodeType":"ExpressionStatement","src":"1073:14:51"}]},"id":3633,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":3622,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1054:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}],"id":3621,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1046:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3620,"name":"address","nodeType":"ElementaryTypeName","src":"1046:7:51","typeDescriptions":{}}},"id":3623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1046:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1038:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3618,"name":"uint256","nodeType":"ElementaryTypeName","src":"1038:7:51","typeDescriptions":{}}},"id":3624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1038:22:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1030:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3616,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1030:7:51","typeDescriptions":{}}},"id":3625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1030:31:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3626,"modifierName":{"id":3615,"name":"Authentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3128,"src":"1015:14:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Authentication_$3128_$","typeString":"type(contract Authentication)"}},"nodeType":"ModifierInvocation","src":"1015:47:51"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3613,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":3633,"src":"1001:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":3612,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1001:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1000:14:51"},"returnParameters":{"id":3627,"nodeType":"ParameterList","parameters":[],"src":"1063:0:51"},"scope":3697,"src":"989:105:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3641,"nodeType":"Block","src":"1207:30:51","statements":[{"expression":{"id":3639,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3611,"src":"1224:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"functionReturnParameters":3638,"id":3640,"nodeType":"Return","src":"1217:13:51"}]},"documentation":{"id":3634,"nodeType":"StructuredDocumentation","src":"1100:53:51","text":" @notice Returns the Balancer Vault"},"functionSelector":"8d928af8","id":3642,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":3635,"nodeType":"ParameterList","parameters":[],"src":"1175:2:51"},"returnParameters":{"id":3638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3637,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3642,"src":"1199:6:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":3636,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1199:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1198:8:51"},"scope":3697,"src":"1158:79:51","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":3653,"nodeType":"Block","src":"1356:50:51","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3648,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3642,"src":"1373:8:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view returns (contract IVault)"}},"id":3649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1373:10:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"id":3650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAuthorizer","nodeType":"MemberAccess","referencedDeclaration":2611,"src":"1373:24:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizer_$2502_$","typeString":"function () view external returns (contract IAuthorizer)"}},"id":3651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1373:26:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"functionReturnParameters":3647,"id":3652,"nodeType":"Return","src":"1366:33:51"}]},"documentation":{"id":3643,"nodeType":"StructuredDocumentation","src":"1243:49:51","text":" @notice Returns the Authorizer"},"functionSelector":"aaabadc5","id":3654,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":3644,"nodeType":"ParameterList","parameters":[],"src":"1319:2:51"},"returnParameters":{"id":3647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3646,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3654,"src":"1343:11:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":3645,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"1343:11:51","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1342:13:51"},"scope":3697,"src":"1297:109:51","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[3127],"body":{"id":3675,"nodeType":"Block","src":"1506:84:51","statements":[{"expression":{"arguments":[{"id":3667,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3656,"src":"1550:8:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3668,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3658,"src":"1560:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3671,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1577:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}],"id":3670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1569:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3669,"name":"address","nodeType":"ElementaryTypeName","src":"1569:7:51","typeDescriptions":{}}},"id":3672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1569:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3664,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"1523:13:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$2502_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":3665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1523:15:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"id":3666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":2501,"src":"1523:26:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":3673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1523:60:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3663,"id":3674,"nodeType":"Return","src":"1516:67:51"}]},"id":3676,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","overrides":{"id":3660,"nodeType":"OverrideSpecifier","overrides":[],"src":"1482:8:51"},"parameters":{"id":3659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3656,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":3676,"src":"1433:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3655,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1433:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3658,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3676,"src":"1451:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3657,"name":"address","nodeType":"ElementaryTypeName","src":"1451:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1432:35:51"},"returnParameters":{"id":3663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3662,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3676,"src":"1500:4:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3661,"name":"bool","nodeType":"ElementaryTypeName","src":"1500:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1499:6:51"},"scope":3697,"src":"1412:178:51","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3695,"nodeType":"Block","src":"1726:76:51","statements":[{"expression":{"arguments":[{"id":3690,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3678,"src":"1770:8:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3691,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3680,"src":"1780:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3692,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3682,"src":"1789:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3687,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"1743:13:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$2502_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":3688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1743:15:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"id":3689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":2501,"src":"1743:26:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":3693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1743:52:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3686,"id":3694,"nodeType":"Return","src":"1736:59:51"}]},"id":3696,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","parameters":{"id":3683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3678,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":3696,"src":"1626:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3677,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1626:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3680,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3696,"src":"1652:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3679,"name":"address","nodeType":"ElementaryTypeName","src":"1652:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3682,"mutability":"mutable","name":"where","nodeType":"VariableDeclaration","scope":3696,"src":"1677:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3681,"name":"address","nodeType":"ElementaryTypeName","src":"1677:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1616:80:51"},"returnParameters":{"id":3686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3685,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3696,"src":"1720:4:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3684,"name":"bool","nodeType":"ElementaryTypeName","src":"1720:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1719:6:51"},"scope":3697,"src":"1596:206:51","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":3698,"src":"812:992:51"}],"src":"688:1117:51"},"id":51},"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol","exportedSymbols":{"Version":[3736]},"id":3737,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3699,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:52"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol","id":3700,"nodeType":"ImportDirective","scope":3737,"sourceUnit":2341,"src":"713:84:52","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3702,"name":"IVersion","nodeType":"UserDefinedTypeName","referencedDeclaration":2340,"src":"904:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IVersion_$2340","typeString":"contract IVersion"}},"id":3703,"nodeType":"InheritanceSpecifier","src":"904:8:52"}],"contractDependencies":[2340],"contractKind":"contract","documentation":{"id":3701,"nodeType":"StructuredDocumentation","src":"799:84:52","text":" @notice Retrieves a contract's version set at creation time from storage."},"fullyImplemented":true,"id":3736,"linearizedBaseContracts":[3736,2340],"name":"Version","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3705,"mutability":"mutable","name":"_version","nodeType":"VariableDeclaration","scope":3736,"src":"919:23:52","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":3704,"name":"string","nodeType":"ElementaryTypeName","src":"919:6:52","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":3714,"nodeType":"Block","src":"984:37:52","statements":[{"expression":{"arguments":[{"id":3711,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3707,"src":"1006:7:52","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3710,"name":"_setVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3735,"src":"994:11:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":3712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"994:20:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3713,"nodeType":"ExpressionStatement","src":"994:20:52"}]},"id":3715,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3707,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":3715,"src":"961:21:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3706,"name":"string","nodeType":"ElementaryTypeName","src":"961:6:52","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"960:23:52"},"returnParameters":{"id":3709,"nodeType":"ParameterList","parameters":[],"src":"984:0:52"},"scope":3736,"src":"949:72:52","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2339],"body":{"id":3723,"nodeType":"Block","src":"1093:32:52","statements":[{"expression":{"id":3721,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3705,"src":"1110:8:52","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":3720,"id":3722,"nodeType":"Return","src":"1103:15:52"}]},"functionSelector":"54fd4d50","id":3724,"implemented":true,"kind":"function","modifiers":[],"name":"version","nodeType":"FunctionDefinition","overrides":{"id":3717,"nodeType":"OverrideSpecifier","overrides":[],"src":"1060:8:52"},"parameters":{"id":3716,"nodeType":"ParameterList","parameters":[],"src":"1043:2:52"},"returnParameters":{"id":3720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3719,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3724,"src":"1078:13:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3718,"name":"string","nodeType":"ElementaryTypeName","src":"1078:6:52","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1077:15:52"},"scope":3736,"src":"1027:98:52","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3734,"nodeType":"Block","src":"1280:38:52","statements":[{"expression":{"id":3732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3730,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3705,"src":"1290:8:52","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3731,"name":"newVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3727,"src":"1301:10:52","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1290:21:52","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3733,"nodeType":"ExpressionStatement","src":"1290:21:52"}]},"documentation":{"id":3725,"nodeType":"StructuredDocumentation","src":"1131:88:52","text":" @dev Internal setter that allows this contract to be used in proxies."},"id":3735,"implemented":true,"kind":"function","modifiers":[],"name":"_setVersion","nodeType":"FunctionDefinition","parameters":{"id":3728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3727,"mutability":"mutable","name":"newVersion","nodeType":"VariableDeclaration","scope":3735,"src":"1245:24:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3726,"name":"string","nodeType":"ElementaryTypeName","src":"1245:6:52","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1244:26:52"},"returnParameters":{"id":3729,"nodeType":"ParameterList","parameters":[],"src":"1280:0:52"},"scope":3736,"src":"1224:94:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":3737,"src":"884:436:52"}],"src":"688:633:52"},"id":52},"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","exportedSymbols":{"FixedPoint":[4114]},"id":4115,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3738,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:53"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3739,"nodeType":"ImportDirective","scope":4115,"sourceUnit":2249,"src":"713:90:53","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol","file":"./LogExpMath.sol","id":3740,"nodeType":"ImportDirective","scope":4115,"sourceUnit":5413,"src":"805:26:53","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":4114,"linearizedBaseContracts":[4114],"name":"FixedPoint","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":3743,"mutability":"constant","name":"ONE","nodeType":"VariableDeclaration","scope":4114,"src":"956:36:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3741,"name":"uint256","nodeType":"ElementaryTypeName","src":"956:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":3742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"988:4:53","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":3748,"mutability":"constant","name":"TWO","nodeType":"VariableDeclaration","scope":4114,"src":"1019:39:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3744,"name":"uint256","nodeType":"ElementaryTypeName","src":"1019:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1051:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3746,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"1055:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1051:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":3753,"mutability":"constant","name":"FOUR","nodeType":"VariableDeclaration","scope":4114,"src":"1064:40:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3749,"name":"uint256","nodeType":"ElementaryTypeName","src":"1064:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"34","id":3750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1097:1:53","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3751,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"1101:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1097:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":3756,"mutability":"constant","name":"MAX_POW_RELATIVE_ERROR","nodeType":"VariableDeclaration","scope":4114,"src":"1110:56:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3754,"name":"uint256","nodeType":"ElementaryTypeName","src":"1110:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130303030","id":3755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1161:5:53","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"visibility":"internal"},{"constant":true,"id":3759,"mutability":"constant","name":"MIN_POW_BASE_FREE_EXPONENT","nodeType":"VariableDeclaration","scope":4114,"src":"1275:61:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3757,"name":"uint256","nodeType":"ElementaryTypeName","src":"1275:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"302e37653138","id":3758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1330:6:53","typeDescriptions":{"typeIdentifier":"t_rational_700000000000000000_by_1","typeString":"int_const 700000000000000000"},"value":"0.7e18"},"visibility":"internal"},{"body":{"id":3784,"nodeType":"Block","src":"1410:172:53","statements":[{"assignments":[3769],"declarations":[{"constant":false,"id":3769,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":3784,"src":"1493:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3768,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3773,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3770,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"1505:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3771,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3763,"src":"1509:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1505:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1493:17:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3775,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3769,"src":"1529:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3776,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"1534:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1529:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3778,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1537:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1746,"src":"1537:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3774,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1520:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1520:37:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3781,"nodeType":"ExpressionStatement","src":"1520:37:53"},{"expression":{"id":3782,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3769,"src":"1574:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3767,"id":3783,"nodeType":"Return","src":"1567:8:53"}]},"id":3785,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":3764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3761,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3785,"src":"1356:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3760,"name":"uint256","nodeType":"ElementaryTypeName","src":"1356:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3763,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3785,"src":"1367:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3762,"name":"uint256","nodeType":"ElementaryTypeName","src":"1367:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1355:22:53"},"returnParameters":{"id":3767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3766,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3785,"src":"1401:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3765,"name":"uint256","nodeType":"ElementaryTypeName","src":"1401:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1400:9:53"},"scope":4114,"src":"1343:239:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3810,"nodeType":"Block","src":"1655:172:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3795,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3789,"src":"1747:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3787,"src":"1752:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1747:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3798,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1755:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1749,"src":"1755:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3794,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1738:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1738:37:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3801,"nodeType":"ExpressionStatement","src":"1738:37:53"},{"assignments":[3803],"declarations":[{"constant":false,"id":3803,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":3810,"src":"1785:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3802,"name":"uint256","nodeType":"ElementaryTypeName","src":"1785:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3807,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3804,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3787,"src":"1797:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3805,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3789,"src":"1801:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1797:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1785:17:53"},{"expression":{"id":3808,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3803,"src":"1819:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3793,"id":3809,"nodeType":"Return","src":"1812:8:53"}]},"id":3811,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":3790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3787,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3811,"src":"1601:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3786,"name":"uint256","nodeType":"ElementaryTypeName","src":"1601:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3789,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3811,"src":"1612:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3788,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1600:22:53"},"returnParameters":{"id":3793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3792,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3811,"src":"1646:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3791,"name":"uint256","nodeType":"ElementaryTypeName","src":"1646:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1645:9:53"},"scope":4114,"src":"1588:239:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3844,"nodeType":"Block","src":"1904:138:53","statements":[{"assignments":[3821],"declarations":[{"constant":false,"id":3821,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":3844,"src":"1914:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3820,"name":"uint256","nodeType":"ElementaryTypeName","src":"1914:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3825,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3822,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"1932:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3823,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3815,"src":"1936:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1932:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1914:23:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3827,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"1956:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1961:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1956:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3830,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3821,"src":"1966:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3831,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"1976:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1966:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3833,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3815,"src":"1981:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1966:16:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1956:26:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3836,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1984:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MUL_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1755,"src":"1984:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3826,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1947:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1947:57:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3839,"nodeType":"ExpressionStatement","src":"1947:57:53"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3840,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3821,"src":"2022:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3841,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"2032:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2022:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3819,"id":3843,"nodeType":"Return","src":"2015:20:53"}]},"id":3845,"implemented":true,"kind":"function","modifiers":[],"name":"mulDown","nodeType":"FunctionDefinition","parameters":{"id":3816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3813,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3845,"src":"1850:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3812,"name":"uint256","nodeType":"ElementaryTypeName","src":"1850:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3815,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3845,"src":"1861:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3814,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1849:22:53"},"returnParameters":{"id":3819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3818,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3845,"src":"1895:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3817,"name":"uint256","nodeType":"ElementaryTypeName","src":"1895:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1894:9:53"},"scope":4114,"src":"1833:209:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3875,"nodeType":"Block","src":"2124:638:53","statements":[{"assignments":[3855],"declarations":[{"constant":false,"id":3855,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":3875,"src":"2134:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3854,"name":"uint256","nodeType":"ElementaryTypeName","src":"2134:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3859,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3856,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"2152:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3857,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3849,"src":"2156:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2152:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2134:23:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3861,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"2176:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2181:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2176:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3864,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3855,"src":"2186:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3865,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"2196:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2186:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3867,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3849,"src":"2201:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2186:16:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2176:26:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3870,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2204:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MUL_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1755,"src":"2204:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3860,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2167:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2167:57:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3873,"nodeType":"ExpressionStatement","src":"2167:57:53"},{"AST":{"nodeType":"YulBlock","src":"2659:97:53","statements":[{"nodeType":"YulAssignment","src":"2673:73:53","value":{"arguments":[{"arguments":[{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"2701:7:53"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2694:6:53"},"nodeType":"YulFunctionCall","src":"2694:15:53"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2687:6:53"},"nodeType":"YulFunctionCall","src":"2687:23:53"},{"arguments":[{"arguments":[{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"2724:7:53"},{"kind":"number","nodeType":"YulLiteral","src":"2733:1:53","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2720:3:53"},"nodeType":"YulFunctionCall","src":"2720:15:53"},{"name":"ONE","nodeType":"YulIdentifier","src":"2737:3:53"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2716:3:53"},"nodeType":"YulFunctionCall","src":"2716:25:53"},{"kind":"number","nodeType":"YulLiteral","src":"2743:1:53","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2712:3:53"},"nodeType":"YulFunctionCall","src":"2712:33:53"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2683:3:53"},"nodeType":"YulFunctionCall","src":"2683:63:53"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2673:6:53"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3743,"isOffset":false,"isSlot":false,"src":"2737:3:53","valueSize":1},{"declaration":3855,"isOffset":false,"isSlot":false,"src":"2701:7:53","valueSize":1},{"declaration":3855,"isOffset":false,"isSlot":false,"src":"2724:7:53","valueSize":1},{"declaration":3852,"isOffset":false,"isSlot":false,"src":"2673:6:53","valueSize":1}],"id":3874,"nodeType":"InlineAssembly","src":"2650:106:53"}]},"id":3876,"implemented":true,"kind":"function","modifiers":[],"name":"mulUp","nodeType":"FunctionDefinition","parameters":{"id":3850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3847,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3876,"src":"2063:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3846,"name":"uint256","nodeType":"ElementaryTypeName","src":"2063:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3849,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3876,"src":"2074:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3848,"name":"uint256","nodeType":"ElementaryTypeName","src":"2074:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2062:22:53"},"returnParameters":{"id":3853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3852,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":3876,"src":"2108:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3851,"name":"uint256","nodeType":"ElementaryTypeName","src":"2108:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2107:16:53"},"scope":4114,"src":"2048:714:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3917,"nodeType":"Block","src":"2839:211:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3886,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3880,"src":"2858:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2863:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2858:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3889,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2866:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1758,"src":"2866:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3885,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2849:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2849:38:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3892,"nodeType":"ExpressionStatement","src":"2849:38:53"},{"assignments":[3894],"declarations":[{"constant":false,"id":3894,"mutability":"mutable","name":"aInflated","nodeType":"VariableDeclaration","scope":3917,"src":"2898:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3893,"name":"uint256","nodeType":"ElementaryTypeName","src":"2898:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3898,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3895,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3878,"src":"2918:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3896,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"2922:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2918:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2898:27:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3900,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3878,"src":"2944:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2949:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2944:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3903,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3894,"src":"2954:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3904,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3878,"src":"2966:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2954:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3906,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"2971:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2954:20:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2944:30:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3909,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2976:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DIV_INTERNAL","nodeType":"MemberAccess","referencedDeclaration":1761,"src":"2976:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3899,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2935:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2935:61:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3912,"nodeType":"ExpressionStatement","src":"2935:61:53"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3913,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3894,"src":"3030:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3914,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3880,"src":"3042:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3030:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3884,"id":3916,"nodeType":"Return","src":"3023:20:53"}]},"id":3918,"implemented":true,"kind":"function","modifiers":[],"name":"divDown","nodeType":"FunctionDefinition","parameters":{"id":3881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3878,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3918,"src":"2785:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3877,"name":"uint256","nodeType":"ElementaryTypeName","src":"2785:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3880,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3918,"src":"2796:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3879,"name":"uint256","nodeType":"ElementaryTypeName","src":"2796:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2784:22:53"},"returnParameters":{"id":3884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3883,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3918,"src":"2830:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3882,"name":"uint256","nodeType":"ElementaryTypeName","src":"2830:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2829:9:53"},"scope":4114,"src":"2768:282:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3956,"nodeType":"Block","src":"3132:703:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3928,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3922,"src":"3151:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3156:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3151:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3931,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"3159:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1758,"src":"3159:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3927,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"3142:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3142:38:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3934,"nodeType":"ExpressionStatement","src":"3142:38:53"},{"assignments":[3936],"declarations":[{"constant":false,"id":3936,"mutability":"mutable","name":"aInflated","nodeType":"VariableDeclaration","scope":3956,"src":"3191:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3935,"name":"uint256","nodeType":"ElementaryTypeName","src":"3191:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3940,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3937,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3920,"src":"3211:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3938,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"3215:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3211:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3191:27:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3942,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3920,"src":"3237:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3242:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3237:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3945,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3936,"src":"3247:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3946,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3920,"src":"3259:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3247:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3948,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"3264:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3247:20:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3237:30:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3951,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"3269:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":3952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DIV_INTERNAL","nodeType":"MemberAccess","referencedDeclaration":1761,"src":"3269:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3941,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"3228:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3228:61:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3954,"nodeType":"ExpressionStatement","src":"3228:61:53"},{"AST":{"nodeType":"YulBlock","src":"3730:99:53","statements":[{"nodeType":"YulAssignment","src":"3744:75:53","value":{"arguments":[{"arguments":[{"arguments":[{"name":"aInflated","nodeType":"YulIdentifier","src":"3772:9:53"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3765:6:53"},"nodeType":"YulFunctionCall","src":"3765:17:53"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3758:6:53"},"nodeType":"YulFunctionCall","src":"3758:25:53"},{"arguments":[{"arguments":[{"arguments":[{"name":"aInflated","nodeType":"YulIdentifier","src":"3797:9:53"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:53","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3793:3:53"},"nodeType":"YulFunctionCall","src":"3793:17:53"},{"name":"b","nodeType":"YulIdentifier","src":"3812:1:53"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3789:3:53"},"nodeType":"YulFunctionCall","src":"3789:25:53"},{"kind":"number","nodeType":"YulLiteral","src":"3816:1:53","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3785:3:53"},"nodeType":"YulFunctionCall","src":"3785:33:53"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3754:3:53"},"nodeType":"YulFunctionCall","src":"3754:65:53"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"3744:6:53"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3936,"isOffset":false,"isSlot":false,"src":"3772:9:53","valueSize":1},{"declaration":3936,"isOffset":false,"isSlot":false,"src":"3797:9:53","valueSize":1},{"declaration":3922,"isOffset":false,"isSlot":false,"src":"3812:1:53","valueSize":1},{"declaration":3925,"isOffset":false,"isSlot":false,"src":"3744:6:53","valueSize":1}],"id":3955,"nodeType":"InlineAssembly","src":"3721:108:53"}]},"id":3957,"implemented":true,"kind":"function","modifiers":[],"name":"divUp","nodeType":"FunctionDefinition","parameters":{"id":3923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3920,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3957,"src":"3071:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3919,"name":"uint256","nodeType":"ElementaryTypeName","src":"3071:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3922,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3957,"src":"3082:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3921,"name":"uint256","nodeType":"ElementaryTypeName","src":"3082:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3070:22:53"},"returnParameters":{"id":3926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3925,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":3957,"src":"3116:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3924,"name":"uint256","nodeType":"ElementaryTypeName","src":"3116:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3115:16:53"},"scope":4114,"src":"3056:779:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4033,"nodeType":"Block","src":"4138:681:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3967,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"4306:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3968,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"4311:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4306:8:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3973,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"4359:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3974,"name":"TWO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3748,"src":"4364:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4359:8:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3982,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"4424:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3983,"name":"FOUR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3753,"src":"4429:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4424:9:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4029,"nodeType":"Block","src":"4540:273:53","statements":[{"assignments":[3999],"declarations":[{"constant":false,"id":3999,"mutability":"mutable","name":"raw","nodeType":"VariableDeclaration","scope":4029,"src":"4554:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3998,"name":"uint256","nodeType":"ElementaryTypeName","src":"4554:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4005,"initialValue":{"arguments":[{"id":4002,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"4583:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4003,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"4586:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4000,"name":"LogExpMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5412,"src":"4568:10:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LogExpMath_$5412_$","typeString":"type(library LogExpMath)"}},"id":4001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pow","nodeType":"MemberAccess","referencedDeclaration":4356,"src":"4568:14:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4568:20:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4554:34:53"},{"assignments":[4007],"declarations":[{"constant":false,"id":4007,"mutability":"mutable","name":"maxError","nodeType":"VariableDeclaration","scope":4029,"src":"4602:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4006,"name":"uint256","nodeType":"ElementaryTypeName","src":"4602:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4015,"initialValue":{"arguments":[{"arguments":[{"id":4010,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"4631:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4011,"name":"MAX_POW_RELATIVE_ERROR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3756,"src":"4636:22:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4009,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"4625:5:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4625:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":4013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4661:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":4008,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"4621:3:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4621:42:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4602:61:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4016,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"4682:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4017,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4007,"src":"4688:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4682:14:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4027,"nodeType":"Block","src":"4745:58:53","statements":[{"expression":{"arguments":[{"id":4023,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"4774:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4024,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4007,"src":"4779:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4022,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3811,"src":"4770:3:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4770:18:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3966,"id":4026,"nodeType":"Return","src":"4763:25:53"}]},"id":4028,"nodeType":"IfStatement","src":"4678:125:53","trueBody":{"id":4021,"nodeType":"Block","src":"4698:41:53","statements":[{"expression":{"hexValue":"30","id":4019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4723:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3966,"id":4020,"nodeType":"Return","src":"4716:8:53"}]}}]},"id":4030,"nodeType":"IfStatement","src":"4420:393:53","trueBody":{"id":3997,"nodeType":"Block","src":"4435:99:53","statements":[{"assignments":[3986],"declarations":[{"constant":false,"id":3986,"mutability":"mutable","name":"square","nodeType":"VariableDeclaration","scope":3997,"src":"4449:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3985,"name":"uint256","nodeType":"ElementaryTypeName","src":"4449:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3991,"initialValue":{"arguments":[{"id":3988,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"4474:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3989,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"4477:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3987,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3845,"src":"4466:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4466:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4449:30:53"},{"expression":{"arguments":[{"id":3993,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"4508:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3994,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"4516:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3992,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3845,"src":"4500:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4500:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3966,"id":3996,"nodeType":"Return","src":"4493:30:53"}]}},"id":4031,"nodeType":"IfStatement","src":"4355:458:53","trueBody":{"id":3981,"nodeType":"Block","src":"4369:45:53","statements":[{"expression":{"arguments":[{"id":3977,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"4398:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3978,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"4401:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3976,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3845,"src":"4390:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4390:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3966,"id":3980,"nodeType":"Return","src":"4383:20:53"}]}},"id":4032,"nodeType":"IfStatement","src":"4302:511:53","trueBody":{"id":3972,"nodeType":"Block","src":"4316:33:53","statements":[{"expression":{"id":3970,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"4337:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3966,"id":3971,"nodeType":"Return","src":"4330:8:53"}]}}]},"documentation":{"id":3958,"nodeType":"StructuredDocumentation","src":"3841:221:53","text":" @dev Returns x^y, assuming both are fixed point numbers, rounding down. The result is guaranteed to not be above\n the true value (that is, the error function expected - actual is always positive)."},"id":4034,"implemented":true,"kind":"function","modifiers":[],"name":"powDown","nodeType":"FunctionDefinition","parameters":{"id":3963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3960,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4034,"src":"4084:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3959,"name":"uint256","nodeType":"ElementaryTypeName","src":"4084:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3962,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4034,"src":"4095:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3961,"name":"uint256","nodeType":"ElementaryTypeName","src":"4095:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4083:22:53"},"returnParameters":{"id":3966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3965,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4034,"src":"4129:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3964,"name":"uint256","nodeType":"ElementaryTypeName","src":"4129:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4128:9:53"},"scope":4114,"src":"4067:752:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4102,"nodeType":"Block","src":"5118:576:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4044,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"5286:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4045,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"5291:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5286:8:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4050,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"5339:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4051,"name":"TWO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3748,"src":"5344:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5339:8:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4059,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"5402:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4060,"name":"FOUR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3753,"src":"5407:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5402:9:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4098,"nodeType":"Block","src":"5514:174:53","statements":[{"assignments":[4076],"declarations":[{"constant":false,"id":4076,"mutability":"mutable","name":"raw","nodeType":"VariableDeclaration","scope":4098,"src":"5528:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4075,"name":"uint256","nodeType":"ElementaryTypeName","src":"5528:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4082,"initialValue":{"arguments":[{"id":4079,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"5557:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4080,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"5560:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4077,"name":"LogExpMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5412,"src":"5542:10:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LogExpMath_$5412_$","typeString":"type(library LogExpMath)"}},"id":4078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pow","nodeType":"MemberAccess","referencedDeclaration":4356,"src":"5542:14:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5542:20:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5528:34:53"},{"assignments":[4084],"declarations":[{"constant":false,"id":4084,"mutability":"mutable","name":"maxError","nodeType":"VariableDeclaration","scope":4098,"src":"5576:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4083,"name":"uint256","nodeType":"ElementaryTypeName","src":"5576:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4092,"initialValue":{"arguments":[{"arguments":[{"id":4087,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4076,"src":"5605:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4088,"name":"MAX_POW_RELATIVE_ERROR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3756,"src":"5610:22:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4086,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"5599:5:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5599:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":4090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5635:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":4085,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"5595:3:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5595:42:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5576:61:53"},{"expression":{"arguments":[{"id":4094,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4076,"src":"5663:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4095,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4084,"src":"5668:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4093,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"5659:3:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5659:18:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4043,"id":4097,"nodeType":"Return","src":"5652:25:53"}]},"id":4099,"nodeType":"IfStatement","src":"5398:290:53","trueBody":{"id":4074,"nodeType":"Block","src":"5413:95:53","statements":[{"assignments":[4063],"declarations":[{"constant":false,"id":4063,"mutability":"mutable","name":"square","nodeType":"VariableDeclaration","scope":4074,"src":"5427:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4062,"name":"uint256","nodeType":"ElementaryTypeName","src":"5427:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4068,"initialValue":{"arguments":[{"id":4065,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"5450:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4066,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"5453:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4064,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"5444:5:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5444:11:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5427:28:53"},{"expression":{"arguments":[{"id":4070,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4063,"src":"5482:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4071,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4063,"src":"5490:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4069,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"5476:5:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5476:21:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4043,"id":4073,"nodeType":"Return","src":"5469:28:53"}]}},"id":4100,"nodeType":"IfStatement","src":"5335:353:53","trueBody":{"id":4058,"nodeType":"Block","src":"5349:43:53","statements":[{"expression":{"arguments":[{"id":4054,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"5376:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4055,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"5379:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4053,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"5370:5:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5370:11:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4043,"id":4057,"nodeType":"Return","src":"5363:18:53"}]}},"id":4101,"nodeType":"IfStatement","src":"5282:406:53","trueBody":{"id":4049,"nodeType":"Block","src":"5296:33:53","statements":[{"expression":{"id":4047,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"5317:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4043,"id":4048,"nodeType":"Return","src":"5310:8:53"}]}}]},"documentation":{"id":4035,"nodeType":"StructuredDocumentation","src":"4825:219:53","text":" @dev Returns x^y, assuming both are fixed point numbers, rounding up. The result is guaranteed to not be below\n the true value (that is, the error function expected - actual is always negative)."},"id":4103,"implemented":true,"kind":"function","modifiers":[],"name":"powUp","nodeType":"FunctionDefinition","parameters":{"id":4040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4037,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4103,"src":"5064:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4036,"name":"uint256","nodeType":"ElementaryTypeName","src":"5064:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4039,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4103,"src":"5075:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4038,"name":"uint256","nodeType":"ElementaryTypeName","src":"5075:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5063:22:53"},"returnParameters":{"id":4043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4042,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4103,"src":"5109:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4041,"name":"uint256","nodeType":"ElementaryTypeName","src":"5109:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5108:9:53"},"scope":4114,"src":"5049:645:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4112,"nodeType":"Block","src":"6047:160:53","statements":[{"AST":{"nodeType":"YulBlock","src":"6139:62:53","statements":[{"nodeType":"YulAssignment","src":"6153:38:53","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6170:1:53"},{"name":"ONE","nodeType":"YulIdentifier","src":"6173:3:53"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6167:2:53"},"nodeType":"YulFunctionCall","src":"6167:10:53"},{"arguments":[{"name":"ONE","nodeType":"YulIdentifier","src":"6183:3:53"},{"name":"x","nodeType":"YulIdentifier","src":"6188:1:53"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6179:3:53"},"nodeType":"YulFunctionCall","src":"6179:11:53"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6163:3:53"},"nodeType":"YulFunctionCall","src":"6163:28:53"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"6153:6:53"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3743,"isOffset":false,"isSlot":false,"src":"6173:3:53","valueSize":1},{"declaration":3743,"isOffset":false,"isSlot":false,"src":"6183:3:53","valueSize":1},{"declaration":4109,"isOffset":false,"isSlot":false,"src":"6153:6:53","valueSize":1},{"declaration":4106,"isOffset":false,"isSlot":false,"src":"6170:1:53","valueSize":1},{"declaration":4106,"isOffset":false,"isSlot":false,"src":"6188:1:53","valueSize":1}],"id":4111,"nodeType":"InlineAssembly","src":"6130:71:53"}]},"documentation":{"id":4104,"nodeType":"StructuredDocumentation","src":"5700:272:53","text":" @dev Returns the complement of a value (1 - x), capped to 0 if x is larger than 1.\n Useful when computing the complement for values with some level of relative error, as it strips this error and\n prevents intermediate negative values."},"id":4113,"implemented":true,"kind":"function","modifiers":[],"name":"complement","nodeType":"FunctionDefinition","parameters":{"id":4107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4106,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4113,"src":"5997:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4105,"name":"uint256","nodeType":"ElementaryTypeName","src":"5997:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5996:11:53"},"returnParameters":{"id":4110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4109,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":4113,"src":"6031:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4108,"name":"uint256","nodeType":"ElementaryTypeName","src":"6031:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6030:16:53"},"scope":4114,"src":"5977:230:53","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4115,"src":"888:5321:53"}],"src":"688:5522:53"},"id":53},"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol","exportedSymbols":{"LogExpMath":[5412]},"id":5413,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4116,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"1094:23:54"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":4117,"nodeType":"ImportDirective","scope":5413,"sourceUnit":2249,"src":"1119:90:54","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4118,"nodeType":"StructuredDocumentation","src":"1234:446:54","text":" @dev Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument).\n Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural\n exponentiation and logarithm (where the base is Euler's number).\n @author Fernando Martinelli - @fernandomartinelli\n @author Sergio Yuhjtman - @sergioyuhjtman\n @author Daniel Fernandez - @dmf7z"},"fullyImplemented":true,"id":5412,"linearizedBaseContracts":[5412],"name":"LogExpMath","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":4121,"mutability":"constant","name":"ONE_18","nodeType":"VariableDeclaration","scope":5412,"src":"1961:29:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4119,"name":"int256","nodeType":"ElementaryTypeName","src":"1961:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653138","id":4120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1986:4:54","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":4124,"mutability":"constant","name":"ONE_20","nodeType":"VariableDeclaration","scope":5412,"src":"2151:29:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4122,"name":"int256","nodeType":"ElementaryTypeName","src":"2151:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653230","id":4123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2176:4:54","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000_by_1","typeString":"int_const 100000000000000000000"},"value":"1e20"},"visibility":"internal"},{"constant":true,"id":4127,"mutability":"constant","name":"ONE_36","nodeType":"VariableDeclaration","scope":5412,"src":"2186:29:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4125,"name":"int256","nodeType":"ElementaryTypeName","src":"2186:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653336","id":4126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2211:4:54","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(29 digits omitted)...0000"},"value":"1e36"},"visibility":"internal"},{"constant":true,"id":4130,"mutability":"constant","name":"MAX_NATURAL_EXPONENT","nodeType":"VariableDeclaration","scope":5412,"src":"2732:45:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4128,"name":"int256","nodeType":"ElementaryTypeName","src":"2732:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313330653138","id":4129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2771:6:54","typeDescriptions":{"typeIdentifier":"t_rational_130000000000000000000_by_1","typeString":"int_const 130000000000000000000"},"value":"130e18"},"visibility":"internal"},{"constant":true,"id":4134,"mutability":"constant","name":"MIN_NATURAL_EXPONENT","nodeType":"VariableDeclaration","scope":5412,"src":"2783:45:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4131,"name":"int256","nodeType":"ElementaryTypeName","src":"2783:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"id":4133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2822:6:54","subExpression":{"hexValue":"3431653138","id":4132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2823:5:54","typeDescriptions":{"typeIdentifier":"t_rational_41000000000000000000_by_1","typeString":"int_const 41000000000000000000"},"value":"41e18"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_41000000000000000000_by_1","typeString":"int_const -41000000000000000000"}},"visibility":"internal"},{"constant":true,"id":4139,"mutability":"constant","name":"LN_36_LOWER_BOUND","nodeType":"VariableDeclaration","scope":5412,"src":"2979:49:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4135,"name":"int256","nodeType":"ElementaryTypeName","src":"2979:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4136,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"3015:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31653137","id":4137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3024:4:54","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000_by_1","typeString":"int_const 100000000000000000"},"value":"1e17"},"src":"3015:13:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":true,"id":4144,"mutability":"constant","name":"LN_36_UPPER_BOUND","nodeType":"VariableDeclaration","scope":5412,"src":"3034:49:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4140,"name":"int256","nodeType":"ElementaryTypeName","src":"3034:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4141,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"3070:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31653137","id":4142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3079:4:54","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000_by_1","typeString":"int_const 100000000000000000"},"value":"1e17"},"src":"3070:13:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":true,"id":4154,"mutability":"constant","name":"MILD_EXPONENT_BOUND","nodeType":"VariableDeclaration","scope":5412,"src":"3090:63:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4145,"name":"uint256","nodeType":"ElementaryTypeName","src":"3090:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_28948022309329048855892746252171976963317496166410141009864396001978282409984_by_1","typeString":"int_const 2894...(69 digits omitted)...9984"},"id":4148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3129:1:54","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323534","id":4147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3132:3:54","typeDescriptions":{"typeIdentifier":"t_rational_254_by_1","typeString":"int_const 254"},"value":"254"},"src":"3129:6:54","typeDescriptions":{"typeIdentifier":"t_rational_28948022309329048855892746252171976963317496166410141009864396001978282409984_by_1","typeString":"int_const 2894...(69 digits omitted)...9984"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":4151,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"3146:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3138:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4149,"name":"uint256","nodeType":"ElementaryTypeName","src":"3138:7:54","typeDescriptions":{}}},"id":4152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3138:15:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3129:24:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":4157,"mutability":"constant","name":"x0","nodeType":"VariableDeclaration","scope":5412,"src":"3188:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4155,"name":"int256","nodeType":"ElementaryTypeName","src":"3188:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313238303030303030303030303030303030303030","id":4156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3209:21:54","typeDescriptions":{"typeIdentifier":"t_rational_128000000000000000000_by_1","typeString":"int_const 128000000000000000000"},"value":"128000000000000000000"},"visibility":"internal"},{"constant":true,"id":4160,"mutability":"constant","name":"a0","nodeType":"VariableDeclaration","scope":5412,"src":"3244:77:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4158,"name":"int256","nodeType":"ElementaryTypeName","src":"3244:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3338383737303834303539393435393530393232323030303030303030303030303030303030303030303030303030303030303030303030","id":4159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3265:56:54","typeDescriptions":{"typeIdentifier":"t_rational_38877084059945950922200000000000000000000000000000000000_by_1","typeString":"int_const 3887...(48 digits omitted)...0000"},"value":"38877084059945950922200000000000000000000000000000000000"},"visibility":"internal"},{"constant":true,"id":4163,"mutability":"constant","name":"x1","nodeType":"VariableDeclaration","scope":5412,"src":"3352:41:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4161,"name":"int256","nodeType":"ElementaryTypeName","src":"3352:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3634303030303030303030303030303030303030","id":4162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3373:20:54","typeDescriptions":{"typeIdentifier":"t_rational_64000000000000000000_by_1","typeString":"int_const 64000000000000000000"},"value":"64000000000000000000"},"visibility":"internal"},{"constant":true,"id":4166,"mutability":"constant","name":"a1","nodeType":"VariableDeclaration","scope":5412,"src":"3407:49:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4164,"name":"int256","nodeType":"ElementaryTypeName","src":"3407:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"36323335313439303830383131363136383832393130303030303030","id":4165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3428:28:54","typeDescriptions":{"typeIdentifier":"t_rational_6235149080811616882910000000_by_1","typeString":"int_const 6235149080811616882910000000"},"value":"6235149080811616882910000000"},"visibility":"internal"},{"constant":true,"id":4169,"mutability":"constant","name":"x2","nodeType":"VariableDeclaration","scope":5412,"src":"3516:43:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4167,"name":"int256","nodeType":"ElementaryTypeName","src":"3516:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"33323030303030303030303030303030303030303030","id":4168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3537:22:54","typeDescriptions":{"typeIdentifier":"t_rational_3200000000000000000000_by_1","typeString":"int_const 3200000000000000000000"},"value":"3200000000000000000000"},"visibility":"internal"},{"constant":true,"id":4172,"mutability":"constant","name":"a2","nodeType":"VariableDeclaration","scope":5412,"src":"3573:55:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4170,"name":"int256","nodeType":"ElementaryTypeName","src":"3573:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"37383936323936303138323638303639353136313030303030303030303030303030","id":4171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3594:34:54","typeDescriptions":{"typeIdentifier":"t_rational_7896296018268069516100000000000000_by_1","typeString":"int_const 7896...(26 digits omitted)...0000"},"value":"7896296018268069516100000000000000"},"visibility":"internal"},{"constant":true,"id":4175,"mutability":"constant","name":"x3","nodeType":"VariableDeclaration","scope":5412,"src":"3645:43:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4173,"name":"int256","nodeType":"ElementaryTypeName","src":"3645:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31363030303030303030303030303030303030303030","id":4174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3666:22:54","typeDescriptions":{"typeIdentifier":"t_rational_1600000000000000000000_by_1","typeString":"int_const 1600000000000000000000"},"value":"1600000000000000000000"},"visibility":"internal"},{"constant":true,"id":4178,"mutability":"constant","name":"a3","nodeType":"VariableDeclaration","scope":5412,"src":"3702:48:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4176,"name":"int256","nodeType":"ElementaryTypeName","src":"3702:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"383838363131303532303530373837323633363736303030303030","id":4177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3723:27:54","typeDescriptions":{"typeIdentifier":"t_rational_888611052050787263676000000_by_1","typeString":"int_const 888611052050787263676000000"},"value":"888611052050787263676000000"},"visibility":"internal"},{"constant":true,"id":4181,"mutability":"constant","name":"x4","nodeType":"VariableDeclaration","scope":5412,"src":"3767:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4179,"name":"int256","nodeType":"ElementaryTypeName","src":"3767:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"383030303030303030303030303030303030303030","id":4180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3788:21:54","typeDescriptions":{"typeIdentifier":"t_rational_800000000000000000000_by_1","typeString":"int_const 800000000000000000000"},"value":"800000000000000000000"},"visibility":"internal"},{"constant":true,"id":4184,"mutability":"constant","name":"a4","nodeType":"VariableDeclaration","scope":5412,"src":"3823:45:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4182,"name":"int256","nodeType":"ElementaryTypeName","src":"3823:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323938303935373938373034313732383237343734303030","id":4183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3844:24:54","typeDescriptions":{"typeIdentifier":"t_rational_298095798704172827474000_by_1","typeString":"int_const 298095798704172827474000"},"value":"298095798704172827474000"},"visibility":"internal"},{"constant":true,"id":4187,"mutability":"constant","name":"x5","nodeType":"VariableDeclaration","scope":5412,"src":"3885:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4185,"name":"int256","nodeType":"ElementaryTypeName","src":"3885:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"343030303030303030303030303030303030303030","id":4186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3906:21:54","typeDescriptions":{"typeIdentifier":"t_rational_400000000000000000000_by_1","typeString":"int_const 400000000000000000000"},"value":"400000000000000000000"},"visibility":"internal"},{"constant":true,"id":4190,"mutability":"constant","name":"a5","nodeType":"VariableDeclaration","scope":5412,"src":"3941:43:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4188,"name":"int256","nodeType":"ElementaryTypeName","src":"3941:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"35343539383135303033333134343233393037383130","id":4189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3962:22:54","typeDescriptions":{"typeIdentifier":"t_rational_5459815003314423907810_by_1","typeString":"int_const 5459815003314423907810"},"value":"5459815003314423907810"},"visibility":"internal"},{"constant":true,"id":4193,"mutability":"constant","name":"x6","nodeType":"VariableDeclaration","scope":5412,"src":"4001:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4191,"name":"int256","nodeType":"ElementaryTypeName","src":"4001:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323030303030303030303030303030303030303030","id":4192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4022:21:54","typeDescriptions":{"typeIdentifier":"t_rational_200000000000000000000_by_1","typeString":"int_const 200000000000000000000"},"value":"200000000000000000000"},"visibility":"internal"},{"constant":true,"id":4196,"mutability":"constant","name":"a6","nodeType":"VariableDeclaration","scope":5412,"src":"4057:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4194,"name":"int256","nodeType":"ElementaryTypeName","src":"4057:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"373338393035363039383933303635303232373233","id":4195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4078:21:54","typeDescriptions":{"typeIdentifier":"t_rational_738905609893065022723_by_1","typeString":"int_const 738905609893065022723"},"value":"738905609893065022723"},"visibility":"internal"},{"constant":true,"id":4199,"mutability":"constant","name":"x7","nodeType":"VariableDeclaration","scope":5412,"src":"4116:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4197,"name":"int256","nodeType":"ElementaryTypeName","src":"4116:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313030303030303030303030303030303030303030","id":4198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4137:21:54","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000_by_1","typeString":"int_const 100000000000000000000"},"value":"100000000000000000000"},"visibility":"internal"},{"constant":true,"id":4202,"mutability":"constant","name":"a7","nodeType":"VariableDeclaration","scope":5412,"src":"4172:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4200,"name":"int256","nodeType":"ElementaryTypeName","src":"4172:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323731383238313832383435393034353233353336","id":4201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4193:21:54","typeDescriptions":{"typeIdentifier":"t_rational_271828182845904523536_by_1","typeString":"int_const 271828182845904523536"},"value":"271828182845904523536"},"visibility":"internal"},{"constant":true,"id":4205,"mutability":"constant","name":"x8","nodeType":"VariableDeclaration","scope":5412,"src":"4231:41:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4203,"name":"int256","nodeType":"ElementaryTypeName","src":"4231:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3530303030303030303030303030303030303030","id":4204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4252:20:54","typeDescriptions":{"typeIdentifier":"t_rational_50000000000000000000_by_1","typeString":"int_const 50000000000000000000"},"value":"50000000000000000000"},"visibility":"internal"},{"constant":true,"id":4208,"mutability":"constant","name":"a8","nodeType":"VariableDeclaration","scope":5412,"src":"4287:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4206,"name":"int256","nodeType":"ElementaryTypeName","src":"4287:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313634383732313237303730303132383134363835","id":4207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:21:54","typeDescriptions":{"typeIdentifier":"t_rational_164872127070012814685_by_1","typeString":"int_const 164872127070012814685"},"value":"164872127070012814685"},"visibility":"internal"},{"constant":true,"id":4211,"mutability":"constant","name":"x9","nodeType":"VariableDeclaration","scope":5412,"src":"4346:41:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4209,"name":"int256","nodeType":"ElementaryTypeName","src":"4346:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3235303030303030303030303030303030303030","id":4210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4367:20:54","typeDescriptions":{"typeIdentifier":"t_rational_25000000000000000000_by_1","typeString":"int_const 25000000000000000000"},"value":"25000000000000000000"},"visibility":"internal"},{"constant":true,"id":4214,"mutability":"constant","name":"a9","nodeType":"VariableDeclaration","scope":5412,"src":"4402:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4212,"name":"int256","nodeType":"ElementaryTypeName","src":"4402:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313238343032353431363638373734313438343037","id":4213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4423:21:54","typeDescriptions":{"typeIdentifier":"t_rational_128402541668774148407_by_1","typeString":"int_const 128402541668774148407"},"value":"128402541668774148407"},"visibility":"internal"},{"constant":true,"id":4217,"mutability":"constant","name":"x10","nodeType":"VariableDeclaration","scope":5412,"src":"4461:42:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4215,"name":"int256","nodeType":"ElementaryTypeName","src":"4461:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3132353030303030303030303030303030303030","id":4216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4483:20:54","typeDescriptions":{"typeIdentifier":"t_rational_12500000000000000000_by_1","typeString":"int_const 12500000000000000000"},"value":"12500000000000000000"},"visibility":"internal"},{"constant":true,"id":4220,"mutability":"constant","name":"a10","nodeType":"VariableDeclaration","scope":5412,"src":"4518:43:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4218,"name":"int256","nodeType":"ElementaryTypeName","src":"4518:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313133333134383435333036363832363331363833","id":4219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4540:21:54","typeDescriptions":{"typeIdentifier":"t_rational_113314845306682631683_by_1","typeString":"int_const 113314845306682631683"},"value":"113314845306682631683"},"visibility":"internal"},{"constant":true,"id":4223,"mutability":"constant","name":"x11","nodeType":"VariableDeclaration","scope":5412,"src":"4579:41:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4221,"name":"int256","nodeType":"ElementaryTypeName","src":"4579:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"36323530303030303030303030303030303030","id":4222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4601:19:54","typeDescriptions":{"typeIdentifier":"t_rational_6250000000000000000_by_1","typeString":"int_const 6250000000000000000"},"value":"6250000000000000000"},"visibility":"internal"},{"constant":true,"id":4226,"mutability":"constant","name":"a11","nodeType":"VariableDeclaration","scope":5412,"src":"4635:43:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4224,"name":"int256","nodeType":"ElementaryTypeName","src":"4635:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313036343439343435383931373835393432393536","id":4225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4657:21:54","typeDescriptions":{"typeIdentifier":"t_rational_106449445891785942956_by_1","typeString":"int_const 106449445891785942956"},"value":"106449445891785942956"},"visibility":"internal"},{"body":{"id":4355,"nodeType":"Block","src":"4983:2128:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4236,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"4997:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5002:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4997:6:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4245,"nodeType":"IfStatement","src":"4993:131:54","trueBody":{"id":4244,"nodeType":"Block","src":"5005:119:54","statements":[{"expression":{"arguments":[{"id":4241,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"5106:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5098:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4239,"name":"uint256","nodeType":"ElementaryTypeName","src":"5098:7:54","typeDescriptions":{}}},"id":4242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5098:15:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4235,"id":4243,"nodeType":"Return","src":"5091:22:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4246,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"5138:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5143:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5138:6:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4252,"nodeType":"IfStatement","src":"5134:45:54","trueBody":{"id":4251,"nodeType":"Block","src":"5146:33:54","statements":[{"expression":{"hexValue":"30","id":4249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5167:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4235,"id":4250,"nodeType":"Return","src":"5160:8:54"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4254,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"5558:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":4255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5563:3:54","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"5558:8:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5570:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5558:13:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4259,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"5573:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":4260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"X_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1764,"src":"5573:22:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4253,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"5549:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5549:47:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4262,"nodeType":"ExpressionStatement","src":"5549:47:54"},{"assignments":[4264],"declarations":[{"constant":false,"id":4264,"mutability":"mutable","name":"x_int256","nodeType":"VariableDeclaration","scope":4355,"src":"5606:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4263,"name":"int256","nodeType":"ElementaryTypeName","src":"5606:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4269,"initialValue":{"arguments":[{"id":4267,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"5631:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5624:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4265,"name":"int256","nodeType":"ElementaryTypeName","src":"5624:6:54","typeDescriptions":{}}},"id":4268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5624:9:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5606:27:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4271,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"5996:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4272,"name":"MILD_EXPONENT_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4154,"src":"6000:19:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5996:23:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4274,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"6021:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":4275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Y_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1767,"src":"6021:22:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4270,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"5987:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5987:57:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4277,"nodeType":"ExpressionStatement","src":"5987:57:54"},{"assignments":[4279],"declarations":[{"constant":false,"id":4279,"mutability":"mutable","name":"y_int256","nodeType":"VariableDeclaration","scope":4355,"src":"6054:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4278,"name":"int256","nodeType":"ElementaryTypeName","src":"6054:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4284,"initialValue":{"arguments":[{"id":4282,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"6079:1:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6072:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4280,"name":"int256","nodeType":"ElementaryTypeName","src":"6072:6:54","typeDescriptions":{}}},"id":4283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6072:9:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6054:27:54"},{"assignments":[4286],"declarations":[{"constant":false,"id":4286,"mutability":"mutable","name":"logx_times_y","nodeType":"VariableDeclaration","scope":4355,"src":"6092:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4285,"name":"int256","nodeType":"ElementaryTypeName","src":"6092:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4287,"nodeType":"VariableDeclarationStatement","src":"6092:19:54"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4288,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"6125:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4289,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4264,"src":"6145:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6125:28:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4291,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4264,"src":"6157:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4292,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4144,"src":"6168:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6157:28:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6125:60:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4330,"nodeType":"Block","src":"6741:64:54","statements":[{"expression":{"id":4328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4322,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4286,"src":"6755:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4324,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4264,"src":"6774:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4323,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5257,"src":"6770:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6770:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4326,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"6786:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6770:24:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6755:39:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4329,"nodeType":"ExpressionStatement","src":"6755:39:54"}]},"id":4331,"nodeType":"IfStatement","src":"6121:684:54","trueBody":{"id":4321,"nodeType":"Block","src":"6187:548:54","statements":[{"assignments":[4296],"declarations":[{"constant":false,"id":4296,"mutability":"mutable","name":"ln_36_x","nodeType":"VariableDeclaration","scope":4321,"src":"6201:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4295,"name":"int256","nodeType":"ElementaryTypeName","src":"6201:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4300,"initialValue":{"arguments":[{"id":4298,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4264,"src":"6225:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4297,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5411,"src":"6218:6:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6218:16:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6201:33:54"},{"expression":{"id":4319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4301,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4286,"src":"6635:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4302,"name":"ln_36_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4296,"src":"6652:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4303,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"6662:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6652:16:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4305,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6651:18:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4306,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"6672:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6651:29:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4308,"name":"ln_36_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4296,"src":"6685:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":4309,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"6695:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6685:16:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4311,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6684:18:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4312,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"6705:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6684:29:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4314,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6683:31:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4315,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"6717:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6683:40:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6651:72:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4318,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6650:74:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6635:89:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4320,"nodeType":"ExpressionStatement","src":"6635:89:54"}]}},{"expression":{"id":4334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4332,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4286,"src":"6814:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":4333,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"6830:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6814:22:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4335,"nodeType":"ExpressionStatement","src":"6814:22:54"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4337,"name":"MIN_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4134,"src":"6932:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4338,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4286,"src":"6956:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6932:36:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4340,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4286,"src":"6972:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4341,"name":"MAX_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4130,"src":"6988:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6972:36:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6932:76:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4344,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"7022:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":4345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PRODUCT_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1770,"src":"7022:28:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4336,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"6910:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6910:150:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4347,"nodeType":"ExpressionStatement","src":"6910:150:54"},{"expression":{"arguments":[{"arguments":[{"id":4351,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4286,"src":"7090:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4350,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4783,"src":"7086:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7086:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7078:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4348,"name":"uint256","nodeType":"ElementaryTypeName","src":"7078:7:54","typeDescriptions":{}}},"id":4353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7078:26:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4235,"id":4354,"nodeType":"Return","src":"7071:33:54"}]},"documentation":{"id":4227,"nodeType":"StructuredDocumentation","src":"4697:214:54","text":" @dev Exponentiation (x^y) with unsigned 18 decimal fixed point base and exponent.\n Reverts if ln(x) * y is smaller than `MIN_NATURAL_EXPONENT`, or larger than `MAX_NATURAL_EXPONENT`."},"id":4356,"implemented":true,"kind":"function","modifiers":[],"name":"pow","nodeType":"FunctionDefinition","parameters":{"id":4232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4229,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4356,"src":"4929:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4228,"name":"uint256","nodeType":"ElementaryTypeName","src":"4929:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4231,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4356,"src":"4940:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4230,"name":"uint256","nodeType":"ElementaryTypeName","src":"4940:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4928:22:54"},"returnParameters":{"id":4235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4234,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4356,"src":"4974:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4233,"name":"uint256","nodeType":"ElementaryTypeName","src":"4974:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4973:9:54"},"scope":5412,"src":"4916:2195:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4782,"nodeType":"Block","src":"7379:5325:54","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4365,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"7398:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4366,"name":"MIN_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4134,"src":"7403:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7398:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4368,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"7427:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4369,"name":"MAX_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4130,"src":"7432:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7427:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7398:54:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4372,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"7454:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":4373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_EXPONENT","nodeType":"MemberAccess","referencedDeclaration":1773,"src":"7454:23:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4364,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"7389:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7389:89:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4375,"nodeType":"ExpressionStatement","src":"7389:89:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4376,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"7493:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":4377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7497:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7493:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4391,"nodeType":"IfStatement","src":"7489:353:54","trueBody":{"id":4390,"nodeType":"Block","src":"7500:342:54","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4379,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"7804:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4380,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"7813:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7804:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4382,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7803:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":4385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7827:2:54","subExpression":{"id":4384,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"7828:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4383,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4783,"src":"7823:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7823:7:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7803:27:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4388,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7802:29:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4363,"id":4389,"nodeType":"Return","src":"7795:36:54"}]}},{"assignments":[4393],"declarations":[{"constant":false,"id":4393,"mutability":"mutable","name":"firstAN","nodeType":"VariableDeclaration","scope":4782,"src":"9143:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4392,"name":"int256","nodeType":"ElementaryTypeName","src":"9143:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4394,"nodeType":"VariableDeclarationStatement","src":"9143:14:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4395,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9171:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4396,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4157,"src":"9176:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9171:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4407,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9248:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4408,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4163,"src":"9253:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9248:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4423,"nodeType":"Block","src":"9321:66:54","statements":[{"expression":{"id":4421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4419,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"9335:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":4420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9345:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9335:11:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4422,"nodeType":"ExpressionStatement","src":"9335:11:54"}]},"id":4424,"nodeType":"IfStatement","src":"9244:143:54","trueBody":{"id":4418,"nodeType":"Block","src":"9257:58:54","statements":[{"expression":{"id":4412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4410,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9271:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4411,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4163,"src":"9276:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9271:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4413,"nodeType":"ExpressionStatement","src":"9271:7:54"},{"expression":{"id":4416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4414,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"9292:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4415,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4166,"src":"9302:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9292:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4417,"nodeType":"ExpressionStatement","src":"9292:12:54"}]}},"id":4425,"nodeType":"IfStatement","src":"9167:220:54","trueBody":{"id":4406,"nodeType":"Block","src":"9180:58:54","statements":[{"expression":{"id":4400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4398,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9194:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4399,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4157,"src":"9199:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9194:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4401,"nodeType":"ExpressionStatement","src":"9194:7:54"},{"expression":{"id":4404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4402,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"9215:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4403,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4160,"src":"9225:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9215:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4405,"nodeType":"ExpressionStatement","src":"9215:12:54"}]}},{"expression":{"id":4428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4426,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9537:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":4427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9542:3:54","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"9537:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4429,"nodeType":"ExpressionStatement","src":"9537:8:54"},{"assignments":[4431],"declarations":[{"constant":false,"id":4431,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":4782,"src":"9758:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4430,"name":"int256","nodeType":"ElementaryTypeName","src":"9758:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4433,"initialValue":{"id":4432,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"9775:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"9758:23:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4434,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9796:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4435,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4169,"src":"9801:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9796:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4451,"nodeType":"IfStatement","src":"9792:92:54","trueBody":{"id":4450,"nodeType":"Block","src":"9805:79:54","statements":[{"expression":{"id":4439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4437,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9819:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4438,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4169,"src":"9824:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9819:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4440,"nodeType":"ExpressionStatement","src":"9819:7:54"},{"expression":{"id":4448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4441,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"9840:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4442,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"9851:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4443,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"9861:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9851:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4445,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9850:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4446,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"9867:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9850:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9840:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4449,"nodeType":"ExpressionStatement","src":"9840:33:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4452,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9897:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4453,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4175,"src":"9902:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9897:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4469,"nodeType":"IfStatement","src":"9893:92:54","trueBody":{"id":4468,"nodeType":"Block","src":"9906:79:54","statements":[{"expression":{"id":4457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4455,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9920:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4456,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4175,"src":"9925:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9920:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4458,"nodeType":"ExpressionStatement","src":"9920:7:54"},{"expression":{"id":4466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4459,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"9941:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4460,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"9952:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4461,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"9962:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9952:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4463,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9951:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4464,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"9968:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9951:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9941:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4467,"nodeType":"ExpressionStatement","src":"9941:33:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4470,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"9998:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4471,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4181,"src":"10003:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9998:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4487,"nodeType":"IfStatement","src":"9994:92:54","trueBody":{"id":4486,"nodeType":"Block","src":"10007:79:54","statements":[{"expression":{"id":4475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4473,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10021:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4474,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4181,"src":"10026:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10021:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4476,"nodeType":"ExpressionStatement","src":"10021:7:54"},{"expression":{"id":4484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4477,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10042:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4478,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10053:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4479,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"10063:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10053:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4481,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10052:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4482,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"10069:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10052:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10042:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4485,"nodeType":"ExpressionStatement","src":"10042:33:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4488,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10099:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4489,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4187,"src":"10104:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10099:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4505,"nodeType":"IfStatement","src":"10095:92:54","trueBody":{"id":4504,"nodeType":"Block","src":"10108:79:54","statements":[{"expression":{"id":4493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4491,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10122:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4492,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4187,"src":"10127:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10122:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4494,"nodeType":"ExpressionStatement","src":"10122:7:54"},{"expression":{"id":4502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4495,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10143:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4496,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10154:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4497,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4190,"src":"10164:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10154:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4499,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10153:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4500,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"10170:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10153:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10143:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4503,"nodeType":"ExpressionStatement","src":"10143:33:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4506,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10200:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4507,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4193,"src":"10205:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10200:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4523,"nodeType":"IfStatement","src":"10196:92:54","trueBody":{"id":4522,"nodeType":"Block","src":"10209:79:54","statements":[{"expression":{"id":4511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4509,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10223:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4510,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4193,"src":"10228:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10223:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4512,"nodeType":"ExpressionStatement","src":"10223:7:54"},{"expression":{"id":4520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4513,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10244:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4514,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10255:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4515,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4196,"src":"10265:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10255:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4517,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10254:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4518,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"10271:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10254:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10244:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4521,"nodeType":"ExpressionStatement","src":"10244:33:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4524,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10301:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4525,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4199,"src":"10306:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10301:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4541,"nodeType":"IfStatement","src":"10297:92:54","trueBody":{"id":4540,"nodeType":"Block","src":"10310:79:54","statements":[{"expression":{"id":4529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4527,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10324:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4528,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4199,"src":"10329:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10324:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4530,"nodeType":"ExpressionStatement","src":"10324:7:54"},{"expression":{"id":4538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4531,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10345:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4532,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10356:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4533,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"10366:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10356:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4535,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10355:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4536,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"10372:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10355:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10345:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4539,"nodeType":"ExpressionStatement","src":"10345:33:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4542,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10402:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4543,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"10407:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10402:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4559,"nodeType":"IfStatement","src":"10398:92:54","trueBody":{"id":4558,"nodeType":"Block","src":"10411:79:54","statements":[{"expression":{"id":4547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4545,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10425:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4546,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"10430:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10425:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4548,"nodeType":"ExpressionStatement","src":"10425:7:54"},{"expression":{"id":4556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4549,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10446:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4550,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10457:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4551,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"10467:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10457:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4553,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10456:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4554,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"10473:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10456:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10446:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4557,"nodeType":"ExpressionStatement","src":"10446:33:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4560,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10503:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4561,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4211,"src":"10508:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10503:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4577,"nodeType":"IfStatement","src":"10499:92:54","trueBody":{"id":4576,"nodeType":"Block","src":"10512:79:54","statements":[{"expression":{"id":4565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4563,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"10526:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4564,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4211,"src":"10531:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10526:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4566,"nodeType":"ExpressionStatement","src":"10526:7:54"},{"expression":{"id":4574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4567,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10547:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4568,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"10558:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4569,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"10568:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10558:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4571,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10557:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4572,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"10574:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10557:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10547:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4575,"nodeType":"ExpressionStatement","src":"10547:33:54"}]}},{"assignments":[4579],"declarations":[{"constant":false,"id":4579,"mutability":"mutable","name":"seriesSum","nodeType":"VariableDeclaration","scope":4782,"src":"10895:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4578,"name":"int256","nodeType":"ElementaryTypeName","src":"10895:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4581,"initialValue":{"id":4580,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"10914:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"10895:25:54"},{"assignments":[4583],"declarations":[{"constant":false,"id":4583,"mutability":"mutable","name":"term","nodeType":"VariableDeclaration","scope":4782,"src":"10985:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4582,"name":"int256","nodeType":"ElementaryTypeName","src":"10985:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4584,"nodeType":"VariableDeclarationStatement","src":"10985:11:54"},{"expression":{"id":4587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4585,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11105:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4586,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11112:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11105:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4588,"nodeType":"ExpressionStatement","src":"11105:8:54"},{"expression":{"id":4591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4589,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11123:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4590,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11136:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11123:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4592,"nodeType":"ExpressionStatement","src":"11123:17:54"},{"expression":{"id":4603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4593,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11377:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4594,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11386:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4595,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11393:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11386:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4597,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11385:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4598,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11398:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11385:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4600,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11384:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":4601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11408:1:54","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11384:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11377:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4604,"nodeType":"ExpressionStatement","src":"11377:32:54"},{"expression":{"id":4607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4605,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11419:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4606,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11432:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11419:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4608,"nodeType":"ExpressionStatement","src":"11419:17:54"},{"expression":{"id":4619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4609,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11447:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4610,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11456:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4611,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11463:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11456:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4613,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11455:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4614,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11468:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11455:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4616,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11454:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":4617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11478:1:54","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"11454:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11447:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4620,"nodeType":"ExpressionStatement","src":"11447:32:54"},{"expression":{"id":4623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4621,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11489:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4622,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11502:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11489:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4624,"nodeType":"ExpressionStatement","src":"11489:17:54"},{"expression":{"id":4635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4625,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11517:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4626,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11526:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4627,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11533:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11526:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4629,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11525:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4630,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11538:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11525:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4632,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11524:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"34","id":4633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11548:1:54","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11524:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11517:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4636,"nodeType":"ExpressionStatement","src":"11517:32:54"},{"expression":{"id":4639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4637,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11559:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4638,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11572:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11559:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4640,"nodeType":"ExpressionStatement","src":"11559:17:54"},{"expression":{"id":4651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4641,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11587:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4642,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11596:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4643,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11603:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11596:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4645,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11595:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4646,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11608:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11595:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4648,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11594:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":4649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11618:1:54","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"11594:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11587:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4652,"nodeType":"ExpressionStatement","src":"11587:32:54"},{"expression":{"id":4655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4653,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11629:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4654,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11642:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11629:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4656,"nodeType":"ExpressionStatement","src":"11629:17:54"},{"expression":{"id":4667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4657,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11657:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4658,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11666:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4659,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11673:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11666:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4661,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11665:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4662,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11678:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11665:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4664,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11664:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"36","id":4665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11688:1:54","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"11664:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11657:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4668,"nodeType":"ExpressionStatement","src":"11657:32:54"},{"expression":{"id":4671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4669,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11699:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4670,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11712:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11699:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4672,"nodeType":"ExpressionStatement","src":"11699:17:54"},{"expression":{"id":4683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4673,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11727:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4674,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11736:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4675,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11743:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11736:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4677,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11735:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4678,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11748:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11735:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4680,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11734:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":4681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11758:1:54","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"11734:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11727:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4684,"nodeType":"ExpressionStatement","src":"11727:32:54"},{"expression":{"id":4687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4685,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11769:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4686,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11782:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11769:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4688,"nodeType":"ExpressionStatement","src":"11769:17:54"},{"expression":{"id":4699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4689,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11797:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4690,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11806:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4691,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11813:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11806:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11805:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4694,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11818:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11805:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4696,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11804:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"38","id":4697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11828:1:54","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11804:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11797:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4700,"nodeType":"ExpressionStatement","src":"11797:32:54"},{"expression":{"id":4703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4701,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11839:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4702,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11852:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11839:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4704,"nodeType":"ExpressionStatement","src":"11839:17:54"},{"expression":{"id":4715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4705,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11867:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4706,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11876:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4707,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11883:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11876:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4709,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11875:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4710,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11888:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11875:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4712,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11874:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":4713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11898:1:54","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"11874:25:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11867:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4716,"nodeType":"ExpressionStatement","src":"11867:32:54"},{"expression":{"id":4719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4717,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11909:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4718,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11922:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11909:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4720,"nodeType":"ExpressionStatement","src":"11909:17:54"},{"expression":{"id":4731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4721,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11937:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4722,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11946:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4723,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"11953:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11946:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4725,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11945:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4726,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"11958:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11945:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4728,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11944:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":4729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11968:2:54","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"11944:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11937:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4732,"nodeType":"ExpressionStatement","src":"11937:33:54"},{"expression":{"id":4735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4733,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"11980:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4734,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11993:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11980:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4736,"nodeType":"ExpressionStatement","src":"11980:17:54"},{"expression":{"id":4747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4737,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"12008:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4738,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"12017:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4739,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"12024:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12017:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4741,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12016:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4742,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"12029:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12016:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4744,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12015:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":4745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12039:2:54","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"12015:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12008:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4748,"nodeType":"ExpressionStatement","src":"12008:33:54"},{"expression":{"id":4751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4749,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"12051:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4750,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"12064:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12051:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4752,"nodeType":"ExpressionStatement","src":"12051:17:54"},{"expression":{"id":4763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4753,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"12079:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4754,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"12088:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4755,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4359,"src":"12095:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12088:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12087:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4758,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"12100:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12087:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4760,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12086:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3132","id":4761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12110:2:54","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"src":"12086:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12079:33:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4764,"nodeType":"ExpressionStatement","src":"12079:33:54"},{"expression":{"id":4767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4765,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"12122:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4766,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"12135:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12122:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4768,"nodeType":"ExpressionStatement","src":"12122:17:54"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4769,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"12650:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4770,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"12660:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12650:19:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4772,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12649:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4773,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"12673:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12649:30:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4775,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12648:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4776,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"12683:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12648:42:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4778,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12647:44:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":4779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12694:3:54","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"12647:50:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4363,"id":4781,"nodeType":"Return","src":"12640:57:54"}]},"documentation":{"id":4357,"nodeType":"StructuredDocumentation","src":"7117:203:54","text":" @dev Natural exponentiation (e^x) with signed 18 decimal fixed point exponent.\n Reverts if `x` is smaller than MIN_NATURAL_EXPONENT, or larger than `MAX_NATURAL_EXPONENT`."},"id":4783,"implemented":true,"kind":"function","modifiers":[],"name":"exp","nodeType":"FunctionDefinition","parameters":{"id":4360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4359,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4783,"src":"7338:8:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4358,"name":"int256","nodeType":"ElementaryTypeName","src":"7338:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7337:10:54"},"returnParameters":{"id":4363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4362,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4783,"src":"7371:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4361,"name":"int256","nodeType":"ElementaryTypeName","src":"7371:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7370:8:54"},"scope":5412,"src":"7325:5379:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4854,"nodeType":"Block","src":"12888:753:54","statements":[{"assignments":[4794],"declarations":[{"constant":false,"id":4794,"mutability":"mutable","name":"logBase","nodeType":"VariableDeclaration","scope":4854,"src":"13118:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4793,"name":"int256","nodeType":"ElementaryTypeName","src":"13118:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4795,"nodeType":"VariableDeclarationStatement","src":"13118:14:54"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4796,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"13146:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4797,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"13166:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13146:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4799,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"13174:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4800,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4144,"src":"13181:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13174:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13146:52:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4818,"nodeType":"Block","src":"13253:53:54","statements":[{"expression":{"id":4816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4810,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4794,"src":"13267:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4812,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"13281:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4811,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5257,"src":"13277:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13277:9:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4814,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"13289:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13277:18:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13267:28:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4817,"nodeType":"ExpressionStatement","src":"13267:28:54"}]},"id":4819,"nodeType":"IfStatement","src":"13142:164:54","trueBody":{"id":4809,"nodeType":"Block","src":"13200:47:54","statements":[{"expression":{"id":4807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4803,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4794,"src":"13214:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4805,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"13231:4:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4804,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5411,"src":"13224:6:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13224:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13214:22:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4808,"nodeType":"ExpressionStatement","src":"13214:22:54"}]}},{"assignments":[4821],"declarations":[{"constant":false,"id":4821,"mutability":"mutable","name":"logArg","nodeType":"VariableDeclaration","scope":4854,"src":"13316:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4820,"name":"int256","nodeType":"ElementaryTypeName","src":"13316:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4822,"nodeType":"VariableDeclarationStatement","src":"13316:13:54"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4823,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"13343:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4824,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4786,"src":"13363:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13343:23:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4826,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4786,"src":"13370:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4827,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4144,"src":"13376:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13370:23:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13343:50:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4845,"nodeType":"Block","src":"13446:51:54","statements":[{"expression":{"id":4843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4837,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4821,"src":"13460:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4839,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4786,"src":"13473:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4838,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5257,"src":"13469:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13469:8:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4841,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"13480:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13469:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13460:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4844,"nodeType":"ExpressionStatement","src":"13460:26:54"}]},"id":4846,"nodeType":"IfStatement","src":"13339:158:54","trueBody":{"id":4836,"nodeType":"Block","src":"13395:45:54","statements":[{"expression":{"id":4834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4830,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4821,"src":"13409:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4832,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4786,"src":"13425:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4831,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5411,"src":"13418:6:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13418:11:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13409:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4835,"nodeType":"ExpressionStatement","src":"13409:20:54"}]}},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4847,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4821,"src":"13608:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4848,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"13617:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13608:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4850,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13607:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4851,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4794,"src":"13627:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13607:27:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4792,"id":4853,"nodeType":"Return","src":"13600:34:54"}]},"documentation":{"id":4784,"nodeType":"StructuredDocumentation","src":"12710:104:54","text":" @dev Logarithm (log(arg, base), with signed 18 decimal fixed point base and argument."},"id":4855,"implemented":true,"kind":"function","modifiers":[],"name":"log","nodeType":"FunctionDefinition","parameters":{"id":4789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4786,"mutability":"mutable","name":"arg","nodeType":"VariableDeclaration","scope":4855,"src":"12832:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4785,"name":"int256","nodeType":"ElementaryTypeName","src":"12832:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4788,"mutability":"mutable","name":"base","nodeType":"VariableDeclaration","scope":4855,"src":"12844:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4787,"name":"int256","nodeType":"ElementaryTypeName","src":"12844:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"12831:25:54"},"returnParameters":{"id":4792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4791,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4855,"src":"12880:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4790,"name":"int256","nodeType":"ElementaryTypeName","src":"12880:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"12879:8:54"},"scope":5412,"src":"12819:822:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4891,"nodeType":"Block","src":"13799:292:54","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4864,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4858,"src":"13901:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13905:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13901:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4867,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"13908:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":4868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1776,"src":"13908:20:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4863,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"13892:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13892:37:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4870,"nodeType":"ExpressionStatement","src":"13892:37:54"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4871,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"13943:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4872,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4858,"src":"13963:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13943:21:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4874,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4858,"src":"13968:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4875,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4144,"src":"13972:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13968:21:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13943:46:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4889,"nodeType":"Block","src":"14047:38:54","statements":[{"expression":{"arguments":[{"id":4886,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4858,"src":"14072:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4885,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5257,"src":"14068:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14068:6:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4862,"id":4888,"nodeType":"Return","src":"14061:13:54"}]},"id":4890,"nodeType":"IfStatement","src":"13939:146:54","trueBody":{"id":4884,"nodeType":"Block","src":"13991:50:54","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4879,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4858,"src":"14019:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4878,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5411,"src":"14012:6:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14012:9:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4881,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"14024:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14012:18:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4862,"id":4883,"nodeType":"Return","src":"14005:25:54"}]}}]},"documentation":{"id":4856,"nodeType":"StructuredDocumentation","src":"13647:94:54","text":" @dev Natural logarithm (ln(a)) with signed 18 decimal fixed point argument."},"id":4892,"implemented":true,"kind":"function","modifiers":[],"name":"ln","nodeType":"FunctionDefinition","parameters":{"id":4859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4858,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":4892,"src":"13758:8:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4857,"name":"int256","nodeType":"ElementaryTypeName","src":"13758:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"13757:10:54"},"returnParameters":{"id":4862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4861,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4892,"src":"13791:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4860,"name":"int256","nodeType":"ElementaryTypeName","src":"13791:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"13790:8:54"},"scope":5412,"src":"13746:345:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5256,"nodeType":"Block","src":"14258:4906:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4900,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"14272:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4901,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"14276:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14272:10:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4915,"nodeType":"IfStatement","src":"14268:382:54","trueBody":{"id":4914,"nodeType":"Block","src":"14284:366:54","statements":[{"expression":{"components":[{"id":4911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14611:27:54","subExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4904,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"14617:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4905,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"14626:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14617:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4907,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"14616:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4908,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"14636:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14616:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4903,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5257,"src":"14612:3:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14612:26:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4912,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14610:29:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4899,"id":4913,"nodeType":"Return","src":"14603:36:54"}]}},{"assignments":[4917],"declarations":[{"constant":false,"id":4917,"mutability":"mutable","name":"sum","nodeType":"VariableDeclaration","scope":5256,"src":"15975:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4916,"name":"int256","nodeType":"ElementaryTypeName","src":"15975:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4919,"initialValue":{"hexValue":"30","id":4918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15988:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15975:14:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4920,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16003:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4921,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4160,"src":"16008:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4922,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"16013:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16008:11:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16003:16:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4934,"nodeType":"IfStatement","src":"15999:114:54","trueBody":{"id":4933,"nodeType":"Block","src":"16021:92:54","statements":[{"expression":{"id":4927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4925,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16035:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":4926,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4160,"src":"16040:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16035:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4928,"nodeType":"ExpressionStatement","src":"16035:7:54"},{"expression":{"id":4931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4929,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16093:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4930,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4157,"src":"16100:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16093:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4932,"nodeType":"ExpressionStatement","src":"16093:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4935,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16127:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4936,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4166,"src":"16132:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4937,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"16137:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16132:11:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16127:16:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4949,"nodeType":"IfStatement","src":"16123:114:54","trueBody":{"id":4948,"nodeType":"Block","src":"16145:92:54","statements":[{"expression":{"id":4942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4940,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16159:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":4941,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4166,"src":"16164:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16159:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4943,"nodeType":"ExpressionStatement","src":"16159:7:54"},{"expression":{"id":4946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4944,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16217:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4945,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4163,"src":"16224:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16217:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4947,"nodeType":"ExpressionStatement","src":"16217:9:54"}]}},{"expression":{"id":4952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4950,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16368:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":4951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16375:3:54","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"16368:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4953,"nodeType":"ExpressionStatement","src":"16368:10:54"},{"expression":{"id":4956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4954,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16388:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":4955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16393:3:54","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"16388:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4957,"nodeType":"ExpressionStatement","src":"16388:8:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4958,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16523:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4959,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"16528:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16523:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4975,"nodeType":"IfStatement","src":"16519:82:54","trueBody":{"id":4974,"nodeType":"Block","src":"16532:69:54","statements":[{"expression":{"id":4968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4961,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16546:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4962,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16551:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4963,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"16555:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16551:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4965,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16550:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4966,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"16565:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16550:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16546:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4969,"nodeType":"ExpressionStatement","src":"16546:21:54"},{"expression":{"id":4972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4970,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16581:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4971,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4169,"src":"16588:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16581:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4973,"nodeType":"ExpressionStatement","src":"16581:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4976,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16615:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4977,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"16620:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16615:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4993,"nodeType":"IfStatement","src":"16611:82:54","trueBody":{"id":4992,"nodeType":"Block","src":"16624:69:54","statements":[{"expression":{"id":4986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4979,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16638:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4980,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16643:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4981,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"16647:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16643:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4983,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16642:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4984,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"16657:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16642:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16638:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4987,"nodeType":"ExpressionStatement","src":"16638:21:54"},{"expression":{"id":4990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4988,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16673:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4989,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4175,"src":"16680:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16673:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4991,"nodeType":"ExpressionStatement","src":"16673:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4994,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16707:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4995,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"16712:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16707:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5011,"nodeType":"IfStatement","src":"16703:82:54","trueBody":{"id":5010,"nodeType":"Block","src":"16716:69:54","statements":[{"expression":{"id":5004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4997,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16730:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4998,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16735:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4999,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"16739:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16735:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5001,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16734:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5002,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"16749:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16734:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16730:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5005,"nodeType":"ExpressionStatement","src":"16730:21:54"},{"expression":{"id":5008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5006,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16765:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5007,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4181,"src":"16772:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16765:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5009,"nodeType":"ExpressionStatement","src":"16765:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5012,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16799:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5013,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4190,"src":"16804:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16799:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5029,"nodeType":"IfStatement","src":"16795:82:54","trueBody":{"id":5028,"nodeType":"Block","src":"16808:69:54","statements":[{"expression":{"id":5022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5015,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16822:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5016,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16827:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5017,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"16831:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16827:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5019,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16826:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5020,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4190,"src":"16841:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16826:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16822:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5023,"nodeType":"ExpressionStatement","src":"16822:21:54"},{"expression":{"id":5026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5024,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16857:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5025,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4187,"src":"16864:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16857:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5027,"nodeType":"ExpressionStatement","src":"16857:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5030,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16891:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5031,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4196,"src":"16896:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16891:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5047,"nodeType":"IfStatement","src":"16887:82:54","trueBody":{"id":5046,"nodeType":"Block","src":"16900:69:54","statements":[{"expression":{"id":5040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5033,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16914:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5034,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16919:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5035,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"16923:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16919:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5037,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16918:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5038,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4196,"src":"16933:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16918:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16914:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5041,"nodeType":"ExpressionStatement","src":"16914:21:54"},{"expression":{"id":5044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5042,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"16949:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5043,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4193,"src":"16956:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16949:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5045,"nodeType":"ExpressionStatement","src":"16949:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5048,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16983:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5049,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"16988:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16983:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5065,"nodeType":"IfStatement","src":"16979:82:54","trueBody":{"id":5064,"nodeType":"Block","src":"16992:69:54","statements":[{"expression":{"id":5058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5051,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17006:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5052,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17011:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5053,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17015:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17011:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5055,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17010:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5056,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"17025:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17010:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17006:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5059,"nodeType":"ExpressionStatement","src":"17006:21:54"},{"expression":{"id":5062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5060,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"17041:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5061,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4199,"src":"17048:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17041:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5063,"nodeType":"ExpressionStatement","src":"17041:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5066,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17075:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5067,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"17080:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17075:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5083,"nodeType":"IfStatement","src":"17071:82:54","trueBody":{"id":5082,"nodeType":"Block","src":"17084:69:54","statements":[{"expression":{"id":5076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5069,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17098:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5070,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17103:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5071,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17107:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17103:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5073,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17102:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5074,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"17117:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17102:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17098:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5077,"nodeType":"ExpressionStatement","src":"17098:21:54"},{"expression":{"id":5080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5078,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"17133:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5079,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"17140:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17133:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5081,"nodeType":"ExpressionStatement","src":"17133:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5084,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17167:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5085,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"17172:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17167:7:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5101,"nodeType":"IfStatement","src":"17163:82:54","trueBody":{"id":5100,"nodeType":"Block","src":"17176:69:54","statements":[{"expression":{"id":5094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5087,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17190:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5088,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17195:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5089,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17199:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17195:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5091,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17194:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5092,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"17209:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17194:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17190:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5095,"nodeType":"ExpressionStatement","src":"17190:21:54"},{"expression":{"id":5098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5096,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"17225:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5097,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4211,"src":"17232:2:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17225:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5099,"nodeType":"ExpressionStatement","src":"17225:9:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5102,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17259:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5103,"name":"a10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4220,"src":"17264:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17259:8:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5119,"nodeType":"IfStatement","src":"17255:85:54","trueBody":{"id":5118,"nodeType":"Block","src":"17269:71:54","statements":[{"expression":{"id":5112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5105,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17283:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5106,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17288:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5107,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17292:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17288:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5109,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17287:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5110,"name":"a10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4220,"src":"17302:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17287:18:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17283:22:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5113,"nodeType":"ExpressionStatement","src":"17283:22:54"},{"expression":{"id":5116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5114,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"17319:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5115,"name":"x10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4217,"src":"17326:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17319:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5117,"nodeType":"ExpressionStatement","src":"17319:10:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5120,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17354:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5121,"name":"a11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4226,"src":"17359:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17354:8:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5137,"nodeType":"IfStatement","src":"17350:85:54","trueBody":{"id":5136,"nodeType":"Block","src":"17364:71:54","statements":[{"expression":{"id":5130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5123,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17378:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5124,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17383:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5125,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17387:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17383:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5127,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17382:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5128,"name":"a11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4226,"src":"17397:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17382:18:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17378:22:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5131,"nodeType":"ExpressionStatement","src":"17378:22:54"},{"expression":{"id":5134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5132,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"17414:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5133,"name":"x11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4223,"src":"17421:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17414:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5135,"nodeType":"ExpressionStatement","src":"17414:10:54"}]}},{"assignments":[5139],"declarations":[{"constant":false,"id":5139,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":5256,"src":"17937:8:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5138,"name":"int256","nodeType":"ElementaryTypeName","src":"17937:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5152,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5140,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17950:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5141,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17954:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17950:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17949:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5144,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17964:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17949:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5146,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17948:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5147,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17975:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5148,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"17979:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17975:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5150,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17974:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17948:38:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"17937:49:54"},{"assignments":[5154],"declarations":[{"constant":false,"id":5154,"mutability":"mutable","name":"z_squared","nodeType":"VariableDeclaration","scope":5256,"src":"17996:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5153,"name":"int256","nodeType":"ElementaryTypeName","src":"17996:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5161,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5155,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5139,"src":"18016:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5156,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5139,"src":"18020:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18016:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5158,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18015:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5159,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"18025:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18015:16:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"17996:35:54"},{"assignments":[5163],"declarations":[{"constant":false,"id":5163,"mutability":"mutable","name":"num","nodeType":"VariableDeclaration","scope":5256,"src":"18112:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5162,"name":"int256","nodeType":"ElementaryTypeName","src":"18112:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5165,"initialValue":{"id":5164,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5139,"src":"18125:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"18112:14:54"},{"assignments":[5167],"declarations":[{"constant":false,"id":5167,"mutability":"mutable","name":"seriesSum","nodeType":"VariableDeclaration","scope":5256,"src":"18240:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5166,"name":"int256","nodeType":"ElementaryTypeName","src":"18240:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5169,"initialValue":{"id":5168,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18259:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"18240:22:54"},{"expression":{"id":5177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5170,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18333:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5171,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18340:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5172,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5154,"src":"18346:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18340:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5174,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18339:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5175,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"18359:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18339:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18333:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5178,"nodeType":"ExpressionStatement","src":"18333:32:54"},{"expression":{"id":5183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5179,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"18375:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5180,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18388:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":5181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18394:1:54","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"18388:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18375:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5184,"nodeType":"ExpressionStatement","src":"18375:20:54"},{"expression":{"id":5192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5185,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18406:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5186,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18413:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5187,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5154,"src":"18419:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18413:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18412:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5190,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"18432:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18412:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18406:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5193,"nodeType":"ExpressionStatement","src":"18406:32:54"},{"expression":{"id":5198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5194,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"18448:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5195,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18461:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":5196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18467:1:54","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"18461:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18448:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5199,"nodeType":"ExpressionStatement","src":"18448:20:54"},{"expression":{"id":5207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5200,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18479:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5201,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18486:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5202,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5154,"src":"18492:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18486:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5204,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18485:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5205,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"18505:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18485:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18479:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5208,"nodeType":"ExpressionStatement","src":"18479:32:54"},{"expression":{"id":5213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5209,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"18521:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5210,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18534:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":5211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18540:1:54","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"18534:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18521:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5214,"nodeType":"ExpressionStatement","src":"18521:20:54"},{"expression":{"id":5222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5215,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18552:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5216,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18559:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5217,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5154,"src":"18565:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18559:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5219,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18558:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5220,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"18578:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18558:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18552:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5223,"nodeType":"ExpressionStatement","src":"18552:32:54"},{"expression":{"id":5228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5224,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"18594:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5225,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18607:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":5226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18613:1:54","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"18607:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18594:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5229,"nodeType":"ExpressionStatement","src":"18594:20:54"},{"expression":{"id":5237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5230,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18625:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5231,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18632:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5232,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5154,"src":"18638:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18632:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5234,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18631:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5235,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"18651:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18631:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18625:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5238,"nodeType":"ExpressionStatement","src":"18625:32:54"},{"expression":{"id":5243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5239,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"18667:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5240,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"18680:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":5241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18686:2:54","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"18680:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18667:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5244,"nodeType":"ExpressionStatement","src":"18667:21:54"},{"expression":{"id":5247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5245,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"18847:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"32","id":5246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18860:1:54","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"18847:14:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5248,"nodeType":"ExpressionStatement","src":"18847:14:54"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5249,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"19135:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5250,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"19141:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19135:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5252,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19134:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":5253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19154:3:54","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"19134:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4899,"id":5255,"nodeType":"Return","src":"19127:30:54"}]},"documentation":{"id":4893,"nodeType":"StructuredDocumentation","src":"14097:103:54","text":" @dev Internal natural logarithm (ln(a)) with signed 18 decimal fixed point argument."},"id":5257,"implemented":true,"kind":"function","modifiers":[],"name":"_ln","nodeType":"FunctionDefinition","parameters":{"id":4896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4895,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5257,"src":"14218:8:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4894,"name":"int256","nodeType":"ElementaryTypeName","src":"14218:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"14217:10:54"},"returnParameters":{"id":4899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4898,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5257,"src":"14250:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4897,"name":"int256","nodeType":"ElementaryTypeName","src":"14250:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"14249:8:54"},"scope":5412,"src":"14205:4959:54","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":5410,"nodeType":"Block","src":"19486:1658:54","statements":[{"expression":{"id":5267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5265,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5260,"src":"19700:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"id":5266,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"19705:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19700:11:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5268,"nodeType":"ExpressionStatement","src":"19700:11:54"},{"assignments":[5270],"declarations":[{"constant":false,"id":5270,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":5410,"src":"20072:8:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5269,"name":"int256","nodeType":"ElementaryTypeName","src":"20072:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5283,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5271,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5260,"src":"20085:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5272,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20089:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20085:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5274,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20084:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5275,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20099:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20084:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5277,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20083:23:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5278,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5260,"src":"20110:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5279,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20114:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20110:10:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5281,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20109:12:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20083:38:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20072:49:54"},{"assignments":[5285],"declarations":[{"constant":false,"id":5285,"mutability":"mutable","name":"z_squared","nodeType":"VariableDeclaration","scope":5410,"src":"20131:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5284,"name":"int256","nodeType":"ElementaryTypeName","src":"20131:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5292,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5286,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5270,"src":"20151:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5287,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5270,"src":"20155:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20151:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5289,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20150:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5290,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20160:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20150:16:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20131:35:54"},{"assignments":[5294],"declarations":[{"constant":false,"id":5294,"mutability":"mutable","name":"num","nodeType":"VariableDeclaration","scope":5410,"src":"20247:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5293,"name":"int256","nodeType":"ElementaryTypeName","src":"20247:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5296,"initialValue":{"id":5295,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5270,"src":"20260:1:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20247:14:54"},{"assignments":[5298],"declarations":[{"constant":false,"id":5298,"mutability":"mutable","name":"seriesSum","nodeType":"VariableDeclaration","scope":5410,"src":"20375:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5297,"name":"int256","nodeType":"ElementaryTypeName","src":"20375:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5300,"initialValue":{"id":5299,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20394:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20375:22:54"},{"expression":{"id":5308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5301,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20468:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5302,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20475:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5303,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"20481:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20475:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5305,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20474:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5306,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20494:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20474:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20468:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5309,"nodeType":"ExpressionStatement","src":"20468:32:54"},{"expression":{"id":5314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5310,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"20510:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5311,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20523:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":5312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20529:1:54","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"20523:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20510:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5315,"nodeType":"ExpressionStatement","src":"20510:20:54"},{"expression":{"id":5323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5316,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20541:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5317,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20548:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5318,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"20554:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20548:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5320,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20547:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5321,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20567:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20547:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20541:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5324,"nodeType":"ExpressionStatement","src":"20541:32:54"},{"expression":{"id":5329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5325,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"20583:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5326,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20596:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":5327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20602:1:54","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"20596:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20583:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5330,"nodeType":"ExpressionStatement","src":"20583:20:54"},{"expression":{"id":5338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5331,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20614:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5332,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20621:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5333,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"20627:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20621:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5335,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20620:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5336,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20640:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20620:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20614:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5339,"nodeType":"ExpressionStatement","src":"20614:32:54"},{"expression":{"id":5344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5340,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"20656:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5341,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20669:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":5342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20675:1:54","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"20669:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20656:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5345,"nodeType":"ExpressionStatement","src":"20656:20:54"},{"expression":{"id":5353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5346,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20687:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5347,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20694:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5348,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"20700:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20694:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5350,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20693:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5351,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20713:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20693:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20687:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5354,"nodeType":"ExpressionStatement","src":"20687:32:54"},{"expression":{"id":5359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5355,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"20729:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5356,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20742:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":5357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20748:1:54","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"20742:7:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20729:20:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5360,"nodeType":"ExpressionStatement","src":"20729:20:54"},{"expression":{"id":5368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5361,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20760:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5362,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20767:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5363,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"20773:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20767:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5365,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20766:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5366,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20786:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20766:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20760:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5369,"nodeType":"ExpressionStatement","src":"20760:32:54"},{"expression":{"id":5374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5370,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"20802:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5371,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20815:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":5372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20821:2:54","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"20815:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20802:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5375,"nodeType":"ExpressionStatement","src":"20802:21:54"},{"expression":{"id":5383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5376,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20834:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5377,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20841:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5378,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"20847:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20841:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5380,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20840:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5381,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20860:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20840:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20834:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5384,"nodeType":"ExpressionStatement","src":"20834:32:54"},{"expression":{"id":5389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5385,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"20876:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5386,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20889:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3133","id":5387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20895:2:54","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"13"},"src":"20889:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20876:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5390,"nodeType":"ExpressionStatement","src":"20876:21:54"},{"expression":{"id":5398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5391,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20908:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5392,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20915:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5393,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"20921:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20915:15:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5395,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20914:17:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5396,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"20934:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20914:26:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20908:32:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5399,"nodeType":"ExpressionStatement","src":"20908:32:54"},{"expression":{"id":5404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5400,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"20950:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5401,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"20963:3:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3135","id":5402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20969:2:54","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"20963:8:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20950:21:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5405,"nodeType":"ExpressionStatement","src":"20950:21:54"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5406,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"21124:9:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":5407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21136:1:54","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"21124:13:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5264,"id":5409,"nodeType":"Return","src":"21117:20:54"}]},"documentation":{"id":5258,"nodeType":"StructuredDocumentation","src":"19170:255:54","text":" @dev Intrnal high precision (36 decimal places) natural logarithm (ln(x)) with signed 18 decimal fixed point argument,\n for x close to one.\n Should only be used if x is between LN_36_LOWER_BOUND and LN_36_UPPER_BOUND."},"id":5411,"implemented":true,"kind":"function","modifiers":[],"name":"_ln_36","nodeType":"FunctionDefinition","parameters":{"id":5261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5260,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":5411,"src":"19446:8:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5259,"name":"int256","nodeType":"ElementaryTypeName","src":"19446:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19445:10:54"},"returnParameters":{"id":5264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5263,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5411,"src":"19478:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5262,"name":"int256","nodeType":"ElementaryTypeName","src":"19478:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19477:8:54"},"scope":5412,"src":"19430:1714:54","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":5413,"src":"1681:19465:54"}],"src":"1094:20053:54"},"id":54},"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","exportedSymbols":{"Math":[5683]},"id":5684,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5414,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:55"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":5415,"nodeType":"ImportDirective","scope":5684,"sourceUnit":2249,"src":"58:90:55","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5416,"nodeType":"StructuredDocumentation","src":"150:139:55","text":" @dev Wrappers over Solidity's arithmetic operations with added overflow checks.\n Adapted from OpenZeppelin's SafeMath library."},"fullyImplemented":true,"id":5683,"linearizedBaseContracts":[5683],"name":"Math","nodeType":"ContractDefinition","nodes":[{"body":{"id":5425,"nodeType":"Block","src":"490:188:55","statements":[{"AST":{"nodeType":"YulBlock","src":"588:84:55","statements":[{"nodeType":"YulVariableDeclaration","src":"602:20:55","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"615:3:55","type":"","value":"255"},{"name":"a","nodeType":"YulIdentifier","src":"620:1:55"}],"functionName":{"name":"sar","nodeType":"YulIdentifier","src":"611:3:55"},"nodeType":"YulFunctionCall","src":"611:11:55"},"variables":[{"name":"s","nodeType":"YulTypedName","src":"606:1:55","type":""}]},{"nodeType":"YulAssignment","src":"635:27:55","value":{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"653:1:55"},{"name":"s","nodeType":"YulIdentifier","src":"656:1:55"}],"functionName":{"name":"xor","nodeType":"YulIdentifier","src":"649:3:55"},"nodeType":"YulFunctionCall","src":"649:9:55"},{"name":"s","nodeType":"YulIdentifier","src":"660:1:55"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"645:3:55"},"nodeType":"YulFunctionCall","src":"645:17:55"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"635:6:55"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5419,"isOffset":false,"isSlot":false,"src":"620:1:55","valueSize":1},{"declaration":5419,"isOffset":false,"isSlot":false,"src":"653:1:55","valueSize":1},{"declaration":5422,"isOffset":false,"isSlot":false,"src":"635:6:55","valueSize":1}],"id":5424,"nodeType":"InlineAssembly","src":"579:93:55"}]},"documentation":{"id":5417,"nodeType":"StructuredDocumentation","src":"352:71:55","text":" @dev Returns the absolute value of a signed integer."},"id":5426,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nodeType":"FunctionDefinition","parameters":{"id":5420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5419,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5426,"src":"441:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5418,"name":"int256","nodeType":"ElementaryTypeName","src":"441:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"440:10:55"},"returnParameters":{"id":5423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5422,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":5426,"src":"474:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5421,"name":"uint256","nodeType":"ElementaryTypeName","src":"474:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"473:16:55"},"scope":5683,"src":"428:250:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5452,"nodeType":"Block","src":"861:99:55","statements":[{"assignments":[5437],"declarations":[{"constant":false,"id":5437,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5452,"src":"871:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5436,"name":"uint256","nodeType":"ElementaryTypeName","src":"871:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5441,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5438,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5429,"src":"883:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5439,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5431,"src":"887:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"883:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"871:17:55"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5443,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5437,"src":"907:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5444,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5429,"src":"912:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"907:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5446,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"915:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1746,"src":"915:19:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5442,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"898:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"898:37:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5449,"nodeType":"ExpressionStatement","src":"898:37:55"},{"expression":{"id":5450,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5437,"src":"952:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5435,"id":5451,"nodeType":"Return","src":"945:8:55"}]},"documentation":{"id":5427,"nodeType":"StructuredDocumentation","src":"684:105:55","text":" @dev Returns the addition of two unsigned integers of 256 bits, reverting on overflow."},"id":5453,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":5432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5429,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5453,"src":"807:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5428,"name":"uint256","nodeType":"ElementaryTypeName","src":"807:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5431,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5453,"src":"818:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5430,"name":"uint256","nodeType":"ElementaryTypeName","src":"818:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"806:22:55"},"returnParameters":{"id":5435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5434,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5453,"src":"852:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5433,"name":"uint256","nodeType":"ElementaryTypeName","src":"852:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"851:9:55"},"scope":5683,"src":"794:166:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5493,"nodeType":"Block","src":"1126:130:55","statements":[{"assignments":[5464],"declarations":[{"constant":false,"id":5464,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5493,"src":"1136:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5463,"name":"int256","nodeType":"ElementaryTypeName","src":"1136:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5468,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5465,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5456,"src":"1147:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5466,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5458,"src":"1151:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1147:5:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1136:16:55"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5470,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5458,"src":"1172:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":5471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1177:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1172:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5473,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5464,"src":"1182:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5474,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5456,"src":"1187:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1182:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1172:16:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5477,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1171:18:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5478,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5458,"src":"1194:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":5479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1198:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1194:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5481,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5464,"src":"1203:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5482,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5456,"src":"1207:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1203:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1194:14:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5485,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1193:16:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1171:38:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5487,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1211:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1746,"src":"1211:19:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5469,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1162:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1162:69:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5490,"nodeType":"ExpressionStatement","src":"1162:69:55"},{"expression":{"id":5491,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5464,"src":"1248:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5462,"id":5492,"nodeType":"Return","src":"1241:8:55"}]},"documentation":{"id":5454,"nodeType":"StructuredDocumentation","src":"966:91:55","text":" @dev Returns the addition of two signed integers, reverting on overflow."},"id":5494,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":5459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5456,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5494,"src":"1075:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5455,"name":"int256","nodeType":"ElementaryTypeName","src":"1075:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5458,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5494,"src":"1085:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5457,"name":"int256","nodeType":"ElementaryTypeName","src":"1085:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1074:20:55"},"returnParameters":{"id":5462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5461,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5494,"src":"1118:6:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5460,"name":"int256","nodeType":"ElementaryTypeName","src":"1118:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1117:8:55"},"scope":5683,"src":"1062:194:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5520,"nodeType":"Block","src":"1442:99:55","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5505,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5499,"src":"1461:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5506,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5497,"src":"1466:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1461:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5508,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1469:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1749,"src":"1469:19:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5504,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1452:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1452:37:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5511,"nodeType":"ExpressionStatement","src":"1452:37:55"},{"assignments":[5513],"declarations":[{"constant":false,"id":5513,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5520,"src":"1499:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5512,"name":"uint256","nodeType":"ElementaryTypeName","src":"1499:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5517,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5514,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5497,"src":"1511:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5515,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5499,"src":"1515:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1511:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1499:17:55"},{"expression":{"id":5518,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5513,"src":"1533:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5503,"id":5519,"nodeType":"Return","src":"1526:8:55"}]},"documentation":{"id":5495,"nodeType":"StructuredDocumentation","src":"1262:108:55","text":" @dev Returns the subtraction of two unsigned integers of 256 bits, reverting on overflow."},"id":5521,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":5500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5497,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5521,"src":"1388:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5496,"name":"uint256","nodeType":"ElementaryTypeName","src":"1388:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5499,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5521,"src":"1399:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5498,"name":"uint256","nodeType":"ElementaryTypeName","src":"1399:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1387:22:55"},"returnParameters":{"id":5503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5502,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5521,"src":"1433:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5501,"name":"uint256","nodeType":"ElementaryTypeName","src":"1433:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1432:9:55"},"scope":5683,"src":"1375:166:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5561,"nodeType":"Block","src":"1710:130:55","statements":[{"assignments":[5532],"declarations":[{"constant":false,"id":5532,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5561,"src":"1720:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5531,"name":"int256","nodeType":"ElementaryTypeName","src":"1720:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5536,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5533,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5524,"src":"1731:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5534,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5526,"src":"1735:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1731:5:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1720:16:55"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5538,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5526,"src":"1756:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":5539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1761:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1756:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5541,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5532,"src":"1766:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5542,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5524,"src":"1771:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1766:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1756:16:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5545,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1755:18:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5546,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5526,"src":"1778:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":5547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1782:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1778:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5549,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5532,"src":"1787:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5550,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5524,"src":"1791:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1787:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1778:14:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5553,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1777:16:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1755:38:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5555,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1795:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1749,"src":"1795:19:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5537,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1746:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1746:69:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5558,"nodeType":"ExpressionStatement","src":"1746:69:55"},{"expression":{"id":5559,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5532,"src":"1832:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5530,"id":5560,"nodeType":"Return","src":"1825:8:55"}]},"documentation":{"id":5522,"nodeType":"StructuredDocumentation","src":"1547:94:55","text":" @dev Returns the subtraction of two signed integers, reverting on overflow."},"id":5562,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":5527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5524,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5562,"src":"1659:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5523,"name":"int256","nodeType":"ElementaryTypeName","src":"1659:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5526,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5562,"src":"1669:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5525,"name":"int256","nodeType":"ElementaryTypeName","src":"1669:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1658:20:55"},"returnParameters":{"id":5530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5529,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5562,"src":"1702:6:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5528,"name":"int256","nodeType":"ElementaryTypeName","src":"1702:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1701:8:55"},"scope":5683,"src":"1646:194:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5573,"nodeType":"Block","src":"1996:154:55","statements":[{"AST":{"nodeType":"YulBlock","src":"2078:66:55","statements":[{"nodeType":"YulAssignment","src":"2092:42:55","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2106:1:55"},{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2117:1:55"},{"name":"b","nodeType":"YulIdentifier","src":"2120:1:55"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2113:3:55"},"nodeType":"YulFunctionCall","src":"2113:9:55"},{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2127:1:55"},{"name":"b","nodeType":"YulIdentifier","src":"2130:1:55"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2124:2:55"},"nodeType":"YulFunctionCall","src":"2124:8:55"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2109:3:55"},"nodeType":"YulFunctionCall","src":"2109:24:55"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2102:3:55"},"nodeType":"YulFunctionCall","src":"2102:32:55"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2092:6:55"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5565,"isOffset":false,"isSlot":false,"src":"2106:1:55","valueSize":1},{"declaration":5565,"isOffset":false,"isSlot":false,"src":"2117:1:55","valueSize":1},{"declaration":5565,"isOffset":false,"isSlot":false,"src":"2127:1:55","valueSize":1},{"declaration":5567,"isOffset":false,"isSlot":false,"src":"2120:1:55","valueSize":1},{"declaration":5567,"isOffset":false,"isSlot":false,"src":"2130:1:55","valueSize":1},{"declaration":5570,"isOffset":false,"isSlot":false,"src":"2092:6:55","valueSize":1}],"id":5572,"nodeType":"InlineAssembly","src":"2069:75:55"}]},"documentation":{"id":5563,"nodeType":"StructuredDocumentation","src":"1846:71:55","text":" @dev Returns the largest of two numbers of 256 bits."},"id":5574,"implemented":true,"kind":"function","modifiers":[],"name":"max","nodeType":"FunctionDefinition","parameters":{"id":5568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5565,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5574,"src":"1935:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5564,"name":"uint256","nodeType":"ElementaryTypeName","src":"1935:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5567,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5574,"src":"1946:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5566,"name":"uint256","nodeType":"ElementaryTypeName","src":"1946:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1934:22:55"},"returnParameters":{"id":5571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5570,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":5574,"src":"1980:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5569,"name":"uint256","nodeType":"ElementaryTypeName","src":"1980:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1979:16:55"},"scope":5683,"src":"1922:228:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5585,"nodeType":"Block","src":"2307:143:55","statements":[{"AST":{"nodeType":"YulBlock","src":"2378:66:55","statements":[{"nodeType":"YulAssignment","src":"2392:42:55","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2406:1:55"},{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2417:1:55"},{"name":"b","nodeType":"YulIdentifier","src":"2420:1:55"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2413:3:55"},"nodeType":"YulFunctionCall","src":"2413:9:55"},{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2427:1:55"},{"name":"b","nodeType":"YulIdentifier","src":"2430:1:55"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2424:2:55"},"nodeType":"YulFunctionCall","src":"2424:8:55"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2409:3:55"},"nodeType":"YulFunctionCall","src":"2409:24:55"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2402:3:55"},"nodeType":"YulFunctionCall","src":"2402:32:55"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2392:6:55"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5577,"isOffset":false,"isSlot":false,"src":"2406:1:55","valueSize":1},{"declaration":5577,"isOffset":false,"isSlot":false,"src":"2417:1:55","valueSize":1},{"declaration":5577,"isOffset":false,"isSlot":false,"src":"2427:1:55","valueSize":1},{"declaration":5579,"isOffset":false,"isSlot":false,"src":"2420:1:55","valueSize":1},{"declaration":5579,"isOffset":false,"isSlot":false,"src":"2430:1:55","valueSize":1},{"declaration":5582,"isOffset":false,"isSlot":false,"src":"2392:6:55","valueSize":1}],"id":5584,"nodeType":"InlineAssembly","src":"2369:75:55"}]},"documentation":{"id":5575,"nodeType":"StructuredDocumentation","src":"2156:72:55","text":" @dev Returns the smallest of two numbers of 256 bits."},"id":5586,"implemented":true,"kind":"function","modifiers":[],"name":"min","nodeType":"FunctionDefinition","parameters":{"id":5580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5577,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5586,"src":"2246:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5576,"name":"uint256","nodeType":"ElementaryTypeName","src":"2246:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5579,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5586,"src":"2257:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5578,"name":"uint256","nodeType":"ElementaryTypeName","src":"2257:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2245:22:55"},"returnParameters":{"id":5583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5582,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":5586,"src":"2291:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5581,"name":"uint256","nodeType":"ElementaryTypeName","src":"2291:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:16:55"},"scope":5683,"src":"2233:217:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5617,"nodeType":"Block","src":"2523:113:55","statements":[{"assignments":[5596],"declarations":[{"constant":false,"id":5596,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5617,"src":"2533:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5595,"name":"uint256","nodeType":"ElementaryTypeName","src":"2533:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5600,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5597,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5588,"src":"2545:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5598,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5590,"src":"2549:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2545:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2533:17:55"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5602,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5588,"src":"2569:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2574:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2569:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5605,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5596,"src":"2579:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5606,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5588,"src":"2583:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2579:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5608,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5590,"src":"2588:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2579:10:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2569:20:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5611,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2591:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MUL_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1755,"src":"2591:19:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5601,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2560:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2560:51:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5614,"nodeType":"ExpressionStatement","src":"2560:51:55"},{"expression":{"id":5615,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5596,"src":"2628:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5594,"id":5616,"nodeType":"Return","src":"2621:8:55"}]},"id":5618,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":5591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5588,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5618,"src":"2469:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5587,"name":"uint256","nodeType":"ElementaryTypeName","src":"2469:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5590,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5618,"src":"2480:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5589,"name":"uint256","nodeType":"ElementaryTypeName","src":"2480:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2468:22:55"},"returnParameters":{"id":5594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5593,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5618,"src":"2514:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5592,"name":"uint256","nodeType":"ElementaryTypeName","src":"2514:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2513:9:55"},"scope":5683,"src":"2456:180:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5640,"nodeType":"Block","src":"2753:61:55","statements":[{"expression":{"condition":{"id":5629,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5624,"src":"2770:7:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":5635,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5620,"src":"2802:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5636,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5622,"src":"2805:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5634,"name":"divDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5663,"src":"2794:7:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2794:13:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2770:37:55","trueExpression":{"arguments":[{"id":5631,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5620,"src":"2786:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5632,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5622,"src":"2789:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5630,"name":"divUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5682,"src":"2780:5:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2780:11:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5628,"id":5639,"nodeType":"Return","src":"2763:44:55"}]},"id":5641,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":5625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5620,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5641,"src":"2664:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5619,"name":"uint256","nodeType":"ElementaryTypeName","src":"2664:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5622,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5641,"src":"2683:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5621,"name":"uint256","nodeType":"ElementaryTypeName","src":"2683:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5624,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":5641,"src":"2702:12:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5623,"name":"bool","nodeType":"ElementaryTypeName","src":"2702:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2654:66:55"},"returnParameters":{"id":5628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5627,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5641,"src":"2744:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5626,"name":"uint256","nodeType":"ElementaryTypeName","src":"2744:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2743:9:55"},"scope":5683,"src":"2642:172:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5662,"nodeType":"Block","src":"2891:77:55","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5651,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5645,"src":"2910:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2915:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2910:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5654,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2918:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1758,"src":"2918:20:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5650,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2901:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2901:38:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5657,"nodeType":"ExpressionStatement","src":"2901:38:55"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5658,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5643,"src":"2956:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5659,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5645,"src":"2960:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2956:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5649,"id":5661,"nodeType":"Return","src":"2949:12:55"}]},"id":5663,"implemented":true,"kind":"function","modifiers":[],"name":"divDown","nodeType":"FunctionDefinition","parameters":{"id":5646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5643,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5663,"src":"2837:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5642,"name":"uint256","nodeType":"ElementaryTypeName","src":"2837:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5645,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5663,"src":"2848:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5644,"name":"uint256","nodeType":"ElementaryTypeName","src":"2848:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2836:22:55"},"returnParameters":{"id":5649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5648,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5663,"src":"2882:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5647,"name":"uint256","nodeType":"ElementaryTypeName","src":"2882:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2881:9:55"},"scope":5683,"src":"2820:148:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5681,"nodeType":"Block","src":"3050:233:55","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5673,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"3069:1:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3074:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3069:6:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5676,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"3077:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1758,"src":"3077:20:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5672,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"3060:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3060:38:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5679,"nodeType":"ExpressionStatement","src":"3060:38:55"},{"AST":{"nodeType":"YulBlock","src":"3194:83:55","statements":[{"nodeType":"YulAssignment","src":"3208:59:55","value":{"arguments":[{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"3236:1:55"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3229:6:55"},"nodeType":"YulFunctionCall","src":"3229:9:55"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3222:6:55"},"nodeType":"YulFunctionCall","src":"3222:17:55"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3245:1:55","type":"","value":"1"},{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"3256:1:55"},{"kind":"number","nodeType":"YulLiteral","src":"3259:1:55","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3252:3:55"},"nodeType":"YulFunctionCall","src":"3252:9:55"},{"name":"b","nodeType":"YulIdentifier","src":"3263:1:55"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3248:3:55"},"nodeType":"YulFunctionCall","src":"3248:17:55"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3241:3:55"},"nodeType":"YulFunctionCall","src":"3241:25:55"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3218:3:55"},"nodeType":"YulFunctionCall","src":"3218:49:55"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"3208:6:55"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5665,"isOffset":false,"isSlot":false,"src":"3236:1:55","valueSize":1},{"declaration":5665,"isOffset":false,"isSlot":false,"src":"3256:1:55","valueSize":1},{"declaration":5667,"isOffset":false,"isSlot":false,"src":"3263:1:55","valueSize":1},{"declaration":5670,"isOffset":false,"isSlot":false,"src":"3208:6:55","valueSize":1}],"id":5680,"nodeType":"InlineAssembly","src":"3185:92:55"}]},"id":5682,"implemented":true,"kind":"function","modifiers":[],"name":"divUp","nodeType":"FunctionDefinition","parameters":{"id":5668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5665,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5682,"src":"2989:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5664,"name":"uint256","nodeType":"ElementaryTypeName","src":"2989:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5667,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5682,"src":"3000:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5666,"name":"uint256","nodeType":"ElementaryTypeName","src":"3000:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2988:22:55"},"returnParameters":{"id":5671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5670,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":5682,"src":"3034:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5669,"name":"uint256","nodeType":"ElementaryTypeName","src":"3034:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3033:16:55"},"scope":5683,"src":"2974:309:55","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5684,"src":"290:2995:55"}],"src":"33:3253:55"},"id":55},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","exportedSymbols":{"Address":[5850]},"id":5851,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5685,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"254:23:56"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":5686,"nodeType":"ImportDirective","scope":5851,"sourceUnit":2249,"src":"279:90:56","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5687,"nodeType":"StructuredDocumentation","src":"371:67:56","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":5850,"linearizedBaseContracts":[5850],"name":"Address","nodeType":"ContractDefinition","nodes":[{"body":{"id":5703,"nodeType":"Block","src":"1097:367:56","statements":[{"assignments":[5696],"declarations":[{"constant":false,"id":5696,"mutability":"mutable","name":"size","nodeType":"VariableDeclaration","scope":5703,"src":"1294:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5695,"name":"uint256","nodeType":"ElementaryTypeName","src":"1294:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5697,"nodeType":"VariableDeclarationStatement","src":"1294:12:56"},{"AST":{"nodeType":"YulBlock","src":"1381:52:56","statements":[{"nodeType":"YulAssignment","src":"1395:28:56","value":{"arguments":[{"name":"account","nodeType":"YulIdentifier","src":"1415:7:56"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"1403:11:56"},"nodeType":"YulFunctionCall","src":"1403:20:56"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1395:4:56"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5690,"isOffset":false,"isSlot":false,"src":"1415:7:56","valueSize":1},{"declaration":5696,"isOffset":false,"isSlot":false,"src":"1395:4:56","valueSize":1}],"id":5698,"nodeType":"InlineAssembly","src":"1372:61:56"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5699,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5696,"src":"1449:4:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1456:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1449:8:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5694,"id":5702,"nodeType":"Return","src":"1442:15:56"}]},"documentation":{"id":5688,"nodeType":"StructuredDocumentation","src":"461:565:56","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="},"id":5704,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nodeType":"FunctionDefinition","parameters":{"id":5691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5690,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":5704,"src":"1051:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5689,"name":"address","nodeType":"ElementaryTypeName","src":"1051:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1050:17:56"},"returnParameters":{"id":5694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5693,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5704,"src":"1091:4:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5692,"name":"bool","nodeType":"ElementaryTypeName","src":"1091:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1090:6:56"},"scope":5850,"src":"1031:433:56","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5739,"nodeType":"Block","src":"2492:298:56","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5715,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2519:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$5850","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$5850","typeString":"library Address"}],"id":5714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2511:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5713,"name":"address","nodeType":"ElementaryTypeName","src":"2511:7:56","typeDescriptions":{}}},"id":5716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2511:13:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2511:21:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5718,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5709,"src":"2536:6:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2511:31:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5720,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2544:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADDRESS_INSUFFICIENT_BALANCE","nodeType":"MemberAccess","referencedDeclaration":2064,"src":"2544:35:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5712,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2502:8:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2502:78:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5723,"nodeType":"ExpressionStatement","src":"2502:78:56"},{"assignments":[5725,null],"declarations":[{"constant":false,"id":5725,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":5739,"src":"2669:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5724,"name":"bool","nodeType":"ElementaryTypeName","src":"2669:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":5732,"initialValue":{"arguments":[{"hexValue":"","id":5730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2719:2:56","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":5726,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"2687:9:56","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":5727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2687:14:56","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":5728,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5709,"src":"2710:6:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2687:31:56","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2687:35:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2668:54:56"},{"expression":{"arguments":[{"id":5734,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5725,"src":"2741:7:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5735,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2750:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADDRESS_CANNOT_SEND_VALUE","nodeType":"MemberAccess","referencedDeclaration":2067,"src":"2750:32:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5733,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2732:8:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2732:51:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5738,"nodeType":"ExpressionStatement","src":"2732:51:56"}]},"documentation":{"id":5705,"nodeType":"StructuredDocumentation","src":"1510:906:56","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":5740,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nodeType":"FunctionDefinition","parameters":{"id":5710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5707,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":5740,"src":"2440:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":5706,"name":"address","nodeType":"ElementaryTypeName","src":"2440:15:56","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":5709,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":5740,"src":"2467:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5708,"name":"uint256","nodeType":"ElementaryTypeName","src":"2467:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2439:43:56"},"returnParameters":{"id":5711,"nodeType":"ParameterList","parameters":[],"src":"2492:0:56"},"scope":5850,"src":"2421:369:56","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5764,"nodeType":"Block","src":"3583:189:56","statements":[{"assignments":[5751,5753],"declarations":[{"constant":false,"id":5751,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":5764,"src":"3653:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5750,"name":"bool","nodeType":"ElementaryTypeName","src":"3653:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5753,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":5764,"src":"3667:23:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5752,"name":"bytes","nodeType":"ElementaryTypeName","src":"3667:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5758,"initialValue":{"arguments":[{"id":5756,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5745,"src":"3706:4:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5754,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5743,"src":"3694:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"3694:11:56","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3694:17:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3652:59:56"},{"expression":{"arguments":[{"id":5760,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5751,"src":"3745:7:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5761,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5753,"src":"3754:10:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5759,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5849,"src":"3728:16:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory) pure returns (bytes memory)"}},"id":5762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3728:37:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5749,"id":5763,"nodeType":"Return","src":"3721:44:56"}]},"documentation":{"id":5741,"nodeType":"StructuredDocumentation","src":"2796:693:56","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":5765,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nodeType":"FunctionDefinition","parameters":{"id":5746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5743,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":5765,"src":"3516:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5742,"name":"address","nodeType":"ElementaryTypeName","src":"3516:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5745,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5765,"src":"3532:17:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5744,"name":"bytes","nodeType":"ElementaryTypeName","src":"3532:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3515:35:56"},"returnParameters":{"id":5749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5748,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5765,"src":"3569:12:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5747,"name":"bytes","nodeType":"ElementaryTypeName","src":"3569:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3568:14:56"},"scope":5850,"src":"3494:278:56","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5793,"nodeType":"Block","src":"4155:205:56","statements":[{"assignments":[5778,5780],"declarations":[{"constant":false,"id":5778,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":5793,"src":"4225:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5777,"name":"bool","nodeType":"ElementaryTypeName","src":"4225:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5780,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":5793,"src":"4239:23:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5779,"name":"bytes","nodeType":"ElementaryTypeName","src":"4239:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5787,"initialValue":{"arguments":[{"id":5785,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5770,"src":"4294:4:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5781,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5768,"src":"4266:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"4266:11:56","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":5783,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5772,"src":"4286:5:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4266:27:56","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4266:33:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4224:75:56"},{"expression":{"arguments":[{"id":5789,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5778,"src":"4333:7:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5790,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5780,"src":"4342:10:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5788,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5849,"src":"4316:16:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory) pure returns (bytes memory)"}},"id":5791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4316:37:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5776,"id":5792,"nodeType":"Return","src":"4309:44:56"}]},"documentation":{"id":5766,"nodeType":"StructuredDocumentation","src":"3817:190:56","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but passing some native ETH as msg.value to the call.\n _Available since v3.4._"},"id":5794,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nodeType":"FunctionDefinition","parameters":{"id":5773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5768,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":5794,"src":"4052:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5767,"name":"address","nodeType":"ElementaryTypeName","src":"4052:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5770,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5794,"src":"4076:17:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5769,"name":"bytes","nodeType":"ElementaryTypeName","src":"4076:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5772,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":5794,"src":"4103:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5771,"name":"uint256","nodeType":"ElementaryTypeName","src":"4103:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4042:80:56"},"returnParameters":{"id":5776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5775,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5794,"src":"4141:12:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5774,"name":"bytes","nodeType":"ElementaryTypeName","src":"4141:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4140:14:56"},"scope":5850,"src":"4012:348:56","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5818,"nodeType":"Block","src":"4636:197:56","statements":[{"assignments":[5805,5807],"declarations":[{"constant":false,"id":5805,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":5818,"src":"4706:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5804,"name":"bool","nodeType":"ElementaryTypeName","src":"4706:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5807,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":5818,"src":"4720:23:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5806,"name":"bytes","nodeType":"ElementaryTypeName","src":"4720:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5812,"initialValue":{"arguments":[{"id":5810,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5799,"src":"4767:4:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5808,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5797,"src":"4747:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"4747:19:56","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":5811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4747:25:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4705:67:56"},{"expression":{"arguments":[{"id":5814,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5805,"src":"4806:7:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5815,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5807,"src":"4815:10:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5813,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5849,"src":"4789:16:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory) pure returns (bytes memory)"}},"id":5816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4789:37:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5803,"id":5817,"nodeType":"Return","src":"4782:44:56"}]},"documentation":{"id":5795,"nodeType":"StructuredDocumentation","src":"4366:168:56","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":5819,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nodeType":"FunctionDefinition","parameters":{"id":5800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5797,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":5819,"src":"4569:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5796,"name":"address","nodeType":"ElementaryTypeName","src":"4569:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5799,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5819,"src":"4585:17:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5798,"name":"bytes","nodeType":"ElementaryTypeName","src":"4585:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4568:35:56"},"returnParameters":{"id":5803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5802,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5819,"src":"4622:12:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5801,"name":"bytes","nodeType":"ElementaryTypeName","src":"4622:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4621:14:56"},"scope":5850,"src":"4539:294:56","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5848,"nodeType":"Block","src":"5159:612:56","statements":[{"condition":{"id":5829,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5822,"src":"5173:7:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5846,"nodeType":"Block","src":"5230:535:56","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5833,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5824,"src":"5314:10:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5314:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5334:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5314:21:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5844,"nodeType":"Block","src":"5685:70:56","statements":[{"expression":{"arguments":[{"expression":{"id":5840,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"5711:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":5841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LOW_LEVEL_CALL_FAILED","nodeType":"MemberAccess","referencedDeclaration":2097,"src":"5711:28:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5839,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"5703:7:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":5842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5703:37:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5843,"nodeType":"ExpressionStatement","src":"5703:37:56"}]},"id":5845,"nodeType":"IfStatement","src":"5310:445:56","trueBody":{"id":5838,"nodeType":"Block","src":"5337:342:56","statements":[{"AST":{"nodeType":"YulBlock","src":"5520:145:56","statements":[{"nodeType":"YulVariableDeclaration","src":"5542:40:56","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"5571:10:56"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5565:5:56"},"nodeType":"YulFunctionCall","src":"5565:17:56"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"5546:15:56","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5614:2:56","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"5618:10:56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5610:3:56"},"nodeType":"YulFunctionCall","src":"5610:19:56"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"5631:15:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5603:6:56"},"nodeType":"YulFunctionCall","src":"5603:44:56"},"nodeType":"YulExpressionStatement","src":"5603:44:56"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5824,"isOffset":false,"isSlot":false,"src":"5571:10:56","valueSize":1},{"declaration":5824,"isOffset":false,"isSlot":false,"src":"5618:10:56","valueSize":1}],"id":5837,"nodeType":"InlineAssembly","src":"5511:154:56"}]}}]},"id":5847,"nodeType":"IfStatement","src":"5169:596:56","trueBody":{"id":5832,"nodeType":"Block","src":"5182:42:56","statements":[{"expression":{"id":5830,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5824,"src":"5203:10:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5828,"id":5831,"nodeType":"Return","src":"5196:17:56"}]}}]},"documentation":{"id":5820,"nodeType":"StructuredDocumentation","src":"4839:213:56","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling up the\n revert reason or using the one provided.\n _Available since v4.3._"},"id":5849,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nodeType":"FunctionDefinition","parameters":{"id":5825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5822,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":5849,"src":"5083:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5821,"name":"bool","nodeType":"ElementaryTypeName","src":"5083:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5824,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":5849,"src":"5097:23:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5823,"name":"bytes","nodeType":"ElementaryTypeName","src":"5097:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5082:39:56"},"returnParameters":{"id":5828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5827,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5849,"src":"5145:12:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5826,"name":"bytes","nodeType":"ElementaryTypeName","src":"5145:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5144:14:56"},"scope":5850,"src":"5057:714:56","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5851,"src":"439:5334:56"}],"src":"254:5520:56"},"id":56},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol","exportedSymbols":{"Clones":[5930]},"id":5931,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5852,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"85:23:57"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5853,"nodeType":"StructuredDocumentation","src":"110:629:57","text":" @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n deploying minimal proxy contracts, also known as \"clones\".\n > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n deterministic method.\n _Available since v3.4._"},"fullyImplemented":true,"id":5930,"linearizedBaseContracts":[5930],"name":"Clones","nodeType":"ContractDefinition","nodes":[{"body":{"id":5872,"nodeType":"Block","src":"1076:440:57","statements":[{"AST":{"nodeType":"YulBlock","src":"1095:348:57","statements":[{"nodeType":"YulVariableDeclaration","src":"1109:22:57","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1126:4:57","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1120:5:57"},"nodeType":"YulFunctionCall","src":"1120:11:57"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"1113:3:57","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1151:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"1156:66:57","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1144:6:57"},"nodeType":"YulFunctionCall","src":"1144:79:57"},"nodeType":"YulExpressionStatement","src":"1144:79:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1247:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"1252:4:57","type":"","value":"0x14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1243:3:57"},"nodeType":"YulFunctionCall","src":"1243:14:57"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1263:4:57","type":"","value":"0x60"},{"name":"implementation","nodeType":"YulIdentifier","src":"1269:14:57"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1259:3:57"},"nodeType":"YulFunctionCall","src":"1259:25:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1236:6:57"},"nodeType":"YulFunctionCall","src":"1236:49:57"},"nodeType":"YulExpressionStatement","src":"1236:49:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1309:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"1314:4:57","type":"","value":"0x28"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1305:3:57"},"nodeType":"YulFunctionCall","src":"1305:14:57"},{"kind":"number","nodeType":"YulLiteral","src":"1321:66:57","type":"","value":"0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1298:6:57"},"nodeType":"YulFunctionCall","src":"1298:90:57"},"nodeType":"YulExpressionStatement","src":"1298:90:57"},{"nodeType":"YulAssignment","src":"1401:32:57","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1420:1:57","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"1423:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"1428:4:57","type":"","value":"0x37"}],"functionName":{"name":"create","nodeType":"YulIdentifier","src":"1413:6:57"},"nodeType":"YulFunctionCall","src":"1413:20:57"},"variableNames":[{"name":"instance","nodeType":"YulIdentifier","src":"1401:8:57"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5856,"isOffset":false,"isSlot":false,"src":"1269:14:57","valueSize":1},{"declaration":5859,"isOffset":false,"isSlot":false,"src":"1401:8:57","valueSize":1}],"id":5861,"nodeType":"InlineAssembly","src":"1086:357:57"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5863,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5859,"src":"1460:8:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1480:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1472:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5864,"name":"address","nodeType":"ElementaryTypeName","src":"1472:7:57","typeDescriptions":{}}},"id":5867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1472:10:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1460:22:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a20637265617465206661696c6564","id":5869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1484:24:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""},"value":"ERC1167: create failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""}],"id":5862,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1452:7:57","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1452:57:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5871,"nodeType":"ExpressionStatement","src":"1452:57:57"}]},"documentation":{"id":5854,"nodeType":"StructuredDocumentation","src":"804:192:57","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create opcode, which should never revert."},"id":5873,"implemented":true,"kind":"function","modifiers":[],"name":"clone","nodeType":"FunctionDefinition","parameters":{"id":5857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5856,"mutability":"mutable","name":"implementation","nodeType":"VariableDeclaration","scope":5873,"src":"1016:22:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5855,"name":"address","nodeType":"ElementaryTypeName","src":"1016:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1015:24:57"},"returnParameters":{"id":5860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5859,"mutability":"mutable","name":"instance","nodeType":"VariableDeclaration","scope":5873,"src":"1058:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5858,"name":"address","nodeType":"ElementaryTypeName","src":"1058:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1057:18:57"},"scope":5930,"src":"1001:515:57","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5894,"nodeType":"Block","src":"1993:448:57","statements":[{"AST":{"nodeType":"YulBlock","src":"2012:355:57","statements":[{"nodeType":"YulVariableDeclaration","src":"2026:22:57","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2043:4:57","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2037:5:57"},"nodeType":"YulFunctionCall","src":"2037:11:57"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"2030:3:57","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2068:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"2073:66:57","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2061:6:57"},"nodeType":"YulFunctionCall","src":"2061:79:57"},"nodeType":"YulExpressionStatement","src":"2061:79:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2164:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"2169:4:57","type":"","value":"0x14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2160:3:57"},"nodeType":"YulFunctionCall","src":"2160:14:57"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2180:4:57","type":"","value":"0x60"},{"name":"implementation","nodeType":"YulIdentifier","src":"2186:14:57"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2176:3:57"},"nodeType":"YulFunctionCall","src":"2176:25:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2153:6:57"},"nodeType":"YulFunctionCall","src":"2153:49:57"},"nodeType":"YulExpressionStatement","src":"2153:49:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2226:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"2231:4:57","type":"","value":"0x28"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2222:3:57"},"nodeType":"YulFunctionCall","src":"2222:14:57"},{"kind":"number","nodeType":"YulLiteral","src":"2238:66:57","type":"","value":"0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2215:6:57"},"nodeType":"YulFunctionCall","src":"2215:90:57"},"nodeType":"YulExpressionStatement","src":"2215:90:57"},{"nodeType":"YulAssignment","src":"2318:39:57","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2338:1:57","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2341:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"2346:4:57","type":"","value":"0x37"},{"name":"salt","nodeType":"YulIdentifier","src":"2352:4:57"}],"functionName":{"name":"create2","nodeType":"YulIdentifier","src":"2330:7:57"},"nodeType":"YulFunctionCall","src":"2330:27:57"},"variableNames":[{"name":"instance","nodeType":"YulIdentifier","src":"2318:8:57"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5876,"isOffset":false,"isSlot":false,"src":"2186:14:57","valueSize":1},{"declaration":5881,"isOffset":false,"isSlot":false,"src":"2318:8:57","valueSize":1},{"declaration":5878,"isOffset":false,"isSlot":false,"src":"2352:4:57","valueSize":1}],"id":5883,"nodeType":"InlineAssembly","src":"2003:364:57"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5885,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5881,"src":"2384:8:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2404:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2396:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5886,"name":"address","nodeType":"ElementaryTypeName","src":"2396:7:57","typeDescriptions":{}}},"id":5889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2396:10:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2384:22:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a2063726561746532206661696c6564","id":5891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2408:25:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""},"value":"ERC1167: create2 failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""}],"id":5884,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2376:7:57","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2376:58:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5893,"nodeType":"ExpressionStatement","src":"2376:58:57"}]},"documentation":{"id":5874,"nodeType":"StructuredDocumentation","src":"1522:364:57","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create2 opcode and a `salt` to deterministically deploy\n the clone. Using the same `implementation` and `salt` multiple time will revert, since\n the clones cannot be deployed twice at the same address."},"id":5895,"implemented":true,"kind":"function","modifiers":[],"name":"cloneDeterministic","nodeType":"FunctionDefinition","parameters":{"id":5879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5876,"mutability":"mutable","name":"implementation","nodeType":"VariableDeclaration","scope":5895,"src":"1919:22:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5875,"name":"address","nodeType":"ElementaryTypeName","src":"1919:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5878,"mutability":"mutable","name":"salt","nodeType":"VariableDeclaration","scope":5895,"src":"1943:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5877,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1943:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1918:38:57"},"returnParameters":{"id":5882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5881,"mutability":"mutable","name":"instance","nodeType":"VariableDeclaration","scope":5895,"src":"1975:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5880,"name":"address","nodeType":"ElementaryTypeName","src":"1975:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1974:18:57"},"scope":5930,"src":"1891:550:57","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5908,"nodeType":"Block","src":"2716:539:57","statements":[{"AST":{"nodeType":"YulBlock","src":"2735:514:57","statements":[{"nodeType":"YulVariableDeclaration","src":"2749:22:57","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2766:4:57","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2760:5:57"},"nodeType":"YulFunctionCall","src":"2760:11:57"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"2753:3:57","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2791:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"2796:66:57","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2784:6:57"},"nodeType":"YulFunctionCall","src":"2784:79:57"},"nodeType":"YulExpressionStatement","src":"2784:79:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2887:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"2892:4:57","type":"","value":"0x14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2883:3:57"},"nodeType":"YulFunctionCall","src":"2883:14:57"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2903:4:57","type":"","value":"0x60"},{"name":"implementation","nodeType":"YulIdentifier","src":"2909:14:57"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2899:3:57"},"nodeType":"YulFunctionCall","src":"2899:25:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2876:6:57"},"nodeType":"YulFunctionCall","src":"2876:49:57"},"nodeType":"YulExpressionStatement","src":"2876:49:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2949:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"2954:4:57","type":"","value":"0x28"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2945:3:57"},"nodeType":"YulFunctionCall","src":"2945:14:57"},{"kind":"number","nodeType":"YulLiteral","src":"2961:66:57","type":"","value":"0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2938:6:57"},"nodeType":"YulFunctionCall","src":"2938:90:57"},"nodeType":"YulExpressionStatement","src":"2938:90:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3052:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"3057:4:57","type":"","value":"0x38"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3048:3:57"},"nodeType":"YulFunctionCall","src":"3048:14:57"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3068:4:57","type":"","value":"0x60"},{"name":"deployer","nodeType":"YulIdentifier","src":"3074:8:57"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3064:3:57"},"nodeType":"YulFunctionCall","src":"3064:19:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3041:6:57"},"nodeType":"YulFunctionCall","src":"3041:43:57"},"nodeType":"YulExpressionStatement","src":"3041:43:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3108:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"3113:4:57","type":"","value":"0x4c"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3104:3:57"},"nodeType":"YulFunctionCall","src":"3104:14:57"},{"name":"salt","nodeType":"YulIdentifier","src":"3120:4:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3097:6:57"},"nodeType":"YulFunctionCall","src":"3097:28:57"},"nodeType":"YulExpressionStatement","src":"3097:28:57"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3149:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"3154:4:57","type":"","value":"0x6c"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3145:3:57"},"nodeType":"YulFunctionCall","src":"3145:14:57"},{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3171:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"3176:4:57","type":"","value":"0x37"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3161:9:57"},"nodeType":"YulFunctionCall","src":"3161:20:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3138:6:57"},"nodeType":"YulFunctionCall","src":"3138:44:57"},"nodeType":"YulExpressionStatement","src":"3138:44:57"},{"nodeType":"YulAssignment","src":"3195:44:57","value":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3222:3:57"},{"kind":"number","nodeType":"YulLiteral","src":"3227:4:57","type":"","value":"0x37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3218:3:57"},"nodeType":"YulFunctionCall","src":"3218:14:57"},{"kind":"number","nodeType":"YulLiteral","src":"3234:4:57","type":"","value":"0x55"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3208:9:57"},"nodeType":"YulFunctionCall","src":"3208:31:57"},"variableNames":[{"name":"predicted","nodeType":"YulIdentifier","src":"3195:9:57"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5902,"isOffset":false,"isSlot":false,"src":"3074:8:57","valueSize":1},{"declaration":5898,"isOffset":false,"isSlot":false,"src":"2909:14:57","valueSize":1},{"declaration":5905,"isOffset":false,"isSlot":false,"src":"3195:9:57","valueSize":1},{"declaration":5900,"isOffset":false,"isSlot":false,"src":"3120:4:57","valueSize":1}],"id":5907,"nodeType":"InlineAssembly","src":"2726:523:57"}]},"documentation":{"id":5896,"nodeType":"StructuredDocumentation","src":"2447:99:57","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":5909,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nodeType":"FunctionDefinition","parameters":{"id":5903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5898,"mutability":"mutable","name":"implementation","nodeType":"VariableDeclaration","scope":5909,"src":"2597:22:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5897,"name":"address","nodeType":"ElementaryTypeName","src":"2597:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5900,"mutability":"mutable","name":"salt","nodeType":"VariableDeclaration","scope":5909,"src":"2629:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5899,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2629:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5902,"mutability":"mutable","name":"deployer","nodeType":"VariableDeclaration","scope":5909,"src":"2651:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5901,"name":"address","nodeType":"ElementaryTypeName","src":"2651:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2587:86:57"},"returnParameters":{"id":5906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5905,"mutability":"mutable","name":"predicted","nodeType":"VariableDeclaration","scope":5909,"src":"2697:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5904,"name":"address","nodeType":"ElementaryTypeName","src":"2697:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2696:19:57"},"scope":5930,"src":"2551:704:57","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5928,"nodeType":"Block","src":"3510:88:57","statements":[{"expression":{"arguments":[{"id":5920,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"3555:14:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5921,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5914,"src":"3571:4:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":5924,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3585:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_Clones_$5930","typeString":"library Clones"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Clones_$5930","typeString":"library Clones"}],"id":5923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3577:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5922,"name":"address","nodeType":"ElementaryTypeName","src":"3577:7:57","typeDescriptions":{}}},"id":5925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3577:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5919,"name":"predictDeterministicAddress","nodeType":"Identifier","overloadedDeclarations":[5909,5929],"referencedDeclaration":5909,"src":"3527:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (address,bytes32,address) pure returns (address)"}},"id":5926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3527:64:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5918,"id":5927,"nodeType":"Return","src":"3520:71:57"}]},"documentation":{"id":5910,"nodeType":"StructuredDocumentation","src":"3261:99:57","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":5929,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nodeType":"FunctionDefinition","parameters":{"id":5915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5912,"mutability":"mutable","name":"implementation","nodeType":"VariableDeclaration","scope":5929,"src":"3402:22:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5911,"name":"address","nodeType":"ElementaryTypeName","src":"3402:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5914,"mutability":"mutable","name":"salt","nodeType":"VariableDeclaration","scope":5929,"src":"3426:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5913,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3426:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3401:38:57"},"returnParameters":{"id":5918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5917,"mutability":"mutable","name":"predicted","nodeType":"VariableDeclaration","scope":5929,"src":"3487:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5916,"name":"address","nodeType":"ElementaryTypeName","src":"3487:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3486:19:57"},"scope":5930,"src":"3365:233:57","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":5931,"src":"740:2860:57"}],"src":"85:3516:57"},"id":57},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","exportedSymbols":{"EIP712":[6021]},"id":6022,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5932,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:58"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":5933,"nodeType":"StructuredDocumentation","src":"58:1142:58","text":" @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n they need in their contracts using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n _Available since v3.4._"},"fullyImplemented":true,"id":6021,"linearizedBaseContracts":[6021],"name":"EIP712","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":5935,"mutability":"immutable","name":"_HASHED_NAME","nodeType":"VariableDeclaration","scope":6021,"src":"1277:38:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5934,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1277:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":5937,"mutability":"immutable","name":"_HASHED_VERSION","nodeType":"VariableDeclaration","scope":6021,"src":"1321:41:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5936,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1321:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":5939,"mutability":"immutable","name":"_TYPE_HASH","nodeType":"VariableDeclaration","scope":6021,"src":"1368:36:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5938,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1368:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":5971,"nodeType":"Block","src":"2075:225:58","statements":[{"expression":{"id":5954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5947,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5935,"src":"2085:12:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":5951,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5942,"src":"2116:4:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2110:5:58","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5949,"name":"bytes","nodeType":"ElementaryTypeName","src":"2110:5:58","typeDescriptions":{}}},"id":5952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2110:11:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5948,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2100:9:58","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2100:22:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2085:37:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5955,"nodeType":"ExpressionStatement","src":"2085:37:58"},{"expression":{"id":5963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5956,"name":"_HASHED_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5937,"src":"2132:15:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":5960,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5944,"src":"2166:7:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5959,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2160:5:58","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5958,"name":"bytes","nodeType":"ElementaryTypeName","src":"2160:5:58","typeDescriptions":{}}},"id":5961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2160:14:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5957,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2150:9:58","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2150:25:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2132:43:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5964,"nodeType":"ExpressionStatement","src":"2132:43:58"},{"expression":{"id":5969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5965,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5939,"src":"2185:10:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":5967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2208:84:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":5966,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2198:9:58","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2198:95:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2185:108:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5970,"nodeType":"ExpressionStatement","src":"2185:108:58"}]},"documentation":{"id":5940,"nodeType":"StructuredDocumentation","src":"1456:559:58","text":" @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]."},"id":5972,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":5945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5942,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":5972,"src":"2032:18:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5941,"name":"string","nodeType":"ElementaryTypeName","src":"2032:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5944,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":5972,"src":"2052:21:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5943,"name":"string","nodeType":"ElementaryTypeName","src":"2052:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2031:43:58"},"returnParameters":{"id":5946,"nodeType":"ParameterList","parameters":[],"src":"2075:0:58"},"scope":6021,"src":"2020:280:58","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5993,"nodeType":"Block","src":"2456:118:58","statements":[{"expression":{"arguments":[{"arguments":[{"id":5981,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5939,"src":"2494:10:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5982,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5935,"src":"2506:12:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5983,"name":"_HASHED_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5937,"src":"2520:15:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":5984,"name":"_getChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6020,"src":"2537:11:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2537:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":5988,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2560:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$6021","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$6021","typeString":"contract EIP712"}],"id":5987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2552:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5986,"name":"address","nodeType":"ElementaryTypeName","src":"2552:7:58","typeDescriptions":{}}},"id":5989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2552:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5979,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2483:3:58","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5980,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2483:10:58","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2483:83:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5978,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2473:9:58","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2473:94:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5977,"id":5992,"nodeType":"Return","src":"2466:101:58"}]},"documentation":{"id":5973,"nodeType":"StructuredDocumentation","src":"2306:75:58","text":" @dev Returns the domain separator for the current chain."},"id":5994,"implemented":true,"kind":"function","modifiers":[],"name":"_domainSeparatorV4","nodeType":"FunctionDefinition","parameters":{"id":5974,"nodeType":"ParameterList","parameters":[],"src":"2413:2:58"},"returnParameters":{"id":5977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5976,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5994,"src":"2447:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5975,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2447:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2446:9:58"},"scope":6021,"src":"2386:188:58","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":6012,"nodeType":"Block","src":"3285:97:58","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1901","id":6005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3329:10:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},"value":"\u0019\u0001"},{"arguments":[],"expression":{"argumentTypes":[],"id":6006,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5994,"src":"3341:18:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":6007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3341:20:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6008,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5997,"src":"3363:10:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":6003,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3312:3:58","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3312:16:58","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3312:62:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6002,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3302:9:58","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3302:73:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6001,"id":6011,"nodeType":"Return","src":"3295:80:58"}]},"documentation":{"id":5995,"nodeType":"StructuredDocumentation","src":"2580:614:58","text":" @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n keccak256(\"Mail(address to,string contents)\"),\n mailTo,\n keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```"},"id":6013,"implemented":true,"kind":"function","modifiers":[],"name":"_hashTypedDataV4","nodeType":"FunctionDefinition","parameters":{"id":5998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5997,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":6013,"src":"3225:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5996,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3225:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3224:20:58"},"returnParameters":{"id":6001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6000,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6013,"src":"3276:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5999,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3276:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3275:9:58"},"scope":6021,"src":"3199:183:58","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":6019,"nodeType":"Block","src":"3495:125:58","statements":[{"AST":{"nodeType":"YulBlock","src":"3570:44:58","statements":[{"nodeType":"YulAssignment","src":"3584:20:58","value":{"arguments":[],"functionName":{"name":"chainid","nodeType":"YulIdentifier","src":"3595:7:58"},"nodeType":"YulFunctionCall","src":"3595:9:58"},"variableNames":[{"name":"chainId","nodeType":"YulIdentifier","src":"3584:7:58"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":6016,"isOffset":false,"isSlot":false,"src":"3584:7:58","valueSize":1}],"id":6018,"nodeType":"InlineAssembly","src":"3561:53:58"}]},"id":6020,"implemented":true,"kind":"function","modifiers":[],"name":"_getChainId","nodeType":"FunctionDefinition","parameters":{"id":6014,"nodeType":"ParameterList","parameters":[],"src":"3453:2:58"},"returnParameters":{"id":6017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6016,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":6020,"src":"3478:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6015,"name":"uint256","nodeType":"ElementaryTypeName","src":"3478:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3477:17:58"},"scope":6021,"src":"3433:187:58","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":6022,"src":"1201:2421:58"}],"src":"33:3590:58"},"id":58},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","exportedSymbols":{"ERC20":[6512]},"id":6513,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6023,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:59"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":6024,"nodeType":"ImportDirective","scope":6513,"sourceUnit":2249,"src":"58:90:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":6025,"nodeType":"ImportDirective","scope":6513,"sourceUnit":2448,"src":"149:87:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"./SafeMath.sol","id":6026,"nodeType":"ImportDirective","scope":6513,"sourceUnit":7420,"src":"238:24:59","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6028,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1445:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":6029,"nodeType":"InheritanceSpecifier","src":"1445:6:59"}],"contractDependencies":[2447],"contractKind":"contract","documentation":{"id":6027,"nodeType":"StructuredDocumentation","src":"264:1162:59","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."},"fullyImplemented":true,"id":6512,"linearizedBaseContracts":[6512,2447],"name":"ERC20","nodeType":"ContractDefinition","nodes":[{"id":6032,"libraryName":{"id":6030,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7419,"src":"1464:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7419","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"1458:27:59","typeName":{"id":6031,"name":"uint256","nodeType":"ElementaryTypeName","src":"1477:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":6036,"mutability":"mutable","name":"_balances","nodeType":"VariableDeclaration","scope":6512,"src":"1491:45:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":6035,"keyType":{"id":6033,"name":"address","nodeType":"ElementaryTypeName","src":"1499:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1491:27:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":6034,"name":"uint256","nodeType":"ElementaryTypeName","src":"1510:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":6042,"mutability":"mutable","name":"_allowances","nodeType":"VariableDeclaration","scope":6512,"src":"1543:67:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":6041,"keyType":{"id":6037,"name":"address","nodeType":"ElementaryTypeName","src":"1551:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1543:47:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":6040,"keyType":{"id":6038,"name":"address","nodeType":"ElementaryTypeName","src":"1570:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1562:27:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":6039,"name":"uint256","nodeType":"ElementaryTypeName","src":"1581:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":6044,"mutability":"mutable","name":"_totalSupply","nodeType":"VariableDeclaration","scope":6512,"src":"1617:28:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6043,"name":"uint256","nodeType":"ElementaryTypeName","src":"1617:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":6046,"mutability":"mutable","name":"_name","nodeType":"VariableDeclaration","scope":6512,"src":"1652:20:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":6045,"name":"string","nodeType":"ElementaryTypeName","src":"1652:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":6048,"mutability":"mutable","name":"_symbol","nodeType":"VariableDeclaration","scope":6512,"src":"1678:22:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":6047,"name":"string","nodeType":"ElementaryTypeName","src":"1678:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":6050,"mutability":"mutable","name":"_decimals","nodeType":"VariableDeclaration","scope":6512,"src":"1706:23:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6049,"name":"uint8","nodeType":"ElementaryTypeName","src":"1706:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"body":{"id":6070,"nodeType":"Block","src":"2108:81:59","statements":[{"expression":{"id":6060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6058,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6046,"src":"2118:5:59","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6059,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"2126:5:59","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2118:13:59","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":6061,"nodeType":"ExpressionStatement","src":"2118:13:59"},{"expression":{"id":6064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6062,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6048,"src":"2141:7:59","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6063,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"2151:7:59","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2141:17:59","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":6065,"nodeType":"ExpressionStatement","src":"2141:17:59"},{"expression":{"id":6068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6066,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"2168:9:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3138","id":6067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2180:2:59","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"2168:14:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":6069,"nodeType":"ExpressionStatement","src":"2168:14:59"}]},"documentation":{"id":6051,"nodeType":"StructuredDocumentation","src":"1736:311:59","text":" @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n a default value of 18.\n To select a different value for {decimals}, use {_setupDecimals}.\n All three of these values are immutable: they can only be set once during\n construction."},"id":6071,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":6056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6053,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":6071,"src":"2064:19:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6052,"name":"string","nodeType":"ElementaryTypeName","src":"2064:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":6055,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":6071,"src":"2085:21:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6054,"name":"string","nodeType":"ElementaryTypeName","src":"2085:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2063:44:59"},"returnParameters":{"id":6057,"nodeType":"ParameterList","parameters":[],"src":"2108:0:59"},"scope":6512,"src":"2052:137:59","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":6079,"nodeType":"Block","src":"2306:29:59","statements":[{"expression":{"id":6077,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6046,"src":"2323:5:59","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":6076,"id":6078,"nodeType":"Return","src":"2316:12:59"}]},"documentation":{"id":6072,"nodeType":"StructuredDocumentation","src":"2195:54:59","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":6080,"implemented":true,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":6073,"nodeType":"ParameterList","parameters":[],"src":"2267:2:59"},"returnParameters":{"id":6076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6075,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6080,"src":"2291:13:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6074,"name":"string","nodeType":"ElementaryTypeName","src":"2291:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2290:15:59"},"scope":6512,"src":"2254:81:59","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":6088,"nodeType":"Block","src":"2502:31:59","statements":[{"expression":{"id":6086,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6048,"src":"2519:7:59","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":6085,"id":6087,"nodeType":"Return","src":"2512:14:59"}]},"documentation":{"id":6081,"nodeType":"StructuredDocumentation","src":"2341:102:59","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":6089,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":6082,"nodeType":"ParameterList","parameters":[],"src":"2463:2:59"},"returnParameters":{"id":6085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6084,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6089,"src":"2487:13:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6083,"name":"string","nodeType":"ElementaryTypeName","src":"2487:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2486:15:59"},"scope":6512,"src":"2448:85:59","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":6097,"nodeType":"Block","src":"3204:33:59","statements":[{"expression":{"id":6095,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"3221:9:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":6094,"id":6096,"nodeType":"Return","src":"3214:16:59"}]},"documentation":{"id":6090,"nodeType":"StructuredDocumentation","src":"2539:612:59","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":6098,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":6091,"nodeType":"ParameterList","parameters":[],"src":"3173:2:59"},"returnParameters":{"id":6094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6093,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6098,"src":"3197:5:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6092,"name":"uint8","nodeType":"ElementaryTypeName","src":"3197:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3196:7:59"},"scope":6512,"src":"3156:81:59","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2378],"body":{"id":6107,"nodeType":"Block","src":"3570:36:59","statements":[{"expression":{"id":6105,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6044,"src":"3587:12:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6104,"id":6106,"nodeType":"Return","src":"3580:19:59"}]},"documentation":{"id":6099,"nodeType":"StructuredDocumentation","src":"3243:252:59","text":" @dev See {IERC20-totalSupply}. The total supply should only be read using this function\n Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n storage values)."},"functionSelector":"18160ddd","id":6108,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":6101,"nodeType":"OverrideSpecifier","overrides":[],"src":"3543:8:59"},"parameters":{"id":6100,"nodeType":"ParameterList","parameters":[],"src":"3520:2:59"},"returnParameters":{"id":6104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6103,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6108,"src":"3561:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6102,"name":"uint256","nodeType":"ElementaryTypeName","src":"3561:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3560:9:59"},"scope":6512,"src":"3500:106:59","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":6118,"nodeType":"Block","src":"3927:37:59","statements":[{"expression":{"id":6116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6114,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6044,"src":"3937:12:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6115,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6111,"src":"3952:5:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3937:20:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6117,"nodeType":"ExpressionStatement","src":"3937:20:59"}]},"documentation":{"id":6109,"nodeType":"StructuredDocumentation","src":"3612:253:59","text":" @dev Sets a new value for the total supply. It should only be set using this function.\n * Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n storage values)."},"id":6119,"implemented":true,"kind":"function","modifiers":[],"name":"_setTotalSupply","nodeType":"FunctionDefinition","parameters":{"id":6112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6111,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6119,"src":"3895:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6110,"name":"uint256","nodeType":"ElementaryTypeName","src":"3895:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3894:15:59"},"returnParameters":{"id":6113,"nodeType":"ParameterList","parameters":[],"src":"3927:0:59"},"scope":6512,"src":"3870:94:59","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[2386],"body":{"id":6132,"nodeType":"Block","src":"4097:42:59","statements":[{"expression":{"baseExpression":{"id":6128,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"4114:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6130,"indexExpression":{"id":6129,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6122,"src":"4124:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4114:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6127,"id":6131,"nodeType":"Return","src":"4107:25:59"}]},"documentation":{"id":6120,"nodeType":"StructuredDocumentation","src":"3970:47:59","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":6133,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":{"id":6124,"nodeType":"OverrideSpecifier","overrides":[],"src":"4070:8:59"},"parameters":{"id":6123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6122,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":6133,"src":"4041:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6121,"name":"address","nodeType":"ElementaryTypeName","src":"4041:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4040:17:59"},"returnParameters":{"id":6127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6126,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6133,"src":"4088:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6125,"name":"uint256","nodeType":"ElementaryTypeName","src":"4088:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4087:9:59"},"scope":6512,"src":"4022:117:59","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2396],"body":{"id":6153,"nodeType":"Block","src":"4434:78:59","statements":[{"expression":{"arguments":[{"expression":{"id":6145,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4454:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4454:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6147,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6136,"src":"4466:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6148,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6138,"src":"4477:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6144,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6359,"src":"4444:9:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4444:40:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6150,"nodeType":"ExpressionStatement","src":"4444:40:59"},{"expression":{"hexValue":"74727565","id":6151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4501:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6143,"id":6152,"nodeType":"Return","src":"4494:11:59"}]},"documentation":{"id":6134,"nodeType":"StructuredDocumentation","src":"4145:192:59","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`."},"functionSelector":"a9059cbb","id":6154,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":{"id":6140,"nodeType":"OverrideSpecifier","overrides":[],"src":"4410:8:59"},"parameters":{"id":6139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6136,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6154,"src":"4360:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6135,"name":"address","nodeType":"ElementaryTypeName","src":"4360:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6138,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6154,"src":"4379:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6137,"name":"uint256","nodeType":"ElementaryTypeName","src":"4379:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4359:35:59"},"returnParameters":{"id":6143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6142,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6154,"src":"4428:4:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6141,"name":"bool","nodeType":"ElementaryTypeName","src":"4428:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4427:6:59"},"scope":6512,"src":"4342:170:59","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2406],"body":{"id":6171,"nodeType":"Block","src":"4668:51:59","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":6165,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"4685:11:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6167,"indexExpression":{"id":6166,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6157,"src":"4697:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4685:18:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6169,"indexExpression":{"id":6168,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6159,"src":"4704:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4685:27:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6164,"id":6170,"nodeType":"Return","src":"4678:34:59"}]},"documentation":{"id":6155,"nodeType":"StructuredDocumentation","src":"4518:47:59","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":6172,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","overrides":{"id":6161,"nodeType":"OverrideSpecifier","overrides":[],"src":"4641:8:59"},"parameters":{"id":6160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6157,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6172,"src":"4589:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6156,"name":"address","nodeType":"ElementaryTypeName","src":"4589:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6159,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6172,"src":"4604:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6158,"name":"address","nodeType":"ElementaryTypeName","src":"4604:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4588:32:59"},"returnParameters":{"id":6164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6163,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6172,"src":"4659:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6162,"name":"uint256","nodeType":"ElementaryTypeName","src":"4659:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4658:9:59"},"scope":6512,"src":"4570:149:59","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2416],"body":{"id":6192,"nodeType":"Block","src":"4946:75:59","statements":[{"expression":{"arguments":[{"expression":{"id":6184,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4965:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4965:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6186,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6175,"src":"4977:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6187,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6177,"src":"4986:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6183,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6489,"src":"4956:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4956:37:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6189,"nodeType":"ExpressionStatement","src":"4956:37:59"},{"expression":{"hexValue":"74727565","id":6190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5010:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6182,"id":6191,"nodeType":"Return","src":"5003:11:59"}]},"documentation":{"id":6173,"nodeType":"StructuredDocumentation","src":"4725:127:59","text":" @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":6193,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":6179,"nodeType":"OverrideSpecifier","overrides":[],"src":"4922:8:59"},"parameters":{"id":6178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6175,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6193,"src":"4874:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6174,"name":"address","nodeType":"ElementaryTypeName","src":"4874:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6177,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6193,"src":"4891:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6176,"name":"uint256","nodeType":"ElementaryTypeName","src":"4891:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4873:33:59"},"returnParameters":{"id":6182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6181,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6193,"src":"4940:4:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6180,"name":"bool","nodeType":"ElementaryTypeName","src":"4940:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4939:6:59"},"scope":6512,"src":"4857:164:59","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2428],"body":{"id":6231,"nodeType":"Block","src":"5630:244:59","statements":[{"expression":{"arguments":[{"id":6207,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6196,"src":"5650:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6208,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6198,"src":"5658:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6209,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6200,"src":"5669:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6206,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6359,"src":"5640:9:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5640:36:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6211,"nodeType":"ExpressionStatement","src":"5640:36:59"},{"expression":{"arguments":[{"id":6213,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6196,"src":"5708:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6214,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5728:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5728:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":6223,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6200,"src":"5788:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6224,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"5796:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_EXCEEDS_ALLOWANCE","nodeType":"MemberAccess","referencedDeclaration":2049,"src":"5796:39:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":6216,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"5752:11:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6218,"indexExpression":{"id":6217,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6196,"src":"5764:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5752:19:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6221,"indexExpression":{"expression":{"id":6219,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5772:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5772:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5752:31:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7418,"src":"5752:35:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5752:84:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6212,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6489,"src":"5686:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5686:160:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6228,"nodeType":"ExpressionStatement","src":"5686:160:59"},{"expression":{"hexValue":"74727565","id":6229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5863:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6205,"id":6230,"nodeType":"Return","src":"5856:11:59"}]},"documentation":{"id":6194,"nodeType":"StructuredDocumentation","src":"5027:456:59","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`."},"functionSelector":"23b872dd","id":6232,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":6202,"nodeType":"OverrideSpecifier","overrides":[],"src":"5606:8:59"},"parameters":{"id":6201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6196,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":6232,"src":"5519:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6195,"name":"address","nodeType":"ElementaryTypeName","src":"5519:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6198,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6232,"src":"5543:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6197,"name":"address","nodeType":"ElementaryTypeName","src":"5543:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6200,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6232,"src":"5570:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6199,"name":"uint256","nodeType":"ElementaryTypeName","src":"5570:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5509:81:59"},"returnParameters":{"id":6205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6204,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6232,"src":"5624:4:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6203,"name":"bool","nodeType":"ElementaryTypeName","src":"5624:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5623:6:59"},"scope":6512,"src":"5488:386:59","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6259,"nodeType":"Block","src":"6363:117:59","statements":[{"expression":{"arguments":[{"expression":{"id":6243,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6382:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6382:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6245,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6235,"src":"6394:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6253,"name":"addedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6237,"src":"6440:10:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":6246,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"6403:11:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6249,"indexExpression":{"expression":{"id":6247,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6415:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6415:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6403:23:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6251,"indexExpression":{"id":6250,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6235,"src":"6427:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6403:32:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7372,"src":"6403:36:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6403:48:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6242,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6489,"src":"6373:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6373:79:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6256,"nodeType":"ExpressionStatement","src":"6373:79:59"},{"expression":{"hexValue":"74727565","id":6257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6469:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6241,"id":6258,"nodeType":"Return","src":"6462:11:59"}]},"documentation":{"id":6233,"nodeType":"StructuredDocumentation","src":"5880:384:59","text":" @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"39509351","id":6260,"implemented":true,"kind":"function","modifiers":[],"name":"increaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":6238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6235,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6260,"src":"6296:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6234,"name":"address","nodeType":"ElementaryTypeName","src":"6296:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6237,"mutability":"mutable","name":"addedValue","nodeType":"VariableDeclaration","scope":6260,"src":"6313:18:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6236,"name":"uint256","nodeType":"ElementaryTypeName","src":"6313:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6295:37:59"},"returnParameters":{"id":6241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6240,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6260,"src":"6357:4:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6239,"name":"bool","nodeType":"ElementaryTypeName","src":"6357:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6356:6:59"},"scope":6512,"src":"6269:211:59","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6289,"nodeType":"Block","src":"7066:213:59","statements":[{"expression":{"arguments":[{"expression":{"id":6271,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7098:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7098:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6273,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6263,"src":"7122:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6281,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6265,"src":"7180:15:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6282,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"7197:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_DECREASED_ALLOWANCE_BELOW_ZERO","nodeType":"MemberAccess","referencedDeclaration":2052,"src":"7197:43:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":6274,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"7143:11:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6277,"indexExpression":{"expression":{"id":6275,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7155:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7155:10:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7143:23:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6279,"indexExpression":{"id":6278,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6263,"src":"7167:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7143:32:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7418,"src":"7143:36:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7143:98:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6270,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6489,"src":"7076:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7076:175:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6286,"nodeType":"ExpressionStatement","src":"7076:175:59"},{"expression":{"hexValue":"74727565","id":6287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7268:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6269,"id":6288,"nodeType":"Return","src":"7261:11:59"}]},"documentation":{"id":6261,"nodeType":"StructuredDocumentation","src":"6486:476:59","text":" @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."},"functionSelector":"a457c2d7","id":6290,"implemented":true,"kind":"function","modifiers":[],"name":"decreaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":6266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6263,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6290,"src":"6994:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6262,"name":"address","nodeType":"ElementaryTypeName","src":"6994:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6265,"mutability":"mutable","name":"subtractedValue","nodeType":"VariableDeclaration","scope":6290,"src":"7011:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6264,"name":"uint256","nodeType":"ElementaryTypeName","src":"7011:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6993:42:59"},"returnParameters":{"id":6269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6268,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6290,"src":"7060:4:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6267,"name":"bool","nodeType":"ElementaryTypeName","src":"7060:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7059:6:59"},"scope":6512,"src":"6967:312:59","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6358,"nodeType":"Block","src":"7870:442:59","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6301,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"7889:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7907:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7899:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6302,"name":"address","nodeType":"ElementaryTypeName","src":"7899:7:59","typeDescriptions":{}}},"id":6305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7899:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7889:20:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6307,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"7911:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_FROM_ZERO_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":2031,"src":"7911:39:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6300,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"7880:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7880:71:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6310,"nodeType":"ExpressionStatement","src":"7880:71:59"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6312,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6295,"src":"7970:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7991:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7983:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6313,"name":"address","nodeType":"ElementaryTypeName","src":"7983:7:59","typeDescriptions":{}}},"id":6316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7983:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7970:23:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6318,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"7995:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_TO_ZERO_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":2034,"src":"7995:37:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6311,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"7961:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7961:72:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6321,"nodeType":"ExpressionStatement","src":"7961:72:59"},{"expression":{"arguments":[{"id":6323,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"8065:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6324,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6295,"src":"8073:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6325,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6297,"src":"8084:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6322,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6511,"src":"8044:20:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8044:47:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6327,"nodeType":"ExpressionStatement","src":"8044:47:59"},{"expression":{"id":6339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6328,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"8102:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6330,"indexExpression":{"id":6329,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"8112:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8102:17:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6335,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6297,"src":"8144:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6336,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"8152:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_EXCEEDS_BALANCE","nodeType":"MemberAccess","referencedDeclaration":2055,"src":"8152:37:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6331,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"8122:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6333,"indexExpression":{"id":6332,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"8132:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8122:17:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7418,"src":"8122:21:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8122:68:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8102:88:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6340,"nodeType":"ExpressionStatement","src":"8102:88:59"},{"expression":{"id":6350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6341,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"8200:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6343,"indexExpression":{"id":6342,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6295,"src":"8210:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8200:20:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6348,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6297,"src":"8248:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6344,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"8223:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6346,"indexExpression":{"id":6345,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6295,"src":"8233:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8223:20:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7372,"src":"8223:24:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8223:32:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8200:55:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6351,"nodeType":"ExpressionStatement","src":"8200:55:59"},{"eventCall":{"arguments":[{"id":6353,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"8279:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6354,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6295,"src":"8287:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6355,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6297,"src":"8298:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6352,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"8270:8:59","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8270:35:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6357,"nodeType":"EmitStatement","src":"8265:40:59"}]},"documentation":{"id":6291,"nodeType":"StructuredDocumentation","src":"7285:463:59","text":" @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`."},"id":6359,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nodeType":"FunctionDefinition","parameters":{"id":6298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6293,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":6359,"src":"7781:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6292,"name":"address","nodeType":"ElementaryTypeName","src":"7781:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6295,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6359,"src":"7805:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6294,"name":"address","nodeType":"ElementaryTypeName","src":"7805:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6297,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6359,"src":"7832:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6296,"name":"uint256","nodeType":"ElementaryTypeName","src":"7832:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7771:81:59"},"returnParameters":{"id":6299,"nodeType":"ParameterList","parameters":[],"src":"7870:0:59"},"scope":6512,"src":"7753:559:59","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6404,"nodeType":"Block","src":"8648:232:59","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":6370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8687:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6369,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8679:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6368,"name":"address","nodeType":"ElementaryTypeName","src":"8679:7:59","typeDescriptions":{}}},"id":6371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8679:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6372,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6362,"src":"8691:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6373,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"8700:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6367,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6511,"src":"8658:20:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8658:49:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6375,"nodeType":"ExpressionStatement","src":"8658:49:59"},{"expression":{"arguments":[{"arguments":[{"id":6380,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"8752:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6377,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6108,"src":"8734:11:59","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":6378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8734:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7372,"src":"8734:17:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8734:25:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6376,"name":"_setTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"8718:15:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":6382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8718:42:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6383,"nodeType":"ExpressionStatement","src":"8718:42:59"},{"expression":{"id":6393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6384,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"8770:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6386,"indexExpression":{"id":6385,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6362,"src":"8780:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8770:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6391,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"8814:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6387,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"8791:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6389,"indexExpression":{"id":6388,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6362,"src":"8801:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8791:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7372,"src":"8791:22:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8791:30:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8770:51:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6394,"nodeType":"ExpressionStatement","src":"8770:51:59"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":6398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8853:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8845:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6396,"name":"address","nodeType":"ElementaryTypeName","src":"8845:7:59","typeDescriptions":{}}},"id":6399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8845:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6400,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6362,"src":"8857:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6401,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"8866:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6395,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"8836:8:59","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8836:37:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6403,"nodeType":"EmitStatement","src":"8831:42:59"}]},"documentation":{"id":6360,"nodeType":"StructuredDocumentation","src":"8318:260:59","text":"@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `to` cannot be the zero address."},"id":6405,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nodeType":"FunctionDefinition","parameters":{"id":6365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6362,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":6405,"src":"8598:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6361,"name":"address","nodeType":"ElementaryTypeName","src":"8598:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6364,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6405,"src":"8615:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6363,"name":"uint256","nodeType":"ElementaryTypeName","src":"8615:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8597:33:59"},"returnParameters":{"id":6366,"nodeType":"ParameterList","parameters":[],"src":"8648:0:59"},"scope":6512,"src":"8583:297:59","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6463,"nodeType":"Block","src":"9265:346:59","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6414,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"9284:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9303:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9295:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6415,"name":"address","nodeType":"ElementaryTypeName","src":"9295:7:59","typeDescriptions":{}}},"id":6418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9295:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"9284:21:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6420,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"9307:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_BURN_FROM_ZERO_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":2040,"src":"9307:35:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6413,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"9275:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9275:68:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6423,"nodeType":"ExpressionStatement","src":"9275:68:59"},{"expression":{"arguments":[{"id":6425,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"9375:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9392:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6427,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9384:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6426,"name":"address","nodeType":"ElementaryTypeName","src":"9384:7:59","typeDescriptions":{}}},"id":6429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9384:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6430,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"9396:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6424,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6511,"src":"9354:20:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9354:49:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6432,"nodeType":"ExpressionStatement","src":"9354:49:59"},{"expression":{"id":6444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6433,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"9414:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6435,"indexExpression":{"id":6434,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"9424:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9414:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6440,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"9458:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6441,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"9466:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_BURN_EXCEEDS_BALANCE","nodeType":"MemberAccess","referencedDeclaration":2109,"src":"9466:33:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6436,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"9435:9:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6438,"indexExpression":{"id":6437,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"9445:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9435:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7418,"src":"9435:22:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9435:65:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9414:86:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6445,"nodeType":"ExpressionStatement","src":"9414:86:59"},{"expression":{"arguments":[{"arguments":[{"id":6450,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"9544:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6447,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6108,"src":"9526:11:59","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":6448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9526:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7390,"src":"9526:17:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9526:25:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6446,"name":"_setTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"9510:15:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":6452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9510:42:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6453,"nodeType":"ExpressionStatement","src":"9510:42:59"},{"eventCall":{"arguments":[{"id":6455,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"9576:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9593:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9585:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6456,"name":"address","nodeType":"ElementaryTypeName","src":"9585:7:59","typeDescriptions":{}}},"id":6459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9585:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6460,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"9597:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6454,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"9567:8:59","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9567:37:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6462,"nodeType":"EmitStatement","src":"9562:42:59"}]},"documentation":{"id":6406,"nodeType":"StructuredDocumentation","src":"8886:309:59","text":" @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."},"id":6464,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nodeType":"FunctionDefinition","parameters":{"id":6411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6408,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":6464,"src":"9215:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6407,"name":"address","nodeType":"ElementaryTypeName","src":"9215:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6410,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6464,"src":"9232:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6409,"name":"uint256","nodeType":"ElementaryTypeName","src":"9232:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9214:33:59"},"returnParameters":{"id":6412,"nodeType":"ParameterList","parameters":[],"src":"9265:0:59"},"scope":6512,"src":"9200:411:59","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6488,"nodeType":"Block","src":"10147:100:59","statements":[{"expression":{"id":6480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6474,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"10157:11:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6477,"indexExpression":{"id":6475,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6467,"src":"10169:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10157:18:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6478,"indexExpression":{"id":6476,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6469,"src":"10176:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10157:27:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6479,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6471,"src":"10187:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10157:36:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6481,"nodeType":"ExpressionStatement","src":"10157:36:59"},{"eventCall":{"arguments":[{"id":6483,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6467,"src":"10217:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6484,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6469,"src":"10224:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6485,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6471,"src":"10233:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6482,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2446,"src":"10208:8:59","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10208:32:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6487,"nodeType":"EmitStatement","src":"10203:37:59"}]},"documentation":{"id":6465,"nodeType":"StructuredDocumentation","src":"9617:412:59","text":" @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."},"id":6489,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nodeType":"FunctionDefinition","parameters":{"id":6472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6467,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6489,"src":"10061:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6466,"name":"address","nodeType":"ElementaryTypeName","src":"10061:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6469,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6489,"src":"10084:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6468,"name":"address","nodeType":"ElementaryTypeName","src":"10084:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6471,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6489,"src":"10109:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6470,"name":"uint256","nodeType":"ElementaryTypeName","src":"10109:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10051:78:59"},"returnParameters":{"id":6473,"nodeType":"ParameterList","parameters":[],"src":"10147:0:59"},"scope":6512,"src":"10034:213:59","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6499,"nodeType":"Block","src":"10620:38:59","statements":[{"expression":{"id":6497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6495,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6050,"src":"10630:9:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6496,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6492,"src":"10642:9:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10630:21:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":6498,"nodeType":"ExpressionStatement","src":"10630:21:59"}]},"documentation":{"id":6490,"nodeType":"StructuredDocumentation","src":"10253:312:59","text":" @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does."},"id":6500,"implemented":true,"kind":"function","modifiers":[],"name":"_setupDecimals","nodeType":"FunctionDefinition","parameters":{"id":6493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6492,"mutability":"mutable","name":"decimals_","nodeType":"VariableDeclaration","scope":6500,"src":"10594:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6491,"name":"uint8","nodeType":"ElementaryTypeName","src":"10594:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"10593:17:59"},"returnParameters":{"id":6494,"nodeType":"ParameterList","parameters":[],"src":"10620:0:59"},"scope":6512,"src":"10570:88:59","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6510,"nodeType":"Block","src":"11364:64:59","statements":[]},"documentation":{"id":6501,"nodeType":"StructuredDocumentation","src":"10664:576:59","text":" @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":6511,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nodeType":"FunctionDefinition","parameters":{"id":6508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6503,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":6511,"src":"11284:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6502,"name":"address","nodeType":"ElementaryTypeName","src":"11284:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6505,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6511,"src":"11306:10:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6504,"name":"address","nodeType":"ElementaryTypeName","src":"11306:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6507,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6511,"src":"11326:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6506,"name":"uint256","nodeType":"ElementaryTypeName","src":"11326:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11274:72:59"},"returnParameters":{"id":6509,"nodeType":"ParameterList","parameters":[],"src":"11364:0:59"},"scope":6512,"src":"11245:183:59","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":6513,"src":"1427:10003:59"}],"src":"33:11398:59"},"id":59},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol","exportedSymbols":{"ERC20Burnable":[6569]},"id":6570,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6514,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:60"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"./ERC20.sol","id":6515,"nodeType":"ImportDirective","scope":6570,"sourceUnit":6513,"src":"58:21:60","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":6517,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":6512,"src":"325:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$6512","typeString":"contract ERC20"}},"id":6518,"nodeType":"InheritanceSpecifier","src":"325:5:60"}],"contractDependencies":[2447,6512],"contractKind":"contract","documentation":{"id":6516,"nodeType":"StructuredDocumentation","src":"81:208:60","text":" @dev Extension of {ERC20} that allows token holders to destroy both their own\n tokens and those that they have an allowance for, in a way that can be\n recognized off-chain (via event analysis)."},"fullyImplemented":false,"id":6569,"linearizedBaseContracts":[6569,6512,2447],"name":"ERC20Burnable","nodeType":"ContractDefinition","nodes":[{"id":6521,"libraryName":{"id":6519,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7419,"src":"343:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7419","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"337:27:60","typeName":{"id":6520,"name":"uint256","nodeType":"ElementaryTypeName","src":"356:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"body":{"id":6533,"nodeType":"Block","src":"518:42:60","statements":[{"expression":{"arguments":[{"expression":{"id":6528,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"534:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"534:10:60","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6530,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6524,"src":"546:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6527,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6464,"src":"528:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"528:25:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6532,"nodeType":"ExpressionStatement","src":"528:25:60"}]},"documentation":{"id":6522,"nodeType":"StructuredDocumentation","src":"370:98:60","text":" @dev Destroys `amount` tokens from the caller.\n See {ERC20-_burn}."},"functionSelector":"42966c68","id":6534,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":6525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6524,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6534,"src":"487:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6523,"name":"uint256","nodeType":"ElementaryTypeName","src":"487:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"486:16:60"},"returnParameters":{"id":6526,"nodeType":"ParameterList","parameters":[],"src":"518:0:60"},"scope":6569,"src":"473:87:60","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6567,"nodeType":"Block","src":"932:217:60","statements":[{"assignments":[6543],"declarations":[{"constant":false,"id":6543,"mutability":"mutable","name":"decreasedAllowance","nodeType":"VariableDeclaration","scope":6567,"src":"942:26:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6542,"name":"uint256","nodeType":"ElementaryTypeName","src":"942:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6554,"initialValue":{"arguments":[{"id":6550,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6539,"src":"1006:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6551,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1014:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_BURN_EXCEEDS_ALLOWANCE","nodeType":"MemberAccess","referencedDeclaration":2058,"src":"1014:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6545,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6537,"src":"981:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6546,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"990:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"990:10:60","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":6544,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6172,"src":"971:9:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":6548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"971:30:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7418,"src":"971:34:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"971:79:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"942:108:60"},{"expression":{"arguments":[{"id":6556,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6537,"src":"1070:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6557,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1079:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1079:10:60","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6559,"name":"decreasedAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6543,"src":"1091:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6555,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6489,"src":"1061:8:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1061:49:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6561,"nodeType":"ExpressionStatement","src":"1061:49:60"},{"expression":{"arguments":[{"id":6563,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6537,"src":"1126:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6564,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6539,"src":"1135:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6562,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6464,"src":"1120:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1120:22:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6566,"nodeType":"ExpressionStatement","src":"1120:22:60"}]},"documentation":{"id":6535,"nodeType":"StructuredDocumentation","src":"566:295:60","text":" @dev Destroys `amount` tokens from `account`, deducting from the caller's\n allowance.\n See {ERC20-_burn} and {ERC20-allowance}.\n Requirements:\n - the caller must have allowance for ``accounts``'s tokens of at least\n `amount`."},"functionSelector":"79cc6790","id":6568,"implemented":true,"kind":"function","modifiers":[],"name":"burnFrom","nodeType":"FunctionDefinition","parameters":{"id":6540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6537,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":6568,"src":"884:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6536,"name":"address","nodeType":"ElementaryTypeName","src":"884:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6539,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6568,"src":"901:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6538,"name":"uint256","nodeType":"ElementaryTypeName","src":"901:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"883:33:60"},"returnParameters":{"id":6541,"nodeType":"ParameterList","parameters":[],"src":"932:0:60"},"scope":6569,"src":"866:283:60","stateMutability":"nonpayable","virtual":true,"visibility":"public"}],"scope":6570,"src":"290:861:60"}],"src":"33:1119:60"},"id":60},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol","exportedSymbols":{"ERC20Permit":[6678]},"id":6679,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6571,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:61"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","id":6572,"nodeType":"ImportDirective","scope":6679,"sourceUnit":2484,"src":"58:93:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"./ERC20.sol","id":6573,"nodeType":"ImportDirective","scope":6679,"sourceUnit":6513,"src":"153:21:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","file":"../helpers/EOASignaturesValidator.sol","id":6574,"nodeType":"ImportDirective","scope":6679,"sourceUnit":3309,"src":"175:47:61","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":6576,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":6512,"src":"775:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$6512","typeString":"contract ERC20"}},"id":6577,"nodeType":"InheritanceSpecifier","src":"775:5:61"},{"baseName":{"id":6578,"name":"IERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":2483,"src":"782:12:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$2483","typeString":"contract IERC20Permit"}},"id":6579,"nodeType":"InheritanceSpecifier","src":"782:12:61"},{"baseName":{"id":6580,"name":"EOASignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":3308,"src":"796:22:61","typeDescriptions":{"typeIdentifier":"t_contract$_EOASignaturesValidator_$3308","typeString":"contract EOASignaturesValidator"}},"id":6581,"nodeType":"InheritanceSpecifier","src":"796:22:61"}],"contractDependencies":[2311,2447,2483,3308,6021,6512],"contractKind":"contract","documentation":{"id":6575,"nodeType":"StructuredDocumentation","src":"224:517:61","text":" @dev Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all.\n _Available since v3.4._"},"fullyImplemented":false,"id":6678,"linearizedBaseContracts":[6678,3308,6021,2311,2483,6512,2447],"name":"ERC20Permit","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":6586,"mutability":"constant","name":"_PERMIT_TYPEHASH","nodeType":"VariableDeclaration","scope":6678,"src":"877:153:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6582,"name":"bytes32","nodeType":"ElementaryTypeName","src":"877:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529","id":6584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"940:84:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""},"value":"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""}],"id":6583,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"921:9:61","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"921:109:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":6596,"nodeType":"Block","src":"1312:64:61","statements":[]},"documentation":{"id":6587,"nodeType":"StructuredDocumentation","src":"1037:220:61","text":" @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n It's a good idea to use the same `name` that is defined as the ERC20 token name."},"id":6597,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":6592,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6589,"src":"1301:4:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"31","id":6593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1307:3:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":6594,"modifierName":{"id":6591,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"1294:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP712_$6021_$","typeString":"type(contract EIP712)"}},"nodeType":"ModifierInvocation","src":"1294:17:61"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":6590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6589,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":6597,"src":"1274:18:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6588,"name":"string","nodeType":"ElementaryTypeName","src":"1274:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1273:20:61"},"returnParameters":{"id":6595,"nodeType":"ParameterList","parameters":[],"src":"1312:0:61"},"scope":6678,"src":"1262:114:61","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2468],"body":{"id":6651,"nodeType":"Block","src":"1635:310:61","statements":[{"assignments":[6617],"declarations":[{"constant":false,"id":6617,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":6651,"src":"1645:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6616,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1645:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6631,"initialValue":{"arguments":[{"arguments":[{"id":6621,"name":"_PERMIT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6586,"src":"1700:16:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6622,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"1718:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6623,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6602,"src":"1725:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6624,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6604,"src":"1734:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":6626,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"1754:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6625,"name":"getNextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"1741:12:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":6627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1741:19:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6628,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6606,"src":"1762:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6619,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1689:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1689:10:61","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1689:82:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6618,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1666:9:61","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1666:115:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1645:136:61"},{"expression":{"arguments":[{"id":6633,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"1814:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6634,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6617,"src":"1821:10:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":6636,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6608,"src":"1851:1:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":6637,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6610,"src":"1854:1:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6638,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6612,"src":"1857:1:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6635,"name":"_toArraySignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3307,"src":"1833:17:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint8,bytes32,bytes32) pure returns (bytes memory)"}},"id":6639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1833:26:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6640,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6606,"src":"1861:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6641,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1871:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":2154,"src":"1871:24:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6632,"name":"_ensureValidSignature","nodeType":"Identifier","overloadedDeclarations":[3189,3233],"referencedDeclaration":3233,"src":"1792:21:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,bytes32,bytes memory,uint256,uint256)"}},"id":6643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1792:104:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6644,"nodeType":"ExpressionStatement","src":"1792:104:61"},{"expression":{"arguments":[{"id":6646,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"1916:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6647,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6602,"src":"1923:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6648,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6604,"src":"1932:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6645,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6489,"src":"1907:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1907:31:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6650,"nodeType":"ExpressionStatement","src":"1907:31:61"}]},"documentation":{"id":6598,"nodeType":"StructuredDocumentation","src":"1382:50:61","text":" @dev See {IERC20Permit-permit}."},"functionSelector":"d505accf","id":6652,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","overrides":{"id":6614,"nodeType":"OverrideSpecifier","overrides":[],"src":"1626:8:61"},"parameters":{"id":6613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6600,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6652,"src":"1462:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6599,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6602,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6652,"src":"1485:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6601,"name":"address","nodeType":"ElementaryTypeName","src":"1485:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6604,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6652,"src":"1510:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6603,"name":"uint256","nodeType":"ElementaryTypeName","src":"1510:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6606,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":6652,"src":"1533:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6605,"name":"uint256","nodeType":"ElementaryTypeName","src":"1533:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6608,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":6652,"src":"1559:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6607,"name":"uint8","nodeType":"ElementaryTypeName","src":"1559:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6610,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":6652,"src":"1576:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6609,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1576:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6612,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":6652,"src":"1595:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6611,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1595:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1452:158:61"},"returnParameters":{"id":6615,"nodeType":"ParameterList","parameters":[],"src":"1635:0:61"},"scope":6678,"src":"1437:508:61","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2476],"body":{"id":6665,"nodeType":"Block","src":"2076:43:61","statements":[{"expression":{"arguments":[{"id":6662,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6655,"src":"2106:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6661,"name":"getNextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"2093:12:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":6663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2093:19:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6660,"id":6664,"nodeType":"Return","src":"2086:26:61"}]},"documentation":{"id":6653,"nodeType":"StructuredDocumentation","src":"1951:50:61","text":" @dev See {IERC20Permit-nonces}."},"functionSelector":"7ecebe00","id":6666,"implemented":true,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","overrides":{"id":6657,"nodeType":"OverrideSpecifier","overrides":[],"src":"2049:8:61"},"parameters":{"id":6656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6655,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6666,"src":"2022:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6654,"name":"address","nodeType":"ElementaryTypeName","src":"2022:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2021:15:61"},"returnParameters":{"id":6660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6659,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6666,"src":"2067:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6658,"name":"uint256","nodeType":"ElementaryTypeName","src":"2067:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2066:9:61"},"scope":6678,"src":"2006:113:61","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2482],"body":{"id":6676,"nodeType":"Block","src":"2312:44:61","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6673,"name":"getDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3152,"src":"2329:18:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":6674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2329:20:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6672,"id":6675,"nodeType":"Return","src":"2322:27:61"}]},"documentation":{"id":6667,"nodeType":"StructuredDocumentation","src":"2125:60:61","text":" @dev See {IERC20Permit-DOMAIN_SEPARATOR}."},"functionSelector":"3644e515","id":6677,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","overrides":{"id":6669,"nodeType":"OverrideSpecifier","overrides":[],"src":"2285:8:61"},"parameters":{"id":6668,"nodeType":"ParameterList","parameters":[],"src":"2268:2:61"},"returnParameters":{"id":6672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6671,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6677,"src":"2303:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6670,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2303:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2302:9:61"},"scope":6678,"src":"2243:113:61","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6679,"src":"742:1616:61"}],"src":"33:2326:61"},"id":61},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","exportedSymbols":{"EnumerableSet":[7131]},"id":7132,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6680,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"406:23:62"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":6681,"nodeType":"ImportDirective","scope":7132,"sourceUnit":2249,"src":"431:90:62","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":6682,"nodeType":"StructuredDocumentation","src":"523:686:62","text":" @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n // Add the library methods\n using EnumerableSet for EnumerableSet.AddressSet;\n // Declare a set state variable\n EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported."},"fullyImplemented":true,"id":7131,"linearizedBaseContracts":[7131],"name":"EnumerableSet","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableSet.AddressSet","id":6690,"members":[{"constant":false,"id":6685,"mutability":"mutable","name":"_values","nodeType":"VariableDeclaration","scope":6690,"src":"1503:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":6683,"name":"address","nodeType":"ElementaryTypeName","src":"1503:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6684,"nodeType":"ArrayTypeName","src":"1503:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":6689,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":6690,"src":"1653:36:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":6688,"keyType":{"id":6686,"name":"address","nodeType":"ElementaryTypeName","src":"1661:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1653:27:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":6687,"name":"uint256","nodeType":"ElementaryTypeName","src":"1672:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"AddressSet","nodeType":"StructDefinition","scope":7131,"src":"1442:254:62","visibility":"public"},{"body":{"id":6730,"nodeType":"Block","src":"1927:334:62","statements":[{"condition":{"id":6704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1941:21:62","subExpression":{"arguments":[{"id":6701,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6693,"src":"1951:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},{"id":6702,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6695,"src":"1956:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6700,"name":"contains","nodeType":"Identifier","overloadedDeclarations":[6834,7058],"referencedDeclaration":6834,"src":"1942:8:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"}},"id":6703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1942:20:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6728,"nodeType":"Block","src":"2218:37:62","statements":[{"expression":{"hexValue":"66616c7365","id":6726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2239:5:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6699,"id":6727,"nodeType":"Return","src":"2232:12:62"}]},"id":6729,"nodeType":"IfStatement","src":"1937:318:62","trueBody":{"id":6725,"nodeType":"Block","src":"1964:248:62","statements":[{"expression":{"arguments":[{"id":6710,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6695,"src":"1995:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":6705,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6693,"src":"1978:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6708,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"1978:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"1978:16:62","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":6711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1978:23:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6712,"nodeType":"ExpressionStatement","src":"1978:23:62"},{"expression":{"id":6721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6713,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6693,"src":"2136:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6716,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6689,"src":"2136:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6717,"indexExpression":{"id":6715,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6695,"src":"2149:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2136:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":6718,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6693,"src":"2158:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6719,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"2158:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2158:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2136:40:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6722,"nodeType":"ExpressionStatement","src":"2136:40:62"},{"expression":{"hexValue":"74727565","id":6723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2197:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6699,"id":6724,"nodeType":"Return","src":"2190:11:62"}]}}]},"documentation":{"id":6691,"nodeType":"StructuredDocumentation","src":"1702:144:62","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, if it was not already present."},"id":6731,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":6696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6693,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6731,"src":"1864:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6692,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1864:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6695,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6731,"src":"1888:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6694,"name":"address","nodeType":"ElementaryTypeName","src":"1888:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1863:39:62"},"returnParameters":{"id":6699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6698,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6731,"src":"1921:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6697,"name":"bool","nodeType":"ElementaryTypeName","src":"1921:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1920:6:62"},"scope":7131,"src":"1851:410:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6815,"nodeType":"Block","src":"2508:1388:62","statements":[{"assignments":[6742],"declarations":[{"constant":false,"id":6742,"mutability":"mutable","name":"valueIndex","nodeType":"VariableDeclaration","scope":6815,"src":"2618:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6741,"name":"uint256","nodeType":"ElementaryTypeName","src":"2618:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6747,"initialValue":{"baseExpression":{"expression":{"id":6743,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"2639:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6744,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6689,"src":"2639:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6746,"indexExpression":{"id":6745,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6736,"src":"2652:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2639:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2618:40:62"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6748,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6742,"src":"2673:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2687:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2673:15:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6813,"nodeType":"Block","src":"3853:37:62","statements":[{"expression":{"hexValue":"66616c7365","id":6811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3874:5:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6740,"id":6812,"nodeType":"Return","src":"3867:12:62"}]},"id":6814,"nodeType":"IfStatement","src":"2669:1221:62","trueBody":{"id":6810,"nodeType":"Block","src":"2690:1157:62","statements":[{"assignments":[6752],"declarations":[{"constant":false,"id":6752,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":6810,"src":"3042:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6751,"name":"uint256","nodeType":"ElementaryTypeName","src":"3042:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6756,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6753,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6742,"src":"3066:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3079:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3066:14:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3042:38:62"},{"assignments":[6758],"declarations":[{"constant":false,"id":6758,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":6810,"src":"3094:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6757,"name":"uint256","nodeType":"ElementaryTypeName","src":"3094:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6764,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":6759,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"3114:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"3114:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3114:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3135:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3114:22:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3094:42:62"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6765,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6752,"src":"3236:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6766,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6758,"src":"3253:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3236:26:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6794,"nodeType":"IfStatement","src":"3232:389:62","trueBody":{"id":6793,"nodeType":"Block","src":"3264:357:62","statements":[{"assignments":[6769],"declarations":[{"constant":false,"id":6769,"mutability":"mutable","name":"lastValue","nodeType":"VariableDeclaration","scope":6793,"src":"3282:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6768,"name":"address","nodeType":"ElementaryTypeName","src":"3282:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6774,"initialValue":{"baseExpression":{"expression":{"id":6770,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"3302:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6771,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"3302:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6773,"indexExpression":{"id":6772,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6758,"src":"3314:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3302:22:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3282:42:62"},{"expression":{"id":6781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6775,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"3424:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"3424:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6779,"indexExpression":{"id":6777,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6752,"src":"3436:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3424:26:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6780,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6769,"src":"3453:9:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3424:38:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6782,"nodeType":"ExpressionStatement","src":"3424:38:62"},{"expression":{"id":6791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6783,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"3536:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6786,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6689,"src":"3536:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6787,"indexExpression":{"id":6785,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6769,"src":"3549:9:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3536:23:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6788,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6752,"src":"3562:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3578:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3562:17:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3536:43:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6792,"nodeType":"ExpressionStatement","src":"3536:43:62"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":6795,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"3699:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"3699:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"3699:15:62","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":6800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3699:17:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6801,"nodeType":"ExpressionStatement","src":"3699:17:62"},{"expression":{"id":6806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"3784:26:62","subExpression":{"baseExpression":{"expression":{"id":6802,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"3791:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6689,"src":"3791:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6805,"indexExpression":{"id":6804,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6736,"src":"3804:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3791:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6807,"nodeType":"ExpressionStatement","src":"3784:26:62"},{"expression":{"hexValue":"74727565","id":6808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3832:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6740,"id":6809,"nodeType":"Return","src":"3825:11:62"}]}}]},"documentation":{"id":6732,"nodeType":"StructuredDocumentation","src":"2267:157:62","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":6816,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":6737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6734,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6816,"src":"2445:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6733,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"2445:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6736,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6816,"src":"2469:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6735,"name":"address","nodeType":"ElementaryTypeName","src":"2469:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2444:39:62"},"returnParameters":{"id":6740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6739,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6816,"src":"2502:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6738,"name":"bool","nodeType":"ElementaryTypeName","src":"2502:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2501:6:62"},"scope":7131,"src":"2429:1467:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6833,"nodeType":"Block","src":"4063:48:62","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":6826,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6819,"src":"4080:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6689,"src":"4080:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6829,"indexExpression":{"id":6828,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"4093:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4080:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4103:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4080:24:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6825,"id":6832,"nodeType":"Return","src":"4073:31:62"}]},"documentation":{"id":6817,"nodeType":"StructuredDocumentation","src":"3902:70:62","text":" @dev Returns true if the value is in the set. O(1)."},"id":6834,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":6822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6819,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6834,"src":"3995:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6818,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"3995:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6821,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6834,"src":"4019:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6820,"name":"address","nodeType":"ElementaryTypeName","src":"4019:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3994:39:62"},"returnParameters":{"id":6825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6824,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6834,"src":"4057:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6823,"name":"bool","nodeType":"ElementaryTypeName","src":"4057:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4056:6:62"},"scope":7131,"src":"3977:134:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6846,"nodeType":"Block","src":"4264:42:62","statements":[{"expression":{"expression":{"expression":{"id":6842,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6837,"src":"4281:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6843,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"4281:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4281:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6841,"id":6845,"nodeType":"Return","src":"4274:25:62"}]},"documentation":{"id":6835,"nodeType":"StructuredDocumentation","src":"4117:70:62","text":" @dev Returns the number of values on the set. O(1)."},"id":6847,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":6838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6837,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6847,"src":"4208:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6836,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"4208:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"4207:24:62"},"returnParameters":{"id":6841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6840,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6847,"src":"4255:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6839,"name":"uint256","nodeType":"ElementaryTypeName","src":"4255:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4254:9:62"},"scope":7131,"src":"4192:114:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6872,"nodeType":"Block","src":"4731:116:62","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":6858,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6850,"src":"4750:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6859,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"4750:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4750:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6861,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6852,"src":"4771:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4750:26:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6863,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"4778:6:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":6864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1776,"src":"4778:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6857,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"4741:8:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4741:58:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6866,"nodeType":"ExpressionStatement","src":"4741:58:62"},{"expression":{"arguments":[{"id":6868,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6850,"src":"4829:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},{"id":6869,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6852,"src":"4834:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6867,"name":"unchecked_at","nodeType":"Identifier","overloadedDeclarations":[6889,7113],"referencedDeclaration":6889,"src":"4816:12:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":6870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4816:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6856,"id":6871,"nodeType":"Return","src":"4809:31:62"}]},"documentation":{"id":6848,"nodeType":"StructuredDocumentation","src":"4312:331:62","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":6873,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":6853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6850,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6873,"src":"4660:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6849,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"4660:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6852,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":6873,"src":"4684:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6851,"name":"uint256","nodeType":"ElementaryTypeName","src":"4684:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4659:39:62"},"returnParameters":{"id":6856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6855,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6873,"src":"4722:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6854,"name":"address","nodeType":"ElementaryTypeName","src":"4722:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4721:9:62"},"scope":7131,"src":"4648:199:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6888,"nodeType":"Block","src":"5305:42:62","statements":[{"expression":{"baseExpression":{"expression":{"id":6883,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6876,"src":"5322:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6884,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"5322:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":6886,"indexExpression":{"id":6885,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6878,"src":"5334:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5322:18:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6882,"id":6887,"nodeType":"Return","src":"5315:25:62"}]},"documentation":{"id":6874,"nodeType":"StructuredDocumentation","src":"4853:301:62","text":" @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n than {length}). O(1).\n This function performs one less storage read than {at}, but should only be used when `index` is known to be\n within bounds."},"id":6889,"implemented":true,"kind":"function","modifiers":[],"name":"unchecked_at","nodeType":"FunctionDefinition","parameters":{"id":6879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6876,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6889,"src":"5234:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6875,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"5234:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6878,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":6889,"src":"5258:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6877,"name":"uint256","nodeType":"ElementaryTypeName","src":"5258:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5233:39:62"},"returnParameters":{"id":6882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6881,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6889,"src":"5296:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6880,"name":"address","nodeType":"ElementaryTypeName","src":"5296:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5295:9:62"},"scope":7131,"src":"5212:135:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6905,"nodeType":"Block","src":"5444:47:62","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":6898,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6891,"src":"5461:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6899,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6689,"src":"5461:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6901,"indexExpression":{"id":6900,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6893,"src":"5474:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5461:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5483:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5461:23:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6897,"id":6904,"nodeType":"Return","src":"5454:30:62"}]},"id":6906,"implemented":true,"kind":"function","modifiers":[],"name":"rawIndexOf","nodeType":"FunctionDefinition","parameters":{"id":6894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6891,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6906,"src":"5373:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6890,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"5373:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6893,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6906,"src":"5397:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6892,"name":"address","nodeType":"ElementaryTypeName","src":"5397:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5372:39:62"},"returnParameters":{"id":6897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6896,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6906,"src":"5435:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6895,"name":"uint256","nodeType":"ElementaryTypeName","src":"5435:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5434:9:62"},"scope":7131,"src":"5353:138:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.Bytes32Set","id":6914,"members":[{"constant":false,"id":6909,"mutability":"mutable","name":"_values","nodeType":"VariableDeclaration","scope":6914,"src":"5558:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6907,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5558:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6908,"nodeType":"ArrayTypeName","src":"5558:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":6913,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":6914,"src":"5708:36:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":6912,"keyType":{"id":6910,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5716:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"5708:27:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueType":{"id":6911,"name":"uint256","nodeType":"ElementaryTypeName","src":"5727:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Bytes32Set","nodeType":"StructDefinition","scope":7131,"src":"5497:254:62","visibility":"public"},{"body":{"id":6954,"nodeType":"Block","src":"5997:334:62","statements":[{"condition":{"id":6928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6011:21:62","subExpression":{"arguments":[{"id":6925,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"6021:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},{"id":6926,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6919,"src":"6026:5:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6924,"name":"contains","nodeType":"Identifier","overloadedDeclarations":[6834,7058],"referencedDeclaration":7058,"src":"6012:8:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Bytes32Set_$6914_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) view returns (bool)"}},"id":6927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6012:20:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6952,"nodeType":"Block","src":"6288:37:62","statements":[{"expression":{"hexValue":"66616c7365","id":6950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6309:5:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6923,"id":6951,"nodeType":"Return","src":"6302:12:62"}]},"id":6953,"nodeType":"IfStatement","src":"6007:318:62","trueBody":{"id":6949,"nodeType":"Block","src":"6034:248:62","statements":[{"expression":{"arguments":[{"id":6934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6919,"src":"6065:5:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":6929,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"6048:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6932,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"6048:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"6048:16:62","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":6935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6048:23:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6936,"nodeType":"ExpressionStatement","src":"6048:23:62"},{"expression":{"id":6945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6937,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"6206:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6940,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6913,"src":"6206:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6941,"indexExpression":{"id":6939,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6919,"src":"6219:5:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6206:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":6942,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"6228:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"6228:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6228:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6206:40:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6946,"nodeType":"ExpressionStatement","src":"6206:40:62"},{"expression":{"hexValue":"74727565","id":6947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6267:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6923,"id":6948,"nodeType":"Return","src":"6260:11:62"}]}}]},"documentation":{"id":6915,"nodeType":"StructuredDocumentation","src":"5757:159:62","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":6955,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":6920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6917,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6955,"src":"5934:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":6916,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6914,"src":"5934:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6919,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6955,"src":"5958:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6918,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5958:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5933:39:62"},"returnParameters":{"id":6923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6922,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6955,"src":"5991:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6921,"name":"bool","nodeType":"ElementaryTypeName","src":"5991:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5990:6:62"},"scope":7131,"src":"5921:410:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7039,"nodeType":"Block","src":"6571:1388:62","statements":[{"assignments":[6966],"declarations":[{"constant":false,"id":6966,"mutability":"mutable","name":"valueIndex","nodeType":"VariableDeclaration","scope":7039,"src":"6681:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6965,"name":"uint256","nodeType":"ElementaryTypeName","src":"6681:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6971,"initialValue":{"baseExpression":{"expression":{"id":6967,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"6702:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6968,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6913,"src":"6702:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6970,"indexExpression":{"id":6969,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6960,"src":"6715:5:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6702:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6681:40:62"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6972,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6966,"src":"6736:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6750:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6736:15:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7037,"nodeType":"Block","src":"7916:37:62","statements":[{"expression":{"hexValue":"66616c7365","id":7035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7937:5:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6964,"id":7036,"nodeType":"Return","src":"7930:12:62"}]},"id":7038,"nodeType":"IfStatement","src":"6732:1221:62","trueBody":{"id":7034,"nodeType":"Block","src":"6753:1157:62","statements":[{"assignments":[6976],"declarations":[{"constant":false,"id":6976,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":7034,"src":"7105:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6975,"name":"uint256","nodeType":"ElementaryTypeName","src":"7105:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6980,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6977,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6966,"src":"7129:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7142:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7129:14:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7105:38:62"},{"assignments":[6982],"declarations":[{"constant":false,"id":6982,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":7034,"src":"7157:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6981,"name":"uint256","nodeType":"ElementaryTypeName","src":"7157:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6988,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":6983,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"7177:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6984,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"7177:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7177:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7198:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7177:22:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7157:42:62"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6989,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6976,"src":"7299:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6990,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6982,"src":"7316:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7299:26:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7018,"nodeType":"IfStatement","src":"7295:389:62","trueBody":{"id":7017,"nodeType":"Block","src":"7327:357:62","statements":[{"assignments":[6993],"declarations":[{"constant":false,"id":6993,"mutability":"mutable","name":"lastValue","nodeType":"VariableDeclaration","scope":7017,"src":"7345:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6992,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7345:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6998,"initialValue":{"baseExpression":{"expression":{"id":6994,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"7365:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6995,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"7365:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6997,"indexExpression":{"id":6996,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6982,"src":"7377:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7365:22:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7345:42:62"},{"expression":{"id":7005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6999,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"7487:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7002,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"7487:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7003,"indexExpression":{"id":7001,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6976,"src":"7499:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7487:26:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7004,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6993,"src":"7516:9:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7487:38:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7006,"nodeType":"ExpressionStatement","src":"7487:38:62"},{"expression":{"id":7015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7007,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"7599:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7010,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6913,"src":"7599:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7011,"indexExpression":{"id":7009,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6993,"src":"7612:9:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7599:23:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7012,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6976,"src":"7625:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7641:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7625:17:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7599:43:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7016,"nodeType":"ExpressionStatement","src":"7599:43:62"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7019,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"7762:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7022,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"7762:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"7762:15:62","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7762:17:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7025,"nodeType":"ExpressionStatement","src":"7762:17:62"},{"expression":{"id":7030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"7847:26:62","subExpression":{"baseExpression":{"expression":{"id":7026,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"7854:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7027,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6913,"src":"7854:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7029,"indexExpression":{"id":7028,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6960,"src":"7867:5:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7854:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7031,"nodeType":"ExpressionStatement","src":"7847:26:62"},{"expression":{"hexValue":"74727565","id":7032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7895:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6964,"id":7033,"nodeType":"Return","src":"7888:11:62"}]}}]},"documentation":{"id":6956,"nodeType":"StructuredDocumentation","src":"6337:150:62","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was present."},"id":7040,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":6961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6958,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7040,"src":"6508:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":6957,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6914,"src":"6508:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6960,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7040,"src":"6532:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6959,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6532:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6507:39:62"},"returnParameters":{"id":6964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6963,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7040,"src":"6565:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6962,"name":"bool","nodeType":"ElementaryTypeName","src":"6565:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6564:6:62"},"scope":7131,"src":"6492:1467:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7057,"nodeType":"Block","src":"8126:48:62","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":7050,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7043,"src":"8143:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7051,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6913,"src":"8143:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7053,"indexExpression":{"id":7052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7045,"src":"8156:5:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8143:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8166:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8143:24:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7049,"id":7056,"nodeType":"Return","src":"8136:31:62"}]},"documentation":{"id":7041,"nodeType":"StructuredDocumentation","src":"7965:70:62","text":" @dev Returns true if the value is in the set. O(1)."},"id":7058,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":7046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7043,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7058,"src":"8058:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7042,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6914,"src":"8058:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7045,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7058,"src":"8082:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7044,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8082:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8057:39:62"},"returnParameters":{"id":7049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7048,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7058,"src":"8120:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7047,"name":"bool","nodeType":"ElementaryTypeName","src":"8120:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8119:6:62"},"scope":7131,"src":"8040:134:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7070,"nodeType":"Block","src":"8327:42:62","statements":[{"expression":{"expression":{"expression":{"id":7066,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7061,"src":"8344:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"8344:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8344:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7065,"id":7069,"nodeType":"Return","src":"8337:25:62"}]},"documentation":{"id":7059,"nodeType":"StructuredDocumentation","src":"8180:70:62","text":" @dev Returns the number of values on the set. O(1)."},"id":7071,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":7062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7061,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7071,"src":"8271:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7060,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6914,"src":"8271:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"}],"src":"8270:24:62"},"returnParameters":{"id":7065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7064,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7071,"src":"8318:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7063,"name":"uint256","nodeType":"ElementaryTypeName","src":"8318:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8317:9:62"},"scope":7131,"src":"8255:114:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7096,"nodeType":"Block","src":"8794:116:62","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7082,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7074,"src":"8813:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"8813:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8813:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7085,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7076,"src":"8834:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8813:26:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7087,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"8841:6:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":7088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1776,"src":"8841:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7081,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"8804:8:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8804:58:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7090,"nodeType":"ExpressionStatement","src":"8804:58:62"},{"expression":{"arguments":[{"id":7092,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7074,"src":"8892:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},{"id":7093,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7076,"src":"8897:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7091,"name":"unchecked_at","nodeType":"Identifier","overloadedDeclarations":[6889,7113],"referencedDeclaration":7113,"src":"8879:12:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Bytes32Set_$6914_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Bytes32Set storage pointer,uint256) view returns (bytes32)"}},"id":7094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8879:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7080,"id":7095,"nodeType":"Return","src":"8872:31:62"}]},"documentation":{"id":7072,"nodeType":"StructuredDocumentation","src":"8375:331:62","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":7097,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":7077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7074,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7097,"src":"8723:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7073,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6914,"src":"8723:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7076,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":7097,"src":"8747:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7075,"name":"uint256","nodeType":"ElementaryTypeName","src":"8747:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8722:39:62"},"returnParameters":{"id":7080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7079,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7097,"src":"8785:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7078,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8785:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8784:9:62"},"scope":7131,"src":"8711:199:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7112,"nodeType":"Block","src":"9368:42:62","statements":[{"expression":{"baseExpression":{"expression":{"id":7107,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"9385:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7108,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"9385:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7110,"indexExpression":{"id":7109,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7102,"src":"9397:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9385:18:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7106,"id":7111,"nodeType":"Return","src":"9378:25:62"}]},"documentation":{"id":7098,"nodeType":"StructuredDocumentation","src":"8916:301:62","text":" @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n than {length}). O(1).\n This function performs one less storage read than {at}, but should only be used when `index` is known to be\n within bounds."},"id":7113,"implemented":true,"kind":"function","modifiers":[],"name":"unchecked_at","nodeType":"FunctionDefinition","parameters":{"id":7103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7100,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7113,"src":"9297:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7099,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6914,"src":"9297:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7102,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":7113,"src":"9321:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7101,"name":"uint256","nodeType":"ElementaryTypeName","src":"9321:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9296:39:62"},"returnParameters":{"id":7106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7105,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7113,"src":"9359:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7104,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9359:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9358:9:62"},"scope":7131,"src":"9275:135:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7129,"nodeType":"Block","src":"9507:47:62","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":7122,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"9524:3:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7123,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6913,"src":"9524:12:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7125,"indexExpression":{"id":7124,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7117,"src":"9537:5:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9524:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9546:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9524:23:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7121,"id":7128,"nodeType":"Return","src":"9517:30:62"}]},"id":7130,"implemented":true,"kind":"function","modifiers":[],"name":"rawIndexOf","nodeType":"FunctionDefinition","parameters":{"id":7118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7115,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7130,"src":"9436:22:62","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7114,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6914,"src":"9436:10:62","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6914_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7117,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7130,"src":"9460:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7116,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9460:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9435:39:62"},"returnParameters":{"id":7121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7120,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7130,"src":"9498:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7119,"name":"uint256","nodeType":"ElementaryTypeName","src":"9498:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9497:9:62"},"scope":7131,"src":"9416:138:62","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":7132,"src":"1210:8346:62"}],"src":"406:9151:62"},"id":62},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","exportedSymbols":{"ReentrancyGuard":[7187]},"id":7188,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7133,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"374:23:63"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7134,"nodeType":"ImportDirective","scope":7188,"sourceUnit":2249,"src":"399:90:63","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":7135,"nodeType":"StructuredDocumentation","src":"491:750:63","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."},"fullyImplemented":true,"id":7187,"linearizedBaseContracts":[7187],"name":"ReentrancyGuard","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":7138,"mutability":"constant","name":"_NOT_ENTERED","nodeType":"VariableDeclaration","scope":7187,"src":"2030:41:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7136,"name":"uint256","nodeType":"ElementaryTypeName","src":"2030:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":7137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2070:1:63","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":7141,"mutability":"constant","name":"_ENTERED","nodeType":"VariableDeclaration","scope":7187,"src":"2077:37:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7139,"name":"uint256","nodeType":"ElementaryTypeName","src":"2077:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":7140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2113:1:63","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"constant":false,"id":7143,"mutability":"mutable","name":"_status","nodeType":"VariableDeclaration","scope":7187,"src":"2121:23:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7142,"name":"uint256","nodeType":"ElementaryTypeName","src":"2121:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":7150,"nodeType":"Block","src":"2165:39:63","statements":[{"expression":{"id":7148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7146,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"2175:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7147,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7138,"src":"2185:12:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2175:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7149,"nodeType":"ExpressionStatement","src":"2175:22:63"}]},"id":7151,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7144,"nodeType":"ParameterList","parameters":[],"src":"2162:2:63"},"returnParameters":{"id":7145,"nodeType":"ParameterList","parameters":[],"src":"2165:0:63"},"scope":7187,"src":"2151:53:63","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7161,"nodeType":"Block","src":"2603:77:63","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7154,"name":"_enterNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7178,"src":"2613:18:63","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2613:20:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7156,"nodeType":"ExpressionStatement","src":"2613:20:63"},{"id":7157,"nodeType":"PlaceholderStatement","src":"2643:1:63"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7158,"name":"_exitNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7186,"src":"2654:17:63","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2654:19:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7160,"nodeType":"ExpressionStatement","src":"2654:19:63"}]},"documentation":{"id":7152,"nodeType":"StructuredDocumentation","src":"2210:364:63","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and make it call a\n `private` function that does the actual work."},"id":7162,"name":"nonReentrant","nodeType":"ModifierDefinition","parameters":{"id":7153,"nodeType":"ParameterList","parameters":[],"src":"2600:2:63"},"src":"2579:101:63","virtual":false,"visibility":"internal"},{"body":{"id":7177,"nodeType":"Block","src":"2724:233:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7166,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"2818:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7167,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"2829:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2818:19:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7169,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2839:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":7170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"REENTRANCY","nodeType":"MemberAccess","referencedDeclaration":2007,"src":"2839:17:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7165,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"2809:8:63","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2809:48:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7172,"nodeType":"ExpressionStatement","src":"2809:48:63"},{"expression":{"id":7175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7173,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"2932:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7174,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"2942:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2932:18:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7176,"nodeType":"ExpressionStatement","src":"2932:18:63"}]},"id":7178,"implemented":true,"kind":"function","modifiers":[],"name":"_enterNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":7163,"nodeType":"ParameterList","parameters":[],"src":"2713:2:63"},"returnParameters":{"id":7164,"nodeType":"ParameterList","parameters":[],"src":"2724:0:63"},"scope":7187,"src":"2686:271:63","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":7185,"nodeType":"Block","src":"3000:171:63","statements":[{"expression":{"id":7183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7181,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"3142:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7182,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7138,"src":"3152:12:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3142:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7184,"nodeType":"ExpressionStatement","src":"3142:22:63"}]},"id":7186,"implemented":true,"kind":"function","modifiers":[],"name":"_exitNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":7179,"nodeType":"ParameterList","parameters":[],"src":"2989:2:63"},"returnParameters":{"id":7180,"nodeType":"ParameterList","parameters":[],"src":"3000:0:63"},"scope":7187,"src":"2963:208:63","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":7188,"src":"1242:1931:63"}],"src":"374:2800:63"},"id":63},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","exportedSymbols":{"SafeERC20":[7341]},"id":7342,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7189,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"313:23:64"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7190,"nodeType":"ImportDirective","scope":7342,"sourceUnit":2249,"src":"338:90:64","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":7191,"nodeType":"ImportDirective","scope":7342,"sourceUnit":2448,"src":"429:87:64","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7192,"nodeType":"StructuredDocumentation","src":"518:457:64","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":7341,"linearizedBaseContracts":[7341],"name":"SafeERC20","nodeType":"ContractDefinition","nodes":[{"body":{"id":7250,"nodeType":"Block","src":"1102:406:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7201,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7198,"src":"1218:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1227:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1218:10:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":7208,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1256:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}],"id":7207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1248:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7206,"name":"address","nodeType":"ElementaryTypeName","src":"1248:7:64","typeDescriptions":{}}},"id":7209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1248:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7212,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7196,"src":"1271:2:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1263:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7210,"name":"address","nodeType":"ElementaryTypeName","src":"1263:7:64","typeDescriptions":{}}},"id":7213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1263:11:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7204,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"1232:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":7205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2406,"src":"1232:15:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":7214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1232:43:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1279:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1232:48:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1218:62:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7234,"nodeType":"IfStatement","src":"1214:183:64","trueBody":{"id":7233,"nodeType":"Block","src":"1282:115:64","statements":[{"expression":{"arguments":[{"arguments":[{"id":7221,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"1324:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":7220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1316:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7219,"name":"address","nodeType":"ElementaryTypeName","src":"1316:7:64","typeDescriptions":{}}},"id":7222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1316:14:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":7225,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"1355:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":7226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2416,"src":"1355:13:64","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":7227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1355:22:64","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":7228,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7196,"src":"1379:2:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":7229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1383:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":7223,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1332:3:64","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1332:22:64","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":7230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1332:53:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7218,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7340,"src":"1296:19:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":7231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1296:90:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7232,"nodeType":"ExpressionStatement","src":"1296:90:64"}]}},{"expression":{"arguments":[{"arguments":[{"id":7238,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"1435:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":7237,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1427:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7236,"name":"address","nodeType":"ElementaryTypeName","src":"1427:7:64","typeDescriptions":{}}},"id":7239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1427:14:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":7242,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"1466:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":7243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2416,"src":"1466:13:64","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":7244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1466:22:64","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":7245,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7196,"src":"1490:2:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7246,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7198,"src":"1494:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7240,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1443:3:64","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1443:22:64","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":7247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1443:57:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7235,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7340,"src":"1407:19:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":7248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1407:94:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7249,"nodeType":"ExpressionStatement","src":"1407:94:64"}]},"id":7251,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nodeType":"FunctionDefinition","parameters":{"id":7199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7194,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7251,"src":"1031:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":7193,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1031:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":7196,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":7251,"src":"1053:10:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7195,"name":"address","nodeType":"ElementaryTypeName","src":"1053:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7198,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7251,"src":"1073:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7197,"name":"uint256","nodeType":"ElementaryTypeName","src":"1073:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1021:71:64"},"returnParameters":{"id":7200,"nodeType":"ParameterList","parameters":[],"src":"1102:0:64"},"scope":7341,"src":"1001:507:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7275,"nodeType":"Block","src":"1616:112:64","statements":[{"expression":{"arguments":[{"arguments":[{"id":7263,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7253,"src":"1654:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":7262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1646:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7261,"name":"address","nodeType":"ElementaryTypeName","src":"1646:7:64","typeDescriptions":{}}},"id":7264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1646:14:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":7267,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7253,"src":"1685:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":7268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2396,"src":"1685:14:64","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":7269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1685:23:64","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":7270,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7255,"src":"1710:2:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7271,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7257,"src":"1714:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7265,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1662:3:64","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1662:22:64","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":7272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1662:58:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7260,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7340,"src":"1626:19:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":7273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1626:95:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7274,"nodeType":"ExpressionStatement","src":"1626:95:64"}]},"id":7276,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":7258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7253,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7276,"src":"1545:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":7252,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1545:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":7255,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":7276,"src":"1567:10:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7254,"name":"address","nodeType":"ElementaryTypeName","src":"1567:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7257,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7276,"src":"1587:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7256,"name":"uint256","nodeType":"ElementaryTypeName","src":"1587:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1535:71:64"},"returnParameters":{"id":7259,"nodeType":"ParameterList","parameters":[],"src":"1616:0:64"},"scope":7341,"src":"1514:214:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7303,"nodeType":"Block","src":"1862:122:64","statements":[{"expression":{"arguments":[{"arguments":[{"id":7290,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7278,"src":"1900:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":7289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1892:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7288,"name":"address","nodeType":"ElementaryTypeName","src":"1892:7:64","typeDescriptions":{}}},"id":7291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1892:14:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":7294,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7278,"src":"1931:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":7295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2428,"src":"1931:18:64","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":7296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1931:27:64","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":7297,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7280,"src":"1960:4:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"1966:2:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7299,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7284,"src":"1970:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7292,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1908:3:64","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1908:22:64","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":7300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1908:68:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7287,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7340,"src":"1872:19:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":7301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1872:105:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7302,"nodeType":"ExpressionStatement","src":"1872:105:64"}]},"id":7304,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":7285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7278,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7304,"src":"1769:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":7277,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1769:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":7280,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":7304,"src":"1791:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7279,"name":"address","nodeType":"ElementaryTypeName","src":"1791:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7282,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":7304,"src":"1813:10:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7281,"name":"address","nodeType":"ElementaryTypeName","src":"1813:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7284,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7304,"src":"1833:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7283,"name":"uint256","nodeType":"ElementaryTypeName","src":"1833:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1759:93:64"},"returnParameters":{"id":7286,"nodeType":"ParameterList","parameters":[],"src":"1862:0:64"},"scope":7341,"src":"1734:250:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7339,"nodeType":"Block","src":"2395:843:64","statements":[{"assignments":[7313,7315],"declarations":[{"constant":false,"id":7313,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":7339,"src":"2626:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7312,"name":"bool","nodeType":"ElementaryTypeName","src":"2626:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7315,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":7339,"src":"2640:23:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7314,"name":"bytes","nodeType":"ElementaryTypeName","src":"2640:5:64","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7320,"initialValue":{"arguments":[{"id":7318,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7309,"src":"2678:4:64","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7316,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7307,"src":"2667:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2667:10:64","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":7319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2667:16:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2625:58:64"},{"AST":{"nodeType":"YulBlock","src":"2848:156:64","statements":[{"body":{"nodeType":"YulBlock","src":"2880:114:64","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2913:1:64","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2916:1:64","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"2919:14:64"},"nodeType":"YulFunctionCall","src":"2919:16:64"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"2898:14:64"},"nodeType":"YulFunctionCall","src":"2898:38:64"},"nodeType":"YulExpressionStatement","src":"2898:38:64"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2960:1:64","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"2963:14:64"},"nodeType":"YulFunctionCall","src":"2963:16:64"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2953:6:64"},"nodeType":"YulFunctionCall","src":"2953:27:64"},"nodeType":"YulExpressionStatement","src":"2953:27:64"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"2868:7:64"},{"kind":"number","nodeType":"YulLiteral","src":"2877:1:64","type":"","value":"0"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2865:2:64"},"nodeType":"YulFunctionCall","src":"2865:14:64"},"nodeType":"YulIf","src":"2862:2:64"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7313,"isOffset":false,"isSlot":false,"src":"2868:7:64","valueSize":1}],"id":7321,"nodeType":"InlineAssembly","src":"2839:165:64"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7323,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7315,"src":"3143:10:64","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3143:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3164:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3143:22:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":7329,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7315,"src":"3180:10:64","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":7331,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3193:4:64","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":7330,"name":"bool","nodeType":"ElementaryTypeName","src":"3193:4:64","typeDescriptions":{}}}],"id":7332,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3192:6:64","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":7327,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3169:3:64","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"3169:10:64","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":7333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3169:30:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3143:56:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7335,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"3201:6:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":7336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SAFE_ERC20_CALL_FAILED","nodeType":"MemberAccess","referencedDeclaration":2061,"src":"3201:29:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7322,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"3134:8:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3134:97:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7338,"nodeType":"ExpressionStatement","src":"3134:97:64"}]},"documentation":{"id":7305,"nodeType":"StructuredDocumentation","src":"1990:329:64","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n WARNING: `token` is assumed to be a contract: calls to EOAs will *not* revert."},"id":7340,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nodeType":"FunctionDefinition","parameters":{"id":7310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7307,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7340,"src":"2353:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7306,"name":"address","nodeType":"ElementaryTypeName","src":"2353:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7309,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":7340,"src":"2368:17:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7308,"name":"bytes","nodeType":"ElementaryTypeName","src":"2368:5:64","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2352:34:64"},"returnParameters":{"id":7311,"nodeType":"ParameterList","parameters":[],"src":"2395:0:64"},"scope":7341,"src":"2324:914:64","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":7342,"src":"976:2264:64"}],"src":"313:2928:64"},"id":64},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","exportedSymbols":{"SafeMath":[7419]},"id":7420,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7343,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:65"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7344,"nodeType":"ImportDirective","scope":7420,"sourceUnit":2249,"src":"58:90:65","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7345,"nodeType":"StructuredDocumentation","src":"150:563:65","text":" @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"id":7419,"linearizedBaseContracts":[7419],"name":"SafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":7371,"nodeType":"Block","src":"1033:100:65","statements":[{"assignments":[7356],"declarations":[{"constant":false,"id":7356,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":7371,"src":"1043:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7355,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7360,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7357,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7348,"src":"1055:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7358,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7350,"src":"1059:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1055:5:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1043:17:65"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7362,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7356,"src":"1079:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7363,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7348,"src":"1084:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1079:6:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7365,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1087:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":7366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1746,"src":"1087:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7361,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1070:8:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1070:37:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7368,"nodeType":"ExpressionStatement","src":"1070:37:65"},{"expression":{"id":7369,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7356,"src":"1125:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7354,"id":7370,"nodeType":"Return","src":"1118:8:65"}]},"documentation":{"id":7346,"nodeType":"StructuredDocumentation","src":"737:224:65","text":" @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."},"id":7372,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":7351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7348,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7372,"src":"979:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7347,"name":"uint256","nodeType":"ElementaryTypeName","src":"979:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7350,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7372,"src":"990:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7349,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"978:22:65"},"returnParameters":{"id":7354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7353,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7372,"src":"1024:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7352,"name":"uint256","nodeType":"ElementaryTypeName","src":"1024:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1023:9:65"},"scope":7419,"src":"966:167:65","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7389,"nodeType":"Block","src":"1471:54:65","statements":[{"expression":{"arguments":[{"id":7383,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7375,"src":"1492:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7384,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7377,"src":"1495:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7385,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1498:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":7386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1749,"src":"1498:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7382,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[7390,7418],"referencedDeclaration":7418,"src":"1488:3:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1488:30:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7381,"id":7388,"nodeType":"Return","src":"1481:37:65"}]},"documentation":{"id":7373,"nodeType":"StructuredDocumentation","src":"1139:260:65","text":" @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":7390,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":7378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7375,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7390,"src":"1417:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7374,"name":"uint256","nodeType":"ElementaryTypeName","src":"1417:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7377,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7390,"src":"1428:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7376,"name":"uint256","nodeType":"ElementaryTypeName","src":"1428:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1416:22:65"},"returnParameters":{"id":7381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7380,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7390,"src":"1462:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7379,"name":"uint256","nodeType":"ElementaryTypeName","src":"1462:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1461:9:65"},"scope":7419,"src":"1404:121:65","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7417,"nodeType":"Block","src":"1932:90:65","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7403,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7395,"src":"1951:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":7404,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7393,"src":"1956:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1951:6:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":7406,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7397,"src":"1959:9:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7402,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"1942:8:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1942:27:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7408,"nodeType":"ExpressionStatement","src":"1942:27:65"},{"assignments":[7410],"declarations":[{"constant":false,"id":7410,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":7417,"src":"1979:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7409,"name":"uint256","nodeType":"ElementaryTypeName","src":"1979:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7414,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7411,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7393,"src":"1991:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7412,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7395,"src":"1995:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1991:5:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1979:17:65"},{"expression":{"id":7415,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7410,"src":"2014:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7401,"id":7416,"nodeType":"Return","src":"2007:8:65"}]},"documentation":{"id":7391,"nodeType":"StructuredDocumentation","src":"1531:280:65","text":" @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":7418,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":7398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7393,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7418,"src":"1838:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7392,"name":"uint256","nodeType":"ElementaryTypeName","src":"1838:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7395,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7418,"src":"1857:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7394,"name":"uint256","nodeType":"ElementaryTypeName","src":"1857:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7397,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":7418,"src":"1876:17:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7396,"name":"uint256","nodeType":"ElementaryTypeName","src":"1876:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1828:71:65"},"returnParameters":{"id":7401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7400,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7418,"src":"1923:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7399,"name":"uint256","nodeType":"ElementaryTypeName","src":"1923:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1922:9:65"},"scope":7419,"src":"1816:206:65","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7420,"src":"714:1310:65"}],"src":"33:1992:65"},"id":65},"contracts/BalancerMinter.sol":{"ast":{"absolutePath":"contracts/BalancerMinter.sol","exportedSymbols":{"BalancerMinter":[7866]},"id":7867,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7421,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:66"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","id":7422,"nodeType":"ImportDirective","scope":7867,"sourceUnit":198,"src":"713:85:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":7423,"nodeType":"ImportDirective","scope":7867,"sourceUnit":7188,"src":"800:85:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","id":7424,"nodeType":"ImportDirective","scope":7867,"sourceUnit":7420,"src":"886:78:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","id":7425,"nodeType":"ImportDirective","scope":7867,"sourceUnit":6022,"src":"965:76:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","id":7426,"nodeType":"ImportDirective","scope":7867,"sourceUnit":3309,"src":"1042:87:66","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":7427,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":197,"src":"1167:15:66","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$197","typeString":"contract IBalancerMinter"}},"id":7428,"nodeType":"InheritanceSpecifier","src":"1167:15:66"},{"baseName":{"id":7429,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"1184:15:66","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":7430,"nodeType":"InheritanceSpecifier","src":"1184:15:66"},{"baseName":{"id":7431,"name":"EOASignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":3308,"src":"1201:22:66","typeDescriptions":{"typeIdentifier":"t_contract$_EOASignaturesValidator_$3308","typeString":"contract EOASignaturesValidator"}},"id":7432,"nodeType":"InheritanceSpecifier","src":"1201:22:66"}],"contractDependencies":[197,2311,3308,6021,7187],"contractKind":"contract","fullyImplemented":false,"id":7866,"linearizedBaseContracts":[7866,3308,6021,2311,7187,197],"name":"BalancerMinter","nodeType":"ContractDefinition","nodes":[{"id":7435,"libraryName":{"id":7433,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7419,"src":"1236:8:66","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7419","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"1230:27:66","typeName":{"id":7434,"name":"uint256","nodeType":"ElementaryTypeName","src":"1249:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":7437,"mutability":"immutable","name":"_token","nodeType":"VariableDeclaration","scope":7866,"src":"1263:31:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":7436,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1263:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"private"},{"constant":false,"id":7443,"mutability":"mutable","name":"_minted","nodeType":"VariableDeclaration","scope":7866,"src":"1331:63:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":7442,"keyType":{"id":7438,"name":"address","nodeType":"ElementaryTypeName","src":"1339:7:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1331:47:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":7441,"keyType":{"id":7439,"name":"address","nodeType":"ElementaryTypeName","src":"1358:7:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1350:27:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":7440,"name":"uint256","nodeType":"ElementaryTypeName","src":"1369:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":7449,"mutability":"mutable","name":"_allowedMinter","nodeType":"VariableDeclaration","scope":7866,"src":"1435:67:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":7448,"keyType":{"id":7444,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1435:44:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":7447,"keyType":{"id":7445,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1454:24:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":7446,"name":"bool","nodeType":"ElementaryTypeName","src":"1473:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"constant":true,"id":7454,"mutability":"constant","name":"_SET_MINTER_APPROVAL_TYPEHASH","nodeType":"VariableDeclaration","scope":7866,"src":"1561:162:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7450,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1561:7:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5365744d696e746572417070726f76616c2861646472657373206d696e7465722c626f6f6c20617070726f76616c2c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529","id":7452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1637:80:66","typeDescriptions":{"typeIdentifier":"t_stringliteral_c87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd815380","typeString":"literal_string \"SetMinterApproval(address minter,bool approval,uint256 nonce,uint256 deadline)\""},"value":"SetMinterApproval(address minter,bool approval,uint256 nonce,uint256 deadline)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd815380","typeString":"literal_string \"SetMinterApproval(address minter,bool approval,uint256 nonce,uint256 deadline)\""}],"id":7451,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1618:9:66","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1618:105:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"anonymous":false,"id":7462,"name":"MinterApprovalSet","nodeType":"EventDefinition","parameters":{"id":7461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7456,"indexed":true,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7462,"src":"1754:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7455,"name":"address","nodeType":"ElementaryTypeName","src":"1754:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7458,"indexed":true,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":7462,"src":"1776:22:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7457,"name":"address","nodeType":"ElementaryTypeName","src":"1776:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7460,"indexed":false,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":7462,"src":"1800:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7459,"name":"bool","nodeType":"ElementaryTypeName","src":"1800:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1753:61:66"},"src":"1730:85:66"},{"body":{"id":7479,"nodeType":"Block","src":"1942:31:66","statements":[{"expression":{"id":7477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7475,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7437,"src":"1952:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7476,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7464,"src":"1961:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"1952:14:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":7478,"nodeType":"ExpressionStatement","src":"1952:14:66"}]},"id":7480,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7471,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7466,"src":"1927:4:66","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7472,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7468,"src":"1933:7:66","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":7473,"modifierName":{"id":7470,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"1920:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP712_$6021_$","typeString":"type(contract EIP712)"}},"nodeType":"ModifierInvocation","src":"1920:21:66"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7464,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7480,"src":"1842:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":7463,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1842:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":7466,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":7480,"src":"1864:18:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7465,"name":"string","nodeType":"ElementaryTypeName","src":"1864:6:66","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7468,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":7480,"src":"1892:21:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7467,"name":"string","nodeType":"ElementaryTypeName","src":"1892:6:66","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1832:87:66"},"returnParameters":{"id":7474,"nodeType":"ParameterList","parameters":[],"src":"1942:0:66"},"scope":7866,"src":"1821:152:66","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[80],"body":{"id":7489,"nodeType":"Block","src":"2081:30:66","statements":[{"expression":{"id":7487,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7437,"src":"2098:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"functionReturnParameters":7486,"id":7488,"nodeType":"Return","src":"2091:13:66"}]},"documentation":{"id":7481,"nodeType":"StructuredDocumentation","src":"1979:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"c0039699","id":7490,"implemented":true,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","overrides":{"id":7483,"nodeType":"OverrideSpecifier","overrides":[],"src":"2055:8:66"},"parameters":{"id":7482,"nodeType":"ParameterList","parameters":[],"src":"2040:2:66"},"returnParameters":{"id":7486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7485,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7490,"src":"2073:6:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":7484,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2073:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2072:8:66"},"scope":7866,"src":"2015:96:66","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[88],"body":{"id":7507,"nodeType":"Block","src":"2231:51:66","statements":[{"expression":{"arguments":[{"id":7502,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7493,"src":"2257:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7503,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2264:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2264:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":7501,"name":"_mintFor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7750,"src":"2248:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":7505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2248:27:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7500,"id":7506,"nodeType":"Return","src":"2241:34:66"}]},"documentation":{"id":7491,"nodeType":"StructuredDocumentation","src":"2117:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"6a627842","id":7508,"implemented":true,"kind":"function","modifiers":[{"id":7497,"modifierName":{"id":7496,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"2200:12:66","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2200:12:66"}],"name":"mint","nodeType":"FunctionDefinition","overrides":{"id":7495,"nodeType":"OverrideSpecifier","overrides":[],"src":"2191:8:66"},"parameters":{"id":7494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7493,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":7508,"src":"2167:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7492,"name":"address","nodeType":"ElementaryTypeName","src":"2167:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2166:15:66"},"returnParameters":{"id":7500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7499,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7508,"src":"2222:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7498,"name":"uint256","nodeType":"ElementaryTypeName","src":"2222:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2221:9:66"},"scope":7866,"src":"2153:129:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[97],"body":{"id":7526,"nodeType":"Block","src":"2418:56:66","statements":[{"expression":{"arguments":[{"id":7521,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7512,"src":"2448:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"expression":{"id":7522,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2456:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2456:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":7520,"name":"_mintForMany","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7760,"src":"2435:12:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_calldata_ptr_$_t_address_$returns$_t_uint256_$","typeString":"function (address[] calldata,address) returns (uint256)"}},"id":7524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2435:32:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7519,"id":7525,"nodeType":"Return","src":"2428:39:66"}]},"documentation":{"id":7509,"nodeType":"StructuredDocumentation","src":"2288:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"397ada21","id":7527,"implemented":true,"kind":"function","modifiers":[{"id":7516,"modifierName":{"id":7515,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"2387:12:66","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2387:12:66"}],"name":"mintMany","nodeType":"FunctionDefinition","overrides":{"id":7514,"nodeType":"OverrideSpecifier","overrides":[],"src":"2378:8:66"},"parameters":{"id":7513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7512,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":7527,"src":"2342:25:66","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7510,"name":"address","nodeType":"ElementaryTypeName","src":"2342:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7511,"nodeType":"ArrayTypeName","src":"2342:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2341:27:66"},"returnParameters":{"id":7519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7518,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7527,"src":"2409:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7517,"name":"uint256","nodeType":"ElementaryTypeName","src":"2409:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2408:9:66"},"scope":7866,"src":"2324:150:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[107],"body":{"id":7555,"nodeType":"Block","src":"2611:135:66","statements":[{"expression":{"arguments":[{"baseExpression":{"baseExpression":{"id":7541,"name":"_allowedMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"2629:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7544,"indexExpression":{"expression":{"id":7542,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2644:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2644:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2629:26:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7546,"indexExpression":{"id":7545,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7532,"src":"2656:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2629:32:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572","id":7547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2663:37:66","typeDescriptions":{"typeIdentifier":"t_stringliteral_869d236cd21bde9ea7f9c1cef8a678cb12f22a7cdfb332a971891dd8f23ae5f8","typeString":"literal_string \"Caller not allowed to mint for user\""},"value":"Caller not allowed to mint for user"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_869d236cd21bde9ea7f9c1cef8a678cb12f22a7cdfb332a971891dd8f23ae5f8","typeString":"literal_string \"Caller not allowed to mint for user\""}],"id":7540,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2621:7:66","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2621:80:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7549,"nodeType":"ExpressionStatement","src":"2621:80:66"},{"expression":{"arguments":[{"id":7551,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7530,"src":"2727:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7552,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7532,"src":"2734:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7550,"name":"_mintFor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7750,"src":"2718:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":7553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2718:21:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7539,"id":7554,"nodeType":"Return","src":"2711:28:66"}]},"documentation":{"id":7528,"nodeType":"StructuredDocumentation","src":"2480:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"7504a15d","id":7556,"implemented":true,"kind":"function","modifiers":[{"id":7536,"modifierName":{"id":7535,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"2580:12:66","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2580:12:66"}],"name":"mintFor","nodeType":"FunctionDefinition","overrides":{"id":7534,"nodeType":"OverrideSpecifier","overrides":[],"src":"2571:8:66"},"parameters":{"id":7533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7530,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":7556,"src":"2533:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7529,"name":"address","nodeType":"ElementaryTypeName","src":"2533:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7532,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7556,"src":"2548:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7531,"name":"address","nodeType":"ElementaryTypeName","src":"2548:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2532:29:66"},"returnParameters":{"id":7539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7538,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7556,"src":"2602:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7537,"name":"uint256","nodeType":"ElementaryTypeName","src":"2602:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2601:9:66"},"scope":7866,"src":"2516:230:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[118],"body":{"id":7585,"nodeType":"Block","src":"2899:140:66","statements":[{"expression":{"arguments":[{"baseExpression":{"baseExpression":{"id":7571,"name":"_allowedMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"2917:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7574,"indexExpression":{"expression":{"id":7572,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2932:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2932:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2917:26:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7576,"indexExpression":{"id":7575,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7562,"src":"2944:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2917:32:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572","id":7577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2951:37:66","typeDescriptions":{"typeIdentifier":"t_stringliteral_869d236cd21bde9ea7f9c1cef8a678cb12f22a7cdfb332a971891dd8f23ae5f8","typeString":"literal_string \"Caller not allowed to mint for user\""},"value":"Caller not allowed to mint for user"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_869d236cd21bde9ea7f9c1cef8a678cb12f22a7cdfb332a971891dd8f23ae5f8","typeString":"literal_string \"Caller not allowed to mint for user\""}],"id":7570,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2909:7:66","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2909:80:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7579,"nodeType":"ExpressionStatement","src":"2909:80:66"},{"expression":{"arguments":[{"id":7581,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7560,"src":"3019:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":7582,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7562,"src":"3027:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7580,"name":"_mintForMany","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7760,"src":"3006:12:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_calldata_ptr_$_t_address_$returns$_t_uint256_$","typeString":"function (address[] calldata,address) returns (uint256)"}},"id":7583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3006:26:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7569,"id":7584,"nodeType":"Return","src":"2999:33:66"}]},"documentation":{"id":7557,"nodeType":"StructuredDocumentation","src":"2752:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"3b9f7384","id":7586,"implemented":true,"kind":"function","modifiers":[{"id":7566,"modifierName":{"id":7565,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"2868:12:66","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2868:12:66"}],"name":"mintManyFor","nodeType":"FunctionDefinition","overrides":{"id":7564,"nodeType":"OverrideSpecifier","overrides":[],"src":"2859:8:66"},"parameters":{"id":7563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7560,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":7586,"src":"2809:25:66","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7558,"name":"address","nodeType":"ElementaryTypeName","src":"2809:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7559,"nodeType":"ArrayTypeName","src":"2809:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":7562,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7586,"src":"2836:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7561,"name":"address","nodeType":"ElementaryTypeName","src":"2836:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2808:41:66"},"returnParameters":{"id":7569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7568,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7586,"src":"2890:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7567,"name":"uint256","nodeType":"ElementaryTypeName","src":"2890:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2889:9:66"},"scope":7866,"src":"2788:251:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[128],"body":{"id":7603,"nodeType":"Block","src":"3165:44:66","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":7597,"name":"_minted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7443,"src":"3182:7:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7599,"indexExpression":{"id":7598,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7589,"src":"3190:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3182:13:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7601,"indexExpression":{"id":7600,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7591,"src":"3196:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3182:20:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7596,"id":7602,"nodeType":"Return","src":"3175:27:66"}]},"documentation":{"id":7587,"nodeType":"StructuredDocumentation","src":"3045:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"8b752bb0","id":7604,"implemented":true,"kind":"function","modifiers":[],"name":"minted","nodeType":"FunctionDefinition","overrides":{"id":7593,"nodeType":"OverrideSpecifier","overrides":[],"src":"3138:8:66"},"parameters":{"id":7592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7589,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7604,"src":"3097:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7588,"name":"address","nodeType":"ElementaryTypeName","src":"3097:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7591,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":7604,"src":"3111:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7590,"name":"address","nodeType":"ElementaryTypeName","src":"3111:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3096:29:66"},"returnParameters":{"id":7596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7595,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7604,"src":"3156:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7594,"name":"uint256","nodeType":"ElementaryTypeName","src":"3156:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3155:9:66"},"scope":7866,"src":"3081:128:66","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[138],"body":{"id":7621,"nodeType":"Block","src":"3346:52:66","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":7615,"name":"_allowedMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"3363:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7617,"indexExpression":{"id":7616,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"3378:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3363:22:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7619,"indexExpression":{"id":7618,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7609,"src":"3386:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3363:28:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7614,"id":7620,"nodeType":"Return","src":"3356:35:66"}]},"documentation":{"id":7605,"nodeType":"StructuredDocumentation","src":"3215:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"3c543bc6","id":7622,"implemented":true,"kind":"function","modifiers":[],"name":"getMinterApproval","nodeType":"FunctionDefinition","overrides":{"id":7611,"nodeType":"OverrideSpecifier","overrides":[],"src":"3322:8:66"},"parameters":{"id":7610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7607,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":7622,"src":"3278:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7606,"name":"address","nodeType":"ElementaryTypeName","src":"3278:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7609,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7622,"src":"3294:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7608,"name":"address","nodeType":"ElementaryTypeName","src":"3294:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3277:30:66"},"returnParameters":{"id":7614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7613,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7622,"src":"3340:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7612,"name":"bool","nodeType":"ElementaryTypeName","src":"3340:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3339:6:66"},"scope":7866,"src":"3251:147:66","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[146],"body":{"id":7638,"nodeType":"Block","src":"3514:65:66","statements":[{"expression":{"arguments":[{"id":7632,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7625,"src":"3543:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7633,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3551:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3551:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7635,"name":"approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7627,"src":"3563:8:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7631,"name":"_setMinterApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7717,"src":"3524:18:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":7636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3524:48:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7637,"nodeType":"ExpressionStatement","src":"3524:48:66"}]},"documentation":{"id":7623,"nodeType":"StructuredDocumentation","src":"3404:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"0de54ba0","id":7639,"implemented":true,"kind":"function","modifiers":[],"name":"setMinterApproval","nodeType":"FunctionDefinition","overrides":{"id":7629,"nodeType":"OverrideSpecifier","overrides":[],"src":"3505:8:66"},"parameters":{"id":7628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7625,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":7639,"src":"3467:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7624,"name":"address","nodeType":"ElementaryTypeName","src":"3467:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7627,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":7639,"src":"3483:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7626,"name":"bool","nodeType":"ElementaryTypeName","src":"3483:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3466:31:66"},"returnParameters":{"id":7630,"nodeType":"ParameterList","parameters":[],"src":"3514:0:66"},"scope":7866,"src":"3440:139:66","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[164],"body":{"id":7692,"nodeType":"Block","src":"3835:327:66","statements":[{"assignments":[7659],"declarations":[{"constant":false,"id":7659,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":7692,"src":"3845:18:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7658,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3845:7:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7672,"initialValue":{"arguments":[{"arguments":[{"id":7663,"name":"_SET_MINTER_APPROVAL_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7454,"src":"3900:29:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7664,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7642,"src":"3931:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7665,"name":"approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7644,"src":"3939:8:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":7667,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7646,"src":"3962:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7666,"name":"getNextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"3949:12:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3949:18:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7669,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7648,"src":"3969:8:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7661,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3889:3:66","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"3889:10:66","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3889:89:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7660,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3866:9:66","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3866:122:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3845:143:66"},{"expression":{"arguments":[{"id":7674,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7646,"src":"4021:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7675,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7659,"src":"4027:10:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":7677,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7650,"src":"4057:1:66","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":7678,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"4060:1:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7679,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7654,"src":"4063:1:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7676,"name":"_toArraySignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3307,"src":"4039:17:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint8,bytes32,bytes32) pure returns (bytes memory)"}},"id":7680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4039:26:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7681,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7648,"src":"4067:8:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7682,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"4077:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":7683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":2154,"src":"4077:24:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7673,"name":"_ensureValidSignature","nodeType":"Identifier","overloadedDeclarations":[3189,3233],"referencedDeclaration":3233,"src":"3999:21:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,bytes32,bytes memory,uint256,uint256)"}},"id":7684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3999:103:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7685,"nodeType":"ExpressionStatement","src":"3999:103:66"},{"expression":{"arguments":[{"id":7687,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7642,"src":"4132:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7688,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7646,"src":"4140:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7689,"name":"approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7644,"src":"4146:8:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7686,"name":"_setMinterApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7717,"src":"4113:18:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":7690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4113:42:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7691,"nodeType":"ExpressionStatement","src":"4113:42:66"}]},"documentation":{"id":7640,"nodeType":"StructuredDocumentation","src":"3585:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"c6542794","id":7693,"implemented":true,"kind":"function","modifiers":[],"name":"setMinterApprovalWithSignature","nodeType":"FunctionDefinition","overrides":{"id":7656,"nodeType":"OverrideSpecifier","overrides":[],"src":"3826:8:66"},"parameters":{"id":7655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7642,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":7693,"src":"3670:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7641,"name":"address","nodeType":"ElementaryTypeName","src":"3670:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7644,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":7693,"src":"3694:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7643,"name":"bool","nodeType":"ElementaryTypeName","src":"3694:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7646,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7693,"src":"3717:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7645,"name":"address","nodeType":"ElementaryTypeName","src":"3717:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7648,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":7693,"src":"3739:16:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7647,"name":"uint256","nodeType":"ElementaryTypeName","src":"3739:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7650,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":7693,"src":"3765:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7649,"name":"uint8","nodeType":"ElementaryTypeName","src":"3765:5:66","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7652,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":7693,"src":"3782:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7651,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3782:7:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7654,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":7693,"src":"3801:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7653,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3801:7:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3660:156:66"},"returnParameters":{"id":7657,"nodeType":"ParameterList","parameters":[],"src":"3835:0:66"},"scope":7866,"src":"3621:541:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":7716,"nodeType":"Block","src":"4279:112:66","statements":[{"expression":{"id":7708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7702,"name":"_allowedMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"4289:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7705,"indexExpression":{"id":7703,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7695,"src":"4304:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4289:22:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7706,"indexExpression":{"id":7704,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7697,"src":"4312:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4289:28:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7707,"name":"approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7699,"src":"4320:8:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4289:39:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7709,"nodeType":"ExpressionStatement","src":"4289:39:66"},{"eventCall":{"arguments":[{"id":7711,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7697,"src":"4361:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7712,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7695,"src":"4367:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7713,"name":"approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7699,"src":"4375:8:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7710,"name":"MinterApprovalSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7462,"src":"4343:17:66","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":7714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4343:41:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7715,"nodeType":"EmitStatement","src":"4338:46:66"}]},"id":7717,"implemented":true,"kind":"function","modifiers":[],"name":"_setMinterApproval","nodeType":"FunctionDefinition","parameters":{"id":7700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7695,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":7717,"src":"4205:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7694,"name":"address","nodeType":"ElementaryTypeName","src":"4205:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7697,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7717,"src":"4229:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7696,"name":"address","nodeType":"ElementaryTypeName","src":"4229:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7699,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":7717,"src":"4251:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7698,"name":"bool","nodeType":"ElementaryTypeName","src":"4251:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4195:75:66"},"returnParameters":{"id":7701,"nodeType":"ParameterList","parameters":[],"src":"4279:0:66"},"scope":7866,"src":"4168:223:66","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":7740,"nodeType":"Block","src":"4527:86:66","statements":[{"expression":{"id":7732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7726,"name":"_minted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7443,"src":"4537:7:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7729,"indexExpression":{"id":7727,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"4545:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4537:13:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7730,"indexExpression":{"id":7728,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7721,"src":"4551:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4537:20:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7731,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7723,"src":"4560:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4537:28:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7733,"nodeType":"ExpressionStatement","src":"4537:28:66"},{"eventCall":{"arguments":[{"id":7735,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"4587:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7736,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7721,"src":"4593:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7737,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7723,"src":"4600:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7734,"name":"Minted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74,"src":"4580:6:66","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4580:26:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7739,"nodeType":"EmitStatement","src":"4575:31:66"}]},"id":7741,"implemented":true,"kind":"function","modifiers":[],"name":"_setMinted","nodeType":"FunctionDefinition","parameters":{"id":7724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7719,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7741,"src":"4453:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7718,"name":"address","nodeType":"ElementaryTypeName","src":"4453:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7721,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":7741,"src":"4475:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7720,"name":"address","nodeType":"ElementaryTypeName","src":"4475:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7723,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7741,"src":"4498:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7722,"name":"uint256","nodeType":"ElementaryTypeName","src":"4498:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4443:74:66"},"returnParameters":{"id":7725,"nodeType":"ParameterList","parameters":[],"src":"4527:0:66"},"scope":7866,"src":"4424:189:66","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":7750,"implemented":false,"kind":"function","modifiers":[],"name":"_mintFor","nodeType":"FunctionDefinition","parameters":{"id":7746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7743,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":7750,"src":"4637:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7742,"name":"address","nodeType":"ElementaryTypeName","src":"4637:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7745,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7750,"src":"4652:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7744,"name":"address","nodeType":"ElementaryTypeName","src":"4652:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4636:29:66"},"returnParameters":{"id":7749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7748,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":7750,"src":"4692:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7747,"name":"uint256","nodeType":"ElementaryTypeName","src":"4692:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4691:22:66"},"scope":7866,"src":"4619:95:66","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":7760,"implemented":false,"kind":"function","modifiers":[],"name":"_mintForMany","nodeType":"FunctionDefinition","parameters":{"id":7756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7753,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":7760,"src":"4742:25:66","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7751,"name":"address","nodeType":"ElementaryTypeName","src":"4742:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7752,"nodeType":"ArrayTypeName","src":"4742:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":7755,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7760,"src":"4769:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7754,"name":"address","nodeType":"ElementaryTypeName","src":"4769:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4741:41:66"},"returnParameters":{"id":7759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7758,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":7760,"src":"4809:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7757,"name":"uint256","nodeType":"ElementaryTypeName","src":"4809:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4808:22:66"},"scope":7866,"src":"4720:111:66","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[174],"body":{"id":7777,"nodeType":"Block","src":"5184:52:66","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":7771,"name":"_allowedMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"5201:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7773,"indexExpression":{"id":7772,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7763,"src":"5216:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5201:22:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7775,"indexExpression":{"id":7774,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7765,"src":"5224:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5201:28:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7770,"id":7776,"nodeType":"Return","src":"5194:35:66"}]},"documentation":{"id":7761,"nodeType":"StructuredDocumentation","src":"5051:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"a0990033","id":7778,"implemented":true,"kind":"function","modifiers":[],"name":"allowed_to_mint_for","nodeType":"FunctionDefinition","overrides":{"id":7767,"nodeType":"OverrideSpecifier","overrides":[],"src":"5160:8:66"},"parameters":{"id":7766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7763,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":7778,"src":"5116:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7762,"name":"address","nodeType":"ElementaryTypeName","src":"5116:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7765,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7778,"src":"5132:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7764,"name":"address","nodeType":"ElementaryTypeName","src":"5132:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5115:30:66"},"returnParameters":{"id":7770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7769,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7778,"src":"5178:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7768,"name":"bool","nodeType":"ElementaryTypeName","src":"5178:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5177:6:66"},"scope":7866,"src":"5087:149:66","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[182],"body":{"id":7820,"nodeType":"Block","src":"5356:184:66","statements":[{"body":{"id":7818,"nodeType":"Block","src":"5398:136:66","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":7799,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7783,"src":"5416:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_calldata_ptr","typeString":"address[8] calldata"}},"id":7801,"indexExpression":{"id":7800,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7790,"src":"5423:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5416:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5437:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5429:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7802,"name":"address","nodeType":"ElementaryTypeName","src":"5429:7:66","typeDescriptions":{}}},"id":7805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5429:10:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"5416:23:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7809,"nodeType":"IfStatement","src":"5412:67:66","trueBody":{"id":7808,"nodeType":"Block","src":"5441:38:66","statements":[{"id":7807,"nodeType":"Break","src":"5459:5:66"}]}},{"expression":{"arguments":[{"baseExpression":{"id":7811,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7783,"src":"5501:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_calldata_ptr","typeString":"address[8] calldata"}},"id":7813,"indexExpression":{"id":7812,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7790,"src":"5508:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5501:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7814,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5512:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5512:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":7810,"name":"_mintFor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7750,"src":"5492:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":7816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5492:31:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7817,"nodeType":"ExpressionStatement","src":"5492:31:66"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7793,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7790,"src":"5386:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"38","id":7794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5390:1:66","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"5386:5:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7819,"initializationExpression":{"assignments":[7790],"declarations":[{"constant":false,"id":7790,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":7819,"src":"5371:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7789,"name":"uint256","nodeType":"ElementaryTypeName","src":"5371:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7792,"initialValue":{"hexValue":"30","id":7791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5383:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5371:13:66"},"loopExpression":{"expression":{"id":7797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5393:3:66","subExpression":{"id":7796,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7790,"src":"5395:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7798,"nodeType":"ExpressionStatement","src":"5393:3:66"},"nodeType":"ForStatement","src":"5366:168:66"}]},"documentation":{"id":7779,"nodeType":"StructuredDocumentation","src":"5242:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"a51e1904","id":7821,"implemented":true,"kind":"function","modifiers":[{"id":7787,"modifierName":{"id":7786,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"5343:12:66","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"5343:12:66"}],"name":"mint_many","nodeType":"FunctionDefinition","overrides":{"id":7785,"nodeType":"OverrideSpecifier","overrides":[],"src":"5334:8:66"},"parameters":{"id":7784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7783,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":7821,"src":"5297:26:66","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_calldata_ptr","typeString":"address[8]"},"typeName":{"baseType":{"id":7780,"name":"address","nodeType":"ElementaryTypeName","src":"5297:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7782,"length":{"hexValue":"38","id":7781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5305:1:66","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"ArrayTypeName","src":"5297:10:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_storage_ptr","typeString":"address[8]"}},"visibility":"internal"}],"src":"5296:28:66"},"returnParameters":{"id":7788,"nodeType":"ParameterList","parameters":[],"src":"5356:0:66"},"scope":7866,"src":"5278:262:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[190],"body":{"id":7845,"nodeType":"Block","src":"5660:100:66","statements":[{"condition":{"baseExpression":{"baseExpression":{"id":7832,"name":"_allowedMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"5674:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7835,"indexExpression":{"expression":{"id":7833,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5689:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5689:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5674:26:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7837,"indexExpression":{"id":7836,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7826,"src":"5701:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5674:32:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7844,"nodeType":"IfStatement","src":"5670:84:66","trueBody":{"id":7843,"nodeType":"Block","src":"5708:46:66","statements":[{"expression":{"arguments":[{"id":7839,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7824,"src":"5731:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7840,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7826,"src":"5738:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7838,"name":"_mintFor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7750,"src":"5722:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":7841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5722:21:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7842,"nodeType":"ExpressionStatement","src":"5722:21:66"}]}}]},"documentation":{"id":7822,"nodeType":"StructuredDocumentation","src":"5546:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"27f18ae3","id":7846,"implemented":true,"kind":"function","modifiers":[{"id":7830,"modifierName":{"id":7829,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"5647:12:66","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"5647:12:66"}],"name":"mint_for","nodeType":"FunctionDefinition","overrides":{"id":7828,"nodeType":"OverrideSpecifier","overrides":[],"src":"5638:8:66"},"parameters":{"id":7827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7824,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":7846,"src":"5600:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7823,"name":"address","nodeType":"ElementaryTypeName","src":"5600:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7826,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":7846,"src":"5615:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7825,"name":"address","nodeType":"ElementaryTypeName","src":"5615:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5599:29:66"},"returnParameters":{"id":7831,"nodeType":"ParameterList","parameters":[],"src":"5660:0:66"},"scope":7866,"src":"5582:178:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[196],"body":{"id":7864,"nodeType":"Block","src":"5865:79:66","statements":[{"expression":{"arguments":[{"id":7854,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7849,"src":"5893:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5901:35:66","subExpression":{"baseExpression":{"baseExpression":{"id":7855,"name":"_allowedMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"5902:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":7857,"indexExpression":{"id":7856,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7849,"src":"5917:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5902:22:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7860,"indexExpression":{"expression":{"id":7858,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5925:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5925:10:66","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5902:34:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7853,"name":"setMinterApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"5875:17:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":7862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5875:62:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7863,"nodeType":"ExpressionStatement","src":"5875:62:66"}]},"documentation":{"id":7847,"nodeType":"StructuredDocumentation","src":"5766:31:66","text":"@inheritdoc IBalancerMinter"},"functionSelector":"dd289d60","id":7865,"implemented":true,"kind":"function","modifiers":[],"name":"toggle_approve_mint","nodeType":"FunctionDefinition","overrides":{"id":7851,"nodeType":"OverrideSpecifier","overrides":[],"src":"5856:8:66"},"parameters":{"id":7850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7849,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":7865,"src":"5831:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7848,"name":"address","nodeType":"ElementaryTypeName","src":"5831:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5830:16:66"},"returnParameters":{"id":7852,"nodeType":"ParameterList","parameters":[],"src":"5865:0:66"},"scope":7866,"src":"5802:142:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7867,"src":"1131:4815:66"}],"src":"688:5259:66"},"id":66},"contracts/BalancerTokenAdmin.sol":{"ast":{"absolutePath":"contracts/BalancerTokenAdmin.sol","exportedSymbols":{"BalancerTokenAdmin":[8750]},"id":8751,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7868,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:67"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","id":7869,"nodeType":"ImportDirective","scope":8751,"sourceUnit":328,"src":"713:89:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":7870,"nodeType":"ImportDirective","scope":8751,"sourceUnit":3698,"src":"804:88:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":7871,"nodeType":"ImportDirective","scope":8751,"sourceUnit":7188,"src":"893:85:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","id":7872,"nodeType":"ImportDirective","scope":8751,"sourceUnit":3129,"src":"979:79:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","id":7873,"nodeType":"ImportDirective","scope":8751,"sourceUnit":5684,"src":"1059:66:67","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7875,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":327,"src":"1941:19:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":7876,"nodeType":"InheritanceSpecifier","src":"1941:19:67"},{"baseName":{"id":7877,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1962:23:67","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":7878,"nodeType":"InheritanceSpecifier","src":"1962:23:67"},{"baseName":{"id":7879,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"1987:15:67","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":7880,"nodeType":"InheritanceSpecifier","src":"1987:15:67"}],"contractDependencies":[327,2259,3128,3697,7187],"contractKind":"contract","documentation":{"id":7874,"nodeType":"StructuredDocumentation","src":"1164:745:67","text":" @title Balancer Token Admin\n @notice This contract holds all admin powers over the BAL token passing through calls\n while delegating access control to the Balancer Authorizer\n In addition, calls to the mint function must respect the inflation schedule as defined in this contract.\n As this contract is the only way to mint BAL tokens this ensures that the maximum allowed supply is enforced\n @dev This contract exists as a consequence of the gauge systems needing to know a fixed inflation schedule\n in order to know how much BAL a gauge is allowed to mint. As this does not exist within the BAL token itself\n it is defined here, we must then wrap the token's minting functionality in order for this to be meaningful."},"fullyImplemented":true,"id":8750,"linearizedBaseContracts":[8750,7187,3697,3128,327,2259],"name":"BalancerTokenAdmin","nodeType":"ContractDefinition","nodes":[{"id":7883,"libraryName":{"id":7881,"name":"Math","nodeType":"UserDefinedTypeName","referencedDeclaration":5683,"src":"2015:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_Math_$5683","typeString":"library Math"}},"nodeType":"UsingForDirective","src":"2009:23:67","typeName":{"id":7882,"name":"uint256","nodeType":"ElementaryTypeName","src":"2024:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"baseFunctions":[285],"constant":true,"functionSelector":"4dbac733","id":7895,"mutability":"constant","name":"INITIAL_RATE","nodeType":"VariableDeclaration","overrides":{"id":7885,"nodeType":"OverrideSpecifier","overrides":[],"src":"2114:8:67"},"scope":8750,"src":"2090:82:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7884,"name":"uint256","nodeType":"ElementaryTypeName","src":"2090:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7894,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_145000000000000000000000_by_1","typeString":"int_const 145000000000000000000000"},"id":7888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"313435303030","id":7886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2139:6:67","typeDescriptions":{"typeIdentifier":"t_rational_145000_by_1","typeString":"int_const 145000"},"value":"145000"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31653138","id":7887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2148:4:67","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"2139:13:67","typeDescriptions":{"typeIdentifier":"t_rational_145000000000000000000000_by_1","typeString":"int_const 145000000000000000000000"}}],"id":7889,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2138:15:67","typeDescriptions":{"typeIdentifier":"t_rational_145000000000000000000000_by_1","typeString":"int_const 145000000000000000000000"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"hexValue":"31","id":7892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2164:7:67","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"}],"id":7891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2156:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7890,"name":"uint256","nodeType":"ElementaryTypeName","src":"2156:7:67","typeDescriptions":{}}},"id":7893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2156:16:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2138:34:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"baseFunctions":[290],"constant":true,"functionSelector":"b87b5616","id":7899,"mutability":"constant","name":"RATE_REDUCTION_TIME","nodeType":"VariableDeclaration","overrides":{"id":7897,"nodeType":"OverrideSpecifier","overrides":[],"src":"2225:8:67"},"scope":8750,"src":"2201:63:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7896,"name":"uint256","nodeType":"ElementaryTypeName","src":"2201:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333635","id":7898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2256:8:67","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"value":"365"},"visibility":"public"},{"baseFunctions":[295],"constant":true,"functionSelector":"21609bbf","id":7903,"mutability":"constant","name":"RATE_REDUCTION_COEFFICIENT","nodeType":"VariableDeclaration","overrides":{"id":7901,"nodeType":"OverrideSpecifier","overrides":[],"src":"2294:8:67"},"scope":8750,"src":"2270:81:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7900,"name":"uint256","nodeType":"ElementaryTypeName","src":"2270:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31313839323037313135303032373231303234","id":7902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2332:19:67","typeDescriptions":{"typeIdentifier":"t_rational_1189207115002721024_by_1","typeString":"int_const 1189207115002721024"},"value":"1189207115002721024"},"visibility":"public"},{"baseFunctions":[300],"constant":true,"functionSelector":"7efad8e0","id":7907,"mutability":"constant","name":"RATE_DENOMINATOR","nodeType":"VariableDeclaration","overrides":{"id":7905,"nodeType":"OverrideSpecifier","overrides":[],"src":"2402:8:67"},"scope":8750,"src":"2378:56:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7904,"name":"uint256","nodeType":"ElementaryTypeName","src":"2378:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":7906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2430:4:67","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"public"},{"constant":false,"id":7909,"mutability":"immutable","name":"_balancerToken","nodeType":"VariableDeclaration","scope":8750,"src":"2441:47:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"},"typeName":{"id":7908,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":274,"src":"2441:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"visibility":"private"},{"anonymous":false,"id":7915,"name":"MiningParametersUpdated","nodeType":"EventDefinition","parameters":{"id":7914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7911,"indexed":false,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":7915,"src":"2525:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7910,"name":"uint256","nodeType":"ElementaryTypeName","src":"2525:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7913,"indexed":false,"mutability":"mutable","name":"supply","nodeType":"VariableDeclaration","scope":7915,"src":"2539:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7912,"name":"uint256","nodeType":"ElementaryTypeName","src":"2539:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2524:30:67"},"src":"2495:60:67"},{"constant":false,"id":7917,"mutability":"mutable","name":"_miningEpoch","nodeType":"VariableDeclaration","scope":8750,"src":"2585:28:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7916,"name":"uint256","nodeType":"ElementaryTypeName","src":"2585:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":7924,"mutability":"mutable","name":"_startEpochTime","nodeType":"VariableDeclaration","scope":8750,"src":"2619:51:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7918,"name":"uint256","nodeType":"ElementaryTypeName","src":"2619:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"expression":{"arguments":[{"id":7921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2658:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7920,"name":"uint256","nodeType":"ElementaryTypeName","src":"2658:7:67","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":7919,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2653:4:67","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2653:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":7923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2653:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":7926,"mutability":"mutable","name":"_startEpochSupply","nodeType":"VariableDeclaration","scope":8750,"src":"2727:33:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7925,"name":"uint256","nodeType":"ElementaryTypeName","src":"2727:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":7928,"mutability":"mutable","name":"_rate","nodeType":"VariableDeclaration","scope":8750,"src":"2766:21:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7927,"name":"uint256","nodeType":"ElementaryTypeName","src":"2766:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":7942,"nodeType":"Block","src":"2881:47:67","statements":[{"expression":{"id":7940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7938,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"2891:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7939,"name":"balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7932,"src":"2908:13:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"src":"2891:30:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":7941,"nodeType":"ExpressionStatement","src":"2891:30:67"}]},"id":7943,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7935,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7930,"src":"2874:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":7936,"modifierName":{"id":7934,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"2850:23:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"2850:30:67"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7930,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":7943,"src":"2806:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":7929,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"2806:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":7932,"mutability":"mutable","name":"balancerToken","nodeType":"VariableDeclaration","scope":7943,"src":"2820:28:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"},"typeName":{"id":7931,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":274,"src":"2820:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"2805:44:67"},"returnParameters":{"id":7937,"nodeType":"ParameterList","parameters":[],"src":"2881:0:67"},"scope":8750,"src":"2794:134:67","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[306],"body":{"id":7952,"nodeType":"Block","src":"3066:38:67","statements":[{"expression":{"id":7950,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"3083:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"functionReturnParameters":7949,"id":7951,"nodeType":"Return","src":"3076:21:67"}]},"documentation":{"id":7944,"nodeType":"StructuredDocumentation","src":"2934:51:67","text":" @dev Returns the Balancer token."},"functionSelector":"c0039699","id":7953,"implemented":true,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","overrides":{"id":7946,"nodeType":"OverrideSpecifier","overrides":[],"src":"3032:8:67"},"parameters":{"id":7945,"nodeType":"ParameterList","parameters":[],"src":"3015:2:67"},"returnParameters":{"id":7949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7948,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7953,"src":"3050:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"},"typeName":{"id":7947,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":274,"src":"3050:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"3049:16:67"},"scope":8750,"src":"2990:114:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[309],"body":{"id":8226,"nodeType":"Block","src":"3355:4400:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7963,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"3373:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":7966,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3397:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7965,"name":"uint256","nodeType":"ElementaryTypeName","src":"3397:7:67","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":7964,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3392:4:67","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3392:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":7968,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3392:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3373:36:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c726561647920616374697661746564","id":7970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3411:19:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_cdcd4ef51fd197cf19d4213a99a19cd758a08ca51239ef37a021f665bc97841e","typeString":"literal_string \"Already activated\""},"value":"Already activated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cdcd4ef51fd197cf19d4213a99a19cd758a08ca51239ef37a021f665bc97841e","typeString":"literal_string \"Already activated\""}],"id":7962,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3365:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3365:66:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7972,"nodeType":"ExpressionStatement","src":"3365:66:67"},{"assignments":[7974],"declarations":[{"constant":false,"id":7974,"mutability":"mutable","name":"minterRole","nodeType":"VariableDeclaration","scope":8226,"src":"4023:18:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7973,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4023:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7978,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7975,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4044:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":7976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MINTER_ROLE","nodeType":"MemberAccess","referencedDeclaration":265,"src":"4044:26:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":7977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4044:28:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4023:49:67"},{"assignments":[7980],"declarations":[{"constant":false,"id":7980,"mutability":"mutable","name":"snapshotRole","nodeType":"VariableDeclaration","scope":8226,"src":"4082:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7979,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4082:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7984,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7981,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4105:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":7982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SNAPSHOT_ROLE","nodeType":"MemberAccess","referencedDeclaration":270,"src":"4105:28:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":7983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4105:30:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4082:53:67"},{"assignments":[7986],"declarations":[{"constant":false,"id":7986,"mutability":"mutable","name":"adminRole","nodeType":"VariableDeclaration","scope":8226,"src":"4145:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7985,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4145:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7990,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7987,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4165:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":7988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DEFAULT_ADMIN_ROLE","nodeType":"MemberAccess","referencedDeclaration":260,"src":"4165:33:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":7989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4165:35:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4145:55:67"},{"expression":{"arguments":[{"arguments":[{"id":7994,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"4242:9:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":7997,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4261:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}],"id":7996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4253:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7995,"name":"address","nodeType":"ElementaryTypeName","src":"4253:7:67","typeDescriptions":{}}},"id":7998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4253:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7992,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4219:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":7993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":234,"src":"4219:22:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view external returns (bool)"}},"id":7999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4219:48:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c616e636572546f6b656e41646d696e206973206e6f7420616e2061646d696e","id":8000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4269:36:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_041402b6e20bb7a683dccf11746dc5b9eff1e50f094152dd5aa3796bf8e81f02","typeString":"literal_string \"BalancerTokenAdmin is not an admin\""},"value":"BalancerTokenAdmin is not an admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_041402b6e20bb7a683dccf11746dc5b9eff1e50f094152dd5aa3796bf8e81f02","typeString":"literal_string \"BalancerTokenAdmin is not an admin\""}],"id":7991,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4211:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4211:95:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8002,"nodeType":"ExpressionStatement","src":"4211:95:67"},{"assignments":[8004],"declarations":[{"constant":false,"id":8004,"mutability":"mutable","name":"numberOfMinters","nodeType":"VariableDeclaration","scope":8226,"src":"4418:23:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8003,"name":"uint256","nodeType":"ElementaryTypeName","src":"4418:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8009,"initialValue":{"arguments":[{"id":8007,"name":"minterRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"4478:10:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8005,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4444:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMemberCount","nodeType":"MemberAccess","referencedDeclaration":216,"src":"4444:33:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view external returns (uint256)"}},"id":8008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4444:45:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4418:71:67"},{"body":{"id":8035,"nodeType":"Block","src":"4545:144:67","statements":[{"assignments":[8021],"declarations":[{"constant":false,"id":8021,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":8035,"src":"4559:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8020,"name":"address","nodeType":"ElementaryTypeName","src":"4559:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8027,"initialValue":{"arguments":[{"id":8024,"name":"minterRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"4605:10:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":8025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4617:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":8022,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4576:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMember","nodeType":"MemberAccess","referencedDeclaration":225,"src":"4576:28:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_address_$","typeString":"function (bytes32,uint256) view external returns (address)"}},"id":8026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4576:43:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4559:60:67"},{"expression":{"arguments":[{"id":8031,"name":"minterRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"4659:10:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8032,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8021,"src":"4671:6:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8028,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4633:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revokeRole","nodeType":"MemberAccess","referencedDeclaration":255,"src":"4633:25:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) external"}},"id":8033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4633:45:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8034,"nodeType":"ExpressionStatement","src":"4633:45:67"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8014,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8011,"src":"4519:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8015,"name":"numberOfMinters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8004,"src":"4523:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4519:19:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8036,"initializationExpression":{"assignments":[8011],"declarations":[{"constant":false,"id":8011,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":8036,"src":"4504:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8010,"name":"uint256","nodeType":"ElementaryTypeName","src":"4504:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8013,"initialValue":{"hexValue":"30","id":8012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4516:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4504:13:67"},"loopExpression":{"expression":{"id":8018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4540:3:67","subExpression":{"id":8017,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8011,"src":"4542:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8019,"nodeType":"ExpressionStatement","src":"4540:3:67"},"nodeType":"ForStatement","src":"4499:190:67"},{"expression":{"arguments":[{"id":8040,"name":"minterRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"4787:10:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":8043,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4807:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}],"id":8042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4799:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8041,"name":"address","nodeType":"ElementaryTypeName","src":"4799:7:67","typeDescriptions":{}}},"id":8044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4799:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8037,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"4762:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"grantRole","nodeType":"MemberAccess","referencedDeclaration":248,"src":"4762:24:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) external"}},"id":8045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4762:51:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8046,"nodeType":"ExpressionStatement","src":"4762:51:67"},{"assignments":[8048],"declarations":[{"constant":false,"id":8048,"mutability":"mutable","name":"numberOfSnapshotters","nodeType":"VariableDeclaration","scope":8226,"src":"5139:28:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8047,"name":"uint256","nodeType":"ElementaryTypeName","src":"5139:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8053,"initialValue":{"arguments":[{"id":8051,"name":"snapshotRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"5204:12:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8049,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"5170:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMemberCount","nodeType":"MemberAccess","referencedDeclaration":216,"src":"5170:33:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view external returns (uint256)"}},"id":8052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5170:47:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5139:78:67"},{"body":{"id":8079,"nodeType":"Block","src":"5278:158:67","statements":[{"assignments":[8065],"declarations":[{"constant":false,"id":8065,"mutability":"mutable","name":"snapshotter","nodeType":"VariableDeclaration","scope":8079,"src":"5292:19:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8064,"name":"address","nodeType":"ElementaryTypeName","src":"5292:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8071,"initialValue":{"arguments":[{"id":8068,"name":"snapshotRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"5343:12:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":8069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5357:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":8066,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"5314:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMember","nodeType":"MemberAccess","referencedDeclaration":225,"src":"5314:28:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_address_$","typeString":"function (bytes32,uint256) view external returns (address)"}},"id":8070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5314:45:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5292:67:67"},{"expression":{"arguments":[{"id":8075,"name":"snapshotRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"5399:12:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8076,"name":"snapshotter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"5413:11:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8072,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"5373:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revokeRole","nodeType":"MemberAccess","referencedDeclaration":255,"src":"5373:25:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) external"}},"id":8077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5373:52:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8078,"nodeType":"ExpressionStatement","src":"5373:52:67"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8058,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8055,"src":"5247:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8059,"name":"numberOfSnapshotters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8048,"src":"5251:20:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5247:24:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8080,"initializationExpression":{"assignments":[8055],"declarations":[{"constant":false,"id":8055,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":8080,"src":"5232:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8054,"name":"uint256","nodeType":"ElementaryTypeName","src":"5232:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8057,"initialValue":{"hexValue":"30","id":8056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5244:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5232:13:67"},"loopExpression":{"expression":{"id":8062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5273:3:67","subExpression":{"id":8061,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8055,"src":"5275:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8063,"nodeType":"ExpressionStatement","src":"5273:3:67"},"nodeType":"ForStatement","src":"5227:209:67"},{"expression":{"arguments":[{"id":8084,"name":"snapshotRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"5539:12:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":8087,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5561:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}],"id":8086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5553:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8085,"name":"address","nodeType":"ElementaryTypeName","src":"5553:7:67","typeDescriptions":{}}},"id":8088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5553:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8081,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"5514:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"grantRole","nodeType":"MemberAccess","referencedDeclaration":248,"src":"5514:24:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) external"}},"id":8089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5514:53:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8090,"nodeType":"ExpressionStatement","src":"5514:53:67"},{"assignments":[8092],"declarations":[{"constant":false,"id":8092,"mutability":"mutable","name":"numberOfAdmins","nodeType":"VariableDeclaration","scope":8226,"src":"6016:22:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8091,"name":"uint256","nodeType":"ElementaryTypeName","src":"6016:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8097,"initialValue":{"arguments":[{"id":8095,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"6075:9:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8093,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"6041:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMemberCount","nodeType":"MemberAccess","referencedDeclaration":216,"src":"6041:33:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view external returns (uint256)"}},"id":8096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6041:44:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6016:69:67"},{"assignments":[8099],"declarations":[{"constant":false,"id":8099,"mutability":"mutable","name":"skipSelf","nodeType":"VariableDeclaration","scope":8226,"src":"6095:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8098,"name":"uint256","nodeType":"ElementaryTypeName","src":"6095:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8101,"initialValue":{"hexValue":"30","id":8100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6114:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6095:20:67"},{"body":{"id":8140,"nodeType":"Block","src":"6170:369:67","statements":[{"assignments":[8113],"declarations":[{"constant":false,"id":8113,"mutability":"mutable","name":"admin","nodeType":"VariableDeclaration","scope":8140,"src":"6184:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8112,"name":"address","nodeType":"ElementaryTypeName","src":"6184:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8119,"initialValue":{"arguments":[{"id":8116,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"6229:9:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8117,"name":"skipSelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8099,"src":"6240:8:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8114,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"6200:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMember","nodeType":"MemberAccess","referencedDeclaration":225,"src":"6200:28:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_address_$","typeString":"function (bytes32,uint256) view external returns (address)"}},"id":8118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6200:49:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6184:65:67"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8120,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8113,"src":"6267:5:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":8123,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6284:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}],"id":8122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6276:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8121,"name":"address","nodeType":"ElementaryTypeName","src":"6276:7:67","typeDescriptions":{}}},"id":8124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6276:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6267:22:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8138,"nodeType":"Block","src":"6373:156:67","statements":[{"expression":{"id":8136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8134,"name":"skipSelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8099,"src":"6502:8:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":8135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6513:1:67","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6502:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8137,"nodeType":"ExpressionStatement","src":"6502:12:67"}]},"id":8139,"nodeType":"IfStatement","src":"6263:266:67","trueBody":{"id":8133,"nodeType":"Block","src":"6291:76:67","statements":[{"expression":{"arguments":[{"id":8129,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"6335:9:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8130,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8113,"src":"6346:5:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8126,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"6309:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revokeRole","nodeType":"MemberAccess","referencedDeclaration":255,"src":"6309:25:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) external"}},"id":8131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6309:43:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8132,"nodeType":"ExpressionStatement","src":"6309:43:67"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8106,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8103,"src":"6145:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8107,"name":"numberOfAdmins","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8092,"src":"6149:14:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6145:18:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8141,"initializationExpression":{"assignments":[8103],"declarations":[{"constant":false,"id":8103,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":8141,"src":"6130:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8102,"name":"uint256","nodeType":"ElementaryTypeName","src":"6130:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8105,"initialValue":{"hexValue":"30","id":8104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6142:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6130:13:67"},"loopExpression":{"expression":{"id":8110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6165:3:67","subExpression":{"id":8109,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8103,"src":"6167:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8111,"nodeType":"ExpressionStatement","src":"6165:3:67"},"nodeType":"ForStatement","src":"6125:414:67"},{"expression":{"arguments":[{"id":8145,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"6804:9:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":8148,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6823:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}],"id":8147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6815:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8146,"name":"address","nodeType":"ElementaryTypeName","src":"6815:7:67","typeDescriptions":{}}},"id":8149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6815:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8142,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"6778:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revokeRole","nodeType":"MemberAccess","referencedDeclaration":255,"src":"6778:25:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) external"}},"id":8150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6778:51:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8151,"nodeType":"ExpressionStatement","src":"6778:51:67"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8155,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"6974:9:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8153,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"6940:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMemberCount","nodeType":"MemberAccess","referencedDeclaration":216,"src":"6940:33:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view external returns (uint256)"}},"id":8156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6940:44:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6988:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6940:49:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573732065786973747320776974682061646d696e20726967687473","id":8159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6991:34:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_3f235a40b57f25d15d9b967b66dbf39d7f483b796f8666c9cefe2d5767373bf3","typeString":"literal_string \"Address exists with admin rights\""},"value":"Address exists with admin rights"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3f235a40b57f25d15d9b967b66dbf39d7f483b796f8666c9cefe2d5767373bf3","typeString":"literal_string \"Address exists with admin rights\""}],"id":8152,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6932:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6932:94:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8161,"nodeType":"ExpressionStatement","src":"6932:94:67"},{"expression":{"arguments":[{"arguments":[{"id":8165,"name":"minterRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"7067:10:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":8168,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7087:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}],"id":8167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7079:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8166,"name":"address","nodeType":"ElementaryTypeName","src":"7079:7:67","typeDescriptions":{}}},"id":8169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7079:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8163,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"7044:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":234,"src":"7044:22:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view external returns (bool)"}},"id":8170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7044:49:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c616e636572546f6b656e41646d696e206973206e6f742061206d696e746572","id":8171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7095:36:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_9cf72961a7d9bee3709a9fa53a9b06bccc18a6f1c53b96e6e89146419627528a","typeString":"literal_string \"BalancerTokenAdmin is not a minter\""},"value":"BalancerTokenAdmin is not a minter"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9cf72961a7d9bee3709a9fa53a9b06bccc18a6f1c53b96e6e89146419627528a","typeString":"literal_string \"BalancerTokenAdmin is not a minter\""}],"id":8162,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7036:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7036:96:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8173,"nodeType":"ExpressionStatement","src":"7036:96:67"},{"expression":{"arguments":[{"arguments":[{"id":8177,"name":"snapshotRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"7173:12:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":8180,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7195:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerTokenAdmin_$8750","typeString":"contract BalancerTokenAdmin"}],"id":8179,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7187:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8178,"name":"address","nodeType":"ElementaryTypeName","src":"7187:7:67","typeDescriptions":{}}},"id":8181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7187:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8175,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"7150:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":234,"src":"7150:22:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view external returns (bool)"}},"id":8182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7150:51:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c616e636572546f6b656e41646d696e206973206e6f74206120736e617073686f74746572","id":8183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7203:41:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c5048828a24fe125ddad0473d0150f23a136ec6842d506ae40ba096068a181d","typeString":"literal_string \"BalancerTokenAdmin is not a snapshotter\""},"value":"BalancerTokenAdmin is not a snapshotter"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c5048828a24fe125ddad0473d0150f23a136ec6842d506ae40ba096068a181d","typeString":"literal_string \"BalancerTokenAdmin is not a snapshotter\""}],"id":8174,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7142:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7142:103:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8185,"nodeType":"ExpressionStatement","src":"7142:103:67"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8189,"name":"minterRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"7297:10:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8187,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"7263:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMemberCount","nodeType":"MemberAccess","referencedDeclaration":216,"src":"7263:33:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view external returns (uint256)"}},"id":8190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7263:45:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":8191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7312:1:67","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7263:50:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d756c7469706c65206d696e74657273206578697374","id":8193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7315:24:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_a034aa147e9776621b2f4b902be55588ee2551c86a9932e53aec923bf6380041","typeString":"literal_string \"Multiple minters exist\""},"value":"Multiple minters exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a034aa147e9776621b2f4b902be55588ee2551c86a9932e53aec923bf6380041","typeString":"literal_string \"Multiple minters exist\""}],"id":8186,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7255:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7255:85:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8195,"nodeType":"ExpressionStatement","src":"7255:85:67"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8199,"name":"snapshotRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"7392:12:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8197,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"7358:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRoleMemberCount","nodeType":"MemberAccess","referencedDeclaration":216,"src":"7358:33:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view external returns (uint256)"}},"id":8200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7358:47:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":8201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7409:1:67","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7358:52:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d756c7469706c6520736e617073686f7474657273206578697374","id":8203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7412:29:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_13501c8caa6bdd6d160e083562c1edc001ea5b234fcb0f1a3fb97b6e55c1ee2a","typeString":"literal_string \"Multiple snapshotters exist\""},"value":"Multiple snapshotters exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_13501c8caa6bdd6d160e083562c1edc001ea5b234fcb0f1a3fb97b6e55c1ee2a","typeString":"literal_string \"Multiple snapshotters exist\""}],"id":8196,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7350:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7350:92:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8205,"nodeType":"ExpressionStatement","src":"7350:92:67"},{"expression":{"id":8210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8206,"name":"_startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"7556:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8207,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"7576:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":2378,"src":"7576:26:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7576:28:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7556:48:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8211,"nodeType":"ExpressionStatement","src":"7556:48:67"},{"expression":{"id":8215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8212,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"7614:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8213,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7632:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"7632:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7614:33:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8216,"nodeType":"ExpressionStatement","src":"7614:33:67"},{"expression":{"id":8219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8217,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"7657:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8218,"name":"INITIAL_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7895,"src":"7665:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7657:20:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8220,"nodeType":"ExpressionStatement","src":"7657:20:67"},{"eventCall":{"arguments":[{"id":8222,"name":"INITIAL_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7895,"src":"7716:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8223,"name":"_startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"7730:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8221,"name":"MiningParametersUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7915,"src":"7692:23:67","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":8224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7692:56:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8225,"nodeType":"EmitStatement","src":"7687:61:67"}]},"documentation":{"id":7954,"nodeType":"StructuredDocumentation","src":"3110:176:67","text":" @notice Initiate BAL token inflation schedule\n @dev Reverts if contract does not have sole minting powers over BAL (and no other minters can be added)."},"functionSelector":"0f15f4c0","id":8227,"implemented":true,"kind":"function","modifiers":[{"id":7958,"modifierName":{"id":7957,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"3329:12:67","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3329:12:67"},{"id":7960,"modifierName":{"id":7959,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3342:12:67","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3342:12:67"}],"name":"activate","nodeType":"FunctionDefinition","overrides":{"id":7956,"nodeType":"OverrideSpecifier","overrides":[],"src":"3320:8:67"},"parameters":{"id":7955,"nodeType":"ParameterList","parameters":[],"src":"3308:2:67"},"returnParameters":{"id":7961,"nodeType":"ParameterList","parameters":[],"src":"3355:0:67"},"scope":8750,"src":"3291:4464:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[326],"body":{"id":8270,"nodeType":"Block","src":"8006:456:67","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8238,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"8138:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"8138:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":8242,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"8177:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8240,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"8157:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"8157:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8157:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8138:59:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8249,"nodeType":"IfStatement","src":"8134:115:67","trueBody":{"id":8248,"nodeType":"Block","src":"8199:50:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8245,"name":"_updateMiningParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"8213:23:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8213:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8247,"nodeType":"ExpressionStatement","src":"8213:25:67"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8255,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8232,"src":"8313:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8251,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"8280:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":2378,"src":"8280:26:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8280:28:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"8280:32:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8280:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8257,"name":"_availableSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8424,"src":"8324:16:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8324:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8280:62:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d696e7420616d6f756e7420657863656564732072656d61696e696e6720617661696c61626c6520737570706c79","id":8260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8356:48:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_6eb66c64386679ae0ee88bc9cc3bd4fecbeb1a16cc70f65f78e8c0472437ba6d","typeString":"literal_string \"Mint amount exceeds remaining available supply\""},"value":"Mint amount exceeds remaining available supply"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6eb66c64386679ae0ee88bc9cc3bd4fecbeb1a16cc70f65f78e8c0472437ba6d","typeString":"literal_string \"Mint amount exceeds remaining available supply\""}],"id":8250,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8259:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8259:155:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8262,"nodeType":"ExpressionStatement","src":"8259:155:67"},{"expression":{"arguments":[{"id":8266,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8230,"src":"8444:2:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8267,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8232,"src":"8448:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8263,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"8424:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":209,"src":"8424:19:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":8268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8424:31:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8269,"nodeType":"ExpressionStatement","src":"8424:31:67"}]},"documentation":{"id":8228,"nodeType":"StructuredDocumentation","src":"7761:167:67","text":" @notice Mint BAL tokens subject to the defined inflation schedule\n @dev Callable only by addresses defined in the Balancer Authorizer contract"},"functionSelector":"40c10f19","id":8271,"implemented":true,"kind":"function","modifiers":[{"id":8236,"modifierName":{"id":8235,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"7993:12:67","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"7993:12:67"}],"name":"mint","nodeType":"FunctionDefinition","overrides":{"id":8234,"nodeType":"OverrideSpecifier","overrides":[],"src":"7984:8:67"},"parameters":{"id":8233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8230,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":8271,"src":"7947:10:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8229,"name":"address","nodeType":"ElementaryTypeName","src":"7947:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8232,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8271,"src":"7959:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8231,"name":"uint256","nodeType":"ElementaryTypeName","src":"7959:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7946:28:67"},"returnParameters":{"id":8237,"nodeType":"ParameterList","parameters":[],"src":"8006:0:67"},"scope":8750,"src":"7933:529:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8282,"nodeType":"Block","src":"8665:42:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8277,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"8675:14:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":8279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"snapshot","nodeType":"MemberAccess","referencedDeclaration":273,"src":"8675:23:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":8280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8675:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8281,"nodeType":"ExpressionStatement","src":"8675:25:67"}]},"documentation":{"id":8272,"nodeType":"StructuredDocumentation","src":"8468:150:67","text":" @notice Perform a snapshot of BAL token balances\n @dev Callable only by addresses defined in the Balancer Authorizer contract"},"functionSelector":"9711715a","id":8283,"implemented":true,"kind":"function","modifiers":[{"id":8275,"modifierName":{"id":8274,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"8652:12:67","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"8652:12:67"}],"name":"snapshot","nodeType":"FunctionDefinition","parameters":{"id":8273,"nodeType":"ParameterList","parameters":[],"src":"8640:2:67"},"returnParameters":{"id":8276,"nodeType":"ParameterList","parameters":[],"src":"8665:0:67"},"scope":8750,"src":"8623:84:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8291,"nodeType":"Block","src":"8836:36:67","statements":[{"expression":{"id":8289,"name":"_miningEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7917,"src":"8853:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8288,"id":8290,"nodeType":"Return","src":"8846:19:67"}]},"documentation":{"id":8284,"nodeType":"StructuredDocumentation","src":"8713:60:67","text":" @notice Returns the current epoch number."},"functionSelector":"087905c9","id":8292,"implemented":true,"kind":"function","modifiers":[],"name":"getMiningEpoch","nodeType":"FunctionDefinition","parameters":{"id":8285,"nodeType":"ParameterList","parameters":[],"src":"8801:2:67"},"returnParameters":{"id":8288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8287,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8292,"src":"8827:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8827:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8826:9:67"},"scope":8750,"src":"8778:94:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8300,"nodeType":"Block","src":"9020:39:67","statements":[{"expression":{"id":8298,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"9037:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8297,"id":8299,"nodeType":"Return","src":"9030:22:67"}]},"documentation":{"id":8293,"nodeType":"StructuredDocumentation","src":"8878:76:67","text":" @notice Returns the start timestamp of the current epoch."},"functionSelector":"4d2fa413","id":8301,"implemented":true,"kind":"function","modifiers":[],"name":"getStartEpochTime","nodeType":"FunctionDefinition","parameters":{"id":8294,"nodeType":"ParameterList","parameters":[],"src":"8985:2:67"},"returnParameters":{"id":8297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8296,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8301,"src":"9011:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8295,"name":"uint256","nodeType":"ElementaryTypeName","src":"9011:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9010:9:67"},"scope":8750,"src":"8959:100:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8312,"nodeType":"Block","src":"9205:64:67","statements":[{"expression":{"arguments":[{"id":8309,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"9242:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8307,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"9222:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"9222:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9222:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8306,"id":8311,"nodeType":"Return","src":"9215:47:67"}]},"documentation":{"id":8302,"nodeType":"StructuredDocumentation","src":"9065:73:67","text":" @notice Returns the start timestamp of the next epoch."},"functionSelector":"0dfbdce4","id":8313,"implemented":true,"kind":"function","modifiers":[],"name":"getFutureEpochTime","nodeType":"FunctionDefinition","parameters":{"id":8303,"nodeType":"ParameterList","parameters":[],"src":"9170:2:67"},"returnParameters":{"id":8306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8305,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8313,"src":"9196:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8304,"name":"uint256","nodeType":"ElementaryTypeName","src":"9196:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9195:9:67"},"scope":8750,"src":"9143:126:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8321,"nodeType":"Block","src":"9437:41:67","statements":[{"expression":{"id":8319,"name":"_startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"9454:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8318,"id":8320,"nodeType":"Return","src":"9447:24:67"}]},"documentation":{"id":8314,"nodeType":"StructuredDocumentation","src":"9275:94:67","text":" @notice Returns the available supply at the beginning of the current epoch."},"functionSelector":"55f74176","id":8322,"implemented":true,"kind":"function","modifiers":[],"name":"getStartEpochSupply","nodeType":"FunctionDefinition","parameters":{"id":8315,"nodeType":"ParameterList","parameters":[],"src":"9402:2:67"},"returnParameters":{"id":8318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8317,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8322,"src":"9428:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8316,"name":"uint256","nodeType":"ElementaryTypeName","src":"9428:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9427:9:67"},"scope":8750,"src":"9374:104:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8330,"nodeType":"Block","src":"9628:29:67","statements":[{"expression":{"id":8328,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"9645:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8327,"id":8329,"nodeType":"Return","src":"9638:12:67"}]},"documentation":{"id":8323,"nodeType":"StructuredDocumentation","src":"9484:79:67","text":" @notice Returns the current inflation rate of BAL per second"},"functionSelector":"819df2c4","id":8331,"implemented":true,"kind":"function","modifiers":[],"name":"getInflationRate","nodeType":"FunctionDefinition","parameters":{"id":8324,"nodeType":"ParameterList","parameters":[],"src":"9593:2:67"},"returnParameters":{"id":8327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8326,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8331,"src":"9619:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8325,"name":"uint256","nodeType":"ElementaryTypeName","src":"9619:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9618:9:67"},"scope":8750,"src":"9568:89:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8340,"nodeType":"Block","src":"9827:42:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8337,"name":"_availableSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8424,"src":"9844:16:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9844:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8336,"id":8339,"nodeType":"Return","src":"9837:25:67"}]},"documentation":{"id":8332,"nodeType":"StructuredDocumentation","src":"9663:97:67","text":" @notice Maximum allowable number of tokens in existence (claimed or unclaimed)"},"functionSelector":"c167d1cd","id":8341,"implemented":true,"kind":"function","modifiers":[],"name":"getAvailableSupply","nodeType":"FunctionDefinition","parameters":{"id":8333,"nodeType":"ParameterList","parameters":[],"src":"9792:2:67"},"returnParameters":{"id":8336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8335,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8341,"src":"9818:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8334,"name":"uint256","nodeType":"ElementaryTypeName","src":"9818:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9817:9:67"},"scope":8750,"src":"9765:104:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[319],"body":{"id":8351,"nodeType":"Block","src":"10115:46:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8348,"name":"_startEpochTimeWrite","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8451,"src":"10132:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":8349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10132:22:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8347,"id":8350,"nodeType":"Return","src":"10125:29:67"}]},"documentation":{"id":8342,"nodeType":"StructuredDocumentation","src":"9875:168:67","text":" @notice Get timestamp of the current mining epoch start while simultaneously updating mining parameters\n @return Timestamp of the current epoch"},"functionSelector":"a228bced","id":8352,"implemented":true,"kind":"function","modifiers":[],"name":"startEpochTimeWrite","nodeType":"FunctionDefinition","overrides":{"id":8344,"nodeType":"OverrideSpecifier","overrides":[],"src":"10088:8:67"},"parameters":{"id":8343,"nodeType":"ParameterList","parameters":[],"src":"10076:2:67"},"returnParameters":{"id":8347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8346,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8352,"src":"10106:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8345,"name":"uint256","nodeType":"ElementaryTypeName","src":"10106:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10105:9:67"},"scope":8750,"src":"10048:113:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8364,"nodeType":"Block","src":"10393:71:67","statements":[{"expression":{"arguments":[{"id":8361,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"10437:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8358,"name":"_startEpochTimeWrite","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8451,"src":"10410:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":8359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10410:22:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"10410:26:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10410:47:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8357,"id":8363,"nodeType":"Return","src":"10403:54:67"}]},"documentation":{"id":8353,"nodeType":"StructuredDocumentation","src":"10167:162:67","text":" @notice Get timestamp of the next mining epoch start while simultaneously updating mining parameters\n @return Timestamp of the next epoch"},"functionSelector":"277dbafb","id":8365,"implemented":true,"kind":"function","modifiers":[],"name":"futureEpochTimeWrite","nodeType":"FunctionDefinition","parameters":{"id":8354,"nodeType":"ParameterList","parameters":[],"src":"10363:2:67"},"returnParameters":{"id":8357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8356,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8365,"src":"10384:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8355,"name":"uint256","nodeType":"ElementaryTypeName","src":"10384:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10383:9:67"},"scope":8750,"src":"10334:130:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8383,"nodeType":"Block","src":"10737:150:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8370,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"10755:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"10755:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":8374,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"10794:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8372,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"10774:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"10774:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10774:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10755:59:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45706f636820686173206e6f742066696e697368656420796574","id":8377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10816:28:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_844f8669d9677550455a55a9e49a7c619dce5f058c358110abeab9cb013df878","typeString":"literal_string \"Epoch has not finished yet\""},"value":"Epoch has not finished yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_844f8669d9677550455a55a9e49a7c619dce5f058c358110abeab9cb013df878","typeString":"literal_string \"Epoch has not finished yet\""}],"id":8369,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10747:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10747:98:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8379,"nodeType":"ExpressionStatement","src":"10747:98:67"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8380,"name":"_updateMiningParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"10855:23:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10855:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8382,"nodeType":"ExpressionStatement","src":"10855:25:67"}]},"documentation":{"id":8366,"nodeType":"StructuredDocumentation","src":"10470:219:67","text":" @notice Update mining rate and supply at the start of the epoch\n @dev Callable by any address, but only once per epoch\n Total supply becomes slightly larger if this function is called late"},"functionSelector":"cb626ae2","id":8384,"implemented":true,"kind":"function","modifiers":[],"name":"updateMiningParameters","nodeType":"FunctionDefinition","parameters":{"id":8367,"nodeType":"ParameterList","parameters":[],"src":"10725:2:67"},"returnParameters":{"id":8368,"nodeType":"ParameterList","parameters":[],"src":"10737:0:67"},"scope":8750,"src":"10694:193:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8399,"nodeType":"Block","src":"11250:56:67","statements":[{"expression":{"arguments":[{"id":8395,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8387,"src":"11288:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8396,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8389,"src":"11295:3:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8394,"name":"_mintableInTimeframe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"11267:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"}},"id":8397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11267:32:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8393,"id":8398,"nodeType":"Return","src":"11260:39:67"}]},"documentation":{"id":8385,"nodeType":"StructuredDocumentation","src":"10893:263:67","text":" @notice How much supply is mintable from start timestamp till end timestamp\n @param start Start of the time interval (timestamp)\n @param end End of the time interval (timestamp)\n @return Tokens mintable from `start` till `end`"},"functionSelector":"c3b03fa8","id":8400,"implemented":true,"kind":"function","modifiers":[],"name":"mintableInTimeframe","nodeType":"FunctionDefinition","parameters":{"id":8390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8387,"mutability":"mutable","name":"start","nodeType":"VariableDeclaration","scope":8400,"src":"11190:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8386,"name":"uint256","nodeType":"ElementaryTypeName","src":"11190:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8389,"mutability":"mutable","name":"end","nodeType":"VariableDeclaration","scope":8400,"src":"11205:11:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8388,"name":"uint256","nodeType":"ElementaryTypeName","src":"11205:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11189:28:67"},"returnParameters":{"id":8393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8392,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8400,"src":"11241:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8391,"name":"uint256","nodeType":"ElementaryTypeName","src":"11241:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11240:9:67"},"scope":8750,"src":"11161:145:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8423,"nodeType":"Block","src":"11501:167:67","statements":[{"assignments":[8407],"declarations":[{"constant":false,"id":8407,"mutability":"mutable","name":"newSupplyFromCurrentEpoch","nodeType":"VariableDeclaration","scope":8423,"src":"11511:33:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8406,"name":"uint256","nodeType":"ElementaryTypeName","src":"11511:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8417,"initialValue":{"arguments":[{"id":8415,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"11590:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"arguments":[{"id":8411,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"11568:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":8408,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"11548:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"11548:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":5521,"src":"11548:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11548:36:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8413,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11547:38:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":5618,"src":"11547:42:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11547:49:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11511:85:67"},{"expression":{"arguments":[{"id":8420,"name":"newSupplyFromCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8407,"src":"11635:25:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8418,"name":"_startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"11613:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"11613:21:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11613:48:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8405,"id":8422,"nodeType":"Return","src":"11606:55:67"}]},"documentation":{"id":8401,"nodeType":"StructuredDocumentation","src":"11339:97:67","text":" @notice Maximum allowable number of tokens in existence (claimed or unclaimed)"},"id":8424,"implemented":true,"kind":"function","modifiers":[],"name":"_availableSupply","nodeType":"FunctionDefinition","parameters":{"id":8402,"nodeType":"ParameterList","parameters":[],"src":"11466:2:67"},"returnParameters":{"id":8405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8404,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8424,"src":"11492:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8403,"name":"uint256","nodeType":"ElementaryTypeName","src":"11492:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11491:9:67"},"scope":8750,"src":"11441:227:67","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8450,"nodeType":"Block","src":"11906:247:67","statements":[{"assignments":[8431],"declarations":[{"constant":false,"id":8431,"mutability":"mutable","name":"startEpochTime","nodeType":"VariableDeclaration","scope":8450,"src":"11916:22:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8430,"name":"uint256","nodeType":"ElementaryTypeName","src":"11916:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8433,"initialValue":{"id":8432,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"11941:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11916:40:67"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8434,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"11970:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"11970:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":8438,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"12008:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8436,"name":"startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8431,"src":"11989:14:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"11989:18:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11989:39:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11970:58:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8447,"nodeType":"IfStatement","src":"11966:150:67","trueBody":{"id":8446,"nodeType":"Block","src":"12030:86:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8441,"name":"_updateMiningParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"12044:23:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12044:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8443,"nodeType":"ExpressionStatement","src":"12044:25:67"},{"expression":{"id":8444,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"12090:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8429,"id":8445,"nodeType":"Return","src":"12083:22:67"}]}},{"expression":{"id":8448,"name":"startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8431,"src":"12132:14:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8429,"id":8449,"nodeType":"Return","src":"12125:21:67"}]},"documentation":{"id":8425,"nodeType":"StructuredDocumentation","src":"11674:168:67","text":" @notice Get timestamp of the current mining epoch start while simultaneously updating mining parameters\n @return Timestamp of the current epoch"},"id":8451,"implemented":true,"kind":"function","modifiers":[],"name":"_startEpochTimeWrite","nodeType":"FunctionDefinition","parameters":{"id":8426,"nodeType":"ParameterList","parameters":[],"src":"11876:2:67"},"returnParameters":{"id":8429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8428,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8451,"src":"11897:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8427,"name":"uint256","nodeType":"ElementaryTypeName","src":"11897:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11896:9:67"},"scope":8750,"src":"11847:306:67","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8505,"nodeType":"Block","src":"12203:503:67","statements":[{"assignments":[8455],"declarations":[{"constant":false,"id":8455,"mutability":"mutable","name":"inflationRate","nodeType":"VariableDeclaration","scope":8505,"src":"12213:21:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8454,"name":"uint256","nodeType":"ElementaryTypeName","src":"12213:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8457,"initialValue":{"id":8456,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"12237:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12213:29:67"},{"assignments":[8459],"declarations":[{"constant":false,"id":8459,"mutability":"mutable","name":"startEpochSupply","nodeType":"VariableDeclaration","scope":8505,"src":"12252:24:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8458,"name":"uint256","nodeType":"ElementaryTypeName","src":"12252:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8467,"initialValue":{"arguments":[{"arguments":[{"id":8464,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"12319:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8462,"name":"inflationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8455,"src":"12301:13:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":5618,"src":"12301:17:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12301:38:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8460,"name":"_startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"12279:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"12279:21:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12279:61:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12252:88:67"},{"expression":{"id":8476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8468,"name":"inflationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8455,"src":"12350:13:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8474,"name":"RATE_REDUCTION_COEFFICIENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"12410:26:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8471,"name":"RATE_DENOMINATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7907,"src":"12384:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8469,"name":"inflationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8455,"src":"12366:13:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":5618,"src":"12366:17:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12366:35:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":5663,"src":"12366:43:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12366:71:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12350:87:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8477,"nodeType":"ExpressionStatement","src":"12350:87:67"},{"expression":{"id":8483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8478,"name":"_miningEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7917,"src":"12448:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"31","id":8481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12480:1:67","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"id":8479,"name":"_miningEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7917,"src":"12463:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"12463:16:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12463:19:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12448:34:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8484,"nodeType":"ExpressionStatement","src":"12448:34:67"},{"expression":{"id":8490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8485,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"12492:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8488,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"12530:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8486,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"12510:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"12510:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12510:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12492:58:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8491,"nodeType":"ExpressionStatement","src":"12492:58:67"},{"expression":{"id":8494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8492,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"12560:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8493,"name":"inflationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8455,"src":"12568:13:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12560:21:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8495,"nodeType":"ExpressionStatement","src":"12560:21:67"},{"expression":{"id":8498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8496,"name":"_startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"12591:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8497,"name":"startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8459,"src":"12611:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12591:36:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8499,"nodeType":"ExpressionStatement","src":"12591:36:67"},{"eventCall":{"arguments":[{"id":8501,"name":"inflationRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8455,"src":"12667:13:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8502,"name":"startEpochSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8459,"src":"12682:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8500,"name":"MiningParametersUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7915,"src":"12643:23:67","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":8503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12643:56:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8504,"nodeType":"EmitStatement","src":"12638:61:67"}]},"id":8506,"implemented":true,"kind":"function","modifiers":[],"name":"_updateMiningParameters","nodeType":"FunctionDefinition","parameters":{"id":8452,"nodeType":"ParameterList","parameters":[],"src":"12191:2:67"},"returnParameters":{"id":8453,"nodeType":"ParameterList","parameters":[],"src":"12203:0:67"},"scope":8750,"src":"12159:547:67","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8672,"nodeType":"Block","src":"13070:1859:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8517,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8509,"src":"13088:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8518,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8511,"src":"13097:3:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13088:12:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7374617274203e20656e64","id":8520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13102:13:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_145e9e17082b02be25129749b7eb1462bd7e8d2ab4c8a5c3e371c8ac1d5ebece","typeString":"literal_string \"start > end\""},"value":"start > end"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_145e9e17082b02be25129749b7eb1462bd7e8d2ab4c8a5c3e371c8ac1d5ebece","typeString":"literal_string \"start > end\""}],"id":8516,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13080:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13080:36:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8522,"nodeType":"ExpressionStatement","src":"13080:36:67"},{"assignments":[8524],"declarations":[{"constant":false,"id":8524,"mutability":"mutable","name":"currentEpochTime","nodeType":"VariableDeclaration","scope":8672,"src":"13127:24:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8523,"name":"uint256","nodeType":"ElementaryTypeName","src":"13127:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8526,"initialValue":{"id":8525,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"13154:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13127:42:67"},{"assignments":[8528],"declarations":[{"constant":false,"id":8528,"mutability":"mutable","name":"currentRate","nodeType":"VariableDeclaration","scope":8672,"src":"13179:19:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8527,"name":"uint256","nodeType":"ElementaryTypeName","src":"13179:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8530,"initialValue":{"id":8529,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"13201:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13179:27:67"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8531,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8511,"src":"13387:3:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":8534,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"13414:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8532,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"13393:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"13393:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13393:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13387:47:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8555,"nodeType":"IfStatement","src":"13383:235:67","trueBody":{"id":8554,"nodeType":"Block","src":"13436:182:67","statements":[{"expression":{"id":8542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8537,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"13450:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8540,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"13490:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8538,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"13469:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"13469:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13469:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13450:60:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8543,"nodeType":"ExpressionStatement","src":"13450:60:67"},{"expression":{"id":8552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8544,"name":"currentRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"13524:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8550,"name":"RATE_REDUCTION_COEFFICIENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"13580:26:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8547,"name":"RATE_DENOMINATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7907,"src":"13554:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8545,"name":"currentRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"13538:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":5618,"src":"13538:15:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13538:33:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":5663,"src":"13538:41:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13538:69:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13524:83:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8553,"nodeType":"ExpressionStatement","src":"13524:83:67"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8557,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8511,"src":"13636:3:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":8560,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"13664:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8558,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"13643:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"13643:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13643:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13636:48:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f6f2066617220696e20667574757265","id":8563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13686:19:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_0e2e944db403ece7bc686f46309fd621c067b0b782b5eabb2e86ddafce8e984b","typeString":"literal_string \"too far in future\""},"value":"too far in future"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0e2e944db403ece7bc686f46309fd621c067b0b782b5eabb2e86ddafce8e984b","typeString":"literal_string \"too far in future\""}],"id":8556,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13628:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13628:78:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8565,"nodeType":"ExpressionStatement","src":"13628:78:67"},{"assignments":[8567],"declarations":[{"constant":false,"id":8567,"mutability":"mutable","name":"toMint","nodeType":"VariableDeclaration","scope":8672,"src":"13717:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8566,"name":"uint256","nodeType":"ElementaryTypeName","src":"13717:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8569,"initialValue":{"hexValue":"30","id":8568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13734:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13717:18:67"},{"body":{"id":8668,"nodeType":"Block","src":"13791:1108:67","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8580,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8511,"src":"13809:3:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8581,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"13816:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13809:23:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8644,"nodeType":"IfStatement","src":"13805:789:67","trueBody":{"id":8643,"nodeType":"Block","src":"13834:760:67","statements":[{"assignments":[8584],"declarations":[{"constant":false,"id":8584,"mutability":"mutable","name":"currentEnd","nodeType":"VariableDeclaration","scope":8643,"src":"13852:18:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8583,"name":"uint256","nodeType":"ElementaryTypeName","src":"13852:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8586,"initialValue":{"id":8585,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8511,"src":"13873:3:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13852:24:67"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8587,"name":"currentEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8584,"src":"13898:10:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":8590,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"13932:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8588,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"13911:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"13911:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13911:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13898:54:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8601,"nodeType":"IfStatement","src":"13894:155:67","trueBody":{"id":8600,"nodeType":"Block","src":"13954:95:67","statements":[{"expression":{"id":8598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8593,"name":"currentEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8584,"src":"13976:10:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8596,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"14010:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8594,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"13989:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"13989:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13989:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13976:54:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8599,"nodeType":"ExpressionStatement","src":"13976:54:67"}]}},{"assignments":[8603],"declarations":[{"constant":false,"id":8603,"mutability":"mutable","name":"currentStart","nodeType":"VariableDeclaration","scope":8643,"src":"14067:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8602,"name":"uint256","nodeType":"ElementaryTypeName","src":"14067:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8605,"initialValue":{"id":8604,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8509,"src":"14090:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14067:28:67"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8606,"name":"currentStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8603,"src":"14117:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":8609,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"14154:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8607,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"14133:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"14133:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14133:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14117:57:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8614,"name":"currentStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8603,"src":"14295:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8615,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"14310:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14295:31:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8622,"nodeType":"IfStatement","src":"14291:109:67","trueBody":{"id":8621,"nodeType":"Block","src":"14328:72:67","statements":[{"expression":{"id":8619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8617,"name":"currentStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8603,"src":"14350:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8618,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"14365:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14350:31:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8620,"nodeType":"ExpressionStatement","src":"14350:31:67"}]}},"id":8623,"nodeType":"IfStatement","src":"14113:287:67","trueBody":{"id":8613,"nodeType":"Block","src":"14176:109:67","statements":[{"id":8612,"nodeType":"Break","src":"14261:5:67"}]}},{"expression":{"id":8635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8624,"name":"toMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8567,"src":"14418:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":8631,"name":"currentStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8603,"src":"14469:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8629,"name":"currentEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8584,"src":"14454:10:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":5521,"src":"14454:14:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14454:28:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8627,"name":"currentRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"14438:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":5618,"src":"14438:15:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14438:45:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8625,"name":"toMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8567,"src":"14427:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"14427:10:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14427:57:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14418:66:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8636,"nodeType":"ExpressionStatement","src":"14418:66:67"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8637,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8509,"src":"14507:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8638,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"14516:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14507:25:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8642,"nodeType":"IfStatement","src":"14503:77:67","trueBody":{"id":8641,"nodeType":"Block","src":"14534:46:67","statements":[{"id":8640,"nodeType":"Break","src":"14556:5:67"}]}}]}},{"expression":{"id":8650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8645,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"14608:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8648,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"14648:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8646,"name":"currentEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"14627:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":5521,"src":"14627:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14627:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14608:60:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8651,"nodeType":"ExpressionStatement","src":"14608:60:67"},{"expression":{"id":8660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8652,"name":"currentRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"14756:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8658,"name":"RATE_DENOMINATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7907,"src":"14822:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8655,"name":"RATE_REDUCTION_COEFFICIENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"14786:26:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8653,"name":"currentRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"14770:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":5618,"src":"14770:15:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14770:43:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":5663,"src":"14770:51:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14770:69:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14756:83:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8661,"nodeType":"ExpressionStatement","src":"14756:83:67"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8663,"name":"currentRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"14860:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8664,"name":"INITIAL_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7895,"src":"14875:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14860:27:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8662,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"14853:6:67","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14853:35:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8667,"nodeType":"ExpressionStatement","src":"14853:35:67"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8574,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8571,"src":"13769:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"393939","id":8575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13777:3:67","typeDescriptions":{"typeIdentifier":"t_rational_999_by_1","typeString":"int_const 999"},"value":"999"},"src":"13769:11:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8669,"initializationExpression":{"assignments":[8571],"declarations":[{"constant":false,"id":8571,"mutability":"mutable","name":"epoch","nodeType":"VariableDeclaration","scope":8669,"src":"13750:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8570,"name":"uint256","nodeType":"ElementaryTypeName","src":"13750:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8573,"initialValue":{"hexValue":"30","id":8572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13766:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13750:17:67"},"loopExpression":{"expression":{"id":8578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"13782:7:67","subExpression":{"id":8577,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8571,"src":"13784:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8579,"nodeType":"ExpressionStatement","src":"13782:7:67"},"nodeType":"ForStatement","src":"13745:1154:67"},{"expression":{"id":8670,"name":"toMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8567,"src":"14916:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8515,"id":8671,"nodeType":"Return","src":"14909:13:67"}]},"documentation":{"id":8507,"nodeType":"StructuredDocumentation","src":"12712:263:67","text":" @notice How much supply is mintable from start timestamp till end timestamp\n @param start Start of the time interval (timestamp)\n @param end End of the time interval (timestamp)\n @return Tokens mintable from `start` till `end`"},"id":8673,"implemented":true,"kind":"function","modifiers":[],"name":"_mintableInTimeframe","nodeType":"FunctionDefinition","parameters":{"id":8512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8509,"mutability":"mutable","name":"start","nodeType":"VariableDeclaration","scope":8673,"src":"13010:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8508,"name":"uint256","nodeType":"ElementaryTypeName","src":"13010:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8511,"mutability":"mutable","name":"end","nodeType":"VariableDeclaration","scope":8673,"src":"13025:11:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8510,"name":"uint256","nodeType":"ElementaryTypeName","src":"13025:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13009:28:67"},"returnParameters":{"id":8515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8514,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8673,"src":"13061:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8513,"name":"uint256","nodeType":"ElementaryTypeName","src":"13061:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13060:9:67"},"scope":8750,"src":"12980:1949:67","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[314],"body":{"id":8681,"nodeType":"Block","src":"15201:29:67","statements":[{"expression":{"id":8679,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"15218:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8678,"id":8680,"nodeType":"Return","src":"15211:12:67"}]},"functionSelector":"2c4e722e","id":8682,"implemented":true,"kind":"function","modifiers":[],"name":"rate","nodeType":"FunctionDefinition","overrides":{"id":8675,"nodeType":"OverrideSpecifier","overrides":[],"src":"15174:8:67"},"parameters":{"id":8674,"nodeType":"ParameterList","parameters":[],"src":"15157:2:67"},"returnParameters":{"id":8678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8677,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8682,"src":"15192:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8676,"name":"uint256","nodeType":"ElementaryTypeName","src":"15192:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15191:9:67"},"scope":8750,"src":"15144:86:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8690,"nodeType":"Block","src":"15296:42:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8687,"name":"_availableSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8424,"src":"15313:16:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15313:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8686,"id":8689,"nodeType":"Return","src":"15306:25:67"}]},"functionSelector":"24f92a25","id":8691,"implemented":true,"kind":"function","modifiers":[],"name":"available_supply","nodeType":"FunctionDefinition","parameters":{"id":8683,"nodeType":"ParameterList","parameters":[],"src":"15261:2:67"},"returnParameters":{"id":8686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8685,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8691,"src":"15287:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8684,"name":"uint256","nodeType":"ElementaryTypeName","src":"15287:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15286:9:67"},"scope":8750,"src":"15236:102:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8700,"nodeType":"Block","src":"15578:46:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8697,"name":"_startEpochTimeWrite","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8451,"src":"15595:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":8698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15595:22:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8696,"id":8699,"nodeType":"Return","src":"15588:29:67"}]},"documentation":{"id":8692,"nodeType":"StructuredDocumentation","src":"15344:168:67","text":" @notice Get timestamp of the current mining epoch start while simultaneously updating mining parameters\n @return Timestamp of the current epoch"},"functionSelector":"adc4cf43","id":8701,"implemented":true,"kind":"function","modifiers":[],"name":"start_epoch_time_write","nodeType":"FunctionDefinition","parameters":{"id":8693,"nodeType":"ParameterList","parameters":[],"src":"15548:2:67"},"returnParameters":{"id":8696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8695,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8701,"src":"15569:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8694,"name":"uint256","nodeType":"ElementaryTypeName","src":"15569:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15568:9:67"},"scope":8750,"src":"15517:107:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8713,"nodeType":"Block","src":"15859:71:67","statements":[{"expression":{"arguments":[{"id":8710,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"15903:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8707,"name":"_startEpochTimeWrite","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8451,"src":"15876:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":8708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15876:22:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"15876:26:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15876:47:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8706,"id":8712,"nodeType":"Return","src":"15869:54:67"}]},"documentation":{"id":8702,"nodeType":"StructuredDocumentation","src":"15630:162:67","text":" @notice Get timestamp of the next mining epoch start while simultaneously updating mining parameters\n @return Timestamp of the next epoch"},"functionSelector":"b26b238e","id":8714,"implemented":true,"kind":"function","modifiers":[],"name":"future_epoch_time_write","nodeType":"FunctionDefinition","parameters":{"id":8703,"nodeType":"ParameterList","parameters":[],"src":"15829:2:67"},"returnParameters":{"id":8706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8705,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8714,"src":"15850:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8704,"name":"uint256","nodeType":"ElementaryTypeName","src":"15850:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15849:9:67"},"scope":8750,"src":"15797:133:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8732,"nodeType":"Block","src":"16205:150:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8719,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16223:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"16223:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":8723,"name":"RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"16262:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8721,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"16242:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"16242:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16242:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16223:59:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45706f636820686173206e6f742066696e697368656420796574","id":8726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16284:28:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_844f8669d9677550455a55a9e49a7c619dce5f058c358110abeab9cb013df878","typeString":"literal_string \"Epoch has not finished yet\""},"value":"Epoch has not finished yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_844f8669d9677550455a55a9e49a7c619dce5f058c358110abeab9cb013df878","typeString":"literal_string \"Epoch has not finished yet\""}],"id":8718,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16215:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16215:98:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8728,"nodeType":"ExpressionStatement","src":"16215:98:67"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8729,"name":"_updateMiningParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"16323:23:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16323:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8731,"nodeType":"ExpressionStatement","src":"16323:25:67"}]},"documentation":{"id":8715,"nodeType":"StructuredDocumentation","src":"15936:219:67","text":" @notice Update mining rate and supply at the start of the epoch\n @dev Callable by any address, but only once per epoch\n Total supply becomes slightly larger if this function is called late"},"functionSelector":"d43b40fa","id":8733,"implemented":true,"kind":"function","modifiers":[],"name":"update_mining_parameters","nodeType":"FunctionDefinition","parameters":{"id":8716,"nodeType":"ParameterList","parameters":[],"src":"16193:2:67"},"returnParameters":{"id":8717,"nodeType":"ParameterList","parameters":[],"src":"16205:0:67"},"scope":8750,"src":"16160:195:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8748,"nodeType":"Block","src":"16720:56:67","statements":[{"expression":{"arguments":[{"id":8744,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8736,"src":"16758:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8745,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8738,"src":"16765:3:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8743,"name":"_mintableInTimeframe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"16737:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"}},"id":8746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16737:32:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8742,"id":8747,"nodeType":"Return","src":"16730:39:67"}]},"documentation":{"id":8734,"nodeType":"StructuredDocumentation","src":"16361:263:67","text":" @notice How much supply is mintable from start timestamp till end timestamp\n @param start Start of the time interval (timestamp)\n @param end End of the time interval (timestamp)\n @return Tokens mintable from `start` till `end`"},"functionSelector":"d725a9ca","id":8749,"implemented":true,"kind":"function","modifiers":[],"name":"mintable_in_timeframe","nodeType":"FunctionDefinition","parameters":{"id":8739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8736,"mutability":"mutable","name":"start","nodeType":"VariableDeclaration","scope":8749,"src":"16660:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8735,"name":"uint256","nodeType":"ElementaryTypeName","src":"16660:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8738,"mutability":"mutable","name":"end","nodeType":"VariableDeclaration","scope":8749,"src":"16675:11:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8737,"name":"uint256","nodeType":"ElementaryTypeName","src":"16675:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16659:28:67"},"returnParameters":{"id":8742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8741,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8749,"src":"16711:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8740,"name":"uint256","nodeType":"ElementaryTypeName","src":"16711:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16710:9:67"},"scope":8750,"src":"16629:147:67","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8751,"src":"1910:14868:67"}],"src":"688:16091:67"},"id":67},"contracts/GaugeWorkingBalanceHelper.sol":{"ast":{"absolutePath":"contracts/GaugeWorkingBalanceHelper.sol","exportedSymbols":{"GaugeWorkingBalanceHelper":[8993],"IGauge":[8789],"IVeDelegationProxy":[8764]},"id":8994,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8752,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:68"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":8753,"nodeType":"ImportDirective","scope":8994,"sourceUnit":2448,"src":"713:87:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol","id":8754,"nodeType":"ImportDirective","scope":8994,"sourceUnit":1470,"src":"801:83:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":8755,"nodeType":"ImportDirective","scope":8994,"sourceUnit":4115,"src":"886:72:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","id":8756,"nodeType":"ImportDirective","scope":8994,"sourceUnit":5684,"src":"959:66:68","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8757,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"1059:13:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":8758,"nodeType":"InheritanceSpecifier","src":"1059:13:68"}],"contractDependencies":[1469],"contractKind":"interface","fullyImplemented":false,"id":8764,"linearizedBaseContracts":[8764,1469],"name":"IVeDelegationProxy","nodeType":"ContractDefinition","nodes":[{"functionSelector":"08b0308a","id":8763,"implemented":false,"kind":"function","modifiers":[],"name":"getVotingEscrow","nodeType":"FunctionDefinition","parameters":{"id":8759,"nodeType":"ParameterList","parameters":[],"src":"1103:2:68"},"returnParameters":{"id":8762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8761,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8763,"src":"1129:6:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":8760,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1129:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1128:8:68"},"scope":8764,"src":"1079:58:68","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8994,"src":"1027:112:68"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":8789,"linearizedBaseContracts":[8789],"name":"IGauge","nodeType":"ContractDefinition","nodes":[{"functionSelector":"70a08231","id":8771,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":8767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8766,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":8771,"src":"1183:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8765,"name":"address","nodeType":"ElementaryTypeName","src":"1183:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1182:14:68"},"returnParameters":{"id":8770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8769,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8771,"src":"1220:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8768,"name":"uint256","nodeType":"ElementaryTypeName","src":"1220:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1219:9:68"},"scope":8789,"src":"1164:65:68","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"18160ddd","id":8776,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":8772,"nodeType":"ParameterList","parameters":[],"src":"1255:2:68"},"returnParameters":{"id":8775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8774,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8776,"src":"1281:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8773,"name":"uint256","nodeType":"ElementaryTypeName","src":"1281:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1280:9:68"},"scope":8789,"src":"1235:55:68","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"13ecb1ca","id":8783,"implemented":false,"kind":"function","modifiers":[],"name":"working_balances","nodeType":"FunctionDefinition","parameters":{"id":8779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8778,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":8783,"src":"1365:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8777,"name":"address","nodeType":"ElementaryTypeName","src":"1365:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1364:14:68"},"returnParameters":{"id":8782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8781,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8783,"src":"1402:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8780,"name":"uint256","nodeType":"ElementaryTypeName","src":"1402:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1401:9:68"},"scope":8789,"src":"1339:72:68","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"17e28089","id":8788,"implemented":false,"kind":"function","modifiers":[],"name":"working_supply","nodeType":"FunctionDefinition","parameters":{"id":8784,"nodeType":"ParameterList","parameters":[],"src":"1440:2:68"},"returnParameters":{"id":8787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8786,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8788,"src":"1466:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8785,"name":"uint256","nodeType":"ElementaryTypeName","src":"1466:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1465:9:68"},"scope":8789,"src":"1417:58:68","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8994,"src":"1141:378:68"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":8790,"nodeType":"StructuredDocumentation","src":"1521:593:68","text":" @notice Get the current and projected `working_balance` (effective veBAL boosted balance) for a user on a gauge.\n @dev The `working_balance` can range between 40% and 100% of the nominal user balance on a gauge, depending on the\n veBAL \"voting power\" of the user with respect to the total \"voting power\" supply. This value generally decays over\n time, but will increase with additional veBAL locking.\n Also computes the working balance ratios: balance/supply, which is more informative when deciding whether\n it would be advantageous for the user to checkpoint a gauge."},"fullyImplemented":true,"id":8993,"linearizedBaseContracts":[8993],"name":"GaugeWorkingBalanceHelper","nodeType":"ContractDefinition","nodes":[{"id":8793,"libraryName":{"id":8791,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":4114,"src":"2162:10:68","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$4114","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"2156:29:68","typeName":{"id":8792,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":8796,"mutability":"constant","name":"_TOKENLESS_PRODUCTION","nodeType":"VariableDeclaration","scope":8993,"src":"2235:54:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8794,"name":"uint256","nodeType":"ElementaryTypeName","src":"2235:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3430653136","id":8795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2284:5:68","typeDescriptions":{"typeIdentifier":"t_rational_400000000000000000_by_1","typeString":"int_const 400000000000000000"},"value":"40e16"},"visibility":"private"},{"constant":false,"id":8798,"mutability":"immutable","name":"_veDelegationProxy","nodeType":"VariableDeclaration","scope":8993,"src":"2296:55:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"},"typeName":{"id":8797,"name":"IVeDelegationProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":8764,"src":"2296:18:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"visibility":"private"},{"constant":false,"id":8800,"mutability":"immutable","name":"_veBAL","nodeType":"VariableDeclaration","scope":8993,"src":"2357:31:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":8799,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2357:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"private"},{"constant":false,"id":8802,"mutability":"immutable","name":"_readTotalSupplyFromVE","nodeType":"VariableDeclaration","scope":8993,"src":"2588:45:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8801,"name":"bool","nodeType":"ElementaryTypeName","src":"2588:4:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"body":{"id":8823,"nodeType":"Block","src":"2718:166:68","statements":[{"expression":{"id":8811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8809,"name":"_veDelegationProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8798,"src":"2728:18:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8810,"name":"veDelegationProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8804,"src":"2749:17:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"src":"2728:38:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"id":8812,"nodeType":"ExpressionStatement","src":"2728:38:68"},{"expression":{"id":8817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8813,"name":"_veBAL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8800,"src":"2776:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8814,"name":"veDelegationProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8804,"src":"2785:17:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"id":8815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getVotingEscrow","nodeType":"MemberAccess","referencedDeclaration":8763,"src":"2785:33:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2447_$","typeString":"function () view external returns (contract IERC20)"}},"id":8816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2785:35:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"2776:44:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":8818,"nodeType":"ExpressionStatement","src":"2776:44:68"},{"expression":{"id":8821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8819,"name":"_readTotalSupplyFromVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8802,"src":"2831:22:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8820,"name":"readTotalSupplyFromVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8806,"src":"2856:21:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2831:46:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8822,"nodeType":"ExpressionStatement","src":"2831:46:68"}]},"id":8824,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8804,"mutability":"mutable","name":"veDelegationProxy","nodeType":"VariableDeclaration","scope":8824,"src":"2652:36:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"},"typeName":{"id":8803,"name":"IVeDelegationProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":8764,"src":"2652:18:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"visibility":"internal"},{"constant":false,"id":8806,"mutability":"mutable","name":"readTotalSupplyFromVE","nodeType":"VariableDeclaration","scope":8824,"src":"2690:26:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8805,"name":"bool","nodeType":"ElementaryTypeName","src":"2690:4:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2651:66:68"},"returnParameters":{"id":8808,"nodeType":"ParameterList","parameters":[],"src":"2718:0:68"},"scope":8993,"src":"2640:244:68","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8832,"nodeType":"Block","src":"3080:42:68","statements":[{"expression":{"id":8830,"name":"_veDelegationProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8798,"src":"3097:18:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"functionReturnParameters":8829,"id":8831,"nodeType":"Return","src":"3090:25:68"}]},"documentation":{"id":8825,"nodeType":"StructuredDocumentation","src":"2890:105:68","text":" @dev Returns the VotingEscrowDelegationProxy (as an IVeDelegation, which is exported)."},"functionSelector":"5f6e28f6","id":8833,"implemented":true,"kind":"function","modifiers":[],"name":"getVotingEscrowDelegationProxy","nodeType":"FunctionDefinition","parameters":{"id":8826,"nodeType":"ParameterList","parameters":[],"src":"3039:2:68"},"returnParameters":{"id":8829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8828,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8833,"src":"3065:13:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"typeName":{"id":8827,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"3065:13:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"visibility":"internal"}],"src":"3064:15:68"},"scope":8993,"src":"3000:122:68","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8841,"nodeType":"Block","src":"3275:30:68","statements":[{"expression":{"id":8839,"name":"_veBAL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8800,"src":"3292:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"functionReturnParameters":8838,"id":8840,"nodeType":"Return","src":"3285:13:68"}]},"documentation":{"id":8834,"nodeType":"StructuredDocumentation","src":"3128:84:68","text":" @dev Returns the VotingEscrow contract associated with the proxy."},"functionSelector":"08b0308a","id":8842,"implemented":true,"kind":"function","modifiers":[],"name":"getVotingEscrow","nodeType":"FunctionDefinition","parameters":{"id":8835,"nodeType":"ParameterList","parameters":[],"src":"3241:2:68"},"returnParameters":{"id":8838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8837,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8842,"src":"3267:6:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":8836,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3267:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"3266:8:68"},"scope":8993,"src":"3217:88:68","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8850,"nodeType":"Block","src":"3548:46:68","statements":[{"expression":{"id":8848,"name":"_readTotalSupplyFromVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8802,"src":"3565:22:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8847,"id":8849,"nodeType":"Return","src":"3558:29:68"}]},"documentation":{"id":8843,"nodeType":"StructuredDocumentation","src":"3311:169:68","text":" @dev Returns whether the total supply will be read from the VotingEscrow contract. If false,\n it will be read from the delegation proxy instead."},"functionSelector":"daf02aff","id":8851,"implemented":true,"kind":"function","modifiers":[],"name":"readsTotalSupplyFromVE","nodeType":"FunctionDefinition","parameters":{"id":8844,"nodeType":"ParameterList","parameters":[],"src":"3516:2:68"},"returnParameters":{"id":8847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8846,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8851,"src":"3542:4:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8845,"name":"bool","nodeType":"ElementaryTypeName","src":"3542:4:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3541:6:68"},"scope":8993,"src":"3485:109:68","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":8943,"nodeType":"Block","src":"4192:895:68","statements":[{"assignments":[8864],"declarations":[{"constant":false,"id":8864,"mutability":"mutable","name":"gaugeUserBalance","nodeType":"VariableDeclaration","scope":8943,"src":"4202:24:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8863,"name":"uint256","nodeType":"ElementaryTypeName","src":"4202:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8869,"initialValue":{"arguments":[{"id":8867,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8856,"src":"4245:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8865,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8854,"src":"4229:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"}},"id":8866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8771,"src":"4229:15:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4229:21:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4202:48:68"},{"assignments":[8871],"declarations":[{"constant":false,"id":8871,"mutability":"mutable","name":"projectedWorkingBalance","nodeType":"VariableDeclaration","scope":8943,"src":"4260:31:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8870,"name":"uint256","nodeType":"ElementaryTypeName","src":"4260:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8876,"initialValue":{"arguments":[{"id":8874,"name":"_TOKENLESS_PRODUCTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8796,"src":"4319:21:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8872,"name":"gaugeUserBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8864,"src":"4294:16:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":3845,"src":"4294:24:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4294:47:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4260:81:68"},{"assignments":[8878],"declarations":[{"constant":false,"id":8878,"mutability":"mutable","name":"proxy","nodeType":"VariableDeclaration","scope":8943,"src":"4351:24:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"},"typeName":{"id":8877,"name":"IVeDelegationProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":8764,"src":"4351:18:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"visibility":"internal"}],"id":8880,"initialValue":{"id":8879,"name":"_veDelegationProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8798,"src":"4378:18:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"nodeType":"VariableDeclarationStatement","src":"4351:45:68"},{"assignments":[8882],"declarations":[{"constant":false,"id":8882,"mutability":"mutable","name":"veTotalSupply","nodeType":"VariableDeclaration","scope":8943,"src":"4407:21:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8881,"name":"uint256","nodeType":"ElementaryTypeName","src":"4407:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8891,"initialValue":{"condition":{"id":8883,"name":"_readTotalSupplyFromVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8802,"src":"4431:22:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8887,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8878,"src":"4479:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"id":8888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":1468,"src":"4479:17:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4479:19:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4431:67:68","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8884,"name":"_veBAL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8800,"src":"4456:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":8885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":2378,"src":"4456:18:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4456:20:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4407:91:68"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8892,"name":"veTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8882,"src":"4513:13:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4529:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4513:17:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8935,"nodeType":"IfStatement","src":"4509:499:68","trueBody":{"id":8934,"nodeType":"Block","src":"4532:476:68","statements":[{"assignments":[8896],"declarations":[{"constant":false,"id":8896,"mutability":"mutable","name":"veUserBalance","nodeType":"VariableDeclaration","scope":8934,"src":"4546:21:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8895,"name":"uint256","nodeType":"ElementaryTypeName","src":"4546:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8901,"initialValue":{"arguments":[{"id":8899,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8856,"src":"4596:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8897,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8878,"src":"4570:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegationProxy_$8764","typeString":"contract IVeDelegationProxy"}},"id":8898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"adjusted_balance_of","nodeType":"MemberAccess","referencedDeclaration":1463,"src":"4570:25:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4570:31:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4546:55:68"},{"assignments":[8903],"declarations":[{"constant":false,"id":8903,"mutability":"mutable","name":"gaugeTotalSupply","nodeType":"VariableDeclaration","scope":8934,"src":"4615:24:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8902,"name":"uint256","nodeType":"ElementaryTypeName","src":"4615:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8907,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8904,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8854,"src":"4642:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"}},"id":8905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":8776,"src":"4642:17:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4642:19:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4615:46:68"},{"expression":{"id":8924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8908,"name":"projectedWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8871,"src":"4676:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":8921,"name":"veTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8882,"src":"4860:13:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8916,"name":"_TOKENLESS_PRODUCTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8796,"src":"4795:21:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"complement","nodeType":"MemberAccess","referencedDeclaration":4113,"src":"4795:32:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":8918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4795:34:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8913,"name":"veUserBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8896,"src":"4772:13:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8911,"name":"gaugeTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8903,"src":"4747:16:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":3845,"src":"4747:24:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4747:39:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":3845,"src":"4747:47:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4747:83:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":3918,"src":"4747:91:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4747:144:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8909,"name":"projectedWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8871,"src":"4702:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":3785,"src":"4702:27:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4702:203:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4676:229:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8925,"nodeType":"ExpressionStatement","src":"4676:229:68"},{"expression":{"id":8932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8926,"name":"projectedWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8871,"src":"4920:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8929,"name":"gaugeUserBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8864,"src":"4955:16:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8930,"name":"projectedWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8871,"src":"4973:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8927,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"4946:4:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5683_$","typeString":"type(library Math)"}},"id":8928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"min","nodeType":"MemberAccess","referencedDeclaration":5586,"src":"4946:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4946:51:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4920:77:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8933,"nodeType":"ExpressionStatement","src":"4920:77:68"}]}},{"expression":{"components":[{"arguments":[{"id":8938,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8856,"src":"5049:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8936,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8854,"src":"5026:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"}},"id":8937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"working_balances","nodeType":"MemberAccess","referencedDeclaration":8783,"src":"5026:22:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5026:28:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8940,"name":"projectedWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8871,"src":"5056:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8941,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5025:55:68","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":8862,"id":8942,"nodeType":"Return","src":"5018:62:68"}]},"documentation":{"id":8852,"nodeType":"StructuredDocumentation","src":"3600:492:68","text":" @dev The gauge allocates 60% of the emissions it receives to veBAL holders, which it accomplishes by computing\n an effective \"working\" balance for each user, starting with 40% of the true balance (i.e., BPT deposited in\n the gauge), and adding a \"boost\" proportional to that user's share of the total voting power.\n @param gauge - address of a gauge (L1 or L2).\n @param user - address of a user.\n @return current and projected balances."},"functionSelector":"fd655c84","id":8944,"implemented":true,"kind":"function","modifiers":[],"name":"getWorkingBalances","nodeType":"FunctionDefinition","parameters":{"id":8857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8854,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":8944,"src":"4125:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"},"typeName":{"id":8853,"name":"IGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":8789,"src":"4125:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"}},"visibility":"internal"},{"constant":false,"id":8856,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":8944,"src":"4139:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8855,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4124:28:68"},"returnParameters":{"id":8862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8859,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8944,"src":"4174:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8858,"name":"uint256","nodeType":"ElementaryTypeName","src":"4174:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8861,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8944,"src":"4183:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8860,"name":"uint256","nodeType":"ElementaryTypeName","src":"4183:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4173:18:68"},"scope":8993,"src":"4097:990:68","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":8991,"nodeType":"Block","src":"5853:460:68","statements":[{"assignments":[8957,8959],"declarations":[{"constant":false,"id":8957,"mutability":"mutable","name":"currentWorkingBalance","nodeType":"VariableDeclaration","scope":8991,"src":"5864:29:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8956,"name":"uint256","nodeType":"ElementaryTypeName","src":"5864:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8959,"mutability":"mutable","name":"projectedWorkingBalance","nodeType":"VariableDeclaration","scope":8991,"src":"5895:31:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8958,"name":"uint256","nodeType":"ElementaryTypeName","src":"5895:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8964,"initialValue":{"arguments":[{"id":8961,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8947,"src":"5949:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"}},{"id":8962,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8949,"src":"5956:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8960,"name":"getWorkingBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8944,"src":"5930:18:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IGauge_$8789_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract IGauge,address) view returns (uint256,uint256)"}},"id":8963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5930:31:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5863:98:68"},{"assignments":[8966],"declarations":[{"constant":false,"id":8966,"mutability":"mutable","name":"currentWorkingSupply","nodeType":"VariableDeclaration","scope":8991,"src":"5971:28:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8965,"name":"uint256","nodeType":"ElementaryTypeName","src":"5971:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8970,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8967,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8947,"src":"6002:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"}},"id":8968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"working_supply","nodeType":"MemberAccess","referencedDeclaration":8788,"src":"6002:20:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6002:22:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5971:53:68"},{"assignments":[8972],"declarations":[{"constant":false,"id":8972,"mutability":"mutable","name":"projectedWorkingSupply","nodeType":"VariableDeclaration","scope":8991,"src":"6035:30:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8971,"name":"uint256","nodeType":"ElementaryTypeName","src":"6035:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8980,"initialValue":{"arguments":[{"id":8978,"name":"currentWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"6122:21:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8975,"name":"projectedWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8959,"src":"6093:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8973,"name":"currentWorkingSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8966,"src":"6068:20:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":3785,"src":"6068:24:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6068:49:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":3811,"src":"6068:53:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6068:76:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6035:109:68"},{"expression":{"components":[{"arguments":[{"id":8983,"name":"currentWorkingSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8966,"src":"6206:20:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8981,"name":"currentWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"6176:21:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":3918,"src":"6176:29:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6176:51:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":8987,"name":"projectedWorkingSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8972,"src":"6273:22:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8985,"name":"projectedWorkingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8959,"src":"6241:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":3918,"src":"6241:31:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6241:55:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8989,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6162:144:68","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":8955,"id":8990,"nodeType":"Return","src":"6155:151:68"}]},"documentation":{"id":8945,"nodeType":"StructuredDocumentation","src":"5093:645:68","text":" @dev There is also a \"working\" supply, needed to ensure that all the emissions are allocated.\n Compute and return the balance/supply ratios. This captures the behavior of other users, and more\n accurately reflects this user's relative position.\n @param gauge - address of a gauge (L1 or L2).\n @param user - address of a user.\n @return ratio of the current `working_balance` of the user to the current `working_supply` of the gauge.\n @return ratio of the projected `working_balance` of the user (after `user_checkpoint`),\n to the projected `working_supply` of the gauge."},"functionSelector":"ce5a7e7d","id":8992,"implemented":true,"kind":"function","modifiers":[],"name":"getWorkingBalanceToSupplyRatios","nodeType":"FunctionDefinition","parameters":{"id":8950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8947,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":8992,"src":"5784:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"},"typeName":{"id":8946,"name":"IGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":8789,"src":"5784:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IGauge_$8789","typeString":"contract IGauge"}},"visibility":"internal"},{"constant":false,"id":8949,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":8992,"src":"5798:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8948,"name":"address","nodeType":"ElementaryTypeName","src":"5798:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5783:28:68"},"returnParameters":{"id":8955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8952,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8992,"src":"5835:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8951,"name":"uint256","nodeType":"ElementaryTypeName","src":"5835:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8954,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8992,"src":"5844:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8953,"name":"uint256","nodeType":"ElementaryTypeName","src":"5844:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5834:18:68"},"scope":8993,"src":"5743:570:68","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8994,"src":"2115:4200:68"}],"src":"688:5628:68"},"id":68},"contracts/L2BalancerPseudoMinter.sol":{"ast":{"absolutePath":"contracts/L2BalancerPseudoMinter.sol","exportedSymbols":{"L2BalancerPseudoMinter":[9268]},"id":9269,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8995,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:69"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","id":8996,"nodeType":"ImportDirective","scope":9269,"sourceUnit":365,"src":"713:86:69","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":8997,"nodeType":"ImportDirective","scope":9269,"sourceUnit":3698,"src":"800:88:69","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":8998,"nodeType":"ImportDirective","scope":9269,"sourceUnit":7342,"src":"889:79:69","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","id":8999,"nodeType":"ImportDirective","scope":9269,"sourceUnit":7420,"src":"969:78:69","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/BalancerMinter.sol","file":"./BalancerMinter.sol","id":9000,"nodeType":"ImportDirective","scope":9269,"sourceUnit":7867,"src":"1049:30:69","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9002,"name":"BalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":7866,"src":"2158:14:69","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerMinter_$7866","typeString":"contract BalancerMinter"}},"id":9003,"nodeType":"InheritanceSpecifier","src":"2158:14:69"},{"baseName":{"id":9004,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"2174:23:69","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":9005,"nodeType":"InheritanceSpecifier","src":"2174:23:69"}],"contractDependencies":[197,2259,2311,3128,3308,3697,6021,7187,7866],"contractKind":"contract","documentation":{"id":9001,"nodeType":"StructuredDocumentation","src":"1081:1041:69","text":" @dev Distributes bridged BAL tokens in child chains, using the same interface as the mainnet Balancer minter.\n This contract is analogous to the mainnet minter: it has the same interface and interacts with (L2) gauges in a\n similar manner, keeping track of how many tokens were already distributed to each gauge and user.\n The difference with the mainnet minter is that this contract does not have a way of minting BAL directly: the tokens\n are only minted in mainnet, and then bridged to L2s. Then, this contract accumulates the emissions received by\n child chain gauges and distributes them to users.\n Every time the tokens are 'minted' (i.e. distributed) from a gauge to a given user, the pseudo minter will query the\n child chain gauge for the total amount of tokes that need to be distributed to that user. By keeping track of the\n amount that it has already distributed for that gauge / user, the pseudo minter can then transfer the difference\n to the user and update the total transferred amount."},"fullyImplemented":true,"id":9268,"linearizedBaseContracts":[9268,3697,3128,2259,7866,3308,6021,2311,7187,197],"name":"L2BalancerPseudoMinter","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":9009,"name":"GaugeFactoryAdded","nodeType":"EventDefinition","parameters":{"id":9008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9007,"indexed":true,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":9009,"src":"2228:38:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":9006,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"2228:22:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"2227:40:69"},"src":"2204:64:69"},{"anonymous":false,"id":9013,"name":"GaugeFactoryRemoved","nodeType":"EventDefinition","parameters":{"id":9012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9011,"indexed":true,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":9013,"src":"2299:38:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":9010,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"2299:22:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"2298:40:69"},"src":"2273:66:69"},{"id":9016,"libraryName":{"id":9014,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7419,"src":"2351:8:69","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7419","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"2345:27:69","typeName":{"id":9015,"name":"uint256","nodeType":"ElementaryTypeName","src":"2364:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":9019,"libraryName":{"id":9017,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"2383:9:69","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"2377:27:69","typeName":{"id":9018,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2397:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":false,"id":9023,"mutability":"mutable","name":"_validFactories","nodeType":"VariableDeclaration","scope":9268,"src":"2410:63:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_ILiquidityGaugeFactory_$941_$_t_bool_$","typeString":"mapping(contract ILiquidityGaugeFactory => bool)"},"typeName":{"id":9022,"keyType":{"id":9020,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"2418:22:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"Mapping","src":"2410:39:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_ILiquidityGaugeFactory_$941_$_t_bool_$","typeString":"mapping(contract ILiquidityGaugeFactory => bool)"},"valueType":{"id":9021,"name":"bool","nodeType":"ElementaryTypeName","src":"2444:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"body":{"id":9038,"nodeType":"Block","src":"2640:64:69","statements":[]},"id":9039,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9030,"name":"balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9027,"src":"2551:13:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"42616c616e6365722050736575646f204d696e746572","id":9031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2566:24:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_1965f4106f0d109d8ada9b73c09a81423f2d74a0079e1021cd207a4cc8f1d6c6","typeString":"literal_string \"Balancer Pseudo Minter\""},"value":"Balancer Pseudo Minter"},{"hexValue":"31","id":9032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2592:3:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":9033,"modifierName":{"id":9029,"name":"BalancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7866,"src":"2536:14:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalancerMinter_$7866_$","typeString":"type(contract BalancerMinter)"}},"nodeType":"ModifierInvocation","src":"2536:60:69"},{"arguments":[{"id":9035,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9025,"src":"2629:5:69","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":9036,"modifierName":{"id":9034,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"2605:23:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"2605:30:69"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9025,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9039,"src":"2492:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":9024,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"2492:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":9027,"mutability":"mutable","name":"balancerToken","nodeType":"VariableDeclaration","scope":9039,"src":"2506:20:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":9026,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2506:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2491:36:69"},"returnParameters":{"id":9037,"nodeType":"ParameterList","parameters":[],"src":"2640:0:69"},"scope":9268,"src":"2480:224:69","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9065,"nodeType":"Block","src":"3026:158:69","statements":[{"expression":{"arguments":[{"id":9051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3044:25:69","subExpression":{"baseExpression":{"id":9048,"name":"_validFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"3045:15:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_ILiquidityGaugeFactory_$941_$_t_bool_$","typeString":"mapping(contract ILiquidityGaugeFactory => bool)"}},"id":9050,"indexExpression":{"id":9049,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9042,"src":"3061:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3045:24:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"464143544f52595f414c52454144595f4144444544","id":9052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3071:23:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_6fc4746c8fbd00897008ee5106de2d9a40374504a6a257657ba9deb3987d8dd7","typeString":"literal_string \"FACTORY_ALREADY_ADDED\""},"value":"FACTORY_ALREADY_ADDED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6fc4746c8fbd00897008ee5106de2d9a40374504a6a257657ba9deb3987d8dd7","typeString":"literal_string \"FACTORY_ALREADY_ADDED\""}],"id":9047,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3036:7:69","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3036:59:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9054,"nodeType":"ExpressionStatement","src":"3036:59:69"},{"expression":{"id":9059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9055,"name":"_validFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"3105:15:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_ILiquidityGaugeFactory_$941_$_t_bool_$","typeString":"mapping(contract ILiquidityGaugeFactory => bool)"}},"id":9057,"indexExpression":{"id":9056,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9042,"src":"3121:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3105:24:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":9058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3132:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3105:31:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9060,"nodeType":"ExpressionStatement","src":"3105:31:69"},{"eventCall":{"arguments":[{"id":9062,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9042,"src":"3169:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}],"id":9061,"name":"GaugeFactoryAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9009,"src":"3151:17:69","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_ILiquidityGaugeFactory_$941_$returns$__$","typeString":"function (contract ILiquidityGaugeFactory)"}},"id":9063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3151:26:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9064,"nodeType":"EmitStatement","src":"3146:31:69"}]},"documentation":{"id":9040,"nodeType":"StructuredDocumentation","src":"2710:232:69","text":" @notice Adds a given child chain gauge factory to the allowlist.\n @dev This is a permissioned function.\n Reverts if the given factory was added beforehand; emits `GaugeFactoryAdded` event upon success."},"functionSelector":"38f12152","id":9066,"implemented":true,"kind":"function","modifiers":[{"id":9045,"modifierName":{"id":9044,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3013:12:69","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3013:12:69"}],"name":"addGaugeFactory","nodeType":"FunctionDefinition","parameters":{"id":9043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9042,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":9066,"src":"2972:30:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":9041,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"2972:22:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"2971:32:69"},"returnParameters":{"id":9046,"nodeType":"ParameterList","parameters":[],"src":"3026:0:69"},"scope":9268,"src":"2947:237:69","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9091,"nodeType":"Block","src":"3525:156:69","statements":[{"expression":{"arguments":[{"baseExpression":{"id":9075,"name":"_validFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"3543:15:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_ILiquidityGaugeFactory_$941_$_t_bool_$","typeString":"mapping(contract ILiquidityGaugeFactory => bool)"}},"id":9077,"indexExpression":{"id":9076,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9069,"src":"3559:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3543:24:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"464143544f52595f4e4f545f4144444544","id":9078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3569:19:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_87bbfdddaac01277311ab3dfd0b4d8fce03cd7657e0647e9be800db076c1ba82","typeString":"literal_string \"FACTORY_NOT_ADDED\""},"value":"FACTORY_NOT_ADDED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_87bbfdddaac01277311ab3dfd0b4d8fce03cd7657e0647e9be800db076c1ba82","typeString":"literal_string \"FACTORY_NOT_ADDED\""}],"id":9074,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3535:7:69","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3535:54:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9080,"nodeType":"ExpressionStatement","src":"3535:54:69"},{"expression":{"id":9085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9081,"name":"_validFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"3599:15:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_ILiquidityGaugeFactory_$941_$_t_bool_$","typeString":"mapping(contract ILiquidityGaugeFactory => bool)"}},"id":9083,"indexExpression":{"id":9082,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9069,"src":"3615:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3599:24:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":9084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3626:5:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3599:32:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9086,"nodeType":"ExpressionStatement","src":"3599:32:69"},{"eventCall":{"arguments":[{"id":9088,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9069,"src":"3666:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}],"id":9087,"name":"GaugeFactoryRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9013,"src":"3646:19:69","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_ILiquidityGaugeFactory_$941_$returns$__$","typeString":"function (contract ILiquidityGaugeFactory)"}},"id":9089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3646:28:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9090,"nodeType":"EmitStatement","src":"3641:33:69"}]},"documentation":{"id":9067,"nodeType":"StructuredDocumentation","src":"3190:248:69","text":" @notice Removes a given child chain gauge factory from the allowlist.\n @dev This is a permissioned function.\n Reverts if the given factory had not been added beforehand; emits `GaugeFactoryRemoved` event upon success."},"functionSelector":"7a60e63a","id":9092,"implemented":true,"kind":"function","modifiers":[{"id":9072,"modifierName":{"id":9071,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3512:12:69","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3512:12:69"}],"name":"removeGaugeFactory","nodeType":"FunctionDefinition","parameters":{"id":9070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9069,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":9092,"src":"3471:30:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":9068,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"3471:22:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"3470:32:69"},"returnParameters":{"id":9073,"nodeType":"ParameterList","parameters":[],"src":"3525:0:69"},"scope":9268,"src":"3443:238:69","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9104,"nodeType":"Block","src":"3896:48:69","statements":[{"expression":{"baseExpression":{"id":9100,"name":"_validFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"3913:15:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_ILiquidityGaugeFactory_$941_$_t_bool_$","typeString":"mapping(contract ILiquidityGaugeFactory => bool)"}},"id":9102,"indexExpression":{"id":9101,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9095,"src":"3929:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3913:24:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9099,"id":9103,"nodeType":"Return","src":"3906:31:69"}]},"documentation":{"id":9093,"nodeType":"StructuredDocumentation","src":"3687:116:69","text":" @notice Returns true if the given child chain gauge factory is in the allowlist; false otherwise."},"functionSelector":"6c71e920","id":9105,"implemented":true,"kind":"function","modifiers":[],"name":"isValidGaugeFactory","nodeType":"FunctionDefinition","parameters":{"id":9096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9095,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":9105,"src":"3837:30:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":9094,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"3837:22:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"3836:32:69"},"returnParameters":{"id":9099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9098,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9105,"src":"3890:4:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9097,"name":"bool","nodeType":"ElementaryTypeName","src":"3890:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3889:6:69"},"scope":9268,"src":"3808:136:69","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[7750],"body":{"id":9127,"nodeType":"Block","src":"4073:98:69","statements":[{"expression":{"id":9120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9115,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9113,"src":"4083:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9117,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9107,"src":"4111:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9118,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9109,"src":"4118:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9116,"name":"_updateGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9246,"src":"4098:12:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":9119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4098:25:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4083:40:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9121,"nodeType":"ExpressionStatement","src":"4083:40:69"},{"expression":{"arguments":[{"id":9123,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9109,"src":"4145:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9124,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9113,"src":"4151:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9122,"name":"_pseudoMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9267,"src":"4133:11:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4133:31:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9126,"nodeType":"ExpressionStatement","src":"4133:31:69"}]},"id":9128,"implemented":true,"kind":"function","modifiers":[],"name":"_mintFor","nodeType":"FunctionDefinition","overrides":{"id":9111,"nodeType":"OverrideSpecifier","overrides":[],"src":"4033:8:69"},"parameters":{"id":9110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9107,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":9128,"src":"3995:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9106,"name":"address","nodeType":"ElementaryTypeName","src":"3995:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9109,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9128,"src":"4010:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9108,"name":"address","nodeType":"ElementaryTypeName","src":"4010:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3994:29:69"},"returnParameters":{"id":9114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9113,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":9128,"src":"4051:20:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9112,"name":"uint256","nodeType":"ElementaryTypeName","src":"4051:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4050:22:69"},"scope":9268,"src":"3977:194:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[7760],"body":{"id":9173,"nodeType":"Block","src":"4289:221:69","statements":[{"assignments":[9140],"declarations":[{"constant":false,"id":9140,"mutability":"mutable","name":"length","nodeType":"VariableDeclaration","scope":9173,"src":"4299:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9139,"name":"uint256","nodeType":"ElementaryTypeName","src":"4299:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9143,"initialValue":{"expression":{"id":9141,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9131,"src":"4316:6:69","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":9142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4316:13:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4299:30:69"},{"body":{"id":9166,"nodeType":"Block","src":"4376:87:69","statements":[{"expression":{"id":9164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9154,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"4390:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"baseExpression":{"id":9158,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9131,"src":"4435:6:69","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":9160,"indexExpression":{"id":9159,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9145,"src":"4442:1:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4435:9:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9161,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9133,"src":"4446:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9157,"name":"_updateGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9246,"src":"4422:12:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":9162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4422:29:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9155,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"4405:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7372,"src":"4405:16:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4405:47:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4390:62:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9165,"nodeType":"ExpressionStatement","src":"4390:62:69"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9148,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9145,"src":"4359:1:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9149,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9140,"src":"4363:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4359:10:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9167,"initializationExpression":{"assignments":[9145],"declarations":[{"constant":false,"id":9145,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9167,"src":"4344:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9144,"name":"uint256","nodeType":"ElementaryTypeName","src":"4344:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9147,"initialValue":{"hexValue":"30","id":9146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4356:1:69","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4344:13:69"},"loopExpression":{"expression":{"id":9152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4371:3:69","subExpression":{"id":9151,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9145,"src":"4373:1:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9153,"nodeType":"ExpressionStatement","src":"4371:3:69"},"nodeType":"ForStatement","src":"4339:124:69"},{"expression":{"arguments":[{"id":9169,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9133,"src":"4484:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9170,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"4490:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9168,"name":"_pseudoMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9267,"src":"4472:11:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4472:31:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9172,"nodeType":"ExpressionStatement","src":"4472:31:69"}]},"id":9174,"implemented":true,"kind":"function","modifiers":[],"name":"_mintForMany","nodeType":"FunctionDefinition","overrides":{"id":9135,"nodeType":"OverrideSpecifier","overrides":[],"src":"4249:8:69"},"parameters":{"id":9134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9131,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":9174,"src":"4199:25:69","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9129,"name":"address","nodeType":"ElementaryTypeName","src":"4199:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9130,"nodeType":"ArrayTypeName","src":"4199:9:69","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":9133,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9174,"src":"4226:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9132,"name":"address","nodeType":"ElementaryTypeName","src":"4226:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4198:41:69"},"returnParameters":{"id":9138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9137,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":9174,"src":"4267:20:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9136,"name":"uint256","nodeType":"ElementaryTypeName","src":"4267:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4266:22:69"},"scope":9268,"src":"4177:333:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9245,"nodeType":"Block","src":"5161:832:69","statements":[{"assignments":[9185],"declarations":[{"constant":false,"id":9185,"mutability":"mutable","name":"ccGauge","nodeType":"VariableDeclaration","scope":9245,"src":"5483:24:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"},"typeName":{"id":9184,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"5483:16:69","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"visibility":"internal"}],"id":9189,"initialValue":{"arguments":[{"id":9187,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"5527:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9186,"name":"IChildChainGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"5510:16:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChildChainGauge_$364_$","typeString":"type(contract IChildChainGauge)"}},"id":9188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5510:23:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"nodeType":"VariableDeclarationStatement","src":"5483:50:69"},{"assignments":[9191],"declarations":[{"constant":false,"id":9191,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":9245,"src":"5543:30:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":9190,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"5543:22:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"id":9195,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9192,"name":"ccGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9185,"src":"5576:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":9193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"factory","nodeType":"MemberAccess","referencedDeclaration":363,"src":"5576:15:69","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"function () view external returns (contract ILiquidityGaugeFactory)"}},"id":9194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5576:17:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"VariableDeclarationStatement","src":"5543:50:69"},{"expression":{"arguments":[{"arguments":[{"id":9198,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9191,"src":"5631:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}],"id":9197,"name":"isValidGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9105,"src":"5611:19:69","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ILiquidityGaugeFactory_$941_$returns$_t_bool_$","typeString":"function (contract ILiquidityGaugeFactory) view returns (bool)"}},"id":9199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5611:28:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e56414c49445f47415547455f464143544f5259","id":9200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5641:23:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_07bbd958e90df01ec1c65e98f624ae2f0fdc1d67c7d103281f1b9c914b079bc6","typeString":"literal_string \"INVALID_GAUGE_FACTORY\""},"value":"INVALID_GAUGE_FACTORY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_07bbd958e90df01ec1c65e98f624ae2f0fdc1d67c7d103281f1b9c914b079bc6","typeString":"literal_string \"INVALID_GAUGE_FACTORY\""}],"id":9196,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5603:7:69","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5603:62:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9202,"nodeType":"ExpressionStatement","src":"5603:62:69"},{"expression":{"arguments":[{"arguments":[{"id":9206,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"5710:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9204,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9191,"src":"5683:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":9205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isGaugeFromFactory","nodeType":"MemberAccess","referencedDeclaration":940,"src":"5683:26:69","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":9207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5683:33:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e56414c49445f4741554745","id":9208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5718:15:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_cd305b91aba4ac32ddc3d4f875685119e6dab56c1f4c65c4f95ee917efc6044c","typeString":"literal_string \"INVALID_GAUGE\""},"value":"INVALID_GAUGE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cd305b91aba4ac32ddc3d4f875685119e6dab56c1f4c65c4f95ee917efc6044c","typeString":"literal_string \"INVALID_GAUGE\""}],"id":9203,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5675:7:69","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5675:59:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9210,"nodeType":"ExpressionStatement","src":"5675:59:69"},{"expression":{"arguments":[{"id":9214,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9179,"src":"5769:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9211,"name":"ccGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9185,"src":"5745:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":9213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_checkpoint","nodeType":"MemberAccess","referencedDeclaration":357,"src":"5745:23:69","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) external returns (bool)"}},"id":9215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5745:29:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9216,"nodeType":"ExpressionStatement","src":"5745:29:69"},{"assignments":[9218],"declarations":[{"constant":false,"id":9218,"mutability":"mutable","name":"totalMint","nodeType":"VariableDeclaration","scope":9245,"src":"5784:17:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9217,"name":"uint256","nodeType":"ElementaryTypeName","src":"5784:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9223,"initialValue":{"arguments":[{"id":9221,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9179,"src":"5831:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9219,"name":"ccGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9185,"src":"5804:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":9220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"integrate_fraction","nodeType":"MemberAccess","referencedDeclaration":349,"src":"5804:26:69","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":9222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5804:32:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5784:52:69"},{"expression":{"id":9232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9224,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9182,"src":"5846:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":9228,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9179,"src":"5882:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9229,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"5888:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9227,"name":"minted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7604,"src":"5875:6:69","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":9230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5875:19:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9225,"name":"totalMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9218,"src":"5861:9:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7390,"src":"5861:13:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5861:34:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5846:49:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9233,"nodeType":"ExpressionStatement","src":"5846:49:69"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9234,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9182,"src":"5910:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5925:1:69","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5910:16:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9244,"nodeType":"IfStatement","src":"5906:81:69","trueBody":{"id":9243,"nodeType":"Block","src":"5928:59:69","statements":[{"expression":{"arguments":[{"id":9238,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9179,"src":"5953:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9239,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"5959:5:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9240,"name":"totalMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9218,"src":"5966:9:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9237,"name":"_setMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7741,"src":"5942:10:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5942:34:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9242,"nodeType":"ExpressionStatement","src":"5942:34:69"}]}}]},"documentation":{"id":9175,"nodeType":"StructuredDocumentation","src":"4516:549:69","text":" @dev Checkpoints given gauge and updates the internal accounting with the total tokens that should be transfered\n to the user since the start.\n @param gauge Gauge to checkpoint and query for total tokens to be transferred.\n @param user User to query in the given gauge.\n @return tokensToMint Amount of tokens to be transferred to the user, calculated as the difference between the\n total amount of tokens as indicated by the gauge and the tokens that have already been transferred to the user."},"id":9246,"implemented":true,"kind":"function","modifiers":[],"name":"_updateGauge","nodeType":"FunctionDefinition","parameters":{"id":9180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9177,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":9246,"src":"5092:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9176,"name":"address","nodeType":"ElementaryTypeName","src":"5092:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9179,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9246,"src":"5107:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9178,"name":"address","nodeType":"ElementaryTypeName","src":"5107:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5091:29:69"},"returnParameters":{"id":9183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9182,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":9246,"src":"5139:20:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9181,"name":"uint256","nodeType":"ElementaryTypeName","src":"5139:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5138:22:69"},"scope":9268,"src":"5070:923:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9266,"nodeType":"Block","src":"6151:114:69","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9254,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9251,"src":"6165:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6180:1:69","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6165:16:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9265,"nodeType":"IfStatement","src":"6161:98:69","trueBody":{"id":9264,"nodeType":"Block","src":"6183:76:69","statements":[{"expression":{"arguments":[{"id":9260,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9249,"src":"6229:4:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9261,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9251,"src":"6235:12:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9257,"name":"getBalancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7490,"src":"6197:16:69","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IERC20_$2447_$","typeString":"function () view returns (contract IERC20)"}},"id":9258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6197:18:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":9259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7276,"src":"6197:31:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":9262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6197:51:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9263,"nodeType":"ExpressionStatement","src":"6197:51:69"}]}}]},"documentation":{"id":9247,"nodeType":"StructuredDocumentation","src":"5999:81:69","text":" @dev Transfers tokens to user if the given amount is not zero."},"id":9267,"implemented":true,"kind":"function","modifiers":[],"name":"_pseudoMint","nodeType":"FunctionDefinition","parameters":{"id":9252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9249,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9267,"src":"6106:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9248,"name":"address","nodeType":"ElementaryTypeName","src":"6106:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9251,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":9267,"src":"6120:20:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9250,"name":"uint256","nodeType":"ElementaryTypeName","src":"6120:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6105:36:69"},"returnParameters":{"id":9253,"nodeType":"ParameterList","parameters":[],"src":"6151:0:69"},"scope":9268,"src":"6085:180:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":9269,"src":"2123:4144:69"}],"src":"688:5580:69"},"id":69},"contracts/L2LayerZeroBridgeForwarder.sol":{"ast":{"absolutePath":"contracts/L2LayerZeroBridgeForwarder.sol","exportedSymbols":{"L2LayerZeroBridgeForwarder":[9359]},"id":9360,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9270,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:70"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":9271,"nodeType":"ImportDirective","scope":9360,"sourceUnit":3052,"src":"713:65:70","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol","id":9272,"nodeType":"ImportDirective","scope":9360,"sourceUnit":855,"src":"779:92:70","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":9273,"nodeType":"ImportDirective","scope":9360,"sourceUnit":3698,"src":"873:88:70","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9275,"name":"IL2LayerZeroDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":854,"src":"1294:22:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"id":9276,"nodeType":"InheritanceSpecifier","src":"1294:22:70"},{"baseName":{"id":9277,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1318:23:70","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":9278,"nodeType":"InheritanceSpecifier","src":"1318:23:70"}],"contractDependencies":[854,2259,3128,3697],"contractKind":"contract","documentation":{"id":9274,"nodeType":"StructuredDocumentation","src":"963:291:70","text":" @notice Forwards calls from LayerZero's system to a custom hook whenever a veBAL balance is updated for a given user\n in a L2 chain.\n @dev The delegation contract can be set so that e.g. Child Chain Gauges are updated automatically whenever there is\n a veBAL balance update."},"fullyImplemented":true,"id":9359,"linearizedBaseContracts":[9359,3697,3128,2259,854],"name":"L2LayerZeroBridgeForwarder","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":9282,"name":"DelegationImplementationUpdated","nodeType":"EventDefinition","parameters":{"id":9281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9280,"indexed":true,"mutability":"mutable","name":"newImplementation","nodeType":"VariableDeclaration","scope":9282,"src":"1386:48:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"},"typeName":{"id":9279,"name":"IL2LayerZeroDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":854,"src":"1386:22:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"visibility":"internal"}],"src":"1385:50:70"},"src":"1348:88:70"},{"constant":false,"id":9284,"mutability":"mutable","name":"_delegation","nodeType":"VariableDeclaration","scope":9359,"src":"1442:42:70","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"},"typeName":{"id":9283,"name":"IL2LayerZeroDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":854,"src":"1442:22:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"visibility":"private"},{"body":{"id":9292,"nodeType":"Block","src":"1548:64:70","statements":[]},"id":9293,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9289,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9286,"src":"1541:5:70","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":9290,"modifierName":{"id":9288,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1517:23:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1517:30:70"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9286,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9293,"src":"1503:12:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":9285,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1503:6:70","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1502:14:70"},"returnParameters":{"id":9291,"nodeType":"ParameterList","parameters":[],"src":"1548:0:70"},"scope":9359,"src":"1491:121:70","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9301,"nodeType":"Block","src":"1791:35:70","statements":[{"expression":{"id":9299,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9284,"src":"1808:11:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"functionReturnParameters":9298,"id":9300,"nodeType":"Return","src":"1801:18:70"}]},"documentation":{"id":9294,"nodeType":"StructuredDocumentation","src":"1618:82:70","text":" @notice Returns the current delegation implementation contract."},"functionSelector":"63408a90","id":9302,"implemented":true,"kind":"function","modifiers":[],"name":"getDelegationImplementation","nodeType":"FunctionDefinition","parameters":{"id":9295,"nodeType":"ParameterList","parameters":[],"src":"1741:2:70"},"returnParameters":{"id":9298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9297,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9302,"src":"1767:22:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"},"typeName":{"id":9296,"name":"IL2LayerZeroDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":854,"src":"1767:22:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"visibility":"internal"}],"src":"1766:24:70"},"scope":9359,"src":"1705:121:70","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[849],"body":{"id":9322,"nodeType":"Block","src":"1986:119:70","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"},"id":9313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9309,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9284,"src":"2000:11:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":9311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2038:1:70","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9310,"name":"IL2LayerZeroDelegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"2015:22:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IL2LayerZeroDelegation_$854_$","typeString":"type(contract IL2LayerZeroDelegation)"}},"id":9312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2015:25:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"src":"2000:40:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9321,"nodeType":"IfStatement","src":"1996:103:70","trueBody":{"id":9320,"nodeType":"Block","src":"2042:57:70","statements":[{"expression":{"arguments":[{"id":9317,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9305,"src":"2083:4:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9314,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9284,"src":"2056:11:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"id":9316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onVeBalBridged","nodeType":"MemberAccess","referencedDeclaration":849,"src":"2056:26:70","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":9318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2056:32:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9319,"nodeType":"ExpressionStatement","src":"2056:32:70"}]}}]},"documentation":{"id":9303,"nodeType":"StructuredDocumentation","src":"1832:93:70","text":" @notice Hook to be called whenever the veBAL balance of a user is updated."},"functionSelector":"df130bfe","id":9323,"implemented":true,"kind":"function","modifiers":[],"name":"onVeBalBridged","nodeType":"FunctionDefinition","overrides":{"id":9307,"nodeType":"OverrideSpecifier","overrides":[],"src":"1977:8:70"},"parameters":{"id":9306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9305,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9323,"src":"1954:12:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9304,"name":"address","nodeType":"ElementaryTypeName","src":"1954:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1953:14:70"},"returnParameters":{"id":9308,"nodeType":"ParameterList","parameters":[],"src":"1986:0:70"},"scope":9359,"src":"1930:175:70","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[853],"body":{"id":9340,"nodeType":"Block","src":"2247:120:70","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"},"id":9332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9328,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9284,"src":"2261:11:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":9330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2299:1:70","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9329,"name":"IL2LayerZeroDelegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"2276:22:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IL2LayerZeroDelegation_$854_$","typeString":"type(contract IL2LayerZeroDelegation)"}},"id":9331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2276:25:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"src":"2261:40:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9339,"nodeType":"IfStatement","src":"2257:104:70","trueBody":{"id":9338,"nodeType":"Block","src":"2303:58:70","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9333,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9284,"src":"2317:11:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"id":9335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onVeBalSupplyUpdate","nodeType":"MemberAccess","referencedDeclaration":853,"src":"2317:31:70","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":9336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2317:33:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9337,"nodeType":"ExpressionStatement","src":"2317:33:70"}]}}]},"documentation":{"id":9324,"nodeType":"StructuredDocumentation","src":"2111:82:70","text":" @notice Hook to be called whenever the veBAL supply is updated."},"functionSelector":"96345fb5","id":9341,"implemented":true,"kind":"function","modifiers":[],"name":"onVeBalSupplyUpdate","nodeType":"FunctionDefinition","overrides":{"id":9326,"nodeType":"OverrideSpecifier","overrides":[],"src":"2238:8:70"},"parameters":{"id":9325,"nodeType":"ParameterList","parameters":[],"src":"2226:2:70"},"returnParameters":{"id":9327,"nodeType":"ParameterList","parameters":[],"src":"2247:0:70"},"scope":9359,"src":"2198:169:70","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9357,"nodeType":"Block","src":"2543:100:70","statements":[{"expression":{"id":9351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9349,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9284,"src":"2553:11:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9350,"name":"delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9344,"src":"2567:10:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"src":"2553:24:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"id":9352,"nodeType":"ExpressionStatement","src":"2553:24:70"},{"eventCall":{"arguments":[{"id":9354,"name":"delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9344,"src":"2625:10:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}],"id":9353,"name":"DelegationImplementationUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9282,"src":"2593:31:70","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IL2LayerZeroDelegation_$854_$returns$__$","typeString":"function (contract IL2LayerZeroDelegation)"}},"id":9355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2593:43:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9356,"nodeType":"EmitStatement","src":"2588:48:70"}]},"documentation":{"id":9342,"nodeType":"StructuredDocumentation","src":"2373:85:70","text":" @notice Sets a new delegation implementation for `onVeBalBridged`."},"functionSelector":"e6b3e704","id":9358,"implemented":true,"kind":"function","modifiers":[{"id":9347,"modifierName":{"id":9346,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"2530:12:70","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2530:12:70"}],"name":"setDelegation","nodeType":"FunctionDefinition","parameters":{"id":9345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9344,"mutability":"mutable","name":"delegation","nodeType":"VariableDeclaration","scope":9358,"src":"2486:33:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"},"typeName":{"id":9343,"name":"IL2LayerZeroDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":854,"src":"2486:22:70","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"visibility":"internal"}],"src":"2485:35:70"},"returnParameters":{"id":9348,"nodeType":"ParameterList","parameters":[],"src":"2543:0:70"},"scope":9359,"src":"2463:180:70","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9360,"src":"1255:1390:70"}],"src":"688:1958:70"},"id":70},"contracts/MainnetBalancerMinter.sol":{"ast":{"absolutePath":"contracts/MainnetBalancerMinter.sol","exportedSymbols":{"MainnetBalancerMinter":[9562]},"id":9563,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9361,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:71"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","id":9362,"nodeType":"ImportDirective","scope":9563,"sourceUnit":328,"src":"713:89:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","id":9363,"nodeType":"ImportDirective","scope":9563,"sourceUnit":822,"src":"803:86:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","id":9364,"nodeType":"ImportDirective","scope":9563,"sourceUnit":929,"src":"890:85:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol","id":9365,"nodeType":"ImportDirective","scope":9563,"sourceUnit":952,"src":"976:92:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","id":9366,"nodeType":"ImportDirective","scope":9563,"sourceUnit":7420,"src":"1069:78:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/BalancerMinter.sol","file":"./BalancerMinter.sol","id":9367,"nodeType":"ImportDirective","scope":9563,"sourceUnit":7867,"src":"1149:30:71","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9368,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1215:22:71","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"id":9369,"nodeType":"InheritanceSpecifier","src":"1215:22:71"},{"baseName":{"id":9370,"name":"BalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":7866,"src":"1239:14:71","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerMinter_$7866","typeString":"contract BalancerMinter"}},"id":9371,"nodeType":"InheritanceSpecifier","src":"1239:14:71"}],"contractDependencies":[197,871,951,2311,3308,6021,7187,7866],"contractKind":"contract","fullyImplemented":true,"id":9562,"linearizedBaseContracts":[9562,7866,3308,6021,2311,7187,951,871,197],"name":"MainnetBalancerMinter","nodeType":"ContractDefinition","nodes":[{"id":9374,"libraryName":{"id":9372,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7419,"src":"1266:8:71","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7419","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"1260:27:71","typeName":{"id":9373,"name":"uint256","nodeType":"ElementaryTypeName","src":"1279:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":9376,"mutability":"immutable","name":"_tokenAdmin","nodeType":"VariableDeclaration","scope":9562,"src":"1293:49:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"},"typeName":{"id":9375,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":327,"src":"1293:19:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"visibility":"private"},{"constant":false,"id":9378,"mutability":"immutable","name":"_gaugeController","nodeType":"VariableDeclaration","scope":9562,"src":"1348:51:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":9377,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1348:16:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"private"},{"body":{"id":9400,"nodeType":"Block","src":"1566:85:71","statements":[{"expression":{"id":9394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9392,"name":"_tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"1576:11:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9393,"name":"tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9380,"src":"1590:10:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"src":"1576:24:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":9395,"nodeType":"ExpressionStatement","src":"1576:24:71"},{"expression":{"id":9398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9396,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9378,"src":"1610:16:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9397,"name":"gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9382,"src":"1629:15:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"src":"1610:34:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":9399,"nodeType":"ExpressionStatement","src":"1610:34:71"}]},"id":9401,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9385,"name":"tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9380,"src":"1507:10:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":9386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getBalancerToken","nodeType":"MemberAccess","referencedDeclaration":306,"src":"1507:27:71","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IBalancerToken_$274_$","typeString":"function () view external returns (contract IBalancerToken)"}},"id":9387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1507:29:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},{"hexValue":"42616c616e636572204d696e746572","id":9388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1538:17:71","typeDescriptions":{"typeIdentifier":"t_stringliteral_63c05625ac5a06c4bd34bf8f76d2a8cb0f02c3d329e03eae3da16e084ba60ddc","typeString":"literal_string \"Balancer Minter\""},"value":"Balancer Minter"},{"hexValue":"31","id":9389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1557:3:71","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":9390,"modifierName":{"id":9384,"name":"BalancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7866,"src":"1492:14:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalancerMinter_$7866_$","typeString":"type(contract BalancerMinter)"}},"nodeType":"ModifierInvocation","src":"1492:69:71"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9380,"mutability":"mutable","name":"tokenAdmin","nodeType":"VariableDeclaration","scope":9401,"src":"1418:30:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"},"typeName":{"id":9379,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":327,"src":"1418:19:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"visibility":"internal"},{"constant":false,"id":9382,"mutability":"mutable","name":"gaugeController","nodeType":"VariableDeclaration","scope":9401,"src":"1450:32:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":9381,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1450:16:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"internal"}],"src":"1417:66:71"},"returnParameters":{"id":9391,"nodeType":"ParameterList","parameters":[],"src":"1566:0:71"},"scope":9562,"src":"1406:245:71","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[864],"body":{"id":9410,"nodeType":"Block","src":"1774:35:71","statements":[{"expression":{"id":9408,"name":"_tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"1791:11:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"functionReturnParameters":9407,"id":9409,"nodeType":"Return","src":"1784:18:71"}]},"documentation":{"id":9402,"nodeType":"StructuredDocumentation","src":"1657:26:71","text":"@inheritdoc ILMGetters"},"functionSelector":"e6dec36f","id":9411,"implemented":true,"kind":"function","modifiers":[],"name":"getBalancerTokenAdmin","nodeType":"FunctionDefinition","overrides":{"id":9404,"nodeType":"OverrideSpecifier","overrides":[],"src":"1735:8:71"},"parameters":{"id":9403,"nodeType":"ParameterList","parameters":[],"src":"1718:2:71"},"returnParameters":{"id":9407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9406,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9411,"src":"1753:19:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"},"typeName":{"id":9405,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":327,"src":"1753:19:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"visibility":"internal"}],"src":"1752:21:71"},"scope":9562,"src":"1688:121:71","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[870],"body":{"id":9420,"nodeType":"Block","src":"1926:40:71","statements":[{"expression":{"id":9418,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9378,"src":"1943:16:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"functionReturnParameters":9417,"id":9419,"nodeType":"Return","src":"1936:23:71"}]},"documentation":{"id":9412,"nodeType":"StructuredDocumentation","src":"1815:26:71","text":"@inheritdoc ILMGetters"},"functionSelector":"58de9ade","id":9421,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeController","nodeType":"FunctionDefinition","overrides":{"id":9414,"nodeType":"OverrideSpecifier","overrides":[],"src":"1890:8:71"},"parameters":{"id":9413,"nodeType":"ParameterList","parameters":[],"src":"1873:2:71"},"returnParameters":{"id":9417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9416,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9421,"src":"1908:16:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":9415,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1908:16:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"internal"}],"src":"1907:18:71"},"scope":9562,"src":"1846:120:71","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[7750],"body":{"id":9450,"nodeType":"Block","src":"2095:149:71","statements":[{"expression":{"id":9436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9431,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9429,"src":"2105:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9433,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9423,"src":"2133:5:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9434,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9425,"src":"2140:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9432,"name":"_updateGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9561,"src":"2120:12:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":9435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2120:25:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2105:40:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9437,"nodeType":"ExpressionStatement","src":"2105:40:71"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9438,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9429,"src":"2159:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2174:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2159:16:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9449,"nodeType":"IfStatement","src":"2155:83:71","trueBody":{"id":9448,"nodeType":"Block","src":"2177:61:71","statements":[{"expression":{"arguments":[{"id":9444,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9425,"src":"2208:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9445,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9429,"src":"2214:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9441,"name":"_tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"2191:11:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":9443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":326,"src":"2191:16:71","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":9446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2191:36:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9447,"nodeType":"ExpressionStatement","src":"2191:36:71"}]}}]},"id":9451,"implemented":true,"kind":"function","modifiers":[],"name":"_mintFor","nodeType":"FunctionDefinition","overrides":{"id":9427,"nodeType":"OverrideSpecifier","overrides":[],"src":"2055:8:71"},"parameters":{"id":9426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9423,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":9451,"src":"2017:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9422,"name":"address","nodeType":"ElementaryTypeName","src":"2017:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9425,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9451,"src":"2032:12:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9424,"name":"address","nodeType":"ElementaryTypeName","src":"2032:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2016:29:71"},"returnParameters":{"id":9430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9429,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":9451,"src":"2073:20:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9428,"name":"uint256","nodeType":"ElementaryTypeName","src":"2073:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2072:22:71"},"scope":9562,"src":"1999:245:71","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[7760],"body":{"id":9503,"nodeType":"Block","src":"2362:273:71","statements":[{"assignments":[9463],"declarations":[{"constant":false,"id":9463,"mutability":"mutable","name":"length","nodeType":"VariableDeclaration","scope":9503,"src":"2372:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9462,"name":"uint256","nodeType":"ElementaryTypeName","src":"2372:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9466,"initialValue":{"expression":{"id":9464,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9454,"src":"2389:6:71","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":9465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2389:13:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2372:30:71"},{"body":{"id":9489,"nodeType":"Block","src":"2449:87:71","statements":[{"expression":{"id":9487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9477,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9460,"src":"2463:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"baseExpression":{"id":9481,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9454,"src":"2508:6:71","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":9483,"indexExpression":{"id":9482,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9468,"src":"2515:1:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2508:9:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9484,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9456,"src":"2519:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9480,"name":"_updateGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9561,"src":"2495:12:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) returns (uint256)"}},"id":9485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2495:29:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9478,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9460,"src":"2478:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7372,"src":"2478:16:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2478:47:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2463:62:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9488,"nodeType":"ExpressionStatement","src":"2463:62:71"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9471,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9468,"src":"2432:1:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9472,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9463,"src":"2436:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2432:10:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9490,"initializationExpression":{"assignments":[9468],"declarations":[{"constant":false,"id":9468,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9490,"src":"2417:9:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9467,"name":"uint256","nodeType":"ElementaryTypeName","src":"2417:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9470,"initialValue":{"hexValue":"30","id":9469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2429:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2417:13:71"},"loopExpression":{"expression":{"id":9475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2444:3:71","subExpression":{"id":9474,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9468,"src":"2446:1:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9476,"nodeType":"ExpressionStatement","src":"2444:3:71"},"nodeType":"ForStatement","src":"2412:124:71"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9491,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9460,"src":"2550:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2565:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2550:16:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9502,"nodeType":"IfStatement","src":"2546:83:71","trueBody":{"id":9501,"nodeType":"Block","src":"2568:61:71","statements":[{"expression":{"arguments":[{"id":9497,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9456,"src":"2599:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9498,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9460,"src":"2605:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9494,"name":"_tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"2582:11:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":9496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":326,"src":"2582:16:71","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":9499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2582:36:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9500,"nodeType":"ExpressionStatement","src":"2582:36:71"}]}}]},"id":9504,"implemented":true,"kind":"function","modifiers":[],"name":"_mintForMany","nodeType":"FunctionDefinition","overrides":{"id":9458,"nodeType":"OverrideSpecifier","overrides":[],"src":"2322:8:71"},"parameters":{"id":9457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9454,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":9504,"src":"2272:25:71","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9452,"name":"address","nodeType":"ElementaryTypeName","src":"2272:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9453,"nodeType":"ArrayTypeName","src":"2272:9:71","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":9456,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9504,"src":"2299:12:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9455,"name":"address","nodeType":"ElementaryTypeName","src":"2299:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2271:41:71"},"returnParameters":{"id":9461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9460,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":9504,"src":"2340:20:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9459,"name":"uint256","nodeType":"ElementaryTypeName","src":"2340:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2339:22:71"},"scope":9562,"src":"2250:385:71","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9560,"nodeType":"Block","src":"2732:386:71","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":9519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9516,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9506,"src":"2779:5:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9514,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9378,"src":"2750:16:71","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":9515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gauge_types","nodeType":"MemberAccess","referencedDeclaration":801,"src":"2750:28:71","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_int128_$","typeString":"function (address) view external returns (int128)"}},"id":9517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2750:35:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":9518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2789:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2750:40:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520646f6573206e6f74206578697374206f6e20436f6e74726f6c6c6572","id":9520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2792:36:71","typeDescriptions":{"typeIdentifier":"t_stringliteral_e44889d5b2f7492cbae17d1caabb9cae7b136932b333dfd4635f726a9e80f227","typeString":"literal_string \"Gauge does not exist on Controller\""},"value":"Gauge does not exist on Controller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e44889d5b2f7492cbae17d1caabb9cae7b136932b333dfd4635f726a9e80f227","typeString":"literal_string \"Gauge does not exist on Controller\""}],"id":9513,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2742:7:71","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2742:87:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9522,"nodeType":"ExpressionStatement","src":"2742:87:71"},{"expression":{"arguments":[{"id":9527,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9508,"src":"2879:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":9524,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9506,"src":"2856:5:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9523,"name":"ILiquidityGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"2840:15:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILiquidityGauge_$928_$","typeString":"type(contract ILiquidityGauge)"}},"id":9525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2840:22:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"id":9526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_checkpoint","nodeType":"MemberAccess","referencedDeclaration":893,"src":"2840:38:71","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) external returns (bool)"}},"id":9528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2840:44:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9529,"nodeType":"ExpressionStatement","src":"2840:44:71"},{"assignments":[9531],"declarations":[{"constant":false,"id":9531,"mutability":"mutable","name":"totalMint","nodeType":"VariableDeclaration","scope":9560,"src":"2894:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9530,"name":"uint256","nodeType":"ElementaryTypeName","src":"2894:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9538,"initialValue":{"arguments":[{"id":9536,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9508,"src":"2956:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":9533,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9506,"src":"2930:5:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9532,"name":"ILiquidityGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"2914:15:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILiquidityGauge_$928_$","typeString":"type(contract ILiquidityGauge)"}},"id":9534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2914:22:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"id":9535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"integrate_fraction","nodeType":"MemberAccess","referencedDeclaration":885,"src":"2914:41:71","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":9537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2914:47:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2894:67:71"},{"expression":{"id":9547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9539,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9511,"src":"2971:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":9543,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9508,"src":"3007:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9544,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9506,"src":"3013:5:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9542,"name":"minted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7604,"src":"3000:6:71","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":9545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3000:19:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9540,"name":"totalMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9531,"src":"2986:9:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7390,"src":"2986:13:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2986:34:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2971:49:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9548,"nodeType":"ExpressionStatement","src":"2971:49:71"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9549,"name":"tokensToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9511,"src":"3035:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3050:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3035:16:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9559,"nodeType":"IfStatement","src":"3031:81:71","trueBody":{"id":9558,"nodeType":"Block","src":"3053:59:71","statements":[{"expression":{"arguments":[{"id":9553,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9508,"src":"3078:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9554,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9506,"src":"3084:5:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9555,"name":"totalMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9531,"src":"3091:9:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9552,"name":"_setMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7741,"src":"3067:10:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3067:34:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9557,"nodeType":"ExpressionStatement","src":"3067:34:71"}]}}]},"id":9561,"implemented":true,"kind":"function","modifiers":[],"name":"_updateGauge","nodeType":"FunctionDefinition","parameters":{"id":9509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9506,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":9561,"src":"2663:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9505,"name":"address","nodeType":"ElementaryTypeName","src":"2663:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9508,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":9561,"src":"2678:12:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9507,"name":"address","nodeType":"ElementaryTypeName","src":"2678:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2662:29:71"},"returnParameters":{"id":9512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9511,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":9561,"src":"2710:20:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9510,"name":"uint256","nodeType":"ElementaryTypeName","src":"2710:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2709:22:71"},"scope":9562,"src":"2641:477:71","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":9563,"src":"1181:1939:71"}],"src":"688:2433:71"},"id":71},"contracts/NullVotingEscrow.sol":{"ast":{"absolutePath":"contracts/NullVotingEscrow.sol","exportedSymbols":{"NullVotingEscrow":[9653]},"id":9654,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9564,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:72"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":9565,"nodeType":"ImportDirective","scope":9654,"sourceUnit":2448,"src":"713:87:72","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":9566,"nodeType":"ImportDirective","scope":9654,"sourceUnit":2249,"src":"801:90:72","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9568,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1425:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":9569,"nodeType":"InheritanceSpecifier","src":"1425:6:72"}],"contractDependencies":[2447],"contractKind":"contract","documentation":{"id":9567,"nodeType":"StructuredDocumentation","src":"893:502:72","text":" @title Null VotingEscrow\n @notice This contract fulfils the role of a `VotingEscrow` contract\n where no accounts hold a balance for the purposes of gauge boosts.\n @dev This contract is to be used as the fallback `VotingEscrow` on chains other than Ethereum mainnet.\n In the situation where boosts are not properly relayed from Ethereum mainnet to a chain and the veBoost\n implementation is killed, values will be read from here which will have the effect of zeroing out any boosts."},"fullyImplemented":true,"id":9653,"linearizedBaseContracts":[9653,2447],"name":"NullVotingEscrow","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[2378],"body":{"id":9577,"nodeType":"Block","src":"1502:25:72","statements":[{"expression":{"hexValue":"30","id":9575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1519:1:72","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":9574,"id":9576,"nodeType":"Return","src":"1512:8:72"}]},"functionSelector":"18160ddd","id":9578,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":9571,"nodeType":"OverrideSpecifier","overrides":[],"src":"1475:8:72"},"parameters":{"id":9570,"nodeType":"ParameterList","parameters":[],"src":"1458:2:72"},"returnParameters":{"id":9574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9573,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9578,"src":"1493:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9572,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1492:9:72"},"scope":9653,"src":"1438:89:72","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2386],"body":{"id":9588,"nodeType":"Block","src":"1602:25:72","statements":[{"expression":{"hexValue":"30","id":9586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1619:1:72","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":9585,"id":9587,"nodeType":"Return","src":"1612:8:72"}]},"functionSelector":"70a08231","id":9589,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":{"id":9582,"nodeType":"OverrideSpecifier","overrides":[],"src":"1575:8:72"},"parameters":{"id":9581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9580,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9589,"src":"1552:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9579,"name":"address","nodeType":"ElementaryTypeName","src":"1552:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1551:9:72"},"returnParameters":{"id":9585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9584,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9589,"src":"1593:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9583,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1592:9:72"},"scope":9653,"src":"1533:94:72","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2406],"body":{"id":9601,"nodeType":"Block","src":"1711:25:72","statements":[{"expression":{"hexValue":"30","id":9599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1728:1:72","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":9598,"id":9600,"nodeType":"Return","src":"1721:8:72"}]},"functionSelector":"dd62ed3e","id":9602,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","overrides":{"id":9595,"nodeType":"OverrideSpecifier","overrides":[],"src":"1684:8:72"},"parameters":{"id":9594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9591,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9602,"src":"1652:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9590,"name":"address","nodeType":"ElementaryTypeName","src":"1652:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9593,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9602,"src":"1661:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9592,"name":"address","nodeType":"ElementaryTypeName","src":"1661:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1651:18:72"},"returnParameters":{"id":9598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9597,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9602,"src":"1702:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9596,"name":"uint256","nodeType":"ElementaryTypeName","src":"1702:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1701:9:72"},"scope":9653,"src":"1633:103:72","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2416],"body":{"id":9617,"nodeType":"Block","src":"1815:46:72","statements":[{"expression":{"arguments":[{"expression":{"id":9613,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1833:6:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":9614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"1833:20:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9612,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"1825:7:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1825:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9616,"nodeType":"ExpressionStatement","src":"1825:29:72"}]},"functionSelector":"095ea7b3","id":9618,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":9608,"nodeType":"OverrideSpecifier","overrides":[],"src":"1791:8:72"},"parameters":{"id":9607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9604,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9618,"src":"1759:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9603,"name":"address","nodeType":"ElementaryTypeName","src":"1759:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9606,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9618,"src":"1768:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9605,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1758:18:72"},"returnParameters":{"id":9611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9610,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9618,"src":"1809:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9609,"name":"bool","nodeType":"ElementaryTypeName","src":"1809:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1808:6:72"},"scope":9653,"src":"1742:119:72","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2396],"body":{"id":9633,"nodeType":"Block","src":"1941:46:72","statements":[{"expression":{"arguments":[{"expression":{"id":9629,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1959:6:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":9630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"1959:20:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9628,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"1951:7:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1951:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9632,"nodeType":"ExpressionStatement","src":"1951:29:72"}]},"functionSelector":"a9059cbb","id":9634,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":{"id":9624,"nodeType":"OverrideSpecifier","overrides":[],"src":"1917:8:72"},"parameters":{"id":9623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9620,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9634,"src":"1885:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9619,"name":"address","nodeType":"ElementaryTypeName","src":"1885:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9622,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9634,"src":"1894:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9621,"name":"uint256","nodeType":"ElementaryTypeName","src":"1894:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1884:18:72"},"returnParameters":{"id":9627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9626,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9634,"src":"1935:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9625,"name":"bool","nodeType":"ElementaryTypeName","src":"1935:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1934:6:72"},"scope":9653,"src":"1867:120:72","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2428],"body":{"id":9651,"nodeType":"Block","src":"2110:46:72","statements":[{"expression":{"arguments":[{"expression":{"id":9647,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2128:6:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":9648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"2128:20:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9646,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"2120:7:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2120:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9650,"nodeType":"ExpressionStatement","src":"2120:29:72"}]},"functionSelector":"23b872dd","id":9652,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":9642,"nodeType":"OverrideSpecifier","overrides":[],"src":"2086:8:72"},"parameters":{"id":9641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9636,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9652,"src":"2024:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9635,"name":"address","nodeType":"ElementaryTypeName","src":"2024:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9638,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9652,"src":"2041:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9637,"name":"address","nodeType":"ElementaryTypeName","src":"2041:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9640,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9652,"src":"2058:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9639,"name":"uint256","nodeType":"ElementaryTypeName","src":"2058:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2014:57:72"},"returnParameters":{"id":9645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9644,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9652,"src":"2104:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9643,"name":"bool","nodeType":"ElementaryTypeName","src":"2104:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2103:6:72"},"scope":9653,"src":"1993:163:72","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":9654,"src":"1396:762:72"}],"src":"688:1471:72"},"id":72},"contracts/OmniVotingEscrowAdaptor.sol":{"ast":{"absolutePath":"contracts/OmniVotingEscrowAdaptor.sol","exportedSymbols":{"OmniVotingEscrowAdaptor":[9868]},"id":9869,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9655,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:73"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol","id":9656,"nodeType":"ImportDirective","scope":9869,"sourceUnit":982,"src":"713:87:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol","id":9657,"nodeType":"ImportDirective","scope":9869,"sourceUnit":1006,"src":"801:94:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol","id":9658,"nodeType":"ImportDirective","scope":9869,"sourceUnit":1075,"src":"896:102:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":9659,"nodeType":"ImportDirective","scope":9869,"sourceUnit":3698,"src":"1000:88:73","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9661,"name":"IOmniVotingEscrowAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":1005,"src":"1422:24:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":9662,"nodeType":"InheritanceSpecifier","src":"1422:24:73"},{"baseName":{"id":9663,"name":"IOmniVotingEscrowAdaptorSettings","nodeType":"UserDefinedTypeName","referencedDeclaration":1074,"src":"1452:32:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptorSettings_$1074","typeString":"contract IOmniVotingEscrowAdaptorSettings"}},"id":9664,"nodeType":"InheritanceSpecifier","src":"1452:32:73"},{"baseName":{"id":9665,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1490:23:73","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":9666,"nodeType":"InheritanceSpecifier","src":"1490:23:73"}],"contractDependencies":[1005,1074,2259,3128,3697],"contractKind":"contract","documentation":{"id":9660,"nodeType":"StructuredDocumentation","src":"1090:291:73","text":" @notice Adaptor contract between `VotingEscrowRemapper` and `OmniVotingEscrow`.\n @dev Provides the remapper a stable interface to forward requests to the omni voting escrow, while allowing to\n configure optional parameters and even swap the target omni voting escrow contract."},"fullyImplemented":true,"id":9868,"linearizedBaseContracts":[9868,3697,3128,2259,1074,1005],"name":"OmniVotingEscrowAdaptor","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":9668,"mutability":"mutable","name":"_omniVotingEscrow","nodeType":"VariableDeclaration","scope":9868,"src":"1520:43:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":9667,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"1520:17:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"private"},{"constant":false,"id":9670,"mutability":"mutable","name":"_useZro","nodeType":"VariableDeclaration","scope":9868,"src":"1569:20:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9669,"name":"bool","nodeType":"ElementaryTypeName","src":"1569:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"constant":false,"id":9672,"mutability":"mutable","name":"_adapterParams","nodeType":"VariableDeclaration","scope":9868,"src":"1595:28:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes"},"typeName":{"id":9671,"name":"bytes","nodeType":"ElementaryTypeName","src":"1595:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"private"},{"constant":false,"id":9674,"mutability":"mutable","name":"_zroPaymentAddress","nodeType":"VariableDeclaration","scope":9868,"src":"1629:34:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9673,"name":"address","nodeType":"ElementaryTypeName","src":"1629:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":9682,"nodeType":"Block","src":"1727:64:73","statements":[]},"id":9683,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9679,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9676,"src":"1720:5:73","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":9680,"modifierName":{"id":9678,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1696:23:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1696:30:73"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9676,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9683,"src":"1682:12:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":9675,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1682:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1681:14:73"},"returnParameters":{"id":9681,"nodeType":"ParameterList","parameters":[],"src":"1727:0:73"},"scope":9868,"src":"1670:121:73","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1031],"body":{"id":9692,"nodeType":"Block","src":"1930:41:73","statements":[{"expression":{"id":9690,"name":"_omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9668,"src":"1947:17:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"functionReturnParameters":9689,"id":9691,"nodeType":"Return","src":"1940:24:73"}]},"documentation":{"id":9684,"nodeType":"StructuredDocumentation","src":"1797:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"550f2f7f","id":9693,"implemented":true,"kind":"function","modifiers":[],"name":"getOmniVotingEscrow","nodeType":"FunctionDefinition","overrides":{"id":9686,"nodeType":"OverrideSpecifier","overrides":[],"src":"1893:8:73"},"parameters":{"id":9685,"nodeType":"ParameterList","parameters":[],"src":"1878:2:73"},"returnParameters":{"id":9689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9688,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9693,"src":"1911:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":9687,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"1911:17:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"internal"}],"src":"1910:19:73"},"scope":9868,"src":"1850:121:73","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1037],"body":{"id":9702,"nodeType":"Block","src":"2090:31:73","statements":[{"expression":{"id":9700,"name":"_useZro","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9670,"src":"2107:7:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9699,"id":9701,"nodeType":"Return","src":"2100:14:73"}]},"documentation":{"id":9694,"nodeType":"StructuredDocumentation","src":"1977:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"00986fe0","id":9703,"implemented":true,"kind":"function","modifiers":[],"name":"getUseZero","nodeType":"FunctionDefinition","overrides":{"id":9696,"nodeType":"OverrideSpecifier","overrides":[],"src":"2066:8:73"},"parameters":{"id":9695,"nodeType":"ParameterList","parameters":[],"src":"2049:2:73"},"returnParameters":{"id":9699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9698,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9703,"src":"2084:4:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9697,"name":"bool","nodeType":"ElementaryTypeName","src":"2084:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2083:6:73"},"scope":9868,"src":"2030:91:73","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1043],"body":{"id":9712,"nodeType":"Block","src":"2254:38:73","statements":[{"expression":{"id":9710,"name":"_adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9672,"src":"2271:14:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"functionReturnParameters":9709,"id":9711,"nodeType":"Return","src":"2264:21:73"}]},"documentation":{"id":9704,"nodeType":"StructuredDocumentation","src":"2127:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"4cfde448","id":9713,"implemented":true,"kind":"function","modifiers":[],"name":"getAdapterParams","nodeType":"FunctionDefinition","overrides":{"id":9706,"nodeType":"OverrideSpecifier","overrides":[],"src":"2222:8:73"},"parameters":{"id":9705,"nodeType":"ParameterList","parameters":[],"src":"2205:2:73"},"returnParameters":{"id":9709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9708,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9713,"src":"2240:12:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9707,"name":"bytes","nodeType":"ElementaryTypeName","src":"2240:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2239:14:73"},"scope":9868,"src":"2180:112:73","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1049],"body":{"id":9722,"nodeType":"Block","src":"2425:42:73","statements":[{"expression":{"id":9720,"name":"_zroPaymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9674,"src":"2442:18:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":9719,"id":9721,"nodeType":"Return","src":"2435:25:73"}]},"documentation":{"id":9714,"nodeType":"StructuredDocumentation","src":"2298:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"0943b7b8","id":9723,"implemented":true,"kind":"function","modifiers":[],"name":"getZeroPaymentAddress","nodeType":"FunctionDefinition","overrides":{"id":9716,"nodeType":"OverrideSpecifier","overrides":[],"src":"2398:8:73"},"parameters":{"id":9715,"nodeType":"ParameterList","parameters":[],"src":"2381:2:73"},"returnParameters":{"id":9719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9718,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9723,"src":"2416:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9717,"name":"address","nodeType":"ElementaryTypeName","src":"2416:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2415:9:73"},"scope":9868,"src":"2351:116:73","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[994],"body":{"id":9755,"nodeType":"Block","src":"2674:260:73","statements":[{"assignments":[9735],"declarations":[{"constant":false,"id":9735,"mutability":"mutable","name":"omniVotingEscrow","nodeType":"VariableDeclaration","scope":9755,"src":"2684:34:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":9734,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"2684:17:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"internal"}],"id":9738,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":9736,"name":"getOmniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9693,"src":"2721:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IOmniVotingEscrow_$981_$","typeString":"function () view returns (contract IOmniVotingEscrow)"}},"id":9737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2721:21:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"nodeType":"VariableDeclarationStatement","src":"2684:58:73"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"id":9744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9740,"name":"omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9735,"src":"2760:16:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":9742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2798:1:73","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9741,"name":"IOmniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":981,"src":"2780:17:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOmniVotingEscrow_$981_$","typeString":"type(contract IOmniVotingEscrow)"}},"id":9743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2780:20:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"src":"2760:40:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6d6e6920766f74696e6720657363726f77206e6f7420736574","id":9745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2802:28:73","typeDescriptions":{"typeIdentifier":"t_stringliteral_12fa1b1107549cc58552e2d8648e0204a3bab22e5c93daab05ba3cffbc55b1b6","typeString":"literal_string \"Omni voting escrow not set\""},"value":"Omni voting escrow not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12fa1b1107549cc58552e2d8648e0204a3bab22e5c93daab05ba3cffbc55b1b6","typeString":"literal_string \"Omni voting escrow not set\""}],"id":9739,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2752:7:73","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2752:79:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9747,"nodeType":"ExpressionStatement","src":"2752:79:73"},{"expression":{"arguments":[{"id":9750,"name":"_dstChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9726,"src":"2890:11:73","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9751,"name":"_useZro","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9670,"src":"2903:7:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9752,"name":"_adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9672,"src":"2912:14:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}],"expression":{"id":9748,"name":"omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9735,"src":"2849:16:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"id":9749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"estimateSendUserBalance","nodeType":"MemberAccess","referencedDeclaration":967,"src":"2849:40:73","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint16_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint16,bool,bytes memory) view external returns (uint256,uint256)"}},"id":9753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2849:78:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":9733,"id":9754,"nodeType":"Return","src":"2842:85:73"}]},"documentation":{"id":9724,"nodeType":"StructuredDocumentation","src":"2473:40:73","text":"@inheritdoc IOmniVotingEscrowAdaptor"},"functionSelector":"ecc4c583","id":9756,"implemented":true,"kind":"function","modifiers":[],"name":"estimateSendUserBalance","nodeType":"FunctionDefinition","overrides":{"id":9728,"nodeType":"OverrideSpecifier","overrides":[],"src":"2609:8:73"},"parameters":{"id":9727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9726,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":9756,"src":"2551:18:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9725,"name":"uint16","nodeType":"ElementaryTypeName","src":"2551:6:73","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"2550:20:73"},"returnParameters":{"id":9733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9730,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":9756,"src":"2635:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9729,"name":"uint256","nodeType":"ElementaryTypeName","src":"2635:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9732,"mutability":"mutable","name":"zroFee","nodeType":"VariableDeclaration","scope":9756,"src":"2654:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9731,"name":"uint256","nodeType":"ElementaryTypeName","src":"2654:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2634:35:73"},"scope":9868,"src":"2518:416:73","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1004],"body":{"id":9794,"nodeType":"Block","src":"3133:369:73","statements":[{"assignments":[9768],"declarations":[{"constant":false,"id":9768,"mutability":"mutable","name":"omniVotingEscrow","nodeType":"VariableDeclaration","scope":9794,"src":"3143:34:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":9767,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"3143:17:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"internal"}],"id":9771,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":9769,"name":"getOmniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9693,"src":"3180:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IOmniVotingEscrow_$981_$","typeString":"function () view returns (contract IOmniVotingEscrow)"}},"id":9770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3180:21:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"nodeType":"VariableDeclarationStatement","src":"3143:58:73"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"id":9777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9773,"name":"omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9768,"src":"3219:16:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":9775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3257:1:73","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9774,"name":"IOmniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":981,"src":"3239:17:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOmniVotingEscrow_$981_$","typeString":"type(contract IOmniVotingEscrow)"}},"id":9776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3239:20:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"src":"3219:40:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6d6e6920766f74696e6720657363726f77206e6f7420736574","id":9778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3261:28:73","typeDescriptions":{"typeIdentifier":"t_stringliteral_12fa1b1107549cc58552e2d8648e0204a3bab22e5c93daab05ba3cffbc55b1b6","typeString":"literal_string \"Omni voting escrow not set\""},"value":"Omni voting escrow not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12fa1b1107549cc58552e2d8648e0204a3bab22e5c93daab05ba3cffbc55b1b6","typeString":"literal_string \"Omni voting escrow not set\""}],"id":9772,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3211:7:73","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3211:79:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9780,"nodeType":"ExpressionStatement","src":"3211:79:73"},{"expression":{"arguments":[{"id":9787,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9759,"src":"3367:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9788,"name":"_dstChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9761,"src":"3386:11:73","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9789,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9763,"src":"3411:14:73","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":9790,"name":"_zroPaymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9674,"src":"3439:18:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9791,"name":"_adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9672,"src":"3471:14:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}],"expression":{"id":9781,"name":"omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9768,"src":"3301:16:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"id":9783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendUserBalance","nodeType":"MemberAccess","referencedDeclaration":980,"src":"3301:32:73","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint16,address payable,address,bytes memory) payable external"}},"id":9786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":9784,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3342:3:73","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"3342:9:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3301:52:73","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$_t_address_$_t_bytes_memory_ptr_$returns$__$value","typeString":"function (address,uint16,address payable,address,bytes memory) payable external"}},"id":9792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3301:194:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9793,"nodeType":"ExpressionStatement","src":"3301:194:73"}]},"documentation":{"id":9757,"nodeType":"StructuredDocumentation","src":"2940:40:73","text":"@inheritdoc IOmniVotingEscrowAdaptor"},"functionSelector":"57fb8345","id":9795,"implemented":true,"kind":"function","modifiers":[],"name":"sendUserBalance","nodeType":"FunctionDefinition","overrides":{"id":9765,"nodeType":"OverrideSpecifier","overrides":[],"src":"3124:8:73"},"parameters":{"id":9764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9759,"mutability":"mutable","name":"_user","nodeType":"VariableDeclaration","scope":9795,"src":"3019:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9758,"name":"address","nodeType":"ElementaryTypeName","src":"3019:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9761,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":9795,"src":"3042:18:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9760,"name":"uint16","nodeType":"ElementaryTypeName","src":"3042:6:73","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":9763,"mutability":"mutable","name":"_refundAddress","nodeType":"VariableDeclaration","scope":9795,"src":"3070:30:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":9762,"name":"address","nodeType":"ElementaryTypeName","src":"3070:15:73","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"3009:97:73"},"returnParameters":{"id":9766,"nodeType":"ParameterList","parameters":[],"src":"3133:0:73"},"scope":9868,"src":"2985:517:73","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1055],"body":{"id":9812,"nodeType":"Block","src":"3657:109:73","statements":[{"expression":{"id":9806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9804,"name":"_omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9668,"src":"3667:17:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9805,"name":"omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9798,"src":"3687:16:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"src":"3667:36:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"id":9807,"nodeType":"ExpressionStatement","src":"3667:36:73"},{"eventCall":{"arguments":[{"id":9809,"name":"omniVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9798,"src":"3742:16:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}],"id":9808,"name":"OmniVotingEscrowUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1013,"src":"3718:23:73","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IOmniVotingEscrow_$981_$returns$__$","typeString":"function (contract IOmniVotingEscrow)"}},"id":9810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3718:41:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9811,"nodeType":"EmitStatement","src":"3713:46:73"}]},"documentation":{"id":9796,"nodeType":"StructuredDocumentation","src":"3508:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"09d401f9","id":9813,"implemented":true,"kind":"function","modifiers":[{"id":9802,"modifierName":{"id":9801,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3644:12:73","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3644:12:73"}],"name":"setOmniVotingEscrow","nodeType":"FunctionDefinition","overrides":{"id":9800,"nodeType":"OverrideSpecifier","overrides":[],"src":"3635:8:73"},"parameters":{"id":9799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9798,"mutability":"mutable","name":"omniVotingEscrow","nodeType":"VariableDeclaration","scope":9813,"src":"3590:34:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"},"typeName":{"id":9797,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"3590:17:73","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"visibility":"internal"}],"src":"3589:36:73"},"returnParameters":{"id":9803,"nodeType":"ParameterList","parameters":[],"src":"3657:0:73"},"scope":9868,"src":"3561:205:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1061],"body":{"id":9830,"nodeType":"Block","src":"3889:70:73","statements":[{"expression":{"id":9824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9822,"name":"_useZro","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9670,"src":"3899:7:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9823,"name":"useZro","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"3909:6:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3899:16:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9825,"nodeType":"ExpressionStatement","src":"3899:16:73"},{"eventCall":{"arguments":[{"id":9827,"name":"useZro","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"3945:6:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9826,"name":"UseZeroUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"3930:14:73","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":9828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3930:22:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9829,"nodeType":"EmitStatement","src":"3925:27:73"}]},"documentation":{"id":9814,"nodeType":"StructuredDocumentation","src":"3772:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"299fd6fc","id":9831,"implemented":true,"kind":"function","modifiers":[{"id":9820,"modifierName":{"id":9819,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3876:12:73","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3876:12:73"}],"name":"setUseZero","nodeType":"FunctionDefinition","overrides":{"id":9818,"nodeType":"OverrideSpecifier","overrides":[],"src":"3867:8:73"},"parameters":{"id":9817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9816,"mutability":"mutable","name":"useZro","nodeType":"VariableDeclaration","scope":9831,"src":"3845:11:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9815,"name":"bool","nodeType":"ElementaryTypeName","src":"3845:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3844:13:73"},"returnParameters":{"id":9821,"nodeType":"ParameterList","parameters":[],"src":"3889:0:73"},"scope":9868,"src":"3825:134:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1067],"body":{"id":9848,"nodeType":"Block","src":"4103:97:73","statements":[{"expression":{"id":9842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9840,"name":"_adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9672,"src":"4113:14:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9841,"name":"adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9834,"src":"4130:13:73","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4113:30:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":9843,"nodeType":"ExpressionStatement","src":"4113:30:73"},{"eventCall":{"arguments":[{"id":9845,"name":"adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9834,"src":"4179:13:73","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9844,"name":"AdapterParamsUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1021,"src":"4158:20:73","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":9846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4158:35:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9847,"nodeType":"EmitStatement","src":"4153:40:73"}]},"documentation":{"id":9832,"nodeType":"StructuredDocumentation","src":"3965:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"d56b6a4a","id":9849,"implemented":true,"kind":"function","modifiers":[{"id":9838,"modifierName":{"id":9837,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"4090:12:73","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4090:12:73"}],"name":"setAdapterParams","nodeType":"FunctionDefinition","overrides":{"id":9836,"nodeType":"OverrideSpecifier","overrides":[],"src":"4081:8:73"},"parameters":{"id":9835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9834,"mutability":"mutable","name":"adapterParams","nodeType":"VariableDeclaration","scope":9849,"src":"4044:26:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9833,"name":"bytes","nodeType":"ElementaryTypeName","src":"4044:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4043:28:73"},"returnParameters":{"id":9839,"nodeType":"ParameterList","parameters":[],"src":"4103:0:73"},"scope":9868,"src":"4018:182:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1073],"body":{"id":9866,"nodeType":"Block","src":"4345:108:73","statements":[{"expression":{"id":9860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9858,"name":"_zroPaymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9674,"src":"4355:18:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9859,"name":"paymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9852,"src":"4376:14:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4355:35:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9861,"nodeType":"ExpressionStatement","src":"4355:35:73"},{"eventCall":{"arguments":[{"id":9863,"name":"paymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9852,"src":"4431:14:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9862,"name":"ZeroPaymentAddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"4405:25:73","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4405:41:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9865,"nodeType":"EmitStatement","src":"4400:46:73"}]},"documentation":{"id":9850,"nodeType":"StructuredDocumentation","src":"4206:48:73","text":"@inheritdoc IOmniVotingEscrowAdaptorSettings"},"functionSelector":"e241e489","id":9867,"implemented":true,"kind":"function","modifiers":[{"id":9856,"modifierName":{"id":9855,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"4332:12:73","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4332:12:73"}],"name":"setZeroPaymentAddress","nodeType":"FunctionDefinition","overrides":{"id":9854,"nodeType":"OverrideSpecifier","overrides":[],"src":"4323:8:73"},"parameters":{"id":9853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9852,"mutability":"mutable","name":"paymentAddress","nodeType":"VariableDeclaration","scope":9867,"src":"4290:22:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9851,"name":"address","nodeType":"ElementaryTypeName","src":"4290:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4289:24:73"},"returnParameters":{"id":9857,"nodeType":"ParameterList","parameters":[],"src":"4345:0:73"},"scope":9868,"src":"4259:194:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9869,"src":"1382:3073:73"}],"src":"688:3768:73"},"id":73},"contracts/SmartWalletChecker.sol":{"ast":{"absolutePath":"contracts/SmartWalletChecker.sol","exportedSymbols":{"SmartWalletChecker":[10014]},"id":10015,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9870,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:74"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol","id":9871,"nodeType":"ImportDirective","scope":10015,"sourceUnit":1216,"src":"713:89:74","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":9872,"nodeType":"ImportDirective","scope":10015,"sourceUnit":3052,"src":"803:65:74","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":9873,"nodeType":"ImportDirective","scope":10015,"sourceUnit":3698,"src":"870:88:74","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","id":9874,"nodeType":"ImportDirective","scope":10015,"sourceUnit":7132,"src":"959:83:74","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9875,"name":"ISmartWalletChecker","nodeType":"UserDefinedTypeName","referencedDeclaration":1215,"src":"1075:19:74","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"id":9876,"nodeType":"InheritanceSpecifier","src":"1075:19:74"},{"baseName":{"id":9877,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1096:23:74","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":9878,"nodeType":"InheritanceSpecifier","src":"1096:23:74"}],"contractDependencies":[1215,2259,3128,3697],"contractKind":"contract","fullyImplemented":true,"id":10014,"linearizedBaseContracts":[10014,3697,3128,2259,1215],"name":"SmartWalletChecker","nodeType":"ContractDefinition","nodes":[{"id":9881,"libraryName":{"id":9879,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7131,"src":"1132:13:74","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$7131","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"1126:49:74","typeName":{"id":9880,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1150:24:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"anonymous":false,"id":9885,"name":"ContractAddressAdded","nodeType":"EventDefinition","parameters":{"id":9884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9883,"indexed":false,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":9885,"src":"1208:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9882,"name":"address","nodeType":"ElementaryTypeName","src":"1208:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1207:25:74"},"src":"1181:52:74"},{"anonymous":false,"id":9889,"name":"ContractAddressRemoved","nodeType":"EventDefinition","parameters":{"id":9888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9887,"indexed":false,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":9889,"src":"1267:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9886,"name":"address","nodeType":"ElementaryTypeName","src":"1267:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1266:25:74"},"src":"1238:54:74"},{"constant":false,"id":9891,"mutability":"mutable","name":"_allowlistedAddresses","nodeType":"VariableDeclaration","scope":10014,"src":"1298:54:74","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":9890,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1298:24:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"private"},{"body":{"id":9925,"nodeType":"Block","src":"1458:198:74","statements":[{"assignments":[9903],"declarations":[{"constant":false,"id":9903,"mutability":"mutable","name":"addressesLength","nodeType":"VariableDeclaration","scope":9925,"src":"1468:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9902,"name":"uint256","nodeType":"ElementaryTypeName","src":"1468:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9906,"initialValue":{"expression":{"id":9904,"name":"initialAllowedAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9896,"src":"1494:23:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1494:30:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1468:56:74"},{"body":{"id":9923,"nodeType":"Block","src":"1580:70:74","statements":[{"expression":{"arguments":[{"baseExpression":{"id":9918,"name":"initialAllowedAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9896,"src":"1612:23:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9920,"indexExpression":{"id":9919,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9908,"src":"1636:1:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1612:26:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9917,"name":"_allowlistAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10013,"src":"1594:17:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1594:45:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9922,"nodeType":"ExpressionStatement","src":"1594:45:74"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9911,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9908,"src":"1554:1:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9912,"name":"addressesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9903,"src":"1558:15:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1554:19:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9924,"initializationExpression":{"assignments":[9908],"declarations":[{"constant":false,"id":9908,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9924,"src":"1539:9:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9907,"name":"uint256","nodeType":"ElementaryTypeName","src":"1539:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9910,"initialValue":{"hexValue":"30","id":9909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1551:1:74","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1539:13:74"},"loopExpression":{"expression":{"id":9915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1575:3:74","subExpression":{"id":9914,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9908,"src":"1577:1:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9916,"nodeType":"ExpressionStatement","src":"1575:3:74"},"nodeType":"ForStatement","src":"1534:116:74"}]},"id":9926,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9899,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9893,"src":"1451:5:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":9900,"modifierName":{"id":9898,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1427:23:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1427:30:74"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9893,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9926,"src":"1371:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":9892,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1371:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":9896,"mutability":"mutable","name":"initialAllowedAddresses","nodeType":"VariableDeclaration","scope":9926,"src":"1385:40:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9894,"name":"address","nodeType":"ElementaryTypeName","src":"1385:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9895,"nodeType":"ArrayTypeName","src":"1385:9:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1370:56:74"},"returnParameters":{"id":9901,"nodeType":"ParameterList","parameters":[],"src":"1458:0:74"},"scope":10014,"src":"1359:297:74","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1214],"body":{"id":9939,"nodeType":"Block","src":"1740:71:74","statements":[{"expression":{"arguments":[{"id":9936,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9928,"src":"1788:15:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9934,"name":"_allowlistedAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"1757:21:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9935,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":6834,"src":"1757:30:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"}},"id":9937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1757:47:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9933,"id":9938,"nodeType":"Return","src":"1750:54:74"}]},"functionSelector":"c23697a8","id":9940,"implemented":true,"kind":"function","modifiers":[],"name":"check","nodeType":"FunctionDefinition","overrides":{"id":9930,"nodeType":"OverrideSpecifier","overrides":[],"src":"1716:8:74"},"parameters":{"id":9929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9928,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":9940,"src":"1677:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9927,"name":"address","nodeType":"ElementaryTypeName","src":"1677:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1676:25:74"},"returnParameters":{"id":9933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9932,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9940,"src":"1734:4:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9931,"name":"bool","nodeType":"ElementaryTypeName","src":"1734:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1733:6:74"},"scope":10014,"src":"1662:149:74","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9952,"nodeType":"Block","src":"1895:55:74","statements":[{"expression":{"arguments":[{"id":9949,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9942,"src":"1937:5:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9947,"name":"_allowlistedAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"1912:21:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9948,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":6873,"src":"1912:24:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":9950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1912:31:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":9946,"id":9951,"nodeType":"Return","src":"1905:38:74"}]},"functionSelector":"2ee7ca64","id":9953,"implemented":true,"kind":"function","modifiers":[],"name":"getAllowlistedAddress","nodeType":"FunctionDefinition","parameters":{"id":9943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9942,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":9953,"src":"1848:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9941,"name":"uint256","nodeType":"ElementaryTypeName","src":"1848:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1847:15:74"},"returnParameters":{"id":9946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9945,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9953,"src":"1886:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9944,"name":"address","nodeType":"ElementaryTypeName","src":"1886:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1885:9:74"},"scope":10014,"src":"1817:133:74","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9962,"nodeType":"Block","src":"2029:54:74","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9958,"name":"_allowlistedAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"2046:21:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6847,"src":"2046:28:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":9960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2046:30:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9957,"id":9961,"nodeType":"Return","src":"2039:37:74"}]},"functionSelector":"c7abf7e2","id":9963,"implemented":true,"kind":"function","modifiers":[],"name":"getAllowlistedAddressesLength","nodeType":"FunctionDefinition","parameters":{"id":9954,"nodeType":"ParameterList","parameters":[],"src":"1994:2:74"},"returnParameters":{"id":9957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9956,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9963,"src":"2020:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9955,"name":"uint256","nodeType":"ElementaryTypeName","src":"2020:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2019:9:74"},"scope":10014,"src":"1956:127:74","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9974,"nodeType":"Block","src":"2162:51:74","statements":[{"expression":{"arguments":[{"id":9971,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9965,"src":"2190:15:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9970,"name":"_allowlistAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10013,"src":"2172:17:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2172:34:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9973,"nodeType":"ExpressionStatement","src":"2172:34:74"}]},"functionSelector":"f191aad0","id":9975,"implemented":true,"kind":"function","modifiers":[{"id":9968,"modifierName":{"id":9967,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"2149:12:74","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2149:12:74"}],"name":"allowlistAddress","nodeType":"FunctionDefinition","parameters":{"id":9966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9965,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":9975,"src":"2115:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9964,"name":"address","nodeType":"ElementaryTypeName","src":"2115:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2114:25:74"},"returnParameters":{"id":9969,"nodeType":"ParameterList","parameters":[],"src":"2162:0:74"},"scope":10014,"src":"2089:124:74","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9994,"nodeType":"Block","src":"2291:155:74","statements":[{"expression":{"arguments":[{"arguments":[{"id":9985,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9977,"src":"2338:15:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9983,"name":"_allowlistedAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"2309:21:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9984,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":6816,"src":"2309:28:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":9986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2309:45:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"41646472657373206973206e6f7420616c6c6f776c6973746564","id":9987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2356:28:74","typeDescriptions":{"typeIdentifier":"t_stringliteral_7225e4630e045b69ee32e4a65259148df21c7176dba39d73b744e663aedbed9f","typeString":"literal_string \"Address is not allowlisted\""},"value":"Address is not allowlisted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7225e4630e045b69ee32e4a65259148df21c7176dba39d73b744e663aedbed9f","typeString":"literal_string \"Address is not allowlisted\""}],"id":9982,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2301:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2301:84:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9989,"nodeType":"ExpressionStatement","src":"2301:84:74"},{"eventCall":{"arguments":[{"id":9991,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9977,"src":"2423:15:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9990,"name":"ContractAddressRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9889,"src":"2400:22:74","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2400:39:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9993,"nodeType":"EmitStatement","src":"2395:44:74"}]},"functionSelector":"a5ee4e71","id":9995,"implemented":true,"kind":"function","modifiers":[{"id":9980,"modifierName":{"id":9979,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"2278:12:74","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2278:12:74"}],"name":"denylistAddress","nodeType":"FunctionDefinition","parameters":{"id":9978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9977,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":9995,"src":"2244:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9976,"name":"address","nodeType":"ElementaryTypeName","src":"2244:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2243:25:74"},"returnParameters":{"id":9981,"nodeType":"ParameterList","parameters":[],"src":"2291:0:74"},"scope":10014,"src":"2219:227:74","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10012,"nodeType":"Block","src":"2540:151:74","statements":[{"expression":{"arguments":[{"arguments":[{"id":10003,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9997,"src":"2584:15:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10001,"name":"_allowlistedAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"2558:21:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":10002,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":6731,"src":"2558:25:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":10004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2558:42:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4164647265737320616c726561647920616c6c6f776c6973746564","id":10005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2602:29:74","typeDescriptions":{"typeIdentifier":"t_stringliteral_1ca8a1012c666cd160975f0b6c016234f4aa97efbe3db06b1302c23e5d5e37d0","typeString":"literal_string \"Address already allowlisted\""},"value":"Address already allowlisted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1ca8a1012c666cd160975f0b6c016234f4aa97efbe3db06b1302c23e5d5e37d0","typeString":"literal_string \"Address already allowlisted\""}],"id":10000,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2550:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2550:82:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10007,"nodeType":"ExpressionStatement","src":"2550:82:74"},{"eventCall":{"arguments":[{"id":10009,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9997,"src":"2668:15:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10008,"name":"ContractAddressAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9885,"src":"2647:20:74","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2647:37:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10011,"nodeType":"EmitStatement","src":"2642:42:74"}]},"id":10013,"implemented":true,"kind":"function","modifiers":[],"name":"_allowlistAddress","nodeType":"FunctionDefinition","parameters":{"id":9998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9997,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","scope":10013,"src":"2506:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9996,"name":"address","nodeType":"ElementaryTypeName","src":"2506:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2505:25:74"},"returnParameters":{"id":9999,"nodeType":"ParameterList","parameters":[],"src":"2540:0:74"},"scope":10014,"src":"2479:212:74","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":10015,"src":"1044:1649:74"}],"src":"688:2006:74"},"id":74},"contracts/VotingEscrowDelegationProxy.sol":{"ast":{"absolutePath":"contracts/VotingEscrowDelegationProxy.sol","exportedSymbols":{"VotingEscrowDelegationProxy":[10199]},"id":10200,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10016,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:75"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol","id":10017,"nodeType":"ImportDirective","scope":10200,"sourceUnit":1470,"src":"713:83:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":10018,"nodeType":"ImportDirective","scope":10200,"sourceUnit":3052,"src":"797:65:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":10019,"nodeType":"ImportDirective","scope":10200,"sourceUnit":3698,"src":"864:88:75","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10020,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"994:23:75","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":10021,"nodeType":"InheritanceSpecifier","src":"994:23:75"}],"contractDependencies":[2259,3128,3697],"contractKind":"contract","fullyImplemented":true,"id":10199,"linearizedBaseContracts":[10199,3697,3128,2259],"name":"VotingEscrowDelegationProxy","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":10023,"mutability":"immutable","name":"_votingEscrow","nodeType":"VariableDeclaration","scope":10199,"src":"1024:38:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":10022,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1024:6:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"private"},{"constant":false,"id":10025,"mutability":"mutable","name":"_delegation","nodeType":"VariableDeclaration","scope":10199,"src":"1068:33:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"typeName":{"id":10024,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"1068:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"visibility":"private"},{"anonymous":false,"id":10029,"name":"DelegationImplementationUpdated","nodeType":"EventDefinition","parameters":{"id":10028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10027,"indexed":true,"mutability":"mutable","name":"newImplementation","nodeType":"VariableDeclaration","scope":10029,"src":"1146:33:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10026,"name":"address","nodeType":"ElementaryTypeName","src":"1146:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1145:35:75"},"src":"1108:73:75"},{"body":{"id":10049,"nodeType":"Block","src":"1321:79:75","statements":[{"expression":{"id":10043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10041,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10023,"src":"1331:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10042,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10033,"src":"1347:12:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"1331:28:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":10044,"nodeType":"ExpressionStatement","src":"1331:28:75"},{"expression":{"id":10047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10045,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"1369:11:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10046,"name":"delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10035,"src":"1383:10:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"src":"1369:24:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":10048,"nodeType":"ExpressionStatement","src":"1369:24:75"}]},"id":10050,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10038,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10031,"src":"1314:5:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":10039,"modifierName":{"id":10037,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1290:23:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1290:30:75"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":10036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10031,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":10050,"src":"1208:12:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":10030,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1208:6:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":10033,"mutability":"mutable","name":"votingEscrow","nodeType":"VariableDeclaration","scope":10050,"src":"1230:19:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":10032,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1230:6:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":10035,"mutability":"mutable","name":"delegation","nodeType":"VariableDeclaration","scope":10050,"src":"1259:24:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"typeName":{"id":10034,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"1259:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"visibility":"internal"}],"src":"1198:91:75"},"returnParameters":{"id":10040,"nodeType":"ParameterList","parameters":[],"src":"1321:0:75"},"scope":10199,"src":"1187:213:75","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":10058,"nodeType":"Block","src":"1570:35:75","statements":[{"expression":{"id":10056,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"1587:11:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"functionReturnParameters":10055,"id":10057,"nodeType":"Return","src":"1580:18:75"}]},"documentation":{"id":10051,"nodeType":"StructuredDocumentation","src":"1406:82:75","text":" @notice Returns the current delegation implementation contract."},"functionSelector":"63408a90","id":10059,"implemented":true,"kind":"function","modifiers":[],"name":"getDelegationImplementation","nodeType":"FunctionDefinition","parameters":{"id":10052,"nodeType":"ParameterList","parameters":[],"src":"1529:2:75"},"returnParameters":{"id":10055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10054,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10059,"src":"1555:13:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"typeName":{"id":10053,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"1555:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"visibility":"internal"}],"src":"1554:15:75"},"scope":10199,"src":"1493:112:75","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10067,"nodeType":"Block","src":"1744:37:75","statements":[{"expression":{"id":10065,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10023,"src":"1761:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"functionReturnParameters":10064,"id":10066,"nodeType":"Return","src":"1754:20:75"}]},"documentation":{"id":10060,"nodeType":"StructuredDocumentation","src":"1611:70:75","text":" @notice Returns the Voting Escrow (veBAL) contract."},"functionSelector":"08b0308a","id":10068,"implemented":true,"kind":"function","modifiers":[],"name":"getVotingEscrow","nodeType":"FunctionDefinition","parameters":{"id":10061,"nodeType":"ParameterList","parameters":[],"src":"1710:2:75"},"returnParameters":{"id":10064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10063,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10068,"src":"1736:6:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":10062,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1736:6:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1735:8:75"},"scope":10199,"src":"1686:95:75","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10080,"nodeType":"Block","src":"2060:48:75","statements":[{"expression":{"arguments":[{"id":10077,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10071,"src":"2096:4:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10076,"name":"_adjustedBalanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10153,"src":"2077:18:75","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":10078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2077:24:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10075,"id":10079,"nodeType":"Return","src":"2070:31:75"}]},"documentation":{"id":10069,"nodeType":"StructuredDocumentation","src":"1787:195:75","text":" @notice Get the adjusted veBAL balance from the active boost delegation contract\n @param user The user to query the adjusted veBAL balance of\n @return veBAL balance"},"functionSelector":"25798418","id":10081,"implemented":true,"kind":"function","modifiers":[],"name":"adjustedBalanceOf","nodeType":"FunctionDefinition","parameters":{"id":10072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10071,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":10081,"src":"2014:12:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10070,"name":"address","nodeType":"ElementaryTypeName","src":"2014:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2013:14:75"},"returnParameters":{"id":10075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10074,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10081,"src":"2051:7:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10073,"name":"uint256","nodeType":"ElementaryTypeName","src":"2051:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2050:9:75"},"scope":10199,"src":"1987:121:75","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10093,"nodeType":"Block","src":"2442:48:75","statements":[{"expression":{"arguments":[{"id":10090,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10084,"src":"2478:4:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10089,"name":"_adjustedBalanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10153,"src":"2459:18:75","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":10091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2459:24:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10088,"id":10092,"nodeType":"Return","src":"2452:31:75"}]},"documentation":{"id":10082,"nodeType":"StructuredDocumentation","src":"2114:195:75","text":" @notice Get the adjusted veBAL balance from the active boost delegation contract\n @param user The user to query the adjusted veBAL balance of\n @return veBAL balance"},"functionSelector":"bbf7408a","id":10094,"implemented":true,"kind":"function","modifiers":[],"name":"adjusted_balance_of","nodeType":"FunctionDefinition","parameters":{"id":10085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10084,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":10094,"src":"2396:12:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10083,"name":"address","nodeType":"ElementaryTypeName","src":"2396:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2395:14:75"},"returnParameters":{"id":10088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10087,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10094,"src":"2433:7:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10086,"name":"uint256","nodeType":"ElementaryTypeName","src":"2433:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2432:9:75"},"scope":10199,"src":"2367:123:75","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10121,"nodeType":"Block","src":"2696:220:75","statements":[{"assignments":[10101],"declarations":[{"constant":false,"id":10101,"mutability":"mutable","name":"implementation","nodeType":"VariableDeclaration","scope":10121,"src":"2706:28:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"typeName":{"id":10100,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"2706:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"visibility":"internal"}],"id":10103,"initialValue":{"id":10102,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"2737:11:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"nodeType":"VariableDeclarationStatement","src":"2706:42:75"},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"id":10108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10104,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10101,"src":"2762:14:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2794:1:75","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10105,"name":"IVeDelegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1469,"src":"2780:13:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVeDelegation_$1469_$","typeString":"type(contract IVeDelegation)"}},"id":10107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2780:16:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"src":"2762:34:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10116,"nodeType":"IfStatement","src":"2758:107:75","trueBody":{"id":10115,"nodeType":"Block","src":"2798:67:75","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10110,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10023,"src":"2826:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":10109,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2447,"src":"2819:6:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2447_$","typeString":"type(contract IERC20)"}},"id":10111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2819:21:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":10112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":2378,"src":"2819:33:75","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":10113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2819:35:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10099,"id":10114,"nodeType":"Return","src":"2812:42:75"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10117,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10101,"src":"2881:14:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":10118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":1468,"src":"2881:26:75","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":10119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2881:28:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10099,"id":10120,"nodeType":"Return","src":"2874:35:75"}]},"documentation":{"id":10095,"nodeType":"StructuredDocumentation","src":"2496:140:75","text":" @notice Get the current veBAL total supply from the votingEscrow contract.\n @return The current veBAL total supply."},"functionSelector":"18160ddd","id":10122,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":10096,"nodeType":"ParameterList","parameters":[],"src":"2661:2:75"},"returnParameters":{"id":10099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10098,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10122,"src":"2687:7:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10097,"name":"uint256","nodeType":"ElementaryTypeName","src":"2687:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2686:9:75"},"scope":10199,"src":"2641:275:75","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10152,"nodeType":"Block","src":"3023:234:75","statements":[{"assignments":[10130],"declarations":[{"constant":false,"id":10130,"mutability":"mutable","name":"implementation","nodeType":"VariableDeclaration","scope":10152,"src":"3033:28:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"typeName":{"id":10129,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"3033:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"visibility":"internal"}],"id":10132,"initialValue":{"id":10131,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"3064:11:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"nodeType":"VariableDeclarationStatement","src":"3033:42:75"},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"id":10137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10133,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10130,"src":"3089:14:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3121:1:75","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10134,"name":"IVeDelegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1469,"src":"3107:13:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVeDelegation_$1469_$","typeString":"type(contract IVeDelegation)"}},"id":10136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3107:16:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"src":"3089:34:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10146,"nodeType":"IfStatement","src":"3085:109:75","trueBody":{"id":10145,"nodeType":"Block","src":"3125:69:75","statements":[{"expression":{"arguments":[{"id":10142,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"3178:4:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":10139,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10023,"src":"3153:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":10138,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2447,"src":"3146:6:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2447_$","typeString":"type(contract IERC20)"}},"id":10140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3146:21:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":10141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2386,"src":"3146:31:75","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3146:37:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10128,"id":10144,"nodeType":"Return","src":"3139:44:75"}]}},{"expression":{"arguments":[{"id":10149,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"3245:4:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10147,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10130,"src":"3210:14:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":10148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"adjusted_balance_of","nodeType":"MemberAccess","referencedDeclaration":1463,"src":"3210:34:75","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3210:40:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10128,"id":10151,"nodeType":"Return","src":"3203:47:75"}]},"id":10153,"implemented":true,"kind":"function","modifiers":[],"name":"_adjustedBalanceOf","nodeType":"FunctionDefinition","parameters":{"id":10125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10124,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":10153,"src":"2977:12:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10123,"name":"address","nodeType":"ElementaryTypeName","src":"2977:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2976:14:75"},"returnParameters":{"id":10128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10127,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10153,"src":"3014:7:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10126,"name":"uint256","nodeType":"ElementaryTypeName","src":"3014:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3013:9:75"},"scope":10199,"src":"2949:308:75","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10178,"nodeType":"Block","src":"3358:221:75","statements":[{"expression":{"arguments":[{"expression":{"id":10163,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3459:3:75","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3459:10:75","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":10160,"name":"delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10155,"src":"3428:10:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":10162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"adjusted_balance_of","nodeType":"MemberAccess","referencedDeclaration":1463,"src":"3428:30:75","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3428:42:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10166,"nodeType":"ExpressionStatement","src":"3428:42:75"},{"expression":{"id":10169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10167,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"3481:11:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10168,"name":"delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10155,"src":"3495:10:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"src":"3481:24:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":10170,"nodeType":"ExpressionStatement","src":"3481:24:75"},{"eventCall":{"arguments":[{"arguments":[{"id":10174,"name":"delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10155,"src":"3560:10:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}],"id":10173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3552:7:75","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10172,"name":"address","nodeType":"ElementaryTypeName","src":"3552:7:75","typeDescriptions":{}}},"id":10175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3552:19:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10171,"name":"DelegationImplementationUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10029,"src":"3520:31:75","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3520:52:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10177,"nodeType":"EmitStatement","src":"3515:57:75"}]},"functionSelector":"e6b3e704","id":10179,"implemented":true,"kind":"function","modifiers":[{"id":10158,"modifierName":{"id":10157,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3345:12:75","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3345:12:75"}],"name":"setDelegation","nodeType":"FunctionDefinition","parameters":{"id":10156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10155,"mutability":"mutable","name":"delegation","nodeType":"VariableDeclaration","scope":10179,"src":"3310:24:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"},"typeName":{"id":10154,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"3310:13:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"visibility":"internal"}],"src":"3309:26:75"},"returnParameters":{"id":10159,"nodeType":"ParameterList","parameters":[],"src":"3358:0:75"},"scope":10199,"src":"3287:292:75","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10197,"nodeType":"Block","src":"3633:105:75","statements":[{"expression":{"id":10188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10184,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"3643:11:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":10186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3671:1:75","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10185,"name":"IVeDelegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1469,"src":"3657:13:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVeDelegation_$1469_$","typeString":"type(contract IVeDelegation)"}},"id":10187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3657:16:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"src":"3643:30:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":10189,"nodeType":"ExpressionStatement","src":"3643:30:75"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":10193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3728:1:75","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3720:7:75","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10191,"name":"address","nodeType":"ElementaryTypeName","src":"3720:7:75","typeDescriptions":{}}},"id":10194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3720:10:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10190,"name":"DelegationImplementationUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10029,"src":"3688:31:75","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3688:43:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10196,"nodeType":"EmitStatement","src":"3683:48:75"}]},"functionSelector":"6448a3ab","id":10198,"implemented":true,"kind":"function","modifiers":[{"id":10182,"modifierName":{"id":10181,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3620:12:75","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3620:12:75"}],"name":"killDelegation","nodeType":"FunctionDefinition","parameters":{"id":10180,"nodeType":"ParameterList","parameters":[],"src":"3608:2:75"},"returnParameters":{"id":10183,"nodeType":"ParameterList","parameters":[],"src":"3633:0:75"},"scope":10199,"src":"3585:153:75","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10200,"src":"954:2786:75"}],"src":"688:3053:75"},"id":75},"contracts/VotingEscrowRemapper.sol":{"ast":{"absolutePath":"contracts/VotingEscrowRemapper.sol","exportedSymbols":{"VotingEscrowRemapper":[10848]},"id":10849,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10201,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:76"},{"id":10202,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:76"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol","id":10203,"nodeType":"ImportDirective","scope":10849,"sourceUnit":1006,"src":"747:94:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol","id":10204,"nodeType":"ImportDirective","scope":10849,"sourceUnit":1675,"src":"842:91:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":10205,"nodeType":"ImportDirective","scope":10849,"sourceUnit":5851,"src":"935:77:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":10206,"nodeType":"ImportDirective","scope":10849,"sourceUnit":7188,"src":"1013:85:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":10207,"nodeType":"ImportDirective","scope":10849,"sourceUnit":3698,"src":"1099:88:76","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10209,"name":"IVotingEscrowRemapper","nodeType":"UserDefinedTypeName","referencedDeclaration":1674,"src":"1898:21:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrowRemapper_$1674","typeString":"contract IVotingEscrowRemapper"}},"id":10210,"nodeType":"InheritanceSpecifier","src":"1898:21:76"},{"baseName":{"id":10211,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1921:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":10212,"nodeType":"InheritanceSpecifier","src":"1921:23:76"},{"baseName":{"id":10213,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"1946:15:76","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":10214,"nodeType":"InheritanceSpecifier","src":"1946:15:76"}],"contractDependencies":[1674,2259,3128,3697,7187],"contractKind":"contract","documentation":{"id":10208,"nodeType":"StructuredDocumentation","src":"1189:675:76","text":" @notice This contract allows veBAL holders on Ethereum to assign their balance to designated addresses on each L2.\n This is intended for smart contracts that are not deployed to the same address on all networks. EOA's are\n expected to either use the same address, or manage delegation on L2 networks themselves.\n @dev For each network (chainId), we maintain a mapping between local (Ethereum) and remote (L2) addresses.\n This contract remaps balance queries on remote network addresses to their corresponding local addresses.\n Users able to call this contract can set their own mappings, or delegate this function to another account if they\n cannot."},"fullyImplemented":true,"id":10848,"linearizedBaseContracts":[10848,7187,3697,3128,2259,1674],"name":"VotingEscrowRemapper","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":10216,"mutability":"immutable","name":"_votingEscrow","nodeType":"VariableDeclaration","scope":10848,"src":"1968:45:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":10215,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"1968:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"private"},{"constant":false,"id":10218,"mutability":"mutable","name":"_omniVotingEscrowAdaptor","nodeType":"VariableDeclaration","scope":10848,"src":"2019:57:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"},"typeName":{"id":10217,"name":"IOmniVotingEscrowAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":1005,"src":"2019:24:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"visibility":"private"},{"constant":false,"id":10224,"mutability":"mutable","name":"_localToRemoteAddressMap","nodeType":"VariableDeclaration","scope":10848,"src":"2082:79:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"},"typeName":{"id":10223,"keyType":{"id":10219,"name":"uint16","nodeType":"ElementaryTypeName","src":"2090:6:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Mapping","src":"2082:46:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"},"valueType":{"id":10222,"keyType":{"id":10220,"name":"address","nodeType":"ElementaryTypeName","src":"2108:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2100:27:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":10221,"name":"address","nodeType":"ElementaryTypeName","src":"2119:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}}},"visibility":"private"},{"constant":false,"id":10230,"mutability":"mutable","name":"_remoteToLocalAddressMap","nodeType":"VariableDeclaration","scope":10848,"src":"2167:79:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"},"typeName":{"id":10229,"keyType":{"id":10225,"name":"uint16","nodeType":"ElementaryTypeName","src":"2175:6:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Mapping","src":"2167:46:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"},"valueType":{"id":10228,"keyType":{"id":10226,"name":"address","nodeType":"ElementaryTypeName","src":"2193:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2185:27:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":10227,"name":"address","nodeType":"ElementaryTypeName","src":"2204:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}}},"visibility":"private"},{"constant":false,"id":10234,"mutability":"mutable","name":"_localRemappingManager","nodeType":"VariableDeclaration","scope":10848,"src":"2361:58:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":10233,"keyType":{"id":10231,"name":"address","nodeType":"ElementaryTypeName","src":"2369:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2361:27:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":10232,"name":"address","nodeType":"ElementaryTypeName","src":"2380:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"body":{"id":10254,"nodeType":"Block","src":"2591:105:76","statements":[{"expression":{"id":10248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10246,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10216,"src":"2601:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10247,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10238,"src":"2617:12:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"src":"2601:28:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10249,"nodeType":"ExpressionStatement","src":"2601:28:76"},{"expression":{"id":10252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10250,"name":"_omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10218,"src":"2639:24:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10251,"name":"omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10240,"src":"2666:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"src":"2639:50:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":10253,"nodeType":"ExpressionStatement","src":"2639:50:76"}]},"id":10255,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10243,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10236,"src":"2584:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":10244,"modifierName":{"id":10242,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"2560:23:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"2560:30:76"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":10241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10236,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":10255,"src":"2447:12:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":10235,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"2447:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":10238,"mutability":"mutable","name":"votingEscrow","nodeType":"VariableDeclaration","scope":10255,"src":"2469:26:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":10237,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"2469:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"},{"constant":false,"id":10240,"mutability":"mutable","name":"omniVotingEscrowAdaptor","nodeType":"VariableDeclaration","scope":10255,"src":"2505:48:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"},"typeName":{"id":10239,"name":"IOmniVotingEscrowAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":1005,"src":"2505:24:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"visibility":"internal"}],"src":"2437:122:76"},"returnParameters":{"id":10245,"nodeType":"ParameterList","parameters":[],"src":"2591:0:76"},"scope":10848,"src":"2426:270:76","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1591],"body":{"id":10264,"nodeType":"Block","src":"2816:37:76","statements":[{"expression":{"id":10262,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10216,"src":"2833:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"functionReturnParameters":10261,"id":10263,"nodeType":"Return","src":"2826:20:76"}]},"documentation":{"id":10256,"nodeType":"StructuredDocumentation","src":"2702:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"08b0308a","id":10265,"implemented":true,"kind":"function","modifiers":[],"name":"getVotingEscrow","nodeType":"FunctionDefinition","overrides":{"id":10258,"nodeType":"OverrideSpecifier","overrides":[],"src":"2783:8:76"},"parameters":{"id":10257,"nodeType":"ParameterList","parameters":[],"src":"2768:2:76"},"returnParameters":{"id":10261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10260,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10265,"src":"2801:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":10259,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"2801:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"src":"2800:15:76"},"scope":10848,"src":"2744:109:76","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1597],"body":{"id":10274,"nodeType":"Block","src":"2995:48:76","statements":[{"expression":{"id":10272,"name":"_omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10218,"src":"3012:24:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"functionReturnParameters":10271,"id":10273,"nodeType":"Return","src":"3005:31:76"}]},"documentation":{"id":10266,"nodeType":"StructuredDocumentation","src":"2859:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"5e5543be","id":10275,"implemented":true,"kind":"function","modifiers":[],"name":"getOmniVotingEscrowAdaptor","nodeType":"FunctionDefinition","overrides":{"id":10268,"nodeType":"OverrideSpecifier","overrides":[],"src":"2951:8:76"},"parameters":{"id":10267,"nodeType":"ParameterList","parameters":[],"src":"2936:2:76"},"returnParameters":{"id":10271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10270,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10275,"src":"2969:24:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"},"typeName":{"id":10269,"name":"IOmniVotingEscrowAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":1005,"src":"2969:24:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"visibility":"internal"}],"src":"2968:26:76"},"scope":10848,"src":"2901:142:76","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1603],"body":{"id":10298,"nodeType":"Block","src":"3182:181:76","statements":[{"assignments":[10283],"declarations":[{"constant":false,"id":10283,"mutability":"mutable","name":"votingEscrow","nodeType":"VariableDeclaration","scope":10298,"src":"3192:26:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":10282,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"3192:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"id":10286,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10284,"name":"getVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10265,"src":"3221:15:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVotingEscrow_$1559_$","typeString":"function () view returns (contract IVotingEscrow)"}},"id":10285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3221:17:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"nodeType":"VariableDeclarationStatement","src":"3192:46:76"},{"assignments":[10288],"declarations":[{"constant":false,"id":10288,"mutability":"mutable","name":"totalSupplyEpoch","nodeType":"VariableDeclaration","scope":10298,"src":"3248:24:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10287,"name":"uint256","nodeType":"ElementaryTypeName","src":"3248:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10292,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10289,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10283,"src":"3275:12:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"epoch","nodeType":"MemberAccess","referencedDeclaration":1491,"src":"3275:18:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":10291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3275:20:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3248:47:76"},{"expression":{"arguments":[{"id":10295,"name":"totalSupplyEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10288,"src":"3339:16:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10293,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10283,"src":"3312:12:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"point_history","nodeType":"MemberAccess","referencedDeclaration":1521,"src":"3312:26:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_struct$_Point_$1486_memory_ptr_$","typeString":"function (uint256) view external returns (struct IVotingEscrow.Point memory)"}},"id":10296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3312:44:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"functionReturnParameters":10281,"id":10297,"nodeType":"Return","src":"3305:51:76"}]},"documentation":{"id":10276,"nodeType":"StructuredDocumentation","src":"3049:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"f6f4a332","id":10299,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalSupplyPoint","nodeType":"FunctionDefinition","overrides":{"id":10278,"nodeType":"OverrideSpecifier","overrides":[],"src":"3136:8:76"},"parameters":{"id":10277,"nodeType":"ParameterList","parameters":[],"src":"3119:2:76"},"returnParameters":{"id":10281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10280,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10299,"src":"3154:26:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":10279,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"3154:19:76","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"3153:28:76"},"scope":10848,"src":"3091:272:76","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1611],"body":{"id":10326,"nodeType":"Block","src":"3507:193:76","statements":[{"assignments":[10309],"declarations":[{"constant":false,"id":10309,"mutability":"mutable","name":"votingEscrow","nodeType":"VariableDeclaration","scope":10326,"src":"3517:26:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":10308,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"3517:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"id":10312,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10310,"name":"getVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10265,"src":"3546:15:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVotingEscrow_$1559_$","typeString":"function () view returns (contract IVotingEscrow)"}},"id":10311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3546:17:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"nodeType":"VariableDeclarationStatement","src":"3517:46:76"},{"assignments":[10314],"declarations":[{"constant":false,"id":10314,"mutability":"mutable","name":"userEpoch","nodeType":"VariableDeclaration","scope":10326,"src":"3573:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10313,"name":"uint256","nodeType":"ElementaryTypeName","src":"3573:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10319,"initialValue":{"arguments":[{"id":10317,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10302,"src":"3623:4:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10315,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10309,"src":"3593:12:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_point_epoch","nodeType":"MemberAccess","referencedDeclaration":1514,"src":"3593:29:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3593:35:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3573:55:76"},{"expression":{"arguments":[{"id":10322,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10302,"src":"3677:4:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10323,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10314,"src":"3683:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10320,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10309,"src":"3645:12:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_point_history","nodeType":"MemberAccess","referencedDeclaration":1530,"src":"3645:31:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_struct$_Point_$1486_memory_ptr_$","typeString":"function (address,uint256) view external returns (struct IVotingEscrow.Point memory)"}},"id":10324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3645:48:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"functionReturnParameters":10307,"id":10325,"nodeType":"Return","src":"3638:55:76"}]},"documentation":{"id":10300,"nodeType":"StructuredDocumentation","src":"3369:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"71628bfd","id":10327,"implemented":true,"kind":"function","modifiers":[],"name":"getUserPoint","nodeType":"FunctionDefinition","overrides":{"id":10304,"nodeType":"OverrideSpecifier","overrides":[],"src":"3461:8:76"},"parameters":{"id":10303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10302,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":10327,"src":"3433:12:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10301,"name":"address","nodeType":"ElementaryTypeName","src":"3433:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3432:14:76"},"returnParameters":{"id":10307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10306,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10327,"src":"3479:26:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":10305,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"3479:19:76","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"3478:28:76"},"scope":10848,"src":"3411:289:76","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1619],"body":{"id":10342,"nodeType":"Block","src":"3825:59:76","statements":[{"expression":{"arguments":[{"id":10339,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10330,"src":"3872:4:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10336,"name":"getVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10265,"src":"3842:15:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVotingEscrow_$1559_$","typeString":"function () view returns (contract IVotingEscrow)"}},"id":10337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3842:17:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"locked__end","nodeType":"MemberAccess","referencedDeclaration":1558,"src":"3842:29:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3842:35:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10335,"id":10341,"nodeType":"Return","src":"3835:42:76"}]},"documentation":{"id":10328,"nodeType":"StructuredDocumentation","src":"3706:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"3e7df7c8","id":10343,"implemented":true,"kind":"function","modifiers":[],"name":"getLockedEnd","nodeType":"FunctionDefinition","overrides":{"id":10332,"nodeType":"OverrideSpecifier","overrides":[],"src":"3798:8:76"},"parameters":{"id":10331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10330,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":10343,"src":"3770:12:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10329,"name":"address","nodeType":"ElementaryTypeName","src":"3770:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3769:14:76"},"returnParameters":{"id":10335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10334,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10343,"src":"3816:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10333,"name":"uint256","nodeType":"ElementaryTypeName","src":"3816:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3815:9:76"},"scope":10848,"src":"3748:136:76","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1629],"body":{"id":10360,"nodeType":"Block","src":"4029:69:76","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":10354,"name":"_remoteToLocalAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10230,"src":"4046:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10356,"indexExpression":{"id":10355,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10348,"src":"4071:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4046:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10358,"indexExpression":{"id":10357,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10346,"src":"4080:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4046:45:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10353,"id":10359,"nodeType":"Return","src":"4039:52:76"}]},"documentation":{"id":10344,"nodeType":"StructuredDocumentation","src":"3890:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"70d1bd17","id":10361,"implemented":true,"kind":"function","modifiers":[],"name":"getLocalUser","nodeType":"FunctionDefinition","overrides":{"id":10350,"nodeType":"OverrideSpecifier","overrides":[],"src":"4002:8:76"},"parameters":{"id":10349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10346,"mutability":"mutable","name":"remoteUser","nodeType":"VariableDeclaration","scope":10361,"src":"3954:18:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10345,"name":"address","nodeType":"ElementaryTypeName","src":"3954:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10348,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":10361,"src":"3974:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":10347,"name":"uint16","nodeType":"ElementaryTypeName","src":"3974:6:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"3953:36:76"},"returnParameters":{"id":10353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10352,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10361,"src":"4020:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10351,"name":"address","nodeType":"ElementaryTypeName","src":"4020:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4019:9:76"},"scope":10848,"src":"3932:166:76","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1639],"body":{"id":10378,"nodeType":"Block","src":"4243:68:76","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":10372,"name":"_localToRemoteAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10224,"src":"4260:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10374,"indexExpression":{"id":10373,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10366,"src":"4285:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4260:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10376,"indexExpression":{"id":10375,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10364,"src":"4294:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4260:44:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10371,"id":10377,"nodeType":"Return","src":"4253:51:76"}]},"documentation":{"id":10362,"nodeType":"StructuredDocumentation","src":"4104:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"bda75c38","id":10379,"implemented":true,"kind":"function","modifiers":[],"name":"getRemoteUser","nodeType":"FunctionDefinition","overrides":{"id":10368,"nodeType":"OverrideSpecifier","overrides":[],"src":"4216:8:76"},"parameters":{"id":10367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10364,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":10379,"src":"4169:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10363,"name":"address","nodeType":"ElementaryTypeName","src":"4169:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10366,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":10379,"src":"4188:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":10365,"name":"uint16","nodeType":"ElementaryTypeName","src":"4188:6:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"4168:35:76"},"returnParameters":{"id":10371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10370,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10379,"src":"4234:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10369,"name":"address","nodeType":"ElementaryTypeName","src":"4234:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4233:9:76"},"scope":10848,"src":"4146:165:76","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1647],"body":{"id":10392,"nodeType":"Block","src":"4446:57:76","statements":[{"expression":{"baseExpression":{"id":10388,"name":"_localRemappingManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10234,"src":"4463:22:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10390,"indexExpression":{"id":10389,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10382,"src":"4486:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4463:33:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10387,"id":10391,"nodeType":"Return","src":"4456:40:76"}]},"documentation":{"id":10380,"nodeType":"StructuredDocumentation","src":"4317:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"ee98b1e7","id":10393,"implemented":true,"kind":"function","modifiers":[],"name":"getRemappingManager","nodeType":"FunctionDefinition","overrides":{"id":10384,"nodeType":"OverrideSpecifier","overrides":[],"src":"4419:8:76"},"parameters":{"id":10383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10382,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":10393,"src":"4388:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10381,"name":"address","nodeType":"ElementaryTypeName","src":"4388:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4387:19:76"},"returnParameters":{"id":10387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10386,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10393,"src":"4437:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10385,"name":"address","nodeType":"ElementaryTypeName","src":"4437:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4436:9:76"},"scope":10848,"src":"4359:144:76","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1657],"body":{"id":10633,"nodeType":"Block","src":"4730:4720:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10407,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4749:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4749:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10409,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"4763:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4749:23:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10411,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4776:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4776:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"baseExpression":{"id":10413,"name":"_localRemappingManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10234,"src":"4790:22:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10415,"indexExpression":{"id":10414,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"4813:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4790:33:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4776:47:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4749:74:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":10418,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"4825:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":10419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SENDER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":2010,"src":"4825:25:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10406,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"4740:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":10420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4740:111:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10421,"nodeType":"ExpressionStatement","src":"4740:111:76"},{"expression":{"arguments":[{"arguments":[{"id":10424,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"4888:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10423,"name":"_isAllowedContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10847,"src":"4869:18:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":10425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4869:29:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c7920636f6e7472616374732077686963682063616e20686f6c6420766542414c2063616e207365742075702061206d617070696e67","id":10426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4900:58:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_ba2c9f3e30c78109763eec02c8d9ead4d34f91b032f7190aee7d1e5f94ec7a75","typeString":"literal_string \"Only contracts which can hold veBAL can set up a mapping\""},"value":"Only contracts which can hold veBAL can set up a mapping"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ba2c9f3e30c78109763eec02c8d9ead4d34f91b032f7190aee7d1e5f94ec7a75","typeString":"literal_string \"Only contracts which can hold veBAL can set up a mapping\""}],"id":10422,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4861:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4861:98:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10428,"nodeType":"ExpressionStatement","src":"4861:98:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10430,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"4977:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4999:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4991:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10431,"name":"address","nodeType":"ElementaryTypeName","src":"4991:7:76","typeDescriptions":{}}},"id":10434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4991:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4977:24:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5a65726f20616464726573732063616e6e6f7420626520757365642061732072656d6f74652075736572","id":10436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5003:44:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_bcca65c2aa909a27de1fc1144ea314596d8dd2103bf860bb53c5362ef10f09c3","typeString":"literal_string \"Zero address cannot be used as remote user\""},"value":"Zero address cannot be used as remote user"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bcca65c2aa909a27de1fc1144ea314596d8dd2103bf860bb53c5362ef10f09c3","typeString":"literal_string \"Zero address cannot be used as remote user\""}],"id":10429,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4969:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4969:79:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10438,"nodeType":"ExpressionStatement","src":"4969:79:76"},{"assignments":[10440],"declarations":[{"constant":false,"id":10440,"mutability":"mutable","name":"omniVotingEscrowAdaptor","nodeType":"VariableDeclaration","scope":10633,"src":"5058:48:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"},"typeName":{"id":10439,"name":"IOmniVotingEscrowAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":1005,"src":"5058:24:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"visibility":"internal"}],"id":10443,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10441,"name":"getOmniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10275,"src":"5109:26:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IOmniVotingEscrowAdaptor_$1005_$","typeString":"function () view returns (contract IOmniVotingEscrowAdaptor)"}},"id":10442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5109:28:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"nodeType":"VariableDeclarationStatement","src":"5058:79:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":10445,"name":"_remoteToLocalAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10230,"src":"6480:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10447,"indexExpression":{"id":10446,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"6505:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6480:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10449,"indexExpression":{"id":10448,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"6514:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6480:45:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6537:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6529:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10450,"name":"address","nodeType":"ElementaryTypeName","src":"6529:7:76","typeDescriptions":{}}},"id":10453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6529:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6480:59:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f74206f766572777269746520616e206578697374696e67206d617070696e6720627920616e6f746865722075736572","id":10455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6553:54:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d60b1648497bb2585711d8b829f8679312916c2322dc0d4d4bc0baac0ced59","typeString":"literal_string \"Cannot overwrite an existing mapping by another user\""},"value":"Cannot overwrite an existing mapping by another user"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c5d60b1648497bb2585711d8b829f8679312916c2322dc0d4d4bc0baac0ced59","typeString":"literal_string \"Cannot overwrite an existing mapping by another user\""}],"id":10444,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6459:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6459:158:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10457,"nodeType":"ExpressionStatement","src":"6459:158:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":10459,"name":"_localToRemoteAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10224,"src":"6821:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10461,"indexExpression":{"id":10460,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"6846:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6821:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10463,"indexExpression":{"id":10462,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"6855:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6821:45:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6878:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6870:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10464,"name":"address","nodeType":"ElementaryTypeName","src":"6870:7:76","typeDescriptions":{}}},"id":10467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6870:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6821:59:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f742072656d617020746f20616e2061646472657373207468617420697320696e20757365206c6f63616c6c79","id":10469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6894:51:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_6904f10762e9eda76981ecb18d65c42b557854f71b863e297d75c7fd94490c4e","typeString":"literal_string \"Cannot remap to an address that is in use locally\""},"value":"Cannot remap to an address that is in use locally"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6904f10762e9eda76981ecb18d65c42b557854f71b863e297d75c7fd94490c4e","typeString":"literal_string \"Cannot remap to an address that is in use locally\""}],"id":10458,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6800:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6800:155:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10471,"nodeType":"ExpressionStatement","src":"6800:155:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":10473,"name":"_remoteToLocalAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10230,"src":"7165:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10475,"indexExpression":{"id":10474,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"7190:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7165:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10477,"indexExpression":{"id":10476,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"7199:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7165:44:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7221:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7213:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10478,"name":"address","nodeType":"ElementaryTypeName","src":"7213:7:76","typeDescriptions":{}}},"id":10481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7213:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7165:58:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f742072656d617020746f20616e2061646472657373207468617420697320696e207573652072656d6f74656c79","id":10483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7237:52:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_7e20875c71eb6a849ac154acbacaaf65263ff2267d67f5cfd34e758fa548c9ad","typeString":"literal_string \"Cannot remap to an address that is in use remotely\""},"value":"Cannot remap to an address that is in use remotely"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7e20875c71eb6a849ac154acbacaaf65263ff2267d67f5cfd34e758fa548c9ad","typeString":"literal_string \"Cannot remap to an address that is in use remotely\""}],"id":10472,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7144:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7144:155:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10485,"nodeType":"ExpressionStatement","src":"7144:155:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10489,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"7532:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10487,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10216,"src":"7508:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2386,"src":"7508:23:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7508:35:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7547:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7508:40:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5461726765742072656d6f7465206164647265737320686173206e6f6e2d7a65726f20766542414c2062616c616e6365","id":10493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7550:50:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_4b677b4c67ef2a3ff3463b0c4fdc04ab0778631119f9368a6a56c6cbce5e10d7","typeString":"literal_string \"Target remote address has non-zero veBAL balance\""},"value":"Target remote address has non-zero veBAL balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4b677b4c67ef2a3ff3463b0c4fdc04ab0778631119f9368a6a56c6cbce5e10d7","typeString":"literal_string \"Target remote address has non-zero veBAL balance\""}],"id":10486,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7500:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7500:101:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10495,"nodeType":"ExpressionStatement","src":"7500:101:76"},{"assignments":[10497],"declarations":[{"constant":false,"id":10497,"mutability":"mutable","name":"oldRemoteUser","nodeType":"VariableDeclaration","scope":10633,"src":"7680:21:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10496,"name":"address","nodeType":"ElementaryTypeName","src":"7680:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10503,"initialValue":{"baseExpression":{"baseExpression":{"id":10498,"name":"_localToRemoteAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10224,"src":"7704:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10500,"indexExpression":{"id":10499,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"7729:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7704:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10502,"indexExpression":{"id":10501,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"7738:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7704:44:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7680:68:76"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10504,"name":"oldRemoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"7762:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7787:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7779:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10505,"name":"address","nodeType":"ElementaryTypeName","src":"7779:7:76","typeDescriptions":{}}},"id":10508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7779:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7762:27:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10527,"nodeType":"IfStatement","src":"7758:189:76","trueBody":{"id":10526,"nodeType":"Block","src":"7791:156:76","statements":[{"expression":{"id":10519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10510,"name":"_remoteToLocalAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10230,"src":"7805:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10513,"indexExpression":{"id":10511,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"7830:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7805:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10514,"indexExpression":{"id":10512,"name":"oldRemoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"7839:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7805:48:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":10517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7864:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7856:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10515,"name":"address","nodeType":"ElementaryTypeName","src":"7856:7:76","typeDescriptions":{}}},"id":10518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7856:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7805:61:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10520,"nodeType":"ExpressionStatement","src":"7805:61:76"},{"eventCall":{"arguments":[{"id":10522,"name":"oldRemoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"7913:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10523,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"7928:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":10521,"name":"RemoteAddressMappingCleared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1579,"src":"7885:27:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint16_$returns$__$","typeString":"function (address,uint16)"}},"id":10524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7885:51:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10525,"nodeType":"EmitStatement","src":"7880:56:76"}]}},{"expression":{"id":10534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10528,"name":"_remoteToLocalAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10230,"src":"7990:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10531,"indexExpression":{"id":10529,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"8015:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7990:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10532,"indexExpression":{"id":10530,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"8024:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7990:45:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10533,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"8038:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7990:57:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10535,"nodeType":"ExpressionStatement","src":"7990:57:76"},{"expression":{"id":10542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10536,"name":"_localToRemoteAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10224,"src":"8057:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10539,"indexExpression":{"id":10537,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"8082:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8057:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10540,"indexExpression":{"id":10538,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"8091:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8057:44:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10541,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"8104:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8057:57:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10543,"nodeType":"ExpressionStatement","src":"8057:57:76"},{"eventCall":{"arguments":[{"id":10545,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"8152:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10546,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"8163:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10547,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"8175:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":10544,"name":"AddressMappingUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1573,"src":"8130:21:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint16_$returns$__$","typeString":"function (address,address,uint16)"}},"id":10548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8130:53:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10549,"nodeType":"EmitStatement","src":"8125:58:76"},{"assignments":[10551,null],"declarations":[{"constant":false,"id":10551,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":10633,"src":"8388:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10550,"name":"uint256","nodeType":"ElementaryTypeName","src":"8388:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":10556,"initialValue":{"arguments":[{"id":10554,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"8459:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":10552,"name":"omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10440,"src":"8411:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":10553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"estimateSendUserBalance","nodeType":"MemberAccess","referencedDeclaration":994,"src":"8411:47:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint16_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint16) view external returns (uint256,uint256)"}},"id":10555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8411:56:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"8387:80:76"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10557,"name":"oldRemoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"8481:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8506:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8498:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10558,"name":"address","nodeType":"ElementaryTypeName","src":"8498:7:76","typeDescriptions":{}}},"id":10561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8498:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"8481:27:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10596,"nodeType":"Block","src":"8947:99:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10589,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8969:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"8969:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":10591,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10551,"src":"8982:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8969:22:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742045544820746f2062726964676520757365722062616c616e6365","id":10593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8993:41:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_67d0b83aa3e4b63e58dd50b0bfbe3bc5b8f09d03163a0b3b3efb7a5a6563221e","typeString":"literal_string \"Insufficient ETH to bridge user balance\""},"value":"Insufficient ETH to bridge user balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67d0b83aa3e4b63e58dd50b0bfbe3bc5b8f09d03163a0b3b3efb7a5a6563221e","typeString":"literal_string \"Insufficient ETH to bridge user balance\""}],"id":10588,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8961:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8961:74:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10595,"nodeType":"ExpressionStatement","src":"8961:74:76"}]},"id":10597,"nodeType":"IfStatement","src":"8477:569:76","trueBody":{"id":10587,"nodeType":"Block","src":"8510:431:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10564,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8532:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"8532:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10566,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10551,"src":"8545:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":10567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8557:1:76","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"8545:13:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8532:26:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742045544820746f2062726964676520757365722062616c616e6365","id":10570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8560:41:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_67d0b83aa3e4b63e58dd50b0bfbe3bc5b8f09d03163a0b3b3efb7a5a6563221e","typeString":"literal_string \"Insufficient ETH to bridge user balance\""},"value":"Insufficient ETH to bridge user balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67d0b83aa3e4b63e58dd50b0bfbe3bc5b8f09d03163a0b3b3efb7a5a6563221e","typeString":"literal_string \"Insufficient ETH to bridge user balance\""}],"id":10563,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8524:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8524:78:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10572,"nodeType":"ExpressionStatement","src":"8524:78:76"},{"expression":{"arguments":[{"id":10578,"name":"oldRemoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"8886:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10579,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"8901:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"arguments":[{"expression":{"id":10582,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8918:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8918:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8910:8:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":10580,"name":"address","nodeType":"ElementaryTypeName","src":"8910:8:76","stateMutability":"payable","typeDescriptions":{}}},"id":10584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8910:19:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":10573,"name":"omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10440,"src":"8826:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":10575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendUserBalance","nodeType":"MemberAccess","referencedDeclaration":1004,"src":"8826:39:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$","typeString":"function (address,uint16,address payable) payable external"}},"id":10577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":10576,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10551,"src":"8874:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"8826:59:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$value","typeString":"function (address,uint16,address payable) payable external"}},"id":10585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8826:104:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10586,"nodeType":"ExpressionStatement","src":"8826:104:76"}]}},{"expression":{"arguments":[{"id":10603,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"9184:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10604,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10400,"src":"9195:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"arguments":[{"expression":{"id":10607,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9212:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9212:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9204:8:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":10605,"name":"address","nodeType":"ElementaryTypeName","src":"9204:8:76","stateMutability":"payable","typeDescriptions":{}}},"id":10609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9204:19:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":10598,"name":"omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10440,"src":"9124:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":10600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendUserBalance","nodeType":"MemberAccess","referencedDeclaration":1004,"src":"9124:39:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$","typeString":"function (address,uint16,address payable) payable external"}},"id":10602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":10601,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10551,"src":"9172:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"9124:59:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$value","typeString":"function (address,uint16,address payable) payable external"}},"id":10610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9124:100:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10611,"nodeType":"ExpressionStatement","src":"9124:100:76"},{"assignments":[10613],"declarations":[{"constant":false,"id":10613,"mutability":"mutable","name":"remainingBalance","nodeType":"VariableDeclaration","scope":10633,"src":"9288:24:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10612,"name":"uint256","nodeType":"ElementaryTypeName","src":"9288:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10619,"initialValue":{"expression":{"arguments":[{"id":10616,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9323:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_VotingEscrowRemapper_$10848","typeString":"contract VotingEscrowRemapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VotingEscrowRemapper_$10848","typeString":"contract VotingEscrowRemapper"}],"id":10615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9315:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10614,"name":"address","nodeType":"ElementaryTypeName","src":"9315:7:76","typeDescriptions":{}}},"id":10617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9315:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"9315:21:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9288:48:76"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10620,"name":"remainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10613,"src":"9350:16:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9369:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9350:20:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10632,"nodeType":"IfStatement","src":"9346:98:76","trueBody":{"id":10631,"nodeType":"Block","src":"9372:72:76","statements":[{"expression":{"arguments":[{"expression":{"id":10626,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9404:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9404:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":10628,"name":"remainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10613,"src":"9416:16:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10623,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"9386:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$5850_$","typeString":"type(library Address)"}},"id":10625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":5740,"src":"9386:17:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":10629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9386:47:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10630,"nodeType":"ExpressionStatement","src":"9386:47:76"}]}}]},"documentation":{"id":10394,"nodeType":"StructuredDocumentation","src":"4535:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"21861fde","id":10634,"implemented":true,"kind":"function","modifiers":[{"id":10404,"modifierName":{"id":10403,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"4717:12:76","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4717:12:76"}],"name":"setNetworkRemapping","nodeType":"FunctionDefinition","overrides":{"id":10402,"nodeType":"OverrideSpecifier","overrides":[],"src":"4708:8:76"},"parameters":{"id":10401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10396,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":10634,"src":"4615:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10395,"name":"address","nodeType":"ElementaryTypeName","src":"4615:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10398,"mutability":"mutable","name":"remoteUser","nodeType":"VariableDeclaration","scope":10634,"src":"4642:18:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10397,"name":"address","nodeType":"ElementaryTypeName","src":"4642:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10400,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":10634,"src":"4670:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":10399,"name":"uint16","nodeType":"ElementaryTypeName","src":"4670:6:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"4605:85:76"},"returnParameters":{"id":10405,"nodeType":"ParameterList","parameters":[],"src":"4730:0:76"},"scope":10848,"src":"4577:4873:76","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1665],"body":{"id":10665,"nodeType":"Block","src":"9651:227:76","statements":[{"expression":{"arguments":[{"arguments":[{"id":10649,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10637,"src":"9688:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10648,"name":"_isAllowedContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10847,"src":"9669:18:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":10650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9669:29:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c7920636f6e7472616374732077686963682063616e20686f6c6420766542414c206d6179206861766520612064656c6567617465","id":10651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9700:57:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_c3f28b1715aa1ceb3cf23e62c4019d828f7c20fd7c1ffbcedf8c8364babc475d","typeString":"literal_string \"Only contracts which can hold veBAL may have a delegate\""},"value":"Only contracts which can hold veBAL may have a delegate"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c3f28b1715aa1ceb3cf23e62c4019d828f7c20fd7c1ffbcedf8c8364babc475d","typeString":"literal_string \"Only contracts which can hold veBAL may have a delegate\""}],"id":10647,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9661:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9661:97:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10653,"nodeType":"ExpressionStatement","src":"9661:97:76"},{"expression":{"id":10658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10654,"name":"_localRemappingManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10234,"src":"9769:22:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10656,"indexExpression":{"id":10655,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10637,"src":"9792:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9769:33:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10657,"name":"delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10639,"src":"9805:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9769:44:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10659,"nodeType":"ExpressionStatement","src":"9769:44:76"},{"eventCall":{"arguments":[{"id":10661,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10637,"src":"9851:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10662,"name":"delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10639,"src":"9862:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10660,"name":"AddressDelegateUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1585,"src":"9828:22:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":10663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9828:43:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10664,"nodeType":"EmitStatement","src":"9823:48:76"}]},"documentation":{"id":10635,"nodeType":"StructuredDocumentation","src":"9456:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"a9f3f44e","id":10666,"implemented":true,"kind":"function","modifiers":[{"id":10643,"modifierName":{"id":10642,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"9613:12:76","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"9613:12:76"},{"id":10645,"modifierName":{"id":10644,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"9634:12:76","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"9634:12:76"}],"name":"setNetworkRemappingManager","nodeType":"FunctionDefinition","overrides":{"id":10641,"nodeType":"OverrideSpecifier","overrides":[],"src":"9596:8:76"},"parameters":{"id":10640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10637,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":10666,"src":"9534:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10636,"name":"address","nodeType":"ElementaryTypeName","src":"9534:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10639,"mutability":"mutable","name":"delegate","nodeType":"VariableDeclaration","scope":10666,"src":"9553:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10638,"name":"address","nodeType":"ElementaryTypeName","src":"9553:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9533:37:76"},"returnParameters":{"id":10646,"nodeType":"ParameterList","parameters":[],"src":"9651:0:76"},"scope":10848,"src":"9498:380:76","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1673],"body":{"id":10825,"nodeType":"Block","src":"10031:1613:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10678,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10669,"src":"10049:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10070:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10680,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10062:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10679,"name":"address","nodeType":"ElementaryTypeName","src":"10062:7:76","typeDescriptions":{}}},"id":10682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10062:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"10049:23:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6c6f63616c557365722063616e6e6f74206265207a65726f2061646472657373","id":10684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10074:34:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_549b90accaac9d76faf36af1a2a00547ceaaf81be26666fb1e986ea69c7ca800","typeString":"literal_string \"localUser cannot be zero address\""},"value":"localUser cannot be zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_549b90accaac9d76faf36af1a2a00547ceaaf81be26666fb1e986ea69c7ca800","typeString":"literal_string \"localUser cannot be zero address\""}],"id":10677,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10041:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10041:68:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10686,"nodeType":"ExpressionStatement","src":"10041:68:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10127:30:76","subExpression":{"arguments":[{"id":10689,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10669,"src":"10147:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10688,"name":"_isAllowedContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10847,"src":"10128:18:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":10690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10128:29:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10692,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10669,"src":"10161:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10693,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10174:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10174:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"10161:23:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10127:57:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6c6f63616c55736572206973207374696c6c20696e20676f6f64207374616e64696e67","id":10697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10186:37:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f186dfe5115d87c4d1a7c9454f867e8a0ddda68adc4c3a83ec4e3b84a6edc5a","typeString":"literal_string \"localUser is still in good standing\""},"value":"localUser is still in good standing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f186dfe5115d87c4d1a7c9454f867e8a0ddda68adc4c3a83ec4e3b84a6edc5a","typeString":"literal_string \"localUser is still in good standing\""}],"id":10687,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10119:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10119:105:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10699,"nodeType":"ExpressionStatement","src":"10119:105:76"},{"assignments":[10701],"declarations":[{"constant":false,"id":10701,"mutability":"mutable","name":"omniVotingEscrowAdaptor","nodeType":"VariableDeclaration","scope":10825,"src":"10234:48:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"},"typeName":{"id":10700,"name":"IOmniVotingEscrowAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":1005,"src":"10234:24:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"visibility":"internal"}],"id":10704,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10702,"name":"getOmniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10275,"src":"10285:26:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IOmniVotingEscrowAdaptor_$1005_$","typeString":"function () view returns (contract IOmniVotingEscrowAdaptor)"}},"id":10703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10285:28:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"nodeType":"VariableDeclarationStatement","src":"10234:79:76"},{"assignments":[10706],"declarations":[{"constant":false,"id":10706,"mutability":"mutable","name":"remoteUser","nodeType":"VariableDeclaration","scope":10825,"src":"10324:18:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10705,"name":"address","nodeType":"ElementaryTypeName","src":"10324:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10712,"initialValue":{"baseExpression":{"baseExpression":{"id":10707,"name":"_localToRemoteAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10224,"src":"10345:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10709,"indexExpression":{"id":10708,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"10370:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10345:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10711,"indexExpression":{"id":10710,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10669,"src":"10379:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10345:44:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10324:65:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10714,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"10407:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10429:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10421:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10715,"name":"address","nodeType":"ElementaryTypeName","src":"10421:7:76","typeDescriptions":{}}},"id":10718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10421:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"10407:24:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52656d617070696e6720746f20636c65617220646f6573206e6f74206578697374","id":10720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10433:35:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_ae613414627fb99cd1031bdbd8734f3fa0ddab306b4adb54734790cdc297bfd5","typeString":"literal_string \"Remapping to clear does not exist\""},"value":"Remapping to clear does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ae613414627fb99cd1031bdbd8734f3fa0ddab306b4adb54734790cdc297bfd5","typeString":"literal_string \"Remapping to clear does not exist\""}],"id":10713,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10399:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10399:70:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10722,"nodeType":"ExpressionStatement","src":"10399:70:76"},{"expression":{"id":10732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10723,"name":"_remoteToLocalAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10230,"src":"10480:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10726,"indexExpression":{"id":10724,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"10505:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10480:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10727,"indexExpression":{"id":10725,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"10514:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10480:45:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":10730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10536:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10528:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10728,"name":"address","nodeType":"ElementaryTypeName","src":"10528:7:76","typeDescriptions":{}}},"id":10731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10528:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"10480:58:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10733,"nodeType":"ExpressionStatement","src":"10480:58:76"},{"expression":{"id":10743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10734,"name":"_localToRemoteAddressMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10224,"src":"10548:24:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(uint16 => mapping(address => address))"}},"id":10737,"indexExpression":{"id":10735,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"10573:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10548:33:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":10738,"indexExpression":{"id":10736,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10669,"src":"10582:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10548:44:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":10741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10603:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10595:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10739,"name":"address","nodeType":"ElementaryTypeName","src":"10595:7:76","typeDescriptions":{}}},"id":10742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10595:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"10548:57:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10744,"nodeType":"ExpressionStatement","src":"10548:57:76"},{"eventCall":{"arguments":[{"id":10746,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10669,"src":"10643:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":10749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10662:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10654:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10747,"name":"address","nodeType":"ElementaryTypeName","src":"10654:7:76","typeDescriptions":{}}},"id":10750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10654:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":10751,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"10666:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":10745,"name":"AddressMappingUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1573,"src":"10621:21:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint16_$returns$__$","typeString":"function (address,address,uint16)"}},"id":10752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10621:53:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10753,"nodeType":"EmitStatement","src":"10616:58:76"},{"eventCall":{"arguments":[{"id":10755,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"10717:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10756,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"10729:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":10754,"name":"RemoteAddressMappingCleared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1579,"src":"10689:27:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint16_$returns$__$","typeString":"function (address,uint16)"}},"id":10757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10689:48:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10758,"nodeType":"EmitStatement","src":"10684:53:76"},{"assignments":[10760,null],"declarations":[{"constant":false,"id":10760,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":10825,"src":"11029:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10759,"name":"uint256","nodeType":"ElementaryTypeName","src":"11029:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":10765,"initialValue":{"arguments":[{"id":10763,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"11100:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":10761,"name":"omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10701,"src":"11052:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":10762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"estimateSendUserBalance","nodeType":"MemberAccess","referencedDeclaration":994,"src":"11052:47:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint16_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint16) view external returns (uint256,uint256)"}},"id":10764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11052:56:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11028:80:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10767,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11126:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"11126:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10769,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10760,"src":"11139:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":10770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11151:1:76","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11139:13:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11126:26:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742045544820746f2062726964676520757365722062616c616e6365","id":10773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11154:41:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_67d0b83aa3e4b63e58dd50b0bfbe3bc5b8f09d03163a0b3b3efb7a5a6563221e","typeString":"literal_string \"Insufficient ETH to bridge user balance\""},"value":"Insufficient ETH to bridge user balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67d0b83aa3e4b63e58dd50b0bfbe3bc5b8f09d03163a0b3b3efb7a5a6563221e","typeString":"literal_string \"Insufficient ETH to bridge user balance\""}],"id":10766,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11118:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11118:78:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10775,"nodeType":"ExpressionStatement","src":"11118:78:76"},{"expression":{"arguments":[{"id":10781,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10669,"src":"11267:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10782,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"11278:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"arguments":[{"expression":{"id":10785,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11295:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"11295:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11287:8:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":10783,"name":"address","nodeType":"ElementaryTypeName","src":"11287:8:76","stateMutability":"payable","typeDescriptions":{}}},"id":10787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11287:19:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":10776,"name":"omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10701,"src":"11207:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":10778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendUserBalance","nodeType":"MemberAccess","referencedDeclaration":1004,"src":"11207:39:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$","typeString":"function (address,uint16,address payable) payable external"}},"id":10780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":10779,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10760,"src":"11255:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"11207:59:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$value","typeString":"function (address,uint16,address payable) payable external"}},"id":10788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11207:100:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10789,"nodeType":"ExpressionStatement","src":"11207:100:76"},{"expression":{"arguments":[{"id":10795,"name":"remoteUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"11377:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10796,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"11389:7:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"arguments":[{"expression":{"id":10799,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11406:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"11406:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11398:8:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":10797,"name":"address","nodeType":"ElementaryTypeName","src":"11398:8:76","stateMutability":"payable","typeDescriptions":{}}},"id":10801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11398:19:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":10790,"name":"omniVotingEscrowAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10701,"src":"11317:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrowAdaptor_$1005","typeString":"contract IOmniVotingEscrowAdaptor"}},"id":10792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendUserBalance","nodeType":"MemberAccess","referencedDeclaration":1004,"src":"11317:39:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$","typeString":"function (address,uint16,address payable) payable external"}},"id":10794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":10793,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10760,"src":"11365:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"11317:59:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_address_payable_$returns$__$value","typeString":"function (address,uint16,address payable) payable external"}},"id":10802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11317:101:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10803,"nodeType":"ExpressionStatement","src":"11317:101:76"},{"assignments":[10805],"declarations":[{"constant":false,"id":10805,"mutability":"mutable","name":"remainingBalance","nodeType":"VariableDeclaration","scope":10825,"src":"11482:24:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10804,"name":"uint256","nodeType":"ElementaryTypeName","src":"11482:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10811,"initialValue":{"expression":{"arguments":[{"id":10808,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11517:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_VotingEscrowRemapper_$10848","typeString":"contract VotingEscrowRemapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VotingEscrowRemapper_$10848","typeString":"contract VotingEscrowRemapper"}],"id":10807,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11509:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10806,"name":"address","nodeType":"ElementaryTypeName","src":"11509:7:76","typeDescriptions":{}}},"id":10809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11509:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"11509:21:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11482:48:76"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10812,"name":"remainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10805,"src":"11544:16:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11563:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11544:20:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10824,"nodeType":"IfStatement","src":"11540:98:76","trueBody":{"id":10823,"nodeType":"Block","src":"11566:72:76","statements":[{"expression":{"arguments":[{"expression":{"id":10818,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11598:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"11598:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":10820,"name":"remainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10805,"src":"11610:16:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10815,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"11580:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$5850_$","typeString":"type(library Address)"}},"id":10817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":5740,"src":"11580:17:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":10821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11580:47:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10822,"nodeType":"ExpressionStatement","src":"11580:47:76"}]}}]},"documentation":{"id":10667,"nodeType":"StructuredDocumentation","src":"9884:37:76","text":"@inheritdoc IVotingEscrowRemapper"},"functionSelector":"76601a18","id":10826,"implemented":true,"kind":"function","modifiers":[{"id":10675,"modifierName":{"id":10674,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"10018:12:76","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"10018:12:76"}],"name":"clearNetworkRemapping","nodeType":"FunctionDefinition","overrides":{"id":10673,"nodeType":"OverrideSpecifier","overrides":[],"src":"10009:8:76"},"parameters":{"id":10672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10669,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":10826,"src":"9957:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10668,"name":"address","nodeType":"ElementaryTypeName","src":"9957:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10671,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":10826,"src":"9976:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":10670,"name":"uint16","nodeType":"ElementaryTypeName","src":"9976:6:76","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"9956:35:76"},"returnParameters":{"id":10676,"nodeType":"ParameterList","parameters":[],"src":"10031:0:76"},"scope":10848,"src":"9926:1718:76","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":10846,"nodeType":"Block","src":"11941:150:76","statements":[{"assignments":[10835],"declarations":[{"constant":false,"id":10835,"mutability":"mutable","name":"smartWalletChecker","nodeType":"VariableDeclaration","scope":10846,"src":"11951:38:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"},"typeName":{"id":10834,"name":"ISmartWalletChecker","nodeType":"UserDefinedTypeName","referencedDeclaration":1215,"src":"11951:19:76","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"visibility":"internal"}],"id":10840,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10836,"name":"getVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10265,"src":"11992:15:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVotingEscrow_$1559_$","typeString":"function () view returns (contract IVotingEscrow)"}},"id":10837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11992:17:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":10838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"smart_wallet_checker","nodeType":"MemberAccess","referencedDeclaration":1543,"src":"11992:38:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ISmartWalletChecker_$1215_$","typeString":"function () view external returns (contract ISmartWalletChecker)"}},"id":10839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11992:40:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"nodeType":"VariableDeclarationStatement","src":"11951:81:76"},{"expression":{"arguments":[{"id":10843,"name":"localUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10829,"src":"12074:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10841,"name":"smartWalletChecker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10835,"src":"12049:18:76","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"id":10842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"check","nodeType":"MemberAccess","referencedDeclaration":1214,"src":"12049:24:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":10844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12049:35:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10833,"id":10845,"nodeType":"Return","src":"12042:42:76"}]},"documentation":{"id":10827,"nodeType":"StructuredDocumentation","src":"11677:184:76","text":" @notice Returns whether `localUser` is a contract which is authorized to hold veBAL.\n @param localUser - The address to check against the `SmartWalletChecker`."},"id":10847,"implemented":true,"kind":"function","modifiers":[],"name":"_isAllowedContract","nodeType":"FunctionDefinition","parameters":{"id":10830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10829,"mutability":"mutable","name":"localUser","nodeType":"VariableDeclaration","scope":10847,"src":"11894:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10828,"name":"address","nodeType":"ElementaryTypeName","src":"11894:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11893:19:76"},"returnParameters":{"id":10833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10832,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10847,"src":"11935:4:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10831,"name":"bool","nodeType":"ElementaryTypeName","src":"11935:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11934:6:76"},"scope":10848,"src":"11866:225:76","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":10849,"src":"1865:10228:76"}],"src":"688:11406:76"},"id":76},"contracts/admin/AuthorizerAdaptor.sol":{"ast":{"absolutePath":"contracts/admin/AuthorizerAdaptor.sol","exportedSymbols":{"AuthorizerAdaptor":[10990]},"id":10991,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10850,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:77"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","id":10851,"nodeType":"ImportDirective","scope":10991,"sourceUnit":50,"src":"713:88:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","id":10852,"nodeType":"ImportDirective","scope":10991,"sourceUnit":2503,"src":"802:70:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":10853,"nodeType":"ImportDirective","scope":10991,"sourceUnit":3052,"src":"873:65:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":10854,"nodeType":"ImportDirective","scope":10991,"sourceUnit":7188,"src":"940:85:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":10855,"nodeType":"ImportDirective","scope":10991,"sourceUnit":5851,"src":"1026:77:77","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10857,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"2243:18:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":10858,"nodeType":"InheritanceSpecifier","src":"2243:18:77"},{"baseName":{"id":10859,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"2263:15:77","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":10860,"nodeType":"InheritanceSpecifier","src":"2263:15:77"}],"contractDependencies":[49,2259,7187],"contractKind":"contract","documentation":{"id":10856,"nodeType":"StructuredDocumentation","src":"1105:1107:77","text":" @title Authorizer Adaptor\n WARNING: this contract contains a *critical bug* that can lead into exploits where it checks for permissions\n incorrectly. It should *never* be used by itself. We keep a copy of it in the repository, including the bug and all\n original comments (some of which are incorrect due to the bug), both for historical reasons and because it is part of\n our immutable infrastructure. See the `AuthorizerAdaptorEntrypoint` contract for more information on how we use this\n contract safely.\n @notice This contract is intended to act as an adaptor between systems which expect a single admin address\n and the Balancer Authorizer such that the Authorizer may grant/revoke admin powers to unlimited addresses.\n The permissions the Authorizer can grant are granular such they may be global or specific to a particular contract\n @dev When calculating the actionId to call a function on a target contract, it must be calculated as if it were\n to be called on this adaptor. This can be done by passing the function selector to the `getActionId` function."},"fullyImplemented":true,"id":10990,"linearizedBaseContracts":[10990,7187,49,2259],"name":"AuthorizerAdaptor","nodeType":"ContractDefinition","nodes":[{"id":10863,"libraryName":{"id":10861,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":5850,"src":"2291:7:77","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$5850","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"2285:26:77","typeName":{"id":10862,"name":"address","nodeType":"ElementaryTypeName","src":"2303:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":false,"id":10865,"mutability":"immutable","name":"_actionIdDisambiguator","nodeType":"VariableDeclaration","scope":10990,"src":"2317:48:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10864,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2317:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":10867,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":10990,"src":"2371:31:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":10866,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"2371:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"private"},{"body":{"id":10889,"nodeType":"Block","src":"2435:211:77","statements":[{"expression":{"id":10883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10872,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"2559:22:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":10879,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2608:4:77","typeDescriptions":{"typeIdentifier":"t_contract$_AuthorizerAdaptor_$10990","typeString":"contract AuthorizerAdaptor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AuthorizerAdaptor_$10990","typeString":"contract AuthorizerAdaptor"}],"id":10878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2600:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10877,"name":"address","nodeType":"ElementaryTypeName","src":"2600:7:77","typeDescriptions":{}}},"id":10880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2600:13:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10876,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2592:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10875,"name":"uint256","nodeType":"ElementaryTypeName","src":"2592:7:77","typeDescriptions":{}}},"id":10881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2592:22:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2584:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":10873,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2584:7:77","typeDescriptions":{}}},"id":10882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2584:31:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2559:56:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":10884,"nodeType":"ExpressionStatement","src":"2559:56:77"},{"expression":{"id":10887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10885,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10867,"src":"2625:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10886,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10869,"src":"2634:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"src":"2625:14:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"id":10888,"nodeType":"ExpressionStatement","src":"2625:14:77"}]},"id":10890,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":10870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10869,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":10890,"src":"2421:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":10868,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"2421:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"2420:14:77"},"returnParameters":{"id":10871,"nodeType":"ParameterList","parameters":[],"src":"2435:0:77"},"scope":10990,"src":"2409:237:77","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[32],"body":{"id":10899,"nodeType":"Block","src":"2768:30:77","statements":[{"expression":{"id":10897,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10867,"src":"2785:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"functionReturnParameters":10896,"id":10898,"nodeType":"Return","src":"2778:13:77"}]},"documentation":{"id":10891,"nodeType":"StructuredDocumentation","src":"2652:53:77","text":" @notice Returns the Balancer Vault"},"functionSelector":"8d928af8","id":10900,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","overrides":{"id":10893,"nodeType":"OverrideSpecifier","overrides":[],"src":"2742:8:77"},"parameters":{"id":10892,"nodeType":"ParameterList","parameters":[],"src":"2727:2:77"},"returnParameters":{"id":10896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10895,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10900,"src":"2760:6:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":10894,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"2760:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"2759:8:77"},"scope":10990,"src":"2710:88:77","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[38],"body":{"id":10912,"nodeType":"Block","src":"2926:50:77","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10907,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10900,"src":"2943:8:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view returns (contract IVault)"}},"id":10908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2943:10:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"id":10909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAuthorizer","nodeType":"MemberAccess","referencedDeclaration":2611,"src":"2943:24:77","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizer_$2502_$","typeString":"function () view external returns (contract IAuthorizer)"}},"id":10910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2943:26:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"functionReturnParameters":10906,"id":10911,"nodeType":"Return","src":"2936:33:77"}]},"documentation":{"id":10901,"nodeType":"StructuredDocumentation","src":"2804:49:77","text":" @notice Returns the Authorizer"},"functionSelector":"aaabadc5","id":10913,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","overrides":{"id":10903,"nodeType":"OverrideSpecifier","overrides":[],"src":"2895:8:77"},"parameters":{"id":10902,"nodeType":"ParameterList","parameters":[],"src":"2880:2:77"},"returnParameters":{"id":10906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10905,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10913,"src":"2913:11:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":10904,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"2913:11:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"2912:13:77"},"scope":10990,"src":"2858:118:77","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":10932,"nodeType":"Block","src":"3112:76:77","statements":[{"expression":{"arguments":[{"id":10927,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10915,"src":"3156:8:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10928,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10917,"src":"3166:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10929,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10919,"src":"3175:5:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10924,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10913,"src":"3129:13:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$2502_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":10925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3129:15:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"id":10926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":2501,"src":"3129:26:77","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":10930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3129:52:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10923,"id":10931,"nodeType":"Return","src":"3122:59:77"}]},"id":10933,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","parameters":{"id":10920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10915,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":10933,"src":"3012:16:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10914,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3012:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10917,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":10933,"src":"3038:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10916,"name":"address","nodeType":"ElementaryTypeName","src":"3038:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10919,"mutability":"mutable","name":"where","nodeType":"VariableDeclaration","scope":10933,"src":"3063:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10918,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3002:80:77"},"returnParameters":{"id":10923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10922,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10933,"src":"3106:4:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10921,"name":"bool","nodeType":"ElementaryTypeName","src":"3106:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3105:6:77"},"scope":10990,"src":"2982:206:77","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[2258],"body":{"id":10950,"nodeType":"Block","src":"3846:85:77","statements":[{"expression":{"arguments":[{"arguments":[{"id":10945,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"3890:22:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10946,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10936,"src":"3914:8:77","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":10943,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3873:3:77","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":10944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3873:16:77","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":10947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3873:50:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10942,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3863:9:77","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":10948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3863:61:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":10941,"id":10949,"nodeType":"Return","src":"3856:68:77"}]},"documentation":{"id":10934,"nodeType":"StructuredDocumentation","src":"3194:570:77","text":" @notice Returns the action ID associated with calling a given function through this adaptor\n @dev As the contracts managed by this adaptor don't have action ID disambiguators, we use the adaptor's globally.\n This means that contracts with the same function selector will have a matching action ID:\n if granularity is required then permissions must not be granted globally in the Authorizer.\n @param selector - The 4 byte selector of the function to be called using `performAction`\n @return The associated action ID"},"functionSelector":"851c1bb3","id":10951,"implemented":true,"kind":"function","modifiers":[],"name":"getActionId","nodeType":"FunctionDefinition","overrides":{"id":10938,"nodeType":"OverrideSpecifier","overrides":[],"src":"3819:8:77"},"parameters":{"id":10937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10936,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":10951,"src":"3790:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10935,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3790:6:77","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3789:17:77"},"returnParameters":{"id":10941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10940,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10951,"src":"3837:7:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10939,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3837:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3836:9:77"},"scope":10990,"src":"3769:162:77","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[48],"body":{"id":10988,"nodeType":"Block","src":"4610:3477:77","statements":[{"assignments":[10965],"declarations":[{"constant":false,"id":10965,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":10988,"src":"6674:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10964,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6674:6:77","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":10966,"nodeType":"VariableDeclarationStatement","src":"6674:15:77"},{"AST":{"nodeType":"YulBlock","src":"7132:362:77","statements":[{"nodeType":"YulAssignment","src":"7455:29:77","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7480:3:77","type":"","value":"100"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7467:12:77"},"nodeType":"YulFunctionCall","src":"7467:17:77"},"variableNames":[{"name":"selector","nodeType":"YulIdentifier","src":"7455:8:77"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":10965,"isOffset":false,"isSlot":false,"src":"7455:8:77","valueSize":1}],"id":10967,"nodeType":"InlineAssembly","src":"7123:371:77"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":10971,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10965,"src":"7868:8:77","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":10970,"name":"getActionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10951,"src":"7856:11:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (bytes4) view returns (bytes32)"}},"id":10972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7856:21:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":10973,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7879:3:77","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7879:10:77","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":10975,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10954,"src":"7891:6:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10969,"name":"_canPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10933,"src":"7844:11:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view returns (bool)"}},"id":10976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7844:54:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":10977,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"7900:6:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":10978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SENDER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":2010,"src":"7900:25:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10968,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"7835:8:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":10979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7835:91:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10980,"nodeType":"ExpressionStatement","src":"7835:91:77"},{"expression":{"arguments":[{"id":10983,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10956,"src":"8064:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":10984,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8070:3:77","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"8070:9:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10981,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10954,"src":"8035:6:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionCallWithValue","nodeType":"MemberAccess","referencedDeclaration":5794,"src":"8035:28:77","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$","typeString":"function (address,bytes memory,uint256) returns (bytes memory)"}},"id":10986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8035:45:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":10963,"id":10987,"nodeType":"Return","src":"8028:52:77"}]},"documentation":{"id":10952,"nodeType":"StructuredDocumentation","src":"3937:502:77","text":" @notice Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\n This function should not be called directly as that will result in an unconditional revert: instead, use\n `AuthorizerAdaptorEntrypoint.performAction`.\n @param target - Address of the contract to be called\n @param data - Calldata to be sent to the target contract\n @return The bytes encoded return value from the performed function call"},"functionSelector":"4036176a","id":10989,"implemented":true,"kind":"function","modifiers":[{"id":10960,"modifierName":{"id":10959,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"4562:12:77","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4562:12:77"}],"name":"performAction","nodeType":"FunctionDefinition","overrides":{"id":10958,"nodeType":"OverrideSpecifier","overrides":[],"src":"4545:8:77"},"parameters":{"id":10957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10954,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":10989,"src":"4467:14:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10953,"name":"address","nodeType":"ElementaryTypeName","src":"4467:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10956,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":10989,"src":"4483:19:77","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":10955,"name":"bytes","nodeType":"ElementaryTypeName","src":"4483:5:77","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4466:37:77"},"returnParameters":{"id":10963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10962,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10989,"src":"4592:12:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10961,"name":"bytes","nodeType":"ElementaryTypeName","src":"4592:5:77","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4591:14:77"},"scope":10990,"src":"4444:3643:77","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":10991,"src":"2213:5876:77"}],"src":"688:7402:77"},"id":77},"contracts/admin/AuthorizerAdaptorEntrypoint.sol":{"ast":{"absolutePath":"contracts/admin/AuthorizerAdaptorEntrypoint.sol","exportedSymbols":{"AuthorizerAdaptorEntrypoint":[11187]},"id":11188,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10992,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:78"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","id":10993,"nodeType":"ImportDirective","scope":11188,"sourceUnit":63,"src":"713:98:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","id":10994,"nodeType":"ImportDirective","scope":11188,"sourceUnit":2503,"src":"812:70:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":10995,"nodeType":"ImportDirective","scope":11188,"sourceUnit":3052,"src":"883:65:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":10996,"nodeType":"ImportDirective","scope":11188,"sourceUnit":7188,"src":"950:85:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":10997,"nodeType":"ImportDirective","scope":11188,"sourceUnit":5851,"src":"1036:77:78","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10999,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"1587:28:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":11000,"nodeType":"InheritanceSpecifier","src":"1587:28:78"}],"contractDependencies":[49,62,2259],"contractKind":"contract","documentation":{"id":10998,"nodeType":"StructuredDocumentation","src":"1115:431:78","text":" @title Authorizer Adaptor Entrypoint\n @notice This contract exists as a fix for a critical bug in the `AuthorizerAdaptor` that could lead to escalation of\n privileges. The Entrypoint contract addresses this by working in combination with `TimelockAuthorizer` so that all\n Adaptor calls that are not made via the Entrypoint fail, while those that do happen through the Entrypoint check for\n permissions correctly."},"fullyImplemented":true,"id":11187,"linearizedBaseContracts":[11187,62,49,2259],"name":"AuthorizerAdaptorEntrypoint","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":11010,"name":"ActionPerformed","nodeType":"EventDefinition","parameters":{"id":11009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11002,"indexed":true,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":11010,"src":"1644:23:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11001,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1644:6:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":11004,"indexed":true,"mutability":"mutable","name":"caller","nodeType":"VariableDeclaration","scope":11010,"src":"1669:22:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11003,"name":"address","nodeType":"ElementaryTypeName","src":"1669:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11006,"indexed":true,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":11010,"src":"1693:22:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11005,"name":"address","nodeType":"ElementaryTypeName","src":"1693:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11008,"indexed":false,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":11010,"src":"1717:10:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11007,"name":"bytes","nodeType":"ElementaryTypeName","src":"1717:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1643:85:78"},"src":"1622:107:78"},{"id":11013,"libraryName":{"id":11011,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":5850,"src":"1741:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$5850","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1735:26:78","typeName":{"id":11012,"name":"address","nodeType":"ElementaryTypeName","src":"1753:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":false,"id":11015,"mutability":"immutable","name":"_adaptor","nodeType":"VariableDeclaration","scope":11187,"src":"1767:45:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":11014,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1767:18:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"private"},{"constant":false,"id":11017,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":11187,"src":"1818:31:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":11016,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1818:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"private"},{"body":{"id":11032,"nodeType":"Block","src":"1896:72:78","statements":[{"expression":{"id":11024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11022,"name":"_adaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11015,"src":"1906:8:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11023,"name":"adaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11019,"src":"1917:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"src":"1906:18:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":11025,"nodeType":"ExpressionStatement","src":"1906:18:78"},{"expression":{"id":11030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11026,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11017,"src":"1934:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11027,"name":"adaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11019,"src":"1943:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":11028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getVault","nodeType":"MemberAccess","referencedDeclaration":32,"src":"1943:16:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view external returns (contract IVault)"}},"id":11029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1943:18:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"src":"1934:27:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"id":11031,"nodeType":"ExpressionStatement","src":"1934:27:78"}]},"id":11033,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":11020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11019,"mutability":"mutable","name":"adaptor","nodeType":"VariableDeclaration","scope":11033,"src":"1868:26:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":11018,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1868:18:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"1867:28:78"},"returnParameters":{"id":11021,"nodeType":"ParameterList","parameters":[],"src":"1896:0:78"},"scope":11187,"src":"1856:112:78","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[32],"body":{"id":11041,"nodeType":"Block","src":"2032:30:78","statements":[{"expression":{"id":11039,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11017,"src":"2049:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"functionReturnParameters":11038,"id":11040,"nodeType":"Return","src":"2042:13:78"}]},"functionSelector":"8d928af8","id":11042,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","overrides":{"id":11035,"nodeType":"OverrideSpecifier","overrides":[],"src":"2006:8:78"},"parameters":{"id":11034,"nodeType":"ParameterList","parameters":[],"src":"1991:2:78"},"returnParameters":{"id":11038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11037,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11042,"src":"2024:6:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":11036,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"2024:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"2023:8:78"},"scope":11187,"src":"1974:88:78","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[38],"body":{"id":11053,"nodeType":"Block","src":"2136:50:78","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11048,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11042,"src":"2153:8:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view returns (contract IVault)"}},"id":11049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2153:10:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"id":11050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAuthorizer","nodeType":"MemberAccess","referencedDeclaration":2611,"src":"2153:24:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizer_$2502_$","typeString":"function () view external returns (contract IAuthorizer)"}},"id":11051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2153:26:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"functionReturnParameters":11047,"id":11052,"nodeType":"Return","src":"2146:33:78"}]},"functionSelector":"aaabadc5","id":11054,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","overrides":{"id":11044,"nodeType":"OverrideSpecifier","overrides":[],"src":"2105:8:78"},"parameters":{"id":11043,"nodeType":"ParameterList","parameters":[],"src":"2090:2:78"},"returnParameters":{"id":11047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11046,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11054,"src":"2123:11:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"},"typeName":{"id":11045,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2502,"src":"2123:11:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"2122:13:78"},"scope":11187,"src":"2068:118:78","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[61],"body":{"id":11062,"nodeType":"Block","src":"2274:32:78","statements":[{"expression":{"id":11060,"name":"_adaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11015,"src":"2291:8:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"functionReturnParameters":11059,"id":11061,"nodeType":"Return","src":"2284:15:78"}]},"functionSelector":"e758d36b","id":11063,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizerAdaptor","nodeType":"FunctionDefinition","overrides":{"id":11056,"nodeType":"OverrideSpecifier","overrides":[],"src":"2236:8:78"},"parameters":{"id":11055,"nodeType":"ParameterList","parameters":[],"src":"2221:2:78"},"returnParameters":{"id":11059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11058,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11063,"src":"2254:18:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":11057,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"2254:18:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"2253:20:78"},"scope":11187,"src":"2192:114:78","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":11082,"nodeType":"Block","src":"2439:76:78","statements":[{"expression":{"arguments":[{"id":11077,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11065,"src":"2483:8:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11078,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11067,"src":"2493:7:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11079,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11069,"src":"2502:5:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11074,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11054,"src":"2456:13:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$2502_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":11075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2456:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2502","typeString":"contract IAuthorizer"}},"id":11076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":2501,"src":"2456:26:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":11080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2456:52:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11073,"id":11081,"nodeType":"Return","src":"2449:59:78"}]},"functionSelector":"9be2a884","id":11083,"implemented":true,"kind":"function","modifiers":[],"name":"canPerform","nodeType":"FunctionDefinition","parameters":{"id":11070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11065,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":11083,"src":"2341:16:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11064,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2341:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11067,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":11083,"src":"2367:15:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11066,"name":"address","nodeType":"ElementaryTypeName","src":"2367:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11069,"mutability":"mutable","name":"where","nodeType":"VariableDeclaration","scope":11083,"src":"2392:13:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11068,"name":"address","nodeType":"ElementaryTypeName","src":"2392:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2331:80:78"},"returnParameters":{"id":11073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11072,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11083,"src":"2433:4:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11071,"name":"bool","nodeType":"ElementaryTypeName","src":"2433:4:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2432:6:78"},"scope":11187,"src":"2312:203:78","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2258],"body":{"id":11098,"nodeType":"Block","src":"3150:68:78","statements":[{"expression":{"arguments":[{"id":11095,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11086,"src":"3202:8:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11092,"name":"getAuthorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11063,"src":"3167:20:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizerAdaptor_$49_$","typeString":"function () view returns (contract IAuthorizerAdaptor)"}},"id":11093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3167:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":11094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getActionId","nodeType":"MemberAccess","referencedDeclaration":2258,"src":"3167:34:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (bytes4) view external returns (bytes32)"}},"id":11096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3167:44:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":11091,"id":11097,"nodeType":"Return","src":"3160:51:78"}]},"documentation":{"id":11084,"nodeType":"StructuredDocumentation","src":"2521:547:78","text":" @notice Returns the action ID associated with calling a given function through the `AuthorizerAdaptor`. Note that\n even though the Adaptor's action IDs are not actually used by it (since the Authorizer ignores those values - see\n `TimelockAuthorizer.canPerform`), this contract reuses those IDs to simplify migrations and tooling.\n See `AuthorizerAdaptor.getActionId` for more information on how the action IDs are computed, and how functions\n with equal selectors are assigned the same action ID."},"functionSelector":"851c1bb3","id":11099,"implemented":true,"kind":"function","modifiers":[],"name":"getActionId","nodeType":"FunctionDefinition","overrides":{"id":11088,"nodeType":"OverrideSpecifier","overrides":[],"src":"3123:8:78"},"parameters":{"id":11087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11086,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":11099,"src":"3094:15:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11085,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3094:6:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3093:17:78"},"returnParameters":{"id":11091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11090,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11099,"src":"3141:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11089,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3141:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3140:9:78"},"scope":11187,"src":"3073:145:78","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[48],"body":{"id":11185,"nodeType":"Block","src":"3333:1213:78","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11110,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"3696:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":11111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3696:11:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"34","id":11112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3711:1:78","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"3696:16:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":11114,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"3714:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":11115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INSUFFICIENT_DATA","nodeType":"MemberAccess","referencedDeclaration":1791,"src":"3714:24:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11109,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"3687:8:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":11116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3687:52:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11117,"nodeType":"ExpressionStatement","src":"3687:52:78"},{"assignments":[11119],"declarations":[{"constant":false,"id":11119,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":11185,"src":"3749:15:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11118,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3749:6:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":11153,"initialValue":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11120,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"3767:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":11122,"indexExpression":{"hexValue":"30","id":11121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3772:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3767:7:78","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":11125,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"3785:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":11127,"indexExpression":{"hexValue":"31","id":11126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3790:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3785:7:78","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":11124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3778:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":11123,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3778:6:78","typeDescriptions":{}}},"id":11128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3778:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":11129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3797:1:78","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"3778:20:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":11131,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3777:22:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3767:32:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":11135,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"3810:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":11137,"indexExpression":{"hexValue":"32","id":11136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3815:1:78","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3810:7:78","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":11134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3803:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":11133,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3803:6:78","typeDescriptions":{}}},"id":11138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3803:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":11139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3822:2:78","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"3803:21:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":11141,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3802:23:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3767:58:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":11145,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"3836:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":11147,"indexExpression":{"hexValue":"33","id":11146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3841:1:78","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3836:7:78","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":11144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3829:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":11143,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3829:6:78","typeDescriptions":{}}},"id":11148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3829:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3234","id":11149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3848:2:78","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},"src":"3829:21:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":11151,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3828:23:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3767:84:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"3749:102:78"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":11157,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11119,"src":"3894:8:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":11156,"name":"getActionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11099,"src":"3882:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (bytes4) view returns (bytes32)"}},"id":11158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3882:21:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":11159,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3905:3:78","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3905:10:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11161,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11101,"src":"3917:6:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":11155,"name":"canPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11083,"src":"3871:10:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view returns (bool)"}},"id":11162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3871:53:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":11163,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"3926:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":11164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SENDER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":2010,"src":"3926:25:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11154,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1692,1711],"referencedDeclaration":1692,"src":"3862:8:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":11165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3862:90:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11166,"nodeType":"ExpressionStatement","src":"3862:90:78"},{"eventCall":{"arguments":[{"id":11168,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11119,"src":"3984:8:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":11169,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3994:3:78","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3994:10:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11171,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11101,"src":"4006:6:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11172,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"4014:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":11167,"name":"ActionPerformed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11010,"src":"3968:15:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes4_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes4,address,address,bytes memory)"}},"id":11173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3968:51:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11174,"nodeType":"EmitStatement","src":"3963:56:78"},{"expression":{"arguments":[{"id":11181,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11101,"src":"4526:6:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11182,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"4534:4:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11175,"name":"getAuthorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11063,"src":"4469:20:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizerAdaptor_$49_$","typeString":"function () view returns (contract IAuthorizerAdaptor)"}},"id":11176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4469:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":11177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"performAction","nodeType":"MemberAccess","referencedDeclaration":48,"src":"4469:36:78","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":11180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":11178,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4514:3:78","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"4514:9:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4469:56:78","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$value","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":11183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4469:70:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11108,"id":11184,"nodeType":"Return","src":"4462:77:78"}]},"functionSelector":"4036176a","id":11186,"implemented":true,"kind":"function","modifiers":[],"name":"performAction","nodeType":"FunctionDefinition","overrides":{"id":11105,"nodeType":"OverrideSpecifier","overrides":[],"src":"3301:8:78"},"parameters":{"id":11104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11101,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":11186,"src":"3247:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11100,"name":"address","nodeType":"ElementaryTypeName","src":"3247:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11103,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":11186,"src":"3263:19:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11102,"name":"bytes","nodeType":"ElementaryTypeName","src":"3263:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3246:37:78"},"returnParameters":{"id":11108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11107,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11186,"src":"3319:12:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11106,"name":"bytes","nodeType":"ElementaryTypeName","src":"3319:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3318:14:78"},"scope":11187,"src":"3224:1322:78","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":11188,"src":"1547:3001:78"}],"src":"688:3861:78"},"id":78},"contracts/admin/ChildChainGaugeTokenAdder.sol":{"ast":{"absolutePath":"contracts/admin/ChildChainGaugeTokenAdder.sol","exportedSymbols":{"ChildChainGaugeTokenAdder":[11388]},"id":11389,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11189,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:79"},{"id":11190,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:79"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol","id":11191,"nodeType":"ImportDirective","scope":11389,"sourceUnit":435,"src":"747:102:79","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","id":11192,"nodeType":"ImportDirective","scope":11389,"sourceUnit":63,"src":"850:98:79","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":11193,"nodeType":"ImportDirective","scope":11389,"sourceUnit":3698,"src":"950:88:79","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11195,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1270:23:79","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":11196,"nodeType":"InheritanceSpecifier","src":"1270:23:79"}],"contractDependencies":[2259,3128,3697],"contractKind":"contract","documentation":{"id":11194,"nodeType":"StructuredDocumentation","src":"1040:191:79","text":" @title ChildChainGaugeTokenAdder\n @notice Allows atomically adding a new reward token to a RewardsOnlyGauge while ensuring that it remains in sync\n with its ChildChainStreamer."},"fullyImplemented":true,"id":11388,"linearizedBaseContracts":[11388,3697,3128,2259],"name":"ChildChainGaugeTokenAdder","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":11206,"mutability":"constant","name":"_CLAIM_SIG","nodeType":"VariableDeclaration","scope":11388,"src":"1498:75:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11197,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1498:7:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"6765745f7265776172642829","id":11199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1546:14:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_1afe22a60e4e4b5fa7561dbfb52f5a766eba86c52b84c4946364e82fa9056a57","typeString":"literal_string \"get_reward()\""},"value":"get_reward()"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1afe22a60e4e4b5fa7561dbfb52f5a766eba86c52b84c4946364e82fa9056a57","typeString":"literal_string \"get_reward()\""}],"id":11198,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1536:9:79","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1536:25:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"id":11203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3238","id":11201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1566:2:79","typeDescriptions":{"typeIdentifier":"t_rational_28_by_1","typeString":"int_const 28"},"value":"28"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":11202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1571:1:79","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1566:6:79","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"}}],"id":11204,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1565:8:79","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"}},"src":"1536:37:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":11209,"mutability":"constant","name":"_MAX_TOKENS","nodeType":"VariableDeclaration","scope":11388,"src":"1579:40:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11207,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38","id":11208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1618:1:79","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"private"},{"constant":true,"id":11212,"mutability":"constant","name":"_REWARD_DURATION","nodeType":"VariableDeclaration","scope":11388,"src":"1625:51:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11210,"name":"uint256","nodeType":"ElementaryTypeName","src":"1625:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":11211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1669:7:79","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"visibility":"private"},{"constant":false,"id":11214,"mutability":"immutable","name":"_authorizerAdaptorEntrypoint","nodeType":"VariableDeclaration","scope":11388,"src":"1683:75:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":11213,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"1683:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"private"},{"constant":false,"id":11216,"mutability":"immutable","name":"_gaugeFactory","nodeType":"VariableDeclaration","scope":11388,"src":"1764:64:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"},"typeName":{"id":11215,"name":"IChildChainLiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":434,"src":"1764:32:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"visibility":"private"},{"body":{"id":11236,"nodeType":"Block","src":"2028:113:79","statements":[{"expression":{"id":11230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11228,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11214,"src":"2038:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11229,"name":"authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11220,"src":"2069:27:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"src":"2038:58:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":11231,"nodeType":"ExpressionStatement","src":"2038:58:79"},{"expression":{"id":11234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11232,"name":"_gaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11216,"src":"2106:13:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11233,"name":"gaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11218,"src":"2122:12:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"src":"2106:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"id":11235,"nodeType":"ExpressionStatement","src":"2106:28:79"}]},"id":11237,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11223,"name":"authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11220,"src":"1984:27:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":11224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getVault","nodeType":"MemberAccess","referencedDeclaration":32,"src":"1984:36:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view external returns (contract IVault)"}},"id":11225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1984:38:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":11226,"modifierName":{"id":11222,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1960:23:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1960:63:79"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":11221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11218,"mutability":"mutable","name":"gaugeFactory","nodeType":"VariableDeclaration","scope":11237,"src":"1847:45:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"},"typeName":{"id":11217,"name":"IChildChainLiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":434,"src":"1847:32:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"visibility":"internal"},{"constant":false,"id":11220,"mutability":"mutable","name":"authorizerAdaptorEntrypoint","nodeType":"VariableDeclaration","scope":11237,"src":"1894:56:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":11219,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"1894:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"internal"}],"src":"1846:105:79"},"returnParameters":{"id":11227,"nodeType":"ParameterList","parameters":[],"src":"2028:0:79"},"scope":11388,"src":"1835:306:79","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11245,"nodeType":"Block","src":"2340:52:79","statements":[{"expression":{"id":11243,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11214,"src":"2357:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"functionReturnParameters":11242,"id":11244,"nodeType":"Return","src":"2350:35:79"}]},"documentation":{"id":11238,"nodeType":"StructuredDocumentation","src":"2147:93:79","text":" @notice Returns the address of the Authorizer adaptor entrypoint contract."},"functionSelector":"7afcf0e6","id":11246,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizerAdaptorEntrypoint","nodeType":"FunctionDefinition","parameters":{"id":11239,"nodeType":"ParameterList","parameters":[],"src":"2284:2:79"},"returnParameters":{"id":11242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11241,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11246,"src":"2310:28:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":11240,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"2310:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"internal"}],"src":"2309:30:79"},"scope":11388,"src":"2245:147:79","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":11328,"nodeType":"Block","src":"2818:1083:79","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":11263,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11249,"src":"2877:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}],"id":11262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2869:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11261,"name":"address","nodeType":"ElementaryTypeName","src":"2869:7:79","typeDescriptions":{}}},"id":11264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2869:14:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11259,"name":"_gaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11216,"src":"2836:13:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"id":11260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isGaugeFromFactory","nodeType":"MemberAccess","referencedDeclaration":940,"src":"2836:32:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":11265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2836:48:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206761756765","id":11266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2886:15:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f01a4186ff9a4f4fec3be353497709ea5e4152dad176712bbaa55bd57735b49","typeString":"literal_string \"Invalid gauge\""},"value":"Invalid gauge"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f01a4186ff9a4f4fec3be353497709ea5e4152dad176712bbaa55bd57735b49","typeString":"literal_string \"Invalid gauge\""}],"id":11258,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2828:7:79","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2828:74:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11268,"nodeType":"ExpressionStatement","src":"2828:74:79"},{"assignments":[11270],"declarations":[{"constant":false,"id":11270,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":11328,"src":"2912:28:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":11269,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"2912:19:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"internal"}],"id":11280,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":11276,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11249,"src":"3002:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}],"id":11275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2994:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11274,"name":"address","nodeType":"ElementaryTypeName","src":"2994:7:79","typeDescriptions":{}}},"id":11277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2994:14:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11272,"name":"_gaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11216,"src":"2963:13:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"id":11273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getGaugeStreamer","nodeType":"MemberAccess","referencedDeclaration":409,"src":"2963:30:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_address_$","typeString":"function (address) view external returns (address)"}},"id":11278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2963:46:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11271,"name":"IChildChainStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"2943:19:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChildChainStreamer_$462_$","typeString":"type(contract IChildChainStreamer)"}},"id":11279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2943:67:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"nodeType":"VariableDeclarationStatement","src":"2912:98:79"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"id":11286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11282,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"3028:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11283,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11249,"src":"3040:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":11284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reward_contract","nodeType":"MemberAccess","referencedDeclaration":1188,"src":"3040:21:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IChildChainStreamer_$462_$","typeString":"function () view external returns (contract IChildChainStreamer)"}},"id":11285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3040:23:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"src":"3028:35:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f74206f726967696e616c2067617567652073747265616d6572","id":11287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3065:29:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_009a544bc9ce778256430195eb1ba0b1d0d143ef303f6deb92a23521ff31185c","typeString":"literal_string \"Not original gauge streamer\""},"value":"Not original gauge streamer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_009a544bc9ce778256430195eb1ba0b1d0d143ef303f6deb92a23521ff31185c","typeString":"literal_string \"Not original gauge streamer\""}],"id":11281,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3020:7:79","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3020:75:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11289,"nodeType":"ExpressionStatement","src":"3020:75:79"},{"expression":{"arguments":[{"id":11291,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"3231:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},{"id":11292,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11251,"src":"3241:11:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":11293,"name":"distributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11253,"src":"3254:11:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"}],"id":11290,"name":"_addTokenToStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11357,"src":"3211:19:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IChildChainStreamer_$462_$_t_contract$_IERC20_$2447_$_t_address_$returns$__$","typeString":"function (contract IChildChainStreamer,contract IERC20,address)"}},"id":11294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3211:55:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11295,"nodeType":"ExpressionStatement","src":"3211:55:79"},{"assignments":[11300],"declarations":[{"constant":false,"id":11300,"mutability":"mutable","name":"rewardTokens","nodeType":"VariableDeclaration","scope":11328,"src":"3613:39:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_memory_ptr","typeString":"contract IERC20[8]"},"typeName":{"baseType":{"id":11298,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3613:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":11299,"length":{"id":11297,"name":"_MAX_TOKENS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11209,"src":"3620:11:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"ArrayTypeName","src":"3613:19:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_storage_ptr","typeString":"contract IERC20[8]"}},"visibility":"internal"}],"id":11301,"nodeType":"VariableDeclarationStatement","src":"3613:39:79"},{"body":{"id":11320,"nodeType":"Block","src":"3700:68:79","statements":[{"expression":{"id":11318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11311,"name":"rewardTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11300,"src":"3714:12:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_memory_ptr","typeString":"contract IERC20[8] memory"}},"id":11313,"indexExpression":{"id":11312,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11303,"src":"3727:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3714:15:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11316,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11303,"src":"3755:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11314,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"3732:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"id":11315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reward_tokens","nodeType":"MemberAccess","referencedDeclaration":452,"src":"3732:22:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20_$2447_$","typeString":"function (uint256) view external returns (contract IERC20)"}},"id":11317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3732:25:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"3714:43:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":11319,"nodeType":"ExpressionStatement","src":"3714:43:79"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11305,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11303,"src":"3678:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11306,"name":"_MAX_TOKENS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11209,"src":"3682:11:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3678:15:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11321,"initializationExpression":{"assignments":[11303],"declarations":[{"constant":false,"id":11303,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11321,"src":"3667:9:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11302,"name":"uint256","nodeType":"ElementaryTypeName","src":"3667:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11304,"nodeType":"VariableDeclarationStatement","src":"3667:9:79"},"loopExpression":{"expression":{"id":11309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3695:3:79","subExpression":{"id":11308,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11303,"src":"3697:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11310,"nodeType":"ExpressionStatement","src":"3695:3:79"},"nodeType":"ForStatement","src":"3662:106:79"},{"expression":{"arguments":[{"id":11323,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11249,"src":"3864:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},{"id":11324,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"3871:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},{"id":11325,"name":"rewardTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11300,"src":"3881:12:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_memory_ptr","typeString":"contract IERC20[8] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_memory_ptr","typeString":"contract IERC20[8] memory"}],"id":11322,"name":"_updateGaugeRewardTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11387,"src":"3839:24:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IRewardsOnlyGauge_$1205_$_t_contract$_IChildChainStreamer_$462_$_t_array$_t_contract$_IERC20_$2447_$8_memory_ptr_$returns$__$","typeString":"function (contract IRewardsOnlyGauge,contract IChildChainStreamer,contract IERC20[8] memory)"}},"id":11326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3839:55:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11327,"nodeType":"ExpressionStatement","src":"3839:55:79"}]},"documentation":{"id":11247,"nodeType":"StructuredDocumentation","src":"2398:272:79","text":" @notice Adds a new token to a RewardsOnlyGauge.\n @dev This is a permissioned function.\n @param gauge - The gauge we are modifying\n @param rewardToken - The token to be added.\n @param distributor - The distributor for the rewards."},"functionSelector":"d411ee4d","id":11329,"implemented":true,"kind":"function","modifiers":[{"id":11256,"modifierName":{"id":11255,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"2805:12:79","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2805:12:79"}],"name":"addTokenToGauge","nodeType":"FunctionDefinition","parameters":{"id":11254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11249,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11329,"src":"2709:23:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},"typeName":{"id":11248,"name":"IRewardsOnlyGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1205,"src":"2709:17:79","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"visibility":"internal"},{"constant":false,"id":11251,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":11329,"src":"2742:18:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11250,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2742:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11253,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":11329,"src":"2770:19:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11252,"name":"address","nodeType":"ElementaryTypeName","src":"2770:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2699:96:79"},"returnParameters":{"id":11257,"nodeType":"ParameterList","parameters":[],"src":"2818:0:79"},"scope":11388,"src":"2675:1226:79","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11356,"nodeType":"Block","src":"4045:221:79","statements":[{"expression":{"arguments":[{"arguments":[{"id":11343,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"4119:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}],"id":11342,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4111:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11341,"name":"address","nodeType":"ElementaryTypeName","src":"4111:7:79","typeDescriptions":{}}},"id":11344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4111:17:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":11347,"name":"IChildChainStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"4165:19:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChildChainStreamer_$462_$","typeString":"type(contract IChildChainStreamer)"}},"id":11348,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"add_reward","nodeType":"MemberAccess","referencedDeclaration":461,"src":"4165:30:79","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$","typeString":"function IChildChainStreamer.add_reward(contract IERC20,address,uint256)"}},"id":11349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"4165:39:79","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":11350,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11333,"src":"4206:11:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":11351,"name":"distributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11335,"src":"4219:11:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11352,"name":"_REWARD_DURATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11212,"src":"4232:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11345,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4142:3:79","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4142:22:79","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":11353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4142:107:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11338,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11214,"src":"4055:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":11340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"performAction","nodeType":"MemberAccess","referencedDeclaration":48,"src":"4055:42:79","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":11354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4055:204:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11355,"nodeType":"ExpressionStatement","src":"4055:204:79"}]},"id":11357,"implemented":true,"kind":"function","modifiers":[],"name":"_addTokenToStreamer","nodeType":"FunctionDefinition","parameters":{"id":11336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11331,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":11357,"src":"3945:28:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":11330,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"3945:19:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"internal"},{"constant":false,"id":11333,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":11357,"src":"3983:18:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11332,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3983:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11335,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":11357,"src":"4011:19:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11334,"name":"address","nodeType":"ElementaryTypeName","src":"4011:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3935:101:79"},"returnParameters":{"id":11337,"nodeType":"ParameterList","parameters":[],"src":"4045:0:79"},"scope":11388,"src":"3907:359:79","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":11386,"nodeType":"Block","src":"4440:209:79","statements":[{"expression":{"arguments":[{"arguments":[{"id":11373,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11359,"src":"4514:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}],"id":11372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4506:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11371,"name":"address","nodeType":"ElementaryTypeName","src":"4506:7:79","typeDescriptions":{}}},"id":11374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4506:14:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":11377,"name":"IRewardsOnlyGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"4557:17:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRewardsOnlyGauge_$1205_$","typeString":"type(contract IRewardsOnlyGauge)"}},"id":11378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"set_rewards","nodeType":"MemberAccess","referencedDeclaration":1199,"src":"4557:29:79","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_bytes32_$_t_array$_t_address_$8_calldata_ptr_$returns$__$","typeString":"function IRewardsOnlyGauge.set_rewards(address,bytes32,address[8] calldata)"}},"id":11379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"4557:38:79","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":11380,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11361,"src":"4597:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},{"id":11381,"name":"_CLAIM_SIG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11206,"src":"4607:10:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11382,"name":"rewardTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11365,"src":"4619:12:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_memory_ptr","typeString":"contract IERC20[8] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_memory_ptr","typeString":"contract IERC20[8] memory"}],"expression":{"id":11375,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4534:3:79","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4534:22:79","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":11383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4534:98:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11368,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11214,"src":"4450:28:79","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":11370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"performAction","nodeType":"MemberAccess","referencedDeclaration":48,"src":"4450:42:79","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":11384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4450:192:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11385,"nodeType":"ExpressionStatement","src":"4450:192:79"}]},"id":11387,"implemented":true,"kind":"function","modifiers":[],"name":"_updateGaugeRewardTokens","nodeType":"FunctionDefinition","parameters":{"id":11366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11359,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11387,"src":"4315:23:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},"typeName":{"id":11358,"name":"IRewardsOnlyGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1205,"src":"4315:17:79","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"visibility":"internal"},{"constant":false,"id":11361,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":11387,"src":"4348:28:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":11360,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"4348:19:79","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"internal"},{"constant":false,"id":11365,"mutability":"mutable","name":"rewardTokens","nodeType":"VariableDeclaration","scope":11387,"src":"4386:39:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_memory_ptr","typeString":"contract IERC20[8]"},"typeName":{"baseType":{"id":11362,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"4386:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":11364,"length":{"id":11363,"name":"_MAX_TOKENS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11209,"src":"4393:11:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"ArrayTypeName","src":"4386:19:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_storage_ptr","typeString":"contract IERC20[8]"}},"visibility":"internal"}],"src":"4305:126:79"},"returnParameters":{"id":11367,"nodeType":"ParameterList","parameters":[],"src":"4440:0:79"},"scope":11388,"src":"4272:377:79","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":11389,"src":"1232:3419:79"}],"src":"688:3964:79"},"id":79},"contracts/admin/DistributionScheduler.sol":{"ast":{"absolutePath":"contracts/admin/DistributionScheduler.sol","exportedSymbols":{"DistributionScheduler":[11934]},"id":11935,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11390,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:80"},{"id":11391,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:80"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","id":11392,"nodeType":"ImportDirective","scope":11935,"sourceUnit":1164,"src":"747:93:80","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":11393,"nodeType":"ImportDirective","scope":11935,"sourceUnit":7342,"src":"842:79:80","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":11394,"nodeType":"StructuredDocumentation","src":"960:244:80","text":" @title DistributionScheduler\n @notice Scheduler for setting up permissionless distributions of liquidity gauge reward tokens.\n @dev Any address may send tokens to the DistributionSchedule to be distributed among gauge depositors."},"fullyImplemented":true,"id":11934,"linearizedBaseContracts":[11934],"name":"DistributionScheduler","nodeType":"ContractDefinition","nodes":[{"id":11397,"libraryName":{"id":11395,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"1248:9:80","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1242:27:80","typeName":{"id":11396,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1262:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":true,"id":11400,"mutability":"constant","name":"_MAX_REWARDS","nodeType":"VariableDeclaration","scope":11934,"src":"1275:41:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11398,"name":"uint256","nodeType":"ElementaryTypeName","src":"1275:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38","id":11399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:1:80","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"private"},{"constant":true,"id":11403,"mutability":"constant","name":"_HEAD","nodeType":"VariableDeclaration","scope":11934,"src":"1442:33:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11401,"name":"uint32","nodeType":"ElementaryTypeName","src":"1442:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"30","id":11402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1474:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":true,"id":11406,"mutability":"constant","name":"_NULL","nodeType":"VariableDeclaration","scope":11934,"src":"1481:33:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11404,"name":"uint32","nodeType":"ElementaryTypeName","src":"1481:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"30","id":11405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1513:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":false,"id":11412,"mutability":"mutable","name":"_rewardsLists","nodeType":"VariableDeclaration","scope":11934,"src":"1585:71:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$","typeString":"mapping(bytes32 => mapping(uint32 => struct DistributionScheduler.RewardNode))"},"typeName":{"id":11411,"keyType":{"id":11407,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1593:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1585:49:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$","typeString":"mapping(bytes32 => mapping(uint32 => struct DistributionScheduler.RewardNode))"},"valueType":{"id":11410,"keyType":{"id":11408,"name":"uint32","nodeType":"ElementaryTypeName","src":"1612:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"1604:29:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"valueType":{"id":11409,"name":"RewardNode","nodeType":"UserDefinedTypeName","referencedDeclaration":11417,"src":"1622:10:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage_ptr","typeString":"struct DistributionScheduler.RewardNode"}}}},"visibility":"private"},{"canonicalName":"DistributionScheduler.RewardNode","id":11417,"members":[{"constant":false,"id":11414,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11417,"src":"1691:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":11413,"name":"uint224","nodeType":"ElementaryTypeName","src":"1691:7:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"},{"constant":false,"id":11416,"mutability":"mutable","name":"nextTimestamp","nodeType":"VariableDeclaration","scope":11417,"src":"1715:20:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11415,"name":"uint32","nodeType":"ElementaryTypeName","src":"1715:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"name":"RewardNode","nodeType":"StructDefinition","scope":11934,"src":"1663:79:80","visibility":"public"},{"body":{"id":11441,"nodeType":"Block","src":"2521:89:80","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":11429,"name":"_rewardsLists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11412,"src":"2538:13:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$","typeString":"mapping(bytes32 => mapping(uint32 => struct DistributionScheduler.RewardNode storage ref))"}},"id":11434,"indexExpression":{"arguments":[{"id":11431,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11420,"src":"2570:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},{"id":11432,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11422,"src":"2577:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":11430,"name":"_getRewardsListId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11745,"src":"2552:17:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IRewardTokenDistributor_$1163_$_t_contract$_IERC20_$2447_$returns$_t_bytes32_$","typeString":"function (contract IRewardTokenDistributor,contract IERC20) pure returns (bytes32)"}},"id":11433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2552:31:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2538:46:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11439,"indexExpression":{"arguments":[{"id":11437,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11424,"src":"2592:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2585:6:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":11435,"name":"uint32","nodeType":"ElementaryTypeName","src":"2585:6:80","typeDescriptions":{}}},"id":11438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2585:17:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2538:65:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"functionReturnParameters":11428,"id":11440,"nodeType":"Return","src":"2531:72:80"}]},"documentation":{"id":11418,"nodeType":"StructuredDocumentation","src":"1748:609:80","text":" @notice Returns information on the reward paid out to `gauge` in `token` over the week starting at `timestamp`\n @param gauge - The gauge which is to distribute the reward token.\n @param token - The token which is to be distributed among gauge depositors.\n @param timestamp - The timestamp corresponding to the beginning of the week being queried.\n @return - the amount of `token` which is to be distributed over the week starting at `timestamp`.\n - the timestamp of the next scheduled distribution of `token` to `gauge`. Zero if no distribution exists."},"functionSelector":"80723ab3","id":11442,"implemented":true,"kind":"function","modifiers":[],"name":"getRewardNode","nodeType":"FunctionDefinition","parameters":{"id":11425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11420,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11442,"src":"2394:29:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},"typeName":{"id":11419,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"2394:23:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"visibility":"internal"},{"constant":false,"id":11422,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":11442,"src":"2433:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11421,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2433:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11424,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":11442,"src":"2455:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11423,"name":"uint256","nodeType":"ElementaryTypeName","src":"2455:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2384:94:80"},"returnParameters":{"id":11428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11427,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11442,"src":"2502:17:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_memory_ptr","typeString":"struct DistributionScheduler.RewardNode"},"typeName":{"id":11426,"name":"RewardNode","nodeType":"UserDefinedTypeName","referencedDeclaration":11417,"src":"2502:10:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage_ptr","typeString":"struct DistributionScheduler.RewardNode"}},"visibility":"internal"}],"src":"2501:19:80"},"scope":11934,"src":"2362:248:80","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":11459,"nodeType":"Block","src":"3008:74:80","statements":[{"expression":{"arguments":[{"id":11453,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11445,"src":"3045:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},{"id":11454,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11447,"src":"3052:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"expression":{"id":11455,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3059:5:80","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"3059:15:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11452,"name":"getPendingRewardsAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11493,"src":"3025:19:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IRewardTokenDistributor_$1163_$_t_contract$_IERC20_$2447_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IRewardTokenDistributor,contract IERC20,uint256) view returns (uint256)"}},"id":11457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3025:50:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11451,"id":11458,"nodeType":"Return","src":"3018:57:80"}]},"documentation":{"id":11443,"nodeType":"StructuredDocumentation","src":"2616:285:80","text":" @notice Returns the amount of `token` which is ready to be distributed by `gauge` as of the current timestamp.\n @param gauge - The gauge which is to distribute the reward token.\n @param token - The token which is to be distributed among gauge depositors."},"functionSelector":"7a27db57","id":11460,"implemented":true,"kind":"function","modifiers":[],"name":"getPendingRewards","nodeType":"FunctionDefinition","parameters":{"id":11448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11445,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11460,"src":"2933:29:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},"typeName":{"id":11444,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"2933:23:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"visibility":"internal"},{"constant":false,"id":11447,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":11460,"src":"2964:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11446,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2964:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2932:45:80"},"returnParameters":{"id":11451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11450,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11460,"src":"2999:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11449,"name":"uint256","nodeType":"ElementaryTypeName","src":"2999:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2998:9:80"},"scope":11934,"src":"2906:176:80","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":11492,"nodeType":"Block","src":"3597:212:80","statements":[{"assignments":[11475],"declarations":[{"constant":false,"id":11475,"mutability":"mutable","name":"rewardsList","nodeType":"VariableDeclaration","scope":11492,"src":"3607:49:80","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"typeName":{"id":11474,"keyType":{"id":11472,"name":"uint32","nodeType":"ElementaryTypeName","src":"3615:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"3607:29:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"valueType":{"id":11473,"name":"RewardNode","nodeType":"UserDefinedTypeName","referencedDeclaration":11417,"src":"3625:10:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage_ptr","typeString":"struct DistributionScheduler.RewardNode"}}},"visibility":"internal"}],"id":11482,"initialValue":{"baseExpression":{"id":11476,"name":"_rewardsLists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11412,"src":"3659:13:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$","typeString":"mapping(bytes32 => mapping(uint32 => struct DistributionScheduler.RewardNode storage ref))"}},"id":11481,"indexExpression":{"arguments":[{"id":11478,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11463,"src":"3691:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},{"id":11479,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11465,"src":"3698:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":11477,"name":"_getRewardsListId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11745,"src":"3673:17:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IRewardTokenDistributor_$1163_$_t_contract$_IERC20_$2447_$returns$_t_bytes32_$","typeString":"function (contract IRewardTokenDistributor,contract IERC20) pure returns (bytes32)"}},"id":11480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3673:31:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3659:46:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"nodeType":"VariableDeclarationStatement","src":"3607:98:80"},{"assignments":[null,11484],"declarations":[null,{"constant":false,"id":11484,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11492,"src":"3719:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11483,"name":"uint256","nodeType":"ElementaryTypeName","src":"3719:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11489,"initialValue":{"arguments":[{"id":11486,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11475,"src":"3756:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},{"id":11487,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11467,"src":"3769:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11485,"name":"_getPendingRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11797,"src":"3737:18:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$_t_uint256_$returns$_t_uint32_$_t_uint256_$","typeString":"function (mapping(uint32 => struct DistributionScheduler.RewardNode storage ref),uint256) view returns (uint32,uint256)"}},"id":11488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3737:42:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint256_$","typeString":"tuple(uint32,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3716:63:80"},{"expression":{"id":11490,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11484,"src":"3796:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11471,"id":11491,"nodeType":"Return","src":"3789:13:80"}]},"documentation":{"id":11461,"nodeType":"StructuredDocumentation","src":"3088:351:80","text":" @notice Returns the amount of `token` which is ready to be distributed by `gauge` as of a specified timestamp.\n @param gauge - The gauge which is to distribute the reward token.\n @param token - The token which is to be distributed among gauge depositors.\n @param timestamp - The future timestamp in which to query."},"functionSelector":"e2962564","id":11493,"implemented":true,"kind":"function","modifiers":[],"name":"getPendingRewardsAt","nodeType":"FunctionDefinition","parameters":{"id":11468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11463,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11493,"src":"3482:29:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},"typeName":{"id":11462,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"3482:23:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"visibility":"internal"},{"constant":false,"id":11465,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":11493,"src":"3521:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11464,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3521:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11467,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":11493,"src":"3543:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11466,"name":"uint256","nodeType":"ElementaryTypeName","src":"3543:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3472:94:80"},"returnParameters":{"id":11471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11470,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11493,"src":"3588:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11469,"name":"uint256","nodeType":"ElementaryTypeName","src":"3588:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3587:9:80"},"scope":11934,"src":"3444:365:80","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":11618,"nodeType":"Block","src":"4659:1324:80","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11506,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11500,"src":"4677:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4686:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4677:10:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d7573742070726f76696465206e6f6e2d7a65726f206e756d626572206f6620746f6b656e73","id":11509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4689:40:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_62c5a219a01fd6fd6601c7927bc8316bb95af19b9dbffc136467a03aab8f6420","typeString":"literal_string \"Must provide non-zero number of tokens\""},"value":"Must provide non-zero number of tokens"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_62c5a219a01fd6fd6601c7927bc8316bb95af19b9dbffc136467a03aab8f6420","typeString":"literal_string \"Must provide non-zero number of tokens\""}],"id":11505,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4669:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4669:61:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11511,"nodeType":"ExpressionStatement","src":"4669:61:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11513,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11500,"src":"4817:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":11516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4832:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":11515,"name":"uint224","nodeType":"ElementaryTypeName","src":"4832:7:80","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":11514,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4827:4:80","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4827:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":11518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"4827:17:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"4817:27:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52657761726420616d6f756e74206f766572666c6f77","id":11520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4846:24:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_5391fbd5d22ad37959ecf087392cb1f1bf4a2e987fe5a2e75904267b58a35e32","typeString":"literal_string \"Reward amount overflow\""},"value":"Reward amount overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5391fbd5d22ad37959ecf087392cb1f1bf4a2e987fe5a2e75904267b58a35e32","typeString":"literal_string \"Reward amount overflow\""}],"id":11512,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4809:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4809:62:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11522,"nodeType":"ExpressionStatement","src":"4809:62:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11524,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"4889:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":11527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4907:6:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":11526,"name":"uint32","nodeType":"ElementaryTypeName","src":"4907:6:80","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":11525,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4902:4:80","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4902:12:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":11529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"4902:16:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4889:29:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5265776172642074696d657374616d70206f766572666c6f77","id":11531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4920:27:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_6c0a24dc44840b730ecd436277ffffb5dfc86cd63b9062eaecde2bbcfe839e41","typeString":"literal_string \"Reward timestamp overflow\""},"value":"Reward timestamp overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6c0a24dc44840b730ecd436277ffffb5dfc86cd63b9062eaecde2bbcfe839e41","typeString":"literal_string \"Reward timestamp overflow\""}],"id":11523,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4881:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4881:67:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11533,"nodeType":"ExpressionStatement","src":"4881:67:80"},{"assignments":[11535],"declarations":[{"constant":false,"id":11535,"mutability":"mutable","name":"rewardDistributor","nodeType":"VariableDeclaration","scope":11618,"src":"5050:25:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11534,"name":"address","nodeType":"ElementaryTypeName","src":"5050:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11541,"initialValue":{"expression":{"arguments":[{"id":11538,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11498,"src":"5096:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"expression":{"id":11536,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11496,"src":"5078:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"id":11537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reward_data","nodeType":"MemberAccess","referencedDeclaration":1118,"src":"5078:17:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_IERC20_$2447_$returns$_t_struct$_Reward_$1104_memory_ptr_$","typeString":"function (contract IERC20) view external returns (struct IRewardTokenDistributor.Reward memory)"}},"id":11539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5078:24:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_memory_ptr","typeString":"struct IRewardTokenDistributor.Reward memory"}},"id":11540,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"distributor","nodeType":"MemberAccess","referencedDeclaration":1095,"src":"5078:36:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5050:64:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11543,"name":"rewardDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11535,"src":"5132:17:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":11546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5161:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5153:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11544,"name":"address","nodeType":"ElementaryTypeName","src":"5153:7:80","typeDescriptions":{}}},"id":11547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5153:10:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"5132:31:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52657761726420746f6b656e20646f6573206e6f74206578697374206f6e206761756765","id":11549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5165:38:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_12e8f0821007761081fb194dd41d74ffdd7eeefa16f56094542d3d856ddbe790","typeString":"literal_string \"Reward token does not exist on gauge\""},"value":"Reward token does not exist on gauge"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12e8f0821007761081fb194dd41d74ffdd7eeefa16f56094542d3d856ddbe790","typeString":"literal_string \"Reward token does not exist on gauge\""}],"id":11542,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5124:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5124:80:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11551,"nodeType":"ExpressionStatement","src":"5124:80:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11553,"name":"rewardDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11535,"src":"5222:17:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":11556,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5251:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_DistributionScheduler_$11934","typeString":"contract DistributionScheduler"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DistributionScheduler_$11934","typeString":"contract DistributionScheduler"}],"id":11555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5243:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11554,"name":"address","nodeType":"ElementaryTypeName","src":"5243:7:80","typeDescriptions":{}}},"id":11557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5243:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5222:34:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"446973747269627574696f6e5363686564756c6572206973206e6f742072657761726420746f6b656e2773206469737472696275746f72","id":11559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5258:57:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_e6ab3af4a4ccb1ae008e9fa0bf53f2b060c6a490ef63753643e02e0a115f2e88","typeString":"literal_string \"DistributionScheduler is not reward token's distributor\""},"value":"DistributionScheduler is not reward token's distributor"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6ab3af4a4ccb1ae008e9fa0bf53f2b060c6a490ef63753643e02e0a115f2e88","typeString":"literal_string \"DistributionScheduler is not reward token's distributor\""}],"id":11552,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5214:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5214:102:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11561,"nodeType":"ExpressionStatement","src":"5214:102:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11563,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"5425:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":11564,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5438:5:80","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"5438:15:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5425:28:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"446973747269627574696f6e2063616e206f6e6c79206265207363686564756c656420666f722074686520667574757265","id":11567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5455:51:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_dcfd3efaa3c64c8b70bacb475c6558caa225a1704322568f1406043c4e4faf9e","typeString":"literal_string \"Distribution can only be scheduled for the future\""},"value":"Distribution can only be scheduled for the future"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dcfd3efaa3c64c8b70bacb475c6558caa225a1704322568f1406043c4e4faf9e","typeString":"literal_string \"Distribution can only be scheduled for the future\""}],"id":11562,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5417:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5417:90:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11569,"nodeType":"ExpressionStatement","src":"5417:90:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11571,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"5525:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":11573,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"5558:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11572,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11933,"src":"5538:19:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":11574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5538:30:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5525:43:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"446973747269627574696f6e206d7573742073746172742061742074686520626567696e6e696e67206f6620746865207765656b","id":11576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5570:54:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c27d88d19dc31536ace48c2b93cddc882d3e6b4859319774edafcd7814ae21c","typeString":"literal_string \"Distribution must start at the beginning of the week\""},"value":"Distribution must start at the beginning of the week"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c27d88d19dc31536ace48c2b93cddc882d3e6b4859319774edafcd7814ae21c","typeString":"literal_string \"Distribution must start at the beginning of the week\""}],"id":11570,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5517:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5517:108:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11578,"nodeType":"ExpressionStatement","src":"5517:108:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11580,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"5720:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":11581,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5732:5:80","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"5732:15:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5720:27:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"333635","id":11584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5751:8:80","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"value":"365"},"src":"5720:39:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"446973747269627574696f6e20746f6f2066617220696e746f2074686520667574757265","id":11586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5761:38:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_5be418d9ea67bd8c41d7df1cd48a26260927ea79f2fe5cc86993060ac18eb4c2","typeString":"literal_string \"Distribution too far into the future\""},"value":"Distribution too far into the future"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5be418d9ea67bd8c41d7df1cd48a26260927ea79f2fe5cc86993060ac18eb4c2","typeString":"literal_string \"Distribution too far into the future\""}],"id":11579,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5712:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5712:88:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11588,"nodeType":"ExpressionStatement","src":"5712:88:80"},{"expression":{"arguments":[{"expression":{"id":11592,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5834:3:80","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5834:10:80","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":11596,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5854:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_DistributionScheduler_$11934","typeString":"contract DistributionScheduler"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DistributionScheduler_$11934","typeString":"contract DistributionScheduler"}],"id":11595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5846:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11594,"name":"address","nodeType":"ElementaryTypeName","src":"5846:7:80","typeDescriptions":{}}},"id":11597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5846:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11598,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11500,"src":"5861:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11589,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11498,"src":"5811:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":11591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":7304,"src":"5811:22:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":11599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5811:57:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11600,"nodeType":"ExpressionStatement","src":"5811:57:80"},{"expression":{"arguments":[{"baseExpression":{"id":11602,"name":"_rewardsLists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11412,"src":"5893:13:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$","typeString":"mapping(bytes32 => mapping(uint32 => struct DistributionScheduler.RewardNode storage ref))"}},"id":11607,"indexExpression":{"arguments":[{"id":11604,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11496,"src":"5925:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},{"id":11605,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11498,"src":"5932:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":11603,"name":"_getRewardsListId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11745,"src":"5907:17:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IRewardTokenDistributor_$1163_$_t_contract$_IERC20_$2447_$returns$_t_bytes32_$","typeString":"function (contract IRewardTokenDistributor,contract IERC20) pure returns (bytes32)"}},"id":11606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5907:31:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5893:46:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},{"arguments":[{"id":11610,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"5948:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11609,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5941:6:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":11608,"name":"uint32","nodeType":"ElementaryTypeName","src":"5941:6:80","typeDescriptions":{}}},"id":11611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5941:17:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"id":11614,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11500,"src":"5968:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5960:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":11612,"name":"uint224","nodeType":"ElementaryTypeName","src":"5960:7:80","typeDescriptions":{}}},"id":11615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5960:15:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":11601,"name":"_insertReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11917,"src":"5879:13:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$_t_uint32_$_t_uint224_$returns$__$","typeString":"function (mapping(uint32 => struct DistributionScheduler.RewardNode storage ref),uint32,uint224)"}},"id":11616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5879:97:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11617,"nodeType":"ExpressionStatement","src":"5879:97:80"}]},"documentation":{"id":11494,"nodeType":"StructuredDocumentation","src":"3815:682:80","text":" @notice Schedule a distribution of tokens to gauge depositors over the span of 1 week.\n @dev All distributions must start at the beginning of a week in UNIX time, i.e. Thurs 00:00 UTC.\n This is to prevent griefing from many low value distributions having to be processed before a meaningful\n distribution can be processed.\n @param gauge - The gauge which is to distribute the reward token.\n @param token - The token which is to be distributed among gauge depositors.\n @param amount - The amount of tokens which to distribute.\n @param startTime - The timestamp at the beginning of the week over which to distribute tokens."},"functionSelector":"974e98a6","id":11619,"implemented":true,"kind":"function","modifiers":[],"name":"scheduleDistribution","nodeType":"FunctionDefinition","parameters":{"id":11503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11496,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11619,"src":"4541:29:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},"typeName":{"id":11495,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"4541:23:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"visibility":"internal"},{"constant":false,"id":11498,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":11619,"src":"4580:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11497,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"4580:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11500,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11619,"src":"4602:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11499,"name":"uint256","nodeType":"ElementaryTypeName","src":"4602:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11502,"mutability":"mutable","name":"startTime","nodeType":"VariableDeclaration","scope":11619,"src":"4626:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11501,"name":"uint256","nodeType":"ElementaryTypeName","src":"4626:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4531:118:80"},"returnParameters":{"id":11504,"nodeType":"ParameterList","parameters":[],"src":"4659:0:80"},"scope":11934,"src":"4502:1481:80","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11672,"nodeType":"Block","src":"6241:463:80","statements":[{"body":{"id":11670,"nodeType":"Block","src":"6294:404:80","statements":[{"assignments":[11636],"declarations":[{"constant":false,"id":11636,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":11670,"src":"6308:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11635,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"6308:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"id":11641,"initialValue":{"arguments":[{"id":11639,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11626,"src":"6343:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11637,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11622,"src":"6323:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"id":11638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reward_tokens","nodeType":"MemberAccess","referencedDeclaration":1111,"src":"6323:19:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20_$2447_$","typeString":"function (uint256) view external returns (contract IERC20)"}},"id":11640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6323:22:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"6308:37:80"},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"id":11646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11642,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11636,"src":"6363:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6379:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11643,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2447,"src":"6372:6:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2447_$","typeString":"type(contract IERC20)"}},"id":11645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6372:9:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"6363:18:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11648,"nodeType":"IfStatement","src":"6359:29:80","trueBody":{"id":11647,"nodeType":"Break","src":"6383:5:80"}},{"assignments":[11650],"declarations":[{"constant":false,"id":11650,"mutability":"mutable","name":"rewardDistributor","nodeType":"VariableDeclaration","scope":11670,"src":"6498:25:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11649,"name":"address","nodeType":"ElementaryTypeName","src":"6498:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11656,"initialValue":{"expression":{"arguments":[{"id":11653,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11636,"src":"6544:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"expression":{"id":11651,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11622,"src":"6526:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"id":11652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reward_data","nodeType":"MemberAccess","referencedDeclaration":1118,"src":"6526:17:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_IERC20_$2447_$returns$_t_struct$_Reward_$1104_memory_ptr_$","typeString":"function (contract IERC20) view external returns (struct IRewardTokenDistributor.Reward memory)"}},"id":11654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6526:24:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_memory_ptr","typeString":"struct IRewardTokenDistributor.Reward memory"}},"id":11655,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"distributor","nodeType":"MemberAccess","referencedDeclaration":1095,"src":"6526:36:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6498:64:80"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11657,"name":"rewardDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11650,"src":"6580:17:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":11660,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6609:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_DistributionScheduler_$11934","typeString":"contract DistributionScheduler"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DistributionScheduler_$11934","typeString":"contract DistributionScheduler"}],"id":11659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6601:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11658,"name":"address","nodeType":"ElementaryTypeName","src":"6601:7:80","typeDescriptions":{}}},"id":11661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6601:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6580:34:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11669,"nodeType":"IfStatement","src":"6576:112:80","trueBody":{"id":11668,"nodeType":"Block","src":"6616:72:80","statements":[{"expression":{"arguments":[{"id":11664,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11622,"src":"6660:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},{"id":11665,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11636,"src":"6667:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":11663,"name":"startDistributionForToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11727,"src":"6634:25:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IRewardTokenDistributor_$1163_$_t_contract$_IERC20_$2447_$returns$__$","typeString":"function (contract IRewardTokenDistributor,contract IERC20)"}},"id":11666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6634:39:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11667,"nodeType":"ExpressionStatement","src":"6634:39:80"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11629,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11626,"src":"6271:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11630,"name":"_MAX_REWARDS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11400,"src":"6275:12:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6271:16:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11671,"initializationExpression":{"assignments":[11626],"declarations":[{"constant":false,"id":11626,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11671,"src":"6256:9:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11625,"name":"uint256","nodeType":"ElementaryTypeName","src":"6256:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11628,"initialValue":{"hexValue":"30","id":11627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6268:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6256:13:80"},"loopExpression":{"expression":{"id":11633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6289:3:80","subExpression":{"id":11632,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11626,"src":"6291:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11634,"nodeType":"ExpressionStatement","src":"6289:3:80"},"nodeType":"ForStatement","src":"6251:447:80"}]},"documentation":{"id":11620,"nodeType":"StructuredDocumentation","src":"5989:179:80","text":" @notice Process all pending distributions for a gauge to start distributing the tokens.\n @param gauge - The gauge which is to distribute the reward token."},"functionSelector":"0089fac3","id":11673,"implemented":true,"kind":"function","modifiers":[],"name":"startDistributions","nodeType":"FunctionDefinition","parameters":{"id":11623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11622,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11673,"src":"6201:29:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},"typeName":{"id":11621,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"6201:23:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"visibility":"internal"}],"src":"6200:31:80"},"returnParameters":{"id":11624,"nodeType":"ParameterList","parameters":[],"src":"6241:0:80"},"scope":11934,"src":"6173:531:80","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11726,"nodeType":"Block","src":"7078:554:80","statements":[{"assignments":[11684],"declarations":[{"constant":false,"id":11684,"mutability":"mutable","name":"rewardsList","nodeType":"VariableDeclaration","scope":11726,"src":"7088:49:80","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"typeName":{"id":11683,"keyType":{"id":11681,"name":"uint32","nodeType":"ElementaryTypeName","src":"7096:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"7088:29:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"valueType":{"id":11682,"name":"RewardNode","nodeType":"UserDefinedTypeName","referencedDeclaration":11417,"src":"7106:10:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage_ptr","typeString":"struct DistributionScheduler.RewardNode"}}},"visibility":"internal"}],"id":11691,"initialValue":{"baseExpression":{"id":11685,"name":"_rewardsLists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11412,"src":"7140:13:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$","typeString":"mapping(bytes32 => mapping(uint32 => struct DistributionScheduler.RewardNode storage ref))"}},"id":11690,"indexExpression":{"arguments":[{"id":11687,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11676,"src":"7172:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},{"id":11688,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11678,"src":"7179:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":11686,"name":"_getRewardsListId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11745,"src":"7154:17:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IRewardTokenDistributor_$1163_$_t_contract$_IERC20_$2447_$returns$_t_bytes32_$","typeString":"function (contract IRewardTokenDistributor,contract IERC20) pure returns (bytes32)"}},"id":11689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7154:31:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7140:46:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"nodeType":"VariableDeclarationStatement","src":"7088:98:80"},{"assignments":[11693,11695],"declarations":[{"constant":false,"id":11693,"mutability":"mutable","name":"firstUnprocessedNodeKey","nodeType":"VariableDeclaration","scope":11726,"src":"7198:30:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11692,"name":"uint32","nodeType":"ElementaryTypeName","src":"7198:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":11695,"mutability":"mutable","name":"rewardAmount","nodeType":"VariableDeclaration","scope":11726,"src":"7230:20:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11694,"name":"uint256","nodeType":"ElementaryTypeName","src":"7230:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11701,"initialValue":{"arguments":[{"id":11697,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11684,"src":"7273:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},{"expression":{"id":11698,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7286:5:80","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"7286:15:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11696,"name":"_getPendingRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11797,"src":"7254:18:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$_$_t_uint256_$returns$_t_uint32_$_t_uint256_$","typeString":"function (mapping(uint32 => struct DistributionScheduler.RewardNode storage ref),uint256) view returns (uint32,uint256)"}},"id":11700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7254:48:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint256_$","typeString":"tuple(uint32,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7197:105:80"},{"expression":{"id":11707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":11702,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11684,"src":"7452:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11704,"indexExpression":{"id":11703,"name":"_HEAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11403,"src":"7464:5:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7452:18:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11705,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"nextTimestamp","nodeType":"MemberAccess","referencedDeclaration":11416,"src":"7452:32:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11706,"name":"firstUnprocessedNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11693,"src":"7487:23:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"7452:58:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11708,"nodeType":"ExpressionStatement","src":"7452:58:80"},{"expression":{"arguments":[{"arguments":[{"id":11714,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11676,"src":"7547:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}],"id":11713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7539:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11712,"name":"address","nodeType":"ElementaryTypeName","src":"7539:7:80","typeDescriptions":{}}},"id":11715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7539:14:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11716,"name":"rewardAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11695,"src":"7555:12:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11709,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11678,"src":"7521:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":11711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"7521:17:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":11717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7521:47:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11718,"nodeType":"ExpressionStatement","src":"7521:47:80"},{"expression":{"arguments":[{"id":11722,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11678,"src":"7605:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":11723,"name":"rewardAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11695,"src":"7612:12:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11719,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11676,"src":"7578:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"id":11721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit_reward_token","nodeType":"MemberAccess","referencedDeclaration":1144,"src":"7578:26:80","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$2447_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256) external"}},"id":11724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7578:47:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11725,"nodeType":"ExpressionStatement","src":"7578:47:80"}]},"documentation":{"id":11674,"nodeType":"StructuredDocumentation","src":"6710:276:80","text":" @notice Process all pending distributions for a given token for a gauge to start distributing tokens.\n @param gauge - The gauge which is to distribute the reward token.\n @param token - The token which is to be distributed among gauge depositors."},"functionSelector":"d85b7a61","id":11727,"implemented":true,"kind":"function","modifiers":[],"name":"startDistributionForToken","nodeType":"FunctionDefinition","parameters":{"id":11679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11676,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11727,"src":"7026:29:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},"typeName":{"id":11675,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"7026:23:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"visibility":"internal"},{"constant":false,"id":11678,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":11727,"src":"7057:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11677,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"7057:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"7025:45:80"},"returnParameters":{"id":11680,"nodeType":"ParameterList","parameters":[],"src":"7078:0:80"},"scope":11934,"src":"6991:641:80","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11744,"nodeType":"Block","src":"7775:71:80","statements":[{"expression":{"arguments":[{"arguments":[{"id":11739,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11729,"src":"7819:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},{"id":11740,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11731,"src":"7826:11:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"expression":{"id":11737,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7802:3:80","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"7802:16:80","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7802:36:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11736,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7792:9:80","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7792:47:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":11735,"id":11743,"nodeType":"Return","src":"7785:54:80"}]},"id":11745,"implemented":true,"kind":"function","modifiers":[],"name":"_getRewardsListId","nodeType":"FunctionDefinition","parameters":{"id":11732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11729,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11745,"src":"7692:29:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"},"typeName":{"id":11728,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"7692:23:80","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"visibility":"internal"},{"constant":false,"id":11731,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":11745,"src":"7723:18:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11730,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"7723:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"7691:51:80"},"returnParameters":{"id":11735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11734,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11745,"src":"7766:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11733,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7766:7:80","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7765:9:80"},"scope":11934,"src":"7665:181:80","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11796,"nodeType":"Block","src":"8311:450:80","statements":[{"assignments":[11760],"declarations":[{"constant":false,"id":11760,"mutability":"mutable","name":"currentNodeKey","nodeType":"VariableDeclaration","scope":11796,"src":"8321:21:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11759,"name":"uint32","nodeType":"ElementaryTypeName","src":"8321:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":11765,"initialValue":{"expression":{"baseExpression":{"id":11761,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11750,"src":"8345:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11763,"indexExpression":{"id":11762,"name":"_HEAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11403,"src":"8357:5:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8345:18:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11764,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"nextTimestamp","nodeType":"MemberAccess","referencedDeclaration":11416,"src":"8345:32:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"8321:56:80"},{"assignments":[11767],"declarations":[{"constant":false,"id":11767,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11796,"src":"8484:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11766,"name":"uint256","nodeType":"ElementaryTypeName","src":"8484:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11768,"nodeType":"VariableDeclarationStatement","src":"8484:14:80"},{"body":{"id":11790,"nodeType":"Block","src":"8571:142:80","statements":[{"expression":{"id":11781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11776,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"8585:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":11777,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11750,"src":"8595:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11779,"indexExpression":{"id":11778,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"8607:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8595:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11780,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":11414,"src":"8595:34:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"8585:44:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11782,"nodeType":"ExpressionStatement","src":"8585:44:80"},{"expression":{"id":11788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11783,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"8644:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":11784,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11750,"src":"8661:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11786,"indexExpression":{"id":11785,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"8673:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8661:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11787,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"nextTimestamp","nodeType":"MemberAccess","referencedDeclaration":11416,"src":"8661:41:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"8644:58:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11789,"nodeType":"ExpressionStatement","src":"8644:58:80"}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11769,"name":"targetKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11752,"src":"8515:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":11770,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"8528:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"8515:27:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":11774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11772,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"8546:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11773,"name":"_NULL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11406,"src":"8564:5:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"8546:23:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8515:54:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11791,"nodeType":"WhileStatement","src":"8508:205:80"},{"expression":{"components":[{"id":11792,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"8731:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":11793,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"8747:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11794,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8730:24:80","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint256_$","typeString":"tuple(uint32,uint256)"}},"functionReturnParameters":11758,"id":11795,"nodeType":"Return","src":"8723:31:80"}]},"documentation":{"id":11746,"nodeType":"StructuredDocumentation","src":"7852:288:80","text":" @dev Sums the rewards held on all pending reward nodes with a key lesser than `targetKey`.\n @return - the key corresponding to the first node with a key greater than `targetKey`.\n - the cumulative rewards held on all pending nodes before `targetKey`"},"id":11797,"implemented":true,"kind":"function","modifiers":[],"name":"_getPendingRewards","nodeType":"FunctionDefinition","parameters":{"id":11753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11750,"mutability":"mutable","name":"rewardsList","nodeType":"VariableDeclaration","scope":11797,"src":"8173:49:80","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"typeName":{"id":11749,"keyType":{"id":11747,"name":"uint32","nodeType":"ElementaryTypeName","src":"8181:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"8173:29:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"valueType":{"id":11748,"name":"RewardNode","nodeType":"UserDefinedTypeName","referencedDeclaration":11417,"src":"8191:10:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage_ptr","typeString":"struct DistributionScheduler.RewardNode"}}},"visibility":"internal"},{"constant":false,"id":11752,"mutability":"mutable","name":"targetKey","nodeType":"VariableDeclaration","scope":11797,"src":"8224:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11751,"name":"uint256","nodeType":"ElementaryTypeName","src":"8224:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8172:70:80"},"returnParameters":{"id":11758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11755,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11797,"src":"8290:6:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11754,"name":"uint32","nodeType":"ElementaryTypeName","src":"8290:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":11757,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11797,"src":"8298:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11756,"name":"uint256","nodeType":"ElementaryTypeName","src":"8298:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8289:17:80"},"scope":11934,"src":"8145:616:80","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11916,"nodeType":"Block","src":"9025:1659:80","statements":[{"assignments":[11810],"declarations":[{"constant":false,"id":11810,"mutability":"mutable","name":"currentNodeKey","nodeType":"VariableDeclaration","scope":11916,"src":"9156:21:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11809,"name":"uint32","nodeType":"ElementaryTypeName","src":"9156:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":11812,"initialValue":{"id":11811,"name":"_HEAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11403,"src":"9180:5:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"9156:29:80"},{"assignments":[11814],"declarations":[{"constant":false,"id":11814,"mutability":"mutable","name":"nextNodeKey","nodeType":"VariableDeclaration","scope":11916,"src":"9195:18:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11813,"name":"uint32","nodeType":"ElementaryTypeName","src":"9195:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":11819,"initialValue":{"expression":{"baseExpression":{"id":11815,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"9216:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11817,"indexExpression":{"id":11816,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11810,"src":"9228:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9216:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"nextTimestamp","nodeType":"MemberAccess","referencedDeclaration":11416,"src":"9216:41:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"9195:62:80"},{"body":{"id":11838,"nodeType":"Block","src":"9476:122:80","statements":[{"expression":{"id":11829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11827,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11810,"src":"9490:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11828,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"9507:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9490:28:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11830,"nodeType":"ExpressionStatement","src":"9490:28:80"},{"expression":{"id":11836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11831,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"9532:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":11832,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"9546:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11834,"indexExpression":{"id":11833,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11810,"src":"9558:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9546:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11835,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"nextTimestamp","nodeType":"MemberAccess","referencedDeclaration":11416,"src":"9546:41:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9532:55:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11837,"nodeType":"ExpressionStatement","src":"9532:55:80"}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":11822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11820,"name":"insertedNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11804,"src":"9421:15:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":11821,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"9439:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9421:29:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":11825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11823,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"9454:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11824,"name":"_NULL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11406,"src":"9469:5:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9454:20:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9421:53:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11839,"nodeType":"WhileStatement","src":"9414:184:80"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":11842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11840,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"9612:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11841,"name":"_NULL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11406,"src":"9627:5:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9612:20:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":11862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11860,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"9881:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11861,"name":"insertedNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11804,"src":"9896:15:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9881:30:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11913,"nodeType":"Block","src":"10307:371:80","statements":[{"expression":{"id":11904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11897,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"10532:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11899,"indexExpression":{"id":11898,"name":"insertedNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11804,"src":"10544:15:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10532:28:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11901,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11806,"src":"10574:6:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"id":11902,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"10582:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":11900,"name":"RewardNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11417,"src":"10563:10:80","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RewardNode_$11417_storage_ptr_$","typeString":"type(struct DistributionScheduler.RewardNode storage pointer)"}},"id":11903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10563:31:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_memory_ptr","typeString":"struct DistributionScheduler.RewardNode memory"}},"src":"10532:62:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11905,"nodeType":"ExpressionStatement","src":"10532:62:80"},{"expression":{"id":11911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":11906,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"10608:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11908,"indexExpression":{"id":11907,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11810,"src":"10620:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10608:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11909,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"nextTimestamp","nodeType":"MemberAccess","referencedDeclaration":11416,"src":"10608:41:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11910,"name":"insertedNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11804,"src":"10652:15:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"10608:59:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11912,"nodeType":"ExpressionStatement","src":"10608:59:80"}]},"id":11914,"nodeType":"IfStatement","src":"9877:801:80","trueBody":{"id":11896,"nodeType":"Block","src":"9913:388:80","statements":[{"assignments":[11864],"declarations":[{"constant":false,"id":11864,"mutability":"mutable","name":"rewardAmount","nodeType":"VariableDeclaration","scope":11896,"src":"10067:20:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11863,"name":"uint256","nodeType":"ElementaryTypeName","src":"10067:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11874,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"baseExpression":{"id":11867,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"10098:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11869,"indexExpression":{"id":11868,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"10110:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10098:24:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11870,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":11414,"src":"10098:31:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":11866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10090:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11865,"name":"uint256","nodeType":"ElementaryTypeName","src":"10090:7:80","typeDescriptions":{}}},"id":11871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10090:40:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":11872,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11806,"src":"10133:6:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"10090:49:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10067:72:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11876,"name":"rewardAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11864,"src":"10161:12:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":11879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10182:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":11878,"name":"uint224","nodeType":"ElementaryTypeName","src":"10182:7:80","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":11877,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10177:4:80","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10177:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":11881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"10177:17:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"10161:33:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52657761726420616d6f756e74206f766572666c6f77","id":11883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10196:24:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_5391fbd5d22ad37959ecf087392cb1f1bf4a2e987fe5a2e75904267b58a35e32","typeString":"literal_string \"Reward amount overflow\""},"value":"Reward amount overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5391fbd5d22ad37959ecf087392cb1f1bf4a2e987fe5a2e75904267b58a35e32","typeString":"literal_string \"Reward amount overflow\""}],"id":11875,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10153:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10153:68:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11885,"nodeType":"ExpressionStatement","src":"10153:68:80"},{"expression":{"id":11894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":11886,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"10235:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11888,"indexExpression":{"id":11887,"name":"nextNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"10247:11:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10235:24:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11889,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":11414,"src":"10235:31:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11892,"name":"rewardAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11864,"src":"10277:12:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10269:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":11890,"name":"uint224","nodeType":"ElementaryTypeName","src":"10269:7:80","typeDescriptions":{}}},"id":11893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10269:21:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"10235:55:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":11895,"nodeType":"ExpressionStatement","src":"10235:55:80"}]}},"id":11915,"nodeType":"IfStatement","src":"9608:1070:80","trueBody":{"id":11859,"nodeType":"Block","src":"9634:237:80","statements":[{"expression":{"id":11848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":11843,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"9731:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11845,"indexExpression":{"id":11844,"name":"currentNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11810,"src":"9743:14:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9731:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11846,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"nextTimestamp","nodeType":"MemberAccess","referencedDeclaration":11416,"src":"9731:41:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11847,"name":"insertedNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11804,"src":"9775:15:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9731:59:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11849,"nodeType":"ExpressionStatement","src":"9731:59:80"},{"expression":{"id":11857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11850,"name":"rewardsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"9804:11:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode storage ref)"}},"id":11852,"indexExpression":{"id":11851,"name":"insertedNodeKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11804,"src":"9816:15:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9804:28:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11854,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11806,"src":"9846:6:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"id":11855,"name":"_NULL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11406,"src":"9854:5:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":11853,"name":"RewardNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11417,"src":"9835:10:80","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RewardNode_$11417_storage_ptr_$","typeString":"type(struct DistributionScheduler.RewardNode storage pointer)"}},"id":11856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9835:25:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_memory_ptr","typeString":"struct DistributionScheduler.RewardNode memory"}},"src":"9804:56:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage","typeString":"struct DistributionScheduler.RewardNode storage ref"}},"id":11858,"nodeType":"ExpressionStatement","src":"9804:56:80"}]}}]},"documentation":{"id":11798,"nodeType":"StructuredDocumentation","src":"8767:101:80","text":" @dev Find the position of the new node in the list of pending nodes and insert it."},"id":11917,"implemented":true,"kind":"function","modifiers":[],"name":"_insertReward","nodeType":"FunctionDefinition","parameters":{"id":11807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11802,"mutability":"mutable","name":"rewardsList","nodeType":"VariableDeclaration","scope":11917,"src":"8905:49:80","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"typeName":{"id":11801,"keyType":{"id":11799,"name":"uint32","nodeType":"ElementaryTypeName","src":"8913:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"8905:29:80","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_RewardNode_$11417_storage_$","typeString":"mapping(uint32 => struct DistributionScheduler.RewardNode)"},"valueType":{"id":11800,"name":"RewardNode","nodeType":"UserDefinedTypeName","referencedDeclaration":11417,"src":"8923:10:80","typeDescriptions":{"typeIdentifier":"t_struct$_RewardNode_$11417_storage_ptr","typeString":"struct DistributionScheduler.RewardNode"}}},"visibility":"internal"},{"constant":false,"id":11804,"mutability":"mutable","name":"insertedNodeKey","nodeType":"VariableDeclaration","scope":11917,"src":"8964:22:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11803,"name":"uint32","nodeType":"ElementaryTypeName","src":"8964:6:80","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":11806,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11917,"src":"8996:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":11805,"name":"uint224","nodeType":"ElementaryTypeName","src":"8996:7:80","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"8895:121:80"},"returnParameters":{"id":11808,"nodeType":"ParameterList","parameters":[],"src":"9025:0:80"},"scope":11934,"src":"8873:1811:80","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":11932,"nodeType":"Block","src":"10888:55:80","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11925,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11920,"src":"10906:9:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31","id":11926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10918:7:80","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"10906:19:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11928,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10905:21:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31","id":11929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10929:7:80","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"10905:31:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11924,"id":11931,"nodeType":"Return","src":"10898:38:80"}]},"documentation":{"id":11918,"nodeType":"StructuredDocumentation","src":"10690:114:80","text":" @dev Rounds the provided timestamp down to the beginning of the previous week (Thurs 00:00 UTC)"},"id":11933,"implemented":true,"kind":"function","modifiers":[],"name":"_roundDownTimestamp","nodeType":"FunctionDefinition","parameters":{"id":11921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11920,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":11933,"src":"10838:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11919,"name":"uint256","nodeType":"ElementaryTypeName","src":"10838:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10837:19:80"},"returnParameters":{"id":11924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11923,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11933,"src":"10879:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11922,"name":"uint256","nodeType":"ElementaryTypeName","src":"10879:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10878:9:80"},"scope":11934,"src":"10809:134:80","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":11935,"src":"1205:9740:80"}],"src":"688:10258:80"},"id":80},"contracts/admin/GaugeAdder.sol":{"ast":{"absolutePath":"contracts/admin/GaugeAdder.sol","exportedSymbols":{"GaugeAdder":[12363]},"id":12364,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11936,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:81"},{"id":11937,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:81"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol","id":11938,"nodeType":"ImportDirective","scope":12364,"sourceUnit":740,"src":"747:81:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","id":11939,"nodeType":"ImportDirective","scope":12364,"sourceUnit":1455,"src":"829:92:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":11940,"nodeType":"ImportDirective","scope":12364,"sourceUnit":3052,"src":"922:65:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":11941,"nodeType":"ImportDirective","scope":12364,"sourceUnit":3698,"src":"989:88:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":11942,"nodeType":"ImportDirective","scope":12364,"sourceUnit":7188,"src":"1078:85:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","id":11943,"nodeType":"ImportDirective","scope":12364,"sourceUnit":3129,"src":"1164:79:81","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11944,"name":"IGaugeAdder","nodeType":"UserDefinedTypeName","referencedDeclaration":739,"src":"1268:11:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":11945,"nodeType":"InheritanceSpecifier","src":"1268:11:81"},{"baseName":{"id":11946,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1281:23:81","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":11947,"nodeType":"InheritanceSpecifier","src":"1281:23:81"},{"baseName":{"id":11948,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"1306:15:81","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":11949,"nodeType":"InheritanceSpecifier","src":"1306:15:81"}],"contractDependencies":[739,2259,3128,3697,7187],"contractKind":"contract","fullyImplemented":true,"id":12363,"linearizedBaseContracts":[12363,7187,3697,3128,739,2259],"name":"GaugeAdder","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":11952,"mutability":"constant","name":"_ETHEREUM_GAUGE_CONTROLLER_TYPE","nodeType":"VariableDeclaration","scope":12363,"src":"1477:59:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":11950,"name":"int128","nodeType":"ElementaryTypeName","src":"1477:6:81","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"value":{"hexValue":"32","id":11951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1535:1:81","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"constant":false,"id":11960,"mutability":"immutable","name":"_ethereum","nodeType":"VariableDeclaration","scope":12363,"src":"1543:77:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11953,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1543:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"457468657265756d","id":11957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1608:10:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_564ccaf7594d66b1eaaea24fe01f0585bf52ee70852af4eac0cc4b04711cd0e2","typeString":"literal_string \"Ethereum\""},"value":"Ethereum"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_564ccaf7594d66b1eaaea24fe01f0585bf52ee70852af4eac0cc4b04711cd0e2","typeString":"literal_string \"Ethereum\""}],"expression":{"id":11955,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1591:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1591:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1591:28:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11954,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1581:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1581:39:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":11962,"mutability":"immutable","name":"_gaugeController","nodeType":"VariableDeclaration","scope":12363,"src":"1626:51:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":11961,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1626:16:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"private"},{"constant":false,"id":11964,"mutability":"immutable","name":"_balWethBpt","nodeType":"VariableDeclaration","scope":12363,"src":"1683:36:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":11963,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1683:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"private"},{"constant":false,"id":11966,"mutability":"mutable","name":"_authorizerAdaptorEntrypoint","nodeType":"VariableDeclaration","scope":12363,"src":"1725:65:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":11965,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"1725:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"private"},{"constant":false,"id":11969,"mutability":"mutable","name":"_gaugeTypes","nodeType":"VariableDeclaration","scope":12363,"src":"1841:28:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string[]"},"typeName":{"baseType":{"id":11967,"name":"string","nodeType":"ElementaryTypeName","src":"1841:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":11968,"nodeType":"ArrayTypeName","src":"1841:8:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"private"},{"constant":false,"id":11973,"mutability":"mutable","name":"_gaugeTypeFactory","nodeType":"VariableDeclaration","scope":12363,"src":"1952:67:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"mapping(string => contract ILiquidityGaugeFactory)"},"typeName":{"id":11972,"keyType":{"id":11970,"name":"string","nodeType":"ElementaryTypeName","src":"1960:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"nodeType":"Mapping","src":"1952:41:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"mapping(string => contract ILiquidityGaugeFactory)"},"valueType":{"id":11971,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"1970:22:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}}},"visibility":"private"},{"body":{"id":12001,"nodeType":"Block","src":"2202:225:81","statements":[{"expression":{"id":11989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11987,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11962,"src":"2212:16:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11988,"name":"gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11975,"src":"2231:15:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"src":"2212:34:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":11990,"nodeType":"ExpressionStatement","src":"2212:34:81"},{"expression":{"id":11993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11991,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11966,"src":"2256:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11992,"name":"authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11977,"src":"2287:27:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"src":"2256:58:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":11994,"nodeType":"ExpressionStatement","src":"2256:58:81"},{"expression":{"id":11999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11995,"name":"_balWethBpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11964,"src":"2383:11:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11996,"name":"gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11975,"src":"2397:15:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":11997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":768,"src":"2397:21:81","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2447_$","typeString":"function () view external returns (contract IERC20)"}},"id":11998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2397:23:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"2383:37:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":12000,"nodeType":"ExpressionStatement","src":"2383:37:81"}]},"id":12002,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11980,"name":"gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11975,"src":"2162:15:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":11981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"admin","nodeType":"MemberAccess","referencedDeclaration":806,"src":"2162:21:81","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizerAdaptor_$49_$","typeString":"function () view external returns (contract IAuthorizerAdaptor)"}},"id":11982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2162:23:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":11983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getVault","nodeType":"MemberAccess","referencedDeclaration":32,"src":"2162:32:81","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view external returns (contract IVault)"}},"id":11984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2162:34:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":11985,"modifierName":{"id":11979,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"2138:23:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"2138:59:81"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":11978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11975,"mutability":"mutable","name":"gaugeController","nodeType":"VariableDeclaration","scope":12002,"src":"2038:32:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":11974,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"2038:16:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"internal"},{"constant":false,"id":11977,"mutability":"mutable","name":"authorizerAdaptorEntrypoint","nodeType":"VariableDeclaration","scope":12002,"src":"2072:56:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":11976,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"2072:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"internal"}],"src":"2037:92:81"},"returnParameters":{"id":11986,"nodeType":"ParameterList","parameters":[],"src":"2202:0:81"},"scope":12363,"src":"2026:401:81","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12014,"nodeType":"Block","src":"2486:87:81","statements":[{"expression":{"arguments":[{"arguments":[{"id":12008,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12004,"src":"2522:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12007,"name":"_isValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"2504:17:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (string memory) view returns (bool)"}},"id":12009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2504:28:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c69642067617567652074797065","id":12010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2534:20:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""},"value":"Invalid gauge type"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""}],"id":12006,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2496:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2496:59:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12012,"nodeType":"ExpressionStatement","src":"2496:59:81"},{"id":12013,"nodeType":"PlaceholderStatement","src":"2565:1:81"}]},"id":12015,"name":"withValidGaugeType","nodeType":"ModifierDefinition","parameters":{"id":12005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12004,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12015,"src":"2461:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12003,"name":"string","nodeType":"ElementaryTypeName","src":"2461:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2460:25:81"},"src":"2433:140:81","virtual":false,"visibility":"internal"},{"baseFunctions":[663],"body":{"id":12024,"nodeType":"Block","src":"2715:52:81","statements":[{"expression":{"id":12022,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11966,"src":"2732:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"functionReturnParameters":12021,"id":12023,"nodeType":"Return","src":"2725:35:81"}]},"documentation":{"id":12016,"nodeType":"StructuredDocumentation","src":"2579:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"7afcf0e6","id":12025,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizerAdaptorEntrypoint","nodeType":"FunctionDefinition","overrides":{"id":12018,"nodeType":"OverrideSpecifier","overrides":[],"src":"2667:8:81"},"parameters":{"id":12017,"nodeType":"ParameterList","parameters":[],"src":"2650:2:81"},"returnParameters":{"id":12021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12020,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12025,"src":"2685:28:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":12019,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"2685:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"internal"}],"src":"2684:30:81"},"scope":12363,"src":"2611:156:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[669],"body":{"id":12034,"nodeType":"Block","src":"2885:40:81","statements":[{"expression":{"id":12032,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11962,"src":"2902:16:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"functionReturnParameters":12031,"id":12033,"nodeType":"Return","src":"2895:23:81"}]},"documentation":{"id":12026,"nodeType":"StructuredDocumentation","src":"2773:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"58de9ade","id":12035,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeController","nodeType":"FunctionDefinition","overrides":{"id":12028,"nodeType":"OverrideSpecifier","overrides":[],"src":"2849:8:81"},"parameters":{"id":12027,"nodeType":"ParameterList","parameters":[],"src":"2832:2:81"},"returnParameters":{"id":12031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12030,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12035,"src":"2867:16:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":12029,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"2867:16:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"internal"}],"src":"2866:18:81"},"scope":12363,"src":"2805:120:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[676],"body":{"id":12045,"nodeType":"Block","src":"3037:35:81","statements":[{"expression":{"id":12043,"name":"_gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11969,"src":"3054:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"functionReturnParameters":12042,"id":12044,"nodeType":"Return","src":"3047:18:81"}]},"documentation":{"id":12036,"nodeType":"StructuredDocumentation","src":"2931:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"afcb1a86","id":12046,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeTypes","nodeType":"FunctionDefinition","overrides":{"id":12038,"nodeType":"OverrideSpecifier","overrides":[],"src":"3002:8:81"},"parameters":{"id":12037,"nodeType":"ParameterList","parameters":[],"src":"2985:2:81"},"returnParameters":{"id":12042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12041,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12046,"src":"3020:15:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":12039,"name":"string","nodeType":"ElementaryTypeName","src":"3020:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":12040,"nodeType":"ArrayTypeName","src":"3020:8:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"src":"3019:17:81"},"scope":12363,"src":"2963:109:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[684],"body":{"id":12059,"nodeType":"Block","src":"3201:42:81","statements":[{"expression":{"baseExpression":{"id":12055,"name":"_gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11969,"src":"3218:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":12057,"indexExpression":{"id":12056,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12049,"src":"3230:5:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3218:18:81","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":12054,"id":12058,"nodeType":"Return","src":"3211:25:81"}]},"documentation":{"id":12047,"nodeType":"StructuredDocumentation","src":"3078:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"08ceb030","id":12060,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeTypeAtIndex","nodeType":"FunctionDefinition","overrides":{"id":12051,"nodeType":"OverrideSpecifier","overrides":[],"src":"3168:8:81"},"parameters":{"id":12050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12049,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":12060,"src":"3139:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12048,"name":"uint256","nodeType":"ElementaryTypeName","src":"3139:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3138:15:81"},"returnParameters":{"id":12054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12053,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12060,"src":"3186:13:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12052,"name":"string","nodeType":"ElementaryTypeName","src":"3186:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3185:15:81"},"scope":12363,"src":"3110:133:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[690],"body":{"id":12070,"nodeType":"Block","src":"3352:42:81","statements":[{"expression":{"expression":{"id":12067,"name":"_gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11969,"src":"3369:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":12068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3369:18:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12066,"id":12069,"nodeType":"Return","src":"3362:25:81"}]},"documentation":{"id":12061,"nodeType":"StructuredDocumentation","src":"3249:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"96432aeb","id":12071,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeTypesCount","nodeType":"FunctionDefinition","overrides":{"id":12063,"nodeType":"OverrideSpecifier","overrides":[],"src":"3325:8:81"},"parameters":{"id":12062,"nodeType":"ParameterList","parameters":[],"src":"3308:2:81"},"returnParameters":{"id":12066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12065,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12071,"src":"3343:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12064,"name":"uint256","nodeType":"ElementaryTypeName","src":"3343:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3342:9:81"},"scope":12363,"src":"3281:113:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[698],"body":{"id":12084,"nodeType":"Block","src":"3521:52:81","statements":[{"expression":{"arguments":[{"id":12081,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12074,"src":"3556:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12080,"name":"_isValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"3538:17:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (string memory) view returns (bool)"}},"id":12082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3538:28:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12079,"id":12083,"nodeType":"Return","src":"3531:35:81"}]},"documentation":{"id":12072,"nodeType":"StructuredDocumentation","src":"3400:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"16e772bc","id":12085,"implemented":true,"kind":"function","modifiers":[],"name":"isValidGaugeType","nodeType":"FunctionDefinition","overrides":{"id":12076,"nodeType":"OverrideSpecifier","overrides":[],"src":"3497:8:81"},"parameters":{"id":12075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12074,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12085,"src":"3458:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12073,"name":"string","nodeType":"ElementaryTypeName","src":"3458:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3457:25:81"},"returnParameters":{"id":12079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12078,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12085,"src":"3515:4:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12077,"name":"bool","nodeType":"ElementaryTypeName","src":"3515:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3514:6:81"},"scope":12363,"src":"3432:141:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[706],"body":{"id":12101,"nodeType":"Block","src":"3798:52:81","statements":[{"expression":{"baseExpression":{"id":12097,"name":"_gaugeTypeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11973,"src":"3815:17:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"mapping(string memory => contract ILiquidityGaugeFactory)"}},"id":12099,"indexExpression":{"id":12098,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12088,"src":"3833:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3815:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"functionReturnParameters":12096,"id":12100,"nodeType":"Return","src":"3808:35:81"}]},"documentation":{"id":12086,"nodeType":"StructuredDocumentation","src":"3579:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"572cb6a5","id":12102,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":12092,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12088,"src":"3742:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":12093,"modifierName":{"id":12091,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12015,"src":"3723:18:81","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"3723:29:81"}],"name":"getFactoryForGaugeType","nodeType":"FunctionDefinition","overrides":{"id":12090,"nodeType":"OverrideSpecifier","overrides":[],"src":"3706:8:81"},"parameters":{"id":12089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12088,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12102,"src":"3643:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12087,"name":"string","nodeType":"ElementaryTypeName","src":"3643:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3642:25:81"},"returnParameters":{"id":12096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12095,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12102,"src":"3770:22:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":12094,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"3770:22:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"3769:24:81"},"scope":12363,"src":"3611:239:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[716],"body":{"id":12121,"nodeType":"Block","src":"4073:66:81","statements":[{"expression":{"arguments":[{"id":12117,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12105,"src":"4115:5:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12118,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12107,"src":"4122:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12116,"name":"_isGaugeFromValidFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12282,"src":"4090:24:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (address,string memory) view returns (bool)"}},"id":12119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4090:42:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12115,"id":12120,"nodeType":"Return","src":"4083:49:81"}]},"documentation":{"id":12103,"nodeType":"StructuredDocumentation","src":"3856:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"a0ade33e","id":12122,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":12111,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12107,"src":"4035:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":12112,"modifierName":{"id":12110,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12015,"src":"4016:18:81","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"4016:29:81"}],"name":"isGaugeFromValidFactory","nodeType":"FunctionDefinition","overrides":{"id":12109,"nodeType":"OverrideSpecifier","overrides":[],"src":"3999:8:81"},"parameters":{"id":12108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12105,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":12122,"src":"3921:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12104,"name":"address","nodeType":"ElementaryTypeName","src":"3921:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12107,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12122,"src":"3936:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12106,"name":"string","nodeType":"ElementaryTypeName","src":"3936:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3920:40:81"},"returnParameters":{"id":12115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12114,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12122,"src":"4063:4:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12113,"name":"bool","nodeType":"ElementaryTypeName","src":"4063:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4062:6:81"},"scope":12363,"src":"3888:251:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[722],"body":{"id":12161,"nodeType":"Block","src":"4279:249:81","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":12134,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"4303:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4297:5:81","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":12132,"name":"bytes","nodeType":"ElementaryTypeName","src":"4297:5:81","typeDescriptions":{}}},"id":12135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4297:16:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4297:23:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4323:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4297:27:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520747970652063616e6e6f7420626520656d707479","id":12139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4326:28:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_c47e22c661fe74df9b9e6354e2d6957cbd7324025c5eae69a863de051e51da9e","typeString":"literal_string \"Gauge type cannot be empty\""},"value":"Gauge type cannot be empty"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c47e22c661fe74df9b9e6354e2d6957cbd7324025c5eae69a863de051e51da9e","typeString":"literal_string \"Gauge type cannot be empty\""}],"id":12131,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4289:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4289:66:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12141,"nodeType":"ExpressionStatement","src":"4289:66:81"},{"expression":{"arguments":[{"id":12146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4373:29:81","subExpression":{"arguments":[{"id":12144,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"4392:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12143,"name":"_isValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"4374:17:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (string memory) view returns (bool)"}},"id":12145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4374:28:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4761756765207479706520616c7265616479206164646564","id":12147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4404:26:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ecb1aadfbd637c176e3a0cca230f94b7adc17e47cfe10dfa981c11ef25e97ce","typeString":"literal_string \"Gauge type already added\""},"value":"Gauge type already added"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5ecb1aadfbd637c176e3a0cca230f94b7adc17e47cfe10dfa981c11ef25e97ce","typeString":"literal_string \"Gauge type already added\""}],"id":12142,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4365:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4365:66:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12149,"nodeType":"ExpressionStatement","src":"4365:66:81"},{"expression":{"arguments":[{"id":12153,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"4459:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":12150,"name":"_gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11969,"src":"4442:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":12152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"4442:16:81","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_string_storage_$returns$__$","typeString":"function (string storage ref)"}},"id":12154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4442:27:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12155,"nodeType":"ExpressionStatement","src":"4442:27:81"},{"eventCall":{"arguments":[{"id":12157,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"4500:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12158,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"4511:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12156,"name":"GaugeTypeAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":649,"src":"4485:14:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":12159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4485:36:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12160,"nodeType":"EmitStatement","src":"4480:41:81"}]},"documentation":{"id":12123,"nodeType":"StructuredDocumentation","src":"4169:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"231856fa","id":12162,"implemented":true,"kind":"function","modifiers":[{"id":12129,"modifierName":{"id":12128,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"4266:12:81","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4266:12:81"}],"name":"addGaugeType","nodeType":"FunctionDefinition","overrides":{"id":12127,"nodeType":"OverrideSpecifier","overrides":[],"src":"4257:8:81"},"parameters":{"id":12126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12125,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12162,"src":"4223:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12124,"name":"string","nodeType":"ElementaryTypeName","src":"4223:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4222:25:81"},"returnParameters":{"id":12130,"nodeType":"ParameterList","parameters":[],"src":"4279:0:81"},"scope":12363,"src":"4201:327:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[730],"body":{"id":12206,"nodeType":"Block","src":"4721:275:81","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":12183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":12179,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12167,"src":"4762:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":12177,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4745:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"4745:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4745:27:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12176,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4735:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":12181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4735:38:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12182,"name":"_ethereum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11960,"src":"4777:9:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4735:51:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12200,"nodeType":"IfStatement","src":"4731:221:81","trueBody":{"id":12199,"nodeType":"Block","src":"4788:164:81","statements":[{"assignments":[12185],"declarations":[{"constant":false,"id":12185,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":12199,"src":"4802:11:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12184,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"4802:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"id":12191,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":12187,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12165,"src":"4839:5:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12186,"name":"IStakingLiquidityGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1454,"src":"4816:22:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakingLiquidityGauge_$1454_$","typeString":"type(contract IStakingLiquidityGauge)"}},"id":12188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4816:29:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$1454","typeString":"contract IStakingLiquidityGauge"}},"id":12189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"lp_token","nodeType":"MemberAccess","referencedDeclaration":1441,"src":"4816:38:81","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2447_$","typeString":"function () view external returns (contract IERC20)"}},"id":12190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4816:40:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"4802:54:81"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"id":12195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12193,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12185,"src":"4878:4:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12194,"name":"_balWethBpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11964,"src":"4886:11:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"4878:19:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f742061646420676175676520666f722038302f32302042414c2d5745544820425054","id":12196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4899:41:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_b701fa1b9d0cd4c6fe91a0ed3c273e193c21852b065319a87de436b01db3c27b","typeString":"literal_string \"Cannot add gauge for 80/20 BAL-WETH BPT\""},"value":"Cannot add gauge for 80/20 BAL-WETH BPT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b701fa1b9d0cd4c6fe91a0ed3c273e193c21852b065319a87de436b01db3c27b","typeString":"literal_string \"Cannot add gauge for 80/20 BAL-WETH BPT\""}],"id":12192,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4870:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4870:71:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12198,"nodeType":"ExpressionStatement","src":"4870:71:81"}]}},{"expression":{"arguments":[{"id":12202,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12165,"src":"4972:5:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12203,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12167,"src":"4979:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12201,"name":"_addGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12316,"src":"4962:9:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,string memory)"}},"id":12204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4962:27:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12205,"nodeType":"ExpressionStatement","src":"4962:27:81"}]},"documentation":{"id":12163,"nodeType":"StructuredDocumentation","src":"4534:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"5bf71434","id":12207,"implemented":true,"kind":"function","modifiers":[{"id":12171,"modifierName":{"id":12170,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"4666:12:81","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4666:12:81"},{"arguments":[{"id":12173,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12167,"src":"4706:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":12174,"modifierName":{"id":12172,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12015,"src":"4687:18:81","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"4687:29:81"}],"name":"addGauge","nodeType":"FunctionDefinition","overrides":{"id":12169,"nodeType":"OverrideSpecifier","overrides":[],"src":"4649:8:81"},"parameters":{"id":12168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12165,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":12207,"src":"4584:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12164,"name":"address","nodeType":"ElementaryTypeName","src":"4584:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12167,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12207,"src":"4599:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12166,"name":"string","nodeType":"ElementaryTypeName","src":"4599:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4583:40:81"},"returnParameters":{"id":12175,"nodeType":"ParameterList","parameters":[],"src":"4721:0:81"},"scope":12363,"src":"4566:430:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[738],"body":{"id":12253,"nodeType":"Block","src":"5213:359:81","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"id":12226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12222,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12210,"src":"5316:7:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":12224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5350:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12223,"name":"ILiquidityGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":941,"src":"5327:22:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"type(contract ILiquidityGaugeFactory)"}},"id":12225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5327:25:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"src":"5316:36:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":12227,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5315:38:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"id":12235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5358:39:81","subExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":12232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5394:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12231,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5386:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12230,"name":"address","nodeType":"ElementaryTypeName","src":"5386:7:81","typeDescriptions":{}}},"id":12233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5386:10:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":12228,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12210,"src":"5359:7:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":12229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isGaugeFromFactory","nodeType":"MemberAccess","referencedDeclaration":940,"src":"5359:26:81","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":12234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5359:38:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":12236,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5357:41:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5315:83:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420666163746f727920696d706c656d656e746174696f6e","id":12238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5412:32:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_e8c32179c84f665ce8d08bd9227f0ffb97fb232183e9391983a3ca8f91606177","typeString":"literal_string \"Invalid factory implementation\""},"value":"Invalid factory implementation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e8c32179c84f665ce8d08bd9227f0ffb97fb232183e9391983a3ca8f91606177","typeString":"literal_string \"Invalid factory implementation\""}],"id":12221,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5294:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5294:160:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12240,"nodeType":"ExpressionStatement","src":"5294:160:81"},{"expression":{"id":12245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12241,"name":"_gaugeTypeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11973,"src":"5465:17:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"mapping(string memory => contract ILiquidityGaugeFactory)"}},"id":12243,"indexExpression":{"id":12242,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"5483:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5465:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12244,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12210,"src":"5496:7:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"src":"5465:38:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":12246,"nodeType":"ExpressionStatement","src":"5465:38:81"},{"eventCall":{"arguments":[{"id":12248,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"5535:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12249,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"5546:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12250,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12210,"src":"5557:7:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}],"id":12247,"name":"GaugeFactorySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"5519:15:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_contract$_ILiquidityGaugeFactory_$941_$returns$__$","typeString":"function (string memory,string memory,contract ILiquidityGaugeFactory)"}},"id":12251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5519:46:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12252,"nodeType":"EmitStatement","src":"5514:51:81"}]},"documentation":{"id":12208,"nodeType":"StructuredDocumentation","src":"5002:27:81","text":"@inheritdoc IGaugeAdder"},"functionSelector":"066edd7a","id":12254,"implemented":true,"kind":"function","modifiers":[{"id":12216,"modifierName":{"id":12215,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"5158:12:81","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"5158:12:81"},{"arguments":[{"id":12218,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"5198:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":12219,"modifierName":{"id":12217,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12015,"src":"5179:18:81","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"5179:29:81"}],"name":"setGaugeFactory","nodeType":"FunctionDefinition","overrides":{"id":12214,"nodeType":"OverrideSpecifier","overrides":[],"src":"5141:8:81"},"parameters":{"id":12213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12210,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":12254,"src":"5059:30:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":12209,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"5059:22:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"},{"constant":false,"id":12212,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12254,"src":"5091:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12211,"name":"string","nodeType":"ElementaryTypeName","src":"5091:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5058:57:81"},"returnParameters":{"id":12220,"nodeType":"ParameterList","parameters":[],"src":"5213:0:81"},"scope":12363,"src":"5034:538:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12281,"nodeType":"Block","src":"5708:190:81","statements":[{"assignments":[12264],"declarations":[{"constant":false,"id":12264,"mutability":"mutable","name":"gaugeFactory","nodeType":"VariableDeclaration","scope":12281,"src":"5718:35:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":12263,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"5718:22:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"id":12268,"initialValue":{"baseExpression":{"id":12265,"name":"_gaugeTypeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11973,"src":"5756:17:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"mapping(string memory => contract ILiquidityGaugeFactory)"}},"id":12267,"indexExpression":{"id":12266,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12258,"src":"5774:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5756:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"VariableDeclarationStatement","src":"5718:66:81"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"id":12273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12269,"name":"gaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12264,"src":"5801:12:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":12271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5840:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12270,"name":"ILiquidityGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":941,"src":"5817:22:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"type(contract ILiquidityGaugeFactory)"}},"id":12272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5817:25:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"src":"5801:41:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":12277,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12256,"src":"5885:5:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12275,"name":"gaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12264,"src":"5853:12:81","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":12276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isGaugeFromFactory","nodeType":"MemberAccess","referencedDeclaration":940,"src":"5853:31:81","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":12278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5853:38:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5801:90:81","trueExpression":{"hexValue":"66616c7365","id":12274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5845:5:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12262,"id":12280,"nodeType":"Return","src":"5794:97:81"}]},"id":12282,"implemented":true,"kind":"function","modifiers":[],"name":"_isGaugeFromValidFactory","nodeType":"FunctionDefinition","parameters":{"id":12259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12256,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":12282,"src":"5639:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12255,"name":"address","nodeType":"ElementaryTypeName","src":"5639:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12258,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12282,"src":"5654:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12257,"name":"string","nodeType":"ElementaryTypeName","src":"5654:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5638:40:81"},"returnParameters":{"id":12262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12261,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12282,"src":"5702:4:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12260,"name":"bool","nodeType":"ElementaryTypeName","src":"5702:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5701:6:81"},"scope":12363,"src":"5605:293:81","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12315,"nodeType":"Block","src":"6087:411:81","statements":[{"expression":{"arguments":[{"arguments":[{"id":12292,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12285,"src":"6130:5:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12293,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12287,"src":"6137:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12291,"name":"_isGaugeFromValidFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12282,"src":"6105:24:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (address,string memory) view returns (bool)"}},"id":12294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6105:42:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206761756765","id":12295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6149:15:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f01a4186ff9a4f4fec3be353497709ea5e4152dad176712bbaa55bd57735b49","typeString":"literal_string \"Invalid gauge\""},"value":"Invalid gauge"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f01a4186ff9a4f4fec3be353497709ea5e4152dad176712bbaa55bd57735b49","typeString":"literal_string \"Invalid gauge\""}],"id":12290,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6097:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6097:68:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12297,"nodeType":"ExpressionStatement","src":"6097:68:81"},{"expression":{"arguments":[{"arguments":[{"id":12303,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11962,"src":"6351:16:81","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}],"id":12302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6343:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12301,"name":"address","nodeType":"ElementaryTypeName","src":"6343:7:81","typeDescriptions":{}}},"id":12304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6343:25:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":12307,"name":"IGaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":821,"src":"6405:16:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IGaugeController_$821_$","typeString":"type(contract IGaugeController)"}},"id":12308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"add_gauge","nodeType":"MemberAccess","referencedDeclaration":789,"src":"6405:26:81","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_int128_$returns$__$","typeString":"function IGaugeController.add_gauge(address,int128)"}},"id":12309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"6405:35:81","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":12310,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12285,"src":"6442:5:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12311,"name":"_ETHEREUM_GAUGE_CONTROLLER_TYPE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11952,"src":"6449:31:81","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":12305,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6382:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12306,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"6382:22:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":12312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6382:99:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12298,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11966,"src":"6287:28:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":12300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"performAction","nodeType":"MemberAccess","referencedDeclaration":48,"src":"6287:42:81","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":12313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6287:204:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12314,"nodeType":"ExpressionStatement","src":"6287:204:81"}]},"documentation":{"id":12283,"nodeType":"StructuredDocumentation","src":"5904:111:81","text":" @dev Adds `gauge` to the GaugeController with type `gaugeType` and an initial weight of zero"},"id":12316,"implemented":true,"kind":"function","modifiers":[],"name":"_addGauge","nodeType":"FunctionDefinition","parameters":{"id":12288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12285,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":12316,"src":"6039:13:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12284,"name":"address","nodeType":"ElementaryTypeName","src":"6039:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12287,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12316,"src":"6054:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12286,"name":"string","nodeType":"ElementaryTypeName","src":"6054:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6038:40:81"},"returnParameters":{"id":12289,"nodeType":"ParameterList","parameters":[],"src":"6087:0:81"},"scope":12363,"src":"6020:478:81","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":12361,"nodeType":"Block","src":"6585:294:81","statements":[{"assignments":[12324],"declarations":[{"constant":false,"id":12324,"mutability":"mutable","name":"gaugeTypeHash","nodeType":"VariableDeclaration","scope":12361,"src":"6595:21:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12323,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6595:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":12331,"initialValue":{"arguments":[{"arguments":[{"id":12328,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12318,"src":"6646:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":12326,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6629:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"6629:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6629:27:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12325,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"6619:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":12330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6619:38:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6595:62:81"},{"body":{"id":12357,"nodeType":"Block","src":"6716:134:81","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":12352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12343,"name":"gaugeTypeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12324,"src":"6734:13:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"baseExpression":{"id":12347,"name":"_gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11969,"src":"6778:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":12349,"indexExpression":{"id":12348,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12333,"src":"6790:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6778:14:81","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":12345,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6761:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"6761:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6761:32:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12344,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"6751:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":12351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6751:43:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6734:60:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12356,"nodeType":"IfStatement","src":"6730:110:81","trueBody":{"id":12355,"nodeType":"Block","src":"6796:44:81","statements":[{"expression":{"hexValue":"74727565","id":12353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6821:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":12322,"id":12354,"nodeType":"Return","src":"6814:11:81"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12336,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12333,"src":"6687:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":12337,"name":"_gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11969,"src":"6691:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":12338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6691:18:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6687:22:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12358,"initializationExpression":{"assignments":[12333],"declarations":[{"constant":false,"id":12333,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12358,"src":"6672:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12332,"name":"uint256","nodeType":"ElementaryTypeName","src":"6672:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12335,"initialValue":{"hexValue":"30","id":12334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6684:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6672:13:81"},"loopExpression":{"expression":{"id":12341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6711:3:81","subExpression":{"id":12340,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12333,"src":"6713:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12342,"nodeType":"ExpressionStatement","src":"6711:3:81"},"nodeType":"ForStatement","src":"6667:183:81"},{"expression":{"hexValue":"66616c7365","id":12359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6867:5:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":12322,"id":12360,"nodeType":"Return","src":"6860:12:81"}]},"id":12362,"implemented":true,"kind":"function","modifiers":[],"name":"_isValidGaugeType","nodeType":"FunctionDefinition","parameters":{"id":12319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12318,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":12362,"src":"6531:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12317,"name":"string","nodeType":"ElementaryTypeName","src":"6531:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6530:25:81"},"returnParameters":{"id":12322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12321,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12362,"src":"6579:4:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12320,"name":"bool","nodeType":"ElementaryTypeName","src":"6579:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6578:6:81"},"scope":12363,"src":"6504:375:81","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":12364,"src":"1245:5636:81"}],"src":"688:6194:81"},"id":81},"contracts/fee-distribution/FeeDistributor.sol":{"ast":{"absolutePath":"contracts/fee-distribution/FeeDistributor.sol","exportedSymbols":{"FeeDistributor":[13820]},"id":13821,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12365,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:82"},{"id":12366,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:82"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","id":12367,"nodeType":"ImportDirective","scope":13821,"sourceUnit":2260,"src":"747:91:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol","id":12368,"nodeType":"ImportDirective","scope":13821,"sourceUnit":625,"src":"839:85:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","id":12369,"nodeType":"ImportDirective","scope":13821,"sourceUnit":1560,"src":"925:83:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":12370,"nodeType":"ImportDirective","scope":13821,"sourceUnit":7188,"src":"1010:85:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol","id":12371,"nodeType":"ImportDirective","scope":13821,"sourceUnit":3554,"src":"1096:83:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","id":12372,"nodeType":"ImportDirective","scope":13821,"sourceUnit":3421,"src":"1180:77:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":12373,"nodeType":"ImportDirective","scope":13821,"sourceUnit":7342,"src":"1258:79:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","id":12374,"nodeType":"ImportDirective","scope":13821,"sourceUnit":7420,"src":"1338:78:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","id":12375,"nodeType":"ImportDirective","scope":13821,"sourceUnit":5684,"src":"1417:66:82","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12377,"name":"IFeeDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":624,"src":"2040:15:82","typeDescriptions":{"typeIdentifier":"t_contract$_IFeeDistributor_$624","typeString":"contract IFeeDistributor"}},"id":12378,"nodeType":"InheritanceSpecifier","src":"2040:15:82"},{"baseName":{"id":12379,"name":"OptionalOnlyCaller","nodeType":"UserDefinedTypeName","referencedDeclaration":3553,"src":"2057:18:82","typeDescriptions":{"typeIdentifier":"t_contract$_OptionalOnlyCaller_$3553","typeString":"contract OptionalOnlyCaller"}},"id":12380,"nodeType":"InheritanceSpecifier","src":"2057:18:82"},{"baseName":{"id":12381,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"2077:15:82","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":12382,"nodeType":"InheritanceSpecifier","src":"2077:15:82"}],"contractDependencies":[624,2293,2311,3308,3553,3603,6021,7187],"contractKind":"contract","documentation":{"id":12376,"nodeType":"StructuredDocumentation","src":"1522:490:82","text":" @title Fee Distributor\n @notice Distributes any tokens transferred to the contract (e.g. Protocol fees and any BAL emissions) among veBAL\n holders proportionally based on a snapshot of the week at which the tokens are sent to the FeeDistributor contract.\n @dev Supports distributing arbitrarily many different tokens. In order to start distributing a new token to veBAL\n holders simply transfer the tokens to the `FeeDistributor` contract and then call `checkpointToken`."},"fullyImplemented":true,"id":13820,"linearizedBaseContracts":[13820,7187,3553,3603,3308,6021,2311,2293,624],"name":"FeeDistributor","nodeType":"ContractDefinition","nodes":[{"id":12385,"libraryName":{"id":12383,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7419,"src":"2105:8:82","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7419","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"2099:27:82","typeName":{"id":12384,"name":"uint256","nodeType":"ElementaryTypeName","src":"2118:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":12388,"libraryName":{"id":12386,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"2137:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"2131:27:82","typeName":{"id":12387,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2151:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":false,"id":12390,"mutability":"immutable","name":"_votingEscrow","nodeType":"VariableDeclaration","scope":13820,"src":"2164:45:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":12389,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"2164:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"private"},{"constant":false,"id":12392,"mutability":"immutable","name":"_startTime","nodeType":"VariableDeclaration","scope":13820,"src":"2216:36:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12391,"name":"uint256","nodeType":"ElementaryTypeName","src":"2216:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":12394,"mutability":"mutable","name":"_timeCursor","nodeType":"VariableDeclaration","scope":13820,"src":"2279:27:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12393,"name":"uint256","nodeType":"ElementaryTypeName","src":"2279:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":12398,"mutability":"mutable","name":"_veSupplyCache","nodeType":"VariableDeclaration","scope":13820,"src":"2312:50:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":12397,"keyType":{"id":12395,"name":"uint256","nodeType":"ElementaryTypeName","src":"2320:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2312:27:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":12396,"name":"uint256","nodeType":"ElementaryTypeName","src":"2331:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"canonicalName":"FeeDistributor.TokenState","id":12405,"members":[{"constant":false,"id":12400,"mutability":"mutable","name":"startTime","nodeType":"VariableDeclaration","scope":12405,"src":"2783:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12399,"name":"uint64","nodeType":"ElementaryTypeName","src":"2783:6:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12402,"mutability":"mutable","name":"timeCursor","nodeType":"VariableDeclaration","scope":12405,"src":"2809:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12401,"name":"uint64","nodeType":"ElementaryTypeName","src":"2809:6:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12404,"mutability":"mutable","name":"cachedBalance","nodeType":"VariableDeclaration","scope":12405,"src":"2836:21:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":12403,"name":"uint128","nodeType":"ElementaryTypeName","src":"2836:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"TokenState","nodeType":"StructDefinition","scope":13820,"src":"2755:109:82","visibility":"public"},{"constant":false,"id":12409,"mutability":"mutable","name":"_tokenState","nodeType":"VariableDeclaration","scope":13820,"src":"2869:49:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_TokenState_$12405_storage_$","typeString":"mapping(contract IERC20 => struct FeeDistributor.TokenState)"},"typeName":{"id":12408,"keyType":{"id":12406,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2877:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"2869:29:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_TokenState_$12405_storage_$","typeString":"mapping(contract IERC20 => struct FeeDistributor.TokenState)"},"valueType":{"id":12407,"name":"TokenState","nodeType":"UserDefinedTypeName","referencedDeclaration":12405,"src":"2887:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState"}}},"visibility":"private"},{"constant":false,"id":12415,"mutability":"mutable","name":"_tokensPerWeek","nodeType":"VariableDeclaration","scope":13820,"src":"2924:69:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(contract IERC20 => mapping(uint256 => uint256))"},"typeName":{"id":12414,"keyType":{"id":12410,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2932:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"2924:46:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(contract IERC20 => mapping(uint256 => uint256))"},"valueType":{"id":12413,"keyType":{"id":12411,"name":"uint256","nodeType":"ElementaryTypeName","src":"2950:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2942:27:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":12412,"name":"uint256","nodeType":"ElementaryTypeName","src":"2961:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"canonicalName":"FeeDistributor.UserState","id":12422,"members":[{"constant":false,"id":12417,"mutability":"mutable","name":"startTime","nodeType":"VariableDeclaration","scope":12422,"src":"3246:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12416,"name":"uint64","nodeType":"ElementaryTypeName","src":"3246:6:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12419,"mutability":"mutable","name":"timeCursor","nodeType":"VariableDeclaration","scope":12422,"src":"3272:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12418,"name":"uint64","nodeType":"ElementaryTypeName","src":"3272:6:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12421,"mutability":"mutable","name":"lastEpochCheckpointed","nodeType":"VariableDeclaration","scope":12422,"src":"3299:29:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":12420,"name":"uint128","nodeType":"ElementaryTypeName","src":"3299:7:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"UserState","nodeType":"StructDefinition","scope":13820,"src":"3219:116:82","visibility":"public"},{"constant":false,"id":12426,"mutability":"mutable","name":"_userState","nodeType":"VariableDeclaration","scope":13820,"src":"3340:49:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserState_$12422_storage_$","typeString":"mapping(address => struct FeeDistributor.UserState)"},"typeName":{"id":12425,"keyType":{"id":12423,"name":"address","nodeType":"ElementaryTypeName","src":"3348:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3340:29:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserState_$12422_storage_$","typeString":"mapping(address => struct FeeDistributor.UserState)"},"valueType":{"id":12424,"name":"UserState","nodeType":"UserDefinedTypeName","referencedDeclaration":12422,"src":"3359:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState"}}},"visibility":"internal"},{"constant":false,"id":12432,"mutability":"mutable","name":"_userBalanceAtTimestamp","nodeType":"VariableDeclaration","scope":13820,"src":"3395:79:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":12431,"keyType":{"id":12427,"name":"address","nodeType":"ElementaryTypeName","src":"3403:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3395:47:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueType":{"id":12430,"keyType":{"id":12428,"name":"uint256","nodeType":"ElementaryTypeName","src":"3422:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"3414:27:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":12429,"name":"uint256","nodeType":"ElementaryTypeName","src":"3433:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":12438,"mutability":"mutable","name":"_userTokenTimeCursor","nodeType":"VariableDeclaration","scope":13820,"src":"3480:75:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$2447_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"},"typeName":{"id":12437,"keyType":{"id":12433,"name":"address","nodeType":"ElementaryTypeName","src":"3488:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3480:46:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$2447_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"},"valueType":{"id":12436,"keyType":{"id":12434,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3507:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"3499:26:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"},"valueType":{"id":12435,"name":"uint256","nodeType":"ElementaryTypeName","src":"3517:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"body":{"id":12496,"nodeType":"Block","src":"3651:753:82","statements":[{"expression":{"id":12451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12449,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"3661:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12450,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12440,"src":"3677:12:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"src":"3661:28:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":12452,"nodeType":"ExpressionStatement","src":"3661:28:82"},{"expression":{"id":12457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12453,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12442,"src":"3700:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12455,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12442,"src":"3732:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12454,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"3712:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":12456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3712:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3700:42:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12458,"nodeType":"ExpressionStatement","src":"3700:42:82"},{"assignments":[12460],"declarations":[{"constant":false,"id":12460,"mutability":"mutable","name":"currentWeek","nodeType":"VariableDeclaration","scope":12496,"src":"3752:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12459,"name":"uint256","nodeType":"ElementaryTypeName","src":"3752:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12465,"initialValue":{"arguments":[{"expression":{"id":12462,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3794:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":12463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"3794:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12461,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"3774:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":12464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3774:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3752:58:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12467,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12442,"src":"3828:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":12468,"name":"currentWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12460,"src":"3841:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3828:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f74207374617274206265666f72652063757272656e74207765656b","id":12470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3854:34:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_a2c7a1c6d36effa420c04b43d5e8a3ab728c0d15f1dd9cfdf00157469aac0494","typeString":"literal_string \"Cannot start before current week\""},"value":"Cannot start before current week"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a2c7a1c6d36effa420c04b43d5e8a3ab728c0d15f1dd9cfdf00157469aac0494","typeString":"literal_string \"Cannot start before current week\""}],"id":12466,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3820:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3820:69:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12472,"nodeType":"ExpressionStatement","src":"3820:69:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12473,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12442,"src":"3903:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12474,"name":"currentWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12460,"src":"3916:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3903:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12487,"nodeType":"IfStatement","src":"3899:434:82","trueBody":{"id":12486,"nodeType":"Block","src":"3929:404:82","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12479,"name":"currentWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12460,"src":"4261:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12477,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12440,"src":"4236:12:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":12478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":1507,"src":"4236:24:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":12480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4236:37:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4276:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4236:41:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5a65726f20746f74616c20737570706c7920726573756c747320696e206c6f737420746f6b656e73","id":12483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4279:42:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_ccc2e3e35a756d0d3ed526de1f8044ce6ffcb47cba51a7723baff87899691d36","typeString":"literal_string \"Zero total supply results in lost tokens\""},"value":"Zero total supply results in lost tokens"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ccc2e3e35a756d0d3ed526de1f8044ce6ffcb47cba51a7723baff87899691d36","typeString":"literal_string \"Zero total supply results in lost tokens\""}],"id":12476,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4228:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4228:94:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12485,"nodeType":"ExpressionStatement","src":"4228:94:82"}]}},{"expression":{"id":12490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12488,"name":"_startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12392,"src":"4342:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12489,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12442,"src":"4355:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4342:22:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12491,"nodeType":"ExpressionStatement","src":"4342:22:82"},{"expression":{"id":12494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12492,"name":"_timeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12394,"src":"4374:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12493,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12442,"src":"4388:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4374:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12495,"nodeType":"ExpressionStatement","src":"4374:23:82"}]},"id":12497,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4665654469737472696275746f72","id":12445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3628:16:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_0618c188edbe06a8ffa15e11b4f74493cfd6f23aba7fab610364d908072aac99","typeString":"literal_string \"FeeDistributor\""},"value":"FeeDistributor"},{"hexValue":"31","id":12446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3646:3:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":12447,"modifierName":{"id":12444,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"3621:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP712_$6021_$","typeString":"type(contract EIP712)"}},"nodeType":"ModifierInvocation","src":"3621:29:82"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":12443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12440,"mutability":"mutable","name":"votingEscrow","nodeType":"VariableDeclaration","scope":12497,"src":"3574:26:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":12439,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"3574:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"},{"constant":false,"id":12442,"mutability":"mutable","name":"startTime","nodeType":"VariableDeclaration","scope":12497,"src":"3602:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12441,"name":"uint256","nodeType":"ElementaryTypeName","src":"3602:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3573:47:82"},"returnParameters":{"id":12448,"nodeType":"ParameterList","parameters":[],"src":"3651:0:82"},"scope":13820,"src":"3562:842:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[492],"body":{"id":12506,"nodeType":"Block","src":"4563:37:82","statements":[{"expression":{"id":12504,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"4580:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"functionReturnParameters":12503,"id":12505,"nodeType":"Return","src":"4573:20:82"}]},"documentation":{"id":12498,"nodeType":"StructuredDocumentation","src":"4410:74:82","text":" @notice Returns the VotingEscrow (veBAL) token contract"},"functionSelector":"08b0308a","id":12507,"implemented":true,"kind":"function","modifiers":[],"name":"getVotingEscrow","nodeType":"FunctionDefinition","overrides":{"id":12500,"nodeType":"OverrideSpecifier","overrides":[],"src":"4530:8:82"},"parameters":{"id":12499,"nodeType":"ParameterList","parameters":[],"src":"4513:2:82"},"returnParameters":{"id":12503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12502,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12507,"src":"4548:13:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":12501,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"4548:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"src":"4547:15:82"},"scope":13820,"src":"4489:111:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[498],"body":{"id":12516,"nodeType":"Block","src":"4786:35:82","statements":[{"expression":{"id":12514,"name":"_timeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12394,"src":"4803:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12513,"id":12515,"nodeType":"Return","src":"4796:18:82"}]},"documentation":{"id":12508,"nodeType":"StructuredDocumentation","src":"4606:109:82","text":" @notice Returns the global time cursor representing the most earliest uncheckpointed week."},"functionSelector":"82aa5ad4","id":12517,"implemented":true,"kind":"function","modifiers":[],"name":"getTimeCursor","nodeType":"FunctionDefinition","overrides":{"id":12510,"nodeType":"OverrideSpecifier","overrides":[],"src":"4759:8:82"},"parameters":{"id":12509,"nodeType":"ParameterList","parameters":[],"src":"4742:2:82"},"returnParameters":{"id":12513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12512,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12517,"src":"4777:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12511,"name":"uint256","nodeType":"ElementaryTypeName","src":"4777:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4776:9:82"},"scope":13820,"src":"4720:101:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[506],"body":{"id":12531,"nodeType":"Block","src":"5082:51:82","statements":[{"expression":{"expression":{"baseExpression":{"id":12526,"name":"_userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12426,"src":"5099:10:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserState_$12422_storage_$","typeString":"mapping(address => struct FeeDistributor.UserState storage ref)"}},"id":12528,"indexExpression":{"id":12527,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12520,"src":"5110:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5099:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage","typeString":"struct FeeDistributor.UserState storage ref"}},"id":12529,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12419,"src":"5099:27:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":12525,"id":12530,"nodeType":"Return","src":"5092:34:82"}]},"documentation":{"id":12518,"nodeType":"StructuredDocumentation","src":"4827:168:82","text":" @notice Returns the user-level time cursor representing the most earliest uncheckpointed week.\n @param user - The address of the user to query."},"functionSelector":"876e69a1","id":12532,"implemented":true,"kind":"function","modifiers":[],"name":"getUserTimeCursor","nodeType":"FunctionDefinition","overrides":{"id":12522,"nodeType":"OverrideSpecifier","overrides":[],"src":"5055:8:82"},"parameters":{"id":12521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12520,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":12532,"src":"5027:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12519,"name":"address","nodeType":"ElementaryTypeName","src":"5027:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5026:14:82"},"returnParameters":{"id":12525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12524,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12532,"src":"5073:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12523,"name":"uint256","nodeType":"ElementaryTypeName","src":"5073:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5072:9:82"},"scope":13820,"src":"5000:133:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[514],"body":{"id":12546,"nodeType":"Block","src":"5412:53:82","statements":[{"expression":{"expression":{"baseExpression":{"id":12541,"name":"_tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12409,"src":"5429:11:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_TokenState_$12405_storage_$","typeString":"mapping(contract IERC20 => struct FeeDistributor.TokenState storage ref)"}},"id":12543,"indexExpression":{"id":12542,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12535,"src":"5441:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5429:18:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage","typeString":"struct FeeDistributor.TokenState storage ref"}},"id":12544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12402,"src":"5429:29:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":12540,"id":12545,"nodeType":"Return","src":"5422:36:82"}]},"documentation":{"id":12533,"nodeType":"StructuredDocumentation","src":"5139:185:82","text":" @notice Returns the token-level time cursor storing the timestamp at up to which tokens have been distributed.\n @param token - The ERC20 token address to query."},"functionSelector":"acbc1428","id":12547,"implemented":true,"kind":"function","modifiers":[],"name":"getTokenTimeCursor","nodeType":"FunctionDefinition","overrides":{"id":12537,"nodeType":"OverrideSpecifier","overrides":[],"src":"5385:8:82"},"parameters":{"id":12536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12535,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12547,"src":"5357:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12534,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"5357:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5356:14:82"},"returnParameters":{"id":12540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12539,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12547,"src":"5403:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12538,"name":"uint256","nodeType":"ElementaryTypeName","src":"5403:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5402:9:82"},"scope":13820,"src":"5329:136:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[524],"body":{"id":12563,"nodeType":"Block","src":"5813:60:82","statements":[{"expression":{"arguments":[{"id":12559,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12550,"src":"5854:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12560,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12552,"src":"5860:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":12558,"name":"_getUserTokenTimeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13706,"src":"5830:23:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_IERC20_$2447_$returns$_t_uint256_$","typeString":"function (address,contract IERC20) view returns (uint256)"}},"id":12561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5830:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12557,"id":12562,"nodeType":"Return","src":"5823:43:82"}]},"documentation":{"id":12548,"nodeType":"StructuredDocumentation","src":"5471:236:82","text":" @notice Returns the user-level time cursor storing the timestamp of the latest token distribution claimed.\n @param user - The address of the user to query.\n @param token - The ERC20 token address to query."},"functionSelector":"8050a7ee","id":12564,"implemented":true,"kind":"function","modifiers":[],"name":"getUserTokenTimeCursor","nodeType":"FunctionDefinition","overrides":{"id":12554,"nodeType":"OverrideSpecifier","overrides":[],"src":"5786:8:82"},"parameters":{"id":12553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12550,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":12564,"src":"5744:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12549,"name":"address","nodeType":"ElementaryTypeName","src":"5744:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12552,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12564,"src":"5758:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12551,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"5758:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5743:28:82"},"returnParameters":{"id":12557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12556,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12564,"src":"5804:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12555,"name":"uint256","nodeType":"ElementaryTypeName","src":"5804:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5803:9:82"},"scope":13820,"src":"5712:161:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[534],"body":{"id":12581,"nodeType":"Block","src":"6472:64:82","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":12575,"name":"_userBalanceAtTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12432,"src":"6489:23:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":12577,"indexExpression":{"id":12576,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12567,"src":"6513:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6489:29:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":12579,"indexExpression":{"id":12578,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12569,"src":"6519:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6489:40:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12574,"id":12580,"nodeType":"Return","src":"6482:47:82"}]},"documentation":{"id":12565,"nodeType":"StructuredDocumentation","src":"5879:479:82","text":" @notice Returns the user's cached balance of veBAL as of the provided timestamp.\n @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n This function requires `user` to have been checkpointed past `timestamp` so that their balance is cached.\n @param user - The address of the user of which to read the cached balance of.\n @param timestamp - The timestamp at which to read the `user`'s cached balance at."},"functionSelector":"de681faf","id":12582,"implemented":true,"kind":"function","modifiers":[],"name":"getUserBalanceAtTimestamp","nodeType":"FunctionDefinition","overrides":{"id":12571,"nodeType":"OverrideSpecifier","overrides":[],"src":"6445:8:82"},"parameters":{"id":12570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12567,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":12582,"src":"6398:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12566,"name":"address","nodeType":"ElementaryTypeName","src":"6398:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12569,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":12582,"src":"6412:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12568,"name":"uint256","nodeType":"ElementaryTypeName","src":"6412:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6397:33:82"},"returnParameters":{"id":12574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12573,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12582,"src":"6463:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12572,"name":"uint256","nodeType":"ElementaryTypeName","src":"6463:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6462:9:82"},"scope":13820,"src":"6363:173:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[542],"body":{"id":12595,"nodeType":"Block","src":"7033:49:82","statements":[{"expression":{"baseExpression":{"id":12591,"name":"_veSupplyCache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12398,"src":"7050:14:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":12593,"indexExpression":{"id":12592,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12585,"src":"7065:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7050:25:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12590,"id":12594,"nodeType":"Return","src":"7043:32:82"}]},"documentation":{"id":12583,"nodeType":"StructuredDocumentation","src":"6542:391:82","text":" @notice Returns the cached total supply of veBAL as of the provided timestamp.\n @dev Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values.\n This function requires the contract to have been checkpointed past `timestamp` so that the supply is cached.\n @param timestamp - The timestamp at which to read the cached total supply at."},"functionSelector":"4f3c5090","id":12596,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalSupplyAtTimestamp","nodeType":"FunctionDefinition","overrides":{"id":12587,"nodeType":"OverrideSpecifier","overrides":[],"src":"7006:8:82"},"parameters":{"id":12586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12585,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":12596,"src":"6973:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12584,"name":"uint256","nodeType":"ElementaryTypeName","src":"6973:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6972:19:82"},"returnParameters":{"id":12590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12589,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12596,"src":"7024:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12588,"name":"uint256","nodeType":"ElementaryTypeName","src":"7024:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7023:9:82"},"scope":13820,"src":"6938:144:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[550],"body":{"id":12610,"nodeType":"Block","src":"7259:56:82","statements":[{"expression":{"expression":{"baseExpression":{"id":12605,"name":"_tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12409,"src":"7276:11:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_TokenState_$12405_storage_$","typeString":"mapping(contract IERC20 => struct FeeDistributor.TokenState storage ref)"}},"id":12607,"indexExpression":{"id":12606,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12599,"src":"7288:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7276:18:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage","typeString":"struct FeeDistributor.TokenState storage ref"}},"id":12608,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"cachedBalance","nodeType":"MemberAccess","referencedDeclaration":12404,"src":"7276:32:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":12604,"id":12609,"nodeType":"Return","src":"7269:39:82"}]},"documentation":{"id":12597,"nodeType":"StructuredDocumentation","src":"7088:82:82","text":" @notice Returns the FeeDistributor's cached balance of `token`."},"functionSelector":"2308805b","id":12611,"implemented":true,"kind":"function","modifiers":[],"name":"getTokenLastBalance","nodeType":"FunctionDefinition","overrides":{"id":12601,"nodeType":"OverrideSpecifier","overrides":[],"src":"7232:8:82"},"parameters":{"id":12600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12599,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12611,"src":"7204:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12598,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"7204:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"7203:14:82"},"returnParameters":{"id":12604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12603,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12611,"src":"7250:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12602,"name":"uint256","nodeType":"ElementaryTypeName","src":"7250:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7249:9:82"},"scope":13820,"src":"7175:140:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[560],"body":{"id":12628,"nodeType":"Block","src":"7716:56:82","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":12622,"name":"_tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12415,"src":"7733:14:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(contract IERC20 => mapping(uint256 => uint256))"}},"id":12624,"indexExpression":{"id":12623,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12614,"src":"7748:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7733:21:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":12626,"indexExpression":{"id":12625,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12616,"src":"7755:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7733:32:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12621,"id":12627,"nodeType":"Return","src":"7726:39:82"}]},"documentation":{"id":12612,"nodeType":"StructuredDocumentation","src":"7321:280:82","text":" @notice Returns the amount of `token` which the FeeDistributor received in the week beginning at `timestamp`.\n @param token - The ERC20 token address to query.\n @param timestamp - The timestamp corresponding to the beginning of the week of interest."},"functionSelector":"d3dc4ca1","id":12629,"implemented":true,"kind":"function","modifiers":[],"name":"getTokensDistributedInWeek","nodeType":"FunctionDefinition","overrides":{"id":12618,"nodeType":"OverrideSpecifier","overrides":[],"src":"7689:8:82"},"parameters":{"id":12617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12614,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12629,"src":"7642:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12613,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"7642:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":12616,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":12629,"src":"7656:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12615,"name":"uint256","nodeType":"ElementaryTypeName","src":"7656:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7641:33:82"},"returnParameters":{"id":12621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12620,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12629,"src":"7707:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12619,"name":"uint256","nodeType":"ElementaryTypeName","src":"7707:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7706:9:82"},"scope":13820,"src":"7606:166:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[568],"body":{"id":12662,"nodeType":"Block","src":"8506:153:82","statements":[{"expression":{"arguments":[{"id":12641,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12632,"src":"8533:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"66616c7365","id":12642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8540:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12640,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"8516:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8516:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12644,"nodeType":"ExpressionStatement","src":"8516:30:82"},{"expression":{"arguments":[{"expression":{"id":12648,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8579:3:82","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8579:10:82","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":12652,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8599:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_FeeDistributor_$13820","typeString":"contract FeeDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_FeeDistributor_$13820","typeString":"contract FeeDistributor"}],"id":12651,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8591:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12650,"name":"address","nodeType":"ElementaryTypeName","src":"8591:7:82","typeDescriptions":{}}},"id":12653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8591:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12654,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12634,"src":"8606:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12645,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12632,"src":"8556:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":12647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":7304,"src":"8556:22:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":12655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8556:57:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12656,"nodeType":"ExpressionStatement","src":"8556:57:82"},{"expression":{"arguments":[{"id":12658,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12632,"src":"8640:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"74727565","id":12659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8647:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12657,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"8623:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8623:29:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12661,"nodeType":"ExpressionStatement","src":"8623:29:82"}]},"documentation":{"id":12630,"nodeType":"StructuredDocumentation","src":"7797:621:82","text":" @notice Deposits tokens to be distributed in the current week.\n @dev Sending tokens directly to the FeeDistributor instead of using `depositToken` may result in tokens being\n retroactively distributed to past weeks, or for the distribution to carry over to future weeks.\n If for some reason `depositToken` cannot be called, in order to ensure that all tokens are correctly distributed\n manually call `checkpointToken` before and after the token transfer.\n @param token - The ERC20 token address to distribute.\n @param amount - The amount of tokens to deposit."},"functionSelector":"338b5dea","id":12663,"implemented":true,"kind":"function","modifiers":[{"id":12638,"modifierName":{"id":12637,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"8493:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"8493:12:82"}],"name":"depositToken","nodeType":"FunctionDefinition","overrides":{"id":12636,"nodeType":"OverrideSpecifier","overrides":[],"src":"8484:8:82"},"parameters":{"id":12635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12632,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12663,"src":"8445:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12631,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"8445:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":12634,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12663,"src":"8459:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12633,"name":"uint256","nodeType":"ElementaryTypeName","src":"8459:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8444:30:82"},"returnParameters":{"id":12639,"nodeType":"ParameterList","parameters":[],"src":"8506:0:82"},"scope":13820,"src":"8423:236:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[578],"body":{"id":12731,"nodeType":"Block","src":"9130:355:82","statements":[{"expression":{"arguments":[{"expression":{"id":12679,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"9176:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9176:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":12681,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12670,"src":"9191:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":12682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9191:14:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12676,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3420,"src":"9140:12:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$3420_$","typeString":"type(library InputHelpers)"}},"id":12678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ensureInputLengthMatch","nodeType":"MemberAccess","referencedDeclaration":3328,"src":"9140:35:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":12683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9140:66:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12684,"nodeType":"ExpressionStatement","src":"9140:66:82"},{"assignments":[12686],"declarations":[{"constant":false,"id":12686,"mutability":"mutable","name":"length","nodeType":"VariableDeclaration","scope":12731,"src":"9217:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12685,"name":"uint256","nodeType":"ElementaryTypeName","src":"9217:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12689,"initialValue":{"expression":{"id":12687,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"9234:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9234:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9217:30:82"},{"body":{"id":12729,"nodeType":"Block","src":"9294:185:82","statements":[{"expression":{"arguments":[{"baseExpression":{"id":12701,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"9325:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12703,"indexExpression":{"id":12702,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12691,"src":"9332:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9325:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"66616c7365","id":12704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9336:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12700,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"9308:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9308:34:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12706,"nodeType":"ExpressionStatement","src":"9308:34:82"},{"expression":{"arguments":[{"expression":{"id":12711,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9383:3:82","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9383:10:82","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":12715,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9403:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_FeeDistributor_$13820","typeString":"contract FeeDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_FeeDistributor_$13820","typeString":"contract FeeDistributor"}],"id":12714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9395:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12713,"name":"address","nodeType":"ElementaryTypeName","src":"9395:7:82","typeDescriptions":{}}},"id":12716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9395:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":12717,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12670,"src":"9410:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":12719,"indexExpression":{"id":12718,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12691,"src":"9418:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9410:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":12707,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"9356:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12709,"indexExpression":{"id":12708,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12691,"src":"9363:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9356:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":12710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":7304,"src":"9356:26:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":12720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9356:65:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12721,"nodeType":"ExpressionStatement","src":"9356:65:82"},{"expression":{"arguments":[{"baseExpression":{"id":12723,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"9452:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12725,"indexExpression":{"id":12724,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12691,"src":"9459:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9452:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"74727565","id":12726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9463:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12722,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"9435:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9435:33:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12728,"nodeType":"ExpressionStatement","src":"9435:33:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12694,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12691,"src":"9277:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12695,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12686,"src":"9281:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9277:10:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12730,"initializationExpression":{"assignments":[12691],"declarations":[{"constant":false,"id":12691,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12730,"src":"9262:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12690,"name":"uint256","nodeType":"ElementaryTypeName","src":"9262:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12693,"initialValue":{"hexValue":"30","id":12692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9274:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9262:13:82"},"loopExpression":{"expression":{"id":12698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"9289:3:82","subExpression":{"id":12697,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12691,"src":"9291:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12699,"nodeType":"ExpressionStatement","src":"9289:3:82"},"nodeType":"ForStatement","src":"9257:222:82"}]},"documentation":{"id":12664,"nodeType":"StructuredDocumentation","src":"8665:352:82","text":" @notice Deposits tokens to be distributed in the current week.\n @dev A version of `depositToken` which supports depositing multiple `tokens` at once.\n See `depositToken` for more details.\n @param tokens - An array of ERC20 token addresses to distribute.\n @param amounts - An array of token amounts to deposit."},"functionSelector":"7b8d6221","id":12732,"implemented":true,"kind":"function","modifiers":[{"id":12674,"modifierName":{"id":12673,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"9117:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"9117:12:82"}],"name":"depositTokens","nodeType":"FunctionDefinition","overrides":{"id":12672,"nodeType":"OverrideSpecifier","overrides":[],"src":"9108:8:82"},"parameters":{"id":12671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12667,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":12732,"src":"9045:24:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12665,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"9045:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":12666,"nodeType":"ArrayTypeName","src":"9045:8:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":12670,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":12732,"src":"9071:26:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12668,"name":"uint256","nodeType":"ElementaryTypeName","src":"9071:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12669,"nodeType":"ArrayTypeName","src":"9071:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9044:54:82"},"returnParameters":{"id":12675,"nodeType":"ParameterList","parameters":[],"src":"9130:0:82"},"scope":13820,"src":"9022:463:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[582],"body":{"id":12742,"nodeType":"Block","src":"9778:41:82","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12739,"name":"_checkpointTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13669,"src":"9788:22:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9788:24:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12741,"nodeType":"ExpressionStatement","src":"9788:24:82"}]},"documentation":{"id":12733,"nodeType":"StructuredDocumentation","src":"9513:207:82","text":" @notice Caches the total supply of veBAL at the beginning of each week.\n This function will be called automatically before claiming tokens to ensure the contract is properly updated."},"functionSelector":"c2c4c5c1","id":12743,"implemented":true,"kind":"function","modifiers":[{"id":12737,"modifierName":{"id":12736,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"9765:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"9765:12:82"}],"name":"checkpoint","nodeType":"FunctionDefinition","overrides":{"id":12735,"nodeType":"OverrideSpecifier","overrides":[],"src":"9756:8:82"},"parameters":{"id":12734,"nodeType":"ParameterList","parameters":[],"src":"9744:2:82"},"returnParameters":{"id":12738,"nodeType":"ParameterList","parameters":[],"src":"9778:0:82"},"scope":13820,"src":"9725:94:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[588],"body":{"id":12756,"nodeType":"Block","src":"10173:45:82","statements":[{"expression":{"arguments":[{"id":12753,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"10206:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12752,"name":"_checkpointUserBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"10183:22:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10183:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12755,"nodeType":"ExpressionStatement","src":"10183:28:82"}]},"documentation":{"id":12744,"nodeType":"StructuredDocumentation","src":"9825:274:82","text":" @notice Caches the user's balance of veBAL at the beginning of each week.\n This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n @param user - The address of the user to be checkpointed."},"functionSelector":"14866e08","id":12757,"implemented":true,"kind":"function","modifiers":[{"id":12750,"modifierName":{"id":12749,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"10160:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"10160:12:82"}],"name":"checkpointUser","nodeType":"FunctionDefinition","overrides":{"id":12748,"nodeType":"OverrideSpecifier","overrides":[],"src":"10151:8:82"},"parameters":{"id":12747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12746,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":12757,"src":"10128:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12745,"name":"address","nodeType":"ElementaryTypeName","src":"10128:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10127:14:82"},"returnParameters":{"id":12751,"nodeType":"ParameterList","parameters":[],"src":"10173:0:82"},"scope":13820,"src":"10104:114:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[594],"body":{"id":12771,"nodeType":"Block","src":"10808:46:82","statements":[{"expression":{"arguments":[{"id":12767,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12760,"src":"10835:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"74727565","id":12768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10842:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12766,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"10818:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10818:29:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12770,"nodeType":"ExpressionStatement","src":"10818:29:82"}]},"documentation":{"id":12758,"nodeType":"StructuredDocumentation","src":"10224:509:82","text":" @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n @dev Any `token` balance held by the FeeDistributor above that which is returned by `getTokenLastBalance`\n will be distributed evenly across the time period since `token` was last checkpointed.\n This function will be called automatically before claiming tokens to ensure the contract is properly updated.\n @param token - The ERC20 token address to be checkpointed."},"functionSelector":"3902b9bc","id":12772,"implemented":true,"kind":"function","modifiers":[{"id":12764,"modifierName":{"id":12763,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"10795:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"10795:12:82"}],"name":"checkpointToken","nodeType":"FunctionDefinition","overrides":{"id":12762,"nodeType":"OverrideSpecifier","overrides":[],"src":"10786:8:82"},"parameters":{"id":12761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12760,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12772,"src":"10763:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12759,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"10763:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"10762:14:82"},"returnParameters":{"id":12765,"nodeType":"ParameterList","parameters":[],"src":"10808:0:82"},"scope":13820,"src":"10738:116:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[601],"body":{"id":12806,"nodeType":"Block","src":"11273:163:82","statements":[{"assignments":[12783],"declarations":[{"constant":false,"id":12783,"mutability":"mutable","name":"tokensLength","nodeType":"VariableDeclaration","scope":12806,"src":"11283:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12782,"name":"uint256","nodeType":"ElementaryTypeName","src":"11283:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12786,"initialValue":{"expression":{"id":12784,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12776,"src":"11306:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"11306:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11283:36:82"},{"body":{"id":12804,"nodeType":"Block","src":"11372:58:82","statements":[{"expression":{"arguments":[{"baseExpression":{"id":12798,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12776,"src":"11403:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12800,"indexExpression":{"id":12799,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12788,"src":"11410:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11403:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"74727565","id":12801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11414:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12797,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"11386:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11386:33:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12803,"nodeType":"ExpressionStatement","src":"11386:33:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12791,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12788,"src":"11349:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12792,"name":"tokensLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12783,"src":"11353:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11349:16:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12805,"initializationExpression":{"assignments":[12788],"declarations":[{"constant":false,"id":12788,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12805,"src":"11334:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12787,"name":"uint256","nodeType":"ElementaryTypeName","src":"11334:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12790,"initialValue":{"hexValue":"30","id":12789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11334:13:82"},"loopExpression":{"expression":{"id":12795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11367:3:82","subExpression":{"id":12794,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12788,"src":"11369:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12796,"nodeType":"ExpressionStatement","src":"11367:3:82"},"nodeType":"ForStatement","src":"11329:101:82"}]},"documentation":{"id":12773,"nodeType":"StructuredDocumentation","src":"10860:325:82","text":" @notice Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\n @dev A version of `checkpointToken` which supports checkpointing multiple tokens.\n See `checkpointToken` for more details.\n @param tokens - An array of ERC20 token addresses to be checkpointed."},"functionSelector":"905d10ac","id":12807,"implemented":true,"kind":"function","modifiers":[{"id":12780,"modifierName":{"id":12779,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"11260:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"11260:12:82"}],"name":"checkpointTokens","nodeType":"FunctionDefinition","overrides":{"id":12778,"nodeType":"OverrideSpecifier","overrides":[],"src":"11251:8:82"},"parameters":{"id":12777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12776,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":12807,"src":"11216:24:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12774,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"11216:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":12775,"nodeType":"ArrayTypeName","src":"11216:8:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"11215:26:82"},"returnParameters":{"id":12781,"nodeType":"ParameterList","parameters":[],"src":"11273:0:82"},"scope":13820,"src":"11190:246:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[611],"body":{"id":12844,"nodeType":"Block","src":"12116:194:82","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12823,"name":"_checkpointTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13669,"src":"12126:22:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12126:24:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12825,"nodeType":"ExpressionStatement","src":"12126:24:82"},{"expression":{"arguments":[{"id":12827,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12810,"src":"12183:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12826,"name":"_checkpointUserBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"12160:22:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12160:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12829,"nodeType":"ExpressionStatement","src":"12160:28:82"},{"expression":{"arguments":[{"id":12831,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12812,"src":"12215:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"66616c7365","id":12832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12222:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12830,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"12198:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12198:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12834,"nodeType":"ExpressionStatement","src":"12198:30:82"},{"assignments":[12836],"declarations":[{"constant":false,"id":12836,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12844,"src":"12239:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12835,"name":"uint256","nodeType":"ElementaryTypeName","src":"12239:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12841,"initialValue":{"arguments":[{"id":12838,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12810,"src":"12268:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12839,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12812,"src":"12274:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":12837,"name":"_claimToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13059,"src":"12256:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2447_$returns$_t_uint256_$","typeString":"function (address,contract IERC20) returns (uint256)"}},"id":12840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12256:24:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12239:41:82"},{"expression":{"id":12842,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12836,"src":"12297:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12822,"id":12843,"nodeType":"Return","src":"12290:13:82"}]},"documentation":{"id":12808,"nodeType":"StructuredDocumentation","src":"11459:486:82","text":" @notice Claims all pending distributions of the provided token for a user.\n @dev It's not necessary to explicitly checkpoint before calling this function, it will ensure the FeeDistributor\n is up to date before calculating the amount of tokens to be claimed.\n @param user - The user on behalf of which to claim.\n @param token - The ERC20 token address to be claimed.\n @return The amount of `token` sent to `user` as a result of claiming."},"functionSelector":"ca31879d","id":12845,"implemented":true,"kind":"function","modifiers":[{"id":12816,"modifierName":{"id":12815,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"12040:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"12040:12:82"},{"arguments":[{"id":12818,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12810,"src":"12080:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":12819,"modifierName":{"id":12817,"name":"optionalOnlyCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3449,"src":"12061:18:82","typeDescriptions":{"typeIdentifier":"t_modifier$_t_address_$","typeString":"modifier (address)"}},"nodeType":"ModifierInvocation","src":"12061:24:82"}],"name":"claimToken","nodeType":"FunctionDefinition","overrides":{"id":12814,"nodeType":"OverrideSpecifier","overrides":[],"src":"12023:8:82"},"parameters":{"id":12813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12810,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":12845,"src":"11970:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12809,"name":"address","nodeType":"ElementaryTypeName","src":"11970:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12812,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12845,"src":"11984:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12811,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"11984:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"11969:28:82"},"returnParameters":{"id":12822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12821,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12845,"src":"12103:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12820,"name":"uint256","nodeType":"ElementaryTypeName","src":"12103:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12102:9:82"},"scope":13820,"src":"11950:360:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[623],"body":{"id":12918,"nodeType":"Block","src":"12961:381:82","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12863,"name":"_checkpointTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13669,"src":"12971:22:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12971:24:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12865,"nodeType":"ExpressionStatement","src":"12971:24:82"},{"expression":{"arguments":[{"id":12867,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12848,"src":"13028:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12866,"name":"_checkpointUserBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13603,"src":"13005:22:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13005:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12869,"nodeType":"ExpressionStatement","src":"13005:28:82"},{"assignments":[12871],"declarations":[{"constant":false,"id":12871,"mutability":"mutable","name":"tokensLength","nodeType":"VariableDeclaration","scope":12918,"src":"13044:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12870,"name":"uint256","nodeType":"ElementaryTypeName","src":"13044:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12874,"initialValue":{"expression":{"id":12872,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12851,"src":"13067:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13067:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13044:36:82"},{"assignments":[12879],"declarations":[{"constant":false,"id":12879,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":12918,"src":"13090:24:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12877,"name":"uint256","nodeType":"ElementaryTypeName","src":"13090:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12878,"nodeType":"ArrayTypeName","src":"13090:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":12885,"initialValue":{"arguments":[{"id":12883,"name":"tokensLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"13131:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"13117:13:82","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":12880,"name":"uint256","nodeType":"ElementaryTypeName","src":"13121:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12881,"nodeType":"ArrayTypeName","src":"13121:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":12884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13117:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"13090:54:82"},{"body":{"id":12914,"nodeType":"Block","src":"13197:114:82","statements":[{"expression":{"arguments":[{"baseExpression":{"id":12897,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12851,"src":"13228:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12899,"indexExpression":{"id":12898,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12887,"src":"13235:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13228:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"66616c7365","id":12900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13239:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12896,"name":"_checkpointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13327,"src":"13211:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_bool_$returns$__$","typeString":"function (contract IERC20,bool)"}},"id":12901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13211:34:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12902,"nodeType":"ExpressionStatement","src":"13211:34:82"},{"expression":{"id":12912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12903,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12879,"src":"13259:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12905,"indexExpression":{"id":12904,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12887,"src":"13267:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13259:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12907,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12848,"src":"13284:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":12908,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12851,"src":"13290:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":12910,"indexExpression":{"id":12909,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12887,"src":"13297:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13290:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":12906,"name":"_claimToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13059,"src":"13272:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2447_$returns$_t_uint256_$","typeString":"function (address,contract IERC20) returns (uint256)"}},"id":12911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13272:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13259:41:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12913,"nodeType":"ExpressionStatement","src":"13259:41:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12890,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12887,"src":"13174:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12891,"name":"tokensLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"13178:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13174:16:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12915,"initializationExpression":{"assignments":[12887],"declarations":[{"constant":false,"id":12887,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12915,"src":"13159:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12886,"name":"uint256","nodeType":"ElementaryTypeName","src":"13159:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12889,"initialValue":{"hexValue":"30","id":12888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13171:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13159:13:82"},"loopExpression":{"expression":{"id":12894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"13192:3:82","subExpression":{"id":12893,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12887,"src":"13194:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12895,"nodeType":"ExpressionStatement","src":"13192:3:82"},"nodeType":"ForStatement","src":"13154:157:82"},{"expression":{"id":12916,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12879,"src":"13328:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":12862,"id":12917,"nodeType":"Return","src":"13321:14:82"}]},"documentation":{"id":12846,"nodeType":"StructuredDocumentation","src":"12316:452:82","text":" @notice Claims a number of tokens on behalf of a user.\n @dev A version of `claimToken` which supports claiming multiple `tokens` on behalf of `user`.\n See `claimToken` for more details.\n @param user - The user on behalf of which to claim.\n @param tokens - An array of ERC20 token addresses to be claimed.\n @return An array of the amounts of each token in `tokens` sent to `user` as a result of claiming."},"functionSelector":"88720467","id":12919,"implemented":true,"kind":"function","modifiers":[{"id":12855,"modifierName":{"id":12854,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"12876:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"12876:12:82"},{"arguments":[{"id":12857,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12848,"src":"12916:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":12858,"modifierName":{"id":12856,"name":"optionalOnlyCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3449,"src":"12897:18:82","typeDescriptions":{"typeIdentifier":"t_modifier$_t_address_$","typeString":"modifier (address)"}},"nodeType":"ModifierInvocation","src":"12897:24:82"}],"name":"claimTokens","nodeType":"FunctionDefinition","overrides":{"id":12853,"nodeType":"OverrideSpecifier","overrides":[],"src":"12859:8:82"},"parameters":{"id":12852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12848,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":12919,"src":"12794:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12847,"name":"address","nodeType":"ElementaryTypeName","src":"12794:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12851,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":12919,"src":"12808:24:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12849,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"12808:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":12850,"nodeType":"ArrayTypeName","src":"12808:8:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"12793:40:82"},"returnParameters":{"id":12862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12861,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12919,"src":"12939:16:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12859,"name":"uint256","nodeType":"ElementaryTypeName","src":"12939:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12860,"nodeType":"ArrayTypeName","src":"12939:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"12938:18:82"},"scope":13820,"src":"12773:569:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":13058,"nodeType":"Block","src":"13606:2207:82","statements":[{"assignments":[12930],"declarations":[{"constant":false,"id":12930,"mutability":"mutable","name":"tokenState","nodeType":"VariableDeclaration","scope":13058,"src":"13616:29:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState"},"typeName":{"id":12929,"name":"TokenState","nodeType":"UserDefinedTypeName","referencedDeclaration":12405,"src":"13616:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState"}},"visibility":"internal"}],"id":12934,"initialValue":{"baseExpression":{"id":12931,"name":"_tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12409,"src":"13648:11:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_TokenState_$12405_storage_$","typeString":"mapping(contract IERC20 => struct FeeDistributor.TokenState storage ref)"}},"id":12933,"indexExpression":{"id":12932,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"13660:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13648:18:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage","typeString":"struct FeeDistributor.TokenState storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13616:50:82"},{"assignments":[12936],"declarations":[{"constant":false,"id":12936,"mutability":"mutable","name":"nextUserTokenWeekToClaim","nodeType":"VariableDeclaration","scope":13058,"src":"13676:32:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12935,"name":"uint256","nodeType":"ElementaryTypeName","src":"13676:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12941,"initialValue":{"arguments":[{"id":12938,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"13735:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12939,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"13741:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":12937,"name":"_getUserTokenTimeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13706,"src":"13711:23:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_IERC20_$2447_$returns$_t_uint256_$","typeString":"function (address,contract IERC20) view returns (uint256)"}},"id":12940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13711:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13676:71:82"},{"assignments":[12943],"declarations":[{"constant":false,"id":12943,"mutability":"mutable","name":"firstUnclaimableWeek","nodeType":"VariableDeclaration","scope":13058,"src":"14410:28:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12942,"name":"uint256","nodeType":"ElementaryTypeName","src":"14410:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12961,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":12949,"name":"_timeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12394,"src":"14490:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"id":12950,"name":"_userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12426,"src":"14503:10:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserState_$12422_storage_$","typeString":"mapping(address => struct FeeDistributor.UserState storage ref)"}},"id":12952,"indexExpression":{"id":12951,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"14514:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14503:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage","typeString":"struct FeeDistributor.UserState storage ref"}},"id":12953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12419,"src":"14503:27:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":12947,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"14481:4:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5683_$","typeString":"type(library Math)"}},"id":12948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"min","nodeType":"MemberAccess","referencedDeclaration":5586,"src":"14481:8:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":12954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14481:50:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12946,"name":"_roundUpTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13819,"src":"14463:17:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":12955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14463:69:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":12957,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12930,"src":"14566:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":12958,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12402,"src":"14566:21:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":12956,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"14546:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":12959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14546:42:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12944,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"14441:4:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5683_$","typeString":"type(library Math)"}},"id":12945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"min","nodeType":"MemberAccess","referencedDeclaration":5586,"src":"14441:8:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":12960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14441:157:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14410:188:82"},{"assignments":[12965],"declarations":[{"constant":false,"id":12965,"mutability":"mutable","name":"tokensPerWeek","nodeType":"VariableDeclaration","scope":13058,"src":"14609:49:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":12964,"keyType":{"id":12962,"name":"uint256","nodeType":"ElementaryTypeName","src":"14617:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"14609:27:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":12963,"name":"uint256","nodeType":"ElementaryTypeName","src":"14628:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"id":12969,"initialValue":{"baseExpression":{"id":12966,"name":"_tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12415,"src":"14661:14:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(contract IERC20 => mapping(uint256 => uint256))"}},"id":12968,"indexExpression":{"id":12967,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"14676:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14661:21:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"nodeType":"VariableDeclarationStatement","src":"14609:73:82"},{"assignments":[12973],"declarations":[{"constant":false,"id":12973,"mutability":"mutable","name":"userBalanceAtTimestamp","nodeType":"VariableDeclaration","scope":13058,"src":"14692:58:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":12972,"keyType":{"id":12970,"name":"uint256","nodeType":"ElementaryTypeName","src":"14700:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"14692:27:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":12971,"name":"uint256","nodeType":"ElementaryTypeName","src":"14711:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"id":12977,"initialValue":{"baseExpression":{"id":12974,"name":"_userBalanceAtTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12432,"src":"14753:23:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":12976,"indexExpression":{"id":12975,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"14777:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14753:29:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"nodeType":"VariableDeclarationStatement","src":"14692:90:82"},{"assignments":[12979],"declarations":[{"constant":false,"id":12979,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":13058,"src":"14793:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12978,"name":"uint256","nodeType":"ElementaryTypeName","src":"14793:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12980,"nodeType":"VariableDeclarationStatement","src":"14793:14:82"},{"body":{"id":13015,"nodeType":"Block","src":"14850:413:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12991,"name":"nextUserTokenWeekToClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"14956:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":12992,"name":"firstUnclaimableWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12943,"src":"14984:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14956:48:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12995,"nodeType":"IfStatement","src":"14952:59:82","trueBody":{"id":12994,"nodeType":"Break","src":"15006:5:82"}},{"expression":{"id":13009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12996,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12979,"src":"15026:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":12997,"name":"tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12965,"src":"15053:13:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":12999,"indexExpression":{"id":12998,"name":"nextUserTokenWeekToClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"15067:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15053:39:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"baseExpression":{"id":13000,"name":"userBalanceAtTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12973,"src":"15095:22:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13002,"indexExpression":{"id":13001,"name":"nextUserTokenWeekToClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"15118:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15095:48:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15053:90:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13004,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15052:92:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"baseExpression":{"id":13005,"name":"_veSupplyCache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12398,"src":"15163:14:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13007,"indexExpression":{"id":13006,"name":"nextUserTokenWeekToClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"15178:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15163:40:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15052:151:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15026:177:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13010,"nodeType":"ExpressionStatement","src":"15026:177:82"},{"expression":{"id":13013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13011,"name":"nextUserTokenWeekToClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"15217:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":13012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15245:7:82","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"15217:35:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13014,"nodeType":"ExpressionStatement","src":"15217:35:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12985,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12982,"src":"14837:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3230","id":12986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14841:2:82","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"14837:6:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13016,"initializationExpression":{"assignments":[12982],"declarations":[{"constant":false,"id":12982,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13016,"src":"14822:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12981,"name":"uint256","nodeType":"ElementaryTypeName","src":"14822:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12984,"initialValue":{"hexValue":"30","id":12983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14834:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14822:13:82"},"loopExpression":{"expression":{"id":12989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"14845:3:82","subExpression":{"id":12988,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12982,"src":"14847:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12990,"nodeType":"ExpressionStatement","src":"14845:3:82"},"nodeType":"ForStatement","src":"14817:446:82"},{"expression":{"id":13023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":13017,"name":"_userTokenTimeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12438,"src":"15371:20:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$2447_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"}},"id":13020,"indexExpression":{"id":13018,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"15392:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15371:26:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":13021,"indexExpression":{"id":13019,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"15398:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15371:33:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13022,"name":"nextUserTokenWeekToClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"15407:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15371:60:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13024,"nodeType":"ExpressionStatement","src":"15371:60:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13025,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12979,"src":"15446:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15455:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15446:10:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13055,"nodeType":"IfStatement","src":"15442:341:82","trueBody":{"id":13054,"nodeType":"Block","src":"15458:325:82","statements":[{"expression":{"id":13038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13028,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12930,"src":"15578:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":13030,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"cachedBalance","nodeType":"MemberAccess","referencedDeclaration":12404,"src":"15578:24:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13033,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12930,"src":"15613:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":13034,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"cachedBalance","nodeType":"MemberAccess","referencedDeclaration":12404,"src":"15613:24:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13035,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12979,"src":"15640:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15613:33:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15605:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":13031,"name":"uint128","nodeType":"ElementaryTypeName","src":"15605:7:82","typeDescriptions":{}}},"id":13037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15605:42:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"15578:69:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":13039,"nodeType":"ExpressionStatement","src":"15578:69:82"},{"expression":{"arguments":[{"id":13043,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"15680:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13044,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12979,"src":"15686:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13040,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"15661:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":13042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7276,"src":"15661:18:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":13045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15661:32:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13046,"nodeType":"ExpressionStatement","src":"15661:32:82"},{"eventCall":{"arguments":[{"id":13048,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"15726:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13049,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"15732:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":13050,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12979,"src":"15739:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13051,"name":"nextUserTokenWeekToClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"15747:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13047,"name":"TokensClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"15712:13:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_contract$_IERC20_$2447_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256,uint256)"}},"id":13052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15712:60:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13053,"nodeType":"EmitStatement","src":"15707:65:82"}]}},{"expression":{"id":13056,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12979,"src":"15800:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12928,"id":13057,"nodeType":"Return","src":"15793:13:82"}]},"documentation":{"id":12920,"nodeType":"StructuredDocumentation","src":"13375:150:82","text":" @dev It is required that both the global, token and user state have been properly checkpointed\n before calling this function."},"id":13059,"implemented":true,"kind":"function","modifiers":[],"name":"_claimToken","nodeType":"FunctionDefinition","parameters":{"id":12925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12922,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":13059,"src":"13551:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12921,"name":"address","nodeType":"ElementaryTypeName","src":"13551:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12924,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":13059,"src":"13565:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":12923,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"13565:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"13550:28:82"},"returnParameters":{"id":12928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12927,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13059,"src":"13597:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12926,"name":"uint256","nodeType":"ElementaryTypeName","src":"13597:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13596:9:82"},"scope":13820,"src":"13530:2283:82","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13326,"nodeType":"Block","src":"16012:4657:82","statements":[{"assignments":[13068],"declarations":[{"constant":false,"id":13068,"mutability":"mutable","name":"tokenState","nodeType":"VariableDeclaration","scope":13326,"src":"16022:29:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState"},"typeName":{"id":13067,"name":"TokenState","nodeType":"UserDefinedTypeName","referencedDeclaration":12405,"src":"16022:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState"}},"visibility":"internal"}],"id":13072,"initialValue":{"baseExpression":{"id":13069,"name":"_tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12409,"src":"16054:11:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_TokenState_$12405_storage_$","typeString":"mapping(contract IERC20 => struct FeeDistributor.TokenState storage ref)"}},"id":13071,"indexExpression":{"id":13070,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13062,"src":"16066:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16054:18:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage","typeString":"struct FeeDistributor.TokenState storage ref"}},"nodeType":"VariableDeclarationStatement","src":"16022:50:82"},{"assignments":[13074],"declarations":[{"constant":false,"id":13074,"mutability":"mutable","name":"lastTokenTime","nodeType":"VariableDeclaration","scope":13326,"src":"16082:21:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13073,"name":"uint256","nodeType":"ElementaryTypeName","src":"16082:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13077,"initialValue":{"expression":{"id":13075,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13068,"src":"16106:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":13076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12402,"src":"16106:21:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"16082:45:82"},{"assignments":[13079],"declarations":[{"constant":false,"id":13079,"mutability":"mutable","name":"timeSinceLastCheckpoint","nodeType":"VariableDeclaration","scope":13326,"src":"16137:31:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13078,"name":"uint256","nodeType":"ElementaryTypeName","src":"16137:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13080,"nodeType":"VariableDeclarationStatement","src":"16137:31:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13081,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"16182:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16199:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16182:18:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13151,"nodeType":"Block","src":"16716:1282:82","statements":[{"expression":{"id":13115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13110,"name":"timeSinceLastCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13079,"src":"16730:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13111,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16756:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"16756:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13113,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"16774:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16756:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16730:57:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13116,"nodeType":"ExpressionStatement","src":"16730:57:82"},{"condition":{"id":13118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16806:6:82","subExpression":{"id":13117,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13064,"src":"16807:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13150,"nodeType":"IfStatement","src":"16802:1186:82","trueBody":{"id":13149,"nodeType":"Block","src":"16814:1174:82","statements":[{"assignments":[13120],"declarations":[{"constant":false,"id":13120,"mutability":"mutable","name":"alreadyCheckpointedThisWeek","nodeType":"VariableDeclaration","scope":13149,"src":"17170:32:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13119,"name":"bool","nodeType":"ElementaryTypeName","src":"17170:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":13129,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":13122,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"17225:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"17225:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13121,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"17205:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17205:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":13126,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"17285:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13125,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"17265:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17265:34:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17205:94:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"17170:129:82"},{"assignments":[13131],"declarations":[{"constant":false,"id":13131,"mutability":"mutable","name":"nearingEndOfWeek","nodeType":"VariableDeclaration","scope":13149,"src":"17551:21:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13130,"name":"bool","nodeType":"ElementaryTypeName","src":"17551:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":13141,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":13133,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"17593:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"17593:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13132,"name":"_roundUpTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13819,"src":"17575:17:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17575:34:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":13136,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"17612:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"17612:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17575:52:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":13139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17630:6:82","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"value":"1"},"src":"17575:61:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"17551:85:82"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13142,"name":"alreadyCheckpointedThisWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13120,"src":"17877:27:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":13144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"17908:17:82","subExpression":{"id":13143,"name":"nearingEndOfWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"17909:16:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17877:48:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13148,"nodeType":"IfStatement","src":"17873:101:82","trueBody":{"id":13147,"nodeType":"Block","src":"17927:47:82","statements":[{"functionReturnParameters":13066,"id":13146,"nodeType":"Return","src":"17949:7:82"}]}}]}}]},"id":13152,"nodeType":"IfStatement","src":"16178:1820:82","trueBody":{"id":13109,"nodeType":"Block","src":"16202:508:82","statements":[{"expression":{"id":13087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13084,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"16417:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":13085,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16433:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"16433:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16417:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13088,"nodeType":"ExpressionStatement","src":"16417:31:82"},{"expression":{"id":13099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13089,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13068,"src":"16462:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":13091,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":12400,"src":"16462:20:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":13095,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16512:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"16512:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13094,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"16492:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16492:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16485:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":13092,"name":"uint64","nodeType":"ElementaryTypeName","src":"16485:6:82","typeDescriptions":{}}},"id":13098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16485:44:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"16462:67:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":13100,"nodeType":"ExpressionStatement","src":"16462:67:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13102,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16630:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"16630:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13104,"name":"_startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12392,"src":"16648:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16630:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"46656520646973747269627574696f6e20686173206e6f74207374617274656420796574","id":13106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16660:38:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_47b66ecabfc14b155e7704a5a379d2627d619ee8d9c3fea3fc6f216a8bfd4d76","typeString":"literal_string \"Fee distribution has not started yet\""},"value":"Fee distribution has not started yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47b66ecabfc14b155e7704a5a379d2627d619ee8d9c3fea3fc6f216a8bfd4d76","typeString":"literal_string \"Fee distribution has not started yet\""}],"id":13101,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16622:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16622:77:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13108,"nodeType":"ExpressionStatement","src":"16622:77:82"}]}},{"expression":{"id":13161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13153,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13068,"src":"18008:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":13155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12402,"src":"18008:21:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":13158,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"18039:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"18039:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18032:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":13156,"name":"uint64","nodeType":"ElementaryTypeName","src":"18032:6:82","typeDescriptions":{}}},"id":13160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18032:23:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"18008:47:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":13162,"nodeType":"ExpressionStatement","src":"18008:47:82"},{"assignments":[13164],"declarations":[{"constant":false,"id":13164,"mutability":"mutable","name":"tokenBalance","nodeType":"VariableDeclaration","scope":13326,"src":"18066:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13163,"name":"uint256","nodeType":"ElementaryTypeName","src":"18066:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13172,"initialValue":{"arguments":[{"arguments":[{"id":13169,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"18113:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_FeeDistributor_$13820","typeString":"contract FeeDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_FeeDistributor_$13820","typeString":"contract FeeDistributor"}],"id":13168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18105:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13167,"name":"address","nodeType":"ElementaryTypeName","src":"18105:7:82","typeDescriptions":{}}},"id":13170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18105:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13165,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13062,"src":"18089:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":13166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2386,"src":"18089:15:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18089:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18066:53:82"},{"assignments":[13174],"declarations":[{"constant":false,"id":13174,"mutability":"mutable","name":"newTokensToDistribute","nodeType":"VariableDeclaration","scope":13326,"src":"18129:29:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13173,"name":"uint256","nodeType":"ElementaryTypeName","src":"18129:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13180,"initialValue":{"arguments":[{"expression":{"id":13177,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13068,"src":"18178:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":13178,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"cachedBalance","nodeType":"MemberAccess","referencedDeclaration":12404,"src":"18178:24:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":13175,"name":"tokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13164,"src":"18161:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7390,"src":"18161:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18161:42:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18129:74:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13181,"name":"newTokensToDistribute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"18217:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18242:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18217:26:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13185,"nodeType":"IfStatement","src":"18213:39:82","trueBody":{"functionReturnParameters":13066,"id":13184,"nodeType":"Return","src":"18245:7:82"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13187,"name":"tokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13164,"src":"18269:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":13190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18290:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":13189,"name":"uint128","nodeType":"ElementaryTypeName","src":"18290:7:82","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":13188,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"18285:4:82","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18285:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":13192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"18285:17:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"18269:33:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6178696d756d20746f6b656e2062616c616e6365206578636565646564","id":13194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18304:32:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_43f81500ef380474e455ae9052e066306f4e802d2bab24726653d3eca9d31285","typeString":"literal_string \"Maximum token balance exceeded\""},"value":"Maximum token balance exceeded"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_43f81500ef380474e455ae9052e066306f4e802d2bab24726653d3eca9d31285","typeString":"literal_string \"Maximum token balance exceeded\""}],"id":13186,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"18261:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18261:76:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13196,"nodeType":"ExpressionStatement","src":"18261:76:82"},{"expression":{"id":13204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13197,"name":"tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13068,"src":"18347:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage_ptr","typeString":"struct FeeDistributor.TokenState storage pointer"}},"id":13199,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"cachedBalance","nodeType":"MemberAccess","referencedDeclaration":12404,"src":"18347:24:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13202,"name":"tokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13164,"src":"18382:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18374:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":13200,"name":"uint128","nodeType":"ElementaryTypeName","src":"18374:7:82","typeDescriptions":{}}},"id":13203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18374:21:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"18347:48:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":13205,"nodeType":"ExpressionStatement","src":"18347:48:82"},{"assignments":[13207],"declarations":[{"constant":false,"id":13207,"mutability":"mutable","name":"firstIncompleteWeek","nodeType":"VariableDeclaration","scope":13326,"src":"18406:27:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13206,"name":"uint256","nodeType":"ElementaryTypeName","src":"18406:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13211,"initialValue":{"arguments":[{"id":13209,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"18456:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13208,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"18436:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18436:34:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18406:64:82"},{"assignments":[13213],"declarations":[{"constant":false,"id":13213,"mutability":"mutable","name":"nextWeek","nodeType":"VariableDeclaration","scope":13326,"src":"18480:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13212,"name":"uint256","nodeType":"ElementaryTypeName","src":"18480:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13215,"initialValue":{"hexValue":"30","id":13214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18499:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18480:20:82"},{"assignments":[13219],"declarations":[{"constant":false,"id":13219,"mutability":"mutable","name":"tokensPerWeek","nodeType":"VariableDeclaration","scope":13326,"src":"18726:49:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":13218,"keyType":{"id":13216,"name":"uint256","nodeType":"ElementaryTypeName","src":"18734:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"18726:27:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":13217,"name":"uint256","nodeType":"ElementaryTypeName","src":"18745:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"id":13223,"initialValue":{"baseExpression":{"id":13220,"name":"_tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12415,"src":"18778:14:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(contract IERC20 => mapping(uint256 => uint256))"}},"id":13222,"indexExpression":{"id":13221,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13062,"src":"18793:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18778:21:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"nodeType":"VariableDeclarationStatement","src":"18726:73:82"},{"body":{"id":13318,"nodeType":"Block","src":"18842:1743:82","statements":[{"expression":{"id":13238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13234,"name":"nextWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13213,"src":"18919:8:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13235,"name":"firstIncompleteWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13207,"src":"18930:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":13236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18952:7:82","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"18930:29:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18919:40:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13239,"nodeType":"ExpressionStatement","src":"18919:40:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13240,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"18977:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"18977:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13242,"name":"nextWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13213,"src":"18995:8:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18977:26:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13308,"nodeType":"Block","src":"19721:657:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13278,"name":"timeSinceLastCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13079,"src":"19863:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19890:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19863:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13281,"name":"nextWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13213,"src":"19895:8:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":13282,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"19907:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19895:25:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19863:57:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13306,"nodeType":"Block","src":"20096:268:82","statements":[{"expression":{"id":13304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13292,"name":"tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13219,"src":"20181:13:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13294,"indexExpression":{"id":13293,"name":"firstIncompleteWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13207,"src":"20195:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20181:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13295,"name":"newTokensToDistribute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"20244:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13296,"name":"nextWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13213,"src":"20269:8:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13297,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"20280:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20269:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20268:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20244:50:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13301,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20243:52:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":13302,"name":"timeSinceLastCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13079,"src":"20322:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20243:102:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20181:164:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13305,"nodeType":"ExpressionStatement","src":"20181:164:82"}]},"id":13307,"nodeType":"IfStatement","src":"19859:505:82","trueBody":{"id":13291,"nodeType":"Block","src":"19922:168:82","statements":[{"expression":{"id":13289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13285,"name":"tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13219,"src":"20012:13:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13287,"indexExpression":{"id":13286,"name":"firstIncompleteWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13207,"src":"20026:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20012:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":13288,"name":"newTokensToDistribute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"20050:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20012:59:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13290,"nodeType":"ExpressionStatement","src":"20012:59:82"}]}}]},"id":13309,"nodeType":"IfStatement","src":"18973:1405:82","trueBody":{"id":13277,"nodeType":"Block","src":"19005:710:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13244,"name":"timeSinceLastCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13079,"src":"19144:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19171:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19144:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13247,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"19176:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"19176:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":13249,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"19195:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19176:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19144:64:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13274,"nodeType":"Block","src":"19316:283:82","statements":[{"expression":{"id":13272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13259,"name":"tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13219,"src":"19409:13:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13261,"indexExpression":{"id":13260,"name":"firstIncompleteWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13207,"src":"19423:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19409:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13262,"name":"newTokensToDistribute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"19472:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13263,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"19497:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"19497:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13265,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"19515:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19497:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13267,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19496:33:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19472:57:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13269,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19471:59:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":13270,"name":"timeSinceLastCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13079,"src":"19557:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19471:109:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19409:171:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13273,"nodeType":"ExpressionStatement","src":"19409:171:82"}]},"id":13275,"nodeType":"IfStatement","src":"19140:459:82","trueBody":{"id":13258,"nodeType":"Block","src":"19210:100:82","statements":[{"expression":{"id":13256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13252,"name":"tokensPerWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13219,"src":"19232:13:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13254,"indexExpression":{"id":13253,"name":"firstIncompleteWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13207,"src":"19246:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19232:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":13255,"name":"newTokensToDistribute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"19270:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19232:59:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13257,"nodeType":"ExpressionStatement","src":"19232:59:82"}]}},{"id":13276,"nodeType":"Break","src":"19695:5:82"}]}},{"expression":{"id":13312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13310,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"20506:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13311,"name":"nextWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13213,"src":"20522:8:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20506:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13313,"nodeType":"ExpressionStatement","src":"20506:24:82"},{"expression":{"id":13316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13314,"name":"firstIncompleteWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13207,"src":"20544:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13315,"name":"nextWeek","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13213,"src":"20566:8:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20544:30:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13317,"nodeType":"ExpressionStatement","src":"20544:30:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13228,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13225,"src":"18829:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3230","id":13229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18833:2:82","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"18829:6:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13319,"initializationExpression":{"assignments":[13225],"declarations":[{"constant":false,"id":13225,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13319,"src":"18814:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13224,"name":"uint256","nodeType":"ElementaryTypeName","src":"18814:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13227,"initialValue":{"hexValue":"30","id":13226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18826:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18814:13:82"},"loopExpression":{"expression":{"id":13232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"18837:3:82","subExpression":{"id":13231,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13225,"src":"18839:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13233,"nodeType":"ExpressionStatement","src":"18837:3:82"},"nodeType":"ForStatement","src":"18809:1776:82"},{"eventCall":{"arguments":[{"id":13321,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13062,"src":"20618:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":13322,"name":"newTokensToDistribute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"20625:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13323,"name":"lastTokenTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"20648:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13320,"name":"TokenCheckpointed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"20600:17:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC20_$2447_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256,uint256)"}},"id":13324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20600:62:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13325,"nodeType":"EmitStatement","src":"20595:67:82"}]},"documentation":{"id":13060,"nodeType":"StructuredDocumentation","src":"15819:127:82","text":" @dev Calculate the amount of `token` to be distributed to `_votingEscrow` holders since the last checkpoint."},"id":13327,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointToken","nodeType":"FunctionDefinition","parameters":{"id":13065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13062,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":13327,"src":"15977:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":13061,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"15977:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":13064,"mutability":"mutable","name":"force","nodeType":"VariableDeclaration","scope":13327,"src":"15991:10:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13063,"name":"bool","nodeType":"ElementaryTypeName","src":"15991:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15976:26:82"},"returnParameters":{"id":13066,"nodeType":"ParameterList","parameters":[],"src":"16012:0:82"},"scope":13820,"src":"15951:4718:82","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13602,"nodeType":"Block","src":"20838:6020:82","statements":[{"assignments":[13334],"declarations":[{"constant":false,"id":13334,"mutability":"mutable","name":"maxUserEpoch","nodeType":"VariableDeclaration","scope":13602,"src":"20848:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13333,"name":"uint256","nodeType":"ElementaryTypeName","src":"20848:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13339,"initialValue":{"arguments":[{"id":13337,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"20902:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13335,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"20871:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":13336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_point_epoch","nodeType":"MemberAccess","referencedDeclaration":1514,"src":"20871:30:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20871:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20848:59:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13340,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13334,"src":"21042:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21058:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21042:17:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13344,"nodeType":"IfStatement","src":"21038:30:82","trueBody":{"functionReturnParameters":13332,"id":13343,"nodeType":"Return","src":"21061:7:82"}},{"assignments":[13346],"declarations":[{"constant":false,"id":13346,"mutability":"mutable","name":"userState","nodeType":"VariableDeclaration","scope":13602,"src":"21078:27:82","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState"},"typeName":{"id":13345,"name":"UserState","nodeType":"UserDefinedTypeName","referencedDeclaration":12422,"src":"21078:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState"}},"visibility":"internal"}],"id":13350,"initialValue":{"baseExpression":{"id":13347,"name":"_userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12426,"src":"21108:10:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserState_$12422_storage_$","typeString":"mapping(address => struct FeeDistributor.UserState storage ref)"}},"id":13349,"indexExpression":{"id":13348,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"21119:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21108:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage","typeString":"struct FeeDistributor.UserState storage ref"}},"nodeType":"VariableDeclarationStatement","src":"21078:46:82"},{"assignments":[13352],"declarations":[{"constant":false,"id":13352,"mutability":"mutable","name":"nextWeekToCheckpoint","nodeType":"VariableDeclaration","scope":13602,"src":"21307:28:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13351,"name":"uint256","nodeType":"ElementaryTypeName","src":"21307:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13355,"initialValue":{"expression":{"id":13353,"name":"userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"21338:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState storage pointer"}},"id":13354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12419,"src":"21338:20:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"21307:51:82"},{"assignments":[13357],"declarations":[{"constant":false,"id":13357,"mutability":"mutable","name":"userEpoch","nodeType":"VariableDeclaration","scope":13602,"src":"21369:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13356,"name":"uint256","nodeType":"ElementaryTypeName","src":"21369:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13358,"nodeType":"VariableDeclarationStatement","src":"21369:17:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13359,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"21400:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21424:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21400:25:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13400,"nodeType":"Block","src":"21609:1363:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13372,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"21627:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":13373,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"21651:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"21651:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21627:39:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13378,"nodeType":"IfStatement","src":"21623:416:82","trueBody":{"id":13377,"nodeType":"Block","src":"21668:371:82","statements":[{"functionReturnParameters":13332,"id":13376,"nodeType":"Return","src":"22018:7:82"}]}},{"expression":{"id":13382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13379,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"22113:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":13380,"name":"userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"22125:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState storage pointer"}},"id":13381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"lastEpochCheckpointed","nodeType":"MemberAccess","referencedDeclaration":12421,"src":"22125:31:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"22113:43:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13383,"nodeType":"ExpressionStatement","src":"22113:43:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13384,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13334,"src":"22810:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13385,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"22825:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22810:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3230","id":13387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22837:2:82","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"22810:29:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13399,"nodeType":"IfStatement","src":"22806:156:82","trueBody":{"id":13398,"nodeType":"Block","src":"22841:121:82","statements":[{"expression":{"id":13396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13389,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"22859:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13391,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"22895:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13392,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"22901:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13393,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"22923:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13394,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13334,"src":"22934:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13390,"name":"_findTimestampUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13786,"src":"22871:23:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256,uint256,uint256) view returns (uint256)"}},"id":13395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22871:76:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22859:88:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13397,"nodeType":"ExpressionStatement","src":"22859:88:82"}]}}]},"id":13401,"nodeType":"IfStatement","src":"21396:1576:82","trueBody":{"id":13371,"nodeType":"Block","src":"21427:176:82","statements":[{"expression":{"id":13369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13362,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"21522:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13364,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"21558:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13365,"name":"_startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12392,"src":"21564:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":13366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21576:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":13367,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13334,"src":"21579:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13363,"name":"_findTimestampUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13786,"src":"21534:23:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256,uint256,uint256) view returns (uint256)"}},"id":13368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21534:58:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21522:70:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13370,"nodeType":"ExpressionStatement","src":"21522:70:82"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13402,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"23082:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23095:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23082:14:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13410,"nodeType":"IfStatement","src":"23078:58:82","trueBody":{"id":13409,"nodeType":"Block","src":"23098:38:82","statements":[{"expression":{"id":13407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13405,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"23112:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":13406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23124:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23112:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13408,"nodeType":"ExpressionStatement","src":"23112:13:82"}]}},{"assignments":[13414],"declarations":[{"constant":false,"id":13414,"mutability":"mutable","name":"nextUserPoint","nodeType":"VariableDeclaration","scope":13602,"src":"23146:40:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":13413,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"23146:19:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"id":13420,"initialValue":{"arguments":[{"id":13417,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"23222:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13418,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"23228:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13415,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"23189:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":13416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_point_history","nodeType":"MemberAccess","referencedDeclaration":1530,"src":"23189:32:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_struct$_Point_$1486_memory_ptr_$","typeString":"function (address,uint256) view external returns (struct IVotingEscrow.Point memory)"}},"id":13419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23189:49:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"nodeType":"VariableDeclarationStatement","src":"23146:92:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13421,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"23513:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23537:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23513:25:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13453,"nodeType":"IfStatement","src":"23509:349:82","trueBody":{"id":13452,"nodeType":"Block","src":"23540:318:82","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13425,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"23620:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"23620:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13427,"name":"_startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12392,"src":"23638:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23620:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"46656520646973747269627574696f6e20686173206e6f74207374617274656420796574","id":13429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23650:38:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_47b66ecabfc14b155e7704a5a379d2627d619ee8d9c3fea3fc6f216a8bfd4d76","typeString":"literal_string \"Fee distribution has not started yet\""},"value":"Fee distribution has not started yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47b66ecabfc14b155e7704a5a379d2627d619ee8d9c3fea3fc6f216a8bfd4d76","typeString":"literal_string \"Fee distribution has not started yet\""}],"id":13424,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"23612:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23612:77:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13431,"nodeType":"ExpressionStatement","src":"23612:77:82"},{"expression":{"id":13441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13432,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"23703:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13435,"name":"_startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12392,"src":"23735:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":13437,"name":"nextUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"23765:13:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13438,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ts","nodeType":"MemberAccess","referencedDeclaration":1483,"src":"23765:16:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13436,"name":"_roundUpTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13819,"src":"23747:17:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23747:35:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13433,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"23726:4:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5683_$","typeString":"type(library Math)"}},"id":13434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","referencedDeclaration":5574,"src":"23726:8:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23726:57:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23703:80:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13442,"nodeType":"ExpressionStatement","src":"23703:80:82"},{"expression":{"id":13450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13443,"name":"userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"23797:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState storage pointer"}},"id":13445,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":12417,"src":"23797:19:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13448,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"23826:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13447,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23819:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":13446,"name":"uint64","nodeType":"ElementaryTypeName","src":"23819:6:82","typeDescriptions":{}}},"id":13449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23819:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"23797:50:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":13451,"nodeType":"ExpressionStatement","src":"23797:50:82"}]}},{"assignments":[13457],"declarations":[{"constant":false,"id":13457,"mutability":"mutable","name":"currentUserPoint","nodeType":"VariableDeclaration","scope":13602,"src":"24068:43:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":13456,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"24068:19:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"id":13458,"nodeType":"VariableDeclarationStatement","src":"24068:43:82"},{"body":{"id":13580,"nodeType":"Block","src":"24154:2246:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13469,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"24172:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":13470,"name":"nextUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"24196:13:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13471,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ts","nodeType":"MemberAccess","referencedDeclaration":1483,"src":"24196:16:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24172:40:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13473,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"24216:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":13474,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13334,"src":"24229:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24216:25:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"24172:69:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13578,"nodeType":"Block","src":"25050:1340:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13510,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"25272:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":13511,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"25296:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"25296:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25272:39:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13516,"nodeType":"IfStatement","src":"25268:349:82","trueBody":{"id":13515,"nodeType":"Block","src":"25313:304:82","statements":[{"id":13514,"nodeType":"Break","src":"25593:5:82"}]}},{"assignments":[13518],"declarations":[{"constant":false,"id":13518,"mutability":"mutable","name":"dt","nodeType":"VariableDeclaration","scope":13578,"src":"25635:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":13517,"name":"int128","nodeType":"ElementaryTypeName","src":"25635:6:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"id":13526,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13521,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"25654:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":13522,"name":"currentUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13457,"src":"25677:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13523,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ts","nodeType":"MemberAccess","referencedDeclaration":1483,"src":"25677:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25654:42:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13520,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25647:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":13519,"name":"int128","nodeType":"ElementaryTypeName","src":"25647:6:82","typeDescriptions":{}}},"id":13525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25647:50:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"VariableDeclarationStatement","src":"25635:62:82"},{"assignments":[13528],"declarations":[{"constant":false,"id":13528,"mutability":"mutable","name":"userBalance","nodeType":"VariableDeclaration","scope":13578,"src":"25715:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13527,"name":"uint256","nodeType":"ElementaryTypeName","src":"25715:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13548,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":13535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13529,"name":"currentUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13457,"src":"25737:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"bias","nodeType":"MemberAccess","referencedDeclaration":1479,"src":"25737:21:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":13534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13531,"name":"currentUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13457,"src":"25761:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13532,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"slope","nodeType":"MemberAccess","referencedDeclaration":1481,"src":"25761:22:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13533,"name":"dt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13518,"src":"25786:2:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25761:27:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25737:51:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":13546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25894:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":13547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"25737:158:82","trueExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":13544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13538,"name":"currentUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13457,"src":"25819:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"bias","nodeType":"MemberAccess","referencedDeclaration":1479,"src":"25819:21:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":13543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13540,"name":"currentUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13457,"src":"25843:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13541,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"slope","nodeType":"MemberAccess","referencedDeclaration":1481,"src":"25843:22:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13542,"name":"dt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13518,"src":"25868:2:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25843:27:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25819:51:82","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":13537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25811:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13536,"name":"uint256","nodeType":"ElementaryTypeName","src":"25811:7:82","typeDescriptions":{}}},"id":13545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25811:60:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25715:180:82"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13549,"name":"userBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13528,"src":"25992:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26007:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25992:16:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13552,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"26012:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13553,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13334,"src":"26024:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26012:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25992:44:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13565,"nodeType":"IfStatement","src":"25988:175:82","trueBody":{"id":13564,"nodeType":"Block","src":"26038:125:82","statements":[{"expression":{"id":13561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13556,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"26060:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":13558,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"26101:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"26101:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13557,"name":"_roundUpTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13819,"src":"26083:17:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26083:34:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26060:57:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13562,"nodeType":"ExpressionStatement","src":"26060:57:82"},{"id":13563,"nodeType":"Break","src":"26139:5:82"}]}},{"expression":{"id":13572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":13566,"name":"_userBalanceAtTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12432,"src":"26260:23:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":13569,"indexExpression":{"id":13567,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"26284:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26260:29:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13570,"indexExpression":{"id":13568,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"26290:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"26260:51:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13571,"name":"userBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13528,"src":"26314:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26260:65:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13573,"nodeType":"ExpressionStatement","src":"26260:65:82"},{"expression":{"id":13576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13574,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"26344:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":13575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26368:7:82","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"26344:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13577,"nodeType":"ExpressionStatement","src":"26344:31:82"}]},"id":13579,"nodeType":"IfStatement","src":"24168:2222:82","trueBody":{"id":13509,"nodeType":"Block","src":"24243:801:82","statements":[{"expression":{"id":13479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13477,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"24718:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":13478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24731:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24718:14:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13480,"nodeType":"ExpressionStatement","src":"24718:14:82"},{"expression":{"id":13483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13481,"name":"currentUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13457,"src":"24750:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13482,"name":"nextUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"24769:13:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"src":"24750:32:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13484,"nodeType":"ExpressionStatement","src":"24750:32:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13485,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"24804:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13486,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13334,"src":"24816:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24804:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13507,"nodeType":"Block","src":"24924:106:82","statements":[{"expression":{"id":13505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13499,"name":"nextUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"24946:13:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13502,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"24995:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13503,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"25001:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13500,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"24962:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":13501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_point_history","nodeType":"MemberAccess","referencedDeclaration":1530,"src":"24962:32:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_struct$_Point_$1486_memory_ptr_$","typeString":"function (address,uint256) view external returns (struct IVotingEscrow.Point memory)"}},"id":13504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24962:49:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"src":"24946:65:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13506,"nodeType":"ExpressionStatement","src":"24946:65:82"}]},"id":13508,"nodeType":"IfStatement","src":"24800:230:82","trueBody":{"id":13498,"nodeType":"Block","src":"24830:88:82","statements":[{"expression":{"id":13496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13488,"name":"nextUserPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"24852:13:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":13491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24888:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":13492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24891:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":13493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24894:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":13494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24897:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":13489,"name":"IVotingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1559,"src":"24868:13:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVotingEscrow_$1559_$","typeString":"type(contract IVotingEscrow)"}},"id":13490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Point","nodeType":"MemberAccess","referencedDeclaration":1486,"src":"24868:19:82","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Point_$1486_storage_ptr_$","typeString":"type(struct IVotingEscrow.Point storage pointer)"}},"id":13495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24868:31:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"src":"24852:47:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13497,"nodeType":"ExpressionStatement","src":"24852:47:82"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13463,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13460,"src":"24141:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3530","id":13464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24145:2:82","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"src":"24141:6:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13581,"initializationExpression":{"assignments":[13460],"declarations":[{"constant":false,"id":13460,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13581,"src":"24126:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13459,"name":"uint256","nodeType":"ElementaryTypeName","src":"24126:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13462,"initialValue":{"hexValue":"30","id":13461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24138:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"24126:13:82"},"loopExpression":{"expression":{"id":13467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"24149:3:82","subExpression":{"id":13466,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13460,"src":"24151:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13468,"nodeType":"ExpressionStatement","src":"24149:3:82"},"nodeType":"ForStatement","src":"24121:2279:82"},{"expression":{"id":13591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13582,"name":"userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"26735:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState storage pointer"}},"id":13584,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"lastEpochCheckpointed","nodeType":"MemberAccess","referencedDeclaration":12421,"src":"26735:31:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13587,"name":"userEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13357,"src":"26776:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26788:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"26776:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26769:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":13585,"name":"uint64","nodeType":"ElementaryTypeName","src":"26769:6:82","typeDescriptions":{}}},"id":13590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26769:21:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"26735:55:82","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":13592,"nodeType":"ExpressionStatement","src":"26735:55:82"},{"expression":{"id":13600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13593,"name":"userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"26800:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage_ptr","typeString":"struct FeeDistributor.UserState storage pointer"}},"id":13595,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"timeCursor","nodeType":"MemberAccess","referencedDeclaration":12419,"src":"26800:20:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13598,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"26830:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13597,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26823:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":13596,"name":"uint64","nodeType":"ElementaryTypeName","src":"26823:6:82","typeDescriptions":{}}},"id":13599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26823:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"26800:51:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":13601,"nodeType":"ExpressionStatement","src":"26800:51:82"}]},"documentation":{"id":13328,"nodeType":"StructuredDocumentation","src":"20675:103:82","text":" @dev Cache the `user`'s balance of `_votingEscrow` at the beginning of each new week"},"id":13603,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointUserBalance","nodeType":"FunctionDefinition","parameters":{"id":13331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13330,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":13603,"src":"20815:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13329,"name":"address","nodeType":"ElementaryTypeName","src":"20815:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20814:14:82"},"returnParameters":{"id":13332,"nodeType":"ParameterList","parameters":[],"src":"20838:0:82"},"scope":13820,"src":"20783:6075:82","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13668,"nodeType":"Block","src":"27013:981:82","statements":[{"assignments":[13608],"declarations":[{"constant":false,"id":13608,"mutability":"mutable","name":"nextWeekToCheckpoint","nodeType":"VariableDeclaration","scope":13668,"src":"27023:28:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13607,"name":"uint256","nodeType":"ElementaryTypeName","src":"27023:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13610,"initialValue":{"id":13609,"name":"_timeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12394,"src":"27054:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"27023:42:82"},{"assignments":[13612],"declarations":[{"constant":false,"id":13612,"mutability":"mutable","name":"weekStart","nodeType":"VariableDeclaration","scope":13668,"src":"27075:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13611,"name":"uint256","nodeType":"ElementaryTypeName","src":"27075:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13617,"initialValue":{"arguments":[{"expression":{"id":13614,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"27115:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"27115:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13613,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"27095:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27095:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"27075:56:82"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13618,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13608,"src":"27226:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13619,"name":"weekStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13612,"src":"27249:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27226:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13621,"name":"weekStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13612,"src":"27262:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13622,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"27275:5:82","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"27275:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27262:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"27226:64:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13628,"nodeType":"IfStatement","src":"27222:183:82","trueBody":{"id":13627,"nodeType":"Block","src":"27292:113:82","statements":[{"functionReturnParameters":13606,"id":13626,"nodeType":"Return","src":"27388:7:82"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13629,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"27415:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":13631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"checkpoint","nodeType":"MemberAccess","referencedDeclaration":1533,"src":"27415:24:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":13632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27415:26:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13633,"nodeType":"ExpressionStatement","src":"27415:26:82"},{"body":{"id":13662,"nodeType":"Block","src":"27588:277:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13644,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13608,"src":"27606:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13645,"name":"weekStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13612,"src":"27629:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27606:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13648,"nodeType":"IfStatement","src":"27602:43:82","trueBody":{"id":13647,"nodeType":"Break","src":"27640:5:82"}},{"expression":{"id":13656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13649,"name":"_veSupplyCache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12398,"src":"27660:14:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":13651,"indexExpression":{"id":13650,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13608,"src":"27675:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"27660:36:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13654,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13608,"src":"27725:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13652,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"27699:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":13653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":1507,"src":"27699:25:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":13655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27699:47:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27660:86:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13657,"nodeType":"ExpressionStatement","src":"27660:86:82"},{"expression":{"id":13660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13658,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13608,"src":"27823:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":13659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27847:7:82","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"27823:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13661,"nodeType":"ExpressionStatement","src":"27823:31:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13638,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"27575:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3230","id":13639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27579:2:82","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"27575:6:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13663,"initializationExpression":{"assignments":[13635],"declarations":[{"constant":false,"id":13635,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13663,"src":"27560:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13634,"name":"uint256","nodeType":"ElementaryTypeName","src":"27560:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13637,"initialValue":{"hexValue":"30","id":13636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27572:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"27560:13:82"},"loopExpression":{"expression":{"id":13642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"27583:3:82","subExpression":{"id":13641,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13635,"src":"27585:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13643,"nodeType":"ExpressionStatement","src":"27583:3:82"},"nodeType":"ForStatement","src":"27555:310:82"},{"expression":{"id":13666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13664,"name":"_timeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12394,"src":"27953:11:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13665,"name":"nextWeekToCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13608,"src":"27967:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27953:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13667,"nodeType":"ExpressionStatement","src":"27953:34:82"}]},"documentation":{"id":13604,"nodeType":"StructuredDocumentation","src":"26864:101:82","text":" @dev Cache the totalSupply of VotingEscrow token at the beginning of each new week"},"id":13669,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointTotalSupply","nodeType":"FunctionDefinition","parameters":{"id":13605,"nodeType":"ParameterList","parameters":[],"src":"27001:2:82"},"returnParameters":{"id":13606,"nodeType":"ParameterList","parameters":[],"src":"27013:0:82"},"scope":13820,"src":"26970:1024:82","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13705,"nodeType":"Block","src":"28297:414:82","statements":[{"assignments":[13680],"declarations":[{"constant":false,"id":13680,"mutability":"mutable","name":"userTimeCursor","nodeType":"VariableDeclaration","scope":13705,"src":"28307:22:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13679,"name":"uint256","nodeType":"ElementaryTypeName","src":"28307:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13686,"initialValue":{"baseExpression":{"baseExpression":{"id":13681,"name":"_userTokenTimeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12438,"src":"28332:20:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$2447_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"}},"id":13683,"indexExpression":{"id":13682,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13672,"src":"28353:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28332:26:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":13685,"indexExpression":{"id":13684,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13674,"src":"28359:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28332:33:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28307:58:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13687,"name":"userTimeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13680,"src":"28379:14:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28396:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"28379:18:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13692,"nodeType":"IfStatement","src":"28375:45:82","trueBody":{"expression":{"id":13690,"name":"userTimeCursor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13680,"src":"28406:14:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13678,"id":13691,"nodeType":"Return","src":"28399:21:82"}},{"expression":{"arguments":[{"expression":{"baseExpression":{"id":13695,"name":"_userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12426,"src":"28647:10:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserState_$12422_storage_$","typeString":"mapping(address => struct FeeDistributor.UserState storage ref)"}},"id":13697,"indexExpression":{"id":13696,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13672,"src":"28658:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28647:16:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage","typeString":"struct FeeDistributor.UserState storage ref"}},"id":13698,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":12417,"src":"28647:26:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"expression":{"baseExpression":{"id":13699,"name":"_tokenState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12409,"src":"28675:11:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_TokenState_$12405_storage_$","typeString":"mapping(contract IERC20 => struct FeeDistributor.TokenState storage ref)"}},"id":13701,"indexExpression":{"id":13700,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13674,"src":"28687:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28675:18:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenState_$12405_storage","typeString":"struct FeeDistributor.TokenState storage ref"}},"id":13702,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":12400,"src":"28675:28:82","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":13693,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"28638:4:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5683_$","typeString":"type(library Math)"}},"id":13694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","referencedDeclaration":5574,"src":"28638:8:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28638:66:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13678,"id":13704,"nodeType":"Return","src":"28631:73:82"}]},"documentation":{"id":13670,"nodeType":"StructuredDocumentation","src":"28025:174:82","text":" @dev Wrapper around `_userTokenTimeCursor` which returns the start timestamp for `token`\n if `user` has not attempted to interact with it previously."},"id":13706,"implemented":true,"kind":"function","modifiers":[],"name":"_getUserTokenTimeCursor","nodeType":"FunctionDefinition","parameters":{"id":13675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13672,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":13706,"src":"28237:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13671,"name":"address","nodeType":"ElementaryTypeName","src":"28237:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13674,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":13706,"src":"28251:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":13673,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"28251:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"28236:28:82"},"returnParameters":{"id":13678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13677,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13706,"src":"28288:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13676,"name":"uint256","nodeType":"ElementaryTypeName","src":"28288:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28287:9:82"},"scope":13820,"src":"28204:507:82","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13785,"nodeType":"Block","src":"29007:739:82","statements":[{"assignments":[13721],"declarations":[{"constant":false,"id":13721,"mutability":"mutable","name":"min","nodeType":"VariableDeclaration","scope":13785,"src":"29017:11:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13720,"name":"uint256","nodeType":"ElementaryTypeName","src":"29017:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13723,"initialValue":{"id":13722,"name":"minUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13713,"src":"29031:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29017:26:82"},{"assignments":[13725],"declarations":[{"constant":false,"id":13725,"mutability":"mutable","name":"max","nodeType":"VariableDeclaration","scope":13785,"src":"29053:11:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13724,"name":"uint256","nodeType":"ElementaryTypeName","src":"29053:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13727,"initialValue":{"id":13726,"name":"maxUserEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13715,"src":"29067:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29053:26:82"},{"body":{"id":13781,"nodeType":"Block","src":"29209:511:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13738,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13721,"src":"29227:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":13739,"name":"max","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13725,"src":"29234:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29227:10:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13742,"nodeType":"IfStatement","src":"29223:21:82","trueBody":{"id":13741,"nodeType":"Break","src":"29239:5:82"}},{"assignments":[13744],"declarations":[{"constant":false,"id":13744,"mutability":"mutable","name":"mid","nodeType":"VariableDeclaration","scope":13781,"src":"29410:11:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13743,"name":"uint256","nodeType":"ElementaryTypeName","src":"29410:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13753,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13745,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13721,"src":"29425:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":13746,"name":"max","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13725,"src":"29431:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29425:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":13748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29437:1:82","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29425:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13750,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"29424:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":13751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29442:1:82","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29424:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29410:33:82"},{"assignments":[13757],"declarations":[{"constant":false,"id":13757,"mutability":"mutable","name":"pt","nodeType":"VariableDeclaration","scope":13781,"src":"29457:29:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":13756,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"29457:19:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"id":13763,"initialValue":{"arguments":[{"id":13760,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13709,"src":"29522:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13761,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13744,"src":"29528:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13758,"name":"_votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"29489:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":13759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_point_history","nodeType":"MemberAccess","referencedDeclaration":1530,"src":"29489:32:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_struct$_Point_$1486_memory_ptr_$","typeString":"function (address,uint256) view external returns (struct IVotingEscrow.Point memory)"}},"id":13762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29489:43:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"nodeType":"VariableDeclarationStatement","src":"29457:75:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13764,"name":"pt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13757,"src":"29550:2:82","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"id":13765,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ts","nodeType":"MemberAccess","referencedDeclaration":1483,"src":"29550:5:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":13766,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13711,"src":"29559:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29550:18:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13779,"nodeType":"Block","src":"29618:92:82","statements":[{"expression":{"id":13777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13773,"name":"max","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13725,"src":"29682:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13774,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13744,"src":"29688:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29694:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"29688:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29682:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13778,"nodeType":"ExpressionStatement","src":"29682:13:82"}]},"id":13780,"nodeType":"IfStatement","src":"29546:164:82","trueBody":{"id":13772,"nodeType":"Block","src":"29570:42:82","statements":[{"expression":{"id":13770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13768,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13721,"src":"29588:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13769,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13744,"src":"29594:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29588:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13771,"nodeType":"ExpressionStatement","src":"29588:9:82"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13732,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13729,"src":"29195:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"313238","id":13733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29199:3:82","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"29195:7:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13782,"initializationExpression":{"assignments":[13729],"declarations":[{"constant":false,"id":13729,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13782,"src":"29180:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13728,"name":"uint256","nodeType":"ElementaryTypeName","src":"29180:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13731,"initialValue":{"hexValue":"30","id":13730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29192:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"29180:13:82"},"loopExpression":{"expression":{"id":13736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"29204:3:82","subExpression":{"id":13735,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13729,"src":"29206:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13737,"nodeType":"ExpressionStatement","src":"29204:3:82"},"nodeType":"ForStatement","src":"29175:545:82"},{"expression":{"id":13783,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13721,"src":"29736:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13719,"id":13784,"nodeType":"Return","src":"29729:10:82"}]},"documentation":{"id":13707,"nodeType":"StructuredDocumentation","src":"28717:105:82","text":" @dev Return the user epoch number for `user` corresponding to the provided `timestamp`"},"id":13786,"implemented":true,"kind":"function","modifiers":[],"name":"_findTimestampUserEpoch","nodeType":"FunctionDefinition","parameters":{"id":13716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13709,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":13786,"src":"28869:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13708,"name":"address","nodeType":"ElementaryTypeName","src":"28869:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13711,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":13786,"src":"28891:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13710,"name":"uint256","nodeType":"ElementaryTypeName","src":"28891:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13713,"mutability":"mutable","name":"minUserEpoch","nodeType":"VariableDeclaration","scope":13786,"src":"28918:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13712,"name":"uint256","nodeType":"ElementaryTypeName","src":"28918:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13715,"mutability":"mutable","name":"maxUserEpoch","nodeType":"VariableDeclaration","scope":13786,"src":"28948:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13714,"name":"uint256","nodeType":"ElementaryTypeName","src":"28948:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28859:115:82"},"returnParameters":{"id":13719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13718,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13786,"src":"28998:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13717,"name":"uint256","nodeType":"ElementaryTypeName","src":"28998:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28997:9:82"},"scope":13820,"src":"28827:919:82","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13801,"nodeType":"Block","src":"29950:117:82","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13794,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13789,"src":"30030:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31","id":13795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30042:7:82","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"30030:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13797,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"30029:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31","id":13798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30053:7:82","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"30029:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13793,"id":13800,"nodeType":"Return","src":"30022:38:82"}]},"documentation":{"id":13787,"nodeType":"StructuredDocumentation","src":"29752:114:82","text":" @dev Rounds the provided timestamp down to the beginning of the previous week (Thurs 00:00 UTC)"},"id":13802,"implemented":true,"kind":"function","modifiers":[],"name":"_roundDownTimestamp","nodeType":"FunctionDefinition","parameters":{"id":13790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13789,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":13802,"src":"29900:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13788,"name":"uint256","nodeType":"ElementaryTypeName","src":"29900:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29899:19:82"},"returnParameters":{"id":13793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13792,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13802,"src":"29941:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13791,"name":"uint256","nodeType":"ElementaryTypeName","src":"29941:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29940:9:82"},"scope":13820,"src":"29871:196:82","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":13818,"nodeType":"Block","src":"30263:135:82","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13811,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13805,"src":"30367:9:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":13812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30379:7:82","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"30367:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30389:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30367:23:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13810,"name":"_roundDownTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"30347:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30347:44:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13809,"id":13817,"nodeType":"Return","src":"30340:51:82"}]},"documentation":{"id":13803,"nodeType":"StructuredDocumentation","src":"30073:108:82","text":" @dev Rounds the provided timestamp up to the beginning of the next week (Thurs 00:00 UTC)"},"id":13819,"implemented":true,"kind":"function","modifiers":[],"name":"_roundUpTimestamp","nodeType":"FunctionDefinition","parameters":{"id":13806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13805,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":13819,"src":"30213:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13804,"name":"uint256","nodeType":"ElementaryTypeName","src":"30213:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30212:19:82"},"returnParameters":{"id":13809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13808,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13819,"src":"30254:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13807,"name":"uint256","nodeType":"ElementaryTypeName","src":"30254:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30253:9:82"},"scope":13820,"src":"30186:212:82","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":13821,"src":"2013:28387:82"}],"src":"688:29713:82"},"id":82},"contracts/gauges/BaseGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","exportedSymbols":{"BaseGaugeFactory":[13896]},"id":13897,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13822,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:83"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","id":13823,"nodeType":"ImportDirective","scope":13897,"sourceUnit":942,"src":"713:92:83","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol","id":13824,"nodeType":"ImportDirective","scope":13897,"sourceUnit":5931,"src":"807:76:83","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13825,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"923:22:83","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":13826,"nodeType":"InheritanceSpecifier","src":"923:22:83"}],"contractDependencies":[941],"contractKind":"contract","fullyImplemented":true,"id":13896,"linearizedBaseContracts":[13896,941],"name":"BaseGaugeFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":13828,"mutability":"mutable","name":"_gaugeImplementation","nodeType":"VariableDeclaration","scope":13896,"src":"952:36:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13827,"name":"address","nodeType":"ElementaryTypeName","src":"952:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":13832,"mutability":"mutable","name":"_isGaugeFromFactory","nodeType":"VariableDeclaration","scope":13896,"src":"995:52:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":13831,"keyType":{"id":13829,"name":"address","nodeType":"ElementaryTypeName","src":"1003:7:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"995:24:83","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":13830,"name":"bool","nodeType":"ElementaryTypeName","src":"1014:4:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"anonymous":false,"id":13836,"name":"GaugeCreated","nodeType":"EventDefinition","parameters":{"id":13835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13834,"indexed":true,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":13836,"src":"1073:21:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13833,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1072:23:83"},"src":"1054:42:83"},{"body":{"id":13845,"nodeType":"Block","src":"1143:59:83","statements":[{"expression":{"id":13843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13841,"name":"_gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13828,"src":"1153:20:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13842,"name":"gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13838,"src":"1176:19:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1153:42:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13844,"nodeType":"ExpressionStatement","src":"1153:42:83"}]},"id":13846,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13838,"mutability":"mutable","name":"gaugeImplementation","nodeType":"VariableDeclaration","scope":13846,"src":"1114:27:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13837,"name":"address","nodeType":"ElementaryTypeName","src":"1114:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1113:29:83"},"returnParameters":{"id":13840,"nodeType":"ParameterList","parameters":[],"src":"1143:0:83"},"scope":13896,"src":"1102:100:83","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13854,"nodeType":"Block","src":"1373:44:83","statements":[{"expression":{"id":13852,"name":"_gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13828,"src":"1390:20:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":13851,"id":13853,"nodeType":"Return","src":"1383:27:83"}]},"documentation":{"id":13847,"nodeType":"StructuredDocumentation","src":"1208:96:83","text":" @notice Returns the address of the implementation used for gauge deployments."},"functionSelector":"39312dee","id":13855,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeImplementation","nodeType":"FunctionDefinition","parameters":{"id":13848,"nodeType":"ParameterList","parameters":[],"src":"1340:2:83"},"returnParameters":{"id":13851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13850,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13855,"src":"1364:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13849,"name":"address","nodeType":"ElementaryTypeName","src":"1364:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1363:9:83"},"scope":13896,"src":"1309:108:83","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[940],"body":{"id":13868,"nodeType":"Block","src":"1588:50:83","statements":[{"expression":{"baseExpression":{"id":13864,"name":"_isGaugeFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13832,"src":"1605:19:83","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":13866,"indexExpression":{"id":13865,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13858,"src":"1625:5:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1605:26:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13863,"id":13867,"nodeType":"Return","src":"1598:33:83"}]},"documentation":{"id":13856,"nodeType":"StructuredDocumentation","src":"1423:79:83","text":" @notice Returns true if `gauge` was created by this factory."},"functionSelector":"ce3cc8bd","id":13869,"implemented":true,"kind":"function","modifiers":[],"name":"isGaugeFromFactory","nodeType":"FunctionDefinition","overrides":{"id":13860,"nodeType":"OverrideSpecifier","overrides":[],"src":"1564:8:83"},"parameters":{"id":13859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13858,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":13869,"src":"1535:13:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13857,"name":"address","nodeType":"ElementaryTypeName","src":"1535:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1534:15:83"},"returnParameters":{"id":13863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13862,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13869,"src":"1582:4:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13861,"name":"bool","nodeType":"ElementaryTypeName","src":"1582:4:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1581:6:83"},"scope":13896,"src":"1507:131:83","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":13894,"nodeType":"Block","src":"1900:168:83","statements":[{"assignments":[13876],"declarations":[{"constant":false,"id":13876,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":13894,"src":"1910:13:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13875,"name":"address","nodeType":"ElementaryTypeName","src":"1910:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13881,"initialValue":{"arguments":[{"id":13879,"name":"_gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13828,"src":"1939:20:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13877,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5930,"src":"1926:6:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$5930_$","typeString":"type(library Clones)"}},"id":13878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"clone","nodeType":"MemberAccess","referencedDeclaration":5873,"src":"1926:12:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_address_$","typeString":"function (address) returns (address)"}},"id":13880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1926:34:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1910:50:83"},{"expression":{"id":13886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13882,"name":"_isGaugeFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13832,"src":"1971:19:83","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":13884,"indexExpression":{"id":13883,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13876,"src":"1991:5:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1971:26:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":13885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2000:4:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1971:33:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13887,"nodeType":"ExpressionStatement","src":"1971:33:83"},{"eventCall":{"arguments":[{"id":13889,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13876,"src":"2032:5:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13888,"name":"GaugeCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13836,"src":"2019:12:83","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":13890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2019:19:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13891,"nodeType":"EmitStatement","src":"2014:24:83"},{"expression":{"id":13892,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13876,"src":"2056:5:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":13874,"id":13893,"nodeType":"Return","src":"2049:12:83"}]},"documentation":{"id":13870,"nodeType":"StructuredDocumentation","src":"1644:205:83","text":" @dev Deploys a new gauge as a proxy of the implementation in storage.\n The deployed gauge must be initialized by the caller method.\n @return The address of the deployed gauge"},"id":13895,"implemented":true,"kind":"function","modifiers":[],"name":"_create","nodeType":"FunctionDefinition","parameters":{"id":13871,"nodeType":"ParameterList","parameters":[],"src":"1870:2:83"},"returnParameters":{"id":13874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13873,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13895,"src":"1891:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13872,"name":"address","nodeType":"ElementaryTypeName","src":"1891:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1890:9:83"},"scope":13896,"src":"1854:214:83","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":13897,"src":"885:1185:83"}],"src":"688:1383:83"},"id":83},"contracts/gauges/ChildChainGaugeCheckpointer.sol":{"ast":{"absolutePath":"contracts/gauges/ChildChainGaugeCheckpointer.sol","exportedSymbols":{"ChildChainGaugeCheckpointer":[13970]},"id":13971,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13898,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:84"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","id":13899,"nodeType":"ImportDirective","scope":13971,"sourceUnit":365,"src":"713:86:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","id":13900,"nodeType":"ImportDirective","scope":13971,"sourceUnit":942,"src":"800:92:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":13901,"nodeType":"ImportDirective","scope":13971,"sourceUnit":3698,"src":"894:88:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","id":13902,"nodeType":"ImportDirective","scope":13971,"sourceUnit":7132,"src":"983:83:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol","id":13903,"nodeType":"ImportDirective","scope":13971,"sourceUnit":855,"src":"1067:92:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/ChildChainGaugeRegistry.sol","file":"./ChildChainGaugeRegistry.sol","id":13905,"nodeType":"ImportDirective","scope":13971,"sourceUnit":14270,"src":"1161:72:84","symbolAliases":[{"foreign":{"id":13904,"name":"ChildChainGaugeRegistry","nodeType":"Identifier","overloadedDeclarations":[],"src":"1170:23:84","typeDescriptions":{}}}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13907,"name":"IL2LayerZeroDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":854,"src":"1482:22:84","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"id":13908,"nodeType":"InheritanceSpecifier","src":"1482:22:84"}],"contractDependencies":[854],"contractKind":"contract","documentation":{"id":13906,"nodeType":"StructuredDocumentation","src":"1235:206:84","text":" @title ChildChainGaugeCheckpointer\n @notice Checkpointer for all child chain gauges.\n This contract calls `user_checkpoint` function on every child chain gauge during onVeBalBridged callback."},"fullyImplemented":true,"id":13970,"linearizedBaseContracts":[13970,854],"name":"ChildChainGaugeCheckpointer","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":13910,"mutability":"immutable","name":"_childChainGaugeRegistry","nodeType":"VariableDeclaration","scope":13970,"src":"1511:66:84","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"},"typeName":{"id":13909,"name":"ChildChainGaugeRegistry","nodeType":"UserDefinedTypeName","referencedDeclaration":14269,"src":"1511:23:84","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"}},"visibility":"private"},{"body":{"id":13919,"nodeType":"Block","src":"1645:67:84","statements":[{"expression":{"id":13917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13915,"name":"_childChainGaugeRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13910,"src":"1655:24:84","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13916,"name":"childChainGaugeRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13912,"src":"1682:23:84","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"}},"src":"1655:50:84","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"}},"id":13918,"nodeType":"ExpressionStatement","src":"1655:50:84"}]},"id":13920,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13912,"mutability":"mutable","name":"childChainGaugeRegistry","nodeType":"VariableDeclaration","scope":13920,"src":"1596:47:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"},"typeName":{"id":13911,"name":"ChildChainGaugeRegistry","nodeType":"UserDefinedTypeName","referencedDeclaration":14269,"src":"1596:23:84","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"}},"visibility":"internal"}],"src":"1595:49:84"},"returnParameters":{"id":13914,"nodeType":"ParameterList","parameters":[],"src":"1645:0:84"},"scope":13970,"src":"1584:128:84","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[849],"body":{"id":13962,"nodeType":"Block","src":"1817:279:84","statements":[{"assignments":[13928],"declarations":[{"constant":false,"id":13928,"mutability":"mutable","name":"totalGauges","nodeType":"VariableDeclaration","scope":13962,"src":"1827:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13927,"name":"uint256","nodeType":"ElementaryTypeName","src":"1827:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13932,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13929,"name":"_childChainGaugeRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13910,"src":"1849:24:84","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"}},"id":13930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalGauges","nodeType":"MemberAccess","referencedDeclaration":14197,"src":"1849:36:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":13931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1849:38:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1827:60:84"},{"assignments":[13936],"declarations":[{"constant":false,"id":13936,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":13962,"src":"1897:32:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[]"},"typeName":{"baseType":{"id":13934,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"1897:16:84","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":13935,"nodeType":"ArrayTypeName","src":"1897:18:84","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_storage_ptr","typeString":"contract IChildChainGauge[]"}},"visibility":"internal"}],"id":13942,"initialValue":{"arguments":[{"hexValue":"30","id":13939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1967:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":13940,"name":"totalGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13928,"src":"1970:11:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13937,"name":"_childChainGaugeRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13910,"src":"1932:24:84","typeDescriptions":{"typeIdentifier":"t_contract$_ChildChainGaugeRegistry_$14269","typeString":"contract ChildChainGaugeRegistry"}},"id":13938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getGauges","nodeType":"MemberAccess","referencedDeclaration":14268,"src":"1932:34:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr_$","typeString":"function (uint256,uint256) view external returns (contract IChildChainGauge[] memory)"}},"id":13941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1932:50:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[] memory"}},"nodeType":"VariableDeclarationStatement","src":"1897:85:84"},{"body":{"id":13960,"nodeType":"Block","src":"2034:56:84","statements":[{"expression":{"arguments":[{"id":13957,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13923,"src":"2074:4:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"id":13953,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13936,"src":"2048:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[] memory"}},"id":13955,"indexExpression":{"id":13954,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13944,"src":"2055:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2048:9:84","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":13956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_checkpoint","nodeType":"MemberAccess","referencedDeclaration":357,"src":"2048:25:84","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) external returns (bool)"}},"id":13958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2048:31:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13959,"nodeType":"ExpressionStatement","src":"2048:31:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13947,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13944,"src":"2012:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13948,"name":"totalGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13928,"src":"2016:11:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2012:15:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13961,"initializationExpression":{"assignments":[13944],"declarations":[{"constant":false,"id":13944,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13961,"src":"1997:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13943,"name":"uint256","nodeType":"ElementaryTypeName","src":"1997:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13946,"initialValue":{"hexValue":"30","id":13945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2009:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1997:13:84"},"loopExpression":{"expression":{"id":13951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2029:3:84","subExpression":{"id":13950,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13944,"src":"2029:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13952,"nodeType":"ExpressionStatement","src":"2029:3:84"},"nodeType":"ForStatement","src":"1992:98:84"}]},"documentation":{"id":13921,"nodeType":"StructuredDocumentation","src":"1718:38:84","text":"@inheritdoc IL2LayerZeroDelegation"},"functionSelector":"df130bfe","id":13963,"implemented":true,"kind":"function","modifiers":[],"name":"onVeBalBridged","nodeType":"FunctionDefinition","overrides":{"id":13925,"nodeType":"OverrideSpecifier","overrides":[],"src":"1808:8:84"},"parameters":{"id":13924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13923,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":13963,"src":"1785:12:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13922,"name":"address","nodeType":"ElementaryTypeName","src":"1785:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1784:14:84"},"returnParameters":{"id":13926,"nodeType":"ParameterList","parameters":[],"src":"1817:0:84"},"scope":13970,"src":"1761:335:84","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[853],"body":{"id":13968,"nodeType":"Block","src":"2194:64:84","statements":[]},"documentation":{"id":13964,"nodeType":"StructuredDocumentation","src":"2102:38:84","text":"@inheritdoc IL2LayerZeroDelegation"},"functionSelector":"96345fb5","id":13969,"implemented":true,"kind":"function","modifiers":[],"name":"onVeBalSupplyUpdate","nodeType":"FunctionDefinition","overrides":{"id":13966,"nodeType":"OverrideSpecifier","overrides":[],"src":"2185:8:84"},"parameters":{"id":13965,"nodeType":"ParameterList","parameters":[],"src":"2173:2:84"},"returnParameters":{"id":13967,"nodeType":"ParameterList","parameters":[],"src":"2194:0:84"},"scope":13970,"src":"2145:113:84","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":13971,"src":"1442:818:84"}],"src":"688:1573:84"},"id":84},"contracts/gauges/ChildChainGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/ChildChainGaugeFactory.sol","exportedSymbols":{"ChildChainGaugeFactory":[14059]},"id":14060,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13972,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:85"},{"id":13973,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:85"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","id":13974,"nodeType":"ImportDirective","scope":14060,"sourceUnit":365,"src":"747:86:85","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol","id":13975,"nodeType":"ImportDirective","scope":14060,"sourceUnit":3737,"src":"834:72:85","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"./BaseGaugeFactory.sol","id":13976,"nodeType":"ImportDirective","scope":14060,"sourceUnit":13897,"src":"908:32:85","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13977,"name":"Version","nodeType":"UserDefinedTypeName","referencedDeclaration":3736,"src":"977:7:85","typeDescriptions":{"typeIdentifier":"t_contract$_Version_$3736","typeString":"contract Version"}},"id":13978,"nodeType":"InheritanceSpecifier","src":"977:7:85"},{"baseName":{"id":13979,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"986:16:85","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":13980,"nodeType":"InheritanceSpecifier","src":"986:16:85"}],"contractDependencies":[941,2340,3736,13896],"contractKind":"contract","fullyImplemented":true,"id":14059,"linearizedBaseContracts":[14059,13896,941,3736,2340],"name":"ChildChainGaugeFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":13982,"mutability":"mutable","name":"_productVersion","nodeType":"VariableDeclaration","scope":14059,"src":"1009:30:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":13981,"name":"string","nodeType":"ElementaryTypeName","src":"1009:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":14023,"nodeType":"Block","src":"1257:227:85","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":14015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14004,"name":"gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13984,"src":"1315:19:85","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":14005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"version","nodeType":"MemberAccess","referencedDeclaration":2339,"src":"1315:27:85","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view external returns (string memory)"}},"id":14006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1315:29:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":14002,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1298:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1298:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1298:47:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14001,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1288:9:85","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1288:58:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":14012,"name":"productVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"1377:14:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":14010,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1360:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1360:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1360:32:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14009,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1350:9:85","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1350:43:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1288:105:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"56455253494f4e5f4d49534d41544348","id":14016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1407:18:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_f0b18e3567d0464aff5c29f0af4355516e7dec27a3eefbd6364aa716c8d6ecab","typeString":"literal_string \"VERSION_MISMATCH\""},"value":"VERSION_MISMATCH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f0b18e3567d0464aff5c29f0af4355516e7dec27a3eefbd6364aa716c8d6ecab","typeString":"literal_string \"VERSION_MISMATCH\""}],"id":14000,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1267:7:85","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1267:168:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14018,"nodeType":"ExpressionStatement","src":"1267:168:85"},{"expression":{"id":14021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14019,"name":"_productVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13982,"src":"1445:15:85","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14020,"name":"productVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"1463:14:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1445:32:85","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":14022,"nodeType":"ExpressionStatement","src":"1445:32:85"}]},"id":14024,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13991,"name":"factoryVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13986,"src":"1194:14:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":13992,"modifierName":{"id":13990,"name":"Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"1186:7:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Version_$3736_$","typeString":"type(contract Version)"}},"nodeType":"ModifierInvocation","src":"1186:23:85"},{"arguments":[{"arguments":[{"id":13996,"name":"gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13984,"src":"1235:19:85","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}],"id":13995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1227:7:85","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13994,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:85","typeDescriptions":{}}},"id":13997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1227:28:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":13998,"modifierName":{"id":13993,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1210:16:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"1210:46:85"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13984,"mutability":"mutable","name":"gaugeImplementation","nodeType":"VariableDeclaration","scope":14024,"src":"1067:36:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"},"typeName":{"id":13983,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"1067:16:85","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"visibility":"internal"},{"constant":false,"id":13986,"mutability":"mutable","name":"factoryVersion","nodeType":"VariableDeclaration","scope":14024,"src":"1113:28:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13985,"name":"string","nodeType":"ElementaryTypeName","src":"1113:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13988,"mutability":"mutable","name":"productVersion","nodeType":"VariableDeclaration","scope":14024,"src":"1151:28:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13987,"name":"string","nodeType":"ElementaryTypeName","src":"1151:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1057:128:85"},"returnParameters":{"id":13999,"nodeType":"ParameterList","parameters":[],"src":"1257:0:85"},"scope":14059,"src":"1046:438:85","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14032,"nodeType":"Block","src":"1768:39:85","statements":[{"expression":{"id":14030,"name":"_productVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13982,"src":"1785:15:85","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":14029,"id":14031,"nodeType":"Return","src":"1778:22:85"}]},"documentation":{"id":14025,"nodeType":"StructuredDocumentation","src":"1490:208:85","text":" @notice Returns a JSON representation of the deployed gauge version containing name, version number and task ID.\n @dev This value will only be updated at factory creation time."},"functionSelector":"18d6186f","id":14033,"implemented":true,"kind":"function","modifiers":[],"name":"getProductVersion","nodeType":"FunctionDefinition","parameters":{"id":14026,"nodeType":"ParameterList","parameters":[],"src":"1729:2:85"},"returnParameters":{"id":14029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14028,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14033,"src":"1753:13:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14027,"name":"string","nodeType":"ElementaryTypeName","src":"1753:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1752:15:85"},"scope":14059,"src":"1703:104:85","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":14057,"nodeType":"Block","src":"2407:135:85","statements":[{"assignments":[14042],"declarations":[{"constant":false,"id":14042,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14057,"src":"2417:13:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14041,"name":"address","nodeType":"ElementaryTypeName","src":"2417:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14045,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":14043,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"2433:7:85","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":14044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2433:9:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2417:25:85"},{"expression":{"arguments":[{"id":14050,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14036,"src":"2487:4:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":14051,"name":"getProductVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14033,"src":"2493:17:85","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":14052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2493:19:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"arguments":[{"id":14047,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14042,"src":"2469:5:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14046,"name":"IChildChainGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"2452:16:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChildChainGauge_$364_$","typeString":"type(contract IChildChainGauge)"}},"id":14048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2452:23:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":14049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":341,"src":"2452:34:85","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,string memory) external"}},"id":14053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2452:61:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14054,"nodeType":"ExpressionStatement","src":"2452:61:85"},{"expression":{"id":14055,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14042,"src":"2530:5:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":14040,"id":14056,"nodeType":"Return","src":"2523:12:85"}]},"documentation":{"id":14034,"nodeType":"StructuredDocumentation","src":"1813:532:85","text":" @notice Deploys a new gauge for a Balancer pool.\n @dev As anyone can register arbitrary Balancer pools with the Vault,\n it's impossible to prove onchain that `pool` is a \"valid\" deployment.\n Care must be taken to ensure that gauges deployed from this factory are suitable to distribute rewards.\n It is possible to deploy multiple gauges for a single pool.\n @param pool The address of the pool for which to deploy a gauge\n @return The address of the deployed gauge"},"functionSelector":"9ed93318","id":14058,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":14037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14036,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":14058,"src":"2366:12:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14035,"name":"address","nodeType":"ElementaryTypeName","src":"2366:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2365:14:85"},"returnParameters":{"id":14040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14039,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14058,"src":"2398:7:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14038,"name":"address","nodeType":"ElementaryTypeName","src":"2398:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2397:9:85"},"scope":14059,"src":"2350:192:85","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":14060,"src":"942:1602:85"}],"src":"688:1857:85"},"id":85},"contracts/gauges/ChildChainGaugeRegistry.sol":{"ast":{"absolutePath":"contracts/gauges/ChildChainGaugeRegistry.sol","exportedSymbols":{"ChildChainGaugeRegistry":[14269]},"id":14270,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14061,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:86"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol","id":14062,"nodeType":"ImportDirective","scope":14270,"sourceUnit":942,"src":"713:92:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","id":14063,"nodeType":"ImportDirective","scope":14270,"sourceUnit":365,"src":"806:86:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":14064,"nodeType":"ImportDirective","scope":14270,"sourceUnit":3698,"src":"894:88:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","id":14065,"nodeType":"ImportDirective","scope":14270,"sourceUnit":7132,"src":"983:83:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":14066,"nodeType":"ImportDirective","scope":14270,"sourceUnit":7188,"src":"1067:85:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/L2BalancerPseudoMinter.sol","file":"../L2BalancerPseudoMinter.sol","id":14067,"nodeType":"ImportDirective","scope":14270,"sourceUnit":9269,"src":"1154:39:86","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14069,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1476:23:86","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":14070,"nodeType":"InheritanceSpecifier","src":"1476:23:86"},{"baseName":{"id":14071,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"1501:15:86","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":14072,"nodeType":"InheritanceSpecifier","src":"1501:15:86"}],"contractDependencies":[2259,3128,3697,7187],"contractKind":"contract","documentation":{"id":14068,"nodeType":"StructuredDocumentation","src":"1195:244:86","text":" @title ChildChainGaugeRegistry\n @notice Registry for all child chain gauges.\n This contract enables the addition and removal of child chain gauges to the registry.\n Duplication is not permitted. Gauges are verified to be valid."},"fullyImplemented":true,"id":14269,"linearizedBaseContracts":[14269,7187,3697,3128,2259],"name":"ChildChainGaugeRegistry","nodeType":"ContractDefinition","nodes":[{"id":14075,"libraryName":{"id":14073,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7131,"src":"1529:13:86","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$7131","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"1523:49:86","typeName":{"id":14074,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1547:24:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"constant":false,"id":14077,"mutability":"immutable","name":"_l2BalancerPseudoMinter","nodeType":"VariableDeclaration","scope":14269,"src":"1578:64:86","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"},"typeName":{"id":14076,"name":"L2BalancerPseudoMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":9268,"src":"1578:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"}},"visibility":"private"},{"constant":false,"id":14079,"mutability":"immutable","name":"_liquidityGaugeFactory","nodeType":"VariableDeclaration","scope":14269,"src":"1648:63:86","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":14078,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"1648:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"private"},{"constant":false,"id":14081,"mutability":"mutable","name":"_gauges","nodeType":"VariableDeclaration","scope":14269,"src":"1718:40:86","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":14080,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1718:24:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"private"},{"anonymous":false,"id":14085,"name":"GaugeAdded","nodeType":"EventDefinition","parameters":{"id":14084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14083,"indexed":true,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14085,"src":"1782:30:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"},"typeName":{"id":14082,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"1782:16:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"visibility":"internal"}],"src":"1781:32:86"},"src":"1765:49:86"},{"anonymous":false,"id":14089,"name":"GaugeRemoved","nodeType":"EventDefinition","parameters":{"id":14088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14087,"indexed":true,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14089,"src":"1838:30:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"},"typeName":{"id":14086,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"1838:16:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"visibility":"internal"}],"src":"1837:32:86"},"src":"1819:51:86"},{"body":{"id":14110,"nodeType":"Block","src":"2278:121:86","statements":[{"expression":{"id":14104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14102,"name":"_l2BalancerPseudoMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14077,"src":"2288:23:86","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14103,"name":"l2BalancerPseudoMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14092,"src":"2314:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"}},"src":"2288:48:86","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"}},"id":14105,"nodeType":"ExpressionStatement","src":"2288:48:86"},{"expression":{"id":14108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14106,"name":"_liquidityGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14079,"src":"2346:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14107,"name":"liquidityGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14094,"src":"2371:21:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"src":"2346:46:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":14109,"nodeType":"ExpressionStatement","src":"2346:46:86"}]},"documentation":{"id":14090,"nodeType":"StructuredDocumentation","src":"1876:221:86","text":" @notice Constructor initializes the ChildChainGaugeRegistry contract.\n @param l2BalancerPseudoMinter The L2 Balancer pseudo minter.\n @param liquidityGaugeFactory The liquidity gauge factory."},"id":14111,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14097,"name":"l2BalancerPseudoMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14092,"src":"2239:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"}},"id":14098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getVault","nodeType":"MemberAccess","referencedDeclaration":3642,"src":"2239:31:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view external returns (contract IVault)"}},"id":14099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2239:33:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":14100,"modifierName":{"id":14096,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"2215:23:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"2215:58:86"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14092,"mutability":"mutable","name":"l2BalancerPseudoMinter","nodeType":"VariableDeclaration","scope":14111,"src":"2114:45:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"},"typeName":{"id":14091,"name":"L2BalancerPseudoMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":9268,"src":"2114:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"}},"visibility":"internal"},{"constant":false,"id":14094,"mutability":"mutable","name":"liquidityGaugeFactory","nodeType":"VariableDeclaration","scope":14111,"src":"2161:44:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":14093,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"2161:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"2113:93:86"},"returnParameters":{"id":14101,"nodeType":"ParameterList","parameters":[],"src":"2278:0:86"},"scope":14269,"src":"2102:297:86","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14161,"nodeType":"Block","src":"2913:541:86","statements":[{"assignments":[14122],"declarations":[{"constant":false,"id":14122,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":14161,"src":"3108:30:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":14121,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"3108:22:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"id":14126,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14123,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14114,"src":"3141:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":14124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"factory","nodeType":"MemberAccess","referencedDeclaration":363,"src":"3141:13:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"function () view external returns (contract ILiquidityGaugeFactory)"}},"id":14125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3141:15:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"VariableDeclarationStatement","src":"3108:48:86"},{"expression":{"arguments":[{"arguments":[{"id":14130,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14122,"src":"3218:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}],"expression":{"id":14128,"name":"_l2BalancerPseudoMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14077,"src":"3174:23:86","typeDescriptions":{"typeIdentifier":"t_contract$_L2BalancerPseudoMinter_$9268","typeString":"contract L2BalancerPseudoMinter"}},"id":14129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isValidGaugeFactory","nodeType":"MemberAccess","referencedDeclaration":9105,"src":"3174:43:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ILiquidityGaugeFactory_$941_$returns$_t_bool_$","typeString":"function (contract ILiquidityGaugeFactory) view external returns (bool)"}},"id":14131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3174:52:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e56414c49445f47415547455f464143544f5259","id":14132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3228:23:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_07bbd958e90df01ec1c65e98f624ae2f0fdc1d67c7d103281f1b9c914b079bc6","typeString":"literal_string \"INVALID_GAUGE_FACTORY\""},"value":"INVALID_GAUGE_FACTORY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_07bbd958e90df01ec1c65e98f624ae2f0fdc1d67c7d103281f1b9c914b079bc6","typeString":"literal_string \"INVALID_GAUGE_FACTORY\""}],"id":14127,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3166:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3166:86:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14134,"nodeType":"ExpressionStatement","src":"3166:86:86"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":14140,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14114,"src":"3305:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}],"id":14139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3297:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14138,"name":"address","nodeType":"ElementaryTypeName","src":"3297:7:86","typeDescriptions":{}}},"id":14141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3297:14:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14136,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14122,"src":"3270:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":14137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isGaugeFromFactory","nodeType":"MemberAccess","referencedDeclaration":940,"src":"3270:26:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":14142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3270:42:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"47415547455f4e4f545f46524f4d5f464143544f5259","id":14143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3314:24:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_d308f94861169d2d9edfca96af279257acef8fe6014ba918915ce0943a795c25","typeString":"literal_string \"GAUGE_NOT_FROM_FACTORY\""},"value":"GAUGE_NOT_FROM_FACTORY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d308f94861169d2d9edfca96af279257acef8fe6014ba918915ce0943a795c25","typeString":"literal_string \"GAUGE_NOT_FROM_FACTORY\""}],"id":14135,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3262:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3262:77:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14145,"nodeType":"ExpressionStatement","src":"3262:77:86"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":14151,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14114,"src":"3378:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}],"id":14150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3370:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14149,"name":"address","nodeType":"ElementaryTypeName","src":"3370:7:86","typeDescriptions":{}}},"id":14152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3370:14:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14147,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14081,"src":"3358:7:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":14148,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":6731,"src":"3358:11:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":14153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3358:27:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"47415547455f414c52454144595f52454749535445524544","id":14154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3387:26:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_a126fc5bf2d8c6fb97f8f2615d0961e123128e9005f3df6fbe3ef4495b2d3e6d","typeString":"literal_string \"GAUGE_ALREADY_REGISTERED\""},"value":"GAUGE_ALREADY_REGISTERED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a126fc5bf2d8c6fb97f8f2615d0961e123128e9005f3df6fbe3ef4495b2d3e6d","typeString":"literal_string \"GAUGE_ALREADY_REGISTERED\""}],"id":14146,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3350:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3350:64:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14156,"nodeType":"ExpressionStatement","src":"3350:64:86"},{"eventCall":{"arguments":[{"id":14158,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14114,"src":"3441:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}],"id":14157,"name":"GaugeAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14085,"src":"3430:10:86","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IChildChainGauge_$364_$returns$__$","typeString":"function (contract IChildChainGauge)"}},"id":14159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3430:17:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14160,"nodeType":"EmitStatement","src":"3425:22:86"}]},"documentation":{"id":14112,"nodeType":"StructuredDocumentation","src":"2405:426:86","text":" @notice Add a gauge to the registry after validating its legitimacy.\n @dev This function checks that the gauge's factory is registered with the L2BalancerPseudoMinter,\n and that the gauge has been deployed from the registered factory. If these conditions are met,\n the gauge is added to the registry, and a GaugeAdded event is emitted.\n @param gauge The gauge to add to the registry."},"functionSelector":"9da882ac","id":14162,"implemented":true,"kind":"function","modifiers":[{"id":14117,"modifierName":{"id":14116,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"2887:12:86","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2887:12:86"},{"id":14119,"modifierName":{"id":14118,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"2900:12:86","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2900:12:86"}],"name":"addGauge","nodeType":"FunctionDefinition","parameters":{"id":14115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14114,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14162,"src":"2854:22:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"},"typeName":{"id":14113,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"2854:16:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"visibility":"internal"}],"src":"2853:24:86"},"returnParameters":{"id":14120,"nodeType":"ParameterList","parameters":[],"src":"2913:0:86"},"scope":14269,"src":"2836:618:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14185,"nodeType":"Block","src":"3864:115:86","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":14175,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14165,"src":"3905:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}],"id":14174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3897:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14173,"name":"address","nodeType":"ElementaryTypeName","src":"3897:7:86","typeDescriptions":{}}},"id":14176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3897:14:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14171,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14081,"src":"3882:7:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":14172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":6816,"src":"3882:14:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":14177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3882:30:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"47415547455f4e4f545f52454749535445524544","id":14178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3914:22:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_302c6e7666f3e467445ab923a9c9ae313fb08ad504cff74fe1770272dc1b842a","typeString":"literal_string \"GAUGE_NOT_REGISTERED\""},"value":"GAUGE_NOT_REGISTERED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_302c6e7666f3e467445ab923a9c9ae313fb08ad504cff74fe1770272dc1b842a","typeString":"literal_string \"GAUGE_NOT_REGISTERED\""}],"id":14170,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3874:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3874:63:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14180,"nodeType":"ExpressionStatement","src":"3874:63:86"},{"eventCall":{"arguments":[{"id":14182,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14165,"src":"3966:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}],"id":14181,"name":"GaugeRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14089,"src":"3953:12:86","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IChildChainGauge_$364_$returns$__$","typeString":"function (contract IChildChainGauge)"}},"id":14183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3953:19:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14184,"nodeType":"EmitStatement","src":"3948:24:86"}]},"documentation":{"id":14163,"nodeType":"StructuredDocumentation","src":"3460:332:86","text":" @notice Remove a registered gauge from the registry and emit a GaugeRemoved event.\n @dev If the gauge is not registered, the function reverts with a \"GAUGE_NOT_REGISTERED\" error.\n Remove a gauge might affect the order of the remaining gauges.\n @param gauge The gauge to remove from the registry."},"functionSelector":"3a045145","id":14186,"implemented":true,"kind":"function","modifiers":[{"id":14168,"modifierName":{"id":14167,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3851:12:86","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3851:12:86"}],"name":"removeGauge","nodeType":"FunctionDefinition","parameters":{"id":14166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14165,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14186,"src":"3818:22:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"},"typeName":{"id":14164,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"3818:16:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"visibility":"internal"}],"src":"3817:24:86"},"returnParameters":{"id":14169,"nodeType":"ParameterList","parameters":[],"src":"3864:0:86"},"scope":14269,"src":"3797:182:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14196,"nodeType":"Block","src":"4202:40:86","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14192,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14081,"src":"4219:7:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":14193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6847,"src":"4219:14:86","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":14194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4219:16:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14191,"id":14195,"nodeType":"Return","src":"4212:23:86"}]},"documentation":{"id":14187,"nodeType":"StructuredDocumentation","src":"3985:157:86","text":" @notice Retrieve the total number of gauges registered in the registry.\n @return The total number of registered gauges as a uint256."},"functionSelector":"2ba27111","id":14197,"implemented":true,"kind":"function","modifiers":[],"name":"totalGauges","nodeType":"FunctionDefinition","parameters":{"id":14188,"nodeType":"ParameterList","parameters":[],"src":"4167:2:86"},"returnParameters":{"id":14191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14190,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14197,"src":"4193:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14189,"name":"uint256","nodeType":"ElementaryTypeName","src":"4193:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4192:9:86"},"scope":14269,"src":"4147:95:86","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":14267,"nodeType":"Block","src":"4754:428:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14209,"name":"startIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14200,"src":"4772:10:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":14210,"name":"endIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14202,"src":"4785:8:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4772:21:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e56414c49445f494e4449434553","id":14212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4795:17:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_780d17356ecfbc61ea8fc333292211a2572ce2fdff7bd90a37d610286aee3548","typeString":"literal_string \"INVALID_INDICES\""},"value":"INVALID_INDICES"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_780d17356ecfbc61ea8fc333292211a2572ce2fdff7bd90a37d610286aee3548","typeString":"literal_string \"INVALID_INDICES\""}],"id":14208,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4764:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4764:49:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14214,"nodeType":"ExpressionStatement","src":"4764:49:86"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14216,"name":"endIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14202,"src":"4831:8:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14217,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14081,"src":"4843:7:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":14218,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6847,"src":"4843:14:86","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":14219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4843:16:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4831:28:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"454e445f494e4445585f4f55545f4f465f424f554e4453","id":14221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4861:25:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_bbf27e93a5b35b66ec2e6abe208fa6e08c352ccf5f565522bdc5f40ebcd01b55","typeString":"literal_string \"END_INDEX_OUT_OF_BOUNDS\""},"value":"END_INDEX_OUT_OF_BOUNDS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bbf27e93a5b35b66ec2e6abe208fa6e08c352ccf5f565522bdc5f40ebcd01b55","typeString":"literal_string \"END_INDEX_OUT_OF_BOUNDS\""}],"id":14215,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4823:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4823:64:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14223,"nodeType":"ExpressionStatement","src":"4823:64:86"},{"assignments":[14225],"declarations":[{"constant":false,"id":14225,"mutability":"mutable","name":"size","nodeType":"VariableDeclaration","scope":14267,"src":"4898:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14224,"name":"uint256","nodeType":"ElementaryTypeName","src":"4898:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14229,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14226,"name":"endIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14202,"src":"4913:8:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14227,"name":"startIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14200,"src":"4924:10:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4913:21:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4898:36:86"},{"assignments":[14233],"declarations":[{"constant":false,"id":14233,"mutability":"mutable","name":"slicedGauges","nodeType":"VariableDeclaration","scope":14267,"src":"4944:38:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[]"},"typeName":{"baseType":{"id":14231,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"4944:16:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":14232,"nodeType":"ArrayTypeName","src":"4944:18:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_storage_ptr","typeString":"contract IChildChainGauge[]"}},"visibility":"internal"}],"id":14239,"initialValue":{"arguments":[{"id":14237,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14225,"src":"5008:4:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4985:22:86","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IChildChainGauge[] memory)"},"typeName":{"baseType":{"id":14234,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"4989:16:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":14235,"nodeType":"ArrayTypeName","src":"4989:18:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_storage_ptr","typeString":"contract IChildChainGauge[]"}}},"id":14238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4985:28:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4944:69:86"},{"body":{"id":14263,"nodeType":"Block","src":"5059:87:86","statements":[{"expression":{"id":14261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14250,"name":"slicedGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14233,"src":"5073:12:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[] memory"}},"id":14252,"indexExpression":{"id":14251,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14241,"src":"5086:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5073:15:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14256,"name":"startIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14200,"src":"5119:10:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":14257,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14241,"src":"5132:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5119:14:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14254,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14081,"src":"5108:7:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":14255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":6873,"src":"5108:10:86","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":14259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5108:26:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14253,"name":"IChildChainGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"5091:16:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChildChainGauge_$364_$","typeString":"type(contract IChildChainGauge)"}},"id":14260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5091:44:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"src":"5073:62:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":14262,"nodeType":"ExpressionStatement","src":"5073:62:86"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14244,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14241,"src":"5044:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":14245,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14225,"src":"5048:4:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5044:8:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14264,"initializationExpression":{"assignments":[14241],"declarations":[{"constant":false,"id":14241,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":14264,"src":"5029:9:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14240,"name":"uint256","nodeType":"ElementaryTypeName","src":"5029:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14243,"initialValue":{"hexValue":"30","id":14242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5041:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5029:13:86"},"loopExpression":{"expression":{"id":14248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5054:3:86","subExpression":{"id":14247,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14241,"src":"5054:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14249,"nodeType":"ExpressionStatement","src":"5054:3:86"},"nodeType":"ForStatement","src":"5024:122:86"},{"expression":{"id":14265,"name":"slicedGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14233,"src":"5163:12:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[] memory"}},"functionReturnParameters":14207,"id":14266,"nodeType":"Return","src":"5156:19:86"}]},"documentation":{"id":14198,"nodeType":"StructuredDocumentation","src":"4248:394:86","text":" @notice Retrieve a list of gauges within the specified index range from the registry.\n @param startIndex The starting index (inclusive) for retrieving gauges from the registry.\n @param endIndex The ending index (exclusive) for retrieving gauges from the registry.\n @return An array of IChildChainGauge containing the gauges within the specified index range."},"functionSelector":"77b8883a","id":14268,"implemented":true,"kind":"function","modifiers":[],"name":"getGauges","nodeType":"FunctionDefinition","parameters":{"id":14203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14200,"mutability":"mutable","name":"startIndex","nodeType":"VariableDeclaration","scope":14268,"src":"4666:18:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14199,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14202,"mutability":"mutable","name":"endIndex","nodeType":"VariableDeclaration","scope":14268,"src":"4686:16:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14201,"name":"uint256","nodeType":"ElementaryTypeName","src":"4686:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4665:38:86"},"returnParameters":{"id":14207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14206,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14268,"src":"4727:25:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_memory_ptr","typeString":"contract IChildChainGauge[]"},"typeName":{"baseType":{"id":14204,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"4727:16:86","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":14205,"nodeType":"ArrayTypeName","src":"4727:18:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IChildChainGauge_$364_$dyn_storage_ptr","typeString":"contract IChildChainGauge[]"}},"visibility":"internal"}],"src":"4726:27:86"},"scope":14269,"src":"4647:535:86","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14270,"src":"1440:3744:86"}],"src":"688:4497:86"},"id":86},"contracts/gauges/ChildChainGaugeRewardHelper.sol":{"ast":{"absolutePath":"contracts/gauges/ChildChainGaugeRewardHelper.sol","exportedSymbols":{"ChildChainGaugeRewardHelper":[14370]},"id":14371,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14271,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:87"},{"id":14272,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:87"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol","id":14273,"nodeType":"ImportDirective","scope":14371,"sourceUnit":1206,"src":"747:87:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol","id":14274,"nodeType":"ImportDirective","scope":14371,"sourceUnit":463,"src":"835:89:87","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":14275,"nodeType":"StructuredDocumentation","src":"926:282:87","text":" @title ChildChainGaugeRewardHelper\n @author Balancer Labs\n @notice Helper contract which allows claiming rewards from many RewardsOnlyGauges in a single transaction.\n This contract manually triggers an update to the gauges' streamers as a workaround for the gauge ."},"fullyImplemented":true,"id":14370,"linearizedBaseContracts":[14370],"name":"ChildChainGaugeRewardHelper","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"ff98f88d","id":14278,"mutability":"constant","name":"CLAIM_FREQUENCY","nodeType":"VariableDeclaration","scope":14370,"src":"1252:46:87","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14276,"name":"uint256","nodeType":"ElementaryTypeName","src":"1252:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33363030","id":14277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1294:4:87","typeDescriptions":{"typeIdentifier":"t_rational_3600_by_1","typeString":"int_const 3600"},"value":"3600"},"visibility":"public"},{"body":{"id":14303,"nodeType":"Block","src":"2023:111:87","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14290,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14281,"src":"2033:5:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":14292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reward_contract","nodeType":"MemberAccess","referencedDeclaration":1188,"src":"2033:21:87","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IChildChainStreamer_$462_$","typeString":"function () view external returns (contract IChildChainStreamer)"}},"id":14293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2033:23:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"id":14294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"get_reward","nodeType":"MemberAccess","referencedDeclaration":445,"src":"2033:34:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":14295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2033:36:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14296,"nodeType":"ExpressionStatement","src":"2033:36:87"},{"expression":{"arguments":[{"id":14299,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14283,"src":"2115:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14300,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14285,"src":"2121:5:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14297,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14281,"src":"2086:5:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":14298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"claimable_reward_write","nodeType":"MemberAccess","referencedDeclaration":1162,"src":"2086:28:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) external returns (uint256)"}},"id":14301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2086:41:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14289,"id":14302,"nodeType":"Return","src":"2079:48:87"}]},"documentation":{"id":14279,"nodeType":"StructuredDocumentation","src":"1305:575:87","text":" @notice Returns the amount of ERC20 token `token` on RewardsOnlyGauge `gauge` claimable by address `user`.\n @dev This function cannot be marked `view` as it updates the gauge's state (not possible in a view context).\n Offchain users attempting to read from this function should manually perform a static call or modify the abi.\n @param gauge - The address of the RewardsOnlyGauge for which to query.\n @param user - The address of the user for which to query.\n @param token - The address of the reward token for which to query."},"functionSelector":"5db74949","id":14304,"implemented":true,"kind":"function","modifiers":[],"name":"getPendingRewards","nodeType":"FunctionDefinition","parameters":{"id":14286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14281,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14304,"src":"1921:23:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},"typeName":{"id":14280,"name":"IRewardsOnlyGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1205,"src":"1921:17:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"visibility":"internal"},{"constant":false,"id":14283,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":14304,"src":"1954:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14282,"name":"address","nodeType":"ElementaryTypeName","src":"1954:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14285,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":14304,"src":"1976:13:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14284,"name":"address","nodeType":"ElementaryTypeName","src":"1976:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1911:84:87"},"returnParameters":{"id":14289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14288,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14304,"src":"2014:7:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14287,"name":"uint256","nodeType":"ElementaryTypeName","src":"2014:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2013:9:87"},"scope":14370,"src":"1885:249:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14317,"nodeType":"Block","src":"2481:52:87","statements":[{"expression":{"arguments":[{"id":14313,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14307,"src":"2514:5:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},{"id":14314,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14309,"src":"2521:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14312,"name":"_claimRewardsFromGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14369,"src":"2491:22:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IRewardsOnlyGauge_$1205_$_t_address_$returns$__$","typeString":"function (contract IRewardsOnlyGauge,address)"}},"id":14315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2491:35:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14316,"nodeType":"ExpressionStatement","src":"2491:35:87"}]},"documentation":{"id":14305,"nodeType":"StructuredDocumentation","src":"2140:257:87","text":" @notice Claims pending rewards on RewardsOnlyGauge `gauge` for account `user`.\n @param gauge - The address of the RewardsOnlyGauge from which to claim rewards.\n @param user - The address of the user for which to claim rewards."},"functionSelector":"71d5065c","id":14318,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewardsFromGauge","nodeType":"FunctionDefinition","parameters":{"id":14310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14307,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14318,"src":"2433:23:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},"typeName":{"id":14306,"name":"IRewardsOnlyGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1205,"src":"2433:17:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"visibility":"internal"},{"constant":false,"id":14309,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":14318,"src":"2458:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14308,"name":"address","nodeType":"ElementaryTypeName","src":"2458:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2432:39:87"},"returnParameters":{"id":14311,"nodeType":"ParameterList","parameters":[],"src":"2481:0:87"},"scope":14370,"src":"2402:131:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14347,"nodeType":"Block","src":"2911:124:87","statements":[{"body":{"id":14345,"nodeType":"Block","src":"2965:64:87","statements":[{"expression":{"arguments":[{"baseExpression":{"id":14339,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"3002:6:87","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRewardsOnlyGauge_$1205_$dyn_calldata_ptr","typeString":"contract IRewardsOnlyGauge[] calldata"}},"id":14341,"indexExpression":{"id":14340,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14328,"src":"3009:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3002:9:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},{"id":14342,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14324,"src":"3013:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14338,"name":"_claimRewardsFromGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14369,"src":"2979:22:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IRewardsOnlyGauge_$1205_$_t_address_$returns$__$","typeString":"function (contract IRewardsOnlyGauge,address)"}},"id":14343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2979:39:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14344,"nodeType":"ExpressionStatement","src":"2979:39:87"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14331,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14328,"src":"2941:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":14332,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"2945:6:87","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRewardsOnlyGauge_$1205_$dyn_calldata_ptr","typeString":"contract IRewardsOnlyGauge[] calldata"}},"id":14333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2945:13:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2941:17:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14346,"initializationExpression":{"assignments":[14328],"declarations":[{"constant":false,"id":14328,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":14346,"src":"2926:9:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14327,"name":"uint256","nodeType":"ElementaryTypeName","src":"2926:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14330,"initialValue":{"hexValue":"30","id":14329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2938:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2926:13:87"},"loopExpression":{"expression":{"id":14336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2960:3:87","subExpression":{"id":14335,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14328,"src":"2960:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14337,"nodeType":"ExpressionStatement","src":"2960:3:87"},"nodeType":"ForStatement","src":"2921:108:87"}]},"documentation":{"id":14319,"nodeType":"StructuredDocumentation","src":"2539:275:87","text":" @notice Claims pending rewards on a list of RewardsOnlyGauges `gauges` for account `user`.\n @param gauges - An array of address of RewardsOnlyGauges from which to claim rewards.\n @param user - The address of the user for which to claim rewards."},"functionSelector":"c2ec33b5","id":14348,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewardsFromGauges","nodeType":"FunctionDefinition","parameters":{"id":14325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14322,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":14348,"src":"2851:35:87","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRewardsOnlyGauge_$1205_$dyn_calldata_ptr","typeString":"contract IRewardsOnlyGauge[]"},"typeName":{"baseType":{"id":14320,"name":"IRewardsOnlyGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1205,"src":"2851:17:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":14321,"nodeType":"ArrayTypeName","src":"2851:19:87","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRewardsOnlyGauge_$1205_$dyn_storage_ptr","typeString":"contract IRewardsOnlyGauge[]"}},"visibility":"internal"},{"constant":false,"id":14324,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":14348,"src":"2888:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14323,"name":"address","nodeType":"ElementaryTypeName","src":"2888:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2850:51:87"},"returnParameters":{"id":14326,"nodeType":"ParameterList","parameters":[],"src":"2911:0:87"},"scope":14370,"src":"2819:216:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14368,"nodeType":"Block","src":"3148:147:87","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14355,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14350,"src":"3217:5:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":14357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reward_contract","nodeType":"MemberAccess","referencedDeclaration":1188,"src":"3217:21:87","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IChildChainStreamer_$462_$","typeString":"function () view external returns (contract IChildChainStreamer)"}},"id":14358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3217:23:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"id":14359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"get_reward","nodeType":"MemberAccess","referencedDeclaration":445,"src":"3217:34:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":14360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3217:36:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14361,"nodeType":"ExpressionStatement","src":"3217:36:87"},{"expression":{"arguments":[{"id":14365,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14352,"src":"3283:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14362,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14350,"src":"3263:5:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":14364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"claim_rewards","nodeType":"MemberAccess","referencedDeclaration":1123,"src":"3263:19:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":14366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3263:25:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14367,"nodeType":"ExpressionStatement","src":"3263:25:87"}]},"id":14369,"implemented":true,"kind":"function","modifiers":[],"name":"_claimRewardsFromGauge","nodeType":"FunctionDefinition","parameters":{"id":14353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14350,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14369,"src":"3100:23:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"},"typeName":{"id":14349,"name":"IRewardsOnlyGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1205,"src":"3100:17:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"visibility":"internal"},{"constant":false,"id":14352,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":14369,"src":"3125:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14351,"name":"address","nodeType":"ElementaryTypeName","src":"3125:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3099:39:87"},"returnParameters":{"id":14354,"nodeType":"ParameterList","parameters":[],"src":"3148:0:87"},"scope":14370,"src":"3068:227:87","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":14371,"src":"1209:2088:87"}],"src":"688:2610:87"},"id":87},"contracts/gauges/ChildChainLiquidityGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/ChildChainLiquidityGaugeFactory.sol","exportedSymbols":{"ChildChainLiquidityGaugeFactory":[14622]},"id":14623,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14372,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:88"},{"id":14373,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:88"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol","id":14374,"nodeType":"ImportDirective","scope":14623,"sourceUnit":435,"src":"747:102:88","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","id":14375,"nodeType":"ImportDirective","scope":14623,"sourceUnit":929,"src":"850:85:88","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":14376,"nodeType":"ImportDirective","scope":14623,"sourceUnit":3052,"src":"936:65:88","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol","id":14377,"nodeType":"ImportDirective","scope":14623,"sourceUnit":5931,"src":"1003:76:88","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14378,"name":"IChildChainLiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":434,"src":"1125:32:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainLiquidityGaugeFactory_$434","typeString":"contract IChildChainLiquidityGaugeFactory"}},"id":14379,"nodeType":"InheritanceSpecifier","src":"1125:32:88"}],"contractDependencies":[434,941],"contractKind":"contract","fullyImplemented":true,"id":14622,"linearizedBaseContracts":[14622,434,941],"name":"ChildChainLiquidityGaugeFactory","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":14389,"mutability":"constant","name":"_CLAIM_SIG","nodeType":"VariableDeclaration","scope":14622,"src":"1362:75:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14380,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1362:7:88","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":14388,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"6765745f7265776172642829","id":14382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1410:14:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_1afe22a60e4e4b5fa7561dbfb52f5a766eba86c52b84c4946364e82fa9056a57","typeString":"literal_string \"get_reward()\""},"value":"get_reward()"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1afe22a60e4e4b5fa7561dbfb52f5a766eba86c52b84c4946364e82fa9056a57","typeString":"literal_string \"get_reward()\""}],"id":14381,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1400:9:88","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1400:25:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"id":14386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3238","id":14384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1430:2:88","typeDescriptions":{"typeIdentifier":"t_rational_28_by_1","typeString":"int_const 28"},"value":"28"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":14385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1435:1:88","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1430:6:88","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"}}],"id":14387,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1429:8:88","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"}},"src":"1400:37:88","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":14391,"mutability":"immutable","name":"_gaugeImplementation","nodeType":"VariableDeclaration","scope":14622,"src":"1444:54:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"},"typeName":{"id":14390,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"1444:15:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"visibility":"private"},{"constant":false,"id":14393,"mutability":"immutable","name":"_childChainStreamerImplementation","nodeType":"VariableDeclaration","scope":14622,"src":"1504:71:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":14392,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"1504:19:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"private"},{"constant":false,"id":14397,"mutability":"mutable","name":"_isGaugeFromFactory","nodeType":"VariableDeclaration","scope":14622,"src":"1582:52:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":14396,"keyType":{"id":14394,"name":"address","nodeType":"ElementaryTypeName","src":"1590:7:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1582:24:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":14395,"name":"bool","nodeType":"ElementaryTypeName","src":"1601:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"constant":false,"id":14401,"mutability":"mutable","name":"_isStreamerFromFactory","nodeType":"VariableDeclaration","scope":14622,"src":"1640:55:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":14400,"keyType":{"id":14398,"name":"address","nodeType":"ElementaryTypeName","src":"1648:7:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1640:24:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":14399,"name":"bool","nodeType":"ElementaryTypeName","src":"1659:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"constant":false,"id":14405,"mutability":"mutable","name":"_poolGauge","nodeType":"VariableDeclaration","scope":14622,"src":"1701:46:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":14404,"keyType":{"id":14402,"name":"address","nodeType":"ElementaryTypeName","src":"1709:7:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1701:27:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":14403,"name":"address","nodeType":"ElementaryTypeName","src":"1720:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":14409,"mutability":"mutable","name":"_gaugeStreamer","nodeType":"VariableDeclaration","scope":14622,"src":"1753:50:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":14408,"keyType":{"id":14406,"name":"address","nodeType":"ElementaryTypeName","src":"1761:7:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1753:27:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":14407,"name":"address","nodeType":"ElementaryTypeName","src":"1772:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"body":{"id":14424,"nodeType":"Block","src":"1885:109:88","statements":[{"expression":{"id":14418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14416,"name":"_gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14391,"src":"1895:20:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14417,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14411,"src":"1918:5:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"src":"1895:28:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"id":14419,"nodeType":"ExpressionStatement","src":"1895:28:88"},{"expression":{"id":14422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14420,"name":"_childChainStreamerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"1933:33:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14421,"name":"childChainStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14413,"src":"1969:18:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"src":"1933:54:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"id":14423,"nodeType":"ExpressionStatement","src":"1933:54:88"}]},"id":14425,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14411,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14425,"src":"1822:21:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"},"typeName":{"id":14410,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"1822:15:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"visibility":"internal"},{"constant":false,"id":14413,"mutability":"mutable","name":"childChainStreamer","nodeType":"VariableDeclaration","scope":14425,"src":"1845:38:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":14412,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"1845:19:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"internal"}],"src":"1821:63:88"},"returnParameters":{"id":14415,"nodeType":"ParameterList","parameters":[],"src":"1885:0:88"},"scope":14622,"src":"1810:184:88","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[387],"body":{"id":14434,"nodeType":"Block","src":"2184:44:88","statements":[{"expression":{"id":14432,"name":"_gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14391,"src":"2201:20:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"functionReturnParameters":14431,"id":14433,"nodeType":"Return","src":"2194:27:88"}]},"documentation":{"id":14426,"nodeType":"StructuredDocumentation","src":"2000:96:88","text":" @notice Returns the address of the implementation used for gauge deployments."},"functionSelector":"39312dee","id":14435,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeImplementation","nodeType":"FunctionDefinition","overrides":{"id":14428,"nodeType":"OverrideSpecifier","overrides":[],"src":"2149:8:88"},"parameters":{"id":14427,"nodeType":"ParameterList","parameters":[],"src":"2132:2:88"},"returnParameters":{"id":14431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14430,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14435,"src":"2167:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"},"typeName":{"id":14429,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"2167:15:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"visibility":"internal"}],"src":"2166:17:88"},"scope":14622,"src":"2101:127:88","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[393],"body":{"id":14444,"nodeType":"Block","src":"2438:57:88","statements":[{"expression":{"id":14442,"name":"_childChainStreamerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"2455:33:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"functionReturnParameters":14441,"id":14443,"nodeType":"Return","src":"2448:40:88"}]},"documentation":{"id":14436,"nodeType":"StructuredDocumentation","src":"2234:99:88","text":" @notice Returns the address of the implementation used for streamer deployments."},"functionSelector":"f9e0a13e","id":14445,"implemented":true,"kind":"function","modifiers":[],"name":"getChildChainStreamerImplementation","nodeType":"FunctionDefinition","overrides":{"id":14438,"nodeType":"OverrideSpecifier","overrides":[],"src":"2399:8:88"},"parameters":{"id":14437,"nodeType":"ParameterList","parameters":[],"src":"2382:2:88"},"returnParameters":{"id":14441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14440,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14445,"src":"2417:19:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"},"typeName":{"id":14439,"name":"IChildChainStreamer","nodeType":"UserDefinedTypeName","referencedDeclaration":462,"src":"2417:19:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"visibility":"internal"}],"src":"2416:21:88"},"scope":14622,"src":"2338:157:88","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[401],"body":{"id":14460,"nodeType":"Block","src":"2669:57:88","statements":[{"expression":{"arguments":[{"baseExpression":{"id":14455,"name":"_poolGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14405,"src":"2702:10:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":14457,"indexExpression":{"id":14456,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14448,"src":"2713:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2702:16:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14454,"name":"ILiquidityGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"2686:15:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILiquidityGauge_$928_$","typeString":"type(contract ILiquidityGauge)"}},"id":14458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2686:33:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"functionReturnParameters":14453,"id":14459,"nodeType":"Return","src":"2679:40:88"}]},"documentation":{"id":14446,"nodeType":"StructuredDocumentation","src":"2501:80:88","text":" @notice Returns the address of the gauge belonging to `pool`."},"functionSelector":"a8ea6875","id":14461,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolGauge","nodeType":"FunctionDefinition","overrides":{"id":14450,"nodeType":"OverrideSpecifier","overrides":[],"src":"2634:8:88"},"parameters":{"id":14449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14448,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":14461,"src":"2608:12:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14447,"name":"address","nodeType":"ElementaryTypeName","src":"2608:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2607:14:88"},"returnParameters":{"id":14453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14452,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14461,"src":"2652:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"},"typeName":{"id":14451,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"2652:15:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"visibility":"internal"}],"src":"2651:17:88"},"scope":14622,"src":"2586:140:88","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[940],"body":{"id":14474,"nodeType":"Block","src":"2897:50:88","statements":[{"expression":{"baseExpression":{"id":14470,"name":"_isGaugeFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14397,"src":"2914:19:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":14472,"indexExpression":{"id":14471,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14464,"src":"2934:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2914:26:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14469,"id":14473,"nodeType":"Return","src":"2907:33:88"}]},"documentation":{"id":14462,"nodeType":"StructuredDocumentation","src":"2732:79:88","text":" @notice Returns true if `gauge` was created by this factory."},"functionSelector":"ce3cc8bd","id":14475,"implemented":true,"kind":"function","modifiers":[],"name":"isGaugeFromFactory","nodeType":"FunctionDefinition","overrides":{"id":14466,"nodeType":"OverrideSpecifier","overrides":[],"src":"2873:8:88"},"parameters":{"id":14465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14464,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14475,"src":"2844:13:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14463,"name":"address","nodeType":"ElementaryTypeName","src":"2844:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2843:15:88"},"returnParameters":{"id":14469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14468,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14475,"src":"2891:4:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14467,"name":"bool","nodeType":"ElementaryTypeName","src":"2891:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2890:6:88"},"scope":14622,"src":"2816:131:88","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[409],"body":{"id":14488,"nodeType":"Block","src":"3122:45:88","statements":[{"expression":{"baseExpression":{"id":14484,"name":"_gaugeStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14409,"src":"3139:14:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":14486,"indexExpression":{"id":14485,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14478,"src":"3154:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3139:21:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":14483,"id":14487,"nodeType":"Return","src":"3132:28:88"}]},"documentation":{"id":14476,"nodeType":"StructuredDocumentation","src":"2953:84:88","text":" @notice Returns the address of the streamer belonging to `gauge`."},"functionSelector":"90b20087","id":14489,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeStreamer","nodeType":"FunctionDefinition","overrides":{"id":14480,"nodeType":"OverrideSpecifier","overrides":[],"src":"3095:8:88"},"parameters":{"id":14479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14478,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14489,"src":"3068:13:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14477,"name":"address","nodeType":"ElementaryTypeName","src":"3068:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3067:15:88"},"returnParameters":{"id":14483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14482,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14489,"src":"3113:7:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14481,"name":"address","nodeType":"ElementaryTypeName","src":"3113:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3112:9:88"},"scope":14622,"src":"3042:125:88","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[417],"body":{"id":14502,"nodeType":"Block","src":"3347:56:88","statements":[{"expression":{"baseExpression":{"id":14498,"name":"_isStreamerFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14401,"src":"3364:22:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":14500,"indexExpression":{"id":14499,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14492,"src":"3387:8:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3364:32:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14497,"id":14501,"nodeType":"Return","src":"3357:39:88"}]},"documentation":{"id":14490,"nodeType":"StructuredDocumentation","src":"3173:82:88","text":" @notice Returns true if `streamer` was created by this factory."},"functionSelector":"cbda9327","id":14503,"implemented":true,"kind":"function","modifiers":[],"name":"isStreamerFromFactory","nodeType":"FunctionDefinition","overrides":{"id":14494,"nodeType":"OverrideSpecifier","overrides":[],"src":"3323:8:88"},"parameters":{"id":14493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14492,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":14503,"src":"3291:16:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14491,"name":"address","nodeType":"ElementaryTypeName","src":"3291:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3290:18:88"},"returnParameters":{"id":14497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14496,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14503,"src":"3341:4:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14495,"name":"bool","nodeType":"ElementaryTypeName","src":"3341:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3340:6:88"},"scope":14622,"src":"3260:143:88","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[425],"body":{"id":14518,"nodeType":"Block","src":"3572:59:88","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":14513,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14506,"src":"3607:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14512,"name":"IRewardsOnlyGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"3589:17:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRewardsOnlyGauge_$1205_$","typeString":"type(contract IRewardsOnlyGauge)"}},"id":14514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3589:24:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":14515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"lp_token","nodeType":"MemberAccess","referencedDeclaration":1183,"src":"3589:33:88","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2447_$","typeString":"function () view external returns (contract IERC20)"}},"id":14516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3589:35:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"functionReturnParameters":14511,"id":14517,"nodeType":"Return","src":"3582:42:88"}]},"documentation":{"id":14504,"nodeType":"StructuredDocumentation","src":"3409:81:88","text":" @notice Returns the address of the pool which `gauge` belongs."},"functionSelector":"744a65dd","id":14519,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugePool","nodeType":"FunctionDefinition","overrides":{"id":14508,"nodeType":"OverrideSpecifier","overrides":[],"src":"3546:8:88"},"parameters":{"id":14507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14506,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14519,"src":"3517:13:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14505,"name":"address","nodeType":"ElementaryTypeName","src":"3517:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3516:15:88"},"returnParameters":{"id":14511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14510,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14519,"src":"3564:6:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":14509,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3564:6:88","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"3563:8:88"},"scope":14622,"src":"3495:136:88","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[433],"body":{"id":14537,"nodeType":"Block","src":"3813:69:88","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":14532,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14522,"src":"3868:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14531,"name":"getPoolGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14461,"src":"3855:12:88","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_ILiquidityGauge_$928_$","typeString":"function (address) view returns (contract ILiquidityGauge)"}},"id":14533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3855:18:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}],"id":14530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3847:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14529,"name":"address","nodeType":"ElementaryTypeName","src":"3847:7:88","typeDescriptions":{}}},"id":14534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3847:27:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14528,"name":"getGaugeStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14489,"src":"3830:16:88","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":14535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3830:45:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":14527,"id":14536,"nodeType":"Return","src":"3823:52:88"}]},"documentation":{"id":14520,"nodeType":"StructuredDocumentation","src":"3637:91:88","text":" @notice Returns the address of the streamer belonging to `pool`'s gauge."},"functionSelector":"8a4ffeb0","id":14538,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolStreamer","nodeType":"FunctionDefinition","overrides":{"id":14524,"nodeType":"OverrideSpecifier","overrides":[],"src":"3786:8:88"},"parameters":{"id":14523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14522,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":14538,"src":"3758:12:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14521,"name":"address","nodeType":"ElementaryTypeName","src":"3758:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3757:14:88"},"returnParameters":{"id":14527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14526,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14538,"src":"3804:7:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14525,"name":"address","nodeType":"ElementaryTypeName","src":"3804:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3803:9:88"},"scope":14622,"src":"3733:149:88","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":14620,"nodeType":"Block","src":"4520:570:88","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14547,"name":"_poolGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14405,"src":"4538:10:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":14549,"indexExpression":{"id":14548,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14541,"src":"4549:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4538:16:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":14552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4566:1:88","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":14551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4558:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14550,"name":"address","nodeType":"ElementaryTypeName","src":"4558:7:88","typeDescriptions":{}}},"id":14553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4558:10:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4538:30:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520616c726561647920657869737473","id":14555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4570:22:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_0ff732be99ebae4ab76694efc15798dda1f02cffde7b6a10393e397e60f38cb6","typeString":"literal_string \"Gauge already exists\""},"value":"Gauge already exists"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0ff732be99ebae4ab76694efc15798dda1f02cffde7b6a10393e397e60f38cb6","typeString":"literal_string \"Gauge already exists\""}],"id":14546,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4530:7:88","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4530:63:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14557,"nodeType":"ExpressionStatement","src":"4530:63:88"},{"assignments":[14559],"declarations":[{"constant":false,"id":14559,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14620,"src":"4604:13:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14558,"name":"address","nodeType":"ElementaryTypeName","src":"4604:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14567,"initialValue":{"arguments":[{"arguments":[{"id":14564,"name":"_gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14391,"src":"4641:20:88","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}],"id":14563,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4633:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14562,"name":"address","nodeType":"ElementaryTypeName","src":"4633:7:88","typeDescriptions":{}}},"id":14565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4633:29:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14560,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5930,"src":"4620:6:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$5930_$","typeString":"type(library Clones)"}},"id":14561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"clone","nodeType":"MemberAccess","referencedDeclaration":5873,"src":"4620:12:88","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_address_$","typeString":"function (address) returns (address)"}},"id":14566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4620:43:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4604:59:88"},{"assignments":[14569],"declarations":[{"constant":false,"id":14569,"mutability":"mutable","name":"streamer","nodeType":"VariableDeclaration","scope":14620,"src":"4673:16:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14568,"name":"address","nodeType":"ElementaryTypeName","src":"4673:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14577,"initialValue":{"arguments":[{"arguments":[{"id":14574,"name":"_childChainStreamerImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"4713:33:88","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}],"id":14573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4705:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14572,"name":"address","nodeType":"ElementaryTypeName","src":"4705:7:88","typeDescriptions":{}}},"id":14575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4705:42:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14570,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5930,"src":"4692:6:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$5930_$","typeString":"type(library Clones)"}},"id":14571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"clone","nodeType":"MemberAccess","referencedDeclaration":5873,"src":"4692:12:88","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_address_$","typeString":"function (address) returns (address)"}},"id":14576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4692:56:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4673:75:88"},{"expression":{"arguments":[{"id":14582,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14559,"src":"4800:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":14579,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14569,"src":"4779:8:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14578,"name":"IChildChainStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"4759:19:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChildChainStreamer_$462_$","typeString":"type(contract IChildChainStreamer)"}},"id":14580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4759:29:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainStreamer_$462","typeString":"contract IChildChainStreamer"}},"id":14581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":442,"src":"4759:40:88","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":14583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4759:47:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14584,"nodeType":"ExpressionStatement","src":"4759:47:88"},{"expression":{"arguments":[{"id":14589,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14541,"src":"4852:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14590,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14569,"src":"4858:8:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14591,"name":"_CLAIM_SIG","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14389,"src":"4868:10:88","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":14586,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14559,"src":"4834:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14585,"name":"IRewardsOnlyGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"4816:17:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRewardsOnlyGauge_$1205_$","typeString":"type(contract IRewardsOnlyGauge)"}},"id":14587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4816:24:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRewardsOnlyGauge_$1205","typeString":"contract IRewardsOnlyGauge"}},"id":14588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":1178,"src":"4816:35:88","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,address,bytes32) external"}},"id":14592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4816:63:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14593,"nodeType":"ExpressionStatement","src":"4816:63:88"},{"expression":{"id":14598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14594,"name":"_isGaugeFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14397,"src":"4890:19:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":14596,"indexExpression":{"id":14595,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14559,"src":"4910:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4890:26:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":14597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4919:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4890:33:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14599,"nodeType":"ExpressionStatement","src":"4890:33:88"},{"expression":{"id":14604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14600,"name":"_poolGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14405,"src":"4933:10:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":14602,"indexExpression":{"id":14601,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14541,"src":"4944:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4933:16:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14603,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14559,"src":"4952:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4933:24:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14605,"nodeType":"ExpressionStatement","src":"4933:24:88"},{"expression":{"id":14610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14606,"name":"_gaugeStreamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14409,"src":"4967:14:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":14608,"indexExpression":{"id":14607,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14559,"src":"4982:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4967:21:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14609,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14569,"src":"4991:8:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4967:32:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14611,"nodeType":"ExpressionStatement","src":"4967:32:88"},{"eventCall":{"arguments":[{"id":14613,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14559,"src":"5038:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14614,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14541,"src":"5045:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14615,"name":"streamer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14569,"src":"5051:8:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14612,"name":"RewardsOnlyGaugeCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":381,"src":"5014:23:88","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address)"}},"id":14616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5014:46:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14617,"nodeType":"EmitStatement","src":"5009:51:88"},{"expression":{"id":14618,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14559,"src":"5078:5:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":14545,"id":14619,"nodeType":"Return","src":"5071:12:88"}]},"documentation":{"id":14539,"nodeType":"StructuredDocumentation","src":"3888:570:88","text":" @notice Deploys a new gauge for a Balancer pool.\n @dev As anyone can register arbitrary Balancer pools with the Vault,\n it's impossible to prove onchain that `pool` is a \"valid\" deployment.\n Care must be taken to ensure that gauges deployed from this factory are\n suitable before they are added to the GaugeController.\n This factory disallows deploying multiple gauges for a single pool.\n @param pool The address of the pool for which to deploy a gauge\n @return The address of the deployed gauge"},"functionSelector":"9ed93318","id":14621,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":14542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14541,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":14621,"src":"4479:12:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14540,"name":"address","nodeType":"ElementaryTypeName","src":"4479:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4478:14:88"},"returnParameters":{"id":14545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14544,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14621,"src":"4511:7:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14543,"name":"address","nodeType":"ElementaryTypeName","src":"4511:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4510:9:88"},"scope":14622,"src":"4463:627:88","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":14623,"src":"1081:4011:88"}],"src":"688:4405:88"},"id":88},"contracts/gauges/StakelessGauge.sol":{"ast":{"absolutePath":"contracts/gauges/StakelessGauge.sol","exportedSymbols":{"StakelessGauge":[15196]},"id":15197,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14624,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:89"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":14625,"nodeType":"ImportDirective","scope":15197,"sourceUnit":2448,"src":"713:87:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","id":14626,"nodeType":"ImportDirective","scope":15197,"sourceUnit":328,"src":"801:89:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","id":14627,"nodeType":"ImportDirective","scope":15197,"sourceUnit":822,"src":"891:86:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol","id":14628,"nodeType":"ImportDirective","scope":15197,"sourceUnit":952,"src":"978:92:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol","id":14629,"nodeType":"ImportDirective","scope":15197,"sourceUnit":1240,"src":"1071:85:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","id":14630,"nodeType":"ImportDirective","scope":15197,"sourceUnit":5684,"src":"1158:66:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":14631,"nodeType":"ImportDirective","scope":15197,"sourceUnit":7188,"src":"1225:85:89","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14632,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"1348:15:89","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":14633,"nodeType":"InheritanceSpecifier","src":"1348:15:89"},{"baseName":{"id":14634,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"1365:15:89","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":14635,"nodeType":"InheritanceSpecifier","src":"1365:15:89"}],"contractDependencies":[928,1239,7187],"contractKind":"contract","fullyImplemented":false,"id":15196,"linearizedBaseContracts":[15196,7187,1239,928],"name":"StakelessGauge","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"9f867671","id":14638,"mutability":"constant","name":"MAX_RELATIVE_WEIGHT_CAP","nodeType":"VariableDeclaration","scope":15196,"src":"1387:54:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14636,"name":"uint256","nodeType":"ElementaryTypeName","src":"1387:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":14637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1437:4:89","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"public"},{"constant":false,"id":14640,"mutability":"immutable","name":"_balToken","nodeType":"VariableDeclaration","scope":15196,"src":"1448:35:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":14639,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1448:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":14642,"mutability":"immutable","name":"_tokenAdmin","nodeType":"VariableDeclaration","scope":15196,"src":"1489:49:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"},"typeName":{"id":14641,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":327,"src":"1489:19:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"visibility":"private"},{"constant":false,"id":14644,"mutability":"immutable","name":"_minter","nodeType":"VariableDeclaration","scope":15196,"src":"1544:48:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":14643,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1544:22:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"private"},{"constant":false,"id":14646,"mutability":"immutable","name":"_gaugeController","nodeType":"VariableDeclaration","scope":15196,"src":"1598:51:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":14645,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1598:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"private"},{"constant":false,"id":14648,"mutability":"immutable","name":"_authorizerAdaptor","nodeType":"VariableDeclaration","scope":15196,"src":"1655:55:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":14647,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1655:18:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"private"},{"anonymous":false,"id":14654,"name":"Checkpoint","nodeType":"EventDefinition","parameters":{"id":14653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14650,"indexed":true,"mutability":"mutable","name":"periodTime","nodeType":"VariableDeclaration","scope":14654,"src":"1734:26:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14649,"name":"uint256","nodeType":"ElementaryTypeName","src":"1734:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14652,"indexed":false,"mutability":"mutable","name":"periodEmissions","nodeType":"VariableDeclaration","scope":14654,"src":"1762:23:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14651,"name":"uint256","nodeType":"ElementaryTypeName","src":"1762:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1733:53:89"},"src":"1717:70:89"},{"constant":false,"id":14656,"mutability":"immutable","name":"_RATE_REDUCTION_TIME","nodeType":"VariableDeclaration","scope":15196,"src":"1835:46:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14655,"name":"uint256","nodeType":"ElementaryTypeName","src":"1835:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14658,"mutability":"immutable","name":"_RATE_REDUCTION_COEFFICIENT","nodeType":"VariableDeclaration","scope":15196,"src":"1887:53:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14657,"name":"uint256","nodeType":"ElementaryTypeName","src":"1887:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14660,"mutability":"immutable","name":"_RATE_DENOMINATOR","nodeType":"VariableDeclaration","scope":15196,"src":"1946:43:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14659,"name":"uint256","nodeType":"ElementaryTypeName","src":"1946:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14662,"mutability":"mutable","name":"_rate","nodeType":"VariableDeclaration","scope":15196,"src":"2037:21:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14661,"name":"uint256","nodeType":"ElementaryTypeName","src":"2037:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14664,"mutability":"mutable","name":"_period","nodeType":"VariableDeclaration","scope":15196,"src":"2064:23:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14663,"name":"uint256","nodeType":"ElementaryTypeName","src":"2064:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14666,"mutability":"mutable","name":"_startEpochTime","nodeType":"VariableDeclaration","scope":15196,"src":"2093:31:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14665,"name":"uint256","nodeType":"ElementaryTypeName","src":"2093:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14668,"mutability":"mutable","name":"_emissions","nodeType":"VariableDeclaration","scope":15196,"src":"2131:26:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14667,"name":"uint256","nodeType":"ElementaryTypeName","src":"2131:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14670,"mutability":"mutable","name":"_isKilled","nodeType":"VariableDeclaration","scope":15196,"src":"2163:22:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14669,"name":"bool","nodeType":"ElementaryTypeName","src":"2163:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"constant":false,"id":14672,"mutability":"mutable","name":"_relativeWeightCap","nodeType":"VariableDeclaration","scope":15196,"src":"2192:34:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14671,"name":"uint256","nodeType":"ElementaryTypeName","src":"2192:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":14745,"nodeType":"Block","src":"2276:811:89","statements":[{"assignments":[14678],"declarations":[{"constant":false,"id":14678,"mutability":"mutable","name":"tokenAdmin","nodeType":"VariableDeclaration","scope":14745,"src":"2286:30:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"},"typeName":{"id":14677,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":327,"src":"2286:19:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"visibility":"internal"}],"id":14684,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14680,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14674,"src":"2339:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"id":14681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getBalancerTokenAdmin","nodeType":"MemberAccess","referencedDeclaration":864,"src":"2339:28:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IBalancerTokenAdmin_$327_$","typeString":"function () view external returns (contract IBalancerTokenAdmin)"}},"id":14682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2339:30:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}],"id":14679,"name":"IBalancerTokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"2319:19:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBalancerTokenAdmin_$327_$","typeString":"type(contract IBalancerTokenAdmin)"}},"id":14683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2319:51:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"nodeType":"VariableDeclarationStatement","src":"2286:84:89"},{"assignments":[14686],"declarations":[{"constant":false,"id":14686,"mutability":"mutable","name":"balToken","nodeType":"VariableDeclaration","scope":14745,"src":"2380:15:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":14685,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2380:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"id":14690,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14687,"name":"tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14678,"src":"2398:10:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":14688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getBalancerToken","nodeType":"MemberAccess","referencedDeclaration":306,"src":"2398:27:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IBalancerToken_$274_$","typeString":"function () view external returns (contract IBalancerToken)"}},"id":14689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2398:29:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"nodeType":"VariableDeclarationStatement","src":"2380:47:89"},{"assignments":[14692],"declarations":[{"constant":false,"id":14692,"mutability":"mutable","name":"gaugeController","nodeType":"VariableDeclaration","scope":14745,"src":"2437:32:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":14691,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"2437:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"internal"}],"id":14696,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14693,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14674,"src":"2472:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"id":14694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getGaugeController","nodeType":"MemberAccess","referencedDeclaration":870,"src":"2472:25:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IGaugeController_$821_$","typeString":"function () view external returns (contract IGaugeController)"}},"id":14695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2472:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"nodeType":"VariableDeclarationStatement","src":"2437:62:89"},{"expression":{"id":14699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14697,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2510:9:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14698,"name":"balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14686,"src":"2522:8:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"2510:20:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":14700,"nodeType":"ExpressionStatement","src":"2510:20:89"},{"expression":{"id":14703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14701,"name":"_tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14642,"src":"2540:11:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14702,"name":"tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14678,"src":"2554:10:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"src":"2540:24:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":14704,"nodeType":"ExpressionStatement","src":"2540:24:89"},{"expression":{"id":14707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14705,"name":"_minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"2574:7:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14706,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14674,"src":"2584:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"src":"2574:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"id":14708,"nodeType":"ExpressionStatement","src":"2574:16:89"},{"expression":{"id":14711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14709,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14646,"src":"2600:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14710,"name":"gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14692,"src":"2619:15:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"src":"2600:34:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":14712,"nodeType":"ExpressionStatement","src":"2600:34:89"},{"expression":{"id":14717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14713,"name":"_authorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14648,"src":"2644:18:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14714,"name":"gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14692,"src":"2665:15:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":14715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"admin","nodeType":"MemberAccess","referencedDeclaration":806,"src":"2665:21:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizerAdaptor_$49_$","typeString":"function () view external returns (contract IAuthorizerAdaptor)"}},"id":14716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2665:23:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"src":"2644:44:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":14718,"nodeType":"ExpressionStatement","src":"2644:44:89"},{"expression":{"id":14723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14719,"name":"_RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14656,"src":"2699:20:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14720,"name":"tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14678,"src":"2722:10:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":14721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RATE_REDUCTION_TIME","nodeType":"MemberAccess","referencedDeclaration":290,"src":"2722:30:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":14722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2722:32:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2699:55:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14724,"nodeType":"ExpressionStatement","src":"2699:55:89"},{"expression":{"id":14729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14725,"name":"_RATE_REDUCTION_COEFFICIENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14658,"src":"2764:27:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14726,"name":"tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14678,"src":"2794:10:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":14727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RATE_REDUCTION_COEFFICIENT","nodeType":"MemberAccess","referencedDeclaration":295,"src":"2794:37:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":14728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2794:39:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2764:69:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14730,"nodeType":"ExpressionStatement","src":"2764:69:89"},{"expression":{"id":14735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14731,"name":"_RATE_DENOMINATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14660,"src":"2843:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14732,"name":"tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14678,"src":"2863:10:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":14733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RATE_DENOMINATOR","nodeType":"MemberAccess","referencedDeclaration":300,"src":"2863:27:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":14734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2863:29:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2843:49:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14736,"nodeType":"ExpressionStatement","src":"2843:49:89"},{"expression":{"id":14743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14737,"name":"_period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14664,"src":"3053:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":14740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3068:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14739,"name":"uint256","nodeType":"ElementaryTypeName","src":"3068:7:89","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":14738,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3063:4:89","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3063:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":14742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3063:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3053:27:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14744,"nodeType":"ExpressionStatement","src":"3053:27:89"}]},"id":14746,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14674,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":14746,"src":"2245:29:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":14673,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"2245:22:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"}],"src":"2244:31:89"},"returnParameters":{"id":14676,"nodeType":"ParameterList","parameters":[],"src":"2276:0:89"},"scope":15196,"src":"2233:854:89","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14790,"nodeType":"Block","src":"3213:478:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14752,"name":"_period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14664,"src":"3231:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3242:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3231:12:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c726561647920696e697469616c697a6564","id":14755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3245:21:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0","typeString":"literal_string \"Already initialized\""},"value":"Already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0","typeString":"literal_string \"Already initialized\""}],"id":14751,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3223:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3223:44:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14757,"nodeType":"ExpressionStatement","src":"3223:44:89"},{"assignments":[14759],"declarations":[{"constant":false,"id":14759,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":14790,"src":"3413:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14758,"name":"uint256","nodeType":"ElementaryTypeName","src":"3413:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14763,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14760,"name":"_tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14642,"src":"3428:11:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":14761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"rate","nodeType":"MemberAccess","referencedDeclaration":314,"src":"3428:16:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":14762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3428:18:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3413:33:89"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14765,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14759,"src":"3464:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":14766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3472:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3464:9:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564","id":14768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3475:38:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_c3af94e4df4d68cc54b5719029efd0c3b451a133245658fe212b024c6dfd0ae7","typeString":"literal_string \"BalancerTokenAdmin not yet activated\""},"value":"BalancerTokenAdmin not yet activated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c3af94e4df4d68cc54b5719029efd0c3b451a133245658fe212b024c6dfd0ae7","typeString":"literal_string \"BalancerTokenAdmin not yet activated\""}],"id":14764,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3456:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3456:58:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14770,"nodeType":"ExpressionStatement","src":"3456:58:89"},{"expression":{"id":14773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14771,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14662,"src":"3525:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14772,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14759,"src":"3533:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3525:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14774,"nodeType":"ExpressionStatement","src":"3525:12:89"},{"expression":{"id":14778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14775,"name":"_period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14664,"src":"3547:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":14776,"name":"_currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15035,"src":"3557:14:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":14777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3557:16:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3547:26:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14779,"nodeType":"ExpressionStatement","src":"3547:26:89"},{"expression":{"id":14784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14780,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14666,"src":"3583:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14781,"name":"_tokenAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14642,"src":"3601:11:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$327","typeString":"contract IBalancerTokenAdmin"}},"id":14782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"startEpochTimeWrite","nodeType":"MemberAccess","referencedDeclaration":319,"src":"3601:31:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint256_$","typeString":"function () external returns (uint256)"}},"id":14783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3601:33:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3583:51:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14785,"nodeType":"ExpressionStatement","src":"3583:51:89"},{"expression":{"arguments":[{"id":14787,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14748,"src":"3666:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14786,"name":"_setRelativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15164,"src":"3644:21:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3644:40:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14789,"nodeType":"ExpressionStatement","src":"3644:40:89"}]},"id":14791,"implemented":true,"kind":"function","modifiers":[],"name":"__StakelessGauge_init","nodeType":"FunctionDefinition","parameters":{"id":14749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14748,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":14791,"src":"3177:25:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14747,"name":"uint256","nodeType":"ElementaryTypeName","src":"3177:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3176:27:89"},"returnParameters":{"id":14750,"nodeType":"ParameterList","parameters":[],"src":"3213:0:89"},"scope":15196,"src":"3146:545:89","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1226],"body":{"id":15010,"nodeType":"Block","src":"3773:2579:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14800,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3791:3:89","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3791:10:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":14804,"name":"_authorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14648,"src":"3813:18:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}],"id":14803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3805:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14802,"name":"address","nodeType":"ElementaryTypeName","src":"3805:7:89","typeDescriptions":{}}},"id":14805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3805:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3791:41:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53454e4445525f4e4f545f414c4c4f574544","id":14807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3834:20:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""},"value":"SENDER_NOT_ALLOWED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""}],"id":14799,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3783:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3783:72:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14809,"nodeType":"ExpressionStatement","src":"3783:72:89"},{"assignments":[14811],"declarations":[{"constant":false,"id":14811,"mutability":"mutable","name":"lastPeriod","nodeType":"VariableDeclaration","scope":15010,"src":"3865:18:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14810,"name":"uint256","nodeType":"ElementaryTypeName","src":"3865:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14813,"initialValue":{"id":14812,"name":"_period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14664,"src":"3886:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3865:28:89"},{"assignments":[14815],"declarations":[{"constant":false,"id":14815,"mutability":"mutable","name":"currentPeriod","nodeType":"VariableDeclaration","scope":15010,"src":"3903:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14814,"name":"uint256","nodeType":"ElementaryTypeName","src":"3903:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14818,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":14816,"name":"_currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15035,"src":"3927:14:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":14817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3927:16:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3903:40:89"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14819,"name":"lastPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14811,"src":"3958:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":14820,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14815,"src":"3971:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3958:26:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15007,"nodeType":"IfStatement","src":"3954:2370:89","trueBody":{"id":15006,"nodeType":"Block","src":"3986:2338:89","statements":[{"expression":{"arguments":[{"arguments":[{"id":14827,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4042:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}],"id":14826,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4034:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14825,"name":"address","nodeType":"ElementaryTypeName","src":"4034:7:89","typeDescriptions":{}}},"id":14828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4034:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14822,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14646,"src":"4000:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":14824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"checkpoint_gauge","nodeType":"MemberAccess","referencedDeclaration":749,"src":"4000:33:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":14829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4000:48:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14830,"nodeType":"ExpressionStatement","src":"4000:48:89"},{"assignments":[14832],"declarations":[{"constant":false,"id":14832,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":15006,"src":"4063:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14831,"name":"uint256","nodeType":"ElementaryTypeName","src":"4063:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14834,"initialValue":{"id":14833,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14662,"src":"4078:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4063:20:89"},{"assignments":[14836],"declarations":[{"constant":false,"id":14836,"mutability":"mutable","name":"newEmissions","nodeType":"VariableDeclaration","scope":15006,"src":"4097:20:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14835,"name":"uint256","nodeType":"ElementaryTypeName","src":"4097:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14838,"initialValue":{"hexValue":"30","id":14837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4120:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4097:24:89"},{"expression":{"id":14841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14839,"name":"lastPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14811,"src":"4135:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":14840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4149:1:89","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4135:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14842,"nodeType":"ExpressionStatement","src":"4135:15:89"},{"assignments":[14844],"declarations":[{"constant":false,"id":14844,"mutability":"mutable","name":"nextEpochTime","nodeType":"VariableDeclaration","scope":15006,"src":"4164:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14843,"name":"uint256","nodeType":"ElementaryTypeName","src":"4164:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14848,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14845,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14666,"src":"4188:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":14846,"name":"_RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14656,"src":"4206:20:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4188:38:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4164:62:89"},{"body":{"id":14975,"nodeType":"Block","src":"4296:1783:89","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14861,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14850,"src":"4318:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":14862,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14815,"src":"4322:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4318:17:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14865,"nodeType":"IfStatement","src":"4314:28:89","trueBody":{"id":14864,"nodeType":"Break","src":"4337:5:89"}},{"assignments":[14867],"declarations":[{"constant":false,"id":14867,"mutability":"mutable","name":"periodTime","nodeType":"VariableDeclaration","scope":14975,"src":"4361:18:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14866,"name":"uint256","nodeType":"ElementaryTypeName","src":"4361:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14871,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14868,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14850,"src":"4382:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31","id":14869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4386:7:89","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"4382:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4361:32:89"},{"assignments":[14873],"declarations":[{"constant":false,"id":14873,"mutability":"mutable","name":"periodEmission","nodeType":"VariableDeclaration","scope":14975,"src":"4411:22:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14872,"name":"uint256","nodeType":"ElementaryTypeName","src":"4411:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14875,"initialValue":{"hexValue":"30","id":14874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4436:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4411:26:89"},{"assignments":[14877],"declarations":[{"constant":false,"id":14877,"mutability":"mutable","name":"gaugeWeight","nodeType":"VariableDeclaration","scope":14975,"src":"4455:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14876,"name":"uint256","nodeType":"ElementaryTypeName","src":"4455:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14881,"initialValue":{"arguments":[{"id":14879,"name":"periodTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14867,"src":"4501:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14878,"name":"getCappedRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15195,"src":"4477:23:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":14880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4477:35:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4455:57:89"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14882,"name":"nextEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14844,"src":"4535:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":14883,"name":"periodTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14867,"src":"4552:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4535:27:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14885,"name":"nextEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14844,"src":"4566:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14886,"name":"periodTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14867,"src":"4582:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":14887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4595:7:89","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"4582:20:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4566:36:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4535:67:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14964,"nodeType":"Block","src":"5858:97:89","statements":[{"expression":{"id":14962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14951,"name":"periodEmission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14873,"src":"5880:14:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14952,"name":"gaugeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14877,"src":"5898:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14953,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14832,"src":"5912:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5898:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31","id":14955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5919:7:89","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"5898:28:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14957,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5897:30:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"id":14960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":14958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5930:2:89","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3138","id":14959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5934:2:89","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"5930:6:89","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}},"src":"5897:39:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5880:56:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14963,"nodeType":"ExpressionStatement","src":"5880:56:89"}]},"id":14965,"nodeType":"IfStatement","src":"4531:1424:89","trueBody":{"id":14950,"nodeType":"Block","src":"4604:1248:89","statements":[{"assignments":[14892],"declarations":[{"constant":false,"id":14892,"mutability":"mutable","name":"durationInCurrentEpoch","nodeType":"VariableDeclaration","scope":14950,"src":"5148:30:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14891,"name":"uint256","nodeType":"ElementaryTypeName","src":"5148:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14896,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14893,"name":"nextEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14844,"src":"5181:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14894,"name":"periodTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14867,"src":"5197:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5181:26:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5148:59:89"},{"expression":{"id":14908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14897,"name":"periodEmission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14873,"src":"5229:14:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14898,"name":"gaugeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14877,"src":"5247:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14899,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14832,"src":"5261:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5247:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14901,"name":"durationInCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14892,"src":"5268:22:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5247:43:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14903,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5246:45:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"id":14906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":14904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5294:2:89","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3138","id":14905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5298:2:89","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"5294:6:89","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}},"src":"5246:54:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5229:71:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14909,"nodeType":"ExpressionStatement","src":"5229:71:89"},{"expression":{"id":14917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14910,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14832,"src":"5373:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14911,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14832,"src":"5381:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14912,"name":"_RATE_DENOMINATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14660,"src":"5388:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5381:24:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14914,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5380:26:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":14915,"name":"_RATE_REDUCTION_COEFFICIENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14658,"src":"5409:27:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5380:56:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5373:63:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14918,"nodeType":"ExpressionStatement","src":"5373:63:89"},{"assignments":[14920],"declarations":[{"constant":false,"id":14920,"mutability":"mutable","name":"durationInNewEpoch","nodeType":"VariableDeclaration","scope":14950,"src":"5535:26:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14919,"name":"uint256","nodeType":"ElementaryTypeName","src":"5535:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14924,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":14921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5564:7:89","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14922,"name":"durationInCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14892,"src":"5574:22:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5564:32:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5535:61:89"},{"expression":{"id":14936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14925,"name":"periodEmission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14873,"src":"5618:14:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14926,"name":"gaugeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14877,"src":"5637:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14927,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14832,"src":"5651:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5637:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14929,"name":"durationInNewEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14920,"src":"5658:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5637:39:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14931,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5636:41:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"id":14934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":14932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5680:2:89","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3138","id":14933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5684:2:89","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"5680:6:89","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}},"src":"5636:50:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5618:68:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14937,"nodeType":"ExpressionStatement","src":"5618:68:89"},{"expression":{"id":14940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14938,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14662,"src":"5709:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14939,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14832,"src":"5717:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5709:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14941,"nodeType":"ExpressionStatement","src":"5709:12:89"},{"expression":{"id":14944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14942,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14666,"src":"5743:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14943,"name":"nextEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14844,"src":"5761:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5743:31:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14945,"nodeType":"ExpressionStatement","src":"5743:31:89"},{"expression":{"id":14948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14946,"name":"nextEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14844,"src":"5796:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":14947,"name":"_RATE_REDUCTION_TIME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14656,"src":"5813:20:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5796:37:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14949,"nodeType":"ExpressionStatement","src":"5796:37:89"}]}},{"eventCall":{"arguments":[{"id":14967,"name":"periodTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14867,"src":"5989:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14968,"name":"periodEmission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14873,"src":"6001:14:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14966,"name":"Checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14654,"src":"5978:10:89","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":14969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5978:38:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14970,"nodeType":"EmitStatement","src":"5973:43:89"},{"expression":{"id":14973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14971,"name":"newEmissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14836,"src":"6034:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":14972,"name":"periodEmission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14873,"src":"6050:14:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6034:30:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14974,"nodeType":"ExpressionStatement","src":"6034:30:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14853,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14850,"src":"4269:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14854,"name":"lastPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14811,"src":"4273:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"323535","id":14855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4286:3:89","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"4273:16:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4269:20:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14976,"initializationExpression":{"assignments":[14850],"declarations":[{"constant":false,"id":14850,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":14976,"src":"4245:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14849,"name":"uint256","nodeType":"ElementaryTypeName","src":"4245:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14852,"initialValue":{"id":14851,"name":"lastPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14811,"src":"4257:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4245:22:89"},"loopExpression":{"expression":{"id":14859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4291:3:89","subExpression":{"id":14858,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14850,"src":"4293:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14860,"nodeType":"ExpressionStatement","src":"4291:3:89"},"nodeType":"ForStatement","src":"4240:1839:89"},{"expression":{"id":14979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14977,"name":"_period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14664,"src":"6093:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14978,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14815,"src":"6103:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6093:23:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14980,"nodeType":"ExpressionStatement","src":"6093:23:89"},{"expression":{"id":14983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14981,"name":"_emissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14668,"src":"6130:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":14982,"name":"newEmissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14836,"src":"6144:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6130:26:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14984,"nodeType":"ExpressionStatement","src":"6130:26:89"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14985,"name":"newEmissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14836,"src":"6175:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6190:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6175:16:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":14989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6195:10:89","subExpression":{"id":14988,"name":"_isKilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14670,"src":"6196:9:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6175:30:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15005,"nodeType":"IfStatement","src":"6171:143:89","trueBody":{"id":15004,"nodeType":"Block","src":"6207:107:89","statements":[{"expression":{"arguments":[{"arguments":[{"id":14996,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6246:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}],"id":14995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6238:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14994,"name":"address","nodeType":"ElementaryTypeName","src":"6238:7:89","typeDescriptions":{}}},"id":14997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6238:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14991,"name":"_minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"6225:7:89","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"id":14993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":88,"src":"6225:12:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) external returns (uint256)"}},"id":14998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6225:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14999,"nodeType":"ExpressionStatement","src":"6225:27:89"},{"expression":{"arguments":[{"id":15001,"name":"newEmissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14836,"src":"6286:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15000,"name":"_postMintAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15040,"src":"6270:15:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6270:29:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15003,"nodeType":"ExpressionStatement","src":"6270:29:89"}]}}]}},{"expression":{"hexValue":"74727565","id":15008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6341:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14798,"id":15009,"nodeType":"Return","src":"6334:11:89"}]},"functionSelector":"c2c4c5c1","id":15011,"implemented":true,"kind":"function","modifiers":[{"id":14795,"modifierName":{"id":14794,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"3745:12:89","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3745:12:89"}],"name":"checkpoint","nodeType":"FunctionDefinition","overrides":{"id":14793,"nodeType":"OverrideSpecifier","overrides":[],"src":"3736:8:89"},"parameters":{"id":14792,"nodeType":"ParameterList","parameters":[],"src":"3716:2:89"},"returnParameters":{"id":14798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14797,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15011,"src":"3767:4:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14796,"name":"bool","nodeType":"ElementaryTypeName","src":"3767:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3766:6:89"},"scope":15196,"src":"3697:2655:89","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1238],"body":{"id":15020,"nodeType":"Block","src":"6473:25:89","statements":[{"expression":{"hexValue":"30","id":15018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6490:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":15017,"id":15019,"nodeType":"Return","src":"6483:8:89"}]},"documentation":{"id":15012,"nodeType":"StructuredDocumentation","src":"6358:31:89","text":"@inheritdoc IStakelessGauge"},"functionSelector":"b0245225","id":15021,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalBridgeCost","nodeType":"FunctionDefinition","overrides":{"id":15014,"nodeType":"OverrideSpecifier","overrides":[],"src":"6446:8:89"},"parameters":{"id":15013,"nodeType":"ParameterList","parameters":[],"src":"6421:2:89"},"returnParameters":{"id":15017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15016,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15021,"src":"6464:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15015,"name":"uint256","nodeType":"ElementaryTypeName","src":"6464:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6463:9:89"},"scope":15196,"src":"6394:104:89","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":15034,"nodeType":"Block","src":"6562:109:89","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15026,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6634:5:89","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":15027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"6634:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31","id":15028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6652:7:89","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"6634:25:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15030,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6633:27:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":15031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6663:1:89","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6633:31:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15025,"id":15033,"nodeType":"Return","src":"6626:38:89"}]},"id":15035,"implemented":true,"kind":"function","modifiers":[],"name":"_currentPeriod","nodeType":"FunctionDefinition","parameters":{"id":15022,"nodeType":"ParameterList","parameters":[],"src":"6527:2:89"},"returnParameters":{"id":15025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15024,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15035,"src":"6553:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15023,"name":"uint256","nodeType":"ElementaryTypeName","src":"6553:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6552:9:89"},"scope":15196,"src":"6504:167:89","stateMutability":"view","virtual":false,"visibility":"internal"},{"id":15040,"implemented":false,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","parameters":{"id":15038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15037,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":15040,"src":"6702:18:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15036,"name":"uint256","nodeType":"ElementaryTypeName","src":"6702:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6701:20:89"},"returnParameters":{"id":15039,"nodeType":"ParameterList","parameters":[],"src":"6738:0:89"},"scope":15196,"src":"6677:62:89","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[893],"body":{"id":15050,"nodeType":"Block","src":"6861:28:89","statements":[{"expression":{"hexValue":"74727565","id":15048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6878:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15047,"id":15049,"nodeType":"Return","src":"6871:11:89"}]},"functionSelector":"4b820093","id":15051,"implemented":true,"kind":"function","modifiers":[],"name":"user_checkpoint","nodeType":"FunctionDefinition","overrides":{"id":15044,"nodeType":"OverrideSpecifier","overrides":[],"src":"6837:8:89"},"parameters":{"id":15043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15042,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15051,"src":"6814:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15041,"name":"address","nodeType":"ElementaryTypeName","src":"6814:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6813:9:89"},"returnParameters":{"id":15047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15046,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15051,"src":"6855:4:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15045,"name":"bool","nodeType":"ElementaryTypeName","src":"6855:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6854:6:89"},"scope":15196,"src":"6789:100:89","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[885],"body":{"id":15071,"nodeType":"Block","src":"6978:108:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15060,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15053,"src":"6996:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":15063,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7012:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}],"id":15062,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7004:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15061,"name":"address","nodeType":"ElementaryTypeName","src":"7004:7:89","typeDescriptions":{}}},"id":15064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7004:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6996:21:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"47617567652063616e206f6e6c79206d696e7420666f7220697473656c66","id":15066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7019:32:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_f4e4fe179fd12da350e7bb8ec0880d9e8b3a006c5241edb45e89d14d3fb1458d","typeString":"literal_string \"Gauge can only mint for itself\""},"value":"Gauge can only mint for itself"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f4e4fe179fd12da350e7bb8ec0880d9e8b3a006c5241edb45e89d14d3fb1458d","typeString":"literal_string \"Gauge can only mint for itself\""}],"id":15059,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6988:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6988:64:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15068,"nodeType":"ExpressionStatement","src":"6988:64:89"},{"expression":{"id":15069,"name":"_emissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14668,"src":"7069:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15058,"id":15070,"nodeType":"Return","src":"7062:17:89"}]},"functionSelector":"09400707","id":15072,"implemented":true,"kind":"function","modifiers":[],"name":"integrate_fraction","nodeType":"FunctionDefinition","overrides":{"id":15055,"nodeType":"OverrideSpecifier","overrides":[],"src":"6951:8:89"},"parameters":{"id":15054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15053,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":15072,"src":"6923:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15052,"name":"address","nodeType":"ElementaryTypeName","src":"6923:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6922:14:89"},"returnParameters":{"id":15058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15057,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15072,"src":"6969:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15056,"name":"uint256","nodeType":"ElementaryTypeName","src":"6969:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6968:9:89"},"scope":15196,"src":"6895:191:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[899],"body":{"id":15080,"nodeType":"Block","src":"7151:33:89","statements":[{"expression":{"id":15078,"name":"_isKilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14670,"src":"7168:9:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":15077,"id":15079,"nodeType":"Return","src":"7161:16:89"}]},"functionSelector":"9c868ac0","id":15081,"implemented":true,"kind":"function","modifiers":[],"name":"is_killed","nodeType":"FunctionDefinition","overrides":{"id":15074,"nodeType":"OverrideSpecifier","overrides":[],"src":"7127:8:89"},"parameters":{"id":15073,"nodeType":"ParameterList","parameters":[],"src":"7110:2:89"},"returnParameters":{"id":15077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15076,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15081,"src":"7145:4:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15075,"name":"bool","nodeType":"ElementaryTypeName","src":"7145:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7144:6:89"},"scope":15196,"src":"7092:92:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[903],"body":{"id":15100,"nodeType":"Block","src":"7229:115:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15086,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7247:3:89","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7247:10:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":15090,"name":"_authorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14648,"src":"7269:18:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}],"id":15089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7261:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15088,"name":"address","nodeType":"ElementaryTypeName","src":"7261:7:89","typeDescriptions":{}}},"id":15091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7261:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7247:41:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53454e4445525f4e4f545f414c4c4f574544","id":15093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7290:20:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""},"value":"SENDER_NOT_ALLOWED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""}],"id":15085,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7239:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7239:72:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15095,"nodeType":"ExpressionStatement","src":"7239:72:89"},{"expression":{"id":15098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15096,"name":"_isKilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14670,"src":"7321:9:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":15097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7333:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7321:16:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15099,"nodeType":"ExpressionStatement","src":"7321:16:89"}]},"functionSelector":"ab8f0945","id":15101,"implemented":true,"kind":"function","modifiers":[],"name":"killGauge","nodeType":"FunctionDefinition","overrides":{"id":15083,"nodeType":"OverrideSpecifier","overrides":[],"src":"7220:8:89"},"parameters":{"id":15082,"nodeType":"ParameterList","parameters":[],"src":"7208:2:89"},"returnParameters":{"id":15084,"nodeType":"ParameterList","parameters":[],"src":"7229:0:89"},"scope":15196,"src":"7190:154:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[907],"body":{"id":15120,"nodeType":"Block","src":"7391:116:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15106,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7409:3:89","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7409:10:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":15110,"name":"_authorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14648,"src":"7431:18:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}],"id":15109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7423:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15108,"name":"address","nodeType":"ElementaryTypeName","src":"7423:7:89","typeDescriptions":{}}},"id":15111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7423:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7409:41:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53454e4445525f4e4f545f414c4c4f574544","id":15113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7452:20:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""},"value":"SENDER_NOT_ALLOWED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""}],"id":15105,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7401:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7401:72:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15115,"nodeType":"ExpressionStatement","src":"7401:72:89"},{"expression":{"id":15118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15116,"name":"_isKilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14670,"src":"7483:9:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":15117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7495:5:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"7483:17:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15119,"nodeType":"ExpressionStatement","src":"7483:17:89"}]},"functionSelector":"d34fb267","id":15121,"implemented":true,"kind":"function","modifiers":[],"name":"unkillGauge","nodeType":"FunctionDefinition","overrides":{"id":15103,"nodeType":"OverrideSpecifier","overrides":[],"src":"7382:8:89"},"parameters":{"id":15102,"nodeType":"ParameterList","parameters":[],"src":"7370:2:89"},"returnParameters":{"id":15104,"nodeType":"ParameterList","parameters":[],"src":"7391:0:89"},"scope":15196,"src":"7350:157:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[913],"body":{"id":15142,"nodeType":"Block","src":"7588:139:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15128,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7606:3:89","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7606:10:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":15132,"name":"_authorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14648,"src":"7628:18:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}],"id":15131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7620:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15130,"name":"address","nodeType":"ElementaryTypeName","src":"7620:7:89","typeDescriptions":{}}},"id":15133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7620:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7606:41:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53454e4445525f4e4f545f414c4c4f574544","id":15135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7649:20:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""},"value":"SENDER_NOT_ALLOWED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f05a2cf5de71ee787d02dede9d6e01c9001e823dce70853e36e0c59172dd129","typeString":"literal_string \"SENDER_NOT_ALLOWED\""}],"id":15127,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7598:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7598:72:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15137,"nodeType":"ExpressionStatement","src":"7598:72:89"},{"expression":{"arguments":[{"id":15139,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15123,"src":"7702:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15138,"name":"_setRelativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15164,"src":"7680:21:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7680:40:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15141,"nodeType":"ExpressionStatement","src":"7680:40:89"}]},"functionSelector":"10d3eb04","id":15143,"implemented":true,"kind":"function","modifiers":[],"name":"setRelativeWeightCap","nodeType":"FunctionDefinition","overrides":{"id":15125,"nodeType":"OverrideSpecifier","overrides":[],"src":"7579:8:89"},"parameters":{"id":15124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15123,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":15143,"src":"7543:25:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15122,"name":"uint256","nodeType":"ElementaryTypeName","src":"7543:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7542:27:89"},"returnParameters":{"id":15126,"nodeType":"ParameterList","parameters":[],"src":"7588:0:89"},"scope":15196,"src":"7513:214:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":15163,"nodeType":"Block","src":"7800:232:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15149,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15145,"src":"7818:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":15150,"name":"MAX_RELATIVE_WEIGHT_CAP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14638,"src":"7839:23:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7818:44:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d","id":15152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7864:54:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_b4cb1c586d60adf213211c8bcbaaed24dc443f5fd8a96bbdc7ee2066c2469074","typeString":"literal_string \"Relative weight cap exceeds allowed absolute maximum\""},"value":"Relative weight cap exceeds allowed absolute maximum"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b4cb1c586d60adf213211c8bcbaaed24dc443f5fd8a96bbdc7ee2066c2469074","typeString":"literal_string \"Relative weight cap exceeds allowed absolute maximum\""}],"id":15148,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7810:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7810:109:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15154,"nodeType":"ExpressionStatement","src":"7810:109:89"},{"expression":{"id":15157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15155,"name":"_relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14672,"src":"7929:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15156,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15145,"src":"7950:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7929:38:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15158,"nodeType":"ExpressionStatement","src":"7929:38:89"},{"eventCall":{"arguments":[{"id":15160,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15145,"src":"8007:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15159,"name":"RelativeWeightCapChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":877,"src":"7982:24:89","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7982:43:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15162,"nodeType":"EmitStatement","src":"7977:48:89"}]},"id":15164,"implemented":true,"kind":"function","modifiers":[],"name":"_setRelativeWeightCap","nodeType":"FunctionDefinition","parameters":{"id":15146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15145,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":15164,"src":"7764:25:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15144,"name":"uint256","nodeType":"ElementaryTypeName","src":"7764:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7763:27:89"},"returnParameters":{"id":15147,"nodeType":"ParameterList","parameters":[],"src":"7800:0:89"},"scope":15196,"src":"7733:299:89","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[919],"body":{"id":15172,"nodeType":"Block","src":"8111:42:89","statements":[{"expression":{"id":15170,"name":"_relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14672,"src":"8128:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15169,"id":15171,"nodeType":"Return","src":"8121:25:89"}]},"functionSelector":"83f5c39b","id":15173,"implemented":true,"kind":"function","modifiers":[],"name":"getRelativeWeightCap","nodeType":"FunctionDefinition","overrides":{"id":15166,"nodeType":"OverrideSpecifier","overrides":[],"src":"8084:8:89"},"parameters":{"id":15165,"nodeType":"ParameterList","parameters":[],"src":"8067:2:89"},"returnParameters":{"id":15169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15168,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15173,"src":"8102:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15167,"name":"uint256","nodeType":"ElementaryTypeName","src":"8102:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8101:9:89"},"scope":15196,"src":"8038:115:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[927],"body":{"id":15194,"nodeType":"Block","src":"8245:113:89","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":15187,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8318:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}],"id":15186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8310:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15185,"name":"address","nodeType":"ElementaryTypeName","src":"8310:7:89","typeDescriptions":{}}},"id":15188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8310:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15189,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15175,"src":"8325:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15183,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14646,"src":"8271:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":15184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gauge_relative_weight","nodeType":"MemberAccess","referencedDeclaration":758,"src":"8271:38:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view external returns (uint256)"}},"id":15190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8271:59:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15191,"name":"_relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14672,"src":"8332:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15181,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"8262:4:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5683_$","typeString":"type(library Math)"}},"id":15182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"min","nodeType":"MemberAccess","referencedDeclaration":5586,"src":"8262:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":15192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8262:89:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15180,"id":15193,"nodeType":"Return","src":"8255:96:89"}]},"functionSelector":"14e956f5","id":15195,"implemented":true,"kind":"function","modifiers":[],"name":"getCappedRelativeWeight","nodeType":"FunctionDefinition","overrides":{"id":15177,"nodeType":"OverrideSpecifier","overrides":[],"src":"8218:8:89"},"parameters":{"id":15176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15175,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":15195,"src":"8192:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15174,"name":"uint256","nodeType":"ElementaryTypeName","src":"8192:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8191:14:89"},"returnParameters":{"id":15180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15179,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15195,"src":"8236:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15178,"name":"uint256","nodeType":"ElementaryTypeName","src":"8236:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8235:9:89"},"scope":15196,"src":"8159:199:89","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":15197,"src":"1312:7048:89"}],"src":"688:7673:89"},"id":89},"contracts/gauges/StakelessGaugeCheckpointer.sol":{"ast":{"absolutePath":"contracts/gauges/StakelessGaugeCheckpointer.sol","exportedSymbols":{"StakelessGaugeCheckpointer":[16300]},"id":16301,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15198,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:90"},{"id":15199,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:90"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol","id":15200,"nodeType":"ImportDirective","scope":16301,"sourceUnit":63,"src":"747:98:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol","id":15201,"nodeType":"ImportDirective","scope":16301,"sourceUnit":740,"src":"846:81:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","id":15202,"nodeType":"ImportDirective","scope":16301,"sourceUnit":822,"src":"928:86:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol","id":15203,"nodeType":"ImportDirective","scope":16301,"sourceUnit":1240,"src":"1015:85:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol","id":15204,"nodeType":"ImportDirective","scope":16301,"sourceUnit":1418,"src":"1101:97:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":15205,"nodeType":"ImportDirective","scope":16301,"sourceUnit":5851,"src":"1200:77:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","id":15206,"nodeType":"ImportDirective","scope":16301,"sourceUnit":7132,"src":"1278:83:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":15207,"nodeType":"ImportDirective","scope":16301,"sourceUnit":7188,"src":"1362:85:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/admin/GaugeAdder.sol","file":"../admin/GaugeAdder.sol","id":15208,"nodeType":"ImportDirective","scope":16301,"sourceUnit":12364,"src":"1449:33:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/arbitrum/ArbitrumRootGauge.sol","file":"./arbitrum/ArbitrumRootGauge.sol","id":15209,"nodeType":"ImportDirective","scope":16301,"sourceUnit":16478,"src":"1483:42:90","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":15211,"name":"IStakelessGaugeCheckpointer","nodeType":"UserDefinedTypeName","referencedDeclaration":1417,"src":"1699:27:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGaugeCheckpointer_$1417","typeString":"contract IStakelessGaugeCheckpointer"}},"id":15212,"nodeType":"InheritanceSpecifier","src":"1699:27:90"},{"baseName":{"id":15213,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7187,"src":"1728:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7187","typeString":"contract ReentrancyGuard"}},"id":15214,"nodeType":"InheritanceSpecifier","src":"1728:15:90"},{"baseName":{"id":15215,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1745:23:90","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":15216,"nodeType":"InheritanceSpecifier","src":"1745:23:90"}],"contractDependencies":[1417,2259,3128,3697,7187],"contractKind":"contract","documentation":{"id":15210,"nodeType":"StructuredDocumentation","src":"1527:132:90","text":" @title Stakeless Gauge Checkpointer\n @notice Implements IStakelessGaugeCheckpointer; refer to it for API documentation."},"fullyImplemented":true,"id":16300,"linearizedBaseContracts":[16300,3697,3128,2259,7187,1417],"name":"StakelessGaugeCheckpointer","nodeType":"ContractDefinition","nodes":[{"id":15219,"libraryName":{"id":15217,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7131,"src":"1781:13:90","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$7131","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"1775:49:90","typeName":{"id":15218,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1799:24:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"constant":false,"id":15223,"mutability":"mutable","name":"_gauges","nodeType":"VariableDeclaration","scope":16300,"src":"1830:59:90","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string => struct EnumerableSet.AddressSet)"},"typeName":{"id":15222,"keyType":{"id":15220,"name":"string","nodeType":"ElementaryTypeName","src":"1838:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"nodeType":"Mapping","src":"1830:43:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string => struct EnumerableSet.AddressSet)"},"valueType":{"id":15221,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1848:24:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},"visibility":"private"},{"constant":false,"id":15225,"mutability":"immutable","name":"_authorizerAdaptorEntrypoint","nodeType":"VariableDeclaration","scope":16300,"src":"1895:75:90","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":15224,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"1895:28:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"private"},{"constant":false,"id":15227,"mutability":"immutable","name":"_gaugeAdder","nodeType":"VariableDeclaration","scope":16300,"src":"1976:41:90","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"},"typeName":{"id":15226,"name":"IGaugeAdder","nodeType":"UserDefinedTypeName","referencedDeclaration":739,"src":"1976:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"visibility":"private"},{"constant":false,"id":15229,"mutability":"immutable","name":"_gaugeController","nodeType":"VariableDeclaration","scope":16300,"src":"2023:51:90","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"},"typeName":{"id":15228,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"2023:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"visibility":"private"},{"body":{"id":15255,"nodeType":"Block","src":"2251:169:90","statements":[{"expression":{"id":15243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15241,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"2261:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15242,"name":"gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15231,"src":"2275:10:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"src":"2261:24:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15244,"nodeType":"ExpressionStatement","src":"2261:24:90"},{"expression":{"id":15247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15245,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15225,"src":"2295:28:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15246,"name":"authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15233,"src":"2326:27:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"src":"2295:58:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":15248,"nodeType":"ExpressionStatement","src":"2295:58:90"},{"expression":{"id":15253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15249,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15229,"src":"2363:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15250,"name":"gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15231,"src":"2382:10:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getGaugeController","nodeType":"MemberAccess","referencedDeclaration":669,"src":"2382:29:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IGaugeController_$821_$","typeString":"function () view external returns (contract IGaugeController)"}},"id":15252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2382:31:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"src":"2363:50:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":15254,"nodeType":"ExpressionStatement","src":"2363:50:90"}]},"id":15256,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15236,"name":"authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15233,"src":"2207:27:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":15237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getVault","nodeType":"MemberAccess","referencedDeclaration":32,"src":"2207:36:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVault_$3051_$","typeString":"function () view external returns (contract IVault)"}},"id":15238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2207:38:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":15239,"modifierName":{"id":15235,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"2183:23:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"2183:63:90"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":15234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15231,"mutability":"mutable","name":"gaugeAdder","nodeType":"VariableDeclaration","scope":15256,"src":"2093:22:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"},"typeName":{"id":15230,"name":"IGaugeAdder","nodeType":"UserDefinedTypeName","referencedDeclaration":739,"src":"2093:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"visibility":"internal"},{"constant":false,"id":15233,"mutability":"mutable","name":"authorizerAdaptorEntrypoint","nodeType":"VariableDeclaration","scope":15256,"src":"2117:56:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"},"typeName":{"id":15232,"name":"IAuthorizerAdaptorEntrypoint","nodeType":"UserDefinedTypeName","referencedDeclaration":62,"src":"2117:28:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"visibility":"internal"}],"src":"2092:82:90"},"returnParameters":{"id":15240,"nodeType":"ParameterList","parameters":[],"src":"2251:0:90"},"scope":16300,"src":"2081:339:90","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":15269,"nodeType":"Block","src":"2479:98:90","statements":[{"expression":{"arguments":[{"arguments":[{"id":15263,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15258,"src":"2526:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":15261,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"2497:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isValidGaugeType","nodeType":"MemberAccess","referencedDeclaration":698,"src":"2497:28:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (string memory) view external returns (bool)"}},"id":15264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2497:39:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c69642067617567652074797065","id":15265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2538:20:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""},"value":"Invalid gauge type"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""}],"id":15260,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2489:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2489:70:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15267,"nodeType":"ExpressionStatement","src":"2489:70:90"},{"id":15268,"nodeType":"PlaceholderStatement","src":"2569:1:90"}]},"id":15270,"name":"withValidGaugeType","nodeType":"ModifierDefinition","parameters":{"id":15259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15258,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15270,"src":"2454:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15257,"name":"string","nodeType":"ElementaryTypeName","src":"2454:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2453:25:90"},"src":"2426:151:90","virtual":false,"visibility":"internal"},{"body":{"id":15299,"nodeType":"Block","src":"2640:174:90","statements":[{"body":{"id":15296,"nodeType":"Block","src":"2698:99:90","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":15289,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15273,"src":"2749:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":15291,"indexExpression":{"id":15290,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15276,"src":"2760:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2749:13:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":15287,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"2720:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isValidGaugeType","nodeType":"MemberAccess","referencedDeclaration":698,"src":"2720:28:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (string memory) view external returns (bool)"}},"id":15292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2720:43:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c69642067617567652074797065","id":15293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2765:20:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""},"value":"Invalid gauge type"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""}],"id":15286,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2712:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2712:74:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15295,"nodeType":"ExpressionStatement","src":"2712:74:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15279,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15276,"src":"2670:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15280,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15273,"src":"2674:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":15281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2674:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2670:21:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15297,"initializationExpression":{"assignments":[15276],"declarations":[{"constant":false,"id":15276,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15297,"src":"2655:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15275,"name":"uint256","nodeType":"ElementaryTypeName","src":"2655:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15278,"initialValue":{"hexValue":"30","id":15277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2667:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2655:13:90"},"loopExpression":{"expression":{"id":15284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2693:3:90","subExpression":{"id":15283,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15276,"src":"2695:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15285,"nodeType":"ExpressionStatement","src":"2693:3:90"},"nodeType":"ForStatement","src":"2650:147:90"},{"id":15298,"nodeType":"PlaceholderStatement","src":"2806:1:90"}]},"id":15300,"name":"withValidGaugeTypes","nodeType":"ModifierDefinition","parameters":{"id":15274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15273,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":15300,"src":"2612:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15271,"name":"string","nodeType":"ElementaryTypeName","src":"2612:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15272,"nodeType":"ArrayTypeName","src":"2612:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"src":"2611:28:90"},"src":"2583:231:90","virtual":false,"visibility":"internal"},{"body":{"id":15315,"nodeType":"Block","src":"2892:82:90","statements":[{"expression":{"arguments":[{"arguments":[{"id":15308,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15302,"src":"2919:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":15309,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15304,"src":"2930:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15307,"name":"hasGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"2910:8:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$_t_contract$_IStakelessGauge_$1239_$returns$_t_bool_$","typeString":"function (string memory,contract IStakelessGauge) view returns (bool)"}},"id":15310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2910:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4761756765206e6f74206164646564","id":15311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2938:17:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_777198c5277c092a0b9003b985175c31e16a94f16e375f696473f999836a77f7","typeString":"literal_string \"Gauge not added\""},"value":"Gauge not added"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_777198c5277c092a0b9003b985175c31e16a94f16e375f696473f999836a77f7","typeString":"literal_string \"Gauge not added\""}],"id":15306,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2902:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2902:54:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15313,"nodeType":"ExpressionStatement","src":"2902:54:90"},{"id":15314,"nodeType":"PlaceholderStatement","src":"2966:1:90"}]},"id":15316,"name":"withValidGauge","nodeType":"ModifierDefinition","parameters":{"id":15305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15302,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15316,"src":"2844:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15301,"name":"string","nodeType":"ElementaryTypeName","src":"2844:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15304,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15316,"src":"2869:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15303,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"2869:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"2843:48:90"},"src":"2820:154:90","virtual":false,"visibility":"internal"},{"body":{"id":15322,"nodeType":"Block","src":"3002:53:90","statements":[{"id":15318,"nodeType":"PlaceholderStatement","src":"3012:1:90"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15319,"name":"_returnLeftoverEthIfAny","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16282,"src":"3023:23:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":15320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3023:25:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15321,"nodeType":"ExpressionStatement","src":"3023:25:90"}]},"id":15323,"name":"refundsEth","nodeType":"ModifierDefinition","parameters":{"id":15317,"nodeType":"ParameterList","parameters":[],"src":"2999:2:90"},"src":"2980:75:90","virtual":false,"visibility":"internal"},{"baseFunctions":[1269],"body":{"id":15332,"nodeType":"Block","src":"3179:35:90","statements":[{"expression":{"id":15330,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"3196:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"functionReturnParameters":15329,"id":15331,"nodeType":"Return","src":"3189:18:90"}]},"documentation":{"id":15324,"nodeType":"StructuredDocumentation","src":"3061:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"7c1fef51","id":15333,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeAdder","nodeType":"FunctionDefinition","overrides":{"id":15326,"nodeType":"OverrideSpecifier","overrides":[],"src":"3148:8:90"},"parameters":{"id":15325,"nodeType":"ParameterList","parameters":[],"src":"3131:2:90"},"returnParameters":{"id":15329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15328,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15333,"src":"3166:11:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"},"typeName":{"id":15327,"name":"IGaugeAdder","nodeType":"UserDefinedTypeName","referencedDeclaration":739,"src":"3166:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"visibility":"internal"}],"src":"3165:13:90"},"scope":16300,"src":"3109:105:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1276],"body":{"id":15345,"nodeType":"Block","src":"3340:51:90","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15341,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"3357:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getGaugeTypes","nodeType":"MemberAccess","referencedDeclaration":676,"src":"3357:25:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$","typeString":"function () view external returns (string memory[] memory)"}},"id":15343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3357:27:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"functionReturnParameters":15340,"id":15344,"nodeType":"Return","src":"3350:34:90"}]},"documentation":{"id":15334,"nodeType":"StructuredDocumentation","src":"3220:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"afcb1a86","id":15346,"implemented":true,"kind":"function","modifiers":[],"name":"getGaugeTypes","nodeType":"FunctionDefinition","overrides":{"id":15336,"nodeType":"OverrideSpecifier","overrides":[],"src":"3305:8:90"},"parameters":{"id":15335,"nodeType":"ParameterList","parameters":[],"src":"3290:2:90"},"returnParameters":{"id":15340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15339,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15346,"src":"3323:15:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15337,"name":"string","nodeType":"ElementaryTypeName","src":"3323:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15338,"nodeType":"ArrayTypeName","src":"3323:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"src":"3322:17:90"},"scope":16300,"src":"3268:123:90","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1285],"body":{"id":15367,"nodeType":"Block","src":"3637:231:90","statements":[{"expression":{"arguments":[{"id":15362,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15349,"src":"3837:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":15363,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15352,"src":"3848:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"}},{"hexValue":"74727565","id":15364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3856:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15361,"name":"_addGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15884,"src":"3826:10:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr_$_t_bool_$returns$__$","typeString":"function (string memory,contract IStakelessGauge[] calldata,bool)"}},"id":15365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3826:35:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15366,"nodeType":"ExpressionStatement","src":"3826:35:90"}]},"documentation":{"id":15347,"nodeType":"StructuredDocumentation","src":"3397:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"d8dba2ce","id":15368,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15356,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15349,"src":"3601:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":15357,"modifierName":{"id":15355,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15270,"src":"3582:18:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"3582:29:90"},{"id":15359,"modifierName":{"id":15358,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3620:12:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3620:12:90"}],"name":"addGaugesWithVerifiedType","nodeType":"FunctionDefinition","overrides":{"id":15354,"nodeType":"OverrideSpecifier","overrides":[],"src":"3565:8:90"},"parameters":{"id":15353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15349,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15368,"src":"3480:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15348,"name":"string","nodeType":"ElementaryTypeName","src":"3480:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15352,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15368,"src":"3505:33:90","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":15350,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"3505:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15351,"nodeType":"ArrayTypeName","src":"3505:17:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"3479:60:90"},"returnParameters":{"id":15360,"nodeType":"ParameterList","parameters":[],"src":"3637:0:90"},"scope":16300,"src":"3445:423:90","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1294],"body":{"id":15387,"nodeType":"Block","src":"4077:168:90","statements":[{"expression":{"arguments":[{"id":15382,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15371,"src":"4213:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":15383,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15374,"src":"4224:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"}},{"hexValue":"66616c7365","id":15384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4232:5:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15381,"name":"_addGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15884,"src":"4202:10:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr_$_t_bool_$returns$__$","typeString":"function (string memory,contract IStakelessGauge[] calldata,bool)"}},"id":15385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4202:36:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15386,"nodeType":"ExpressionStatement","src":"4202:36:90"}]},"documentation":{"id":15369,"nodeType":"StructuredDocumentation","src":"3874:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"f7178b88","id":15388,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15378,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15371,"src":"4062:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":15379,"modifierName":{"id":15377,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15270,"src":"4043:18:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"4043:29:90"}],"name":"addGauges","nodeType":"FunctionDefinition","overrides":{"id":15376,"nodeType":"OverrideSpecifier","overrides":[],"src":"4026:8:90"},"parameters":{"id":15375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15371,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15388,"src":"3941:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15370,"name":"string","nodeType":"ElementaryTypeName","src":"3941:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15374,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15388,"src":"3966:33:90","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":15372,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"3966:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15373,"nodeType":"ArrayTypeName","src":"3966:17:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"3940:60:90"},"returnParameters":{"id":15380,"nodeType":"ParameterList","parameters":[],"src":"4077:0:90"},"scope":16300,"src":"3922:323:90","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1303],"body":{"id":15454,"nodeType":"Block","src":"4457:673:90","statements":[{"assignments":[15404],"declarations":[{"constant":false,"id":15404,"mutability":"mutable","name":"gaugesForType","nodeType":"VariableDeclaration","scope":15454,"src":"4467:46:90","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":15403,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"4467:24:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"id":15408,"initialValue":{"baseExpression":{"id":15405,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"4516:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":15407,"indexExpression":{"id":15406,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15391,"src":"4524:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4516:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"nodeType":"VariableDeclarationStatement","src":"4467:67:90"},{"body":{"id":15452,"nodeType":"Block","src":"4589:535:90","statements":[{"assignments":[15421],"declarations":[{"constant":false,"id":15421,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15452,"src":"4825:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15420,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"4825:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"id":15425,"initialValue":{"baseExpression":{"id":15422,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15394,"src":"4849:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"}},"id":15424,"indexExpression":{"id":15423,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15410,"src":"4856:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4849:9:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"nodeType":"VariableDeclarationStatement","src":"4825:33:90"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15427,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15421,"src":"4880:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"is_killed","nodeType":"MemberAccess","referencedDeclaration":899,"src":"4880:15:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":15429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4880:17:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520776173206e6f74206b696c6c6564","id":15430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4899:22:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_d78cdf3238001e15a5db0f656c48ed7e94d18e2e50565575b7a8c6450f8e358b","typeString":"literal_string \"Gauge was not killed\""},"value":"Gauge was not killed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d78cdf3238001e15a5db0f656c48ed7e94d18e2e50565575b7a8c6450f8e358b","typeString":"literal_string \"Gauge was not killed\""}],"id":15426,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4872:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4872:50:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15432,"nodeType":"ExpressionStatement","src":"4872:50:90"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":15438,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15421,"src":"4973:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4965:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15436,"name":"address","nodeType":"ElementaryTypeName","src":"4965:7:90","typeDescriptions":{}}},"id":15439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4965:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15434,"name":"gaugesForType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15404,"src":"4944:13:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":15435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":6816,"src":"4944:20:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":15440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4944:36:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520776173206e6f7420616464656420746f2074686520636865636b706f696e746572","id":15441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4982:41:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_3e1284235dec29a2847105ee3a4152eb180dc3434f0f11a0ffb60549ca459823","typeString":"literal_string \"Gauge was not added to the checkpointer\""},"value":"Gauge was not added to the checkpointer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3e1284235dec29a2847105ee3a4152eb180dc3434f0f11a0ffb60549ca459823","typeString":"literal_string \"Gauge was not added to the checkpointer\""}],"id":15433,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4936:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4936:88:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15443,"nodeType":"ExpressionStatement","src":"4936:88:90"},{"eventCall":{"arguments":[{"id":15447,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15421,"src":"5085:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},{"id":15448,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15391,"src":"5092:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":15449,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15391,"src":"5103:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":15444,"name":"IStakelessGaugeCheckpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"5044:27:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGaugeCheckpointer_$1417_$","typeString":"type(contract IStakelessGaugeCheckpointer)"}},"id":15446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"GaugeRemoved","nodeType":"MemberAccess","referencedDeclaration":1263,"src":"5044:40:90","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IStakelessGauge_$1239_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (contract IStakelessGauge,string memory,string memory)"}},"id":15450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5044:69:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15451,"nodeType":"EmitStatement","src":"5039:74:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15413,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15410,"src":"4565:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15414,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15394,"src":"4569:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"}},"id":15415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4569:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4565:17:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15453,"initializationExpression":{"assignments":[15410],"declarations":[{"constant":false,"id":15410,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15453,"src":"4550:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15409,"name":"uint256","nodeType":"ElementaryTypeName","src":"4550:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15412,"initialValue":{"hexValue":"30","id":15411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4562:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4550:13:90"},"loopExpression":{"expression":{"id":15418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4584:3:90","subExpression":{"id":15417,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15410,"src":"4584:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15419,"nodeType":"ExpressionStatement","src":"4584:3:90"},"nodeType":"ForStatement","src":"4545:579:90"}]},"documentation":{"id":15389,"nodeType":"StructuredDocumentation","src":"4251:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"73ebd060","id":15455,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15398,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15391,"src":"4442:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":15399,"modifierName":{"id":15397,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15270,"src":"4423:18:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"4423:29:90"}],"name":"removeGauges","nodeType":"FunctionDefinition","overrides":{"id":15396,"nodeType":"OverrideSpecifier","overrides":[],"src":"4406:8:90"},"parameters":{"id":15395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15391,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15455,"src":"4321:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15390,"name":"string","nodeType":"ElementaryTypeName","src":"4321:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15394,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15455,"src":"4346:33:90","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":15392,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"4346:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15393,"nodeType":"ArrayTypeName","src":"4346:17:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"4320:60:90"},"returnParameters":{"id":15400,"nodeType":"ParameterList","parameters":[],"src":"4457:0:90"},"scope":16300,"src":"4299:831:90","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1313],"body":{"id":15479,"nodeType":"Block","src":"5360:67:90","statements":[{"expression":{"arguments":[{"arguments":[{"id":15475,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15460,"src":"5413:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5405:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15473,"name":"address","nodeType":"ElementaryTypeName","src":"5405:7:90","typeDescriptions":{}}},"id":15476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5405:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"id":15469,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"5377:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":15471,"indexExpression":{"id":15470,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15458,"src":"5385:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5377:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":15472,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":6834,"src":"5377:27:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"}},"id":15477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5377:43:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":15468,"id":15478,"nodeType":"Return","src":"5370:50:90"}]},"documentation":{"id":15456,"nodeType":"StructuredDocumentation","src":"5136:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"c91be043","id":15480,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15464,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15458,"src":"5322:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":15465,"modifierName":{"id":15463,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15270,"src":"5303:18:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"5303:29:90"}],"name":"hasGauge","nodeType":"FunctionDefinition","overrides":{"id":15462,"nodeType":"OverrideSpecifier","overrides":[],"src":"5286:8:90"},"parameters":{"id":15461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15458,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15480,"src":"5202:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15457,"name":"string","nodeType":"ElementaryTypeName","src":"5202:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15460,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15480,"src":"5227:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15459,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"5227:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"5201:48:90"},"returnParameters":{"id":15468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15467,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15480,"src":"5350:4:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15466,"name":"bool","nodeType":"ElementaryTypeName","src":"5350:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5349:6:90"},"scope":16300,"src":"5184:243:90","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1321],"body":{"id":15498,"nodeType":"Block","src":"5645:51:90","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":15492,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"5662:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":15494,"indexExpression":{"id":15493,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15483,"src":"5670:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5662:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":15495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6847,"src":"5662:25:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":15496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5662:27:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15491,"id":15497,"nodeType":"Return","src":"5655:34:90"}]},"documentation":{"id":15481,"nodeType":"StructuredDocumentation","src":"5433:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"4db34d2a","id":15499,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15487,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15483,"src":"5604:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":15488,"modifierName":{"id":15486,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15270,"src":"5585:18:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"5585:29:90"}],"name":"getTotalGauges","nodeType":"FunctionDefinition","overrides":{"id":15485,"nodeType":"OverrideSpecifier","overrides":[],"src":"5568:8:90"},"parameters":{"id":15484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15483,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15499,"src":"5505:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15482,"name":"string","nodeType":"ElementaryTypeName","src":"5505:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5504:25:90"},"returnParameters":{"id":15491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15490,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15499,"src":"5632:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15489,"name":"uint256","nodeType":"ElementaryTypeName","src":"5632:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5631:9:90"},"scope":16300,"src":"5481:215:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1331],"body":{"id":15522,"nodeType":"Block","src":"5938:69:90","statements":[{"expression":{"arguments":[{"arguments":[{"id":15518,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15504,"src":"5993:5:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":15514,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"5971:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":15516,"indexExpression":{"id":15515,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15502,"src":"5979:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5971:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":15517,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":6873,"src":"5971:21:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":15519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5971:28:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15513,"name":"IStakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"5955:15:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGauge_$1239_$","typeString":"type(contract IStakelessGauge)"}},"id":15520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5955:45:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"functionReturnParameters":15512,"id":15521,"nodeType":"Return","src":"5948:52:90"}]},"documentation":{"id":15500,"nodeType":"StructuredDocumentation","src":"5702:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"27cb2a3b","id":15523,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15508,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15502,"src":"5889:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":15509,"modifierName":{"id":15507,"name":"withValidGaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15270,"src":"5870:18:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$","typeString":"modifier (string memory)"}},"nodeType":"ModifierInvocation","src":"5870:29:90"}],"name":"getGaugeAtIndex","nodeType":"FunctionDefinition","overrides":{"id":15506,"nodeType":"OverrideSpecifier","overrides":[],"src":"5853:8:90"},"parameters":{"id":15505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15502,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15523,"src":"5775:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15501,"name":"string","nodeType":"ElementaryTypeName","src":"5775:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15504,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":15523,"src":"5800:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15503,"name":"uint256","nodeType":"ElementaryTypeName","src":"5800:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5774:40:90"},"returnParameters":{"id":15512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15511,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15523,"src":"5917:15:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15510,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"5917:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"5916:17:90"},"scope":16300,"src":"5750:257:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1337],"body":{"id":15533,"nodeType":"Block","src":"6142:50:90","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15530,"name":"_roundDownBlockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16299,"src":"6159:24:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6159:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15529,"id":15532,"nodeType":"Return","src":"6152:33:90"}]},"documentation":{"id":15524,"nodeType":"StructuredDocumentation","src":"6013:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"46583adf","id":15534,"implemented":true,"kind":"function","modifiers":[],"name":"getRoundedDownBlockTimestamp","nodeType":"FunctionDefinition","overrides":{"id":15526,"nodeType":"OverrideSpecifier","overrides":[],"src":"6115:8:90"},"parameters":{"id":15525,"nodeType":"ParameterList","parameters":[],"src":"6098:2:90"},"returnParameters":{"id":15529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15528,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15534,"src":"6133:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15527,"name":"uint256","nodeType":"ElementaryTypeName","src":"6133:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6132:9:90"},"scope":16300,"src":"6061:131:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1343],"body":{"id":15559,"nodeType":"Block","src":"6415:150:90","statements":[{"assignments":[15549],"declarations":[{"constant":false,"id":15549,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":15559,"src":"6425:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15547,"name":"string","nodeType":"ElementaryTypeName","src":"6425:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15548,"nodeType":"ArrayTypeName","src":"6425:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"id":15553,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15550,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"6454:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getGaugeTypes","nodeType":"MemberAccess","referencedDeclaration":676,"src":"6454:25:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$","typeString":"function () view external returns (string memory[] memory)"}},"id":15552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6454:27:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6425:56:90"},{"expression":{"arguments":[{"id":15555,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15549,"src":"6528:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},{"id":15556,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15537,"src":"6540:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15554,"name":"_checkpointGaugesAboveRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16069,"src":"6491:36:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory[] memory,uint256)"}},"id":15557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6491:67:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15558,"nodeType":"ExpressionStatement","src":"6491:67:90"}]},"documentation":{"id":15535,"nodeType":"StructuredDocumentation","src":"6198:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"804d17dc","id":15560,"implemented":true,"kind":"function","modifiers":[{"id":15541,"modifierName":{"id":15540,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"6379:12:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"6379:12:90"},{"id":15543,"modifierName":{"id":15542,"name":"refundsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15323,"src":"6400:10:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"6400:10:90"}],"name":"checkpointAllGaugesAboveRelativeWeight","nodeType":"FunctionDefinition","overrides":{"id":15539,"nodeType":"OverrideSpecifier","overrides":[],"src":"6362:8:90"},"parameters":{"id":15538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15537,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":15560,"src":"6294:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15536,"name":"uint256","nodeType":"ElementaryTypeName","src":"6294:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6293:27:90"},"returnParameters":{"id":15544,"nodeType":"ParameterList","parameters":[],"src":"6415:0:90"},"scope":16300,"src":"6246:319:90","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1352],"body":{"id":15582,"nodeType":"Block","src":"6860:84:90","statements":[{"expression":{"arguments":[{"id":15578,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15564,"src":"6907:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},{"id":15579,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15566,"src":"6919:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15577,"name":"_checkpointGaugesAboveRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16069,"src":"6870:36:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory[] memory,uint256)"}},"id":15580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6870:67:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15581,"nodeType":"ExpressionStatement","src":"6870:67:90"}]},"documentation":{"id":15561,"nodeType":"StructuredDocumentation","src":"6571:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"97510496","id":15583,"implemented":true,"kind":"function","modifiers":[{"id":15570,"modifierName":{"id":15569,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"6784:12:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"6784:12:90"},{"arguments":[{"id":15572,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15564,"src":"6825:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}}],"id":15573,"modifierName":{"id":15571,"name":"withValidGaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15300,"src":"6805:19:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$","typeString":"modifier (string memory[] memory)"}},"nodeType":"ModifierInvocation","src":"6805:31:90"},{"id":15575,"modifierName":{"id":15574,"name":"refundsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15323,"src":"6845:10:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"6845:10:90"}],"name":"checkpointGaugesOfTypesAboveRelativeWeight","nodeType":"FunctionDefinition","overrides":{"id":15568,"nodeType":"OverrideSpecifier","overrides":[],"src":"6767:8:90"},"parameters":{"id":15567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15564,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":15583,"src":"6671:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15562,"name":"string","nodeType":"ElementaryTypeName","src":"6671:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15563,"nodeType":"ArrayTypeName","src":"6671:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":15566,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":15583,"src":"6699:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15565,"name":"uint256","nodeType":"ElementaryTypeName","src":"6699:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6670:55:90"},"returnParameters":{"id":15576,"nodeType":"ParameterList","parameters":[],"src":"6860:0:90"},"scope":16300,"src":"6619:325:90","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1360],"body":{"id":15604,"nodeType":"Block","src":"7212:46:90","statements":[{"expression":{"arguments":[{"id":15601,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15588,"src":"7245:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15600,"name":"_checkpointSingleGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16256,"src":"7222:22:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"}},"id":15602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7222:29:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15603,"nodeType":"ExpressionStatement","src":"7222:29:90"}]},"documentation":{"id":15584,"nodeType":"StructuredDocumentation","src":"6950:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"7d0a6616","id":15605,"implemented":true,"kind":"function","modifiers":[{"id":15592,"modifierName":{"id":15591,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"7135:12:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"7135:12:90"},{"arguments":[{"id":15594,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15586,"src":"7171:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":15595,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15588,"src":"7182:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"id":15596,"modifierName":{"id":15593,"name":"withValidGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15316,"src":"7156:14:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$_t_contract$_IStakelessGauge_$1239_$","typeString":"modifier (string memory,contract IStakelessGauge)"}},"nodeType":"ModifierInvocation","src":"7156:32:90"},{"id":15598,"modifierName":{"id":15597,"name":"refundsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15323,"src":"7197:10:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"7197:10:90"}],"name":"checkpointSingleGauge","nodeType":"FunctionDefinition","overrides":{"id":15590,"nodeType":"OverrideSpecifier","overrides":[],"src":"7118:8:90"},"parameters":{"id":15589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15586,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15605,"src":"7029:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15585,"name":"string","nodeType":"ElementaryTypeName","src":"7029:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15588,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15605,"src":"7054:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15587,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"7054:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"7028:48:90"},"returnParameters":{"id":15599,"nodeType":"ParameterList","parameters":[],"src":"7212:0:90"},"scope":16300,"src":"6998:260:90","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1369],"body":{"id":15652,"nodeType":"Block","src":"7512:278:90","statements":[{"assignments":[15620],"declarations":[{"constant":false,"id":15620,"mutability":"mutable","name":"length","nodeType":"VariableDeclaration","scope":15652,"src":"7522:14:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15619,"name":"uint256","nodeType":"ElementaryTypeName","src":"7522:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15623,"initialValue":{"expression":{"id":15621,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15611,"src":"7539:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[] memory"}},"id":15622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7539:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7522:30:90"},{"body":{"id":15650,"nodeType":"Block","src":"7599:185:90","statements":[{"expression":{"arguments":[{"arguments":[{"id":15636,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15608,"src":"7684:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"baseExpression":{"id":15637,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15611,"src":"7695:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[] memory"}},"id":15639,"indexExpression":{"id":15638,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15625,"src":"7702:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7695:9:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15635,"name":"hasGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"7675:8:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$_t_contract$_IStakelessGauge_$1239_$returns$_t_bool_$","typeString":"function (string memory,contract IStakelessGauge) view returns (bool)"}},"id":15640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7675:30:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4761756765206e6f74206164646564","id":15641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7707:17:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_777198c5277c092a0b9003b985175c31e16a94f16e375f696473f999836a77f7","typeString":"literal_string \"Gauge not added\""},"value":"Gauge not added"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_777198c5277c092a0b9003b985175c31e16a94f16e375f696473f999836a77f7","typeString":"literal_string \"Gauge not added\""}],"id":15634,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7667:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7667:58:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15643,"nodeType":"ExpressionStatement","src":"7667:58:90"},{"expression":{"arguments":[{"baseExpression":{"id":15645,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15611,"src":"7763:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[] memory"}},"id":15647,"indexExpression":{"id":15646,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15625,"src":"7770:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7763:9:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15644,"name":"_checkpointSingleGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16256,"src":"7740:22:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"}},"id":15648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7740:33:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15649,"nodeType":"ExpressionStatement","src":"7740:33:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15628,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15625,"src":"7582:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15629,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15620,"src":"7586:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7582:10:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15651,"initializationExpression":{"assignments":[15625],"declarations":[{"constant":false,"id":15625,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15651,"src":"7567:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15624,"name":"uint256","nodeType":"ElementaryTypeName","src":"7567:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15627,"initialValue":{"hexValue":"30","id":15626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7579:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7567:13:90"},"loopExpression":{"expression":{"id":15632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7594:3:90","subExpression":{"id":15631,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15625,"src":"7596:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15633,"nodeType":"ExpressionStatement","src":"7594:3:90"},"nodeType":"ForStatement","src":"7562:222:90"}]},"documentation":{"id":15606,"nodeType":"StructuredDocumentation","src":"7264:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"43590308","id":15653,"implemented":true,"kind":"function","modifiers":[{"id":15615,"modifierName":{"id":15614,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"7476:12:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"7476:12:90"},{"id":15617,"modifierName":{"id":15616,"name":"refundsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15323,"src":"7497:10:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"7497:10:90"}],"name":"checkpointMultipleGaugesOfMatchingType","nodeType":"FunctionDefinition","overrides":{"id":15613,"nodeType":"OverrideSpecifier","overrides":[],"src":"7459:8:90"},"parameters":{"id":15612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15608,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15653,"src":"7360:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15607,"name":"string","nodeType":"ElementaryTypeName","src":"7360:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15611,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15653,"src":"7385:31:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":15609,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"7385:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15610,"nodeType":"ArrayTypeName","src":"7385:17:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"7359:58:90"},"returnParameters":{"id":15618,"nodeType":"ParameterList","parameters":[],"src":"7512:0:90"},"scope":16300,"src":"7312:478:90","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1379],"body":{"id":15712,"nodeType":"Block","src":"8033:382:90","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15669,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15657,"src":"8051:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":15670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8051:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":15671,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15660,"src":"8072:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[] memory"}},"id":15672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8072:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8051:34:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d69736d61746368206265747765656e20676175676520747970657320616e6420616464726573736573","id":15674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8087:44:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e60a0f1b977079650e11977f40048ef97e69bfc3ccab4fc1265df3bfff1c648","typeString":"literal_string \"Mismatch between gauge types and addresses\""},"value":"Mismatch between gauge types and addresses"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e60a0f1b977079650e11977f40048ef97e69bfc3ccab4fc1265df3bfff1c648","typeString":"literal_string \"Mismatch between gauge types and addresses\""}],"id":15668,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8043:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8043:89:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15676,"nodeType":"ExpressionStatement","src":"8043:89:90"},{"assignments":[15678],"declarations":[{"constant":false,"id":15678,"mutability":"mutable","name":"length","nodeType":"VariableDeclaration","scope":15712,"src":"8143:14:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15677,"name":"uint256","nodeType":"ElementaryTypeName","src":"8143:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15681,"initialValue":{"expression":{"id":15679,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15660,"src":"8160:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[] memory"}},"id":15680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8160:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8143:30:90"},{"body":{"id":15710,"nodeType":"Block","src":"8220:189:90","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":15694,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15657,"src":"8305:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":15696,"indexExpression":{"id":15695,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15683,"src":"8316:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8305:13:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"baseExpression":{"id":15697,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15660,"src":"8320:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[] memory"}},"id":15699,"indexExpression":{"id":15698,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15683,"src":"8327:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8320:9:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15693,"name":"hasGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"8296:8:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$_t_contract$_IStakelessGauge_$1239_$returns$_t_bool_$","typeString":"function (string memory,contract IStakelessGauge) view returns (bool)"}},"id":15700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8296:34:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4761756765206e6f74206164646564","id":15701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8332:17:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_777198c5277c092a0b9003b985175c31e16a94f16e375f696473f999836a77f7","typeString":"literal_string \"Gauge not added\""},"value":"Gauge not added"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_777198c5277c092a0b9003b985175c31e16a94f16e375f696473f999836a77f7","typeString":"literal_string \"Gauge not added\""}],"id":15692,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8288:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8288:62:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15703,"nodeType":"ExpressionStatement","src":"8288:62:90"},{"expression":{"arguments":[{"baseExpression":{"id":15705,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15660,"src":"8388:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[] memory"}},"id":15707,"indexExpression":{"id":15706,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15683,"src":"8395:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8388:9:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15704,"name":"_checkpointSingleGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16256,"src":"8365:22:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"}},"id":15708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8365:33:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15709,"nodeType":"ExpressionStatement","src":"8365:33:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15686,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15683,"src":"8203:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15687,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15678,"src":"8207:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8203:10:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15711,"initializationExpression":{"assignments":[15683],"declarations":[{"constant":false,"id":15683,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15711,"src":"8188:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15682,"name":"uint256","nodeType":"ElementaryTypeName","src":"8188:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15685,"initialValue":{"hexValue":"30","id":15684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8200:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8188:13:90"},"loopExpression":{"expression":{"id":15690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8215:3:90","subExpression":{"id":15689,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15683,"src":"8217:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15691,"nodeType":"ExpressionStatement","src":"8215:3:90"},"nodeType":"ForStatement","src":"8183:226:90"}]},"documentation":{"id":15654,"nodeType":"StructuredDocumentation","src":"7796:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"4a3a1e11","id":15713,"implemented":true,"kind":"function","modifiers":[{"id":15664,"modifierName":{"id":15663,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"7997:12:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"7997:12:90"},{"id":15666,"modifierName":{"id":15665,"name":"refundsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15323,"src":"8018:10:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"8018:10:90"}],"name":"checkpointMultipleGauges","nodeType":"FunctionDefinition","overrides":{"id":15662,"nodeType":"OverrideSpecifier","overrides":[],"src":"7980:8:90"},"parameters":{"id":15661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15657,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":15713,"src":"7878:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15655,"name":"string","nodeType":"ElementaryTypeName","src":"7878:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15656,"nodeType":"ArrayTypeName","src":"7878:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":15660,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15713,"src":"7906:31:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_memory_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":15658,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"7906:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15659,"nodeType":"ArrayTypeName","src":"7906:17:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"}],"src":"7877:61:90"},"returnParameters":{"id":15667,"nodeType":"ParameterList","parameters":[],"src":"8033:0:90"},"scope":16300,"src":"7844:571:90","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1408],"body":{"id":15732,"nodeType":"Block","src":"8664:51:90","statements":[{"expression":{"arguments":[{"id":15729,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15718,"src":"8702:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15728,"name":"_getSingleBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15908,"src":"8681:20:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IStakelessGauge_$1239_$returns$_t_uint256_$","typeString":"function (contract IStakelessGauge) view returns (uint256)"}},"id":15730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8681:27:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15727,"id":15731,"nodeType":"Return","src":"8674:34:90"}]},"documentation":{"id":15714,"nodeType":"StructuredDocumentation","src":"8421:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"2adbe5ac","id":15733,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15722,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15716,"src":"8616:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":15723,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15718,"src":"8627:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"id":15724,"modifierName":{"id":15721,"name":"withValidGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15316,"src":"8601:14:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_string_memory_ptr_$_t_contract$_IStakelessGauge_$1239_$","typeString":"modifier (string memory,contract IStakelessGauge)"}},"nodeType":"ModifierInvocation","src":"8601:32:90"}],"name":"getSingleBridgeCost","nodeType":"FunctionDefinition","overrides":{"id":15720,"nodeType":"OverrideSpecifier","overrides":[],"src":"8584:8:90"},"parameters":{"id":15719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15716,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15733,"src":"8498:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15715,"name":"string","nodeType":"ElementaryTypeName","src":"8498:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15718,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15733,"src":"8523:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15717,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"8523:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"8497:48:90"},"returnParameters":{"id":15727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15726,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15733,"src":"8651:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15725,"name":"uint256","nodeType":"ElementaryTypeName","src":"8651:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8650:9:90"},"scope":16300,"src":"8469:246:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1398],"body":{"id":15753,"nodeType":"Block","src":"8974:84:90","statements":[{"expression":{"arguments":[{"id":15749,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15737,"src":"9021:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},{"id":15750,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15739,"src":"9033:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15748,"name":"_getGaugeTypesTotalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16034,"src":"8991:29:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (string memory[] memory,uint256) view returns (uint256)"}},"id":15751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8991:60:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15747,"id":15752,"nodeType":"Return","src":"8984:67:90"}]},"documentation":{"id":15734,"nodeType":"StructuredDocumentation","src":"8721:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"a9a7f87e","id":15754,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15743,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15737,"src":"8932:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}}],"id":15744,"modifierName":{"id":15742,"name":"withValidGaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15300,"src":"8912:19:90","typeDescriptions":{"typeIdentifier":"t_modifier$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$","typeString":"modifier (string memory[] memory)"}},"nodeType":"ModifierInvocation","src":"8912:31:90"}],"name":"getGaugeTypesBridgeCost","nodeType":"FunctionDefinition","overrides":{"id":15741,"nodeType":"OverrideSpecifier","overrides":[],"src":"8895:8:90"},"parameters":{"id":15740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15737,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":15754,"src":"8802:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15735,"name":"string","nodeType":"ElementaryTypeName","src":"8802:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15736,"nodeType":"ArrayTypeName","src":"8802:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":15739,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":15754,"src":"8830:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15738,"name":"uint256","nodeType":"ElementaryTypeName","src":"8830:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8801:55:90"},"returnParameters":{"id":15747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15746,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15754,"src":"8961:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15745,"name":"uint256","nodeType":"ElementaryTypeName","src":"8961:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8960:9:90"},"scope":16300,"src":"8769:289:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1387],"body":{"id":15776,"nodeType":"Block","src":"9208:138:90","statements":[{"assignments":[15767],"declarations":[{"constant":false,"id":15767,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":15776,"src":"9218:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15765,"name":"string","nodeType":"ElementaryTypeName","src":"9218:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15766,"nodeType":"ArrayTypeName","src":"9218:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"id":15770,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15768,"name":"getGaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15346,"src":"9247:13:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$","typeString":"function () view returns (string memory[] memory)"}},"id":15769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9247:15:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9218:44:90"},{"expression":{"arguments":[{"id":15772,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15767,"src":"9309:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},{"id":15773,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15757,"src":"9321:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15771,"name":"_getGaugeTypesTotalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16034,"src":"9279:29:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (string memory[] memory,uint256) view returns (uint256)"}},"id":15774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9279:60:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15762,"id":15775,"nodeType":"Return","src":"9272:67:90"}]},"documentation":{"id":15755,"nodeType":"StructuredDocumentation","src":"9064:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"27f79107","id":15777,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalBridgeCost","nodeType":"FunctionDefinition","overrides":{"id":15759,"nodeType":"OverrideSpecifier","overrides":[],"src":"9181:8:90"},"parameters":{"id":15758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15757,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":15777,"src":"9140:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15756,"name":"uint256","nodeType":"ElementaryTypeName","src":"9140:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9139:27:90"},"returnParameters":{"id":15762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15761,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15777,"src":"9199:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15760,"name":"uint256","nodeType":"ElementaryTypeName","src":"9199:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9198:9:90"},"scope":16300,"src":"9112:234:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1416],"body":{"id":15791,"nodeType":"Block","src":"9489:63:90","statements":[{"expression":{"arguments":[{"id":15788,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15780,"src":"9535:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":15786,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"9506:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isValidGaugeType","nodeType":"MemberAccess","referencedDeclaration":698,"src":"9506:28:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (string memory) view external returns (bool)"}},"id":15789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9506:39:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":15785,"id":15790,"nodeType":"Return","src":"9499:46:90"}]},"documentation":{"id":15778,"nodeType":"StructuredDocumentation","src":"9352:43:90","text":"@inheritdoc IStakelessGaugeCheckpointer"},"functionSelector":"16e772bc","id":15792,"implemented":true,"kind":"function","modifiers":[],"name":"isValidGaugeType","nodeType":"FunctionDefinition","overrides":{"id":15782,"nodeType":"OverrideSpecifier","overrides":[],"src":"9465:8:90"},"parameters":{"id":15781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15780,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15792,"src":"9426:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15779,"name":"string","nodeType":"ElementaryTypeName","src":"9426:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9425:25:90"},"returnParameters":{"id":15785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15784,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15792,"src":"9483:4:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15783,"name":"bool","nodeType":"ElementaryTypeName","src":"9483:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9482:6:90"},"scope":16300,"src":"9400:152:90","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":15883,"nodeType":"Block","src":"9703:1386:90","statements":[{"assignments":[15805],"declarations":[{"constant":false,"id":15805,"mutability":"mutable","name":"gaugesForType","nodeType":"VariableDeclaration","scope":15883,"src":"9713:46:90","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":15804,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"9713:24:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"id":15809,"initialValue":{"baseExpression":{"id":15806,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"9762:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":15808,"indexExpression":{"id":15807,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15794,"src":"9770:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9762:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9713:67:90"},{"body":{"id":15881,"nodeType":"Block","src":"9835:1248:90","statements":[{"assignments":[15822],"declarations":[{"constant":false,"id":15822,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15881,"src":"9849:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15821,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"9849:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"id":15826,"initialValue":{"baseExpression":{"id":15823,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15797,"src":"9873:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"}},"id":15825,"indexExpression":{"id":15824,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15811,"src":"9880:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9873:9:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"nodeType":"VariableDeclarationStatement","src":"9849:33:90"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":15832,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15822,"src":"10133:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10125:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15830,"name":"address","nodeType":"ElementaryTypeName","src":"10125:7:90","typeDescriptions":{}}},"id":15833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10125:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15828,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15229,"src":"10095:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":15829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gauge_exists","nodeType":"MemberAccess","referencedDeclaration":813,"src":"10095:29:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":15834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10095:45:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520776173206e6f7420616464656420746f20746865204761756765436f6e74726f6c6c6572","id":15835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10142:44:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_03758ab4a7950bd3318c235fefee4fd1d5b4c4183e3acfa57fc1c28d799413b9","typeString":"literal_string \"Gauge was not added to the GaugeController\""},"value":"Gauge was not added to the GaugeController"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_03758ab4a7950bd3318c235fefee4fd1d5b4c4183e3acfa57fc1c28d799413b9","typeString":"literal_string \"Gauge was not added to the GaugeController\""}],"id":15827,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10087:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10087:100:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15837,"nodeType":"ExpressionStatement","src":"10087:100:90"},{"expression":{"arguments":[{"id":15842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10209:18:90","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15839,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15822,"src":"10210:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"is_killed","nodeType":"MemberAccess","referencedDeclaration":899,"src":"10210:15:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":15841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10210:17:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520776173206b696c6c6564","id":15843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10229:18:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_639c68972bc65d7e267d4aba7b12fea429538dea719c7751d3fbfe2c9f9ef5be","typeString":"literal_string \"Gauge was killed\""},"value":"Gauge was killed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_639c68972bc65d7e267d4aba7b12fea429538dea719c7751d3fbfe2c9f9ef5be","typeString":"literal_string \"Gauge was killed\""}],"id":15838,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10201:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10201:47:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15845,"nodeType":"ExpressionStatement","src":"10201:47:90"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":15851,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15822,"src":"10296:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10288:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15849,"name":"address","nodeType":"ElementaryTypeName","src":"10288:7:90","typeDescriptions":{}}},"id":15852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10288:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15847,"name":"gaugesForType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15805,"src":"10270:13:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":15848,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":6731,"src":"10270:17:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":15853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10270:33:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520616c726561647920616464656420746f2074686520636865636b706f696e746572","id":15854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10305:41:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_fc8150c76d46c4a5a2ae309b99e2a88f1e561c5ed068162b1fd62c4debeb74ef","typeString":"literal_string \"Gauge already added to the checkpointer\""},"value":"Gauge already added to the checkpointer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fc8150c76d46c4a5a2ae309b99e2a88f1e561c5ed068162b1fd62c4debeb74ef","typeString":"literal_string \"Gauge already added to the checkpointer\""}],"id":15846,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10262:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10262:85:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15856,"nodeType":"ExpressionStatement","src":"10262:85:90"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15858,"name":"isGaugeTypeVerified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"10802:19:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"arguments":[{"id":15866,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15822,"src":"10898:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10890:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15864,"name":"address","nodeType":"ElementaryTypeName","src":"10890:7:90","typeDescriptions":{}}},"id":15867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10890:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":15861,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15794,"src":"10860:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":15859,"name":"_gaugeAdder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15227,"src":"10825:11:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeAdder_$739","typeString":"contract IGaugeAdder"}},"id":15860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getFactoryForGaugeType","nodeType":"MemberAccess","referencedDeclaration":706,"src":"10825:34:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_string_memory_ptr_$returns$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"function (string memory) view external returns (contract ILiquidityGaugeFactory)"}},"id":15862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10825:45:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":15863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isGaugeFromFactory","nodeType":"MemberAccess","referencedDeclaration":940,"src":"10825:64:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":15868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10825:80:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10802:103:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520646f6573206e6f7420636f72726573706f6e6420746f207468652073656c65637465642074797065","id":15870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10923:48:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d95f386beaab6f41230e0b55137df6a9cda6d83f88495685cf04184d4a5c90","typeString":"literal_string \"Gauge does not correspond to the selected type\""},"value":"Gauge does not correspond to the selected type"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_24d95f386beaab6f41230e0b55137df6a9cda6d83f88495685cf04184d4a5c90","typeString":"literal_string \"Gauge does not correspond to the selected type\""}],"id":15857,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10777:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10777:208:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15872,"nodeType":"ExpressionStatement","src":"10777:208:90"},{"eventCall":{"arguments":[{"id":15876,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15822,"src":"11044:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},{"id":15877,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15794,"src":"11051:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":15878,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15794,"src":"11062:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":15873,"name":"IStakelessGaugeCheckpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"11005:27:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGaugeCheckpointer_$1417_$","typeString":"type(contract IStakelessGaugeCheckpointer)"}},"id":15875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"GaugeAdded","nodeType":"MemberAccess","referencedDeclaration":1254,"src":"11005:38:90","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IStakelessGauge_$1239_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (contract IStakelessGauge,string memory,string memory)"}},"id":15879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11005:67:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15880,"nodeType":"EmitStatement","src":"11000:72:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15814,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15811,"src":"9811:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15815,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15797,"src":"9815:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[] calldata"}},"id":15816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9815:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9811:17:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15882,"initializationExpression":{"assignments":[15811],"declarations":[{"constant":false,"id":15811,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15882,"src":"9796:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15810,"name":"uint256","nodeType":"ElementaryTypeName","src":"9796:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15813,"initialValue":{"hexValue":"30","id":15812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9808:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9796:13:90"},"loopExpression":{"expression":{"id":15819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9830:3:90","subExpression":{"id":15818,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15811,"src":"9830:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15820,"nodeType":"ExpressionStatement","src":"9830:3:90"},"nodeType":"ForStatement","src":"9791:1292:90"}]},"id":15884,"implemented":true,"kind":"function","modifiers":[],"name":"_addGauges","nodeType":"FunctionDefinition","parameters":{"id":15800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15794,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15884,"src":"9587:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15793,"name":"string","nodeType":"ElementaryTypeName","src":"9587:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15797,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15884,"src":"9620:33:90","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_calldata_ptr","typeString":"contract IStakelessGauge[]"},"typeName":{"baseType":{"id":15795,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"9620:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15796,"nodeType":"ArrayTypeName","src":"9620:17:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakelessGauge_$1239_$dyn_storage_ptr","typeString":"contract IStakelessGauge[]"}},"visibility":"internal"},{"constant":false,"id":15799,"mutability":"mutable","name":"isGaugeTypeVerified","nodeType":"VariableDeclaration","scope":15884,"src":"9663:24:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15798,"name":"bool","nodeType":"ElementaryTypeName","src":"9663:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9577:116:90"},"returnParameters":{"id":15801,"nodeType":"ParameterList","parameters":[],"src":"9703:0:90"},"scope":16300,"src":"9558:1531:90","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15907,"nodeType":"Block","src":"11340:329:90","statements":[{"clauses":[{"block":{"id":15900,"nodeType":"Block","src":"11587:36:90","statements":[{"expression":{"id":15898,"name":"cost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15896,"src":"11608:4:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15891,"id":15899,"nodeType":"Return","src":"11601:11:90"}]},"errorName":"","id":15901,"nodeType":"TryCatchClause","parameters":{"id":15897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15896,"mutability":"mutable","name":"cost","nodeType":"VariableDeclaration","scope":15901,"src":"11573:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15895,"name":"uint256","nodeType":"ElementaryTypeName","src":"11573:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11572:14:90"},"src":"11564:59:90"},{"block":{"id":15904,"nodeType":"Block","src":"11630:33:90","statements":[{"expression":{"hexValue":"30","id":15902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11651:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":15891,"id":15903,"nodeType":"Return","src":"11644:8:90"}]},"errorName":"","id":15905,"nodeType":"TryCatchClause","src":"11624:39:90"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15892,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15887,"src":"11537:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":15893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTotalBridgeCost","nodeType":"MemberAccess","referencedDeclaration":1238,"src":"11537:24:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":15894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11537:26:90","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15906,"nodeType":"TryStatement","src":"11533:130:90"}]},"documentation":{"id":15885,"nodeType":"StructuredDocumentation","src":"11095:155:90","text":" @dev Malicious contracts are ruled out at this stage: gauges shall be validated in external functions before\n reaching this point."},"id":15908,"implemented":true,"kind":"function","modifiers":[],"name":"_getSingleBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":15888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15887,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15908,"src":"11285:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":15886,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"11285:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"11284:23:90"},"returnParameters":{"id":15891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15890,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15908,"src":"11331:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15889,"name":"uint256","nodeType":"ElementaryTypeName","src":"11331:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11330:9:90"},"scope":16300,"src":"11255:414:90","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15996,"nodeType":"Block","src":"11835:1567:90","statements":[{"assignments":[15918],"declarations":[{"constant":false,"id":15918,"mutability":"mutable","name":"currentPeriod","nodeType":"VariableDeclaration","scope":15996,"src":"11845:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15917,"name":"uint256","nodeType":"ElementaryTypeName","src":"11845:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15921,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15919,"name":"_roundDownBlockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16299,"src":"11869:24:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11869:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11845:50:90"},{"assignments":[15923],"declarations":[{"constant":false,"id":15923,"mutability":"mutable","name":"gaugeCount","nodeType":"VariableDeclaration","scope":15996,"src":"11905:18:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15922,"name":"uint256","nodeType":"ElementaryTypeName","src":"11905:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15929,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":15924,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"11926:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":15926,"indexExpression":{"id":15925,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15910,"src":"11934:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11926:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":15927,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6847,"src":"11926:25:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":15928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11926:27:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11905:48:90"},{"assignments":[15933],"declarations":[{"constant":false,"id":15933,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15996,"src":"11963:39:90","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":15932,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"11963:24:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"id":15937,"initialValue":{"baseExpression":{"id":15934,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"12005:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":15936,"indexExpression":{"id":15935,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15910,"src":"12013:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12005:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"nodeType":"VariableDeclarationStatement","src":"11963:60:90"},{"body":{"id":15994,"nodeType":"Block","src":"12075:1321:90","statements":[{"assignments":[15949],"declarations":[{"constant":false,"id":15949,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":15994,"src":"12089:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15948,"name":"address","nodeType":"ElementaryTypeName","src":"12089:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":15954,"initialValue":{"arguments":[{"id":15952,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15939,"src":"12125:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15950,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15933,"src":"12105:6:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":15951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"unchecked_at","nodeType":"MemberAccess","referencedDeclaration":6889,"src":"12105:19:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":15953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12105:22:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12089:38:90"},{"assignments":[15956],"declarations":[{"constant":false,"id":15956,"mutability":"mutable","name":"isGaugeUpdated","nodeType":"VariableDeclaration","scope":15994,"src":"12691:19:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15955,"name":"bool","nodeType":"ElementaryTypeName","src":"12691:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":15963,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":15959,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15949,"src":"12742:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15957,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15229,"src":"12713:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":15958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"time_weight","nodeType":"MemberAccess","referencedDeclaration":820,"src":"12713:28:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12713:35:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":15961,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15918,"src":"12752:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12713:52:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"12691:74:90"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15964,"name":"isGaugeUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15956,"src":"12783:14:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":15967,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15949,"src":"12840:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15968,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15918,"src":"12847:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15965,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15229,"src":"12801:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":15966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gauge_relative_weight","nodeType":"MemberAccess","referencedDeclaration":758,"src":"12801:38:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view external returns (uint256)"}},"id":15969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12801:60:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15970,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15912,"src":"12864:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12801:80:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12783:98:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15975,"nodeType":"IfStatement","src":"12779:145:90","trueBody":{"id":15974,"nodeType":"Block","src":"12883:41:90","statements":[{"id":15973,"nodeType":"Continue","src":"12901:8:90"}]}},{"assignments":[15977],"declarations":[{"constant":false,"id":15977,"mutability":"mutable","name":"gaugeBridgeCost","nodeType":"VariableDeclaration","scope":15994,"src":"12938:23:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15976,"name":"uint256","nodeType":"ElementaryTypeName","src":"12938:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15983,"initialValue":{"arguments":[{"arguments":[{"id":15980,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15949,"src":"13001:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15979,"name":"IStakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"12985:15:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGauge_$1239_$","typeString":"type(contract IStakelessGauge)"}},"id":15981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12985:22:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":15978,"name":"_getSingleBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15908,"src":"12964:20:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IStakelessGauge_$1239_$returns$_t_uint256_$","typeString":"function (contract IStakelessGauge) view returns (uint256)"}},"id":15982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12964:44:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12938:70:90"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15984,"name":"gaugeBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15977,"src":"13126:15:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13145:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13126:20:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15989,"nodeType":"IfStatement","src":"13122:64:90","trueBody":{"id":15988,"nodeType":"Block","src":"13148:38:90","statements":[{"id":15987,"nodeType":"Break","src":"13166:5:90"}]}},{"expression":{"id":15992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15990,"name":"totalCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15915,"src":"13357:9:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":15991,"name":"gaugeBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15977,"src":"13370:15:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13357:28:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15993,"nodeType":"ExpressionStatement","src":"13357:28:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15942,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15939,"src":"12054:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15943,"name":"gaugeCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15923,"src":"12058:10:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12054:14:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15995,"initializationExpression":{"assignments":[15939],"declarations":[{"constant":false,"id":15939,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15995,"src":"12039:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15938,"name":"uint256","nodeType":"ElementaryTypeName","src":"12039:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15941,"initialValue":{"hexValue":"30","id":15940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12051:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12039:13:90"},"loopExpression":{"expression":{"id":15946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"12070:3:90","subExpression":{"id":15945,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15939,"src":"12072:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15947,"nodeType":"ExpressionStatement","src":"12070:3:90"},"nodeType":"ForStatement","src":"12034:1362:90"}]},"id":15997,"implemented":true,"kind":"function","modifiers":[],"name":"_getGaugeTypeTotalBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":15913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15910,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":15997,"src":"11713:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15909,"name":"string","nodeType":"ElementaryTypeName","src":"11713:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15912,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":15997,"src":"11738:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15911,"name":"uint256","nodeType":"ElementaryTypeName","src":"11738:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11712:52:90"},"returnParameters":{"id":15916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15915,"mutability":"mutable","name":"totalCost","nodeType":"VariableDeclaration","scope":15997,"src":"11812:17:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15914,"name":"uint256","nodeType":"ElementaryTypeName","src":"11812:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11811:19:90"},"scope":16300,"src":"11675:1727:90","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16033,"nodeType":"Block","src":"13572:213:90","statements":[{"body":{"id":16031,"nodeType":"Block","src":"13630:149:90","statements":[{"assignments":[16019],"declarations":[{"constant":false,"id":16019,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":16031,"src":"13644:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16018,"name":"string","nodeType":"ElementaryTypeName","src":"13644:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":16023,"initialValue":{"baseExpression":{"id":16020,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16000,"src":"13670:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":16022,"indexExpression":{"id":16021,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16008,"src":"13681:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13670:13:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"13644:39:90"},{"expression":{"id":16029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16024,"name":"totalCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16005,"src":"13697:9:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":16026,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16019,"src":"13739:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":16027,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16002,"src":"13750:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16025,"name":"_getGaugeTypeTotalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15997,"src":"13710:28:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (string memory,uint256) view returns (uint256)"}},"id":16028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13710:58:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13697:71:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16030,"nodeType":"ExpressionStatement","src":"13697:71:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16011,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16008,"src":"13602:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16012,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16000,"src":"13606:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":16013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13606:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13602:21:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16032,"initializationExpression":{"assignments":[16008],"declarations":[{"constant":false,"id":16008,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":16032,"src":"13587:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16007,"name":"uint256","nodeType":"ElementaryTypeName","src":"13587:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16010,"initialValue":{"hexValue":"30","id":16009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13599:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13587:13:90"},"loopExpression":{"expression":{"id":16016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"13625:3:90","subExpression":{"id":16015,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16008,"src":"13627:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16017,"nodeType":"ExpressionStatement","src":"13625:3:90"},"nodeType":"ForStatement","src":"13582:197:90"}]},"id":16034,"implemented":true,"kind":"function","modifiers":[],"name":"_getGaugeTypesTotalBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":16003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16000,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":16034,"src":"13447:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":15998,"name":"string","nodeType":"ElementaryTypeName","src":"13447:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":15999,"nodeType":"ArrayTypeName","src":"13447:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16002,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":16034,"src":"13475:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16001,"name":"uint256","nodeType":"ElementaryTypeName","src":"13475:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13446:55:90"},"returnParameters":{"id":16006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16005,"mutability":"mutable","name":"totalCost","nodeType":"VariableDeclaration","scope":16034,"src":"13549:17:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16004,"name":"uint256","nodeType":"ElementaryTypeName","src":"13549:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13548:19:90"},"scope":16300,"src":"13408:377:90","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16068,"nodeType":"Block","src":"13901:216:90","statements":[{"assignments":[16043],"declarations":[{"constant":false,"id":16043,"mutability":"mutable","name":"currentPeriod","nodeType":"VariableDeclaration","scope":16068,"src":"13911:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16042,"name":"uint256","nodeType":"ElementaryTypeName","src":"13911:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16046,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16044,"name":"_roundDownBlockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16299,"src":"13935:24:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13935:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13911:50:90"},{"body":{"id":16066,"nodeType":"Block","src":"14020:91:90","statements":[{"expression":{"arguments":[{"baseExpression":{"id":16059,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16037,"src":"14052:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":16061,"indexExpression":{"id":16060,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16048,"src":"14063:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14052:13:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":16062,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16039,"src":"14067:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16063,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16043,"src":"14086:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16058,"name":"_checkpointGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16174,"src":"14034:17:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256,uint256)"}},"id":16064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14034:66:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16065,"nodeType":"ExpressionStatement","src":"14034:66:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16051,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16048,"src":"13992:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16052,"name":"gaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16037,"src":"13996:10:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":16053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13996:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13992:21:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16067,"initializationExpression":{"assignments":[16048],"declarations":[{"constant":false,"id":16048,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":16067,"src":"13977:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16047,"name":"uint256","nodeType":"ElementaryTypeName","src":"13977:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16050,"initialValue":{"hexValue":"30","id":16049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13989:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13977:13:90"},"loopExpression":{"expression":{"id":16056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"14015:3:90","subExpression":{"id":16055,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16048,"src":"14017:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16057,"nodeType":"ExpressionStatement","src":"14015:3:90"},"nodeType":"ForStatement","src":"13972:139:90"}]},"id":16069,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointGaugesAboveRelativeWeight","nodeType":"FunctionDefinition","parameters":{"id":16040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16037,"mutability":"mutable","name":"gaugeTypes","nodeType":"VariableDeclaration","scope":16069,"src":"13837:26:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16035,"name":"string","nodeType":"ElementaryTypeName","src":"13837:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16036,"nodeType":"ArrayTypeName","src":"13837:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16039,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":16069,"src":"13865:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16038,"name":"uint256","nodeType":"ElementaryTypeName","src":"13865:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13836:55:90"},"returnParameters":{"id":16041,"nodeType":"ParameterList","parameters":[],"src":"13901:0:90"},"scope":16300,"src":"13791:326:90","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":16173,"nodeType":"Block","src":"14729:1812:90","statements":[{"assignments":[16082],"declarations":[{"constant":false,"id":16082,"mutability":"mutable","name":"typeGauges","nodeType":"VariableDeclaration","scope":16173,"src":"14739:43:90","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":16081,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"14739:24:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"id":16086,"initialValue":{"baseExpression":{"id":16083,"name":"_gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15223,"src":"14785:7:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_struct$_AddressSet_$6690_storage_$","typeString":"mapping(string memory => struct EnumerableSet.AddressSet storage ref)"}},"id":16085,"indexExpression":{"id":16084,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16072,"src":"14793:9:90","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14785:18:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"nodeType":"VariableDeclarationStatement","src":"14739:64:90"},{"assignments":[16088],"declarations":[{"constant":false,"id":16088,"mutability":"mutable","name":"totalTypeGauges","nodeType":"VariableDeclaration","scope":16173,"src":"14814:23:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16087,"name":"uint256","nodeType":"ElementaryTypeName","src":"14814:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16092,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16089,"name":"typeGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16082,"src":"14840:10:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":16090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6847,"src":"14840:17:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":16091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14840:19:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14814:45:90"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16093,"name":"totalTypeGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16088,"src":"14873:15:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14892:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14873:20:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16098,"nodeType":"IfStatement","src":"14869:116:90","trueBody":{"id":16097,"nodeType":"Block","src":"14895:90:90","statements":[{"functionReturnParameters":16078,"id":16096,"nodeType":"Return","src":"14968:7:90"}]}},{"assignments":[16100],"declarations":[{"constant":false,"id":16100,"mutability":"mutable","name":"isGaugeTypeCostless","nodeType":"VariableDeclaration","scope":16173,"src":"15355:24:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16099,"name":"bool","nodeType":"ElementaryTypeName","src":"15355:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":16112,"initialValue":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":16105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15444:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":16103,"name":"typeGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16082,"src":"15420:10:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":16104,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"unchecked_at","nodeType":"MemberAccess","referencedDeclaration":6889,"src":"15420:23:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":16106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15420:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16102,"name":"IStakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"15404:15:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGauge_$1239_$","typeString":"type(contract IStakelessGauge)"}},"id":16107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15404:43:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":16101,"name":"_getSingleBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15908,"src":"15383:20:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IStakelessGauge_$1239_$returns$_t_uint256_$","typeString":"function (contract IStakelessGauge) view returns (uint256)"}},"id":16108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15383:65:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15452:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15383:70:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":16111,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15382:72:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"15355:99:90"},{"assignments":[16118],"declarations":[{"constant":false,"id":16118,"mutability":"mutable","name":"performCheckpoint","nodeType":"VariableDeclaration","scope":16173,"src":"15687:52:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"},"typeName":{"id":16117,"nodeType":"FunctionTypeName","parameterTypes":{"id":16115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16114,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16117,"src":"15696:15:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":16113,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"15696:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"15695:17:90"},"returnParameterTypes":{"id":16116,"nodeType":"ParameterList","parameters":[],"src":"15722:0:90"},"src":"15687:52:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"},"visibility":"internal"},"visibility":"internal"}],"id":16123,"initialValue":{"condition":{"id":16119,"name":"isGaugeTypeCostless","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16100,"src":"15742:19:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":16121,"name":"_checkpointPaidBridgeGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16204,"src":"15821:26:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"}},"id":16122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15742:105:90","trueExpression":{"id":16120,"name":"_checkpointCostlessBridgeGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16226,"src":"15776:30:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"}},"typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"}},"nodeType":"VariableDeclarationStatement","src":"15687:160:90"},{"body":{"id":16171,"nodeType":"Block","src":"15904:631:90","statements":[{"assignments":[16135],"declarations":[{"constant":false,"id":16135,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":16171,"src":"15918:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16134,"name":"address","nodeType":"ElementaryTypeName","src":"15918:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":16140,"initialValue":{"arguments":[{"id":16138,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16125,"src":"15958:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16136,"name":"typeGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16082,"src":"15934:10:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":16137,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"unchecked_at","nodeType":"MemberAccess","referencedDeclaration":6889,"src":"15934:23:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":16139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15934:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15918:42:90"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16143,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16135,"src":"16174:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16141,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15229,"src":"16145:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":16142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"time_weight","nodeType":"MemberAccess","referencedDeclaration":820,"src":"16145:28:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":16144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16145:35:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16145,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16076,"src":"16183:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16145:51:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16154,"nodeType":"IfStatement","src":"16141:130:90","trueBody":{"id":16153,"nodeType":"Block","src":"16198:73:90","statements":[{"expression":{"arguments":[{"id":16150,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16135,"src":"16250:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16147,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15229,"src":"16216:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":16149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"checkpoint_gauge","nodeType":"MemberAccess","referencedDeclaration":749,"src":"16216:33:90","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":16151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16216:40:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16152,"nodeType":"ExpressionStatement","src":"16216:40:90"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16157,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16135,"src":"16385:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16158,"name":"currentPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16076,"src":"16392:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16155,"name":"_gaugeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15229,"src":"16346:16:90","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":16156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gauge_relative_weight","nodeType":"MemberAccess","referencedDeclaration":758,"src":"16346:38:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view external returns (uint256)"}},"id":16159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16346:60:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16160,"name":"minRelativeWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16074,"src":"16409:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16346:80:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16164,"nodeType":"IfStatement","src":"16342:127:90","trueBody":{"id":16163,"nodeType":"Block","src":"16428:41:90","statements":[{"id":16162,"nodeType":"Continue","src":"16446:8:90"}]}},{"expression":{"arguments":[{"arguments":[{"id":16167,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16135,"src":"16517:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16166,"name":"IStakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"16501:15:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGauge_$1239_$","typeString":"type(contract IStakelessGauge)"}},"id":16168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16501:22:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":16165,"name":"performCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16118,"src":"16483:17:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStakelessGauge_$1239_$returns$__$","typeString":"function (contract IStakelessGauge)"}},"id":16169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16483:41:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16170,"nodeType":"ExpressionStatement","src":"16483:41:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16128,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16125,"src":"15878:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16129,"name":"totalTypeGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16088,"src":"15882:15:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15878:19:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16172,"initializationExpression":{"assignments":[16125],"declarations":[{"constant":false,"id":16125,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":16172,"src":"15863:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16124,"name":"uint256","nodeType":"ElementaryTypeName","src":"15863:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16127,"initialValue":{"hexValue":"30","id":16126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15875:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15863:13:90"},"loopExpression":{"expression":{"id":16132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"15899:3:90","subExpression":{"id":16131,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16125,"src":"15901:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16133,"nodeType":"ExpressionStatement","src":"15899:3:90"},"nodeType":"ForStatement","src":"15858:677:90"}]},"documentation":{"id":16070,"nodeType":"StructuredDocumentation","src":"14123:461:90","text":" @dev Performs checkpoints for all gauges of the given type whose relative weight is at least the specified one.\n @param gaugeType Type of the gauges to checkpoint.\n @param minRelativeWeight Threshold to filter out gauges below it.\n @param currentPeriod Current block time rounded down to the start of the previous week.\n This method doesn't check whether the caller transferred enough ETH to cover the whole operation."},"id":16174,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointGauges","nodeType":"FunctionDefinition","parameters":{"id":16077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16072,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":16174,"src":"14625:23:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16071,"name":"string","nodeType":"ElementaryTypeName","src":"14625:6:90","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":16074,"mutability":"mutable","name":"minRelativeWeight","nodeType":"VariableDeclaration","scope":16174,"src":"14658:25:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16073,"name":"uint256","nodeType":"ElementaryTypeName","src":"14658:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16076,"mutability":"mutable","name":"currentPeriod","nodeType":"VariableDeclaration","scope":16174,"src":"14693:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16075,"name":"uint256","nodeType":"ElementaryTypeName","src":"14693:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14615:105:90"},"returnParameters":{"id":16078,"nodeType":"ParameterList","parameters":[],"src":"14729:0:90"},"scope":16300,"src":"14589:1952:90","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":16203,"nodeType":"Block","src":"16716:257:90","statements":[{"assignments":[16181],"declarations":[{"constant":false,"id":16181,"mutability":"mutable","name":"checkpointCost","nodeType":"VariableDeclaration","scope":16203,"src":"16726:22:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16180,"name":"uint256","nodeType":"ElementaryTypeName","src":"16726:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16185,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16182,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16177,"src":"16751:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"id":16183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTotalBridgeCost","nodeType":"MemberAccess","referencedDeclaration":1238,"src":"16751:24:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":16184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16751:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16726:51:90"},{"expression":{"arguments":[{"arguments":[{"id":16193,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16177,"src":"16877:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":16192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16869:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16191,"name":"address","nodeType":"ElementaryTypeName","src":"16869:7:90","typeDescriptions":{}}},"id":16194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16869:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":16197,"name":"IStakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"16920:15:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGauge_$1239_$","typeString":"type(contract IStakelessGauge)"}},"id":16198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"checkpoint","nodeType":"MemberAccess","referencedDeclaration":1226,"src":"16920:26:90","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$__$returns$_t_bool_$","typeString":"function IStakelessGauge.checkpoint() payable returns (bool)"}},"id":16199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"16920:35:90","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":16195,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16897:3:90","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"16897:22:90","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":16200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16897:59:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16186,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15225,"src":"16788:28:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":16188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"performAction","nodeType":"MemberAccess","referencedDeclaration":48,"src":"16788:42:90","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":16190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":16189,"name":"checkpointCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16181,"src":"16839:14:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"16788:67:90","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$value","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":16201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16788:178:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16202,"nodeType":"ExpressionStatement","src":"16788:178:90"}]},"documentation":{"id":16175,"nodeType":"StructuredDocumentation","src":"16547:97:90","text":" @dev Calls `checkpoint` on a paid gauge, forwarding ETH to cover bridge costs."},"id":16204,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointPaidBridgeGauge","nodeType":"FunctionDefinition","parameters":{"id":16178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16177,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":16204,"src":"16685:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":16176,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"16685:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"16684:23:90"},"returnParameters":{"id":16179,"nodeType":"ParameterList","parameters":[],"src":"16716:0:90"},"scope":16300,"src":"16649:324:90","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":16225,"nodeType":"Block","src":"17144:170:90","statements":[{"expression":{"arguments":[{"arguments":[{"id":16215,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16207,"src":"17218:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":16214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17210:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16213,"name":"address","nodeType":"ElementaryTypeName","src":"17210:7:90","typeDescriptions":{}}},"id":16216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17210:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":16219,"name":"IStakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"17261:15:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGauge_$1239_$","typeString":"type(contract IStakelessGauge)"}},"id":16220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"checkpoint","nodeType":"MemberAccess","referencedDeclaration":1226,"src":"17261:26:90","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$__$returns$_t_bool_$","typeString":"function IStakelessGauge.checkpoint() payable returns (bool)"}},"id":16221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"17261:35:90","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":16217,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"17238:3:90","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"17238:22:90","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":16222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17238:59:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16210,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15225,"src":"17154:28:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":16212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"performAction","nodeType":"MemberAccess","referencedDeclaration":48,"src":"17154:42:90","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":16223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17154:153:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16224,"nodeType":"ExpressionStatement","src":"17154:153:90"}]},"documentation":{"id":16205,"nodeType":"StructuredDocumentation","src":"16979:89:90","text":" @dev Calls `checkpoint` on a costless gauge; does not forward any ETH."},"id":16226,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointCostlessBridgeGauge","nodeType":"FunctionDefinition","parameters":{"id":16208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16207,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":16226,"src":"17113:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":16206,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"17113:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"17112:23:90"},"returnParameters":{"id":16209,"nodeType":"ParameterList","parameters":[],"src":"17144:0:90"},"scope":16300,"src":"17073:241:90","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":16255,"nodeType":"Block","src":"17486:258:90","statements":[{"assignments":[16233],"declarations":[{"constant":false,"id":16233,"mutability":"mutable","name":"checkpointCost","nodeType":"VariableDeclaration","scope":16255,"src":"17496:22:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16232,"name":"uint256","nodeType":"ElementaryTypeName","src":"17496:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16237,"initialValue":{"arguments":[{"id":16235,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16229,"src":"17542:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":16234,"name":"_getSingleBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15908,"src":"17521:20:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IStakelessGauge_$1239_$returns$_t_uint256_$","typeString":"function (contract IStakelessGauge) view returns (uint256)"}},"id":16236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17521:27:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17496:52:90"},{"expression":{"arguments":[{"arguments":[{"id":16245,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16229,"src":"17648:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}],"id":16244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17640:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16243,"name":"address","nodeType":"ElementaryTypeName","src":"17640:7:90","typeDescriptions":{}}},"id":16246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17640:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":16249,"name":"IStakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"17691:15:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakelessGauge_$1239_$","typeString":"type(contract IStakelessGauge)"}},"id":16250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"checkpoint","nodeType":"MemberAccess","referencedDeclaration":1226,"src":"17691:26:90","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$__$returns$_t_bool_$","typeString":"function IStakelessGauge.checkpoint() payable returns (bool)"}},"id":16251,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"17691:35:90","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":16247,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"17668:3:90","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16248,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"17668:22:90","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":16252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17668:59:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16238,"name":"_authorizerAdaptorEntrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15225,"src":"17559:28:90","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptorEntrypoint_$62","typeString":"contract IAuthorizerAdaptorEntrypoint"}},"id":16240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"performAction","nodeType":"MemberAccess","referencedDeclaration":48,"src":"17559:42:90","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":16242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":16241,"name":"checkpointCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16233,"src":"17610:14:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"17559:67:90","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$value","typeString":"function (address,bytes memory) payable external returns (bytes memory)"}},"id":16253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17559:178:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16254,"nodeType":"ExpressionStatement","src":"17559:178:90"}]},"documentation":{"id":16227,"nodeType":"StructuredDocumentation","src":"17320:97:90","text":" @dev Performs checkpoint for any gauge, attempting to get the cost beforehand."},"id":16256,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointSingleGauge","nodeType":"FunctionDefinition","parameters":{"id":16230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16229,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":16256,"src":"17454:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"},"typeName":{"id":16228,"name":"IStakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1239,"src":"17454:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IStakelessGauge_$1239","typeString":"contract IStakelessGauge"}},"visibility":"internal"}],"src":"17453:23:90"},"returnParameters":{"id":16231,"nodeType":"ParameterList","parameters":[],"src":"17486:0:90"},"scope":16300,"src":"17422:322:90","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":16281,"nodeType":"Block","src":"17911:271:90","statements":[{"assignments":[16261],"declarations":[{"constant":false,"id":16261,"mutability":"mutable","name":"remainingBalance","nodeType":"VariableDeclaration","scope":16281,"src":"18020:24:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16260,"name":"uint256","nodeType":"ElementaryTypeName","src":"18020:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16267,"initialValue":{"expression":{"arguments":[{"id":16264,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"18055:4:90","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGaugeCheckpointer_$16300","typeString":"contract StakelessGaugeCheckpointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StakelessGaugeCheckpointer_$16300","typeString":"contract StakelessGaugeCheckpointer"}],"id":16263,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18047:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16262,"name":"address","nodeType":"ElementaryTypeName","src":"18047:7:90","typeDescriptions":{}}},"id":16265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18047:13:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"18047:21:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18020:48:90"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16268,"name":"remainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16261,"src":"18082:16:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":16269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18101:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18082:20:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16280,"nodeType":"IfStatement","src":"18078:98:90","trueBody":{"id":16279,"nodeType":"Block","src":"18104:72:90","statements":[{"expression":{"arguments":[{"expression":{"id":16274,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"18136:3:90","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"18136:10:90","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":16276,"name":"remainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16261,"src":"18148:16:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16271,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"18118:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$5850_$","typeString":"type(library Address)"}},"id":16273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":5740,"src":"18118:17:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":16277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18118:47:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16278,"nodeType":"ExpressionStatement","src":"18118:47:90"}]}}]},"documentation":{"id":16257,"nodeType":"StructuredDocumentation","src":"17750:113:90","text":" @dev Send back any leftover ETH to the caller if there is an existing balance in the contract."},"id":16282,"implemented":true,"kind":"function","modifiers":[],"name":"_returnLeftoverEthIfAny","nodeType":"FunctionDefinition","parameters":{"id":16258,"nodeType":"ParameterList","parameters":[],"src":"17900:2:90"},"returnParameters":{"id":16259,"nodeType":"ParameterList","parameters":[],"src":"17911:0:90"},"scope":16300,"src":"17868:314:90","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":16298,"nodeType":"Block","src":"18426:181:90","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16288,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"18560:5:90","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":16289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"18560:15:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31","id":16290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18578:7:90","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"18560:25:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18588:1:90","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18560:29:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":16294,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18559:31:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31","id":16295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18593:7:90","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"src":"18559:41:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16287,"id":16297,"nodeType":"Return","src":"18552:48:90"}]},"documentation":{"id":16283,"nodeType":"StructuredDocumentation","src":"18188:166:90","text":" @dev Rounds the provided timestamp down to the beginning of the previous week (Thurs 00:00 UTC) with respect\n to the current block timestamp."},"id":16299,"implemented":true,"kind":"function","modifiers":[],"name":"_roundDownBlockTimestamp","nodeType":"FunctionDefinition","parameters":{"id":16284,"nodeType":"ParameterList","parameters":[],"src":"18392:2:90"},"returnParameters":{"id":16287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16286,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16299,"src":"18417:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16285,"name":"uint256","nodeType":"ElementaryTypeName","src":"18417:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18416:9:90"},"scope":16300,"src":"18359:248:90","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":16301,"src":"1660:16949:90"}],"src":"688:17922:90"},"id":90},"contracts/gauges/arbitrum/ArbitrumRootGauge.sol":{"ast":{"absolutePath":"contracts/gauges/arbitrum/ArbitrumRootGauge.sol","exportedSymbols":{"ArbitrumRootGauge":[16477]},"id":16478,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16302,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:91"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol","id":16303,"nodeType":"ImportDirective","scope":16478,"sourceUnit":21,"src":"713:90:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":16304,"nodeType":"ImportDirective","scope":16478,"sourceUnit":7342,"src":"804:79:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":16305,"nodeType":"ImportDirective","scope":16478,"sourceUnit":15197,"src":"885:31:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/arbitrum/IGatewayRouter.sol","file":"./IGatewayRouter.sol","id":16306,"nodeType":"ImportDirective","scope":16478,"sourceUnit":16655,"src":"917:30:91","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16307,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"979:14:91","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":16308,"nodeType":"InheritanceSpecifier","src":"979:14:91"}],"contractDependencies":[928,1239,7187,15196],"contractKind":"contract","fullyImplemented":true,"id":16477,"linearizedBaseContracts":[16477,15196,7187,1239,928],"name":"ArbitrumRootGauge","nodeType":"ContractDefinition","nodes":[{"id":16311,"libraryName":{"id":16309,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"1006:9:91","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1000:27:91","typeName":{"id":16310,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1020:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":false,"id":16313,"mutability":"immutable","name":"_gateway","nodeType":"VariableDeclaration","scope":16477,"src":"1033:34:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16312,"name":"address","nodeType":"ElementaryTypeName","src":"1033:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":16315,"mutability":"immutable","name":"_gatewayRouter","nodeType":"VariableDeclaration","scope":16477,"src":"1073:47:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"},"typeName":{"id":16314,"name":"IGatewayRouter","nodeType":"UserDefinedTypeName","referencedDeclaration":16654,"src":"1073:14:91","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"visibility":"private"},{"constant":false,"id":16317,"mutability":"immutable","name":"_factory","nodeType":"VariableDeclaration","scope":16477,"src":"1126:47:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"},"typeName":{"id":16316,"name":"IArbitrumFeeProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":20,"src":"1126:20:91","typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"}},"visibility":"private"},{"constant":false,"id":16319,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":16477,"src":"1180:26:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16318,"name":"address","nodeType":"ElementaryTypeName","src":"1180:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":16352,"nodeType":"Block","src":"1309:181:91","statements":[{"expression":{"id":16339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16329,"name":"_gateway","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16313,"src":"1319:8:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16334,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16321,"src":"1363:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"id":16335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getBalancerToken","nodeType":"MemberAccess","referencedDeclaration":80,"src":"1363:23:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2447_$","typeString":"function () view external returns (contract IERC20)"}},"id":16336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1363:25:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":16333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1355:7:91","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16332,"name":"address","nodeType":"ElementaryTypeName","src":"1355:7:91","typeDescriptions":{}}},"id":16337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1355:34:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16330,"name":"gatewayRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16323,"src":"1330:13:91","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"id":16331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getGateway","nodeType":"MemberAccess","referencedDeclaration":16653,"src":"1330:24:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_address_$","typeString":"function (address) view external returns (address)"}},"id":16338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1330:60:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1319:71:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16340,"nodeType":"ExpressionStatement","src":"1319:71:91"},{"expression":{"id":16343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16341,"name":"_gatewayRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16315,"src":"1400:14:91","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16342,"name":"gatewayRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16323,"src":"1417:13:91","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"src":"1400:30:91","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"id":16344,"nodeType":"ExpressionStatement","src":"1400:30:91"},{"expression":{"id":16350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16345,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16317,"src":"1440:8:91","typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":16347,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1472:3:91","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1472:10:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":16346,"name":"IArbitrumFeeProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"1451:20:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IArbitrumFeeProvider_$20_$","typeString":"type(contract IArbitrumFeeProvider)"}},"id":16349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1451:32:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"}},"src":"1440:43:91","typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"}},"id":16351,"nodeType":"ExpressionStatement","src":"1440:43:91"}]},"id":16353,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":16326,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16321,"src":"1301:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":16327,"modifierName":{"id":16325,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"1286:14:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"1286:22:91"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":16324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16321,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":16353,"src":"1225:29:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":16320,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1225:22:91","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":16323,"mutability":"mutable","name":"gatewayRouter","nodeType":"VariableDeclaration","scope":16353,"src":"1256:28:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"},"typeName":{"id":16322,"name":"IGatewayRouter","nodeType":"UserDefinedTypeName","referencedDeclaration":16654,"src":"1256:14:91","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"visibility":"internal"}],"src":"1224:61:91"},"returnParameters":{"id":16328,"nodeType":"ParameterList","parameters":[],"src":"1309:0:91"},"scope":16477,"src":"1213:277:91","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":16368,"nodeType":"Block","src":"1571:152:91","statements":[{"expression":{"arguments":[{"id":16361,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16357,"src":"1665:17:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16360,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"1643:21:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":16362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1643:40:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16363,"nodeType":"ExpressionStatement","src":"1643:40:91"},{"expression":{"id":16366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16364,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16319,"src":"1694:10:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16365,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16355,"src":"1707:9:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1694:22:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16367,"nodeType":"ExpressionStatement","src":"1694:22:91"}]},"functionSelector":"cd6dc687","id":16369,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":16358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16355,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16369,"src":"1516:17:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16354,"name":"address","nodeType":"ElementaryTypeName","src":"1516:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16357,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":16369,"src":"1535:25:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16356,"name":"uint256","nodeType":"ElementaryTypeName","src":"1535:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1515:46:91"},"returnParameters":{"id":16359,"nodeType":"ParameterList","parameters":[],"src":"1571:0:91"},"scope":16477,"src":"1496:227:91","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":16377,"nodeType":"Block","src":"1794:34:91","statements":[{"expression":{"id":16375,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16319,"src":"1811:10:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":16374,"id":16376,"nodeType":"Return","src":"1804:17:91"}]},"functionSelector":"1b88094d","id":16378,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":16371,"nodeType":"OverrideSpecifier","overrides":[],"src":"1767:8:91"},"parameters":{"id":16370,"nodeType":"ParameterList","parameters":[],"src":"1750:2:91"},"returnParameters":{"id":16374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16373,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16378,"src":"1785:7:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16372,"name":"address","nodeType":"ElementaryTypeName","src":"1785:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1784:9:91"},"scope":16477,"src":"1729:99:91","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[15040],"body":{"id":16434,"nodeType":"Block","src":"1897:1374:91","statements":[{"expression":{"arguments":[{"id":16387,"name":"_gateway","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16313,"src":"2005:8:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16388,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16380,"src":"2015:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16384,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"1983:9:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":16386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"1983:21:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":16389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1983:43:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16390,"nodeType":"ExpressionStatement","src":"1983:43:91"},{"assignments":[16392,16394,16396],"declarations":[{"constant":false,"id":16392,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16434,"src":"2038:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16391,"name":"uint256","nodeType":"ElementaryTypeName","src":"2038:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16394,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16434,"src":"2056:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16393,"name":"uint256","nodeType":"ElementaryTypeName","src":"2056:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16396,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":16434,"src":"2074:25:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16395,"name":"uint256","nodeType":"ElementaryTypeName","src":"2074:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16400,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16397,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16317,"src":"2103:8:91","typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"}},"id":16398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getArbitrumFees","nodeType":"MemberAccess","referencedDeclaration":10,"src":"2103:24:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function () view external returns (uint256,uint256,uint256)"}},"id":16399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2103:26:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"2037:92:91"},{"assignments":[16402],"declarations":[{"constant":false,"id":16402,"mutability":"mutable","name":"totalBridgeCost","nodeType":"VariableDeclaration","scope":16434,"src":"2139:23:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16401,"name":"uint256","nodeType":"ElementaryTypeName","src":"2139:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16408,"initialValue":{"arguments":[{"id":16404,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16392,"src":"2185:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16405,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16394,"src":"2195:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16406,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16396,"src":"2205:17:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16403,"name":"_getTotalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16476,"src":"2165:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":16407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2165:58:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2139:84:91"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16410,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2241:3:91","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"2241:9:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":16412,"name":"totalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16402,"src":"2254:15:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2241:28:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f7272656374206d73672e76616c756520706173736564","id":16414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2271:28:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_56d4a48d23c5e1d04e805cebfda5734ae7721ed375a1cc40426062043619622b","typeString":"literal_string \"Incorrect msg.value passed\""},"value":"Incorrect msg.value passed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_56d4a48d23c5e1d04e805cebfda5734ae7721ed375a1cc40426062043619622b","typeString":"literal_string \"Incorrect msg.value passed\""}],"id":16409,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2233:7:91","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2233:67:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16416,"nodeType":"ExpressionStatement","src":"2233:67:91"},{"expression":{"arguments":[{"id":16422,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"3106:9:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":16423,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16319,"src":"3129:10:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16424,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16380,"src":"3153:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16425,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16392,"src":"3177:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16426,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16394,"src":"3199:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":16429,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16396,"src":"3232:17:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":16430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3251:2:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":16427,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3221:3:91","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"3221:10:91","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3221:33:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16417,"name":"_gatewayRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16315,"src":"3035:14:91","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"id":16419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"outboundTransfer","nodeType":"MemberAccess","referencedDeclaration":16646,"src":"3035:31:91","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,address,uint256,uint256,uint256,bytes memory) payable external"}},"id":16421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":16420,"name":"totalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16402,"src":"3075:15:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3035:57:91","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$value","typeString":"function (contract IERC20,address,uint256,uint256,uint256,bytes memory) payable external"}},"id":16432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3035:229:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16433,"nodeType":"ExpressionStatement","src":"3035:229:91"}]},"id":16435,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":16382,"nodeType":"OverrideSpecifier","overrides":[],"src":"1888:8:91"},"parameters":{"id":16381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16380,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":16435,"src":"1859:18:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16379,"name":"uint256","nodeType":"ElementaryTypeName","src":"1859:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1858:20:91"},"returnParameters":{"id":16383,"nodeType":"ParameterList","parameters":[],"src":"1897:0:91"},"scope":16477,"src":"1834:1437:91","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[15021],"body":{"id":16457,"nodeType":"Block","src":"3348:184:91","statements":[{"assignments":[16442,16444,16446],"declarations":[{"constant":false,"id":16442,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16457,"src":"3359:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16441,"name":"uint256","nodeType":"ElementaryTypeName","src":"3359:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16444,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16457,"src":"3377:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16443,"name":"uint256","nodeType":"ElementaryTypeName","src":"3377:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16446,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":16457,"src":"3395:25:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16445,"name":"uint256","nodeType":"ElementaryTypeName","src":"3395:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16450,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16447,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16317,"src":"3424:8:91","typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"}},"id":16448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getArbitrumFees","nodeType":"MemberAccess","referencedDeclaration":10,"src":"3424:24:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function () view external returns (uint256,uint256,uint256)"}},"id":16449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3424:26:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3358:92:91"},{"expression":{"arguments":[{"id":16452,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16442,"src":"3487:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16453,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16444,"src":"3497:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16454,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16446,"src":"3507:17:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16451,"name":"_getTotalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16476,"src":"3467:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":16455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3467:58:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16440,"id":16456,"nodeType":"Return","src":"3460:65:91"}]},"functionSelector":"b0245225","id":16458,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalBridgeCost","nodeType":"FunctionDefinition","overrides":{"id":16437,"nodeType":"OverrideSpecifier","overrides":[],"src":"3321:8:91"},"parameters":{"id":16436,"nodeType":"ParameterList","parameters":[],"src":"3304:2:91"},"returnParameters":{"id":16440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16439,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16458,"src":"3339:7:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16438,"name":"uint256","nodeType":"ElementaryTypeName","src":"3339:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3338:9:91"},"scope":16477,"src":"3277:255:91","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":16475,"nodeType":"Block","src":"3692:63:91","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16469,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16460,"src":"3709:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":16470,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16462,"src":"3720:8:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3709:19:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":16472,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16464,"src":"3731:17:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3709:39:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16468,"id":16474,"nodeType":"Return","src":"3702:46:91"}]},"id":16476,"implemented":true,"kind":"function","modifiers":[],"name":"_getTotalBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":16465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16460,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16476,"src":"3576:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16459,"name":"uint256","nodeType":"ElementaryTypeName","src":"3576:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16462,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16476,"src":"3602:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16461,"name":"uint256","nodeType":"ElementaryTypeName","src":"3602:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16464,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":16476,"src":"3628:25:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16463,"name":"uint256","nodeType":"ElementaryTypeName","src":"3628:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3566:93:91"},"returnParameters":{"id":16468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16467,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16476,"src":"3683:7:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16466,"name":"uint256","nodeType":"ElementaryTypeName","src":"3683:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3682:9:91"},"scope":16477,"src":"3538:217:91","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":16478,"src":"949:2808:91"}],"src":"688:3070:91"},"id":91},"contracts/gauges/arbitrum/ArbitrumRootGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/arbitrum/ArbitrumRootGaugeFactory.sol","exportedSymbols":{"ArbitrumRootGaugeFactory":[16628]},"id":16629,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16479,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:92"},{"id":16480,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:92"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":16481,"nodeType":"ImportDirective","scope":16629,"sourceUnit":3052,"src":"747:65:92","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":16482,"nodeType":"ImportDirective","scope":16629,"sourceUnit":3698,"src":"814:88:92","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":16483,"nodeType":"ImportDirective","scope":16629,"sourceUnit":13897,"src":"904:33:92","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/arbitrum/ArbitrumRootGauge.sol","file":"./ArbitrumRootGauge.sol","id":16484,"nodeType":"ImportDirective","scope":16629,"sourceUnit":16478,"src":"938:33:92","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16485,"name":"IArbitrumFeeProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":20,"src":"1010:20:92","typeDescriptions":{"typeIdentifier":"t_contract$_IArbitrumFeeProvider_$20","typeString":"contract IArbitrumFeeProvider"}},"id":16486,"nodeType":"InheritanceSpecifier","src":"1010:20:92"},{"baseName":{"id":16487,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"1032:16:92","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":16488,"nodeType":"InheritanceSpecifier","src":"1032:16:92"},{"baseName":{"id":16489,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1050:23:92","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":16490,"nodeType":"InheritanceSpecifier","src":"1050:23:92"}],"contractDependencies":[20,941,2259,3128,3697,13896,16477],"contractKind":"contract","fullyImplemented":true,"id":16628,"linearizedBaseContracts":[16628,3697,3128,2259,13896,941,20],"name":"ArbitrumRootGaugeFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":16492,"mutability":"mutable","name":"_gasLimit","nodeType":"VariableDeclaration","scope":16628,"src":"1080:24:92","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16491,"name":"uint64","nodeType":"ElementaryTypeName","src":"1080:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"private"},{"constant":false,"id":16494,"mutability":"mutable","name":"_gasPrice","nodeType":"VariableDeclaration","scope":16628,"src":"1110:24:92","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16493,"name":"uint64","nodeType":"ElementaryTypeName","src":"1110:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"private"},{"constant":false,"id":16496,"mutability":"mutable","name":"_maxSubmissionCost","nodeType":"VariableDeclaration","scope":16628,"src":"1140:33:92","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16495,"name":"uint64","nodeType":"ElementaryTypeName","src":"1140:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"private"},{"anonymous":false,"id":16504,"name":"ArbitrumFeesModified","nodeType":"EventDefinition","parameters":{"id":16503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16498,"indexed":false,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16504,"src":"1207:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16497,"name":"uint256","nodeType":"ElementaryTypeName","src":"1207:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16500,"indexed":false,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16504,"src":"1225:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16499,"name":"uint256","nodeType":"ElementaryTypeName","src":"1225:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16502,"indexed":false,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":16504,"src":"1243:25:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16501,"name":"uint256","nodeType":"ElementaryTypeName","src":"1243:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1206:63:92"},"src":"1180:90:92"},{"body":{"id":16544,"nodeType":"Block","src":"1580:115:92","statements":[{"expression":{"id":16534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16532,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16492,"src":"1590:9:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16533,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16512,"src":"1602:8:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1590:20:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":16535,"nodeType":"ExpressionStatement","src":"1590:20:92"},{"expression":{"id":16538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16536,"name":"_gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16494,"src":"1620:9:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16537,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16514,"src":"1632:8:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1620:20:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":16539,"nodeType":"ExpressionStatement","src":"1620:20:92"},{"expression":{"id":16542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16540,"name":"_maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16496,"src":"1650:18:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16541,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16516,"src":"1671:17:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1650:38:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":16543,"nodeType":"ExpressionStatement","src":"1650:38:92"}]},"id":16545,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"id":16523,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16508,"src":"1524:6:92","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":16524,"name":"gatewayRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16510,"src":"1532:13:92","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}],"id":16522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1502:21:92","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$_t_contract$_IGatewayRouter_$16654_$returns$_t_contract$_ArbitrumRootGauge_$16477_$","typeString":"function (contract IMainnetBalancerMinter,contract IGatewayRouter) returns (contract ArbitrumRootGauge)"},"typeName":{"id":16521,"name":"ArbitrumRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":16477,"src":"1506:17:92","typeDescriptions":{"typeIdentifier":"t_contract$_ArbitrumRootGauge_$16477","typeString":"contract ArbitrumRootGauge"}}},"id":16525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1502:44:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ArbitrumRootGauge_$16477","typeString":"contract ArbitrumRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ArbitrumRootGauge_$16477","typeString":"contract ArbitrumRootGauge"}],"id":16520,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1494:7:92","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16519,"name":"address","nodeType":"ElementaryTypeName","src":"1494:7:92","typeDescriptions":{}}},"id":16526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1494:53:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":16527,"modifierName":{"id":16518,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1477:16:92","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"1477:71:92"},{"arguments":[{"id":16529,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16506,"src":"1573:5:92","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":16530,"modifierName":{"id":16528,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1549:23:92","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1549:30:92"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":16517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16506,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":16545,"src":"1297:12:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":16505,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1297:6:92","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":16508,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":16545,"src":"1319:29:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":16507,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1319:22:92","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":16510,"mutability":"mutable","name":"gatewayRouter","nodeType":"VariableDeclaration","scope":16545,"src":"1358:28:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"},"typeName":{"id":16509,"name":"IGatewayRouter","nodeType":"UserDefinedTypeName","referencedDeclaration":16654,"src":"1358:14:92","typeDescriptions":{"typeIdentifier":"t_contract$_IGatewayRouter_$16654","typeString":"contract IGatewayRouter"}},"visibility":"internal"},{"constant":false,"id":16512,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16545,"src":"1396:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16511,"name":"uint64","nodeType":"ElementaryTypeName","src":"1396:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":16514,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16545,"src":"1421:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16513,"name":"uint64","nodeType":"ElementaryTypeName","src":"1421:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":16516,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":16545,"src":"1446:24:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16515,"name":"uint64","nodeType":"ElementaryTypeName","src":"1446:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1287:189:92"},"returnParameters":{"id":16531,"nodeType":"ParameterList","parameters":[],"src":"1580:0:92"},"scope":16628,"src":"1276:419:92","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[10],"body":{"id":16568,"nodeType":"Block","src":"1999:115:92","statements":[{"expression":{"id":16558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16556,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16550,"src":"2009:8:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16557,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16492,"src":"2020:9:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2009:20:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16559,"nodeType":"ExpressionStatement","src":"2009:20:92"},{"expression":{"id":16562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16560,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16552,"src":"2039:8:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16561,"name":"_gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16494,"src":"2050:9:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2039:20:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16563,"nodeType":"ExpressionStatement","src":"2039:20:92"},{"expression":{"id":16566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16564,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16554,"src":"2069:17:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16565,"name":"_maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16496,"src":"2089:18:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2069:38:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16567,"nodeType":"ExpressionStatement","src":"2069:38:92"}]},"documentation":{"id":16546,"nodeType":"StructuredDocumentation","src":"1701:89:92","text":" @notice Set the fees for the Arbitrum side of the bridging transaction"},"functionSelector":"ac8288c0","id":16569,"implemented":true,"kind":"function","modifiers":[],"name":"getArbitrumFees","nodeType":"FunctionDefinition","overrides":{"id":16548,"nodeType":"OverrideSpecifier","overrides":[],"src":"1860:8:92"},"parameters":{"id":16547,"nodeType":"ParameterList","parameters":[],"src":"1819:2:92"},"returnParameters":{"id":16555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16550,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16569,"src":"1899:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16549,"name":"uint256","nodeType":"ElementaryTypeName","src":"1899:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16552,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16569,"src":"1929:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16551,"name":"uint256","nodeType":"ElementaryTypeName","src":"1929:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16554,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":16569,"src":"1959:25:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16553,"name":"uint256","nodeType":"ElementaryTypeName","src":"1959:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1885:109:92"},"scope":16628,"src":"1795:319:92","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":16594,"nodeType":"Block","src":"2680:139:92","statements":[{"assignments":[16580],"declarations":[{"constant":false,"id":16580,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":16594,"src":"2690:13:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16579,"name":"address","nodeType":"ElementaryTypeName","src":"2690:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":16583,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16581,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"2706:7:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":16582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2706:9:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2690:25:92"},{"expression":{"arguments":[{"id":16588,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16572,"src":"2761:9:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16589,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16574,"src":"2772:17:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":16585,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16580,"src":"2743:5:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16584,"name":"ArbitrumRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16477,"src":"2725:17:92","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ArbitrumRootGauge_$16477_$","typeString":"type(contract ArbitrumRootGauge)"}},"id":16586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2725:24:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ArbitrumRootGauge_$16477","typeString":"contract ArbitrumRootGauge"}},"id":16587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":16369,"src":"2725:35:92","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":16590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2725:65:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16591,"nodeType":"ExpressionStatement","src":"2725:65:92"},{"expression":{"id":16592,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16580,"src":"2807:5:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":16578,"id":16593,"nodeType":"Return","src":"2800:12:92"}]},"documentation":{"id":16570,"nodeType":"StructuredDocumentation","src":"2120:466:92","text":" @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Arbitrum.\n @dev Care must be taken to ensure that gauges deployed from this factory are\n suitable before they are added to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":16595,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":16575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16572,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16595,"src":"2607:17:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16571,"name":"address","nodeType":"ElementaryTypeName","src":"2607:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16574,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":16595,"src":"2626:25:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16573,"name":"uint256","nodeType":"ElementaryTypeName","src":"2626:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2606:46:92"},"returnParameters":{"id":16578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16577,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16595,"src":"2671:7:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16576,"name":"address","nodeType":"ElementaryTypeName","src":"2671:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2670:9:92"},"scope":16628,"src":"2591:228:92","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[19],"body":{"id":16626,"nodeType":"Block","src":"3065:189:92","statements":[{"expression":{"id":16610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16608,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16492,"src":"3075:9:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16609,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16598,"src":"3087:8:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3075:20:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":16611,"nodeType":"ExpressionStatement","src":"3075:20:92"},{"expression":{"id":16614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16612,"name":"_gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16494,"src":"3105:9:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16613,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16600,"src":"3117:8:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3105:20:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":16615,"nodeType":"ExpressionStatement","src":"3105:20:92"},{"expression":{"id":16618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16616,"name":"_maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16496,"src":"3135:18:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16617,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16602,"src":"3156:17:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3135:38:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":16619,"nodeType":"ExpressionStatement","src":"3135:38:92"},{"eventCall":{"arguments":[{"id":16621,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16598,"src":"3209:8:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":16622,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16600,"src":"3219:8:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":16623,"name":"maxSubmissionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16602,"src":"3229:17:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":16620,"name":"ArbitrumFeesModified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16504,"src":"3188:20:92","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":16624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3188:59:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16625,"nodeType":"EmitStatement","src":"3183:64:92"}]},"documentation":{"id":16596,"nodeType":"StructuredDocumentation","src":"2825:89:92","text":" @notice Set the fees for the Arbitrum side of the bridging transaction"},"functionSelector":"e9bde604","id":16627,"implemented":true,"kind":"function","modifiers":[{"id":16606,"modifierName":{"id":16605,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3052:12:92","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3052:12:92"}],"name":"setArbitrumFees","nodeType":"FunctionDefinition","overrides":{"id":16604,"nodeType":"OverrideSpecifier","overrides":[],"src":"3043:8:92"},"parameters":{"id":16603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16598,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16627,"src":"2953:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16597,"name":"uint64","nodeType":"ElementaryTypeName","src":"2953:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":16600,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16627,"src":"2978:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16599,"name":"uint64","nodeType":"ElementaryTypeName","src":"2978:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":16602,"mutability":"mutable","name":"maxSubmissionCost","nodeType":"VariableDeclaration","scope":16627,"src":"3003:24:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16601,"name":"uint64","nodeType":"ElementaryTypeName","src":"3003:6:92","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2943:90:92"},"returnParameters":{"id":16607,"nodeType":"ParameterList","parameters":[],"src":"3065:0:92"},"scope":16628,"src":"2919:335:92","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":16629,"src":"973:2283:92"}],"src":"688:2569:92"},"id":92},"contracts/gauges/arbitrum/IGatewayRouter.sol":{"ast":{"absolutePath":"contracts/gauges/arbitrum/IGatewayRouter.sol","exportedSymbols":{"IGatewayRouter":[16654]},"id":16655,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16630,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:93"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":16631,"nodeType":"ImportDirective","scope":16655,"sourceUnit":2448,"src":"713:87:93","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":16654,"linearizedBaseContracts":[16654],"name":"IGatewayRouter","nodeType":"ContractDefinition","nodes":[{"functionSelector":"d2ce7d65","id":16646,"implemented":false,"kind":"function","modifiers":[],"name":"outboundTransfer","nodeType":"FunctionDefinition","parameters":{"id":16644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16633,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":16646,"src":"868:12:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":16632,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"868:6:93","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":16635,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16646,"src":"890:17:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16634,"name":"address","nodeType":"ElementaryTypeName","src":"890:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16637,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":16646,"src":"917:14:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16636,"name":"uint256","nodeType":"ElementaryTypeName","src":"917:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16639,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":16646,"src":"941:16:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16638,"name":"uint256","nodeType":"ElementaryTypeName","src":"941:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16641,"mutability":"mutable","name":"gasPrice","nodeType":"VariableDeclaration","scope":16646,"src":"967:16:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16640,"name":"uint256","nodeType":"ElementaryTypeName","src":"967:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16643,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":16646,"src":"993:19:93","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":16642,"name":"bytes","nodeType":"ElementaryTypeName","src":"993:5:93","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"858:160:93"},"returnParameters":{"id":16645,"nodeType":"ParameterList","parameters":[],"src":"1035:0:93"},"scope":16654,"src":"833:203:93","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"bda009fe","id":16653,"implemented":false,"kind":"function","modifiers":[],"name":"getGateway","nodeType":"FunctionDefinition","parameters":{"id":16649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16648,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":16653,"src":"1062:13:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16647,"name":"address","nodeType":"ElementaryTypeName","src":"1062:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1061:15:93"},"returnParameters":{"id":16652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16651,"mutability":"mutable","name":"gateway","nodeType":"VariableDeclaration","scope":16653,"src":"1100:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16650,"name":"address","nodeType":"ElementaryTypeName","src":"1100:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1099:17:93"},"scope":16654,"src":"1042:75:93","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16655,"src":"802:317:93"}],"src":"688:432:93"},"id":93},"contracts/gauges/avalanche/AvalancheRootGauge.sol":{"ast":{"absolutePath":"contracts/gauges/avalanche/AvalancheRootGauge.sol","exportedSymbols":{"AvalancheRootGauge":[17009],"ILayerZeroBALProxy":[16738]},"id":17010,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16656,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:94"},{"id":16657,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:94"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","id":16658,"nodeType":"ImportDirective","scope":17010,"sourceUnit":6513,"src":"747:75:94","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":16659,"nodeType":"ImportDirective","scope":17010,"sourceUnit":7342,"src":"823:79:94","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol","file":"./AvalancheRootGaugeLib.sol","id":16660,"nodeType":"ImportDirective","scope":17010,"sourceUnit":17115,"src":"904:37:94","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":16661,"nodeType":"ImportDirective","scope":17010,"sourceUnit":15197,"src":"942:31:94","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":16662,"nodeType":"StructuredDocumentation","src":"975:52:94","text":"@dev Partial interface for LayerZero BAL proxy."},"fullyImplemented":false,"id":16738,"linearizedBaseContracts":[16738],"name":"ILayerZeroBALProxy","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ILayerZeroBALProxy.LzCallParams","id":16669,"members":[{"constant":false,"id":16664,"mutability":"mutable","name":"refundAddress","nodeType":"VariableDeclaration","scope":16669,"src":"1092:29:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":16663,"name":"address","nodeType":"ElementaryTypeName","src":"1092:15:94","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":16666,"mutability":"mutable","name":"zroPaymentAddress","nodeType":"VariableDeclaration","scope":16669,"src":"1131:25:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16665,"name":"address","nodeType":"ElementaryTypeName","src":"1131:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16668,"mutability":"mutable","name":"adapterParams","nodeType":"VariableDeclaration","scope":16669,"src":"1166:19:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":16667,"name":"bytes","nodeType":"ElementaryTypeName","src":"1166:5:94","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"LzCallParams","nodeType":"StructDefinition","scope":16738,"src":"1062:130:94","visibility":"public"},{"documentation":{"id":16670,"nodeType":"StructuredDocumentation","src":"1198:85:94","text":"@dev Returns packet type to be used in adapter params. It is a constant set to 0."},"functionSelector":"4c42899a","id":16675,"implemented":false,"kind":"function","modifiers":[],"name":"PT_SEND","nodeType":"FunctionDefinition","parameters":{"id":16671,"nodeType":"ParameterList","parameters":[],"src":"1357:2:94"},"returnParameters":{"id":16674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16673,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16675,"src":"1383:5:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16672,"name":"uint8","nodeType":"ElementaryTypeName","src":"1383:5:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1382:7:94"},"scope":16738,"src":"1341:49:94","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":16676,"nodeType":"StructuredDocumentation","src":"1396:86:94","text":"@dev Returns minimum gas limit required for the target `chainId` and `packetType`."},"functionSelector":"8cfd8f5c","id":16685,"implemented":false,"kind":"function","modifiers":[],"name":"minDstGasLookup","nodeType":"FunctionDefinition","parameters":{"id":16681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16678,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":16685,"src":"1512:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":16677,"name":"uint16","nodeType":"ElementaryTypeName","src":"1512:6:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":16680,"mutability":"mutable","name":"packetType","nodeType":"VariableDeclaration","scope":16685,"src":"1528:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":16679,"name":"uint16","nodeType":"ElementaryTypeName","src":"1528:6:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1511:35:94"},"returnParameters":{"id":16684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16683,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16685,"src":"1570:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16682,"name":"uint256","nodeType":"ElementaryTypeName","src":"1570:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1569:9:94"},"scope":16738,"src":"1487:92:94","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16686,"nodeType":"StructuredDocumentation","src":"1585:78:94","text":"@dev Returns true if custom adapter parameters are activated in the proxy."},"functionSelector":"ed629c5c","id":16691,"implemented":false,"kind":"function","modifiers":[],"name":"useCustomAdapterParams","nodeType":"FunctionDefinition","parameters":{"id":16687,"nodeType":"ParameterList","parameters":[],"src":"1699:2:94"},"returnParameters":{"id":16690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16689,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16691,"src":"1725:4:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16688,"name":"bool","nodeType":"ElementaryTypeName","src":"1725:4:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1724:6:94"},"scope":16738,"src":"1668:63:94","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16692,"nodeType":"StructuredDocumentation","src":"1737:59:94","text":"@dev Returns the address of the underlying ERC20 token."},"functionSelector":"fc0c546a","id":16697,"implemented":false,"kind":"function","modifiers":[],"name":"token","nodeType":"FunctionDefinition","parameters":{"id":16693,"nodeType":"ParameterList","parameters":[],"src":"1815:2:94"},"returnParameters":{"id":16696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16695,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16697,"src":"1841:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16694,"name":"address","nodeType":"ElementaryTypeName","src":"1841:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1840:9:94"},"scope":16738,"src":"1801:49:94","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16698,"nodeType":"StructuredDocumentation","src":"1856:476:94","text":" @dev Estimate fee for sending token `_tokenId` to (`_dstChainId`, `_toAddress`).\n @param _dstChainId L0 defined chain id to send tokens to.\n @param _toAddress dynamic bytes array with the address you are sending tokens to on dstChain.\n @param _amount amount of the tokens to transfer.\n @param _useZro indicates to use zro to pay L0 fees.\n @param _adapterParams flexible bytes array to indicate messaging adapter services in L0."},"functionSelector":"365260b4","id":16715,"implemented":false,"kind":"function","modifiers":[],"name":"estimateSendFee","nodeType":"FunctionDefinition","parameters":{"id":16709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16700,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":16715,"src":"2371:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":16699,"name":"uint16","nodeType":"ElementaryTypeName","src":"2371:6:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":16702,"mutability":"mutable","name":"_toAddress","nodeType":"VariableDeclaration","scope":16715,"src":"2399:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16701,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2399:7:94","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16704,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":16715,"src":"2427:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16703,"name":"uint256","nodeType":"ElementaryTypeName","src":"2427:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16706,"mutability":"mutable","name":"_useZro","nodeType":"VariableDeclaration","scope":16715,"src":"2452:12:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16705,"name":"bool","nodeType":"ElementaryTypeName","src":"2452:4:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16708,"mutability":"mutable","name":"_adapterParams","nodeType":"VariableDeclaration","scope":16715,"src":"2474:29:94","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":16707,"name":"bytes","nodeType":"ElementaryTypeName","src":"2474:5:94","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2361:148:94"},"returnParameters":{"id":16714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16711,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":16715,"src":"2533:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16710,"name":"uint256","nodeType":"ElementaryTypeName","src":"2533:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16713,"mutability":"mutable","name":"zroFee","nodeType":"VariableDeclaration","scope":16715,"src":"2552:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16712,"name":"uint256","nodeType":"ElementaryTypeName","src":"2552:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2532:35:94"},"scope":16738,"src":"2337:231:94","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16716,"nodeType":"StructuredDocumentation","src":"2574:727:94","text":" @dev Send `_amount` amount of token to (`_dstChainId`, `_toAddress`) from `_from`.\n @param _from the token owner.\n @param _dstChainId the destination chain identifier.\n @param _toAddress can be any size depending on the `dstChainId`.\n @param _amount the quantity of tokens in wei.\n @param _minAmount the minimum amount of tokens to receive on dstChain.\n @param _callParams struct with custom options.\n - refundAddress: the address LayerZero refunds if too much message fee is sent.\n - zroPaymentAddress set to address(0x0) if not paying in ZRO (LayerZero Token).\n - adapterParams is a flexible bytes array used to configure messaging adapter services."},"functionSelector":"2cdf0b95","id":16731,"implemented":false,"kind":"function","modifiers":[],"name":"sendFrom","nodeType":"FunctionDefinition","parameters":{"id":16729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16718,"mutability":"mutable","name":"_from","nodeType":"VariableDeclaration","scope":16731,"src":"3333:13:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16717,"name":"address","nodeType":"ElementaryTypeName","src":"3333:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16720,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":16731,"src":"3356:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":16719,"name":"uint16","nodeType":"ElementaryTypeName","src":"3356:6:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":16722,"mutability":"mutable","name":"_toAddress","nodeType":"VariableDeclaration","scope":16731,"src":"3384:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16721,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3384:7:94","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16724,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":16731,"src":"3412:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16723,"name":"uint256","nodeType":"ElementaryTypeName","src":"3412:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16726,"mutability":"mutable","name":"_minAmount","nodeType":"VariableDeclaration","scope":16731,"src":"3437:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16725,"name":"uint256","nodeType":"ElementaryTypeName","src":"3437:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16728,"mutability":"mutable","name":"_callParams","nodeType":"VariableDeclaration","scope":16731,"src":"3465:33:94","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_LzCallParams_$16669_calldata_ptr","typeString":"struct ILayerZeroBALProxy.LzCallParams"},"typeName":{"id":16727,"name":"LzCallParams","nodeType":"UserDefinedTypeName","referencedDeclaration":16669,"src":"3465:12:94","typeDescriptions":{"typeIdentifier":"t_struct$_LzCallParams_$16669_storage_ptr","typeString":"struct ILayerZeroBALProxy.LzCallParams"}},"visibility":"internal"}],"src":"3323:181:94"},"returnParameters":{"id":16730,"nodeType":"ParameterList","parameters":[],"src":"3521:0:94"},"scope":16738,"src":"3306:216:94","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":16732,"nodeType":"StructuredDocumentation","src":"3528:78:94","text":"@dev Returns the maximum allowed precision (decimals) for proxy transfers."},"functionSelector":"857749b0","id":16737,"implemented":false,"kind":"function","modifiers":[],"name":"sharedDecimals","nodeType":"FunctionDefinition","parameters":{"id":16733,"nodeType":"ParameterList","parameters":[],"src":"3634:2:94"},"returnParameters":{"id":16736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16735,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16737,"src":"3655:5:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16734,"name":"uint8","nodeType":"ElementaryTypeName","src":"3655:5:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3654:7:94"},"scope":16738,"src":"3611:51:94","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17010,"src":"1027:2637:94"},{"abstract":false,"baseContracts":[{"baseName":{"id":16740,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"3946:14:94","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":16741,"nodeType":"InheritanceSpecifier","src":"3946:14:94"}],"contractDependencies":[928,1239,7187,15196],"contractKind":"contract","documentation":{"id":16739,"nodeType":"StructuredDocumentation","src":"3666:248:94","text":" @notice Root Gauge for the Avalanche network.\n @dev Uses LayerZero OFTv2 (Omni Fungible Token V2) proxy contracts to bridge BAL.\n See https://layerzero.gitbook.io/docs/evm-guides/layerzero-omnichain-contracts/oft/oftv2 for reference."},"fullyImplemented":true,"id":17009,"linearizedBaseContracts":[17009,15196,7187,1239,928],"name":"AvalancheRootGauge","nodeType":"ContractDefinition","nodes":[{"id":16744,"libraryName":{"id":16742,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"3973:9:94","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"3967:27:94","typeName":{"id":16743,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"3987:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":true,"id":16747,"mutability":"constant","name":"_AVALANCHE_LZ_CHAIN_ID","nodeType":"VariableDeclaration","scope":17009,"src":"4144:52:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":16745,"name":"uint16","nodeType":"ElementaryTypeName","src":"4144:6:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"313036","id":16746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4193:3:94","typeDescriptions":{"typeIdentifier":"t_rational_106_by_1","typeString":"int_const 106"},"value":"106"},"visibility":"private"},{"constant":true,"id":16750,"mutability":"constant","name":"_SEND_PACKET_TYPE","nodeType":"VariableDeclaration","scope":17009,"src":"4570:45:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":16748,"name":"uint16","nodeType":"ElementaryTypeName","src":"4570:6:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"30","id":16749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4614:1:94","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":true,"id":16753,"mutability":"constant","name":"_ADAPTER_PARAMS_VERSION","nodeType":"VariableDeclaration","scope":17009,"src":"4710:51:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":16751,"name":"uint16","nodeType":"ElementaryTypeName","src":"4710:6:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"31","id":16752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4760:1:94","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":false,"id":16755,"mutability":"immutable","name":"_lzBALProxy","nodeType":"VariableDeclaration","scope":17009,"src":"4768:48:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"},"typeName":{"id":16754,"name":"ILayerZeroBALProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":16738,"src":"4768:18:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"visibility":"private"},{"constant":false,"id":16757,"mutability":"immutable","name":"_minimumBridgeAmount","nodeType":"VariableDeclaration","scope":17009,"src":"5262:46:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16756,"name":"uint256","nodeType":"ElementaryTypeName","src":"5262:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":16759,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":17009,"src":"5418:26:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16758,"name":"address","nodeType":"ElementaryTypeName","src":"5418:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":16797,"nodeType":"Block","src":"5702:213:94","statements":[{"expression":{"id":16772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16770,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"5712:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16771,"name":"lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16764,"src":"5726:10:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"src":"5712:24:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"id":16773,"nodeType":"ExpressionStatement","src":"5712:24:94"},{"assignments":[16775],"declarations":[{"constant":false,"id":16775,"mutability":"mutable","name":"decimalDifference","nodeType":"VariableDeclaration","scope":16797,"src":"5746:23:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16774,"name":"uint8","nodeType":"ElementaryTypeName","src":"5746:5:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":16790,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16779,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16762,"src":"5786:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"id":16780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getBalancerToken","nodeType":"MemberAccess","referencedDeclaration":80,"src":"5786:23:94","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2447_$","typeString":"function () view external returns (contract IERC20)"}},"id":16781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5786:25:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":16778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5778:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16777,"name":"address","nodeType":"ElementaryTypeName","src":"5778:7:94","typeDescriptions":{}}},"id":16782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5778:34:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16776,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6512,"src":"5772:5:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$6512_$","typeString":"type(contract ERC20)"}},"id":16783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5772:41:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$6512","typeString":"contract ERC20"}},"id":16784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":6098,"src":"5772:50:94","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":16785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5772:52:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16786,"name":"lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16764,"src":"5827:10:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"id":16787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sharedDecimals","nodeType":"MemberAccess","referencedDeclaration":16737,"src":"5827:25:94","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint8_$","typeString":"function () external returns (uint8)"}},"id":16788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5827:27:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5772:82:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"5746:108:94"},{"expression":{"id":16795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16791,"name":"_minimumBridgeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16757,"src":"5864:20:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":16792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5887:2:94","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":16793,"name":"decimalDifference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16775,"src":"5891:17:94","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5887:21:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5864:44:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16796,"nodeType":"ExpressionStatement","src":"5864:44:94"}]},"documentation":{"id":16760,"nodeType":"StructuredDocumentation","src":"5451:149:94","text":" @dev Must be deployed by the AvalancheRootGaugeFactory, or other contract that implements\n `IAvalancheBridgeLimitsProvider`."},"id":16798,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":16767,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16762,"src":"5694:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":16768,"modifierName":{"id":16766,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"5679:14:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"5679:22:94"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":16765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16762,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":16798,"src":"5617:29:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":16761,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"5617:22:94","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":16764,"mutability":"mutable","name":"lzBALProxy","nodeType":"VariableDeclaration","scope":16798,"src":"5648:29:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"},"typeName":{"id":16763,"name":"ILayerZeroBALProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":16738,"src":"5648:18:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"visibility":"internal"}],"src":"5616:62:94"},"returnParameters":{"id":16769,"nodeType":"ParameterList","parameters":[],"src":"5702:0:94"},"scope":17009,"src":"5605:310:94","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":16825,"nodeType":"Block","src":"5996:343:94","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16806,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"6119:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"id":16807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":16697,"src":"6119:17:94","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":16808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6119:19:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":16811,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"6150:9:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":16810,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6142:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16809,"name":"address","nodeType":"ElementaryTypeName","src":"6142:7:94","typeDescriptions":{}}},"id":16812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6142:18:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6119:41:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964205772617070657220546f6b656e","id":16814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6162:23:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_3843b3ea34eba3d4077ca706259a55bd3e6ab03f43f519a25b2ae16e554fda25","typeString":"literal_string \"Invalid Wrapper Token\""},"value":"Invalid Wrapper Token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3843b3ea34eba3d4077ca706259a55bd3e6ab03f43f519a25b2ae16e554fda25","typeString":"literal_string \"Invalid Wrapper Token\""}],"id":16805,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6111:7:94","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6111:75:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16816,"nodeType":"ExpressionStatement","src":"6111:75:94"},{"expression":{"arguments":[{"id":16818,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16802,"src":"6281:17:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16817,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"6259:21:94","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":16819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6259:40:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16820,"nodeType":"ExpressionStatement","src":"6259:40:94"},{"expression":{"id":16823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16821,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16759,"src":"6310:10:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16822,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16800,"src":"6323:9:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6310:22:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16824,"nodeType":"ExpressionStatement","src":"6310:22:94"}]},"functionSelector":"cd6dc687","id":16826,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":16803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16800,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16826,"src":"5941:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16799,"name":"address","nodeType":"ElementaryTypeName","src":"5941:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16802,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":16826,"src":"5960:25:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16801,"name":"uint256","nodeType":"ElementaryTypeName","src":"5960:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5940:46:94"},"returnParameters":{"id":16804,"nodeType":"ParameterList","parameters":[],"src":"5996:0:94"},"scope":17009,"src":"5921:418:94","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":16835,"nodeType":"Block","src":"6444:34:94","statements":[{"expression":{"id":16833,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16759,"src":"6461:10:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":16832,"id":16834,"nodeType":"Return","src":"6454:17:94"}]},"documentation":{"id":16827,"nodeType":"StructuredDocumentation","src":"6345:31:94","text":"@inheritdoc IStakelessGauge"},"functionSelector":"1b88094d","id":16836,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":16829,"nodeType":"OverrideSpecifier","overrides":[],"src":"6417:8:94"},"parameters":{"id":16828,"nodeType":"ParameterList","parameters":[],"src":"6402:2:94"},"returnParameters":{"id":16832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16831,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16836,"src":"6435:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16830,"name":"address","nodeType":"ElementaryTypeName","src":"6435:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6434:9:94"},"scope":17009,"src":"6381:97:94","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":16847,"nodeType":"Block","src":"6619:44:94","statements":[{"expression":{"arguments":[{"id":16844,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"6644:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}],"id":16843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6636:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16842,"name":"address","nodeType":"ElementaryTypeName","src":"6636:7:94","typeDescriptions":{}}},"id":16845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6636:20:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":16841,"id":16846,"nodeType":"Return","src":"6629:27:94"}]},"documentation":{"id":16837,"nodeType":"StructuredDocumentation","src":"6484:75:94","text":"@dev Return the Layer Zero proxy contract for the underlying BAL token."},"functionSelector":"05c2c78d","id":16848,"implemented":true,"kind":"function","modifiers":[],"name":"getBALProxy","nodeType":"FunctionDefinition","parameters":{"id":16838,"nodeType":"ParameterList","parameters":[],"src":"6584:2:94"},"returnParameters":{"id":16841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16840,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16848,"src":"6610:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16839,"name":"address","nodeType":"ElementaryTypeName","src":"6610:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6609:9:94"},"scope":17009,"src":"6564:99:94","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":16856,"nodeType":"Block","src":"6896:44:94","statements":[{"expression":{"id":16854,"name":"_minimumBridgeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16757,"src":"6913:20:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16853,"id":16855,"nodeType":"Return","src":"6906:27:94"}]},"documentation":{"id":16849,"nodeType":"StructuredDocumentation","src":"6669:158:94","text":" @dev Returns the minimum amount of tokens that can be bridged.\n Values lower than this one will not even be transferred to the proxy."},"functionSelector":"5e8a8389","id":16857,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumBridgeAmount","nodeType":"FunctionDefinition","parameters":{"id":16850,"nodeType":"ParameterList","parameters":[],"src":"6863:2:94"},"returnParameters":{"id":16853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16852,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16857,"src":"6887:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16851,"name":"uint256","nodeType":"ElementaryTypeName","src":"6887:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6886:9:94"},"scope":17009,"src":"6832:108:94","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[15021],"body":{"id":16869,"nodeType":"Block","src":"7051:64:94","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":16865,"name":"_getAdapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17008,"src":"7088:17:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_memory_ptr_$","typeString":"function () view returns (bytes memory)"}},"id":16866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7088:19:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16864,"name":"_getTotalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16895,"src":"7068:19:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes memory) view returns (uint256)"}},"id":16867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7068:40:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16863,"id":16868,"nodeType":"Return","src":"7061:47:94"}]},"documentation":{"id":16858,"nodeType":"StructuredDocumentation","src":"6946:31:94","text":"@inheritdoc IStakelessGauge"},"functionSelector":"b0245225","id":16870,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalBridgeCost","nodeType":"FunctionDefinition","overrides":{"id":16860,"nodeType":"OverrideSpecifier","overrides":[],"src":"7024:8:94"},"parameters":{"id":16859,"nodeType":"ParameterList","parameters":[],"src":"7009:2:94"},"returnParameters":{"id":16863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16862,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16870,"src":"7042:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16861,"name":"uint256","nodeType":"ElementaryTypeName","src":"7042:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7041:9:94"},"scope":17009,"src":"6982:133:94","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":16894,"nodeType":"Block","src":"7210:452:94","statements":[{"assignments":[16878,null],"declarations":[{"constant":false,"id":16878,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":16894,"src":"7403:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16877,"name":"uint256","nodeType":"ElementaryTypeName","src":"7403:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":16891,"initialValue":{"arguments":[{"id":16881,"name":"_AVALANCHE_LZ_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16747,"src":"7467:22:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":16884,"name":"getRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16836,"src":"7542:12:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":16885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7542:14:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16882,"name":"AvalancheRootGaugeLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17114,"src":"7503:21:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AvalancheRootGaugeLib_$17114_$","typeString":"type(library AvalancheRootGaugeLib)"}},"id":16883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"bytes32Recipient","nodeType":"MemberAccess","referencedDeclaration":17113,"src":"7503:38:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes32_$","typeString":"function (address) pure returns (bytes32)"}},"id":16886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7503:54:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":16887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7571:1:94","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"66616c7365","id":16888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7586:5:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":16889,"name":"adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16872,"src":"7605:13:94","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16879,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"7426:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"id":16880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"estimateSendFee","nodeType":"MemberAccess","referencedDeclaration":16715,"src":"7426:27:94","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint16_$_t_bytes32_$_t_uint256_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint16,bytes32,uint256,bool,bytes memory) view external returns (uint256,uint256)"}},"id":16890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7426:202:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7402:226:94"},{"expression":{"id":16892,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16878,"src":"7646:9:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16876,"id":16893,"nodeType":"Return","src":"7639:16:94"}]},"id":16895,"implemented":true,"kind":"function","modifiers":[],"name":"_getTotalBridgeCost","nodeType":"FunctionDefinition","parameters":{"id":16873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16872,"mutability":"mutable","name":"adapterParams","nodeType":"VariableDeclaration","scope":16895,"src":"7150:26:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16871,"name":"bytes","nodeType":"ElementaryTypeName","src":"7150:5:94","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7149:28:94"},"returnParameters":{"id":16876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16875,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16895,"src":"7201:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16874,"name":"uint256","nodeType":"ElementaryTypeName","src":"7201:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7200:9:94"},"scope":17009,"src":"7121:541:94","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[15040],"body":{"id":16976,"nodeType":"Block","src":"7731:1620:94","statements":[{"assignments":[16902],"declarations":[{"constant":false,"id":16902,"mutability":"mutable","name":"amountWithoutDust","nodeType":"VariableDeclaration","scope":16976,"src":"7741:25:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16901,"name":"uint256","nodeType":"ElementaryTypeName","src":"7741:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16908,"initialValue":{"arguments":[{"id":16905,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16897,"src":"7802:10:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16906,"name":"_minimumBridgeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16757,"src":"7814:20:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16903,"name":"AvalancheRootGaugeLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17114,"src":"7769:21:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AvalancheRootGaugeLib_$17114_$","typeString":"type(library AvalancheRootGaugeLib)"}},"id":16904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"removeDust","nodeType":"MemberAccess","referencedDeclaration":17093,"src":"7769:32:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":16907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7769:66:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7741:94:94"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16909,"name":"amountWithoutDust","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16902,"src":"7908:17:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7929:1:94","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7908:22:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16914,"nodeType":"IfStatement","src":"7904:59:94","trueBody":{"id":16913,"nodeType":"Block","src":"7932:31:94","statements":[{"functionReturnParameters":16900,"id":16912,"nodeType":"Return","src":"7946:7:94"}]}},{"assignments":[16916],"declarations":[{"constant":false,"id":16916,"mutability":"mutable","name":"adapterParams","nodeType":"VariableDeclaration","scope":16976,"src":"7973:26:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16915,"name":"bytes","nodeType":"ElementaryTypeName","src":"7973:5:94","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":16919,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16917,"name":"_getAdapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17008,"src":"8002:17:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_memory_ptr_$","typeString":"function () view returns (bytes memory)"}},"id":16918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8002:19:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7973:48:94"},{"assignments":[16921],"declarations":[{"constant":false,"id":16921,"mutability":"mutable","name":"totalBridgeCost","nodeType":"VariableDeclaration","scope":16976,"src":"8031:23:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16920,"name":"uint256","nodeType":"ElementaryTypeName","src":"8031:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16925,"initialValue":{"arguments":[{"id":16923,"name":"adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16916,"src":"8077:13:94","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16922,"name":"_getTotalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16895,"src":"8057:19:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes memory) view returns (uint256)"}},"id":16924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8057:34:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8031:60:94"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16927,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8110:3:94","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"8110:9:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":16929,"name":"totalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16921,"src":"8123:15:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8110:28:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f7272656374206d73672e76616c756520706173736564","id":16931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8140:28:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_56d4a48d23c5e1d04e805cebfda5734ae7721ed375a1cc40426062043619622b","typeString":"literal_string \"Incorrect msg.value passed\""},"value":"Incorrect msg.value passed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_56d4a48d23c5e1d04e805cebfda5734ae7721ed375a1cc40426062043619622b","typeString":"literal_string \"Incorrect msg.value passed\""}],"id":16926,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8102:7:94","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8102:67:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16933,"nodeType":"ExpressionStatement","src":"8102:67:94"},{"expression":{"arguments":[{"arguments":[{"id":16939,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"8285:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}],"id":16938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8277:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16937,"name":"address","nodeType":"ElementaryTypeName","src":"8277:7:94","typeDescriptions":{}}},"id":16940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8277:20:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16941,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16897,"src":"8299:10:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16934,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"8255:9:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":16936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"8255:21:94","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":16942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8255:55:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16943,"nodeType":"ExpressionStatement","src":"8255:55:94"},{"expression":{"arguments":[{"arguments":[{"id":16951,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9077:4:94","typeDescriptions":{"typeIdentifier":"t_contract$_AvalancheRootGauge_$17009","typeString":"contract AvalancheRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AvalancheRootGauge_$17009","typeString":"contract AvalancheRootGauge"}],"id":16950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9069:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16949,"name":"address","nodeType":"ElementaryTypeName","src":"9069:7:94","typeDescriptions":{}}},"id":16952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9069:13:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16953,"name":"_AVALANCHE_LZ_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16747,"src":"9096:22:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":16956,"name":"getRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16836,"src":"9171:12:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":16957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9171:14:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16954,"name":"AvalancheRootGaugeLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17114,"src":"9132:21:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AvalancheRootGaugeLib_$17114_$","typeString":"type(library AvalancheRootGaugeLib)"}},"id":16955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"bytes32Recipient","nodeType":"MemberAccess","referencedDeclaration":17113,"src":"9132:38:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes32_$","typeString":"function (address) pure returns (bytes32)"}},"id":16958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9132:54:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":16959,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16897,"src":"9200:10:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16960,"name":"amountWithoutDust","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16902,"src":"9224:17:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"arguments":[{"expression":{"id":16965,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9295:3:94","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9295:10:94","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":16964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9287:8:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":16963,"name":"address","nodeType":"ElementaryTypeName","src":"9287:8:94","stateMutability":"payable","typeDescriptions":{}}},"id":16967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9287:19:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"hexValue":"30","id":16970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9316:1:94","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":16969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9308:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16968,"name":"address","nodeType":"ElementaryTypeName","src":"9308:7:94","typeDescriptions":{}}},"id":16971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9308:10:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":16972,"name":"adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16916,"src":"9320:13:94","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16961,"name":"ILayerZeroBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16738,"src":"9255:18:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILayerZeroBALProxy_$16738_$","typeString":"type(contract ILayerZeroBALProxy)"}},"id":16962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LzCallParams","nodeType":"MemberAccess","referencedDeclaration":16669,"src":"9255:31:94","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_LzCallParams_$16669_storage_ptr_$","typeString":"type(struct ILayerZeroBALProxy.LzCallParams storage pointer)"}},"id":16973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9255:79:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LzCallParams_$16669_memory_ptr","typeString":"struct ILayerZeroBALProxy.LzCallParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_LzCallParams_$16669_memory_ptr","typeString":"struct ILayerZeroBALProxy.LzCallParams memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_LzCallParams_$16669_memory_ptr","typeString":"struct ILayerZeroBALProxy.LzCallParams memory"}],"expression":{"id":16944,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"9009:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"id":16946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendFrom","nodeType":"MemberAccess","referencedDeclaration":16731,"src":"9009:20:94","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_bytes32_$_t_uint256_$_t_uint256_$_t_struct$_LzCallParams_$16669_memory_ptr_$returns$__$","typeString":"function (address,uint16,bytes32,uint256,uint256,struct ILayerZeroBALProxy.LzCallParams memory) payable external"}},"id":16948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":16947,"name":"totalBridgeCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16921,"src":"9038:15:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"9009:46:94","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint16_$_t_bytes32_$_t_uint256_$_t_uint256_$_t_struct$_LzCallParams_$16669_memory_ptr_$returns$__$value","typeString":"function (address,uint16,bytes32,uint256,uint256,struct ILayerZeroBALProxy.LzCallParams memory) payable external"}},"id":16974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9009:335:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16975,"nodeType":"ExpressionStatement","src":"9009:335:94"}]},"id":16977,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":16899,"nodeType":"OverrideSpecifier","overrides":[],"src":"7722:8:94"},"parameters":{"id":16898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16897,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":16977,"src":"7693:18:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16896,"name":"uint256","nodeType":"ElementaryTypeName","src":"7693:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7692:20:94"},"returnParameters":{"id":16900,"nodeType":"ParameterList","parameters":[],"src":"7731:0:94"},"scope":17009,"src":"7668:1683:94","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":17007,"nodeType":"Block","src":"9423:1182:94","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16982,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"10326:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"id":16983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"useCustomAdapterParams","nodeType":"MemberAccess","referencedDeclaration":16691,"src":"10326:34:94","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":16984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10326:36:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17005,"nodeType":"Block","src":"10558:41:94","statements":[{"expression":{"arguments":[{"hexValue":"","id":17002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10585:2:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":17001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10579:5:94","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":17000,"name":"bytes","nodeType":"ElementaryTypeName","src":"10579:5:94","typeDescriptions":{}}},"id":17003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10579:9:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16981,"id":17004,"nodeType":"Return","src":"10572:16:94"}]},"id":17006,"nodeType":"IfStatement","src":"10322:277:94","trueBody":{"id":16999,"nodeType":"Block","src":"10364:188:94","statements":[{"assignments":[16986],"declarations":[{"constant":false,"id":16986,"mutability":"mutable","name":"minDstGas","nodeType":"VariableDeclaration","scope":16999,"src":"10378:17:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16985,"name":"uint256","nodeType":"ElementaryTypeName","src":"10378:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16992,"initialValue":{"arguments":[{"id":16989,"name":"_AVALANCHE_LZ_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16747,"src":"10426:22:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":16990,"name":"_SEND_PACKET_TYPE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16750,"src":"10450:17:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":16987,"name":"_lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"10398:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"id":16988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"minDstGasLookup","nodeType":"MemberAccess","referencedDeclaration":16685,"src":"10398:27:94","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint16_$_t_uint16_$returns$_t_uint256_$","typeString":"function (uint16,uint16) view external returns (uint256)"}},"id":16991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10398:70:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10378:90:94"},{"expression":{"arguments":[{"id":16995,"name":"_ADAPTER_PARAMS_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"10506:23:94","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":16996,"name":"minDstGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16986,"src":"10531:9:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16993,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10489:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"10489:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10489:52:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16981,"id":16998,"nodeType":"Return","src":"10482:59:94"}]}}]},"id":17008,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdapterParams","nodeType":"FunctionDefinition","parameters":{"id":16978,"nodeType":"ParameterList","parameters":[],"src":"9383:2:94"},"returnParameters":{"id":16981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16980,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17008,"src":"9409:12:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16979,"name":"bytes","nodeType":"ElementaryTypeName","src":"9409:5:94","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9408:14:94"},"scope":17009,"src":"9357:1248:94","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":17010,"src":"3915:6692:94"}],"src":"688:9920:94"},"id":94},"contracts/gauges/avalanche/AvalancheRootGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/avalanche/AvalancheRootGaugeFactory.sol","exportedSymbols":{"AvalancheRootGaugeFactory":[17070]},"id":17071,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17011,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:95"},{"id":17012,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:95"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":17013,"nodeType":"ImportDirective","scope":17071,"sourceUnit":3052,"src":"747:65:95","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":17014,"nodeType":"ImportDirective","scope":17071,"sourceUnit":3698,"src":"814:88:95","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":17015,"nodeType":"ImportDirective","scope":17071,"sourceUnit":13897,"src":"904:33:95","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/avalanche/AvalancheRootGauge.sol","file":"./AvalancheRootGauge.sol","id":17016,"nodeType":"ImportDirective","scope":17071,"sourceUnit":17010,"src":"938:34:95","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17017,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"1012:16:95","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":17018,"nodeType":"InheritanceSpecifier","src":"1012:16:95"},{"baseName":{"id":17019,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"1030:23:95","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":17020,"nodeType":"InheritanceSpecifier","src":"1030:23:95"}],"contractDependencies":[941,2259,3128,3697,13896,17009],"contractKind":"contract","fullyImplemented":true,"id":17070,"linearizedBaseContracts":[17070,3697,3128,2259,13896,941],"name":"AvalancheRootGaugeFactory","nodeType":"ContractDefinition","nodes":[{"body":{"id":17042,"nodeType":"Block","src":"1279:64:95","statements":[]},"id":17043,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"id":17033,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17024,"src":"1226:6:95","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":17034,"name":"lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17026,"src":"1234:10:95","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}],"id":17032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1203:22:95","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$_t_contract$_ILayerZeroBALProxy_$16738_$returns$_t_contract$_AvalancheRootGauge_$17009_$","typeString":"function (contract IMainnetBalancerMinter,contract ILayerZeroBALProxy) returns (contract AvalancheRootGauge)"},"typeName":{"id":17031,"name":"AvalancheRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":17009,"src":"1207:18:95","typeDescriptions":{"typeIdentifier":"t_contract$_AvalancheRootGauge_$17009","typeString":"contract AvalancheRootGauge"}}},"id":17035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1203:42:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AvalancheRootGauge_$17009","typeString":"contract AvalancheRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AvalancheRootGauge_$17009","typeString":"contract AvalancheRootGauge"}],"id":17030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1195:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17029,"name":"address","nodeType":"ElementaryTypeName","src":"1195:7:95","typeDescriptions":{}}},"id":17036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1195:51:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17037,"modifierName":{"id":17028,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1178:16:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"1178:69:95"},{"arguments":[{"id":17039,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17022,"src":"1272:5:95","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":17040,"modifierName":{"id":17038,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1248:23:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1248:30:95"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17022,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":17043,"src":"1081:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":17021,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1081:6:95","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":17024,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17043,"src":"1103:29:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17023,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1103:22:95","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17026,"mutability":"mutable","name":"lzBALProxy","nodeType":"VariableDeclaration","scope":17043,"src":"1142:29:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"},"typeName":{"id":17025,"name":"ILayerZeroBALProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":16738,"src":"1142:18:95","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"visibility":"internal"}],"src":"1071:106:95"},"returnParameters":{"id":17041,"nodeType":"ParameterList","parameters":[],"src":"1279:0:95"},"scope":17070,"src":"1060:283:95","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17068,"nodeType":"Block","src":"1910:140:95","statements":[{"assignments":[17054],"declarations":[{"constant":false,"id":17054,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":17068,"src":"1920:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17053,"name":"address","nodeType":"ElementaryTypeName","src":"1920:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17057,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17055,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"1936:7:95","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":17056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1936:9:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1920:25:95"},{"expression":{"arguments":[{"id":17062,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17046,"src":"1992:9:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17063,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17048,"src":"2003:17:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":17059,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17054,"src":"1974:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17058,"name":"AvalancheRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17009,"src":"1955:18:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AvalancheRootGauge_$17009_$","typeString":"type(contract AvalancheRootGauge)"}},"id":17060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1955:25:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AvalancheRootGauge_$17009","typeString":"contract AvalancheRootGauge"}},"id":17061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":16826,"src":"1955:36:95","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":17064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1955:66:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17065,"nodeType":"ExpressionStatement","src":"1955:66:95"},{"expression":{"id":17066,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17054,"src":"2038:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17052,"id":17067,"nodeType":"Return","src":"2031:12:95"}]},"documentation":{"id":17044,"nodeType":"StructuredDocumentation","src":"1349:467:95","text":" @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Avalanche.\n @dev Care must be taken to ensure that gauges deployed from this factory are suitable before they are added\n to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":17069,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":17049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17046,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17069,"src":"1837:17:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17045,"name":"address","nodeType":"ElementaryTypeName","src":"1837:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17048,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17069,"src":"1856:25:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17047,"name":"uint256","nodeType":"ElementaryTypeName","src":"1856:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1836:46:95"},"returnParameters":{"id":17052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17051,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17069,"src":"1901:7:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17050,"name":"address","nodeType":"ElementaryTypeName","src":"1901:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1900:9:95"},"scope":17070,"src":"1821:229:95","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17071,"src":"974:1078:95"}],"src":"688:1365:95"},"id":95},"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol":{"ast":{"absolutePath":"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol","exportedSymbols":{"AvalancheRootGaugeLib":[17114]},"id":17115,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17072,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:96"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":17114,"linearizedBaseContracts":[17114],"name":"AvalancheRootGaugeLib","nodeType":"ContractDefinition","nodes":[{"body":{"id":17092,"nodeType":"Block","src":"907:81:96","statements":[{"assignments":[17083],"declarations":[{"constant":false,"id":17083,"mutability":"mutable","name":"dust","nodeType":"VariableDeclaration","scope":17092,"src":"917:12:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17082,"name":"uint256","nodeType":"ElementaryTypeName","src":"917:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17087,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17084,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17075,"src":"932:6:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":17085,"name":"dustModulo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17077,"src":"941:10:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"932:19:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"917:34:96"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17088,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17075,"src":"968:6:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":17089,"name":"dust","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17083,"src":"977:4:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"968:13:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17081,"id":17091,"nodeType":"Return","src":"961:20:96"}]},"documentation":{"id":17073,"nodeType":"StructuredDocumentation","src":"749:65:96","text":"@dev Truncates given amount to the maximum allowed precision."},"id":17093,"implemented":true,"kind":"function","modifiers":[],"name":"removeDust","nodeType":"FunctionDefinition","parameters":{"id":17078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17075,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":17093,"src":"839:14:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17074,"name":"uint256","nodeType":"ElementaryTypeName","src":"839:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17077,"mutability":"mutable","name":"dustModulo","nodeType":"VariableDeclaration","scope":17093,"src":"855:18:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17076,"name":"uint256","nodeType":"ElementaryTypeName","src":"855:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"838:36:96"},"returnParameters":{"id":17081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17080,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17093,"src":"898:7:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17079,"name":"uint256","nodeType":"ElementaryTypeName","src":"898:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"897:9:96"},"scope":17114,"src":"819:169:96","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":17112,"nodeType":"Block","src":"1150:60:96","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":17107,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17096,"src":"1191:9:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1183:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":17105,"name":"uint160","nodeType":"ElementaryTypeName","src":"1183:7:96","typeDescriptions":{}}},"id":17108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1183:18:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":17104,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1175:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17103,"name":"uint256","nodeType":"ElementaryTypeName","src":"1175:7:96","typeDescriptions":{}}},"id":17109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1175:27:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1167:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":17101,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1167:7:96","typeDescriptions":{}}},"id":17110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1167:36:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":17100,"id":17111,"nodeType":"Return","src":"1160:43:96"}]},"documentation":{"id":17094,"nodeType":"StructuredDocumentation","src":"994:74:96","text":"@dev Returns given address as bytes32, padded with zeroes to the left."},"id":17113,"implemented":true,"kind":"function","modifiers":[],"name":"bytes32Recipient","nodeType":"FunctionDefinition","parameters":{"id":17097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17096,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17113,"src":"1099:17:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17095,"name":"address","nodeType":"ElementaryTypeName","src":"1099:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1098:19:96"},"returnParameters":{"id":17100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17099,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17113,"src":"1141:7:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17098,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1141:7:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1140:9:96"},"scope":17114,"src":"1073:137:96","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":17115,"src":"713:499:96"}],"src":"688:525:96"},"id":96},"contracts/gauges/base/BaseRootGauge.sol":{"ast":{"absolutePath":"contracts/gauges/base/BaseRootGauge.sol","exportedSymbols":{"BaseRootGauge":[17227]},"id":17228,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17116,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:97"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol","id":17117,"nodeType":"ImportDirective","scope":17228,"sourceUnit":841,"src":"713:87:97","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":17118,"nodeType":"ImportDirective","scope":17228,"sourceUnit":7342,"src":"802:79:97","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":17119,"nodeType":"ImportDirective","scope":17228,"sourceUnit":15197,"src":"883:31:97","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17120,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"942:14:97","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":17121,"nodeType":"InheritanceSpecifier","src":"942:14:97"}],"contractDependencies":[928,1239,7187,15196],"contractKind":"contract","fullyImplemented":true,"id":17227,"linearizedBaseContracts":[17227,15196,7187,1239,928],"name":"BaseRootGauge","nodeType":"ContractDefinition","nodes":[{"id":17124,"libraryName":{"id":17122,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"969:9:97","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"963:27:97","typeName":{"id":17123,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"983:6:97","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":true,"id":17127,"mutability":"constant","name":"_MIN_GAS_LIMIT","nodeType":"VariableDeclaration","scope":17227,"src":"1963:42:97","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17125,"name":"uint32","nodeType":"ElementaryTypeName","src":"1963:6:97","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"30","id":17126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2004:1:97","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":false,"id":17129,"mutability":"immutable","name":"_baseL1StandardBridge","nodeType":"VariableDeclaration","scope":17227,"src":"2012:57:97","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17128,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"2012:17:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"private"},{"constant":false,"id":17131,"mutability":"immutable","name":"_baseBal","nodeType":"VariableDeclaration","scope":17227,"src":"2263:34:97","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17130,"name":"address","nodeType":"ElementaryTypeName","src":"2263:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":17133,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":17227,"src":"2407:26:97","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17132,"name":"address","nodeType":"ElementaryTypeName","src":"2407:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":17153,"nodeType":"Block","src":"2593:89:97","statements":[{"expression":{"id":17147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17145,"name":"_baseL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17129,"src":"2603:21:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17146,"name":"baseL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17137,"src":"2627:20:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"src":"2603:44:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"id":17148,"nodeType":"ExpressionStatement","src":"2603:44:97"},{"expression":{"id":17151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17149,"name":"_baseBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17131,"src":"2657:8:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17150,"name":"baseBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17139,"src":"2668:7:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2657:18:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17152,"nodeType":"ExpressionStatement","src":"2657:18:97"}]},"id":17154,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":17142,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17135,"src":"2585:6:97","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":17143,"modifierName":{"id":17141,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"2570:14:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"2570:22:97"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17135,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17154,"src":"2461:29:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17134,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"2461:22:97","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17137,"mutability":"mutable","name":"baseL1StandardBridge","nodeType":"VariableDeclaration","scope":17154,"src":"2500:38:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17136,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"2500:17:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"internal"},{"constant":false,"id":17139,"mutability":"mutable","name":"baseBal","nodeType":"VariableDeclaration","scope":17154,"src":"2548:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17138,"name":"address","nodeType":"ElementaryTypeName","src":"2548:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2451:118:97"},"returnParameters":{"id":17144,"nodeType":"ParameterList","parameters":[],"src":"2593:0:97"},"scope":17227,"src":"2440:242:97","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17169,"nodeType":"Block","src":"2763:152:97","statements":[{"expression":{"arguments":[{"id":17162,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17158,"src":"2857:17:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17161,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"2835:21:97","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":17163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2835:40:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17164,"nodeType":"ExpressionStatement","src":"2835:40:97"},{"expression":{"id":17167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17165,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17133,"src":"2886:10:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17166,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17156,"src":"2899:9:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2886:22:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17168,"nodeType":"ExpressionStatement","src":"2886:22:97"}]},"functionSelector":"cd6dc687","id":17170,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":17159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17156,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17170,"src":"2708:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17155,"name":"address","nodeType":"ElementaryTypeName","src":"2708:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17158,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17170,"src":"2727:25:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17157,"name":"uint256","nodeType":"ElementaryTypeName","src":"2727:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2707:46:97"},"returnParameters":{"id":17160,"nodeType":"ParameterList","parameters":[],"src":"2763:0:97"},"scope":17227,"src":"2688:227:97","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":17178,"nodeType":"Block","src":"2986:34:97","statements":[{"expression":{"id":17176,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17133,"src":"3003:10:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17175,"id":17177,"nodeType":"Return","src":"2996:17:97"}]},"functionSelector":"1b88094d","id":17179,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":17172,"nodeType":"OverrideSpecifier","overrides":[],"src":"2959:8:97"},"parameters":{"id":17171,"nodeType":"ParameterList","parameters":[],"src":"2942:2:97"},"returnParameters":{"id":17175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17174,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17179,"src":"2977:7:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17173,"name":"address","nodeType":"ElementaryTypeName","src":"2977:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2976:9:97"},"scope":17227,"src":"2921:99:97","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17186,"nodeType":"Block","src":"3103:45:97","statements":[{"expression":{"id":17184,"name":"_baseL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17129,"src":"3120:21:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"functionReturnParameters":17183,"id":17185,"nodeType":"Return","src":"3113:28:97"}]},"functionSelector":"a267b631","id":17187,"implemented":true,"kind":"function","modifiers":[],"name":"getBaseL1StandardBridge","nodeType":"FunctionDefinition","parameters":{"id":17180,"nodeType":"ParameterList","parameters":[],"src":"3058:2:97"},"returnParameters":{"id":17183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17182,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17187,"src":"3084:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17181,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"3084:17:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"internal"}],"src":"3083:19:97"},"scope":17227,"src":"3026:122:97","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17194,"nodeType":"Block","src":"3208:32:97","statements":[{"expression":{"id":17192,"name":"_baseBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17131,"src":"3225:8:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17191,"id":17193,"nodeType":"Return","src":"3218:15:97"}]},"functionSelector":"b4921aa3","id":17195,"implemented":true,"kind":"function","modifiers":[],"name":"getBaseBal","nodeType":"FunctionDefinition","parameters":{"id":17188,"nodeType":"ParameterList","parameters":[],"src":"3173:2:97"},"returnParameters":{"id":17191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17190,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17195,"src":"3199:7:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17189,"name":"address","nodeType":"ElementaryTypeName","src":"3199:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3198:9:97"},"scope":17227,"src":"3154:86:97","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[15040],"body":{"id":17225,"nodeType":"Block","src":"3309:271:97","statements":[{"expression":{"arguments":[{"arguments":[{"id":17206,"name":"_baseL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17129,"src":"3349:21:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}],"id":17205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3341:7:97","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17204,"name":"address","nodeType":"ElementaryTypeName","src":"3341:7:97","typeDescriptions":{}}},"id":17207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3341:30:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17208,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17197,"src":"3373:10:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17201,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"3319:9:97","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":17203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"3319:21:97","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":17209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3319:65:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17210,"nodeType":"ExpressionStatement","src":"3319:65:97"},{"expression":{"arguments":[{"arguments":[{"id":17216,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"3508:9:97","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":17215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3500:7:97","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17214,"name":"address","nodeType":"ElementaryTypeName","src":"3500:7:97","typeDescriptions":{}}},"id":17217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3500:18:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17218,"name":"_baseBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17131,"src":"3520:8:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17219,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17133,"src":"3530:10:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17220,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17197,"src":"3542:10:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17221,"name":"_MIN_GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17127,"src":"3554:14:97","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"","id":17222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3570:2:97","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":17211,"name":"_baseL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17129,"src":"3463:21:97","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"id":17213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"depositERC20To","nodeType":"MemberAccess","referencedDeclaration":839,"src":"3463:36:97","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint32,bytes memory) external"}},"id":17223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3463:110:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17224,"nodeType":"ExpressionStatement","src":"3463:110:97"}]},"id":17226,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":17199,"nodeType":"OverrideSpecifier","overrides":[],"src":"3300:8:97"},"parameters":{"id":17198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17197,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":17226,"src":"3271:18:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17196,"name":"uint256","nodeType":"ElementaryTypeName","src":"3271:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3270:20:97"},"returnParameters":{"id":17200,"nodeType":"ParameterList","parameters":[],"src":"3309:0:97"},"scope":17227,"src":"3246:334:97","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":17228,"src":"916:2666:97"}],"src":"688:2895:97"},"id":97},"contracts/gauges/base/BaseRootGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/base/BaseRootGaugeFactory.sol","exportedSymbols":{"BaseRootGaugeFactory":[17290]},"id":17291,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17229,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:98"},{"id":17230,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:98"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":17231,"nodeType":"ImportDirective","scope":17291,"sourceUnit":3698,"src":"747:88:98","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":17232,"nodeType":"ImportDirective","scope":17291,"sourceUnit":13897,"src":"837:33:98","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/base/BaseRootGauge.sol","file":"./BaseRootGauge.sol","id":17233,"nodeType":"ImportDirective","scope":17291,"sourceUnit":17228,"src":"871:29:98","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17234,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"935:16:98","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":17235,"nodeType":"InheritanceSpecifier","src":"935:16:98"},{"baseName":{"id":17236,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"953:23:98","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":17237,"nodeType":"InheritanceSpecifier","src":"953:23:98"}],"contractDependencies":[941,2259,3128,3697,13896,17227],"contractKind":"contract","fullyImplemented":true,"id":17290,"linearizedBaseContracts":[17290,3697,3128,2259,13896,941],"name":"BaseRootGaugeFactory","nodeType":"ContractDefinition","nodes":[{"body":{"id":17262,"nodeType":"Block","src":"1270:64:98","statements":[]},"id":17263,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"id":17252,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17241,"src":"1186:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":17253,"name":"baseL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17243,"src":"1194:20:98","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},{"id":17254,"name":"baseBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17245,"src":"1216:7:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},{"typeIdentifier":"t_address","typeString":"address"}],"id":17251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1168:17:98","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$_t_contract$_IL1StandardBridge_$840_$_t_address_$returns$_t_contract$_BaseRootGauge_$17227_$","typeString":"function (contract IMainnetBalancerMinter,contract IL1StandardBridge,address) returns (contract BaseRootGauge)"},"typeName":{"id":17250,"name":"BaseRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":17227,"src":"1172:13:98","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRootGauge_$17227","typeString":"contract BaseRootGauge"}}},"id":17255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1168:56:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BaseRootGauge_$17227","typeString":"contract BaseRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaseRootGauge_$17227","typeString":"contract BaseRootGauge"}],"id":17249,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1160:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17248,"name":"address","nodeType":"ElementaryTypeName","src":"1160:7:98","typeDescriptions":{}}},"id":17256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1160:65:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17257,"modifierName":{"id":17247,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1143:16:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"1143:83:98"},{"arguments":[{"id":17259,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17239,"src":"1259:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":17260,"modifierName":{"id":17258,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1235:23:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1235:30:98"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17239,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":17263,"src":"1004:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":17238,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1004:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":17241,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17263,"src":"1026:29:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17240,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1026:22:98","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17243,"mutability":"mutable","name":"baseL1StandardBridge","nodeType":"VariableDeclaration","scope":17263,"src":"1065:38:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17242,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"1065:17:98","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"internal"},{"constant":false,"id":17245,"mutability":"mutable","name":"baseBal","nodeType":"VariableDeclaration","scope":17263,"src":"1113:15:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17244,"name":"address","nodeType":"ElementaryTypeName","src":"1113:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"994:140:98"},"returnParameters":{"id":17261,"nodeType":"ParameterList","parameters":[],"src":"1270:0:98"},"scope":17290,"src":"983:351:98","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17288,"nodeType":"Block","src":"1900:135:98","statements":[{"assignments":[17274],"declarations":[{"constant":false,"id":17274,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":17288,"src":"1910:13:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17273,"name":"address","nodeType":"ElementaryTypeName","src":"1910:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17277,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17275,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"1926:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":17276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1926:9:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1910:25:98"},{"expression":{"arguments":[{"id":17282,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17266,"src":"1977:9:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17283,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17268,"src":"1988:17:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":17279,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17274,"src":"1959:5:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17278,"name":"BaseRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17227,"src":"1945:13:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseRootGauge_$17227_$","typeString":"type(contract BaseRootGauge)"}},"id":17280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1945:20:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BaseRootGauge_$17227","typeString":"contract BaseRootGauge"}},"id":17281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":17170,"src":"1945:31:98","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":17284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1945:61:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17285,"nodeType":"ExpressionStatement","src":"1945:61:98"},{"expression":{"id":17286,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17274,"src":"2023:5:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17272,"id":17287,"nodeType":"Return","src":"2016:12:98"}]},"documentation":{"id":17264,"nodeType":"StructuredDocumentation","src":"1340:466:98","text":" @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Optimism.\n @dev Care must be taken to ensure that gauges deployed from this factory are\n suitable before they are added to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":17289,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":17269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17266,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17289,"src":"1827:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17265,"name":"address","nodeType":"ElementaryTypeName","src":"1827:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17268,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17289,"src":"1846:25:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17267,"name":"uint256","nodeType":"ElementaryTypeName","src":"1846:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1826:46:98"},"returnParameters":{"id":17272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17271,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17289,"src":"1891:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17270,"name":"address","nodeType":"ElementaryTypeName","src":"1891:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1890:9:98"},"scope":17290,"src":"1811:224:98","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17291,"src":"902:1135:98"}],"src":"688:1350:98"},"id":98},"contracts/gauges/ethereum/LiquidityGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/ethereum/LiquidityGaugeFactory.sol","exportedSymbols":{"LiquidityGaugeFactory":[17336]},"id":17337,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17292,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:99"},{"id":17293,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:99"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","id":17294,"nodeType":"ImportDirective","scope":17337,"sourceUnit":1455,"src":"747:92:99","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":17295,"nodeType":"ImportDirective","scope":17337,"sourceUnit":13897,"src":"841:33:99","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17296,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"910:16:99","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":17297,"nodeType":"InheritanceSpecifier","src":"910:16:99"}],"contractDependencies":[941,13896],"contractKind":"contract","fullyImplemented":true,"id":17336,"linearizedBaseContracts":[17336,13896,941],"name":"LiquidityGaugeFactory","nodeType":"ContractDefinition","nodes":[{"body":{"id":17308,"nodeType":"Block","src":"1008:64:99","statements":[]},"id":17309,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"id":17304,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17299,"src":"1000:5:99","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$1454","typeString":"contract IStakingLiquidityGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$1454","typeString":"contract IStakingLiquidityGauge"}],"id":17303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"992:7:99","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17302,"name":"address","nodeType":"ElementaryTypeName","src":"992:7:99","typeDescriptions":{}}},"id":17305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"992:14:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17306,"modifierName":{"id":17301,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"975:16:99","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"975:32:99"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17299,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":17309,"src":"945:28:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$1454","typeString":"contract IStakingLiquidityGauge"},"typeName":{"id":17298,"name":"IStakingLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":1454,"src":"945:22:99","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$1454","typeString":"contract IStakingLiquidityGauge"}},"visibility":"internal"}],"src":"944:30:99"},"returnParameters":{"id":17307,"nodeType":"ParameterList","parameters":[],"src":"1008:0:99"},"scope":17336,"src":"933:139:99","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17334,"nodeType":"Block","src":"1807:139:99","statements":[{"assignments":[17320],"declarations":[{"constant":false,"id":17320,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":17334,"src":"1817:13:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17319,"name":"address","nodeType":"ElementaryTypeName","src":"1817:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17323,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17321,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"1833:7:99","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":17322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1833:9:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1817:25:99"},{"expression":{"arguments":[{"id":17328,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17312,"src":"1893:4:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17329,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17314,"src":"1899:17:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":17325,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17320,"src":"1875:5:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17324,"name":"IStakingLiquidityGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1454,"src":"1852:22:99","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStakingLiquidityGauge_$1454_$","typeString":"type(contract IStakingLiquidityGauge)"}},"id":17326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1852:29:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$1454","typeString":"contract IStakingLiquidityGauge"}},"id":17327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":1436,"src":"1852:40:99","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":17330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1852:65:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17331,"nodeType":"ExpressionStatement","src":"1852:65:99"},{"expression":{"id":17332,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17320,"src":"1934:5:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17318,"id":17333,"nodeType":"Return","src":"1927:12:99"}]},"documentation":{"id":17310,"nodeType":"StructuredDocumentation","src":"1078:640:99","text":" @notice Deploys a new gauge for a Balancer pool.\n @dev As anyone can register arbitrary Balancer pools with the Vault,\n it's impossible to prove onchain that `pool` is a \"valid\" deployment.\n Care must be taken to ensure that gauges deployed from this factory are\n suitable before they are added to the GaugeController.\n It is possible to deploy multiple gauges for a single pool.\n @param pool The address of the pool for which to deploy a gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":17335,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":17315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17312,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":17335,"src":"1739:12:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17311,"name":"address","nodeType":"ElementaryTypeName","src":"1739:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17314,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17335,"src":"1753:25:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17313,"name":"uint256","nodeType":"ElementaryTypeName","src":"1753:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1738:41:99"},"returnParameters":{"id":17318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17317,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17335,"src":"1798:7:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17316,"name":"address","nodeType":"ElementaryTypeName","src":"1798:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1797:9:99"},"scope":17336,"src":"1723:223:99","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17337,"src":"876:1072:99"}],"src":"688:1261:99"},"id":99},"contracts/gauges/ethereum/SingleRecipientGauge.sol":{"ast":{"absolutePath":"contracts/gauges/ethereum/SingleRecipientGauge.sol","exportedSymbols":{"SingleRecipientGauge":[17450]},"id":17451,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17338,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:100"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol","id":17339,"nodeType":"ImportDirective","scope":17451,"sourceUnit":625,"src":"713:85:100","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol","id":17340,"nodeType":"ImportDirective","scope":17451,"sourceUnit":3737,"src":"799:72:100","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":17341,"nodeType":"ImportDirective","scope":17451,"sourceUnit":7342,"src":"872:79:100","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":17342,"nodeType":"ImportDirective","scope":17451,"sourceUnit":15197,"src":"953:31:100","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17343,"name":"Version","nodeType":"UserDefinedTypeName","referencedDeclaration":3736,"src":"1019:7:100","typeDescriptions":{"typeIdentifier":"t_contract$_Version_$3736","typeString":"contract Version"}},"id":17344,"nodeType":"InheritanceSpecifier","src":"1019:7:100"},{"baseName":{"id":17345,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"1028:14:100","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":17346,"nodeType":"InheritanceSpecifier","src":"1028:14:100"}],"contractDependencies":[928,1239,2340,3736,7187,15196],"contractKind":"contract","fullyImplemented":true,"id":17450,"linearizedBaseContracts":[17450,15196,7187,1239,928,3736,2340],"name":"SingleRecipientGauge","nodeType":"ContractDefinition","nodes":[{"id":17349,"libraryName":{"id":17347,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"1055:9:100","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1049:27:100","typeName":{"id":17348,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1069:6:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":false,"id":17351,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":17450,"src":"1082:26:100","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17350,"name":"address","nodeType":"ElementaryTypeName","src":"1082:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":17353,"mutability":"mutable","name":"_feeDistributorRecipient","nodeType":"VariableDeclaration","scope":17450,"src":"1114:37:100","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17352,"name":"bool","nodeType":"ElementaryTypeName","src":"1114:4:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"body":{"id":17364,"nodeType":"Block","src":"1386:64:100","statements":[]},"id":17365,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"","id":17358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1359:2:100","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"id":17359,"modifierName":{"id":17357,"name":"Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"1351:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Version_$3736_$","typeString":"type(contract Version)"}},"nodeType":"ModifierInvocation","src":"1351:11:100"},{"arguments":[{"id":17361,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17355,"src":"1378:6:100","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":17362,"modifierName":{"id":17360,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"1363:14:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"1363:22:100"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17355,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17365,"src":"1320:29:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17354,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1320:22:100","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"}],"src":"1319:31:100"},"returnParameters":{"id":17363,"nodeType":"ParameterList","parameters":[],"src":"1386:0:100"},"scope":17450,"src":"1308:142:100","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17392,"nodeType":"Block","src":"1622:242:100","statements":[{"expression":{"arguments":[{"id":17377,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17369,"src":"1716:17:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17376,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"1694:21:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":17378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1694:40:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17379,"nodeType":"ExpressionStatement","src":"1694:40:100"},{"expression":{"id":17382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17380,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17351,"src":"1745:10:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17381,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17367,"src":"1758:9:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1745:22:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17383,"nodeType":"ExpressionStatement","src":"1745:22:100"},{"expression":{"id":17386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17384,"name":"_feeDistributorRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17353,"src":"1777:24:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17385,"name":"feeDistributorRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17371,"src":"1804:23:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1777:50:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17387,"nodeType":"ExpressionStatement","src":"1777:50:100"},{"expression":{"arguments":[{"id":17389,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17373,"src":"1849:7:100","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":17388,"name":"_setVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3735,"src":"1837:11:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":17390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1837:20:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17391,"nodeType":"ExpressionStatement","src":"1837:20:100"}]},"functionSelector":"06b70aa2","id":17393,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":17374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17367,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17393,"src":"1485:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17366,"name":"address","nodeType":"ElementaryTypeName","src":"1485:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17369,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17393,"src":"1512:25:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17368,"name":"uint256","nodeType":"ElementaryTypeName","src":"1512:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17371,"mutability":"mutable","name":"feeDistributorRecipient","nodeType":"VariableDeclaration","scope":17393,"src":"1547:28:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17370,"name":"bool","nodeType":"ElementaryTypeName","src":"1547:4:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":17373,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":17393,"src":"1585:21:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17372,"name":"string","nodeType":"ElementaryTypeName","src":"1585:6:100","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1475:137:100"},"returnParameters":{"id":17375,"nodeType":"ParameterList","parameters":[],"src":"1622:0:100"},"scope":17450,"src":"1456:408:100","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":17401,"nodeType":"Block","src":"1933:34:100","statements":[{"expression":{"id":17399,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17351,"src":"1950:10:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17398,"id":17400,"nodeType":"Return","src":"1943:17:100"}]},"functionSelector":"1b88094d","id":17402,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":17395,"nodeType":"OverrideSpecifier","overrides":[],"src":"1906:8:100"},"parameters":{"id":17394,"nodeType":"ParameterList","parameters":[],"src":"1891:2:100"},"returnParameters":{"id":17398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17397,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17402,"src":"1924:7:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17396,"name":"address","nodeType":"ElementaryTypeName","src":"1924:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1923:9:100"},"scope":17450,"src":"1870:97:100","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":17409,"nodeType":"Block","src":"2037:48:100","statements":[{"expression":{"id":17407,"name":"_feeDistributorRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17353,"src":"2054:24:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":17406,"id":17408,"nodeType":"Return","src":"2047:31:100"}]},"functionSelector":"95d666c8","id":17410,"implemented":true,"kind":"function","modifiers":[],"name":"isRecipientFeeDistributor","nodeType":"FunctionDefinition","parameters":{"id":17403,"nodeType":"ParameterList","parameters":[],"src":"2007:2:100"},"returnParameters":{"id":17406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17405,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17410,"src":"2031:4:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17404,"name":"bool","nodeType":"ElementaryTypeName","src":"2031:4:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2030:6:100"},"scope":17450,"src":"1973:112:100","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[15040],"body":{"id":17448,"nodeType":"Block","src":"2154:315:100","statements":[{"assignments":[17417],"declarations":[{"constant":false,"id":17417,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17448,"src":"2164:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17416,"name":"address","nodeType":"ElementaryTypeName","src":"2164:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17420,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17418,"name":"getRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17402,"src":"2184:12:100","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":17419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2184:14:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2164:34:100"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":17421,"name":"isRecipientFeeDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17410,"src":"2213:25:100","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":17422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2213:27:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17446,"nodeType":"Block","src":"2393:70:100","statements":[{"expression":{"arguments":[{"id":17442,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17417,"src":"2430:9:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17443,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17412,"src":"2441:10:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17439,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2407:9:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":17441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7276,"src":"2407:22:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":17444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2407:45:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17445,"nodeType":"ExpressionStatement","src":"2407:45:100"}]},"id":17447,"nodeType":"IfStatement","src":"2209:254:100","trueBody":{"id":17438,"nodeType":"Block","src":"2242:145:100","statements":[{"expression":{"arguments":[{"id":17426,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17417,"src":"2278:9:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17427,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17412,"src":"2289:10:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17423,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2256:9:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":17425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"2256:21:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":17428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2256:44:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17429,"nodeType":"ExpressionStatement","src":"2256:44:100"},{"expression":{"arguments":[{"id":17434,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2354:9:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":17435,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17412,"src":"2365:10:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":17431,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17417,"src":"2330:9:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17430,"name":"IFeeDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":624,"src":"2314:15:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFeeDistributor_$624_$","typeString":"type(contract IFeeDistributor)"}},"id":17432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2314:26:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFeeDistributor_$624","typeString":"contract IFeeDistributor"}},"id":17433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"depositToken","nodeType":"MemberAccess","referencedDeclaration":568,"src":"2314:39:100","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$2447_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256) external"}},"id":17436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2314:62:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17437,"nodeType":"ExpressionStatement","src":"2314:62:100"}]}}]},"id":17449,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":17414,"nodeType":"OverrideSpecifier","overrides":[],"src":"2145:8:100"},"parameters":{"id":17413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17412,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":17449,"src":"2116:18:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17411,"name":"uint256","nodeType":"ElementaryTypeName","src":"2116:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2115:20:100"},"returnParameters":{"id":17415,"nodeType":"ParameterList","parameters":[],"src":"2154:0:100"},"scope":17450,"src":"2091:378:100","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":17451,"src":"986:1485:100"}],"src":"688:1784:100"},"id":100},"contracts/gauges/ethereum/SingleRecipientGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/ethereum/SingleRecipientGaugeFactory.sol","exportedSymbols":{"SingleRecipientGaugeFactory":[17527]},"id":17528,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17452,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:101"},{"id":17453,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:101"},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":17454,"nodeType":"ImportDirective","scope":17528,"sourceUnit":13897,"src":"747:33:101","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/ethereum/SingleRecipientGauge.sol","file":"./SingleRecipientGauge.sol","id":17455,"nodeType":"ImportDirective","scope":17528,"sourceUnit":17451,"src":"781:36:101","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17456,"name":"Version","nodeType":"UserDefinedTypeName","referencedDeclaration":3736,"src":"859:7:101","typeDescriptions":{"typeIdentifier":"t_contract$_Version_$3736","typeString":"contract Version"}},"id":17457,"nodeType":"InheritanceSpecifier","src":"859:7:101"},{"baseName":{"id":17458,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"868:16:101","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":17459,"nodeType":"InheritanceSpecifier","src":"868:16:101"}],"contractDependencies":[941,2340,3736,13896,17450],"contractKind":"contract","fullyImplemented":true,"id":17527,"linearizedBaseContracts":[17527,13896,941,3736,2340],"name":"SingleRecipientGaugeFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":17461,"mutability":"mutable","name":"_productVersion","nodeType":"VariableDeclaration","scope":17527,"src":"891:30:101","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":17460,"name":"string","nodeType":"ElementaryTypeName","src":"891:6:101","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":17486,"nodeType":"Block","src":"1145:49:101","statements":[{"expression":{"id":17484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17482,"name":"_productVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17461,"src":"1155:15:101","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17483,"name":"productVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17467,"src":"1173:14:101","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1155:32:101","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":17485,"nodeType":"ExpressionStatement","src":"1155:32:101"}]},"id":17487,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":17470,"name":"factoryVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17465,"src":"1069:14:101","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":17471,"modifierName":{"id":17469,"name":"Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"1061:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Version_$3736_$","typeString":"type(contract Version)"}},"nodeType":"ModifierInvocation","src":"1061:23:101"},{"arguments":[{"arguments":[{"arguments":[{"id":17477,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17463,"src":"1135:6:101","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}],"id":17476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1110:24:101","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$returns$_t_contract$_SingleRecipientGauge_$17450_$","typeString":"function (contract IMainnetBalancerMinter) returns (contract SingleRecipientGauge)"},"typeName":{"id":17475,"name":"SingleRecipientGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":17450,"src":"1114:20:101","typeDescriptions":{"typeIdentifier":"t_contract$_SingleRecipientGauge_$17450","typeString":"contract SingleRecipientGauge"}}},"id":17478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1110:32:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_SingleRecipientGauge_$17450","typeString":"contract SingleRecipientGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SingleRecipientGauge_$17450","typeString":"contract SingleRecipientGauge"}],"id":17474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1102:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17473,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:101","typeDescriptions":{}}},"id":17479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1102:41:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17480,"modifierName":{"id":17472,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1085:16:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"1085:59:101"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17463,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17487,"src":"949:29:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17462,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"949:22:101","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17465,"mutability":"mutable","name":"factoryVersion","nodeType":"VariableDeclaration","scope":17487,"src":"988:28:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17464,"name":"string","nodeType":"ElementaryTypeName","src":"988:6:101","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":17467,"mutability":"mutable","name":"productVersion","nodeType":"VariableDeclaration","scope":17487,"src":"1026:28:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17466,"name":"string","nodeType":"ElementaryTypeName","src":"1026:6:101","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"939:121:101"},"returnParameters":{"id":17481,"nodeType":"ParameterList","parameters":[],"src":"1145:0:101"},"scope":17527,"src":"928:266:101","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17494,"nodeType":"Block","src":"1265:39:101","statements":[{"expression":{"id":17492,"name":"_productVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17461,"src":"1282:15:101","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":17491,"id":17493,"nodeType":"Return","src":"1275:22:101"}]},"functionSelector":"18d6186f","id":17495,"implemented":true,"kind":"function","modifiers":[],"name":"getProductVersion","nodeType":"FunctionDefinition","parameters":{"id":17488,"nodeType":"ParameterList","parameters":[],"src":"1226:2:101"},"returnParameters":{"id":17491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17490,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17495,"src":"1250:13:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17489,"name":"string","nodeType":"ElementaryTypeName","src":"1250:6:101","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1249:15:101"},"scope":17527,"src":"1200:104:101","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":17525,"nodeType":"Block","src":"2083:246:101","statements":[{"assignments":[17508],"declarations":[{"constant":false,"id":17508,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":17525,"src":"2093:13:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17507,"name":"address","nodeType":"ElementaryTypeName","src":"2093:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17511,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17509,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"2109:7:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":17510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2109:9:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2093:25:101"},{"expression":{"arguments":[{"id":17516,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17498,"src":"2180:9:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17517,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17500,"src":"2203:17:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17518,"name":"feeDistributorRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17502,"src":"2234:23:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":17519,"name":"getProductVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17495,"src":"2271:17:101","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":17520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2271:19:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"arguments":[{"id":17513,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17508,"src":"2149:5:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17512,"name":"SingleRecipientGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17450,"src":"2128:20:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingleRecipientGauge_$17450_$","typeString":"type(contract SingleRecipientGauge)"}},"id":17514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2128:27:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_SingleRecipientGauge_$17450","typeString":"contract SingleRecipientGauge"}},"id":17515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":17393,"src":"2128:38:101","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,uint256,bool,string memory) external"}},"id":17521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2128:172:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17522,"nodeType":"ExpressionStatement","src":"2128:172:101"},{"expression":{"id":17523,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17508,"src":"2317:5:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17506,"id":17524,"nodeType":"Return","src":"2310:12:101"}]},"documentation":{"id":17496,"nodeType":"StructuredDocumentation","src":"1310:619:101","text":" @notice Deploys a new gauge which sends all of its BAL allowance to a single recipient.\n @dev Care must be taken to ensure that gauges deployed from this factory are\n suitable before they are added to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @param feeDistributorRecipient True if the recipient implements the IFeeDistributor interface and should receive\n tokens via the `depositToken` function.\n @return The address of the deployed gauge"},"functionSelector":"58e4e2d7","id":17526,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":17503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17498,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17526,"src":"1959:17:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17497,"name":"address","nodeType":"ElementaryTypeName","src":"1959:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17500,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17526,"src":"1986:25:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17499,"name":"uint256","nodeType":"ElementaryTypeName","src":"1986:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17502,"mutability":"mutable","name":"feeDistributorRecipient","nodeType":"VariableDeclaration","scope":17526,"src":"2021:28:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17501,"name":"bool","nodeType":"ElementaryTypeName","src":"2021:4:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1949:106:101"},"returnParameters":{"id":17506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17505,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17526,"src":"2074:7:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17504,"name":"address","nodeType":"ElementaryTypeName","src":"2074:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2073:9:101"},"scope":17527,"src":"1934:395:101","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17528,"src":"819:1512:101"}],"src":"688:1644:101"},"id":101},"contracts/gauges/gnosis/GnosisRootGauge.sol":{"ast":{"absolutePath":"contracts/gauges/gnosis/GnosisRootGauge.sol","exportedSymbols":{"GnosisRootGauge":[17620],"IGnosisBridge":[17540]},"id":17621,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17529,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:102"},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":17530,"nodeType":"ImportDirective","scope":17621,"sourceUnit":15197,"src":"713:31:102","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":17540,"linearizedBaseContracts":[17540],"name":"IGnosisBridge","nodeType":"ContractDefinition","nodes":[{"functionSelector":"ad58bdd1","id":17539,"implemented":false,"kind":"function","modifiers":[],"name":"relayTokens","nodeType":"FunctionDefinition","parameters":{"id":17537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17532,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":17539,"src":"806:12:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":17531,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"806:6:102","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17534,"mutability":"mutable","name":"_receiver","nodeType":"VariableDeclaration","scope":17539,"src":"828:17:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17533,"name":"address","nodeType":"ElementaryTypeName","src":"828:7:102","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17536,"mutability":"mutable","name":"_value","nodeType":"VariableDeclaration","scope":17539,"src":"855:14:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17535,"name":"uint256","nodeType":"ElementaryTypeName","src":"855:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"796:79:102"},"returnParameters":{"id":17538,"nodeType":"ParameterList","parameters":[],"src":"884:0:102"},"scope":17540,"src":"776:109:102","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17621,"src":"746:141:102"},{"abstract":false,"baseContracts":[{"baseName":{"id":17541,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"917:14:102","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":17542,"nodeType":"InheritanceSpecifier","src":"917:14:102"}],"contractDependencies":[928,1239,7187,15196],"contractKind":"contract","fullyImplemented":true,"id":17620,"linearizedBaseContracts":[17620,15196,7187,1239,928],"name":"GnosisRootGauge","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":17544,"mutability":"immutable","name":"_gnosisBridge","nodeType":"VariableDeclaration","scope":17620,"src":"938:45:102","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"},"typeName":{"id":17543,"name":"IGnosisBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":17540,"src":"938:13:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"visibility":"private"},{"constant":false,"id":17546,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":17620,"src":"1107:26:102","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17545,"name":"address","nodeType":"ElementaryTypeName","src":"1107:7:102","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":17560,"nodeType":"Block","src":"1234:45:102","statements":[{"expression":{"id":17558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17556,"name":"_gnosisBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17544,"src":"1244:13:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17557,"name":"gnosisBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17550,"src":"1260:12:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"src":"1244:28:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"id":17559,"nodeType":"ExpressionStatement","src":"1244:28:102"}]},"id":17561,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":17553,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17548,"src":"1226:6:102","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":17554,"modifierName":{"id":17552,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"1211:14:102","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"1211:22:102"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17548,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17561,"src":"1152:29:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17547,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1152:22:102","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17550,"mutability":"mutable","name":"gnosisBridge","nodeType":"VariableDeclaration","scope":17561,"src":"1183:26:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"},"typeName":{"id":17549,"name":"IGnosisBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":17540,"src":"1183:13:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"visibility":"internal"}],"src":"1151:59:102"},"returnParameters":{"id":17555,"nodeType":"ParameterList","parameters":[],"src":"1234:0:102"},"scope":17620,"src":"1140:139:102","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17576,"nodeType":"Block","src":"1360:152:102","statements":[{"expression":{"arguments":[{"id":17569,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17565,"src":"1454:17:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17568,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"1432:21:102","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":17570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1432:40:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17571,"nodeType":"ExpressionStatement","src":"1432:40:102"},{"expression":{"id":17574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17572,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17546,"src":"1483:10:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17573,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17563,"src":"1496:9:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1483:22:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17575,"nodeType":"ExpressionStatement","src":"1483:22:102"}]},"functionSelector":"cd6dc687","id":17577,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":17566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17563,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17577,"src":"1305:17:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17562,"name":"address","nodeType":"ElementaryTypeName","src":"1305:7:102","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17565,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17577,"src":"1324:25:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17564,"name":"uint256","nodeType":"ElementaryTypeName","src":"1324:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1304:46:102"},"returnParameters":{"id":17567,"nodeType":"ParameterList","parameters":[],"src":"1360:0:102"},"scope":17620,"src":"1285:227:102","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":17585,"nodeType":"Block","src":"1583:34:102","statements":[{"expression":{"id":17583,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17546,"src":"1600:10:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17582,"id":17584,"nodeType":"Return","src":"1593:17:102"}]},"functionSelector":"1b88094d","id":17586,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":17579,"nodeType":"OverrideSpecifier","overrides":[],"src":"1556:8:102"},"parameters":{"id":17578,"nodeType":"ParameterList","parameters":[],"src":"1539:2:102"},"returnParameters":{"id":17582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17581,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17586,"src":"1574:7:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17580,"name":"address","nodeType":"ElementaryTypeName","src":"1574:7:102","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1573:9:102"},"scope":17620,"src":"1518:99:102","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17593,"nodeType":"Block","src":"1688:37:102","statements":[{"expression":{"id":17591,"name":"_gnosisBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17544,"src":"1705:13:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"functionReturnParameters":17590,"id":17592,"nodeType":"Return","src":"1698:20:102"}]},"functionSelector":"ae35ebfb","id":17594,"implemented":true,"kind":"function","modifiers":[],"name":"getGnosisBridge","nodeType":"FunctionDefinition","parameters":{"id":17587,"nodeType":"ParameterList","parameters":[],"src":"1647:2:102"},"returnParameters":{"id":17590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17589,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17594,"src":"1673:13:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"},"typeName":{"id":17588,"name":"IGnosisBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":17540,"src":"1673:13:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"visibility":"internal"}],"src":"1672:15:102"},"scope":17620,"src":"1623:102:102","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[15040],"body":{"id":17618,"nodeType":"Block","src":"1794:207:102","statements":[{"expression":{"arguments":[{"arguments":[{"id":17605,"name":"_gnosisBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17544,"src":"1830:13:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}],"id":17604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1822:7:102","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17603,"name":"address","nodeType":"ElementaryTypeName","src":"1822:7:102","typeDescriptions":{}}},"id":17606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1822:22:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17607,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17596,"src":"1846:10:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17600,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"1804:9:102","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":17602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2416,"src":"1804:17:102","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":17608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1804:53:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17609,"nodeType":"ExpressionStatement","src":"1804:53:102"},{"expression":{"arguments":[{"id":17613,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"1960:9:102","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":17614,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17546,"src":"1971:10:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17615,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17596,"src":"1983:10:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17610,"name":"_gnosisBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17544,"src":"1934:13:102","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"id":17612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"relayTokens","nodeType":"MemberAccess","referencedDeclaration":17539,"src":"1934:25:102","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":17616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1934:60:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17617,"nodeType":"ExpressionStatement","src":"1934:60:102"}]},"id":17619,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":17598,"nodeType":"OverrideSpecifier","overrides":[],"src":"1785:8:102"},"parameters":{"id":17597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17596,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":17619,"src":"1756:18:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17595,"name":"uint256","nodeType":"ElementaryTypeName","src":"1756:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1755:20:102"},"returnParameters":{"id":17599,"nodeType":"ParameterList","parameters":[],"src":"1794:0:102"},"scope":17620,"src":"1731:270:102","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":17621,"src":"889:1114:102"}],"src":"688:1316:102"},"id":102},"contracts/gauges/gnosis/GnosisRootGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/gnosis/GnosisRootGaugeFactory.sol","exportedSymbols":{"GnosisRootGaugeFactory":[17671]},"id":17672,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17622,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:103"},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":17623,"nodeType":"ImportDirective","scope":17672,"sourceUnit":13897,"src":"713:33:103","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/gnosis/GnosisRootGauge.sol","file":"./GnosisRootGauge.sol","id":17624,"nodeType":"ImportDirective","scope":17672,"sourceUnit":17621,"src":"747:31:103","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17625,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"815:16:103","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":17626,"nodeType":"InheritanceSpecifier","src":"815:16:103"}],"contractDependencies":[941,13896,17620],"contractKind":"contract","fullyImplemented":true,"id":17671,"linearizedBaseContracts":[17671,13896,941],"name":"GnosisRootGaugeFactory","nodeType":"ContractDefinition","nodes":[{"body":{"id":17643,"nodeType":"Block","src":"990:64:103","statements":[]},"id":17644,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"id":17637,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17628,"src":"962:6:103","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":17638,"name":"gnosisBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17630,"src":"970:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}],"id":17636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"942:19:103","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$_t_contract$_IGnosisBridge_$17540_$returns$_t_contract$_GnosisRootGauge_$17620_$","typeString":"function (contract IMainnetBalancerMinter,contract IGnosisBridge) returns (contract GnosisRootGauge)"},"typeName":{"id":17635,"name":"GnosisRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":17620,"src":"946:15:103","typeDescriptions":{"typeIdentifier":"t_contract$_GnosisRootGauge_$17620","typeString":"contract GnosisRootGauge"}}},"id":17639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"942:41:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_GnosisRootGauge_$17620","typeString":"contract GnosisRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GnosisRootGauge_$17620","typeString":"contract GnosisRootGauge"}],"id":17634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"934:7:103","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17633,"name":"address","nodeType":"ElementaryTypeName","src":"934:7:103","typeDescriptions":{}}},"id":17640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"934:50:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17641,"modifierName":{"id":17632,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"917:16:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"917:68:103"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17628,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17644,"src":"850:29:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17627,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"850:22:103","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17630,"mutability":"mutable","name":"gnosisBridge","nodeType":"VariableDeclaration","scope":17644,"src":"881:26:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"},"typeName":{"id":17629,"name":"IGnosisBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":17540,"src":"881:13:103","typeDescriptions":{"typeIdentifier":"t_contract$_IGnosisBridge_$17540","typeString":"contract IGnosisBridge"}},"visibility":"internal"}],"src":"849:59:103"},"returnParameters":{"id":17642,"nodeType":"ParameterList","parameters":[],"src":"990:0:103"},"scope":17671,"src":"838:216:103","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17669,"nodeType":"Block","src":"1652:137:103","statements":[{"assignments":[17655],"declarations":[{"constant":false,"id":17655,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":17669,"src":"1662:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17654,"name":"address","nodeType":"ElementaryTypeName","src":"1662:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17658,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17656,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"1678:7:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":17657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1678:9:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1662:25:103"},{"expression":{"arguments":[{"id":17663,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17647,"src":"1731:9:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17664,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17649,"src":"1742:17:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":17660,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17655,"src":"1713:5:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17659,"name":"GnosisRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17620,"src":"1697:15:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_GnosisRootGauge_$17620_$","typeString":"type(contract GnosisRootGauge)"}},"id":17661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1697:22:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_GnosisRootGauge_$17620","typeString":"contract GnosisRootGauge"}},"id":17662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":17577,"src":"1697:33:103","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":17665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1697:63:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17666,"nodeType":"ExpressionStatement","src":"1697:63:103"},{"expression":{"id":17667,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17655,"src":"1777:5:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17653,"id":17668,"nodeType":"Return","src":"1770:12:103"}]},"documentation":{"id":17645,"nodeType":"StructuredDocumentation","src":"1060:498:103","text":" @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Gnosis.\n @dev Care must be taken to ensure that gauges deployed from this factory are suitable before they are\n added to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge (18-decimal FP value from 0 to 1)\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":17670,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":17650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17647,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17670,"src":"1579:17:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17646,"name":"address","nodeType":"ElementaryTypeName","src":"1579:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17649,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17670,"src":"1598:25:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17648,"name":"uint256","nodeType":"ElementaryTypeName","src":"1598:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1578:46:103"},"returnParameters":{"id":17653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17652,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17670,"src":"1643:7:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17651,"name":"address","nodeType":"ElementaryTypeName","src":"1643:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1642:9:103"},"scope":17671,"src":"1563:226:103","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17672,"src":"780:1011:103"}],"src":"688:1104:103"},"id":103},"contracts/gauges/optimistic/OptimisticRootGauge.sol":{"ast":{"absolutePath":"contracts/gauges/optimistic/OptimisticRootGauge.sol","exportedSymbols":{"OptimisticRootGauge":[17801]},"id":17802,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17673,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:104"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol","id":17674,"nodeType":"ImportDirective","scope":17802,"sourceUnit":1088,"src":"713:95:104","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol","id":17675,"nodeType":"ImportDirective","scope":17802,"sourceUnit":841,"src":"809:87:104","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":17676,"nodeType":"ImportDirective","scope":17802,"sourceUnit":7342,"src":"898:79:104","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":17677,"nodeType":"ImportDirective","scope":17802,"sourceUnit":15197,"src":"979:31:104","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17678,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"1044:14:104","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":17679,"nodeType":"InheritanceSpecifier","src":"1044:14:104"}],"contractDependencies":[928,1239,7187,15196],"contractKind":"contract","fullyImplemented":true,"id":17801,"linearizedBaseContracts":[17801,15196,7187,1239,928],"name":"OptimisticRootGauge","nodeType":"ContractDefinition","nodes":[{"id":17682,"libraryName":{"id":17680,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"1071:9:104","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1065:27:104","typeName":{"id":17681,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1085:6:104","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":false,"functionSelector":"8759e6d1","id":17684,"mutability":"mutable","name":"NETWORK","nodeType":"VariableDeclaration","scope":17801,"src":"1150:21:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":17683,"name":"string","nodeType":"ElementaryTypeName","src":"1150:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"constant":false,"id":17686,"mutability":"immutable","name":"_optimismL1StandardBridge","nodeType":"VariableDeclaration","scope":17801,"src":"1178:61:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17685,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"1178:17:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"private"},{"constant":false,"id":17688,"mutability":"immutable","name":"_optimismBal","nodeType":"VariableDeclaration","scope":17801,"src":"1245:38:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17687,"name":"address","nodeType":"ElementaryTypeName","src":"1245:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":17690,"mutability":"immutable","name":"_factory","nodeType":"VariableDeclaration","scope":17801,"src":"1289:52:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismGasLimitProvider_$1087","typeString":"contract IOptimismGasLimitProvider"},"typeName":{"id":17689,"name":"IOptimismGasLimitProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":1087,"src":"1289:25:104","typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismGasLimitProvider_$1087","typeString":"contract IOptimismGasLimitProvider"}},"visibility":"private"},{"constant":false,"id":17692,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":17801,"src":"1451:26:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17691,"name":"address","nodeType":"ElementaryTypeName","src":"1451:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":17719,"nodeType":"Block","src":"1645:163:104","statements":[{"expression":{"id":17706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17704,"name":"_optimismL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17686,"src":"1655:25:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17705,"name":"optimismL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17696,"src":"1683:24:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"src":"1655:52:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"id":17707,"nodeType":"ExpressionStatement","src":"1655:52:104"},{"expression":{"id":17710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17708,"name":"_optimismBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17688,"src":"1717:12:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17709,"name":"optimismBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17698,"src":"1732:11:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1717:26:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17711,"nodeType":"ExpressionStatement","src":"1717:26:104"},{"expression":{"id":17717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17712,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17690,"src":"1753:8:104","typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismGasLimitProvider_$1087","typeString":"contract IOptimismGasLimitProvider"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":17714,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1790:3:104","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1790:10:104","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":17713,"name":"IOptimismGasLimitProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1087,"src":"1764:25:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOptimismGasLimitProvider_$1087_$","typeString":"type(contract IOptimismGasLimitProvider)"}},"id":17716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1764:37:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismGasLimitProvider_$1087","typeString":"contract IOptimismGasLimitProvider"}},"src":"1753:48:104","typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismGasLimitProvider_$1087","typeString":"contract IOptimismGasLimitProvider"}},"id":17718,"nodeType":"ExpressionStatement","src":"1753:48:104"}]},"id":17720,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":17701,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17694,"src":"1637:6:104","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":17702,"modifierName":{"id":17700,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"1622:14:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"1622:22:104"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17694,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17720,"src":"1505:29:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17693,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1505:22:104","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17696,"mutability":"mutable","name":"optimismL1StandardBridge","nodeType":"VariableDeclaration","scope":17720,"src":"1544:42:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17695,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"1544:17:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"internal"},{"constant":false,"id":17698,"mutability":"mutable","name":"optimismBal","nodeType":"VariableDeclaration","scope":17720,"src":"1596:19:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17697,"name":"address","nodeType":"ElementaryTypeName","src":"1596:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1495:126:104"},"returnParameters":{"id":17703,"nodeType":"ParameterList","parameters":[],"src":"1645:0:104"},"scope":17801,"src":"1484:324:104","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17741,"nodeType":"Block","src":"1948:185:104","statements":[{"expression":{"arguments":[{"id":17730,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17724,"src":"2042:17:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17729,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"2020:21:104","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":17731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2020:40:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17732,"nodeType":"ExpressionStatement","src":"2020:40:104"},{"expression":{"id":17735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17733,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17692,"src":"2071:10:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17734,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17722,"src":"2084:9:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2071:22:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17736,"nodeType":"ExpressionStatement","src":"2071:22:104"},{"expression":{"id":17739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17737,"name":"NETWORK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17684,"src":"2103:7:104","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17738,"name":"targetNetwork","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17726,"src":"2113:13:104","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2103:23:104","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":17740,"nodeType":"ExpressionStatement","src":"2103:23:104"}]},"functionSelector":"81d60956","id":17742,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":17727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17722,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17742,"src":"1843:17:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17721,"name":"address","nodeType":"ElementaryTypeName","src":"1843:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17724,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17742,"src":"1870:25:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17723,"name":"uint256","nodeType":"ElementaryTypeName","src":"1870:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17726,"mutability":"mutable","name":"targetNetwork","nodeType":"VariableDeclaration","scope":17742,"src":"1905:27:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17725,"name":"string","nodeType":"ElementaryTypeName","src":"1905:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1833:105:104"},"returnParameters":{"id":17728,"nodeType":"ParameterList","parameters":[],"src":"1948:0:104"},"scope":17801,"src":"1814:319:104","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":17750,"nodeType":"Block","src":"2204:34:104","statements":[{"expression":{"id":17748,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17692,"src":"2221:10:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17747,"id":17749,"nodeType":"Return","src":"2214:17:104"}]},"functionSelector":"1b88094d","id":17751,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":17744,"nodeType":"OverrideSpecifier","overrides":[],"src":"2177:8:104"},"parameters":{"id":17743,"nodeType":"ParameterList","parameters":[],"src":"2160:2:104"},"returnParameters":{"id":17747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17746,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17751,"src":"2195:7:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17745,"name":"address","nodeType":"ElementaryTypeName","src":"2195:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2194:9:104"},"scope":17801,"src":"2139:99:104","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17758,"nodeType":"Block","src":"2315:49:104","statements":[{"expression":{"id":17756,"name":"_optimismL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17686,"src":"2332:25:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"functionReturnParameters":17755,"id":17757,"nodeType":"Return","src":"2325:32:104"}]},"functionSelector":"2d8411af","id":17759,"implemented":true,"kind":"function","modifiers":[],"name":"getOptimismBridge","nodeType":"FunctionDefinition","parameters":{"id":17752,"nodeType":"ParameterList","parameters":[],"src":"2270:2:104"},"returnParameters":{"id":17755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17754,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17759,"src":"2296:17:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17753,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"2296:17:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"internal"}],"src":"2295:19:104"},"scope":17801,"src":"2244:120:104","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17766,"nodeType":"Block","src":"2428:36:104","statements":[{"expression":{"id":17764,"name":"_optimismBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17688,"src":"2445:12:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17763,"id":17765,"nodeType":"Return","src":"2438:19:104"}]},"functionSelector":"60b630c4","id":17767,"implemented":true,"kind":"function","modifiers":[],"name":"getOptimismBal","nodeType":"FunctionDefinition","parameters":{"id":17760,"nodeType":"ParameterList","parameters":[],"src":"2393:2:104"},"returnParameters":{"id":17763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17762,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17767,"src":"2419:7:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17761,"name":"address","nodeType":"ElementaryTypeName","src":"2419:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2418:9:104"},"scope":17801,"src":"2370:94:104","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[15040],"body":{"id":17799,"nodeType":"Block","src":"2533:387:104","statements":[{"expression":{"arguments":[{"arguments":[{"id":17778,"name":"_optimismL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17686,"src":"2573:25:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}],"id":17777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2565:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17776,"name":"address","nodeType":"ElementaryTypeName","src":"2565:7:104","typeDescriptions":{}}},"id":17779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2565:34:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17780,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17769,"src":"2601:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17773,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2543:9:104","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":17775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"2543:21:104","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":17781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2543:69:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17782,"nodeType":"ExpressionStatement","src":"2543:69:104"},{"expression":{"arguments":[{"arguments":[{"id":17788,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2757:9:104","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":17787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2749:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17786,"name":"address","nodeType":"ElementaryTypeName","src":"2749:7:104","typeDescriptions":{}}},"id":17789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2749:18:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17790,"name":"_optimismBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17688,"src":"2781:12:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17791,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17692,"src":"2807:10:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17792,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17769,"src":"2831:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17793,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17690,"src":"2855:8:104","typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismGasLimitProvider_$1087","typeString":"contract IOptimismGasLimitProvider"}},"id":17794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getOptimismGasLimit","nodeType":"MemberAccess","referencedDeclaration":1081,"src":"2855:28:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint32_$","typeString":"function () view external returns (uint32)"}},"id":17795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2855:30:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"3078","id":17796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2899:4:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":17783,"name":"_optimismL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17686,"src":"2695:25:104","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"id":17785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"depositERC20To","nodeType":"MemberAccess","referencedDeclaration":839,"src":"2695:40:104","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint32,bytes memory) external"}},"id":17797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2695:218:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17798,"nodeType":"ExpressionStatement","src":"2695:218:104"}]},"id":17800,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":17771,"nodeType":"OverrideSpecifier","overrides":[],"src":"2524:8:104"},"parameters":{"id":17770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17769,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":17800,"src":"2495:18:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17768,"name":"uint256","nodeType":"ElementaryTypeName","src":"2495:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2494:20:104"},"returnParameters":{"id":17772,"nodeType":"ParameterList","parameters":[],"src":"2533:0:104"},"scope":17801,"src":"2470:450:104","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":17802,"src":"1012:1910:104"}],"src":"688:2235:104"},"id":104},"contracts/gauges/optimistic/OptimisticRootGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/optimistic/OptimisticRootGaugeFactory.sol","exportedSymbols":{"OptimisticRootGaugeFactory":[17915]},"id":17916,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17803,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:105"},{"id":17804,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:105"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":17805,"nodeType":"ImportDirective","scope":17916,"sourceUnit":3698,"src":"747:88:105","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":17806,"nodeType":"ImportDirective","scope":17916,"sourceUnit":13897,"src":"837:33:105","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/optimistic/OptimisticRootGauge.sol","file":"./OptimisticRootGauge.sol","id":17807,"nodeType":"ImportDirective","scope":17916,"sourceUnit":17802,"src":"871:35:105","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17808,"name":"IOptimismGasLimitProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":1087,"src":"947:25:105","typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismGasLimitProvider_$1087","typeString":"contract IOptimismGasLimitProvider"}},"id":17809,"nodeType":"InheritanceSpecifier","src":"947:25:105"},{"baseName":{"id":17810,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"974:16:105","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":17811,"nodeType":"InheritanceSpecifier","src":"974:16:105"},{"baseName":{"id":17812,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3697,"src":"992:23:105","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$3697","typeString":"contract SingletonAuthentication"}},"id":17813,"nodeType":"InheritanceSpecifier","src":"992:23:105"}],"contractDependencies":[941,1087,2259,3128,3697,13896,17801],"contractKind":"contract","fullyImplemented":true,"id":17915,"linearizedBaseContracts":[17915,3697,3128,2259,13896,941,1087],"name":"OptimisticRootGaugeFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"8759e6d1","id":17815,"mutability":"mutable","name":"NETWORK","nodeType":"VariableDeclaration","scope":17915,"src":"1074:21:105","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":17814,"name":"string","nodeType":"ElementaryTypeName","src":"1074:6:105","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"constant":false,"id":17817,"mutability":"mutable","name":"_gasLimit","nodeType":"VariableDeclaration","scope":17915,"src":"1102:24:105","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17816,"name":"uint32","nodeType":"ElementaryTypeName","src":"1102:6:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"private"},{"anonymous":false,"id":17821,"name":"OptimismGasLimitModified","nodeType":"EventDefinition","parameters":{"id":17820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17819,"indexed":false,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":17821,"src":"1164:16:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17818,"name":"uint256","nodeType":"ElementaryTypeName","src":"1164:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1163:18:105"},"src":"1133:49:105"},{"body":{"id":17858,"nodeType":"Block","src":"1559:70:105","statements":[{"expression":{"id":17852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17850,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17817,"src":"1569:9:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17851,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17831,"src":"1581:8:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1569:20:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":17853,"nodeType":"ExpressionStatement","src":"1569:20:105"},{"expression":{"id":17856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17854,"name":"NETWORK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17815,"src":"1599:7:105","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17855,"name":"targetNetwork","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17833,"src":"1609:13:105","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1599:23:105","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":17857,"nodeType":"ExpressionStatement","src":"1599:23:105"}]},"id":17859,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"id":17840,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17825,"src":"1467:6:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":17841,"name":"optimismL1StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17827,"src":"1475:24:105","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},{"id":17842,"name":"optimismBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17829,"src":"1501:11:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},{"typeIdentifier":"t_address","typeString":"address"}],"id":17839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1443:23:105","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$_t_contract$_IL1StandardBridge_$840_$_t_address_$returns$_t_contract$_OptimisticRootGauge_$17801_$","typeString":"function (contract IMainnetBalancerMinter,contract IL1StandardBridge,address) returns (contract OptimisticRootGauge)"},"typeName":{"id":17838,"name":"OptimisticRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":17801,"src":"1447:19:105","typeDescriptions":{"typeIdentifier":"t_contract$_OptimisticRootGauge_$17801","typeString":"contract OptimisticRootGauge"}}},"id":17843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1443:70:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimisticRootGauge_$17801","typeString":"contract OptimisticRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OptimisticRootGauge_$17801","typeString":"contract OptimisticRootGauge"}],"id":17837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1435:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17836,"name":"address","nodeType":"ElementaryTypeName","src":"1435:7:105","typeDescriptions":{}}},"id":17844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1435:79:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17845,"modifierName":{"id":17835,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1418:16:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"1418:97:105"},{"arguments":[{"id":17847,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17823,"src":"1548:5:105","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}}],"id":17848,"modifierName":{"id":17846,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"1524:23:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$3697_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1524:30:105"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17823,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":17859,"src":"1209:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":17822,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1209:6:105","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":17825,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17859,"src":"1231:29:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17824,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1231:22:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17827,"mutability":"mutable","name":"optimismL1StandardBridge","nodeType":"VariableDeclaration","scope":17859,"src":"1270:42:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":17826,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"1270:17:105","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"internal"},{"constant":false,"id":17829,"mutability":"mutable","name":"optimismBal","nodeType":"VariableDeclaration","scope":17859,"src":"1322:19:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17828,"name":"address","nodeType":"ElementaryTypeName","src":"1322:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17831,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":17859,"src":"1351:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17830,"name":"uint32","nodeType":"ElementaryTypeName","src":"1351:6:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":17833,"mutability":"mutable","name":"targetNetwork","nodeType":"VariableDeclaration","scope":17859,"src":"1376:27:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17832,"name":"string","nodeType":"ElementaryTypeName","src":"1376:6:105","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1199:210:105"},"returnParameters":{"id":17849,"nodeType":"ParameterList","parameters":[],"src":"1559:0:105"},"scope":17915,"src":"1188:441:105","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1081],"body":{"id":17868,"nodeType":"Block","src":"1809:33:105","statements":[{"expression":{"id":17866,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17817,"src":"1826:9:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":17865,"id":17867,"nodeType":"Return","src":"1819:16:105"}]},"documentation":{"id":17860,"nodeType":"StructuredDocumentation","src":"1635:98:105","text":" @notice Returns the gas limit for the Optimism side of the bridging transaction"},"functionSelector":"a0566e72","id":17869,"implemented":true,"kind":"function","modifiers":[],"name":"getOptimismGasLimit","nodeType":"FunctionDefinition","overrides":{"id":17862,"nodeType":"OverrideSpecifier","overrides":[],"src":"1783:8:105"},"parameters":{"id":17861,"nodeType":"ParameterList","parameters":[],"src":"1766:2:105"},"returnParameters":{"id":17865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17864,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17869,"src":"1801:6:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17863,"name":"uint32","nodeType":"ElementaryTypeName","src":"1801:6:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1800:8:105"},"scope":17915,"src":"1738:104:105","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17895,"nodeType":"Block","src":"2408:150:105","statements":[{"assignments":[17880],"declarations":[{"constant":false,"id":17880,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":17895,"src":"2418:13:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17879,"name":"address","nodeType":"ElementaryTypeName","src":"2418:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17883,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17881,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"2434:7:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":17882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2434:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2418:25:105"},{"expression":{"arguments":[{"id":17888,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17872,"src":"2491:9:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17889,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17874,"src":"2502:17:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17890,"name":"NETWORK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17815,"src":"2521:7:105","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"arguments":[{"id":17885,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17880,"src":"2473:5:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17884,"name":"OptimisticRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17801,"src":"2453:19:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OptimisticRootGauge_$17801_$","typeString":"type(contract OptimisticRootGauge)"}},"id":17886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2453:26:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimisticRootGauge_$17801","typeString":"contract OptimisticRootGauge"}},"id":17887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":17742,"src":"2453:37:105","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,uint256,string memory) external"}},"id":17891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2453:76:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17892,"nodeType":"ExpressionStatement","src":"2453:76:105"},{"expression":{"id":17893,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17880,"src":"2546:5:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17878,"id":17894,"nodeType":"Return","src":"2539:12:105"}]},"documentation":{"id":17870,"nodeType":"StructuredDocumentation","src":"1848:466:105","text":" @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Optimism.\n @dev Care must be taken to ensure that gauges deployed from this factory are\n suitable before they are added to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":17896,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":17875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17872,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17896,"src":"2335:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17871,"name":"address","nodeType":"ElementaryTypeName","src":"2335:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17874,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17896,"src":"2354:25:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17873,"name":"uint256","nodeType":"ElementaryTypeName","src":"2354:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2334:46:105"},"returnParameters":{"id":17878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17877,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17896,"src":"2399:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17876,"name":"address","nodeType":"ElementaryTypeName","src":"2399:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2398:9:105"},"scope":17915,"src":"2319:239:105","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1086],"body":{"id":17913,"nodeType":"Block","src":"2740:86:105","statements":[{"expression":{"id":17907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17905,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17817,"src":"2750:9:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17906,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17899,"src":"2762:8:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2750:20:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":17908,"nodeType":"ExpressionStatement","src":"2750:20:105"},{"eventCall":{"arguments":[{"id":17910,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17899,"src":"2810:8:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":17909,"name":"OptimismGasLimitModified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17821,"src":"2785:24:105","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":17911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2785:34:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17912,"nodeType":"EmitStatement","src":"2780:39:105"}]},"documentation":{"id":17897,"nodeType":"StructuredDocumentation","src":"2564:94:105","text":" @notice Set the gas limit for the Optimism side of the bridging transaction"},"functionSelector":"bf5fa772","id":17914,"implemented":true,"kind":"function","modifiers":[{"id":17903,"modifierName":{"id":17902,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"2727:12:105","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2727:12:105"}],"name":"setOptimismGasLimit","nodeType":"FunctionDefinition","overrides":{"id":17901,"nodeType":"OverrideSpecifier","overrides":[],"src":"2718:8:105"},"parameters":{"id":17900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17899,"mutability":"mutable","name":"gasLimit","nodeType":"VariableDeclaration","scope":17914,"src":"2692:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17898,"name":"uint32","nodeType":"ElementaryTypeName","src":"2692:6:105","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2691:17:105"},"returnParameters":{"id":17904,"nodeType":"ParameterList","parameters":[],"src":"2740:0:105"},"scope":17915,"src":"2663:163:105","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17916,"src":"908:1920:105"}],"src":"688:2141:105"},"id":105},"contracts/gauges/polygon/PolygonRootGauge.sol":{"ast":{"absolutePath":"contracts/gauges/polygon/PolygonRootGauge.sol","exportedSymbols":{"IPolygonRootChainManager":[17929],"PolygonRootGauge":[18028]},"id":18029,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17917,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:106"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":17918,"nodeType":"ImportDirective","scope":18029,"sourceUnit":7342,"src":"713:79:106","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":17919,"nodeType":"ImportDirective","scope":18029,"sourceUnit":15197,"src":"794:31:106","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":17929,"linearizedBaseContracts":[17929],"name":"IPolygonRootChainManager","nodeType":"ContractDefinition","nodes":[{"functionSelector":"e3dec8fb","id":17928,"implemented":false,"kind":"function","modifiers":[],"name":"depositFor","nodeType":"FunctionDefinition","parameters":{"id":17926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17921,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":17928,"src":"897:12:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17920,"name":"address","nodeType":"ElementaryTypeName","src":"897:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17923,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":17928,"src":"919:12:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":17922,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"919:6:106","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17925,"mutability":"mutable","name":"depositData","nodeType":"VariableDeclaration","scope":17928,"src":"941:26:106","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":17924,"name":"bytes","nodeType":"ElementaryTypeName","src":"941:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"887:86:106"},"returnParameters":{"id":17927,"nodeType":"ParameterList","parameters":[],"src":"982:0:106"},"scope":17929,"src":"868:115:106","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18029,"src":"827:158:106"},{"abstract":false,"baseContracts":[{"baseName":{"id":17930,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"1016:14:106","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":17931,"nodeType":"InheritanceSpecifier","src":"1016:14:106"}],"contractDependencies":[928,1239,7187,15196],"contractKind":"contract","fullyImplemented":true,"id":18028,"linearizedBaseContracts":[18028,15196,7187,1239,928],"name":"PolygonRootGauge","nodeType":"ContractDefinition","nodes":[{"id":17934,"libraryName":{"id":17932,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"1043:9:106","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1037:27:106","typeName":{"id":17933,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1057:6:106","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":false,"id":17936,"mutability":"immutable","name":"_polygonRootChainManager","nodeType":"VariableDeclaration","scope":18028,"src":"1070:67:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"},"typeName":{"id":17935,"name":"IPolygonRootChainManager","nodeType":"UserDefinedTypeName","referencedDeclaration":17929,"src":"1070:24:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"visibility":"private"},{"constant":false,"id":17938,"mutability":"immutable","name":"_polygonERC20Predicate","nodeType":"VariableDeclaration","scope":18028,"src":"1143:48:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17937,"name":"address","nodeType":"ElementaryTypeName","src":"1143:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":17940,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":18028,"src":"1301:26:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17939,"name":"address","nodeType":"ElementaryTypeName","src":"1301:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":17960,"nodeType":"Block","src":"1511:123:106","statements":[{"expression":{"id":17954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17952,"name":"_polygonRootChainManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17936,"src":"1521:24:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17953,"name":"polygonRootChainManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17944,"src":"1548:23:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"src":"1521:50:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"id":17955,"nodeType":"ExpressionStatement","src":"1521:50:106"},{"expression":{"id":17958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17956,"name":"_polygonERC20Predicate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17938,"src":"1581:22:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17957,"name":"polygonERC20Predicate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17946,"src":"1606:21:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1581:46:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17959,"nodeType":"ExpressionStatement","src":"1581:46:106"}]},"id":17961,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":17949,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17942,"src":"1503:6:106","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":17950,"modifierName":{"id":17948,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"1488:14:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"1488:22:106"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17942,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":17961,"src":"1355:29:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":17941,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1355:22:106","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":17944,"mutability":"mutable","name":"polygonRootChainManager","nodeType":"VariableDeclaration","scope":17961,"src":"1394:48:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"},"typeName":{"id":17943,"name":"IPolygonRootChainManager","nodeType":"UserDefinedTypeName","referencedDeclaration":17929,"src":"1394:24:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"visibility":"internal"},{"constant":false,"id":17946,"mutability":"mutable","name":"polygonERC20Predicate","nodeType":"VariableDeclaration","scope":17961,"src":"1452:29:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17945,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1345:142:106"},"returnParameters":{"id":17951,"nodeType":"ParameterList","parameters":[],"src":"1511:0:106"},"scope":18028,"src":"1334:300:106","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17976,"nodeType":"Block","src":"1715:152:106","statements":[{"expression":{"arguments":[{"id":17969,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17965,"src":"1809:17:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17968,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"1787:21:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":17970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1787:40:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17971,"nodeType":"ExpressionStatement","src":"1787:40:106"},{"expression":{"id":17974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17972,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17940,"src":"1838:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17973,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17963,"src":"1851:9:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1838:22:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17975,"nodeType":"ExpressionStatement","src":"1838:22:106"}]},"functionSelector":"cd6dc687","id":17977,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":17966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17963,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17977,"src":"1660:17:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17962,"name":"address","nodeType":"ElementaryTypeName","src":"1660:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17965,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":17977,"src":"1679:25:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17964,"name":"uint256","nodeType":"ElementaryTypeName","src":"1679:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1659:46:106"},"returnParameters":{"id":17967,"nodeType":"ParameterList","parameters":[],"src":"1715:0:106"},"scope":18028,"src":"1640:227:106","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":17985,"nodeType":"Block","src":"1938:34:106","statements":[{"expression":{"id":17983,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17940,"src":"1955:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17982,"id":17984,"nodeType":"Return","src":"1948:17:106"}]},"functionSelector":"1b88094d","id":17986,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":17979,"nodeType":"OverrideSpecifier","overrides":[],"src":"1911:8:106"},"parameters":{"id":17978,"nodeType":"ParameterList","parameters":[],"src":"1894:2:106"},"returnParameters":{"id":17982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17981,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17986,"src":"1929:7:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17980,"name":"address","nodeType":"ElementaryTypeName","src":"1929:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1928:9:106"},"scope":18028,"src":"1873:99:106","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17993,"nodeType":"Block","src":"2055:48:106","statements":[{"expression":{"id":17991,"name":"_polygonRootChainManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17936,"src":"2072:24:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"functionReturnParameters":17990,"id":17992,"nodeType":"Return","src":"2065:31:106"}]},"functionSelector":"fe022cc9","id":17994,"implemented":true,"kind":"function","modifiers":[],"name":"getPolygonBridge","nodeType":"FunctionDefinition","parameters":{"id":17987,"nodeType":"ParameterList","parameters":[],"src":"2003:2:106"},"returnParameters":{"id":17990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17989,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17994,"src":"2029:24:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"},"typeName":{"id":17988,"name":"IPolygonRootChainManager","nodeType":"UserDefinedTypeName","referencedDeclaration":17929,"src":"2029:24:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"visibility":"internal"}],"src":"2028:26:106"},"scope":18028,"src":"1978:125:106","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18001,"nodeType":"Block","src":"2177:46:106","statements":[{"expression":{"id":17999,"name":"_polygonERC20Predicate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17938,"src":"2194:22:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17998,"id":18000,"nodeType":"Return","src":"2187:29:106"}]},"functionSelector":"fe33859e","id":18002,"implemented":true,"kind":"function","modifiers":[],"name":"getPolygonERC20Predicate","nodeType":"FunctionDefinition","parameters":{"id":17995,"nodeType":"ParameterList","parameters":[],"src":"2142:2:106"},"returnParameters":{"id":17998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17997,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18002,"src":"2168:7:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17996,"name":"address","nodeType":"ElementaryTypeName","src":"2168:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2167:9:106"},"scope":18028,"src":"2109:114:106","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[15040],"body":{"id":18026,"nodeType":"Block","src":"2292:322:106","statements":[{"expression":{"arguments":[{"id":18011,"name":"_polygonERC20Predicate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17938,"src":"2408:22:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18012,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18004,"src":"2432:10:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18008,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2386:9:106","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":18010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"2386:21:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":18013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2386:57:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18014,"nodeType":"ExpressionStatement","src":"2386:57:106"},{"expression":{"arguments":[{"id":18018,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17940,"src":"2561:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18019,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2573:9:106","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"arguments":[{"id":18022,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18004,"src":"2595:10:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18020,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2584:3:106","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":18021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2584:10:106","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":18023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2584:22:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":18015,"name":"_polygonRootChainManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17936,"src":"2525:24:106","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"id":18017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"depositFor","nodeType":"MemberAccess","referencedDeclaration":17928,"src":"2525:35:106","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_contract$_IERC20_$2447_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,contract IERC20,bytes memory) external"}},"id":18024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2525:82:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18025,"nodeType":"ExpressionStatement","src":"2525:82:106"}]},"id":18027,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":18006,"nodeType":"OverrideSpecifier","overrides":[],"src":"2283:8:106"},"parameters":{"id":18005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18004,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":18027,"src":"2254:18:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18003,"name":"uint256","nodeType":"ElementaryTypeName","src":"2254:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2253:20:106"},"returnParameters":{"id":18007,"nodeType":"ParameterList","parameters":[],"src":"2292:0:106"},"scope":18028,"src":"2229:385:106","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":18029,"src":"987:1629:106"}],"src":"688:1929:106"},"id":106},"contracts/gauges/polygon/PolygonRootGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/polygon/PolygonRootGaugeFactory.sol","exportedSymbols":{"PolygonRootGaugeFactory":[18083]},"id":18084,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18030,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:107"},{"id":18031,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:107"},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":18032,"nodeType":"ImportDirective","scope":18084,"sourceUnit":13897,"src":"747:33:107","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/polygon/PolygonRootGauge.sol","file":"./PolygonRootGauge.sol","id":18033,"nodeType":"ImportDirective","scope":18084,"sourceUnit":18029,"src":"781:32:107","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18034,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"851:16:107","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":18035,"nodeType":"InheritanceSpecifier","src":"851:16:107"}],"contractDependencies":[941,13896,18028],"contractKind":"contract","fullyImplemented":true,"id":18083,"linearizedBaseContracts":[18083,13896,941],"name":"PolygonRootGaugeFactory","nodeType":"ContractDefinition","nodes":[{"body":{"id":18055,"nodeType":"Block","src":"1132:64:107","statements":[]},"id":18056,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"id":18048,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18037,"src":"1074:6:107","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":18049,"name":"polygonRootChainManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18039,"src":"1082:23:107","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},{"id":18050,"name":"polygonERC20Predicate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18041,"src":"1107:21:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"},{"typeIdentifier":"t_address","typeString":"address"}],"id":18047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1053:20:107","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$_t_contract$_IPolygonRootChainManager_$17929_$_t_address_$returns$_t_contract$_PolygonRootGauge_$18028_$","typeString":"function (contract IMainnetBalancerMinter,contract IPolygonRootChainManager,address) returns (contract PolygonRootGauge)"},"typeName":{"id":18046,"name":"PolygonRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":18028,"src":"1057:16:107","typeDescriptions":{"typeIdentifier":"t_contract$_PolygonRootGauge_$18028","typeString":"contract PolygonRootGauge"}}},"id":18051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1053:76:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PolygonRootGauge_$18028","typeString":"contract PolygonRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PolygonRootGauge_$18028","typeString":"contract PolygonRootGauge"}],"id":18045,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1045:7:107","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18044,"name":"address","nodeType":"ElementaryTypeName","src":"1045:7:107","typeDescriptions":{}}},"id":18052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1045:85:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":18053,"modifierName":{"id":18043,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1028:16:107","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"1028:103:107"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18037,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":18056,"src":"895:29:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":18036,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"895:22:107","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":18039,"mutability":"mutable","name":"polygonRootChainManager","nodeType":"VariableDeclaration","scope":18056,"src":"934:48:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"},"typeName":{"id":18038,"name":"IPolygonRootChainManager","nodeType":"UserDefinedTypeName","referencedDeclaration":17929,"src":"934:24:107","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonRootChainManager_$17929","typeString":"contract IPolygonRootChainManager"}},"visibility":"internal"},{"constant":false,"id":18041,"mutability":"mutable","name":"polygonERC20Predicate","nodeType":"VariableDeclaration","scope":18056,"src":"992:29:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18040,"name":"address","nodeType":"ElementaryTypeName","src":"992:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"885:142:107"},"returnParameters":{"id":18054,"nodeType":"ParameterList","parameters":[],"src":"1132:0:107"},"scope":18083,"src":"874:322:107","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18081,"nodeType":"Block","src":"1761:138:107","statements":[{"assignments":[18067],"declarations":[{"constant":false,"id":18067,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18081,"src":"1771:13:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18066,"name":"address","nodeType":"ElementaryTypeName","src":"1771:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":18070,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":18068,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"1787:7:107","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":18069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1787:9:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1771:25:107"},{"expression":{"arguments":[{"id":18075,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18059,"src":"1841:9:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18076,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18061,"src":"1852:17:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":18072,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18067,"src":"1823:5:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18071,"name":"PolygonRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18028,"src":"1806:16:107","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PolygonRootGauge_$18028_$","typeString":"type(contract PolygonRootGauge)"}},"id":18073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1806:23:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PolygonRootGauge_$18028","typeString":"contract PolygonRootGauge"}},"id":18074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":17977,"src":"1806:34:107","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":18077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1806:64:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18078,"nodeType":"ExpressionStatement","src":"1806:64:107"},{"expression":{"id":18079,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18067,"src":"1887:5:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":18065,"id":18080,"nodeType":"Return","src":"1880:12:107"}]},"documentation":{"id":18057,"nodeType":"StructuredDocumentation","src":"1202:465:107","text":" @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Polygon.\n @dev Care must be taken to ensure that gauges deployed from this factory are\n suitable before they are added to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":18082,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":18062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18059,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":18082,"src":"1688:17:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18058,"name":"address","nodeType":"ElementaryTypeName","src":"1688:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18061,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":18082,"src":"1707:25:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18060,"name":"uint256","nodeType":"ElementaryTypeName","src":"1707:7:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1687:46:107"},"returnParameters":{"id":18065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18064,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18082,"src":"1752:7:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18063,"name":"address","nodeType":"ElementaryTypeName","src":"1752:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1751:9:107"},"scope":18083,"src":"1672:227:107","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18084,"src":"815:1086:107"}],"src":"688:1214:107"},"id":107},"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol":{"ast":{"absolutePath":"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol","exportedSymbols":{"IPolygonZkEVMBridge":[18103],"PolygonZkEVMRootGauge":[18199]},"id":18200,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18085,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:108"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":18086,"nodeType":"ImportDirective","scope":18200,"sourceUnit":7342,"src":"713:79:108","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/StakelessGauge.sol","file":"../StakelessGauge.sol","id":18087,"nodeType":"ImportDirective","scope":18200,"sourceUnit":15197,"src":"794:31:108","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":18103,"linearizedBaseContracts":[18103],"name":"IPolygonZkEVMBridge","nodeType":"ContractDefinition","nodes":[{"functionSelector":"cd586579","id":18102,"implemented":false,"kind":"function","modifiers":[],"name":"bridgeAsset","nodeType":"FunctionDefinition","parameters":{"id":18100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18089,"mutability":"mutable","name":"destinationNetwork","nodeType":"VariableDeclaration","scope":18102,"src":"893:25:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":18088,"name":"uint32","nodeType":"ElementaryTypeName","src":"893:6:108","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":18091,"mutability":"mutable","name":"destinationAddress","nodeType":"VariableDeclaration","scope":18102,"src":"928:26:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18090,"name":"address","nodeType":"ElementaryTypeName","src":"928:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18093,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":18102,"src":"964:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18092,"name":"uint256","nodeType":"ElementaryTypeName","src":"964:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18095,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":18102,"src":"988:13:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18094,"name":"address","nodeType":"ElementaryTypeName","src":"988:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18097,"mutability":"mutable","name":"forceUpdateGlobalExitRoot","nodeType":"VariableDeclaration","scope":18102,"src":"1011:30:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18096,"name":"bool","nodeType":"ElementaryTypeName","src":"1011:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":18099,"mutability":"mutable","name":"permitData","nodeType":"VariableDeclaration","scope":18102,"src":"1051:25:108","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":18098,"name":"bytes","nodeType":"ElementaryTypeName","src":"1051:5:108","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"883:199:108"},"returnParameters":{"id":18101,"nodeType":"ParameterList","parameters":[],"src":"1091:0:108"},"scope":18103,"src":"863:229:108","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18200,"src":"827:267:108"},{"abstract":false,"baseContracts":[{"baseName":{"id":18105,"name":"StakelessGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":15196,"src":"1280:14:108","typeDescriptions":{"typeIdentifier":"t_contract$_StakelessGauge_$15196","typeString":"contract StakelessGauge"}},"id":18106,"nodeType":"InheritanceSpecifier","src":"1280:14:108"}],"contractDependencies":[928,1239,7187,15196],"contractKind":"contract","documentation":{"id":18104,"nodeType":"StructuredDocumentation","src":"1096:149:108","text":" @notice Root Gauge for the Polygon zkEVM network.\n @dev Documentation is at https://zkevm.polygon.technology/docs/category/zkevm-bridge."},"fullyImplemented":true,"id":18199,"linearizedBaseContracts":[18199,15196,7187,1239,928],"name":"PolygonZkEVMRootGauge","nodeType":"ContractDefinition","nodes":[{"id":18109,"libraryName":{"id":18107,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"1307:9:108","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1301:27:108","typeName":{"id":18108,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1321:6:108","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":true,"id":18112,"mutability":"constant","name":"_FORCE_UPDATE_GLOBAL_EXIT_ROOT","nodeType":"VariableDeclaration","scope":18199,"src":"1334:59:108","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18110,"name":"bool","nodeType":"ElementaryTypeName","src":"1334:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":{"hexValue":"74727565","id":18111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1389:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"visibility":"private"},{"constant":true,"id":18115,"mutability":"constant","name":"_POLYGON_ZKEVM_NETWORK","nodeType":"VariableDeclaration","scope":18199,"src":"1399:50:108","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":18113,"name":"uint32","nodeType":"ElementaryTypeName","src":"1399:6:108","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"31","id":18114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1448:1:108","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":false,"id":18117,"mutability":"immutable","name":"_polygonZkEVMBridge","nodeType":"VariableDeclaration","scope":18199,"src":"1456:57:108","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"},"typeName":{"id":18116,"name":"IPolygonZkEVMBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":18103,"src":"1456:19:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"visibility":"private"},{"constant":false,"id":18119,"mutability":"mutable","name":"_recipient","nodeType":"VariableDeclaration","scope":18199,"src":"1623:26:108","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18118,"name":"address","nodeType":"ElementaryTypeName","src":"1623:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":18133,"nodeType":"Block","src":"1762:57:108","statements":[{"expression":{"id":18131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18129,"name":"_polygonZkEVMBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18117,"src":"1772:19:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18130,"name":"polygonZkEVMBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18123,"src":"1794:18:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"src":"1772:40:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"id":18132,"nodeType":"ExpressionStatement","src":"1772:40:108"}]},"id":18134,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18126,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18121,"src":"1754:6:108","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}}],"id":18127,"modifierName":{"id":18125,"name":"StakelessGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"1739:14:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StakelessGauge_$15196_$","typeString":"type(contract StakelessGauge)"}},"nodeType":"ModifierInvocation","src":"1739:22:108"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18121,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":18134,"src":"1668:29:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":18120,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1668:22:108","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":18123,"mutability":"mutable","name":"polygonZkEVMBridge","nodeType":"VariableDeclaration","scope":18134,"src":"1699:38:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"},"typeName":{"id":18122,"name":"IPolygonZkEVMBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":18103,"src":"1699:19:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"visibility":"internal"}],"src":"1667:71:108"},"returnParameters":{"id":18128,"nodeType":"ParameterList","parameters":[],"src":"1762:0:108"},"scope":18199,"src":"1656:163:108","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18149,"nodeType":"Block","src":"1900:152:108","statements":[{"expression":{"arguments":[{"id":18142,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18138,"src":"1994:17:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18141,"name":"__StakelessGauge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14791,"src":"1972:21:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":18143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1972:40:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18144,"nodeType":"ExpressionStatement","src":"1972:40:108"},{"expression":{"id":18147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18145,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18119,"src":"2023:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18146,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18136,"src":"2036:9:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2023:22:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18148,"nodeType":"ExpressionStatement","src":"2023:22:108"}]},"functionSelector":"cd6dc687","id":18150,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":18139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18136,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":18150,"src":"1845:17:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18135,"name":"address","nodeType":"ElementaryTypeName","src":"1845:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18138,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":18150,"src":"1864:25:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18137,"name":"uint256","nodeType":"ElementaryTypeName","src":"1864:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1844:46:108"},"returnParameters":{"id":18140,"nodeType":"ParameterList","parameters":[],"src":"1900:0:108"},"scope":18199,"src":"1825:227:108","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1232],"body":{"id":18158,"nodeType":"Block","src":"2123:34:108","statements":[{"expression":{"id":18156,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18119,"src":"2140:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":18155,"id":18157,"nodeType":"Return","src":"2133:17:108"}]},"functionSelector":"1b88094d","id":18159,"implemented":true,"kind":"function","modifiers":[],"name":"getRecipient","nodeType":"FunctionDefinition","overrides":{"id":18152,"nodeType":"OverrideSpecifier","overrides":[],"src":"2096:8:108"},"parameters":{"id":18151,"nodeType":"ParameterList","parameters":[],"src":"2079:2:108"},"returnParameters":{"id":18155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18154,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18159,"src":"2114:7:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18153,"name":"address","nodeType":"ElementaryTypeName","src":"2114:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2113:9:108"},"scope":18199,"src":"2058:99:108","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18166,"nodeType":"Block","src":"2240:43:108","statements":[{"expression":{"id":18164,"name":"_polygonZkEVMBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18117,"src":"2257:19:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"functionReturnParameters":18163,"id":18165,"nodeType":"Return","src":"2250:26:108"}]},"functionSelector":"04ceb300","id":18167,"implemented":true,"kind":"function","modifiers":[],"name":"getPolygonZkEVMBridge","nodeType":"FunctionDefinition","parameters":{"id":18160,"nodeType":"ParameterList","parameters":[],"src":"2193:2:108"},"returnParameters":{"id":18163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18162,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18167,"src":"2219:19:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"},"typeName":{"id":18161,"name":"IPolygonZkEVMBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":18103,"src":"2219:19:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"visibility":"internal"}],"src":"2218:21:108"},"scope":18199,"src":"2163:120:108","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[15040],"body":{"id":18197,"nodeType":"Block","src":"2352:419:108","statements":[{"expression":{"arguments":[{"arguments":[{"id":18178,"name":"_polygonZkEVMBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18117,"src":"2392:19:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}],"id":18177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2384:7:108","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18176,"name":"address","nodeType":"ElementaryTypeName","src":"2384:7:108","typeDescriptions":{}}},"id":18179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2384:28:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18180,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18169,"src":"2414:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18173,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2362:9:108","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":18175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":7251,"src":"2362:21:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,uint256)"}},"id":18181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2362:63:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18182,"nodeType":"ExpressionStatement","src":"2362:63:108"},{"expression":{"arguments":[{"id":18186,"name":"_POLYGON_ZKEVM_NETWORK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18115,"src":"2592:22:108","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":18187,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18119,"src":"2628:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18188,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18169,"src":"2652:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":18191,"name":"_balToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14640,"src":"2684:9:108","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}],"id":18190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2676:7:108","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18189,"name":"address","nodeType":"ElementaryTypeName","src":"2676:7:108","typeDescriptions":{}}},"id":18192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2676:18:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18193,"name":"_FORCE_UPDATE_GLOBAL_EXIT_ROOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18112,"src":"2708:30:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"","id":18194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2752:2:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":18183,"name":"_polygonZkEVMBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18117,"src":"2547:19:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"id":18185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"bridgeAsset","nodeType":"MemberAccess","referencedDeclaration":18102,"src":"2547:31:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint32_$_t_address_$_t_uint256_$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint32,address,uint256,address,bool,bytes memory) external"}},"id":18195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2547:217:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18196,"nodeType":"ExpressionStatement","src":"2547:217:108"}]},"id":18198,"implemented":true,"kind":"function","modifiers":[],"name":"_postMintAction","nodeType":"FunctionDefinition","overrides":{"id":18171,"nodeType":"OverrideSpecifier","overrides":[],"src":"2343:8:108"},"parameters":{"id":18170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18169,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":18198,"src":"2314:18:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18168,"name":"uint256","nodeType":"ElementaryTypeName","src":"2314:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2313:20:108"},"returnParameters":{"id":18172,"nodeType":"ParameterList","parameters":[],"src":"2352:0:108"},"scope":18199,"src":"2289:482:108","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":18200,"src":"1246:1527:108"}],"src":"688:2086:108"},"id":108},"contracts/gauges/zkevm/PolygonZkEVMRootGaugeFactory.sol":{"ast":{"absolutePath":"contracts/gauges/zkevm/PolygonZkEVMRootGaugeFactory.sol","exportedSymbols":{"PolygonZkEVMRootGaugeFactory":[18251]},"id":18252,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18201,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:109"},{"id":18202,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:109"},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../BaseGaugeFactory.sol","id":18203,"nodeType":"ImportDirective","scope":18252,"sourceUnit":13897,"src":"747:33:109","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol","file":"./PolygonZkEVMRootGauge.sol","id":18204,"nodeType":"ImportDirective","scope":18252,"sourceUnit":18200,"src":"781:37:109","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18205,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"861:16:109","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":18206,"nodeType":"InheritanceSpecifier","src":"861:16:109"}],"contractDependencies":[941,13896,18199],"contractKind":"contract","fullyImplemented":true,"id":18251,"linearizedBaseContracts":[18251,13896,941],"name":"PolygonZkEVMRootGaugeFactory","nodeType":"ContractDefinition","nodes":[{"body":{"id":18223,"nodeType":"Block","src":"1046:64:109","statements":[]},"id":18224,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"id":18217,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18208,"src":"1019:6:109","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":18218,"name":"zkEVMBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18210,"src":"1027:11:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}],"id":18216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"993:25:109","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IMainnetBalancerMinter_$951_$_t_contract$_IPolygonZkEVMBridge_$18103_$returns$_t_contract$_PolygonZkEVMRootGauge_$18199_$","typeString":"function (contract IMainnetBalancerMinter,contract IPolygonZkEVMBridge) returns (contract PolygonZkEVMRootGauge)"},"typeName":{"id":18215,"name":"PolygonZkEVMRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":18199,"src":"997:21:109","typeDescriptions":{"typeIdentifier":"t_contract$_PolygonZkEVMRootGauge_$18199","typeString":"contract PolygonZkEVMRootGauge"}}},"id":18219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"993:46:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PolygonZkEVMRootGauge_$18199","typeString":"contract PolygonZkEVMRootGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PolygonZkEVMRootGauge_$18199","typeString":"contract PolygonZkEVMRootGauge"}],"id":18214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"985:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18213,"name":"address","nodeType":"ElementaryTypeName","src":"985:7:109","typeDescriptions":{}}},"id":18220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"985:55:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":18221,"modifierName":{"id":18212,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"968:16:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"968:73:109"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18208,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":18224,"src":"896:29:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":18207,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"896:22:109","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":18210,"mutability":"mutable","name":"zkEVMBridge","nodeType":"VariableDeclaration","scope":18224,"src":"927:31:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"},"typeName":{"id":18209,"name":"IPolygonZkEVMBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":18103,"src":"927:19:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPolygonZkEVMBridge_$18103","typeString":"contract IPolygonZkEVMBridge"}},"visibility":"internal"}],"src":"895:64:109"},"returnParameters":{"id":18222,"nodeType":"ParameterList","parameters":[],"src":"1046:0:109"},"scope":18251,"src":"884:226:109","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18249,"nodeType":"Block","src":"1681:143:109","statements":[{"assignments":[18235],"declarations":[{"constant":false,"id":18235,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18249,"src":"1691:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18234,"name":"address","nodeType":"ElementaryTypeName","src":"1691:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":18238,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":18236,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"1707:7:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":18237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1707:9:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1691:25:109"},{"expression":{"arguments":[{"id":18243,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18227,"src":"1766:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18244,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18229,"src":"1777:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":18240,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18235,"src":"1748:5:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18239,"name":"PolygonZkEVMRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18199,"src":"1726:21:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PolygonZkEVMRootGauge_$18199_$","typeString":"type(contract PolygonZkEVMRootGauge)"}},"id":18241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1726:28:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PolygonZkEVMRootGauge_$18199","typeString":"contract PolygonZkEVMRootGauge"}},"id":18242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":18150,"src":"1726:39:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":18245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1726:69:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18246,"nodeType":"ExpressionStatement","src":"1726:69:109"},{"expression":{"id":18247,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18235,"src":"1812:5:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":18233,"id":18248,"nodeType":"Return","src":"1805:12:109"}]},"documentation":{"id":18225,"nodeType":"StructuredDocumentation","src":"1116:471:109","text":" @notice Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Polygon ZkEVM.\n @dev Care must be taken to ensure that gauges deployed from this factory are suitable before they are added\n to the GaugeController.\n @param recipient The address to receive BAL minted from the gauge\n @param relativeWeightCap The relative weight cap for the created gauge\n @return The address of the deployed gauge"},"functionSelector":"0ecaea73","id":18250,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":18230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18227,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":18250,"src":"1608:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18226,"name":"address","nodeType":"ElementaryTypeName","src":"1608:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18229,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":18250,"src":"1627:25:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18228,"name":"uint256","nodeType":"ElementaryTypeName","src":"1627:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1607:46:109"},"returnParameters":{"id":18233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18232,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18250,"src":"1672:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18231,"name":"address","nodeType":"ElementaryTypeName","src":"1672:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1671:9:109"},"scope":18251,"src":"1592:232:109","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18252,"src":"820:1006:109"}],"src":"688:1139:109"},"id":109},"contracts/test/MockAvalancheRootGauge.sol":{"ast":{"absolutePath":"contracts/test/MockAvalancheRootGauge.sol","exportedSymbols":{"MockAvalancheRootGauge":[18282]},"id":18283,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18253,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:110"},{"id":18254,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:110"},{"absolutePath":"contracts/gauges/avalanche/AvalancheRootGauge.sol","file":"../gauges/avalanche/AvalancheRootGauge.sol","id":18255,"nodeType":"ImportDirective","scope":18283,"sourceUnit":17010,"src":"747:52:110","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18257,"name":"AvalancheRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":17009,"src":"977:18:110","typeDescriptions":{"typeIdentifier":"t_contract$_AvalancheRootGauge_$17009","typeString":"contract AvalancheRootGauge"}},"id":18258,"nodeType":"InheritanceSpecifier","src":"977:18:110"}],"contractDependencies":[928,1239,7187,15196,17009],"contractKind":"contract","documentation":{"id":18256,"nodeType":"StructuredDocumentation","src":"801:140:110","text":" @dev This is used by the Avalanche Root Gauge deployment task in the deployments repo, and is referenced there.\n Do not delete."},"fullyImplemented":true,"id":18282,"linearizedBaseContracts":[18282,17009,15196,7187,1239,928],"name":"MockAvalancheRootGauge","nodeType":"ContractDefinition","nodes":[{"body":{"id":18269,"nodeType":"Block","src":"1115:64:110","statements":[]},"id":18270,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18265,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18260,"src":"1095:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":18266,"name":"lzBALProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18262,"src":"1103:10:110","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}}],"id":18267,"modifierName":{"id":18264,"name":"AvalancheRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17009,"src":"1076:18:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AvalancheRootGauge_$17009_$","typeString":"type(contract AvalancheRootGauge)"}},"nodeType":"ModifierInvocation","src":"1076:38:110"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18260,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":18270,"src":"1014:29:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":18259,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"1014:22:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":18262,"mutability":"mutable","name":"lzBALProxy","nodeType":"VariableDeclaration","scope":18270,"src":"1045:29:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"},"typeName":{"id":18261,"name":"ILayerZeroBALProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":16738,"src":"1045:18:110","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroBALProxy_$16738","typeString":"contract ILayerZeroBALProxy"}},"visibility":"internal"}],"src":"1013:62:110"},"returnParameters":{"id":18268,"nodeType":"ParameterList","parameters":[],"src":"1115:0:110"},"scope":18282,"src":"1002:177:110","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18280,"nodeType":"Block","src":"1552:44:110","statements":[{"expression":{"arguments":[{"id":18277,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18273,"src":"1578:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18276,"name":"_postMintAction","nodeType":"Identifier","overloadedDeclarations":[16977],"referencedDeclaration":16977,"src":"1562:15:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":18278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1562:27:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18279,"nodeType":"ExpressionStatement","src":"1562:27:110"}]},"documentation":{"id":18271,"nodeType":"StructuredDocumentation","src":"1185:309:110","text":" @dev It would be very difficult to contrive a fork test that set the mintAmount to a precise value,\n so the bridge limits are best tested with a mock and unit tests.\n It must be payable to send ETH to pay for gas in the child chain.\n @param mintAmount Amount to be bridged"},"functionSelector":"90fd50b3","id":18281,"implemented":true,"kind":"function","modifiers":[],"name":"bridge","nodeType":"FunctionDefinition","parameters":{"id":18274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18273,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":18281,"src":"1515:18:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18272,"name":"uint256","nodeType":"ElementaryTypeName","src":"1515:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1514:20:110"},"returnParameters":{"id":18275,"nodeType":"ParameterList","parameters":[],"src":"1552:0:110"},"scope":18282,"src":"1499:97:110","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":18283,"src":"942:656:110"}],"src":"688:911:110"},"id":110},"contracts/test/MockBalancerMinter.sol":{"ast":{"absolutePath":"contracts/test/MockBalancerMinter.sol","exportedSymbols":{"MockBalancerMinter":[18394]},"id":18395,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18284,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:111"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","id":18285,"nodeType":"ImportDirective","scope":18395,"sourceUnit":328,"src":"713:89:111","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","id":18286,"nodeType":"ImportDirective","scope":18395,"sourceUnit":822,"src":"803:86:111","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","id":18287,"nodeType":"ImportDirective","scope":18395,"sourceUnit":929,"src":"890:85:111","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol","id":18288,"nodeType":"ImportDirective","scope":18395,"sourceUnit":952,"src":"976:92:111","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","id":18289,"nodeType":"ImportDirective","scope":18395,"sourceUnit":7420,"src":"1069:78:111","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/BalancerMinter.sol","file":"../BalancerMinter.sol","id":18290,"nodeType":"ImportDirective","scope":18395,"sourceUnit":7867,"src":"1149:31:111","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18291,"name":"BalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":7866,"src":"1213:14:111","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerMinter_$7866","typeString":"contract BalancerMinter"}},"id":18292,"nodeType":"InheritanceSpecifier","src":"1213:14:111"}],"contractDependencies":[197,2311,3308,6021,7187,7866],"contractKind":"contract","fullyImplemented":true,"id":18394,"linearizedBaseContracts":[18394,7866,3308,6021,2311,7187,197],"name":"MockBalancerMinter","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":18298,"name":"MintFor","nodeType":"EventDefinition","parameters":{"id":18297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18294,"indexed":false,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18298,"src":"1248:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18293,"name":"address","nodeType":"ElementaryTypeName","src":"1248:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18296,"indexed":false,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18298,"src":"1263:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18295,"name":"address","nodeType":"ElementaryTypeName","src":"1263:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1247:29:111"},"src":"1234:43:111"},{"anonymous":false,"id":18305,"name":"MintForMany","nodeType":"EventDefinition","parameters":{"id":18304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18301,"indexed":false,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":18305,"src":"1300:16:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18299,"name":"address","nodeType":"ElementaryTypeName","src":"1300:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18300,"nodeType":"ArrayTypeName","src":"1300:9:111","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":18303,"indexed":false,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18305,"src":"1318:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18302,"name":"address","nodeType":"ElementaryTypeName","src":"1318:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1299:32:111"},"src":"1282:50:111"},{"constant":false,"id":18307,"mutability":"mutable","name":"_mintForReturn","nodeType":"VariableDeclaration","scope":18394,"src":"1338:30:111","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18306,"name":"uint256","nodeType":"ElementaryTypeName","src":"1338:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":18309,"mutability":"mutable","name":"_mintForManyReturn","nodeType":"VariableDeclaration","scope":18394,"src":"1374:34:111","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18308,"name":"uint256","nodeType":"ElementaryTypeName","src":"1374:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":18319,"nodeType":"Block","src":"1487:64:111","statements":[]},"id":18320,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18314,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18311,"src":"1456:5:111","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"hexValue":"42616c616e636572204d696e746572","id":18315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1463:17:111","typeDescriptions":{"typeIdentifier":"t_stringliteral_63c05625ac5a06c4bd34bf8f76d2a8cb0f02c3d329e03eae3da16e084ba60ddc","typeString":"literal_string \"Balancer Minter\""},"value":"Balancer Minter"},{"hexValue":"31","id":18316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1482:3:111","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":18317,"modifierName":{"id":18313,"name":"BalancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7866,"src":"1441:14:111","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalancerMinter_$7866_$","typeString":"type(contract BalancerMinter)"}},"nodeType":"ModifierInvocation","src":"1441:45:111"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18311,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":18320,"src":"1427:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":18310,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1427:6:111","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1426:14:111"},"returnParameters":{"id":18318,"nodeType":"ParameterList","parameters":[],"src":"1487:0:111"},"scope":18394,"src":"1415:136:111","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18329,"nodeType":"Block","src":"1613:47:111","statements":[{"expression":{"id":18327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18325,"name":"_mintForReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18307,"src":"1623:14:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18326,"name":"mintForReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18322,"src":"1640:13:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1623:30:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18328,"nodeType":"ExpressionStatement","src":"1623:30:111"}]},"functionSelector":"95c3d17c","id":18330,"implemented":true,"kind":"function","modifiers":[],"name":"setMockMintFor","nodeType":"FunctionDefinition","parameters":{"id":18323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18322,"mutability":"mutable","name":"mintForReturn","nodeType":"VariableDeclaration","scope":18330,"src":"1581:21:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18321,"name":"uint256","nodeType":"ElementaryTypeName","src":"1581:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1580:23:111"},"returnParameters":{"id":18324,"nodeType":"ParameterList","parameters":[],"src":"1613:0:111"},"scope":18394,"src":"1557:103:111","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18339,"nodeType":"Block","src":"1730:55:111","statements":[{"expression":{"id":18337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18335,"name":"_mintForManyReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18309,"src":"1740:18:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18336,"name":"mintForManyReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18332,"src":"1761:17:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1740:38:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18338,"nodeType":"ExpressionStatement","src":"1740:38:111"}]},"functionSelector":"e96ff983","id":18340,"implemented":true,"kind":"function","modifiers":[],"name":"setMockMintForMany","nodeType":"FunctionDefinition","parameters":{"id":18333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18332,"mutability":"mutable","name":"mintForManyReturn","nodeType":"VariableDeclaration","scope":18340,"src":"1694:25:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18331,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1693:27:111"},"returnParameters":{"id":18334,"nodeType":"ParameterList","parameters":[],"src":"1730:0:111"},"scope":18394,"src":"1666:119:111","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18355,"nodeType":"Block","src":"1893:54:111","statements":[{"expression":{"arguments":[{"id":18350,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18342,"src":"1921:4:111","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18351,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18344,"src":"1927:5:111","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18352,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18346,"src":"1934:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18349,"name":"_setMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7741,"src":"1910:10:111","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":18353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1910:30:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":18348,"id":18354,"nodeType":"Return","src":"1903:37:111"}]},"functionSelector":"484935a2","id":18356,"implemented":true,"kind":"function","modifiers":[],"name":"setMinted","nodeType":"FunctionDefinition","parameters":{"id":18347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18342,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18356,"src":"1819:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18341,"name":"address","nodeType":"ElementaryTypeName","src":"1819:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18344,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18356,"src":"1841:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18343,"name":"address","nodeType":"ElementaryTypeName","src":"1841:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18346,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":18356,"src":"1864:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18345,"name":"uint256","nodeType":"ElementaryTypeName","src":"1864:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1809:74:111"},"returnParameters":{"id":18348,"nodeType":"ParameterList","parameters":[],"src":"1893:0:111"},"scope":18394,"src":"1791:156:111","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[7750],"body":{"id":18373,"nodeType":"Block","src":"2076:73:111","statements":[{"eventCall":{"arguments":[{"id":18367,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18358,"src":"2099:5:111","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18368,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18360,"src":"2106:4:111","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":18366,"name":"MintFor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18298,"src":"2091:7:111","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":18369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2091:20:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18370,"nodeType":"EmitStatement","src":"2086:25:111"},{"expression":{"id":18371,"name":"_mintForReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18307,"src":"2128:14:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18365,"id":18372,"nodeType":"Return","src":"2121:21:111"}]},"id":18374,"implemented":true,"kind":"function","modifiers":[],"name":"_mintFor","nodeType":"FunctionDefinition","overrides":{"id":18362,"nodeType":"OverrideSpecifier","overrides":[],"src":"2036:8:111"},"parameters":{"id":18361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18358,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18374,"src":"1998:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18357,"name":"address","nodeType":"ElementaryTypeName","src":"1998:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18360,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18374,"src":"2013:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18359,"name":"address","nodeType":"ElementaryTypeName","src":"2013:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1997:29:111"},"returnParameters":{"id":18365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18364,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":18374,"src":"2054:20:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18363,"name":"uint256","nodeType":"ElementaryTypeName","src":"2054:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2053:22:111"},"scope":18394,"src":"1980:169:111","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[7760],"body":{"id":18392,"nodeType":"Block","src":"2267:82:111","statements":[{"eventCall":{"arguments":[{"id":18386,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18377,"src":"2294:6:111","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":18387,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18379,"src":"2302:4:111","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":18385,"name":"MintForMany","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18305,"src":"2282:11:111","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (address[] memory,address)"}},"id":18388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2282:25:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18389,"nodeType":"EmitStatement","src":"2277:30:111"},{"expression":{"id":18390,"name":"_mintForManyReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18309,"src":"2324:18:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18384,"id":18391,"nodeType":"Return","src":"2317:25:111"}]},"id":18393,"implemented":true,"kind":"function","modifiers":[],"name":"_mintForMany","nodeType":"FunctionDefinition","overrides":{"id":18381,"nodeType":"OverrideSpecifier","overrides":[],"src":"2227:8:111"},"parameters":{"id":18380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18377,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":18393,"src":"2177:25:111","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18375,"name":"address","nodeType":"ElementaryTypeName","src":"2177:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18376,"nodeType":"ArrayTypeName","src":"2177:9:111","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":18379,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18393,"src":"2204:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18378,"name":"address","nodeType":"ElementaryTypeName","src":"2204:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2176:41:111"},"returnParameters":{"id":18384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18383,"mutability":"mutable","name":"tokensToMint","nodeType":"VariableDeclaration","scope":18393,"src":"2245:20:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18382,"name":"uint256","nodeType":"ElementaryTypeName","src":"2245:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2244:22:111"},"scope":18394,"src":"2155:194:111","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":18395,"src":"1182:1169:111"}],"src":"688:1664:111"},"id":111},"contracts/test/MockBalancerTokenAdmin.sol":{"ast":{"absolutePath":"contracts/test/MockBalancerTokenAdmin.sol","exportedSymbols":{"MockBalancerTokenAdmin":[18522]},"id":18523,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18396,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:112"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","id":18397,"nodeType":"ImportDirective","scope":18523,"sourceUnit":275,"src":"713:84:112","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":18398,"nodeType":"ImportDirective","scope":18523,"sourceUnit":3052,"src":"798:65:112","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":18399,"nodeType":"StructuredDocumentation","src":"865:171:112","text":" @dev This is an incomplete implementation of the token admin. It provides just enough functionality to be able to\n instantiate Liquidity and Stakeless gauges."},"fullyImplemented":true,"id":18522,"linearizedBaseContracts":[18522],"name":"MockBalancerTokenAdmin","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"4dbac733","id":18410,"mutability":"constant","name":"INITIAL_RATE","nodeType":"VariableDeclaration","scope":18522,"src":"1075:73:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18400,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_145000000000000000000000_by_1","typeString":"int_const 145000000000000000000000"},"id":18403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"313435303030","id":18401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1115:6:112","typeDescriptions":{"typeIdentifier":"t_rational_145000_by_1","typeString":"int_const 145000"},"value":"145000"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31653138","id":18402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1124:4:112","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"1115:13:112","typeDescriptions":{"typeIdentifier":"t_rational_145000000000000000000000_by_1","typeString":"int_const 145000000000000000000000"}}],"id":18404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1114:15:112","typeDescriptions":{"typeIdentifier":"t_rational_145000000000000000000000_by_1","typeString":"int_const 145000000000000000000000"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"hexValue":"31","id":18407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1140:7:112","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"}],"id":18406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1132:7:112","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":18405,"name":"uint256","nodeType":"ElementaryTypeName","src":"1132:7:112","typeDescriptions":{}}},"id":18408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1132:16:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1114:34:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"functionSelector":"b87b5616","id":18413,"mutability":"constant","name":"RATE_REDUCTION_TIME","nodeType":"VariableDeclaration","scope":18522,"src":"1177:54:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18411,"name":"uint256","nodeType":"ElementaryTypeName","src":"1177:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333635","id":18412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1223:8:112","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"value":"365"},"visibility":"public"},{"constant":true,"functionSelector":"21609bbf","id":18416,"mutability":"constant","name":"RATE_REDUCTION_COEFFICIENT","nodeType":"VariableDeclaration","scope":18522,"src":"1237:72:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18414,"name":"uint256","nodeType":"ElementaryTypeName","src":"1237:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31313839323037313135303032373231303234","id":18415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1290:19:112","typeDescriptions":{"typeIdentifier":"t_rational_1189207115002721024_by_1","typeString":"int_const 1189207115002721024"},"value":"1189207115002721024"},"visibility":"public"},{"constant":true,"functionSelector":"7efad8e0","id":18419,"mutability":"constant","name":"RATE_DENOMINATOR","nodeType":"VariableDeclaration","scope":18522,"src":"1336:47:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18417,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":18418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1379:4:112","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"public"},{"constant":false,"id":18421,"mutability":"mutable","name":"_vault","nodeType":"VariableDeclaration","scope":18522,"src":"1390:21:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":18420,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1390:6:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":18423,"mutability":"mutable","name":"_balancerToken","nodeType":"VariableDeclaration","scope":18522,"src":"1417:37:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"},"typeName":{"id":18422,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":274,"src":"1417:14:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"visibility":"private"},{"constant":false,"id":18425,"mutability":"mutable","name":"_startEpochTime","nodeType":"VariableDeclaration","scope":18522,"src":"1460:31:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18424,"name":"uint256","nodeType":"ElementaryTypeName","src":"1460:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":18427,"mutability":"immutable","name":"_rate","nodeType":"VariableDeclaration","scope":18522,"src":"1497:31:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18426,"name":"uint256","nodeType":"ElementaryTypeName","src":"1497:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":18451,"nodeType":"Block","src":"1591:198:112","statements":[{"expression":{"id":18436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18434,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18421,"src":"1601:6:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18435,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18429,"src":"1610:5:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"src":"1601:14:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"id":18437,"nodeType":"ExpressionStatement","src":"1601:14:112"},{"expression":{"id":18440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18438,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18423,"src":"1625:14:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18439,"name":"balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18431,"src":"1642:13:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"src":"1625:30:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":18441,"nodeType":"ExpressionStatement","src":"1625:30:112"},{"expression":{"id":18445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18442,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18425,"src":"1719:15:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":18443,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1737:5:112","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":18444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"1737:15:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1719:33:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18446,"nodeType":"ExpressionStatement","src":"1719:33:112"},{"expression":{"id":18449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18447,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18427,"src":"1762:5:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18448,"name":"INITIAL_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18410,"src":"1770:12:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1762:20:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18450,"nodeType":"ExpressionStatement","src":"1762:20:112"}]},"id":18452,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18429,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":18452,"src":"1547:12:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":18428,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1547:6:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":18431,"mutability":"mutable","name":"balancerToken","nodeType":"VariableDeclaration","scope":18452,"src":"1561:28:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"},"typeName":{"id":18430,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":274,"src":"1561:14:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"1546:44:112"},"returnParameters":{"id":18433,"nodeType":"ParameterList","parameters":[],"src":"1591:0:112"},"scope":18522,"src":"1535:254:112","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18459,"nodeType":"Block","src":"1846:30:112","statements":[{"expression":{"id":18457,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18421,"src":"1863:6:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"functionReturnParameters":18456,"id":18458,"nodeType":"Return","src":"1856:13:112"}]},"functionSelector":"8d928af8","id":18460,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":18453,"nodeType":"ParameterList","parameters":[],"src":"1812:2:112"},"returnParameters":{"id":18456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18455,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18460,"src":"1838:6:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"},"typeName":{"id":18454,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3051,"src":"1838:6:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3051","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1837:8:112"},"scope":18522,"src":"1795:81:112","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18467,"nodeType":"Block","src":"1949:38:112","statements":[{"expression":{"id":18465,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18423,"src":"1966:14:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"functionReturnParameters":18464,"id":18466,"nodeType":"Return","src":"1959:21:112"}]},"functionSelector":"c0039699","id":18468,"implemented":true,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":18461,"nodeType":"ParameterList","parameters":[],"src":"1907:2:112"},"returnParameters":{"id":18464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18463,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18468,"src":"1933:14:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"},"typeName":{"id":18462,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":274,"src":"1933:14:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"1932:16:112"},"scope":18522,"src":"1882:105:112","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18476,"nodeType":"Block","src":"2051:37:112","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18473,"name":"_epochWrite","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18506,"src":"2068:11:112","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":18474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2068:13:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18472,"id":18475,"nodeType":"Return","src":"2061:20:112"}]},"functionSelector":"a228bced","id":18477,"implemented":true,"kind":"function","modifiers":[],"name":"startEpochTimeWrite","nodeType":"FunctionDefinition","parameters":{"id":18469,"nodeType":"ParameterList","parameters":[],"src":"2021:2:112"},"returnParameters":{"id":18472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18471,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18477,"src":"2042:7:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18470,"name":"uint256","nodeType":"ElementaryTypeName","src":"2042:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2041:9:112"},"scope":18522,"src":"1993:95:112","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18485,"nodeType":"Block","src":"2200:37:112","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18482,"name":"_epochWrite","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18506,"src":"2217:11:112","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":18483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2217:13:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18481,"id":18484,"nodeType":"Return","src":"2210:20:112"}]},"functionSelector":"b26b238e","id":18486,"implemented":true,"kind":"function","modifiers":[],"name":"future_epoch_time_write","nodeType":"FunctionDefinition","parameters":{"id":18478,"nodeType":"ParameterList","parameters":[],"src":"2170:2:112"},"returnParameters":{"id":18481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18480,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18486,"src":"2191:7:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18479,"name":"uint256","nodeType":"ElementaryTypeName","src":"2191:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2190:9:112"},"scope":18522,"src":"2138:99:112","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18493,"nodeType":"Block","src":"2291:29:112","statements":[{"expression":{"id":18491,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18427,"src":"2308:5:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18490,"id":18492,"nodeType":"Return","src":"2301:12:112"}]},"functionSelector":"2c4e722e","id":18494,"implemented":true,"kind":"function","modifiers":[],"name":"rate","nodeType":"FunctionDefinition","parameters":{"id":18487,"nodeType":"ParameterList","parameters":[],"src":"2256:2:112"},"returnParameters":{"id":18490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18489,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18494,"src":"2282:7:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18488,"name":"uint256","nodeType":"ElementaryTypeName","src":"2282:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2281:9:112"},"scope":18522,"src":"2243:77:112","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18505,"nodeType":"Block","src":"2376:69:112","statements":[{"expression":{"id":18501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18499,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18425,"src":"2386:15:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":18500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2405:1:112","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2386:20:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18502,"nodeType":"ExpressionStatement","src":"2386:20:112"},{"expression":{"id":18503,"name":"_startEpochTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18425,"src":"2423:15:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18498,"id":18504,"nodeType":"Return","src":"2416:22:112"}]},"id":18506,"implemented":true,"kind":"function","modifiers":[],"name":"_epochWrite","nodeType":"FunctionDefinition","parameters":{"id":18495,"nodeType":"ParameterList","parameters":[],"src":"2346:2:112"},"returnParameters":{"id":18498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18497,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18506,"src":"2367:7:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18496,"name":"uint256","nodeType":"ElementaryTypeName","src":"2367:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2366:9:112"},"scope":18522,"src":"2326:119:112","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":18520,"nodeType":"Block","src":"2502:48:112","statements":[{"expression":{"arguments":[{"id":18516,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18508,"src":"2532:2:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18517,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18510,"src":"2536:6:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18513,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18423,"src":"2512:14:112","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$274","typeString":"contract IBalancerToken"}},"id":18515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":209,"src":"2512:19:112","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":18518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2512:31:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18519,"nodeType":"ExpressionStatement","src":"2512:31:112"}]},"functionSelector":"40c10f19","id":18521,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":18511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18508,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":18521,"src":"2465:10:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18507,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18510,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":18521,"src":"2477:14:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18509,"name":"uint256","nodeType":"ElementaryTypeName","src":"2477:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2464:28:112"},"returnParameters":{"id":18512,"nodeType":"ParameterList","parameters":[],"src":"2502:0:112"},"scope":18522,"src":"2451:99:112","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18523,"src":"1037:1515:112"}],"src":"688:1865:112"},"id":112},"contracts/test/MockBaseRootGauge.sol":{"ast":{"absolutePath":"contracts/test/MockBaseRootGauge.sol","exportedSymbols":{"MockBaseRootGauge":[18556]},"id":18557,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18524,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:113"},{"id":18525,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:113"},{"absolutePath":"contracts/gauges/base/BaseRootGauge.sol","file":"../gauges/base/BaseRootGauge.sol","id":18526,"nodeType":"ImportDirective","scope":18557,"sourceUnit":17228,"src":"747:42:113","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18528,"name":"BaseRootGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":17227,"src":"957:13:113","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRootGauge_$17227","typeString":"contract BaseRootGauge"}},"id":18529,"nodeType":"InheritanceSpecifier","src":"957:13:113"}],"contractDependencies":[928,1239,7187,15196,17227],"contractKind":"contract","documentation":{"id":18527,"nodeType":"StructuredDocumentation","src":"791:135:113","text":" @dev This is used by the Base Root Gauge deployment task in the deployments repo, and is referenced there.\n Do not delete."},"fullyImplemented":true,"id":18556,"linearizedBaseContracts":[18556,17227,15196,7187,1239,928],"name":"MockBaseRootGauge","nodeType":"ContractDefinition","nodes":[{"body":{"id":18543,"nodeType":"Block","src":"1140:64:113","statements":[]},"id":18544,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18538,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18531,"src":"1111:6:113","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},{"id":18539,"name":"baseBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18533,"src":"1119:10:113","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},{"id":18540,"name":"baseBAL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18535,"src":"1131:7:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":18541,"modifierName":{"id":18537,"name":"BaseRootGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17227,"src":"1097:13:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseRootGauge_$17227_$","typeString":"type(contract BaseRootGauge)"}},"nodeType":"ModifierInvocation","src":"1097:42:113"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18531,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":18544,"src":"998:29:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"},"typeName":{"id":18530,"name":"IMainnetBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":951,"src":"998:22:113","typeDescriptions":{"typeIdentifier":"t_contract$_IMainnetBalancerMinter_$951","typeString":"contract IMainnetBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":18533,"mutability":"mutable","name":"baseBridge","nodeType":"VariableDeclaration","scope":18544,"src":"1037:28:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"},"typeName":{"id":18532,"name":"IL1StandardBridge","nodeType":"UserDefinedTypeName","referencedDeclaration":840,"src":"1037:17:113","typeDescriptions":{"typeIdentifier":"t_contract$_IL1StandardBridge_$840","typeString":"contract IL1StandardBridge"}},"visibility":"internal"},{"constant":false,"id":18535,"mutability":"mutable","name":"baseBAL","nodeType":"VariableDeclaration","scope":18544,"src":"1075:15:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18534,"name":"address","nodeType":"ElementaryTypeName","src":"1075:7:113","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"988:108:113"},"returnParameters":{"id":18542,"nodeType":"ParameterList","parameters":[],"src":"1140:0:113"},"scope":18556,"src":"977:227:113","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18554,"nodeType":"Block","src":"1577:44:113","statements":[{"expression":{"arguments":[{"id":18551,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18547,"src":"1603:10:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18550,"name":"_postMintAction","nodeType":"Identifier","overloadedDeclarations":[17226],"referencedDeclaration":17226,"src":"1587:15:113","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":18552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1587:27:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18553,"nodeType":"ExpressionStatement","src":"1587:27:113"}]},"documentation":{"id":18545,"nodeType":"StructuredDocumentation","src":"1210:309:113","text":" @dev It would be very difficult to contrive a fork test that set the mintAmount to a precise value,\n so the bridge limits are best tested with a mock and unit tests.\n It must be payable to send ETH to pay for gas in the child chain.\n @param mintAmount Amount to be bridged"},"functionSelector":"90fd50b3","id":18555,"implemented":true,"kind":"function","modifiers":[],"name":"bridge","nodeType":"FunctionDefinition","parameters":{"id":18548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18547,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":18555,"src":"1540:18:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18546,"name":"uint256","nodeType":"ElementaryTypeName","src":"1540:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1539:20:113"},"returnParameters":{"id":18549,"nodeType":"ParameterList","parameters":[],"src":"1577:0:113"},"scope":18556,"src":"1524:97:113","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":18557,"src":"927:696:113"}],"src":"688:936:113"},"id":113},"contracts/test/MockChildChainGauge.sol":{"ast":{"absolutePath":"contracts/test/MockChildChainGauge.sol","exportedSymbols":{"MockChildChainGauge":[18679]},"id":18680,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18558,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:114"},{"id":18559,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:114"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol","id":18560,"nodeType":"ImportDirective","scope":18680,"sourceUnit":365,"src":"747:86:114","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":18561,"nodeType":"ImportDirective","scope":18680,"sourceUnit":2249,"src":"834:90:114","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","id":18562,"nodeType":"ImportDirective","scope":18680,"sourceUnit":7420,"src":"925:78:114","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18563,"name":"IChildChainGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":364,"src":"1076:16:114","typeDescriptions":{"typeIdentifier":"t_contract$_IChildChainGauge_$364","typeString":"contract IChildChainGauge"}},"id":18564,"nodeType":"InheritanceSpecifier","src":"1076:16:114"}],"contractDependencies":[364,2340],"contractKind":"contract","fullyImplemented":true,"id":18679,"linearizedBaseContracts":[18679,364,2340],"name":"MockChildChainGauge","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":18568,"name":"UserCheckpoint","nodeType":"EventDefinition","parameters":{"id":18567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18566,"indexed":false,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18568,"src":"1120:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18565,"name":"address","nodeType":"ElementaryTypeName","src":"1120:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1119:14:114"},"src":"1099:35:114"},{"id":18571,"libraryName":{"id":18569,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7419,"src":"1146:8:114","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7419","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"1140:27:114","typeName":{"id":18570,"name":"uint256","nodeType":"ElementaryTypeName","src":"1159:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"functionSelector":"82c63066","id":18573,"mutability":"mutable","name":"lp_token","nodeType":"VariableDeclaration","scope":18679,"src":"1225:23:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18572,"name":"address","nodeType":"ElementaryTypeName","src":"1225:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[363],"constant":false,"functionSelector":"c45a0155","id":18576,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","overrides":{"id":18575,"nodeType":"OverrideSpecifier","overrides":[],"src":"1284:8:114"},"scope":18679,"src":"1254:46:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":18574,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"1254:22:114","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"public"},{"baseFunctions":[2339],"constant":false,"functionSelector":"54fd4d50","id":18579,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","overrides":{"id":18578,"nodeType":"OverrideSpecifier","overrides":[],"src":"1320:8:114"},"scope":18679,"src":"1306:30:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":18577,"name":"string","nodeType":"ElementaryTypeName","src":"1306:6:114","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"constant":false,"id":18581,"mutability":"mutable","name":"_checkpointStep","nodeType":"VariableDeclaration","scope":18679,"src":"1343:31:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18580,"name":"uint256","nodeType":"ElementaryTypeName","src":"1343:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":18585,"mutability":"mutable","name":"_integrateFraction","nodeType":"VariableDeclaration","scope":18679,"src":"1380:54:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":18584,"keyType":{"id":18582,"name":"address","nodeType":"ElementaryTypeName","src":"1388:7:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1380:27:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":18583,"name":"uint256","nodeType":"ElementaryTypeName","src":"1399:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"body":{"id":18594,"nodeType":"Block","src":"1477:35:114","statements":[{"expression":{"id":18592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18590,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18579,"src":"1487:7:114","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18591,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18587,"src":"1497:8:114","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1487:18:114","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":18593,"nodeType":"ExpressionStatement","src":"1487:18:114"}]},"id":18595,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18587,"mutability":"mutable","name":"_version","nodeType":"VariableDeclaration","scope":18595,"src":"1453:22:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18586,"name":"string","nodeType":"ElementaryTypeName","src":"1453:6:114","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1452:24:114"},"returnParameters":{"id":18589,"nodeType":"ParameterList","parameters":[],"src":"1477:0:114"},"scope":18679,"src":"1441:71:114","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[341],"body":{"id":18618,"nodeType":"Block","src":"1594:114:114","statements":[{"expression":{"id":18605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18603,"name":"lp_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18573,"src":"1604:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18604,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18597,"src":"1615:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1604:15:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18606,"nodeType":"ExpressionStatement","src":"1604:15:114"},{"expression":{"id":18612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18607,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18576,"src":"1629:7:114","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":18609,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1662:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1662:10:114","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":18608,"name":"ILiquidityGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":941,"src":"1639:22:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILiquidityGaugeFactory_$941_$","typeString":"type(contract ILiquidityGaugeFactory)"}},"id":18611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1639:34:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"src":"1629:44:114","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":18613,"nodeType":"ExpressionStatement","src":"1629:44:114"},{"expression":{"id":18616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18614,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18579,"src":"1683:7:114","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18615,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18599,"src":"1693:8:114","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1683:18:114","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":18617,"nodeType":"ExpressionStatement","src":"1683:18:114"}]},"functionSelector":"f399e22e","id":18619,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","overrides":{"id":18601,"nodeType":"OverrideSpecifier","overrides":[],"src":"1585:8:114"},"parameters":{"id":18600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18597,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":18619,"src":"1538:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18596,"name":"address","nodeType":"ElementaryTypeName","src":"1538:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18599,"mutability":"mutable","name":"_version","nodeType":"VariableDeclaration","scope":18619,"src":"1552:22:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18598,"name":"string","nodeType":"ElementaryTypeName","src":"1552:6:114","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1537:38:114"},"returnParameters":{"id":18602,"nodeType":"ParameterList","parameters":[],"src":"1594:0:114"},"scope":18679,"src":"1518:190:114","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18628,"nodeType":"Block","src":"1778:49:114","statements":[{"expression":{"id":18626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18624,"name":"_checkpointStep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18581,"src":"1788:15:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18625,"name":"checkpointStep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18621,"src":"1806:14:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1788:32:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18627,"nodeType":"ExpressionStatement","src":"1788:32:114"}]},"functionSelector":"554fc806","id":18629,"implemented":true,"kind":"function","modifiers":[],"name":"setMockCheckpointStep","nodeType":"FunctionDefinition","parameters":{"id":18622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18621,"mutability":"mutable","name":"checkpointStep","nodeType":"VariableDeclaration","scope":18629,"src":"1745:22:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18620,"name":"uint256","nodeType":"ElementaryTypeName","src":"1745:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1744:24:114"},"returnParameters":{"id":18623,"nodeType":"ParameterList","parameters":[],"src":"1778:0:114"},"scope":18679,"src":"1714:113:114","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18638,"nodeType":"Block","src":"1899:35:114","statements":[{"expression":{"id":18636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18634,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18576,"src":"1909:7:114","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18635,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18631,"src":"1919:8:114","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"src":"1909:18:114","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"id":18637,"nodeType":"ExpressionStatement","src":"1909:18:114"}]},"functionSelector":"83d9ddb0","id":18639,"implemented":true,"kind":"function","modifiers":[],"name":"setMockFactory","nodeType":"FunctionDefinition","parameters":{"id":18632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18631,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":18639,"src":"1857:31:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"},"typeName":{"id":18630,"name":"ILiquidityGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":941,"src":"1857:22:114","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGaugeFactory_$941","typeString":"contract ILiquidityGaugeFactory"}},"visibility":"internal"}],"src":"1856:33:114"},"returnParameters":{"id":18633,"nodeType":"ParameterList","parameters":[],"src":"1899:0:114"},"scope":18679,"src":"1833:101:114","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[349],"body":{"id":18651,"nodeType":"Block","src":"2023:48:114","statements":[{"expression":{"baseExpression":{"id":18647,"name":"_integrateFraction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18585,"src":"2040:18:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":18649,"indexExpression":{"id":18648,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18641,"src":"2059:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2040:24:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18646,"id":18650,"nodeType":"Return","src":"2033:31:114"}]},"functionSelector":"09400707","id":18652,"implemented":true,"kind":"function","modifiers":[],"name":"integrate_fraction","nodeType":"FunctionDefinition","overrides":{"id":18643,"nodeType":"OverrideSpecifier","overrides":[],"src":"1996:8:114"},"parameters":{"id":18642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18641,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18652,"src":"1968:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18640,"name":"address","nodeType":"ElementaryTypeName","src":"1968:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1967:14:114"},"returnParameters":{"id":18646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18645,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18652,"src":"2014:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18644,"name":"uint256","nodeType":"ElementaryTypeName","src":"2014:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2013:9:114"},"scope":18679,"src":"1940:131:114","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[357],"body":{"id":18677,"nodeType":"Block","src":"2149:145:114","statements":[{"expression":{"id":18669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18660,"name":"_integrateFraction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18585,"src":"2159:18:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":18662,"indexExpression":{"id":18661,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18654,"src":"2178:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2159:24:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":18667,"name":"_checkpointStep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18581,"src":"2215:15:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":18663,"name":"_integrateFraction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18585,"src":"2186:18:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":18665,"indexExpression":{"id":18664,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18654,"src":"2205:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2186:24:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7372,"src":"2186:28:114","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2186:45:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2159:72:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18670,"nodeType":"ExpressionStatement","src":"2159:72:114"},{"eventCall":{"arguments":[{"id":18672,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18654,"src":"2261:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18671,"name":"UserCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18568,"src":"2246:14:114","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":18673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2246:20:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18674,"nodeType":"EmitStatement","src":"2241:25:114"},{"expression":{"hexValue":"74727565","id":18675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2283:4:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":18659,"id":18676,"nodeType":"Return","src":"2276:11:114"}]},"functionSelector":"4b820093","id":18678,"implemented":true,"kind":"function","modifiers":[],"name":"user_checkpoint","nodeType":"FunctionDefinition","overrides":{"id":18656,"nodeType":"OverrideSpecifier","overrides":[],"src":"2125:8:114"},"parameters":{"id":18655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18654,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18678,"src":"2102:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18653,"name":"address","nodeType":"ElementaryTypeName","src":"2102:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2101:14:114"},"returnParameters":{"id":18659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18658,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18678,"src":"2143:4:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18657,"name":"bool","nodeType":"ElementaryTypeName","src":"2143:4:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2142:6:114"},"scope":18679,"src":"2077:217:114","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18680,"src":"1044:1252:114"}],"src":"688:1609:114"},"id":114},"contracts/test/MockGaugeController.sol":{"ast":{"absolutePath":"contracts/test/MockGaugeController.sol","exportedSymbols":{"MockGaugeController":[18919]},"id":18920,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18681,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:115"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","id":18682,"nodeType":"ImportDirective","scope":18920,"sourceUnit":822,"src":"713:86:115","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18683,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":821,"src":"1011:16:115","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$821","typeString":"contract IGaugeController"}},"id":18684,"nodeType":"InheritanceSpecifier","src":"1011:16:115"}],"contractDependencies":[821],"contractKind":"contract","fullyImplemented":true,"id":18919,"linearizedBaseContracts":[18919,821],"name":"MockGaugeController","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":18686,"mutability":"mutable","name":"_numGaugeTypes","nodeType":"VariableDeclaration","scope":18919,"src":"1034:29:115","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":18685,"name":"int128","nodeType":"ElementaryTypeName","src":"1034:6:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"private"},{"constant":false,"id":18690,"mutability":"mutable","name":"_validGauge","nodeType":"VariableDeclaration","scope":18919,"src":"1069:44:115","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":18689,"keyType":{"id":18687,"name":"address","nodeType":"ElementaryTypeName","src":"1077:7:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1069:24:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":18688,"name":"bool","nodeType":"ElementaryTypeName","src":"1088:4:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"constant":false,"id":18694,"mutability":"mutable","name":"_gaugeType","nodeType":"VariableDeclaration","scope":18919,"src":"1119:45:115","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_int128_$","typeString":"mapping(address => int128)"},"typeName":{"id":18693,"keyType":{"id":18691,"name":"address","nodeType":"ElementaryTypeName","src":"1127:7:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1119:26:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_int128_$","typeString":"mapping(address => int128)"},"valueType":{"id":18692,"name":"int128","nodeType":"ElementaryTypeName","src":"1138:6:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}},"visibility":"private"},{"constant":false,"id":18698,"mutability":"mutable","name":"_weights","nodeType":"VariableDeclaration","scope":18919,"src":"1170:44:115","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":18697,"keyType":{"id":18695,"name":"address","nodeType":"ElementaryTypeName","src":"1178:7:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1170:27:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":18696,"name":"uint256","nodeType":"ElementaryTypeName","src":"1189:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":18700,"mutability":"mutable","name":"_gaugeWeightBias","nodeType":"VariableDeclaration","scope":18919,"src":"1220:32:115","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18699,"name":"uint256","nodeType":"ElementaryTypeName","src":"1220:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"baseFunctions":[806],"constant":false,"functionSelector":"f851a440","id":18703,"mutability":"mutable","name":"admin","nodeType":"VariableDeclaration","overrides":{"id":18702,"nodeType":"OverrideSpecifier","overrides":[],"src":"1285:8:115"},"scope":18919,"src":"1259:40:115","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":18701,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1259:18:115","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"public"},{"baseFunctions":[763],"constant":false,"functionSelector":"dfe05031","id":18706,"mutability":"mutable","name":"voting_escrow","nodeType":"VariableDeclaration","overrides":{"id":18705,"nodeType":"OverrideSpecifier","overrides":[],"src":"1378:8:115"},"scope":18919,"src":"1357:43:115","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":18704,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"1357:13:115","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"public"},{"anonymous":false,"id":18714,"name":"NewGauge","nodeType":"EventDefinition","parameters":{"id":18713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18708,"indexed":false,"mutability":"mutable","name":"addr","nodeType":"VariableDeclaration","scope":18714,"src":"1501:12:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18707,"name":"address","nodeType":"ElementaryTypeName","src":"1501:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18710,"indexed":false,"mutability":"mutable","name":"gauge_type","nodeType":"VariableDeclaration","scope":18714,"src":"1515:17:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":18709,"name":"int128","nodeType":"ElementaryTypeName","src":"1515:6:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":18712,"indexed":false,"mutability":"mutable","name":"weight","nodeType":"VariableDeclaration","scope":18714,"src":"1534:14:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18711,"name":"uint256","nodeType":"ElementaryTypeName","src":"1534:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1500:49:115"},"src":"1486:64:115"},{"body":{"id":18729,"nodeType":"Block","src":"1634:80:115","statements":[{"expression":{"id":18723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18721,"name":"voting_escrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18706,"src":"1644:13:115","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18722,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18716,"src":"1660:12:115","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"src":"1644:28:115","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"id":18724,"nodeType":"ExpressionStatement","src":"1644:28:115"},{"expression":{"id":18727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18725,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18703,"src":"1682:5:115","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18726,"name":"authorizerAdaptor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18718,"src":"1690:17:115","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"src":"1682:25:115","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"id":18728,"nodeType":"ExpressionStatement","src":"1682:25:115"}]},"id":18730,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18716,"mutability":"mutable","name":"votingEscrow","nodeType":"VariableDeclaration","scope":18730,"src":"1568:26:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":18715,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"1568:13:115","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"},{"constant":false,"id":18718,"mutability":"mutable","name":"authorizerAdaptor","nodeType":"VariableDeclaration","scope":18730,"src":"1596:36:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":18717,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":49,"src":"1596:18:115","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$49","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"1567:66:115"},"returnParameters":{"id":18720,"nodeType":"ParameterList","parameters":[],"src":"1634:0:115"},"scope":18919,"src":"1556:158:115","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[794],"body":{"id":18738,"nodeType":"Block","src":"1785:38:115","statements":[{"expression":{"id":18736,"name":"_numGaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18686,"src":"1802:14:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"functionReturnParameters":18735,"id":18737,"nodeType":"Return","src":"1795:21:115"}]},"functionSelector":"9fba03a1","id":18739,"implemented":true,"kind":"function","modifiers":[],"name":"n_gauge_types","nodeType":"FunctionDefinition","overrides":{"id":18732,"nodeType":"OverrideSpecifier","overrides":[],"src":"1759:8:115"},"parameters":{"id":18731,"nodeType":"ParameterList","parameters":[],"src":"1742:2:115"},"returnParameters":{"id":18735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18734,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18739,"src":"1777:6:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":18733,"name":"int128","nodeType":"ElementaryTypeName","src":"1777:6:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1776:8:115"},"scope":18919,"src":"1720:103:115","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[801],"body":{"id":18758,"nodeType":"Block","src":"1905:115:115","statements":[{"expression":{"arguments":[{"baseExpression":{"id":18748,"name":"_validGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18690,"src":"1923:11:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":18750,"indexExpression":{"id":18749,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18741,"src":"1935:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1923:18:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520646f65736e2774206578697374206f6e20636f6e74726f6c6c6572","id":18751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1943:35:115","typeDescriptions":{"typeIdentifier":"t_stringliteral_5f98f0056a2a2d36597d519e41a523d365a021c79810a9edf58e600e7fd69ca4","typeString":"literal_string \"Gauge doesn't exist on controller\""},"value":"Gauge doesn't exist on controller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5f98f0056a2a2d36597d519e41a523d365a021c79810a9edf58e600e7fd69ca4","typeString":"literal_string \"Gauge doesn't exist on controller\""}],"id":18747,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1915:7:115","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":18752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1915:64:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18753,"nodeType":"ExpressionStatement","src":"1915:64:115"},{"expression":{"baseExpression":{"id":18754,"name":"_gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18694,"src":"1996:10:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_int128_$","typeString":"mapping(address => int128)"}},"id":18756,"indexExpression":{"id":18755,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18741,"src":"2007:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1996:17:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"functionReturnParameters":18746,"id":18757,"nodeType":"Return","src":"1989:24:115"}]},"functionSelector":"3f9095b7","id":18759,"implemented":true,"kind":"function","modifiers":[],"name":"gauge_types","nodeType":"FunctionDefinition","overrides":{"id":18743,"nodeType":"OverrideSpecifier","overrides":[],"src":"1879:8:115"},"parameters":{"id":18742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18741,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18759,"src":"1850:13:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18740,"name":"address","nodeType":"ElementaryTypeName","src":"1850:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1849:15:115"},"returnParameters":{"id":18746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18745,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18759,"src":"1897:6:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":18744,"name":"int128","nodeType":"ElementaryTypeName","src":"1897:6:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1896:8:115"},"scope":18919,"src":"1829:191:115","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[789],"body":{"id":18798,"nodeType":"Block","src":"2096:247:115","statements":[{"expression":{"arguments":[{"id":18771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2114:19:115","subExpression":{"baseExpression":{"id":18768,"name":"_validGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18690,"src":"2115:11:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":18770,"indexExpression":{"id":18769,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18761,"src":"2127:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2115:18:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520616c726561647920657869737473206f6e20636f6e74726f6c6c6572","id":18772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2135:36:115","typeDescriptions":{"typeIdentifier":"t_stringliteral_5c13c9fbfc091c81e4c335ae6e8019c9f881cfa5f4d6c852d65a3b51304c1acc","typeString":"literal_string \"Gauge already exists on controller\""},"value":"Gauge already exists on controller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5c13c9fbfc091c81e4c335ae6e8019c9f881cfa5f4d6c852d65a3b51304c1acc","typeString":"literal_string \"Gauge already exists on controller\""}],"id":18767,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2106:7:115","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":18773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2106:66:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18774,"nodeType":"ExpressionStatement","src":"2106:66:115"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":18782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":18778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18776,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18763,"src":"2190:9:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":18777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2203:1:115","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2190:14:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":18781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18779,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18763,"src":"2208:9:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":18780,"name":"_numGaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18686,"src":"2220:14:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"2208:26:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2190:44:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c69642067617567652074797065","id":18783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2236:20:115","typeDescriptions":{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""},"value":"Invalid gauge type"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7caf3c99505b1adcab00d79de51bcb4a4a77a851c4653aa92fd723940fb541bd","typeString":"literal_string \"Invalid gauge type\""}],"id":18775,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2182:7:115","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":18784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2182:75:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18785,"nodeType":"ExpressionStatement","src":"2182:75:115"},{"expression":{"id":18790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18786,"name":"_validGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18690,"src":"2267:11:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":18788,"indexExpression":{"id":18787,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18761,"src":"2279:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2267:18:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":18789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2288:4:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2267:25:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18791,"nodeType":"ExpressionStatement","src":"2267:25:115"},{"eventCall":{"arguments":[{"id":18793,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18761,"src":"2316:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18794,"name":"gaugeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18763,"src":"2323:9:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"hexValue":"30","id":18795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2334:1:115","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":18792,"name":"NewGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18714,"src":"2307:8:115","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_int128_$_t_uint256_$returns$__$","typeString":"function (address,int128,uint256)"}},"id":18796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2307:29:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18797,"nodeType":"EmitStatement","src":"2302:34:115"}]},"functionSelector":"3a04f900","id":18799,"implemented":true,"kind":"function","modifiers":[],"name":"add_gauge","nodeType":"FunctionDefinition","overrides":{"id":18765,"nodeType":"OverrideSpecifier","overrides":[],"src":"2087:8:115"},"parameters":{"id":18764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18761,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18799,"src":"2045:13:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18760,"name":"address","nodeType":"ElementaryTypeName","src":"2045:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18763,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":18799,"src":"2060:16:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":18762,"name":"int128","nodeType":"ElementaryTypeName","src":"2060:6:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"2044:33:115"},"returnParameters":{"id":18766,"nodeType":"ParameterList","parameters":[],"src":"2096:0:115"},"scope":18919,"src":"2026:317:115","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[775],"body":{"id":18811,"nodeType":"Block","src":"2411:36:115","statements":[{"expression":{"id":18809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18807,"name":"_numGaugeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18686,"src":"2421:14:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":18808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2439:1:115","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2421:19:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":18810,"nodeType":"ExpressionStatement","src":"2421:19:115"}]},"functionSelector":"92d0d232","id":18812,"implemented":true,"kind":"function","modifiers":[],"name":"add_type","nodeType":"FunctionDefinition","overrides":{"id":18805,"nodeType":"OverrideSpecifier","overrides":[],"src":"2402:8:115"},"parameters":{"id":18804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18801,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18812,"src":"2367:15:115","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":18800,"name":"string","nodeType":"ElementaryTypeName","src":"2367:6:115","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18803,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18812,"src":"2384:7:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18802,"name":"uint256","nodeType":"ElementaryTypeName","src":"2384:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2366:26:115"},"returnParameters":{"id":18806,"nodeType":"ParameterList","parameters":[],"src":"2411:0:115"},"scope":18919,"src":"2349:98:115","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[768],"body":{"id":18822,"nodeType":"Block","src":"2510:33:115","statements":[{"expression":{"arguments":[{"hexValue":"30","id":18819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2534:1:115","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":18818,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2447,"src":"2527:6:115","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2447_$","typeString":"type(contract IERC20)"}},"id":18820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2527:9:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"functionReturnParameters":18817,"id":18821,"nodeType":"Return","src":"2520:16:115"}]},"functionSelector":"fc0c546a","id":18823,"implemented":true,"kind":"function","modifiers":[],"name":"token","nodeType":"FunctionDefinition","overrides":{"id":18814,"nodeType":"OverrideSpecifier","overrides":[],"src":"2484:8:115"},"parameters":{"id":18813,"nodeType":"ParameterList","parameters":[],"src":"2467:2:115"},"returnParameters":{"id":18817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18816,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18823,"src":"2502:6:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":18815,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2502:6:115","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2501:8:115"},"scope":18919,"src":"2453:90:115","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[749],"body":{"id":18829,"nodeType":"Block","src":"2602:64:115","statements":[]},"functionSelector":"615e5237","id":18830,"implemented":true,"kind":"function","modifiers":[],"name":"checkpoint_gauge","nodeType":"FunctionDefinition","overrides":{"id":18827,"nodeType":"OverrideSpecifier","overrides":[],"src":"2593:8:115"},"parameters":{"id":18826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18825,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18830,"src":"2575:7:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18824,"name":"address","nodeType":"ElementaryTypeName","src":"2575:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2574:9:115"},"returnParameters":{"id":18828,"nodeType":"ParameterList","parameters":[],"src":"2602:0:115"},"scope":18919,"src":"2549:117:115","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[758],"body":{"id":18846,"nodeType":"Block","src":"2768:58:115","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":18840,"name":"_weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18698,"src":"2785:8:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":18842,"indexExpression":{"id":18841,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18832,"src":"2794:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2785:15:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":18843,"name":"_gaugeWeightBias","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18700,"src":"2803:16:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2785:34:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18839,"id":18845,"nodeType":"Return","src":"2778:41:115"}]},"functionSelector":"d3078c94","id":18847,"implemented":true,"kind":"function","modifiers":[],"name":"gauge_relative_weight","nodeType":"FunctionDefinition","overrides":{"id":18836,"nodeType":"OverrideSpecifier","overrides":[],"src":"2741:8:115"},"parameters":{"id":18835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18832,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18847,"src":"2703:13:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18831,"name":"address","nodeType":"ElementaryTypeName","src":"2703:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18834,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18847,"src":"2718:7:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18833,"name":"uint256","nodeType":"ElementaryTypeName","src":"2718:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2702:24:115"},"returnParameters":{"id":18839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18838,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18847,"src":"2759:7:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18837,"name":"uint256","nodeType":"ElementaryTypeName","src":"2759:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2758:9:115"},"scope":18919,"src":"2672:154:115","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[782],"body":{"id":18855,"nodeType":"Block","src":"2895:64:115","statements":[]},"functionSelector":"db1ca260","id":18856,"implemented":true,"kind":"function","modifiers":[],"name":"change_type_weight","nodeType":"FunctionDefinition","overrides":{"id":18853,"nodeType":"OverrideSpecifier","overrides":[],"src":"2886:8:115"},"parameters":{"id":18852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18849,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18856,"src":"2860:6:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":18848,"name":"int128","nodeType":"ElementaryTypeName","src":"2860:6:115","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":18851,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18856,"src":"2868:7:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18850,"name":"uint256","nodeType":"ElementaryTypeName","src":"2868:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2859:17:115"},"returnParameters":{"id":18854,"nodeType":"ParameterList","parameters":[],"src":"2895:0:115"},"scope":18919,"src":"2832:127:115","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[813],"body":{"id":18868,"nodeType":"Block","src":"3040:42:115","statements":[{"expression":{"baseExpression":{"id":18864,"name":"_validGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18690,"src":"3057:11:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":18866,"indexExpression":{"id":18865,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18858,"src":"3069:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3057:18:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":18863,"id":18867,"nodeType":"Return","src":"3050:25:115"}]},"functionSelector":"61df1bf9","id":18869,"implemented":true,"kind":"function","modifiers":[],"name":"gauge_exists","nodeType":"FunctionDefinition","overrides":{"id":18860,"nodeType":"OverrideSpecifier","overrides":[],"src":"3016:8:115"},"parameters":{"id":18859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18858,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18869,"src":"2987:13:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18857,"name":"address","nodeType":"ElementaryTypeName","src":"2987:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2986:15:115"},"returnParameters":{"id":18863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18862,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18869,"src":"3034:4:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18861,"name":"bool","nodeType":"ElementaryTypeName","src":"3034:4:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3033:6:115"},"scope":18919,"src":"2965:117:115","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18889,"nodeType":"Block","src":"3152:116:115","statements":[{"expression":{"arguments":[{"baseExpression":{"id":18877,"name":"_validGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18690,"src":"3170:11:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":18879,"indexExpression":{"id":18878,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18871,"src":"3182:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3170:18:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476175676520646f6573206e6f74206578697374206f6e20636f6e74726f6c6c6572","id":18880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3190:36:115","typeDescriptions":{"typeIdentifier":"t_stringliteral_10ed277e0923dd8ee0600a0c78a0728c0a9bfe8bf9a7a37d50adf19e09000ff1","typeString":"literal_string \"Gauge does not exist on controller\""},"value":"Gauge does not exist on controller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_10ed277e0923dd8ee0600a0c78a0728c0a9bfe8bf9a7a37d50adf19e09000ff1","typeString":"literal_string \"Gauge does not exist on controller\""}],"id":18876,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3162:7:115","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":18881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3162:65:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18882,"nodeType":"ExpressionStatement","src":"3162:65:115"},{"expression":{"id":18887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18883,"name":"_weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18698,"src":"3237:8:115","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":18885,"indexExpression":{"id":18884,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18871,"src":"3246:5:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3237:15:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18886,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18873,"src":"3255:6:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3237:24:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18888,"nodeType":"ExpressionStatement","src":"3237:24:115"}]},"functionSelector":"8d57bba4","id":18890,"implemented":true,"kind":"function","modifiers":[],"name":"setGaugeWeight","nodeType":"FunctionDefinition","parameters":{"id":18874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18871,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":18890,"src":"3112:13:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18870,"name":"address","nodeType":"ElementaryTypeName","src":"3112:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18873,"mutability":"mutable","name":"weight","nodeType":"VariableDeclaration","scope":18890,"src":"3127:14:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18872,"name":"uint256","nodeType":"ElementaryTypeName","src":"3127:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3111:31:115"},"returnParameters":{"id":18875,"nodeType":"ParameterList","parameters":[],"src":"3152:0:115"},"scope":18919,"src":"3088:180:115","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18906,"nodeType":"Block","src":"3325:88:115","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18896,"name":"bias","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"3343:4:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31653138","id":18897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3351:4:115","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"3343:12:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4269617320746f6f2068696768","id":18899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3357:15:115","typeDescriptions":{"typeIdentifier":"t_stringliteral_9e37896e7c30bb7b7cb21a03a66c759359a490a0b69523dbb894e4207a9ea147","typeString":"literal_string \"Bias too high\""},"value":"Bias too high"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9e37896e7c30bb7b7cb21a03a66c759359a490a0b69523dbb894e4207a9ea147","typeString":"literal_string \"Bias too high\""}],"id":18895,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3335:7:115","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":18900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3335:38:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18901,"nodeType":"ExpressionStatement","src":"3335:38:115"},{"expression":{"id":18904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18902,"name":"_gaugeWeightBias","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18700,"src":"3383:16:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18903,"name":"bias","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"3402:4:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3383:23:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18905,"nodeType":"ExpressionStatement","src":"3383:23:115"}]},"functionSelector":"72a5d062","id":18907,"implemented":true,"kind":"function","modifiers":[],"name":"setGaugeWeightBias","nodeType":"FunctionDefinition","parameters":{"id":18893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18892,"mutability":"mutable","name":"bias","nodeType":"VariableDeclaration","scope":18907,"src":"3302:12:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18891,"name":"uint256","nodeType":"ElementaryTypeName","src":"3302:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3301:14:115"},"returnParameters":{"id":18894,"nodeType":"ParameterList","parameters":[],"src":"3325:0:115"},"scope":18919,"src":"3274:139:115","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[820],"body":{"id":18917,"nodeType":"Block","src":"3490:25:115","statements":[{"expression":{"hexValue":"30","id":18915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3507:1:115","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":18914,"id":18916,"nodeType":"Return","src":"3500:8:115"}]},"functionSelector":"a4d7a250","id":18918,"implemented":true,"kind":"function","modifiers":[],"name":"time_weight","nodeType":"FunctionDefinition","overrides":{"id":18911,"nodeType":"OverrideSpecifier","overrides":[],"src":"3463:8:115"},"parameters":{"id":18910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18909,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18918,"src":"3440:7:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18908,"name":"address","nodeType":"ElementaryTypeName","src":"3440:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3439:9:115"},"returnParameters":{"id":18914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18913,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18918,"src":"3481:7:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18912,"name":"uint256","nodeType":"ElementaryTypeName","src":"3481:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3480:9:115"},"scope":18919,"src":"3419:96:115","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":18920,"src":"979:2538:115"}],"src":"688:2830:115"},"id":115},"contracts/test/MockL2LayerZeroDelegation.sol":{"ast":{"absolutePath":"contracts/test/MockL2LayerZeroDelegation.sol","exportedSymbols":{"MockL2LayerZeroDelegation":[18950]},"id":18951,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18921,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:116"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol","id":18922,"nodeType":"ImportDirective","scope":18951,"sourceUnit":855,"src":"713:92:116","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18923,"name":"IL2LayerZeroDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":854,"src":"845:22:116","typeDescriptions":{"typeIdentifier":"t_contract$_IL2LayerZeroDelegation_$854","typeString":"contract IL2LayerZeroDelegation"}},"id":18924,"nodeType":"InheritanceSpecifier","src":"845:22:116"}],"contractDependencies":[854],"contractKind":"contract","fullyImplemented":true,"id":18950,"linearizedBaseContracts":[18950,854],"name":"MockL2LayerZeroDelegation","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":18928,"name":"OnVeBalBridged","nodeType":"EventDefinition","parameters":{"id":18927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18926,"indexed":false,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18928,"src":"895:12:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18925,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:116","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"894:14:116"},"src":"874:35:116"},{"anonymous":false,"id":18930,"name":"OnVeBalSupplyUpdate","nodeType":"EventDefinition","parameters":{"id":18929,"nodeType":"ParameterList","parameters":[],"src":"939:2:116"},"src":"914:28:116"},{"baseFunctions":[849],"body":{"id":18940,"nodeType":"Block","src":"1004:42:116","statements":[{"eventCall":{"arguments":[{"id":18937,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18932,"src":"1034:4:116","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18936,"name":"OnVeBalBridged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18928,"src":"1019:14:116","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":18938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1019:20:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18939,"nodeType":"EmitStatement","src":"1014:25:116"}]},"functionSelector":"df130bfe","id":18941,"implemented":true,"kind":"function","modifiers":[],"name":"onVeBalBridged","nodeType":"FunctionDefinition","overrides":{"id":18934,"nodeType":"OverrideSpecifier","overrides":[],"src":"995:8:116"},"parameters":{"id":18933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18932,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":18941,"src":"972:12:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18931,"name":"address","nodeType":"ElementaryTypeName","src":"972:7:116","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"971:14:116"},"returnParameters":{"id":18935,"nodeType":"ParameterList","parameters":[],"src":"1004:0:116"},"scope":18950,"src":"948:98:116","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[853],"body":{"id":18948,"nodeType":"Block","src":"1101:43:116","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":18945,"name":"OnVeBalSupplyUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18930,"src":"1116:19:116","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":18946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1116:21:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18947,"nodeType":"EmitStatement","src":"1111:26:116"}]},"functionSelector":"96345fb5","id":18949,"implemented":true,"kind":"function","modifiers":[],"name":"onVeBalSupplyUpdate","nodeType":"FunctionDefinition","overrides":{"id":18943,"nodeType":"OverrideSpecifier","overrides":[],"src":"1092:8:116"},"parameters":{"id":18942,"nodeType":"ParameterList","parameters":[],"src":"1080:2:116"},"returnParameters":{"id":18944,"nodeType":"ParameterList","parameters":[],"src":"1101:0:116"},"scope":18950,"src":"1052:92:116","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18951,"src":"807:339:116"}],"src":"688:459:116"},"id":116},"contracts/test/MockLiquidityGauge.sol":{"ast":{"absolutePath":"contracts/test/MockLiquidityGauge.sol","exportedSymbols":{"MockLiquidityGauge":[19071]},"id":19072,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18952,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:117"},{"id":18953,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:117"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","id":18954,"nodeType":"ImportDirective","scope":19072,"sourceUnit":929,"src":"747:85:117","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":18955,"nodeType":"ImportDirective","scope":19072,"sourceUnit":2249,"src":"833:90:117","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18956,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":928,"src":"995:15:117","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$928","typeString":"contract ILiquidityGauge"}},"id":18957,"nodeType":"InheritanceSpecifier","src":"995:15:117"}],"contractDependencies":[928],"contractKind":"contract","fullyImplemented":true,"id":19071,"linearizedBaseContracts":[19071,928],"name":"MockLiquidityGauge","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"82c63066","id":18959,"mutability":"mutable","name":"lp_token","nodeType":"VariableDeclaration","scope":19071,"src":"1069:23:117","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18958,"name":"address","nodeType":"ElementaryTypeName","src":"1069:7:117","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"id":18961,"mutability":"mutable","name":"_isKilled","nodeType":"VariableDeclaration","scope":19071,"src":"1098:22:117","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18960,"name":"bool","nodeType":"ElementaryTypeName","src":"1098:4:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"body":{"id":18964,"nodeType":"Block","src":"1141:64:117","statements":[]},"id":18965,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18962,"nodeType":"ParameterList","parameters":[],"src":"1138:2:117"},"returnParameters":{"id":18963,"nodeType":"ParameterList","parameters":[],"src":"1141:0:117"},"scope":19071,"src":"1127:78:117","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18976,"nodeType":"Block","src":"1263:32:117","statements":[{"expression":{"id":18974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18972,"name":"lp_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18959,"src":"1273:8:117","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18973,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18967,"src":"1284:4:117","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1273:15:117","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18975,"nodeType":"ExpressionStatement","src":"1273:15:117"}]},"functionSelector":"cd6dc687","id":18977,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":18970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18967,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":18977,"src":"1231:12:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18966,"name":"address","nodeType":"ElementaryTypeName","src":"1231:7:117","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18969,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18977,"src":"1245:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18968,"name":"uint256","nodeType":"ElementaryTypeName","src":"1245:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1230:23:117"},"returnParameters":{"id":18971,"nodeType":"ParameterList","parameters":[],"src":"1263:0:117"},"scope":19071,"src":"1211:84:117","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[899],"body":{"id":18985,"nodeType":"Block","src":"1360:33:117","statements":[{"expression":{"id":18983,"name":"_isKilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18961,"src":"1377:9:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":18982,"id":18984,"nodeType":"Return","src":"1370:16:117"}]},"functionSelector":"9c868ac0","id":18986,"implemented":true,"kind":"function","modifiers":[],"name":"is_killed","nodeType":"FunctionDefinition","overrides":{"id":18979,"nodeType":"OverrideSpecifier","overrides":[],"src":"1336:8:117"},"parameters":{"id":18978,"nodeType":"ParameterList","parameters":[],"src":"1319:2:117"},"returnParameters":{"id":18982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18981,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18986,"src":"1354:4:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18980,"name":"bool","nodeType":"ElementaryTypeName","src":"1354:4:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1353:6:117"},"scope":19071,"src":"1301:92:117","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[903],"body":{"id":18994,"nodeType":"Block","src":"1438:33:117","statements":[{"expression":{"id":18992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18990,"name":"_isKilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18961,"src":"1448:9:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":18991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1460:4:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1448:16:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18993,"nodeType":"ExpressionStatement","src":"1448:16:117"}]},"functionSelector":"ab8f0945","id":18995,"implemented":true,"kind":"function","modifiers":[],"name":"killGauge","nodeType":"FunctionDefinition","overrides":{"id":18988,"nodeType":"OverrideSpecifier","overrides":[],"src":"1429:8:117"},"parameters":{"id":18987,"nodeType":"ParameterList","parameters":[],"src":"1417:2:117"},"returnParameters":{"id":18989,"nodeType":"ParameterList","parameters":[],"src":"1438:0:117"},"scope":19071,"src":"1399:72:117","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[907],"body":{"id":19003,"nodeType":"Block","src":"1518:34:117","statements":[{"expression":{"id":19001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18999,"name":"_isKilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18961,"src":"1528:9:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":19000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1540:5:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"1528:17:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19002,"nodeType":"ExpressionStatement","src":"1528:17:117"}]},"functionSelector":"d34fb267","id":19004,"implemented":true,"kind":"function","modifiers":[],"name":"unkillGauge","nodeType":"FunctionDefinition","overrides":{"id":18997,"nodeType":"OverrideSpecifier","overrides":[],"src":"1509:8:117"},"parameters":{"id":18996,"nodeType":"ParameterList","parameters":[],"src":"1497:2:117"},"returnParameters":{"id":18998,"nodeType":"ParameterList","parameters":[],"src":"1518:0:117"},"scope":19071,"src":"1477:75:117","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[885],"body":{"id":19017,"nodeType":"Block","src":"1803:46:117","statements":[{"expression":{"arguments":[{"expression":{"id":19013,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1821:6:117","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":19014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"1821:20:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19012,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"1813:7:117","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":19015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1813:29:117","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19016,"nodeType":"ExpressionStatement","src":"1813:29:117"}]},"functionSelector":"09400707","id":19018,"implemented":true,"kind":"function","modifiers":[],"name":"integrate_fraction","nodeType":"FunctionDefinition","overrides":{"id":19008,"nodeType":"OverrideSpecifier","overrides":[],"src":"1776:8:117"},"parameters":{"id":19007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19006,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19018,"src":"1753:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19005,"name":"address","nodeType":"ElementaryTypeName","src":"1753:7:117","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1752:9:117"},"returnParameters":{"id":19011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19010,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19018,"src":"1794:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19009,"name":"uint256","nodeType":"ElementaryTypeName","src":"1794:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1793:9:117"},"scope":19071,"src":"1725:124:117","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[893],"body":{"id":19031,"nodeType":"Block","src":"1927:46:117","statements":[{"expression":{"arguments":[{"expression":{"id":19027,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"1945:6:117","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":19028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"1945:20:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19026,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"1937:7:117","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":19029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1937:29:117","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19030,"nodeType":"ExpressionStatement","src":"1937:29:117"}]},"functionSelector":"4b820093","id":19032,"implemented":true,"kind":"function","modifiers":[],"name":"user_checkpoint","nodeType":"FunctionDefinition","overrides":{"id":19022,"nodeType":"OverrideSpecifier","overrides":[],"src":"1903:8:117"},"parameters":{"id":19021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19020,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19032,"src":"1880:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19019,"name":"address","nodeType":"ElementaryTypeName","src":"1880:7:117","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1879:9:117"},"returnParameters":{"id":19025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19024,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19032,"src":"1921:4:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19023,"name":"bool","nodeType":"ElementaryTypeName","src":"1921:4:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1920:6:117"},"scope":19071,"src":"1855:118:117","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[913],"body":{"id":19043,"nodeType":"Block","src":"2041:46:117","statements":[{"expression":{"arguments":[{"expression":{"id":19039,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2059:6:117","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":19040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"2059:20:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19038,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"2051:7:117","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":19041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2051:29:117","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19042,"nodeType":"ExpressionStatement","src":"2051:29:117"}]},"functionSelector":"10d3eb04","id":19044,"implemented":true,"kind":"function","modifiers":[],"name":"setRelativeWeightCap","nodeType":"FunctionDefinition","overrides":{"id":19036,"nodeType":"OverrideSpecifier","overrides":[],"src":"2032:8:117"},"parameters":{"id":19035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19034,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19044,"src":"2009:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19033,"name":"uint256","nodeType":"ElementaryTypeName","src":"2009:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2008:9:117"},"returnParameters":{"id":19037,"nodeType":"ParameterList","parameters":[],"src":"2041:0:117"},"scope":19071,"src":"1979:108:117","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[919],"body":{"id":19055,"nodeType":"Block","src":"2166:46:117","statements":[{"expression":{"arguments":[{"expression":{"id":19051,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2184:6:117","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":19052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"2184:20:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19050,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"2176:7:117","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":19053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2176:29:117","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19054,"nodeType":"ExpressionStatement","src":"2176:29:117"}]},"functionSelector":"83f5c39b","id":19056,"implemented":true,"kind":"function","modifiers":[],"name":"getRelativeWeightCap","nodeType":"FunctionDefinition","overrides":{"id":19046,"nodeType":"OverrideSpecifier","overrides":[],"src":"2139:8:117"},"parameters":{"id":19045,"nodeType":"ParameterList","parameters":[],"src":"2122:2:117"},"returnParameters":{"id":19049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19048,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19056,"src":"2157:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19047,"name":"uint256","nodeType":"ElementaryTypeName","src":"2157:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2156:9:117"},"scope":19071,"src":"2093:119:117","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[927],"body":{"id":19069,"nodeType":"Block","src":"2301:46:117","statements":[{"expression":{"arguments":[{"expression":{"id":19065,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2319:6:117","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$2248_$","typeString":"type(library Errors)"}},"id":19066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"2319:20:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19064,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1723,1743],"referencedDeclaration":1723,"src":"2311:7:117","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":19067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2311:29:117","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19068,"nodeType":"ExpressionStatement","src":"2311:29:117"}]},"functionSelector":"14e956f5","id":19070,"implemented":true,"kind":"function","modifiers":[],"name":"getCappedRelativeWeight","nodeType":"FunctionDefinition","overrides":{"id":19060,"nodeType":"OverrideSpecifier","overrides":[],"src":"2274:8:117"},"parameters":{"id":19059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19058,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19070,"src":"2251:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19057,"name":"uint256","nodeType":"ElementaryTypeName","src":"2251:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2250:9:117"},"returnParameters":{"id":19063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19062,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19070,"src":"2292:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19061,"name":"uint256","nodeType":"ElementaryTypeName","src":"2292:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2291:9:117"},"scope":19071,"src":"2218:129:117","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":19072,"src":"964:1385:117"}],"src":"688:1662:117"},"id":117},"contracts/test/MockLiquidityGaugeFactory.sol":{"ast":{"absolutePath":"contracts/test/MockLiquidityGaugeFactory.sol","exportedSymbols":{"MockLiquidityGaugeFactory":[19116]},"id":19117,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19073,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:118"},{"id":19074,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:118"},{"absolutePath":"contracts/gauges/BaseGaugeFactory.sol","file":"../gauges/BaseGaugeFactory.sol","id":19075,"nodeType":"ImportDirective","scope":19117,"sourceUnit":13897,"src":"747:40:118","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/test/MockLiquidityGauge.sol","file":"./MockLiquidityGauge.sol","id":19076,"nodeType":"ImportDirective","scope":19117,"sourceUnit":19072,"src":"788:34:118","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19077,"name":"BaseGaugeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":13896,"src":"862:16:118","typeDescriptions":{"typeIdentifier":"t_contract$_BaseGaugeFactory_$13896","typeString":"contract BaseGaugeFactory"}},"id":19078,"nodeType":"InheritanceSpecifier","src":"862:16:118"}],"contractDependencies":[941,13896],"contractKind":"contract","fullyImplemented":true,"id":19116,"linearizedBaseContracts":[19116,13896,941],"name":"MockLiquidityGaugeFactory","nodeType":"ContractDefinition","nodes":[{"body":{"id":19089,"nodeType":"Block","src":"984:64:118","statements":[]},"id":19090,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"id":19085,"name":"gaugeImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19080,"src":"962:19:118","typeDescriptions":{"typeIdentifier":"t_contract$_MockLiquidityGauge_$19071","typeString":"contract MockLiquidityGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockLiquidityGauge_$19071","typeString":"contract MockLiquidityGauge"}],"id":19084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"954:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19083,"name":"address","nodeType":"ElementaryTypeName","src":"954:7:118","typeDescriptions":{}}},"id":19086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"954:28:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":19087,"modifierName":{"id":19082,"name":"BaseGaugeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"937:16:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseGaugeFactory_$13896_$","typeString":"type(contract BaseGaugeFactory)"}},"nodeType":"ModifierInvocation","src":"937:46:118"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19080,"mutability":"mutable","name":"gaugeImplementation","nodeType":"VariableDeclaration","scope":19090,"src":"897:38:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_MockLiquidityGauge_$19071","typeString":"contract MockLiquidityGauge"},"typeName":{"id":19079,"name":"MockLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":19071,"src":"897:18:118","typeDescriptions":{"typeIdentifier":"t_contract$_MockLiquidityGauge_$19071","typeString":"contract MockLiquidityGauge"}},"visibility":"internal"}],"src":"896:40:118"},"returnParameters":{"id":19088,"nodeType":"ParameterList","parameters":[],"src":"984:0:118"},"scope":19116,"src":"885:163:118","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":19114,"nodeType":"Block","src":"1138:137:118","statements":[{"assignments":[19100],"declarations":[{"constant":false,"id":19100,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":19114,"src":"1148:13:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19099,"name":"address","nodeType":"ElementaryTypeName","src":"1148:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":19103,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":19101,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13895,"src":"1164:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_address_$","typeString":"function () returns (address)"}},"id":19102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1164:9:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1148:25:118"},{"expression":{"arguments":[{"id":19108,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19092,"src":"1221:4:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19109,"name":"relativeWeightCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19094,"src":"1227:17:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":19105,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19100,"src":"1203:5:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19104,"name":"MockLiquidityGauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19071,"src":"1184:18:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MockLiquidityGauge_$19071_$","typeString":"type(contract MockLiquidityGauge)"}},"id":19106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1184:25:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_MockLiquidityGauge_$19071","typeString":"contract MockLiquidityGauge"}},"id":19107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":18977,"src":"1184:36:118","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":19110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1184:61:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19111,"nodeType":"ExpressionStatement","src":"1184:61:118"},{"expression":{"id":19112,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19100,"src":"1263:5:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19098,"id":19113,"nodeType":"Return","src":"1256:12:118"}]},"functionSelector":"0ecaea73","id":19115,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":19095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19092,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":19115,"src":"1070:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19091,"name":"address","nodeType":"ElementaryTypeName","src":"1070:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19094,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":19115,"src":"1084:25:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19093,"name":"uint256","nodeType":"ElementaryTypeName","src":"1084:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1069:41:118"},"returnParameters":{"id":19098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19097,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19115,"src":"1129:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19096,"name":"address","nodeType":"ElementaryTypeName","src":"1129:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1128:9:118"},"scope":19116,"src":"1054:221:118","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":19117,"src":"824:453:118"}],"src":"688:590:118"},"id":118},"contracts/test/MockOmniVotingEscrow.sol":{"ast":{"absolutePath":"contracts/test/MockOmniVotingEscrow.sol","exportedSymbols":{"MockOmniVotingEscrow":[19203]},"id":19204,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19118,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:119"},{"id":19119,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:119"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol","id":19120,"nodeType":"ImportDirective","scope":19204,"sourceUnit":982,"src":"747:87:119","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19121,"name":"IOmniVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":981,"src":"869:17:119","typeDescriptions":{"typeIdentifier":"t_contract$_IOmniVotingEscrow_$981","typeString":"contract IOmniVotingEscrow"}},"id":19122,"nodeType":"InheritanceSpecifier","src":"869:17:119"}],"contractDependencies":[981],"contractKind":"contract","fullyImplemented":true,"id":19203,"linearizedBaseContracts":[19203,981],"name":"MockOmniVotingEscrow","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":19136,"name":"SendUserBalance","nodeType":"EventDefinition","parameters":{"id":19135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19124,"indexed":false,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":19136,"src":"924:12:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19123,"name":"address","nodeType":"ElementaryTypeName","src":"924:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19126,"indexed":false,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":19136,"src":"946:14:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19125,"name":"uint16","nodeType":"ElementaryTypeName","src":"946:6:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19128,"indexed":false,"mutability":"mutable","name":"refundAddress","nodeType":"VariableDeclaration","scope":19136,"src":"970:21:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19127,"name":"address","nodeType":"ElementaryTypeName","src":"970:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19130,"indexed":false,"mutability":"mutable","name":"zroPaymentAddress","nodeType":"VariableDeclaration","scope":19136,"src":"1001:25:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19129,"name":"address","nodeType":"ElementaryTypeName","src":"1001:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19132,"indexed":false,"mutability":"mutable","name":"adapterParams","nodeType":"VariableDeclaration","scope":19136,"src":"1036:19:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19131,"name":"bytes","nodeType":"ElementaryTypeName","src":"1036:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":19134,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":19136,"src":"1065:13:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19133,"name":"uint256","nodeType":"ElementaryTypeName","src":"1065:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"914:170:119"},"src":"893:192:119"},{"constant":false,"id":19140,"mutability":"mutable","name":"_nativeFee","nodeType":"VariableDeclaration","scope":19203,"src":"1122:45:119","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_uint256_$","typeString":"mapping(uint16 => uint256)"},"typeName":{"id":19139,"keyType":{"id":19137,"name":"uint16","nodeType":"ElementaryTypeName","src":"1130:6:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Mapping","src":"1122:26:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_uint256_$","typeString":"mapping(uint16 => uint256)"},"valueType":{"id":19138,"name":"uint256","nodeType":"ElementaryTypeName","src":"1140:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":19142,"mutability":"mutable","name":"_zroFee","nodeType":"VariableDeclaration","scope":19203,"src":"1173:23:119","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19141,"name":"uint256","nodeType":"ElementaryTypeName","src":"1173:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"baseFunctions":[967],"body":{"id":19162,"nodeType":"Block","src":"1371:54:119","statements":[{"expression":{"components":[{"baseExpression":{"id":19156,"name":"_nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19140,"src":"1389:10:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_uint256_$","typeString":"mapping(uint16 => uint256)"}},"id":19158,"indexExpression":{"id":19157,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19144,"src":"1400:7:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1389:19:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19159,"name":"_zroFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19142,"src":"1410:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19160,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1388:30:119","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":19155,"id":19161,"nodeType":"Return","src":"1381:37:119"}]},"functionSelector":"65d092d0","id":19163,"implemented":true,"kind":"function","modifiers":[],"name":"estimateSendUserBalance","nodeType":"FunctionDefinition","overrides":{"id":19150,"nodeType":"OverrideSpecifier","overrides":[],"src":"1318:8:119"},"parameters":{"id":19149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19144,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":19163,"src":"1245:14:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19143,"name":"uint16","nodeType":"ElementaryTypeName","src":"1245:6:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19146,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19163,"src":"1269:4:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19145,"name":"bool","nodeType":"ElementaryTypeName","src":"1269:4:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":19148,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19163,"src":"1283:14:119","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":19147,"name":"bytes","nodeType":"ElementaryTypeName","src":"1283:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1235:68:119"},"returnParameters":{"id":19155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19152,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":19163,"src":"1336:17:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19151,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19154,"mutability":"mutable","name":"zroFee","nodeType":"VariableDeclaration","scope":19163,"src":"1355:14:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19153,"name":"uint256","nodeType":"ElementaryTypeName","src":"1355:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1335:35:119"},"scope":19203,"src":"1203:222:119","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[980],"body":{"id":19187,"nodeType":"Block","src":"1652:120:119","statements":[{"eventCall":{"arguments":[{"id":19178,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19165,"src":"1683:5:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19179,"name":"_dstChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19167,"src":"1690:11:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":19180,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19169,"src":"1703:14:119","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":19181,"name":"_zroPaymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19171,"src":"1719:18:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19182,"name":"_adapterParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19173,"src":"1739:14:119","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":19183,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1755:3:119","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1755:9:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19177,"name":"SendUserBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19136,"src":"1667:15:119","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint16_$_t_address_$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,uint16,address,address,bytes memory,uint256)"}},"id":19185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1667:98:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19186,"nodeType":"EmitStatement","src":"1662:103:119"}]},"functionSelector":"4a759489","id":19188,"implemented":true,"kind":"function","modifiers":[],"name":"sendUserBalance","nodeType":"FunctionDefinition","overrides":{"id":19175,"nodeType":"OverrideSpecifier","overrides":[],"src":"1643:8:119"},"parameters":{"id":19174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19165,"mutability":"mutable","name":"_user","nodeType":"VariableDeclaration","scope":19188,"src":"1465:13:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19164,"name":"address","nodeType":"ElementaryTypeName","src":"1465:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19167,"mutability":"mutable","name":"_dstChainId","nodeType":"VariableDeclaration","scope":19188,"src":"1488:18:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19166,"name":"uint16","nodeType":"ElementaryTypeName","src":"1488:6:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19169,"mutability":"mutable","name":"_refundAddress","nodeType":"VariableDeclaration","scope":19188,"src":"1516:30:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":19168,"name":"address","nodeType":"ElementaryTypeName","src":"1516:15:119","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":19171,"mutability":"mutable","name":"_zroPaymentAddress","nodeType":"VariableDeclaration","scope":19188,"src":"1556:26:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19170,"name":"address","nodeType":"ElementaryTypeName","src":"1556:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19173,"mutability":"mutable","name":"_adapterParams","nodeType":"VariableDeclaration","scope":19188,"src":"1592:27:119","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19172,"name":"bytes","nodeType":"ElementaryTypeName","src":"1592:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1455:170:119"},"returnParameters":{"id":19176,"nodeType":"ParameterList","parameters":[],"src":"1652:0:119"},"scope":19203,"src":"1431:341:119","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":19201,"nodeType":"Block","src":"1844:48:119","statements":[{"expression":{"id":19199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19195,"name":"_nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19140,"src":"1854:10:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_uint256_$","typeString":"mapping(uint16 => uint256)"}},"id":19197,"indexExpression":{"id":19196,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19192,"src":"1865:7:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1854:19:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19198,"name":"nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19190,"src":"1876:9:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1854:31:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19200,"nodeType":"ExpressionStatement","src":"1854:31:119"}]},"functionSelector":"916c4eb5","id":19202,"implemented":true,"kind":"function","modifiers":[],"name":"setNativeFee","nodeType":"FunctionDefinition","parameters":{"id":19193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19190,"mutability":"mutable","name":"nativeFee","nodeType":"VariableDeclaration","scope":19202,"src":"1800:17:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19189,"name":"uint256","nodeType":"ElementaryTypeName","src":"1800:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19192,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":19202,"src":"1819:14:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19191,"name":"uint16","nodeType":"ElementaryTypeName","src":"1819:6:119","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1799:35:119"},"returnParameters":{"id":19194,"nodeType":"ParameterList","parameters":[],"src":"1844:0:119"},"scope":19203,"src":"1778:114:119","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":19204,"src":"836:1058:119"}],"src":"688:1207:119"},"id":119},"contracts/test/MockRewardTokenDistributor.sol":{"ast":{"absolutePath":"contracts/test/MockRewardTokenDistributor.sol","exportedSymbols":{"MockRewardTokenDistributor":[19373]},"id":19374,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19205,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:120"},{"id":19206,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:120"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":19207,"nodeType":"ImportDirective","scope":19374,"sourceUnit":7342,"src":"747:79:120","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":19208,"nodeType":"ImportDirective","scope":19374,"sourceUnit":2448,"src":"828:87:120","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","id":19209,"nodeType":"ImportDirective","scope":19374,"sourceUnit":1164,"src":"916:93:120","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19211,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":1163,"src":"1241:23:120","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$1163","typeString":"contract IRewardTokenDistributor"}},"id":19212,"nodeType":"InheritanceSpecifier","src":"1241:23:120"}],"contractDependencies":[1163],"contractKind":"contract","documentation":{"id":19210,"nodeType":"StructuredDocumentation","src":"1089:112:120","text":" @dev This contract is designed to mock LiquidityGaugeV5's interface for distributing external tokens."},"fullyImplemented":true,"id":19373,"linearizedBaseContracts":[19373,1163],"name":"MockRewardTokenDistributor","nodeType":"ContractDefinition","nodes":[{"id":19215,"libraryName":{"id":19213,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7341,"src":"1277:9:120","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7341","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1271:27:120","typeName":{"id":19214,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1291:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}}},{"constant":false,"id":19217,"mutability":"mutable","name":"_rewardCount","nodeType":"VariableDeclaration","scope":19373,"src":"1304:28:120","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19216,"name":"uint256","nodeType":"ElementaryTypeName","src":"1304:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":19221,"mutability":"mutable","name":"_rewardTokens","nodeType":"VariableDeclaration","scope":19373,"src":"1338:31:120","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_storage","typeString":"contract IERC20[8]"},"typeName":{"baseType":{"id":19218,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1338:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":19220,"length":{"hexValue":"38","id":19219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1345:1:120","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"ArrayTypeName","src":"1338:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_storage_ptr","typeString":"contract IERC20[8]"}},"visibility":"private"},{"constant":false,"id":19225,"mutability":"mutable","name":"_rewardData","nodeType":"VariableDeclaration","scope":19373,"src":"1375:45:120","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_Reward_$1104_storage_$","typeString":"mapping(contract IERC20 => struct IRewardTokenDistributor.Reward)"},"typeName":{"id":19224,"keyType":{"id":19222,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1383:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"1375:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_Reward_$1104_storage_$","typeString":"mapping(contract IERC20 => struct IRewardTokenDistributor.Reward)"},"valueType":{"id":19223,"name":"Reward","nodeType":"UserDefinedTypeName","referencedDeclaration":1104,"src":"1393:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage_ptr","typeString":"struct IRewardTokenDistributor.Reward"}}},"visibility":"private"},{"baseFunctions":[1111],"body":{"id":19237,"nodeType":"Block","src":"1505:44:120","statements":[{"expression":{"baseExpression":{"id":19233,"name":"_rewardTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19221,"src":"1522:13:120","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_storage","typeString":"contract IERC20[8] storage ref"}},"id":19235,"indexExpression":{"id":19234,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19227,"src":"1536:5:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1522:20:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"functionReturnParameters":19232,"id":19236,"nodeType":"Return","src":"1515:27:120"}]},"functionSelector":"54c49fe9","id":19238,"implemented":true,"kind":"function","modifiers":[],"name":"reward_tokens","nodeType":"FunctionDefinition","overrides":{"id":19229,"nodeType":"OverrideSpecifier","overrides":[],"src":"1479:8:120"},"parameters":{"id":19228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19227,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":19238,"src":"1450:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19226,"name":"uint256","nodeType":"ElementaryTypeName","src":"1450:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1449:15:120"},"returnParameters":{"id":19232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19231,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19238,"src":"1497:6:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":19230,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1497:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1496:8:120"},"scope":19373,"src":"1427:122:120","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1118],"body":{"id":19250,"nodeType":"Block","src":"1637:42:120","statements":[{"expression":{"baseExpression":{"id":19246,"name":"_rewardData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19225,"src":"1654:11:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_Reward_$1104_storage_$","typeString":"mapping(contract IERC20 => struct IRewardTokenDistributor.Reward storage ref)"}},"id":19248,"indexExpression":{"id":19247,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19240,"src":"1666:5:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1654:18:120","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage","typeString":"struct IRewardTokenDistributor.Reward storage ref"}},"functionReturnParameters":19245,"id":19249,"nodeType":"Return","src":"1647:25:120"}]},"functionSelector":"48e9c65e","id":19251,"implemented":true,"kind":"function","modifiers":[],"name":"reward_data","nodeType":"FunctionDefinition","overrides":{"id":19242,"nodeType":"OverrideSpecifier","overrides":[],"src":"1604:8:120"},"parameters":{"id":19241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19240,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":19251,"src":"1576:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":19239,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1576:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1575:14:120"},"returnParameters":{"id":19245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19244,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19251,"src":"1622:13:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_memory_ptr","typeString":"struct IRewardTokenDistributor.Reward"},"typeName":{"id":19243,"name":"Reward","nodeType":"UserDefinedTypeName","referencedDeclaration":1104,"src":"1622:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage_ptr","typeString":"struct IRewardTokenDistributor.Reward"}},"visibility":"internal"}],"src":"1621:15:120"},"scope":19373,"src":"1555:124:120","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1130],"body":{"id":19290,"nodeType":"Block","src":"1764:390:120","statements":[{"expression":{"id":19263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19259,"name":"_rewardTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19221,"src":"1774:13:120","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2447_$8_storage","typeString":"contract IERC20[8] storage ref"}},"id":19261,"indexExpression":{"id":19260,"name":"_rewardCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19217,"src":"1788:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1774:27:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19262,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19253,"src":"1804:11:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"src":"1774:41:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":19264,"nodeType":"ExpressionStatement","src":"1774:41:120"},{"expression":{"id":19277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19265,"name":"_rewardData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19225,"src":"1825:11:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_Reward_$1104_storage_$","typeString":"mapping(contract IERC20 => struct IRewardTokenDistributor.Reward storage ref)"}},"id":19267,"indexExpression":{"id":19266,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19253,"src":"1837:11:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1825:24:120","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage","typeString":"struct IRewardTokenDistributor.Reward storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19269,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19253,"src":"1880:11:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},{"id":19270,"name":"distributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19255,"src":"1918:11:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":19271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1958:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":19272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1979:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":19273,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2007:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":19274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"2007:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":19275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2046:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":19268,"name":"Reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1104,"src":"1852:6:120","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Reward_$1104_storage_ptr_$","typeString":"type(struct IRewardTokenDistributor.Reward storage pointer)"}},"id":19276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token","distributor","period_finish","rate","last_update","integral"],"nodeType":"FunctionCall","src":"1852:206:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_memory_ptr","typeString":"struct IRewardTokenDistributor.Reward memory"}},"src":"1825:233:120","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage","typeString":"struct IRewardTokenDistributor.Reward storage ref"}},"id":19278,"nodeType":"ExpressionStatement","src":"1825:233:120"},{"expression":{"id":19281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19279,"name":"_rewardCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19217,"src":"2069:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":19280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2085:1:120","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2069:17:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19282,"nodeType":"ExpressionStatement","src":"2069:17:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19284,"name":"_rewardCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19217,"src":"2104:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"38","id":19285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2119:1:120","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"2104:16:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6f206d616e792072657761726420746f6b656e73","id":19287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2122:24:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_83203493ea391d6bbbaa1b906bb34cd117892c68ada4ec61cd9ab95294c7a64f","typeString":"literal_string \"Too many reward tokens\""},"value":"Too many reward tokens"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_83203493ea391d6bbbaa1b906bb34cd117892c68ada4ec61cd9ab95294c7a64f","typeString":"literal_string \"Too many reward tokens\""}],"id":19283,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2096:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2096:51:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19289,"nodeType":"ExpressionStatement","src":"2096:51:120"}]},"functionSelector":"e8de0d4d","id":19291,"implemented":true,"kind":"function","modifiers":[],"name":"add_reward","nodeType":"FunctionDefinition","overrides":{"id":19257,"nodeType":"OverrideSpecifier","overrides":[],"src":"1755:8:120"},"parameters":{"id":19256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19253,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":19291,"src":"1705:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":19252,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"1705:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":19255,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":19291,"src":"1725:19:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19254,"name":"address","nodeType":"ElementaryTypeName","src":"1725:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1704:41:120"},"returnParameters":{"id":19258,"nodeType":"ParameterList","parameters":[],"src":"1764:0:120"},"scope":19373,"src":"1685:469:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1137],"body":{"id":19306,"nodeType":"Block","src":"2251:67:120","statements":[{"expression":{"id":19304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":19299,"name":"_rewardData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19225,"src":"2261:11:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_Reward_$1104_storage_$","typeString":"mapping(contract IERC20 => struct IRewardTokenDistributor.Reward storage ref)"}},"id":19301,"indexExpression":{"id":19300,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19293,"src":"2273:11:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2261:24:120","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage","typeString":"struct IRewardTokenDistributor.Reward storage ref"}},"id":19302,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"distributor","nodeType":"MemberAccess","referencedDeclaration":1095,"src":"2261:36:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19303,"name":"distributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19295,"src":"2300:11:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2261:50:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19305,"nodeType":"ExpressionStatement","src":"2261:50:120"}]},"functionSelector":"058a3a24","id":19307,"implemented":true,"kind":"function","modifiers":[],"name":"set_reward_distributor","nodeType":"FunctionDefinition","overrides":{"id":19297,"nodeType":"OverrideSpecifier","overrides":[],"src":"2242:8:120"},"parameters":{"id":19296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19293,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":19307,"src":"2192:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":19292,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2192:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":19295,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":19307,"src":"2212:19:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19294,"name":"address","nodeType":"ElementaryTypeName","src":"2212:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2191:41:120"},"returnParameters":{"id":19298,"nodeType":"ParameterList","parameters":[],"src":"2251:0:120"},"scope":19373,"src":"2160:158:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1144],"body":{"id":19338,"nodeType":"Block","src":"2408:244:120","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":19316,"name":"_rewardData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19225,"src":"2426:11:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2447_$_t_struct$_Reward_$1104_storage_$","typeString":"mapping(contract IERC20 => struct IRewardTokenDistributor.Reward storage ref)"}},"id":19318,"indexExpression":{"id":19317,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19309,"src":"2438:11:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2426:24:120","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$1104_storage","typeString":"struct IRewardTokenDistributor.Reward storage ref"}},"id":19319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"distributor","nodeType":"MemberAccess","referencedDeclaration":1095,"src":"2426:36:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":19320,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2466:3:120","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2466:10:120","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2426:50:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c792063616c6c61626c6520627920726577617264206469737472696275746f72","id":19323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2478:37:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_8fe65f43f4fb2e61b1698a7bc8a9236fae68b8ef299ce00a6e0d31324a0fdbe1","typeString":"literal_string \"Only callable by reward distributor\""},"value":"Only callable by reward distributor"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8fe65f43f4fb2e61b1698a7bc8a9236fae68b8ef299ce00a6e0d31324a0fdbe1","typeString":"literal_string \"Only callable by reward distributor\""}],"id":19315,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2418:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2418:98:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19325,"nodeType":"ExpressionStatement","src":"2418:98:120"},{"expression":{"arguments":[{"expression":{"id":19329,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2555:3:120","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2555:10:120","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":19333,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2575:4:120","typeDescriptions":{"typeIdentifier":"t_contract$_MockRewardTokenDistributor_$19373","typeString":"contract MockRewardTokenDistributor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockRewardTokenDistributor_$19373","typeString":"contract MockRewardTokenDistributor"}],"id":19332,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2567:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19331,"name":"address","nodeType":"ElementaryTypeName","src":"2567:7:120","typeDescriptions":{}}},"id":19334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2567:13:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19335,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19311,"src":"2582:6:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19326,"name":"rewardToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19309,"src":"2526:11:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"id":19328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":7304,"src":"2526:28:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2447_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2447_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":19336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2526:63:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19337,"nodeType":"ExpressionStatement","src":"2526:63:120"}]},"functionSelector":"93f7aa67","id":19339,"implemented":true,"kind":"function","modifiers":[],"name":"deposit_reward_token","nodeType":"FunctionDefinition","overrides":{"id":19313,"nodeType":"OverrideSpecifier","overrides":[],"src":"2399:8:120"},"parameters":{"id":19312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19309,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":19339,"src":"2354:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"},"typeName":{"id":19308,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2447,"src":"2354:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2447","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":19311,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":19339,"src":"2374:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19310,"name":"uint256","nodeType":"ElementaryTypeName","src":"2374:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2353:36:120"},"returnParameters":{"id":19314,"nodeType":"ParameterList","parameters":[],"src":"2408:0:120"},"scope":19373,"src":"2324:328:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1123],"body":{"id":19345,"nodeType":"Block","src":"2713:64:120","statements":[]},"functionSelector":"84e9bd7e","id":19346,"implemented":true,"kind":"function","modifiers":[],"name":"claim_rewards","nodeType":"FunctionDefinition","overrides":{"id":19343,"nodeType":"OverrideSpecifier","overrides":[],"src":"2704:8:120"},"parameters":{"id":19342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19341,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":19346,"src":"2681:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19340,"name":"address","nodeType":"ElementaryTypeName","src":"2681:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2680:14:120"},"returnParameters":{"id":19344,"nodeType":"ParameterList","parameters":[],"src":"2713:0:120"},"scope":19373,"src":"2658:119:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1153],"body":{"id":19358,"nodeType":"Block","src":"2868:25:120","statements":[{"expression":{"hexValue":"30","id":19356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2885:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":19355,"id":19357,"nodeType":"Return","src":"2878:8:120"}]},"functionSelector":"33fd6f74","id":19359,"implemented":true,"kind":"function","modifiers":[],"name":"claimable_reward","nodeType":"FunctionDefinition","overrides":{"id":19352,"nodeType":"OverrideSpecifier","overrides":[],"src":"2841:8:120"},"parameters":{"id":19351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19348,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19359,"src":"2809:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19347,"name":"address","nodeType":"ElementaryTypeName","src":"2809:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19350,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19359,"src":"2818:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19349,"name":"address","nodeType":"ElementaryTypeName","src":"2818:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2808:18:120"},"returnParameters":{"id":19355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19354,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19359,"src":"2859:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19353,"name":"uint256","nodeType":"ElementaryTypeName","src":"2859:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2858:9:120"},"scope":19373,"src":"2783:110:120","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[1162],"body":{"id":19371,"nodeType":"Block","src":"2990:25:120","statements":[{"expression":{"hexValue":"30","id":19369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3007:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":19368,"id":19370,"nodeType":"Return","src":"3000:8:120"}]},"functionSelector":"59b7e409","id":19372,"implemented":true,"kind":"function","modifiers":[],"name":"claimable_reward_write","nodeType":"FunctionDefinition","overrides":{"id":19365,"nodeType":"OverrideSpecifier","overrides":[],"src":"2963:8:120"},"parameters":{"id":19364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19361,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19372,"src":"2931:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19360,"name":"address","nodeType":"ElementaryTypeName","src":"2931:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19363,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19372,"src":"2940:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19362,"name":"address","nodeType":"ElementaryTypeName","src":"2940:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2930:18:120"},"returnParameters":{"id":19368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19367,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19372,"src":"2981:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19366,"name":"uint256","nodeType":"ElementaryTypeName","src":"2981:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2980:9:120"},"scope":19373,"src":"2899:116:120","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":19374,"src":"1202:1815:120"}],"src":"688:2330:120"},"id":120},"contracts/test/MockVeDelegation.sol":{"ast":{"absolutePath":"contracts/test/MockVeDelegation.sol","exportedSymbols":{"MockVeDelegation":[19403]},"id":19404,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19375,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:121"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol","id":19376,"nodeType":"ImportDirective","scope":19404,"sourceUnit":1470,"src":"713:83:121","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19377,"name":"IVeDelegation","nodeType":"UserDefinedTypeName","referencedDeclaration":1469,"src":"1005:13:121","typeDescriptions":{"typeIdentifier":"t_contract$_IVeDelegation_$1469","typeString":"contract IVeDelegation"}},"id":19378,"nodeType":"InheritanceSpecifier","src":"1005:13:121"}],"contractDependencies":[1469],"contractKind":"contract","fullyImplemented":true,"id":19403,"linearizedBaseContracts":[19403,1469],"name":"MockVeDelegation","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":19380,"mutability":"mutable","name":"_adjustedBalance","nodeType":"VariableDeclaration","scope":19403,"src":"1025:32:121","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19379,"name":"uint256","nodeType":"ElementaryTypeName","src":"1025:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":19382,"mutability":"mutable","name":"_totalSupply","nodeType":"VariableDeclaration","scope":19403,"src":"1063:28:121","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19381,"name":"uint256","nodeType":"ElementaryTypeName","src":"1063:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"baseFunctions":[1463],"body":{"id":19392,"nodeType":"Block","src":"1177:40:121","statements":[{"expression":{"id":19390,"name":"_adjustedBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19380,"src":"1194:16:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19389,"id":19391,"nodeType":"Return","src":"1187:23:121"}]},"functionSelector":"bbf7408a","id":19393,"implemented":true,"kind":"function","modifiers":[],"name":"adjusted_balance_of","nodeType":"FunctionDefinition","overrides":{"id":19386,"nodeType":"OverrideSpecifier","overrides":[],"src":"1150:8:121"},"parameters":{"id":19385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19384,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19393,"src":"1127:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19383,"name":"address","nodeType":"ElementaryTypeName","src":"1127:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1126:9:121"},"returnParameters":{"id":19389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19388,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19393,"src":"1168:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19387,"name":"uint256","nodeType":"ElementaryTypeName","src":"1168:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1167:9:121"},"scope":19403,"src":"1098:119:121","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1468],"body":{"id":19401,"nodeType":"Block","src":"1287:36:121","statements":[{"expression":{"id":19399,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19382,"src":"1304:12:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19398,"id":19400,"nodeType":"Return","src":"1297:19:121"}]},"functionSelector":"18160ddd","id":19402,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":19395,"nodeType":"OverrideSpecifier","overrides":[],"src":"1260:8:121"},"parameters":{"id":19394,"nodeType":"ParameterList","parameters":[],"src":"1243:2:121"},"returnParameters":{"id":19398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19397,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19402,"src":"1278:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19396,"name":"uint256","nodeType":"ElementaryTypeName","src":"1278:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1277:9:121"},"scope":19403,"src":"1223:100:121","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":19404,"src":"976:349:121"}],"src":"688:638:121"},"id":121},"contracts/test/MockVotingEscrow.sol":{"ast":{"absolutePath":"contracts/test/MockVotingEscrow.sol","exportedSymbols":{"MockVotingEscrow":[19538]},"id":19539,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19405,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:122"},{"id":19406,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:122"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol","id":19407,"nodeType":"ImportDirective","scope":19539,"sourceUnit":1216,"src":"755:89:122","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","id":19408,"nodeType":"ImportDirective","scope":19539,"sourceUnit":1560,"src":"845:83:122","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":19409,"nodeType":"StructuredDocumentation","src":"1008:218:122","text":" @dev Mock voting escrow with setters to manipulate its inner state.\n Points are represented as mappings just for convenience, while keeping the same API for the public members\n as the real voting escrow."},"fullyImplemented":true,"id":19538,"linearizedBaseContracts":[19538],"name":"MockVotingEscrow","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"900cf0cf","id":19411,"mutability":"mutable","name":"epoch","nodeType":"VariableDeclaration","scope":19538,"src":"1259:20:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19410,"name":"uint256","nodeType":"ElementaryTypeName","src":"1259:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"d1febfb9","id":19415,"mutability":"mutable","name":"point_history","nodeType":"VariableDeclaration","scope":19538,"src":"1308:60:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$","typeString":"mapping(uint256 => struct IVotingEscrow.Point)"},"typeName":{"id":19414,"keyType":{"id":19412,"name":"uint256","nodeType":"ElementaryTypeName","src":"1316:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1308:39:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$","typeString":"mapping(uint256 => struct IVotingEscrow.Point)"},"valueType":{"id":19413,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"1327:19:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}}},"visibility":"public"},{"constant":false,"functionSelector":"28d09d47","id":19421,"mutability":"mutable","name":"user_point_history","nodeType":"VariableDeclaration","scope":19538,"src":"1406:85:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct IVotingEscrow.Point))"},"typeName":{"id":19420,"keyType":{"id":19416,"name":"address","nodeType":"ElementaryTypeName","src":"1414:7:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1406:59:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct IVotingEscrow.Point))"},"valueType":{"id":19419,"keyType":{"id":19417,"name":"uint256","nodeType":"ElementaryTypeName","src":"1433:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1425:39:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$","typeString":"mapping(uint256 => struct IVotingEscrow.Point)"},"valueType":{"id":19418,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"1444:19:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}}}},"visibility":"public"},{"constant":false,"functionSelector":"010ae757","id":19425,"mutability":"mutable","name":"user_point_epoch","nodeType":"VariableDeclaration","scope":19538,"src":"1519:51:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":19424,"keyType":{"id":19422,"name":"address","nodeType":"ElementaryTypeName","src":"1527:7:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1519:27:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":19423,"name":"uint256","nodeType":"ElementaryTypeName","src":"1538:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"functionSelector":"adc63589","id":19429,"mutability":"mutable","name":"locked__end","nodeType":"VariableDeclaration","scope":19538,"src":"1603:46:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":19428,"keyType":{"id":19426,"name":"address","nodeType":"ElementaryTypeName","src":"1611:7:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1603:27:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":19427,"name":"uint256","nodeType":"ElementaryTypeName","src":"1622:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"functionSelector":"70a08231","id":19433,"mutability":"mutable","name":"balanceOf","nodeType":"VariableDeclaration","scope":19538,"src":"1679:44:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":19432,"keyType":{"id":19430,"name":"address","nodeType":"ElementaryTypeName","src":"1687:7:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1679:27:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":19431,"name":"uint256","nodeType":"ElementaryTypeName","src":"1698:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"id":19435,"mutability":"mutable","name":"_smartWalletChecker","nodeType":"VariableDeclaration","scope":19538,"src":"1730:47:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"},"typeName":{"id":19434,"name":"ISmartWalletChecker","nodeType":"UserDefinedTypeName","referencedDeclaration":1215,"src":"1730:19:122","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"visibility":"private"},{"body":{"id":19444,"nodeType":"Block","src":"1836:57:122","statements":[{"expression":{"id":19442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19440,"name":"_smartWalletChecker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19435,"src":"1846:19:122","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19441,"name":"smartWalletChecker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19437,"src":"1868:18:122","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"src":"1846:40:122","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"id":19443,"nodeType":"ExpressionStatement","src":"1846:40:122"}]},"id":19445,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19437,"mutability":"mutable","name":"smartWalletChecker","nodeType":"VariableDeclaration","scope":19445,"src":"1796:38:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"},"typeName":{"id":19436,"name":"ISmartWalletChecker","nodeType":"UserDefinedTypeName","referencedDeclaration":1215,"src":"1796:19:122","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"visibility":"internal"}],"src":"1795:40:122"},"returnParameters":{"id":19439,"nodeType":"ParameterList","parameters":[],"src":"1836:0:122"},"scope":19538,"src":"1784:109:122","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":19452,"nodeType":"Block","src":"1975:43:122","statements":[{"expression":{"id":19450,"name":"_smartWalletChecker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19435,"src":"1992:19:122","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"functionReturnParameters":19449,"id":19451,"nodeType":"Return","src":"1985:26:122"}]},"functionSelector":"7175d4f7","id":19453,"implemented":true,"kind":"function","modifiers":[],"name":"smart_wallet_checker","nodeType":"FunctionDefinition","parameters":{"id":19446,"nodeType":"ParameterList","parameters":[],"src":"1928:2:122"},"returnParameters":{"id":19449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19448,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19453,"src":"1954:19:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"},"typeName":{"id":19447,"name":"ISmartWalletChecker","nodeType":"UserDefinedTypeName","referencedDeclaration":1215,"src":"1954:19:122","typeDescriptions":{"typeIdentifier":"t_contract$_ISmartWalletChecker_$1215","typeString":"contract ISmartWalletChecker"}},"visibility":"internal"}],"src":"1953:21:122"},"scope":19538,"src":"1899:119:122","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19462,"nodeType":"Block","src":"2067:31:122","statements":[{"expression":{"id":19460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19458,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19411,"src":"2077:5:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19459,"name":"_epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19455,"src":"2085:6:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2077:14:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19461,"nodeType":"ExpressionStatement","src":"2077:14:122"}]},"functionSelector":"0ceb2cef","id":19463,"implemented":true,"kind":"function","modifiers":[],"name":"setEpoch","nodeType":"FunctionDefinition","parameters":{"id":19456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19455,"mutability":"mutable","name":"_epoch","nodeType":"VariableDeclaration","scope":19463,"src":"2042:14:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19454,"name":"uint256","nodeType":"ElementaryTypeName","src":"2042:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2041:16:122"},"returnParameters":{"id":19457,"nodeType":"ParameterList","parameters":[],"src":"2067:0:122"},"scope":19538,"src":"2024:74:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19476,"nodeType":"Block","src":"2188:46:122","statements":[{"expression":{"id":19474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19470,"name":"point_history","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19415,"src":"2198:13:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$","typeString":"mapping(uint256 => struct IVotingEscrow.Point storage ref)"}},"id":19472,"indexExpression":{"id":19471,"name":"_epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19465,"src":"2212:6:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2198:21:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage","typeString":"struct IVotingEscrow.Point storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19473,"name":"point","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19467,"src":"2222:5:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"src":"2198:29:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage","typeString":"struct IVotingEscrow.Point storage ref"}},"id":19475,"nodeType":"ExpressionStatement","src":"2198:29:122"}]},"functionSelector":"b67672ab","id":19477,"implemented":true,"kind":"function","modifiers":[],"name":"setPointHistory","nodeType":"FunctionDefinition","parameters":{"id":19468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19465,"mutability":"mutable","name":"_epoch","nodeType":"VariableDeclaration","scope":19477,"src":"2129:14:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19464,"name":"uint256","nodeType":"ElementaryTypeName","src":"2129:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19467,"mutability":"mutable","name":"point","nodeType":"VariableDeclaration","scope":19477,"src":"2145:32:122","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":19466,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"2145:19:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"2128:50:122"},"returnParameters":{"id":19469,"nodeType":"ParameterList","parameters":[],"src":"2188:0:122"},"scope":19538,"src":"2104:130:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19490,"nodeType":"Block","src":"2306:48:122","statements":[{"expression":{"id":19488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19484,"name":"user_point_epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19425,"src":"2316:16:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":19486,"indexExpression":{"id":19485,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19479,"src":"2333:4:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2316:22:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19487,"name":"_epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19481,"src":"2341:6:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2316:31:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19489,"nodeType":"ExpressionStatement","src":"2316:31:122"}]},"functionSelector":"3dc6f15b","id":19491,"implemented":true,"kind":"function","modifiers":[],"name":"setUserPointEpoch","nodeType":"FunctionDefinition","parameters":{"id":19482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19479,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":19491,"src":"2267:12:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19478,"name":"address","nodeType":"ElementaryTypeName","src":"2267:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19481,"mutability":"mutable","name":"_epoch","nodeType":"VariableDeclaration","scope":19491,"src":"2281:14:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19480,"name":"uint256","nodeType":"ElementaryTypeName","src":"2281:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2266:30:122"},"returnParameters":{"id":19483,"nodeType":"ParameterList","parameters":[],"src":"2306:0:122"},"scope":19538,"src":"2240:114:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19508,"nodeType":"Block","src":"2492:57:122","statements":[{"expression":{"id":19506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":19500,"name":"user_point_history","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19421,"src":"2502:18:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct IVotingEscrow.Point storage ref))"}},"id":19503,"indexExpression":{"id":19501,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19493,"src":"2521:4:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2502:24:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Point_$1486_storage_$","typeString":"mapping(uint256 => struct IVotingEscrow.Point storage ref)"}},"id":19504,"indexExpression":{"id":19502,"name":"_epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19495,"src":"2527:6:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2502:32:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage","typeString":"struct IVotingEscrow.Point storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19505,"name":"point","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19497,"src":"2537:5:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point memory"}},"src":"2502:40:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage","typeString":"struct IVotingEscrow.Point storage ref"}},"id":19507,"nodeType":"ExpressionStatement","src":"2502:40:122"}]},"functionSelector":"af8de871","id":19509,"implemented":true,"kind":"function","modifiers":[],"name":"setUserPointHistory","nodeType":"FunctionDefinition","parameters":{"id":19498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19493,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":19509,"src":"2398:12:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19492,"name":"address","nodeType":"ElementaryTypeName","src":"2398:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19495,"mutability":"mutable","name":"_epoch","nodeType":"VariableDeclaration","scope":19509,"src":"2420:14:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19494,"name":"uint256","nodeType":"ElementaryTypeName","src":"2420:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19497,"mutability":"mutable","name":"point","nodeType":"VariableDeclaration","scope":19509,"src":"2444:32:122","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":19496,"name":"IVotingEscrow.Point","nodeType":"UserDefinedTypeName","referencedDeclaration":1486,"src":"2444:19:122","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$1486_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"2388:94:122"},"returnParameters":{"id":19499,"nodeType":"ParameterList","parameters":[],"src":"2492:0:122"},"scope":19538,"src":"2360:189:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19522,"nodeType":"Block","src":"2613:40:122","statements":[{"expression":{"id":19520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19516,"name":"locked__end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19429,"src":"2623:11:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":19518,"indexExpression":{"id":19517,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19511,"src":"2635:4:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2623:17:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19519,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19513,"src":"2643:3:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2623:23:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19521,"nodeType":"ExpressionStatement","src":"2623:23:122"}]},"functionSelector":"36aeef2a","id":19523,"implemented":true,"kind":"function","modifiers":[],"name":"setLockedEnd","nodeType":"FunctionDefinition","parameters":{"id":19514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19511,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":19523,"src":"2577:12:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19510,"name":"address","nodeType":"ElementaryTypeName","src":"2577:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19513,"mutability":"mutable","name":"end","nodeType":"VariableDeclaration","scope":19523,"src":"2591:11:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19512,"name":"uint256","nodeType":"ElementaryTypeName","src":"2591:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2576:27:122"},"returnParameters":{"id":19515,"nodeType":"ParameterList","parameters":[],"src":"2613:0:122"},"scope":19538,"src":"2555:98:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19536,"nodeType":"Block","src":"2721:42:122","statements":[{"expression":{"id":19534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19530,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19433,"src":"2731:9:122","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":19532,"indexExpression":{"id":19531,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19525,"src":"2741:4:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2731:15:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19533,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19527,"src":"2749:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2731:25:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19535,"nodeType":"ExpressionStatement","src":"2731:25:122"}]},"functionSelector":"b46310f6","id":19537,"implemented":true,"kind":"function","modifiers":[],"name":"setBalanceOf","nodeType":"FunctionDefinition","parameters":{"id":19528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19525,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":19537,"src":"2681:12:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19524,"name":"address","nodeType":"ElementaryTypeName","src":"2681:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19527,"mutability":"mutable","name":"balance","nodeType":"VariableDeclaration","scope":19537,"src":"2695:15:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19526,"name":"uint256","nodeType":"ElementaryTypeName","src":"2695:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2680:31:122"},"returnParameters":{"id":19529,"nodeType":"ParameterList","parameters":[],"src":"2721:0:122"},"scope":19538,"src":"2659:104:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":19539,"src":"1227:1538:122"}],"src":"688:2078:122"},"id":122},"contracts/test/TestAccessControl.sol":{"ast":{"absolutePath":"contracts/test/TestAccessControl.sol","exportedSymbols":{"TestAccessControl":[19818]},"id":19819,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":19540,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:123"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","id":19541,"nodeType":"ImportDirective","scope":19819,"sourceUnit":7132,"src":"58:83:123","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":19542,"nodeType":"ImportDirective","scope":19819,"sourceUnit":5851,"src":"142:77:123","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":19543,"nodeType":"StructuredDocumentation","src":"336:1276:123","text":" @dev Contract module that allows children to implement role-based access\n control mechanisms.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\n ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it."},"fullyImplemented":true,"id":19818,"linearizedBaseContracts":[19818],"name":"TestAccessControl","nodeType":"ContractDefinition","nodes":[{"id":19546,"libraryName":{"id":19544,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7131,"src":"1661:13:123","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$7131","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"1655:49:123","typeName":{"id":19545,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1679:24:123","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"id":19549,"libraryName":{"id":19547,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":5850,"src":"1715:7:123","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$5850","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1709:26:123","typeName":{"id":19548,"name":"address","nodeType":"ElementaryTypeName","src":"1727:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"canonicalName":"TestAccessControl.RoleData","id":19554,"members":[{"constant":false,"id":19551,"mutability":"mutable","name":"members","nodeType":"VariableDeclaration","scope":19554,"src":"1767:32:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":19550,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6690,"src":"1767:24:123","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":19553,"mutability":"mutable","name":"adminRole","nodeType":"VariableDeclaration","scope":19554,"src":"1809:17:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19552,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1809:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RoleData","nodeType":"StructDefinition","scope":19818,"src":"1741:92:123","visibility":"public"},{"constant":false,"id":19558,"mutability":"mutable","name":"_roles","nodeType":"VariableDeclaration","scope":19818,"src":"1839:43:123","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData)"},"typeName":{"id":19557,"keyType":{"id":19555,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1847:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1839:28:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData)"},"valueType":{"id":19556,"name":"RoleData","nodeType":"UserDefinedTypeName","referencedDeclaration":19554,"src":"1858:8:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage_ptr","typeString":"struct TestAccessControl.RoleData"}}},"visibility":"private"},{"constant":true,"functionSelector":"a217fddf","id":19561,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nodeType":"VariableDeclaration","scope":19818,"src":"1889:49:123","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19559,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1889:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":19560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1934:4:123","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"anonymous":false,"documentation":{"id":19562,"nodeType":"StructuredDocumentation","src":"1945:292:123","text":" @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this.\n _Available since v3.1._"},"id":19570,"name":"RoleAdminChanged","nodeType":"EventDefinition","parameters":{"id":19569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19564,"indexed":true,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19570,"src":"2265:20:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19563,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2265:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19566,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nodeType":"VariableDeclaration","scope":19570,"src":"2287:33:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19565,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2287:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19568,"indexed":true,"mutability":"mutable","name":"newAdminRole","nodeType":"VariableDeclaration","scope":19570,"src":"2322:28:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19567,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2322:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2264:87:123"},"src":"2242:110:123"},{"anonymous":false,"documentation":{"id":19571,"nodeType":"StructuredDocumentation","src":"2358:198:123","text":" @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {_setupRole}."},"id":19579,"name":"RoleGranted","nodeType":"EventDefinition","parameters":{"id":19578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19573,"indexed":true,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19579,"src":"2579:20:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19572,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2579:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19575,"indexed":true,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19579,"src":"2601:23:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19574,"name":"address","nodeType":"ElementaryTypeName","src":"2601:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19577,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":19579,"src":"2626:22:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19576,"name":"address","nodeType":"ElementaryTypeName","src":"2626:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2578:71:123"},"src":"2561:89:123"},{"anonymous":false,"documentation":{"id":19580,"nodeType":"StructuredDocumentation","src":"2656:275:123","text":" @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n - if using `revokeRole`, it is the admin role bearer\n - if using `renounceRole`, it is the role bearer (i.e. `account`)"},"id":19588,"name":"RoleRevoked","nodeType":"EventDefinition","parameters":{"id":19587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19582,"indexed":true,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19588,"src":"2954:20:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19581,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2954:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19584,"indexed":true,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19588,"src":"2976:23:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19583,"name":"address","nodeType":"ElementaryTypeName","src":"2976:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19586,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":19588,"src":"3001:22:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19585,"name":"address","nodeType":"ElementaryTypeName","src":"3001:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2953:71:123"},"src":"2936:89:123"},{"body":{"id":19606,"nodeType":"Block","src":"3187:62:123","statements":[{"expression":{"arguments":[{"id":19603,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19593,"src":"3234:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"baseExpression":{"id":19598,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"3204:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19600,"indexExpression":{"id":19599,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19591,"src":"3211:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3204:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19601,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"members","nodeType":"MemberAccess","referencedDeclaration":19551,"src":"3204:20:123","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":19602,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":6834,"src":"3204:29:123","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"}},"id":19604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3204:38:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":19597,"id":19605,"nodeType":"Return","src":"3197:45:123"}]},"documentation":{"id":19589,"nodeType":"StructuredDocumentation","src":"3031:76:123","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":19607,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nodeType":"FunctionDefinition","parameters":{"id":19594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19591,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19607,"src":"3129:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19590,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3129:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19593,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19607,"src":"3143:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19592,"name":"address","nodeType":"ElementaryTypeName","src":"3143:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3128:31:123"},"returnParameters":{"id":19597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19596,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19607,"src":"3181:4:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19595,"name":"bool","nodeType":"ElementaryTypeName","src":"3181:4:123","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3180:6:123"},"scope":19818,"src":"3112:137:123","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":19622,"nodeType":"Block","src":"3489:53:123","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"baseExpression":{"id":19615,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"3506:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19617,"indexExpression":{"id":19616,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19610,"src":"3513:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3506:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19618,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"members","nodeType":"MemberAccess","referencedDeclaration":19551,"src":"3506:20:123","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":19619,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6847,"src":"3506:27:123","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":19620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3506:29:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19614,"id":19621,"nodeType":"Return","src":"3499:36:123"}]},"documentation":{"id":19608,"nodeType":"StructuredDocumentation","src":"3255:157:123","text":" @dev Returns the number of accounts that have `role`. Can be used\n together with {getRoleMember} to enumerate all bearers of a role."},"functionSelector":"ca15c873","id":19623,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleMemberCount","nodeType":"FunctionDefinition","parameters":{"id":19611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19610,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19623,"src":"3445:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19609,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3445:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3444:14:123"},"returnParameters":{"id":19614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19613,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19623,"src":"3480:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19612,"name":"uint256","nodeType":"ElementaryTypeName","src":"3480:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3479:9:123"},"scope":19818,"src":"3417:125:123","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":19641,"nodeType":"Block","src":"4286:54:123","statements":[{"expression":{"arguments":[{"id":19638,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19628,"src":"4327:5:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"baseExpression":{"id":19633,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"4303:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19635,"indexExpression":{"id":19634,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19626,"src":"4310:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4303:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19636,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"members","nodeType":"MemberAccess","referencedDeclaration":19551,"src":"4303:20:123","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":19637,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":6873,"src":"4303:23:123","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6690_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":19639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4303:30:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19632,"id":19640,"nodeType":"Return","src":"4296:37:123"}]},"documentation":{"id":19624,"nodeType":"StructuredDocumentation","src":"3587:574:123","text":" @dev Returns one of the accounts that have `role`. `index` must be a\n value between 0 and {getRoleMemberCount}, non-inclusive.\n Role bearers are not sorted in any particular way, and their ordering may\n change at any point.\n WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n you perform all queries on the same block. See the following\n https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n for more information."},"functionSelector":"9010d07c","id":19642,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleMember","nodeType":"FunctionDefinition","parameters":{"id":19629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19626,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19642,"src":"4227:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19625,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4227:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19628,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":19642,"src":"4241:13:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19627,"name":"uint256","nodeType":"ElementaryTypeName","src":"4241:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4226:29:123"},"returnParameters":{"id":19632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19631,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19642,"src":"4277:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19630,"name":"address","nodeType":"ElementaryTypeName","src":"4277:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4276:9:123"},"scope":19818,"src":"4204:136:123","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":19655,"nodeType":"Block","src":"4587:46:123","statements":[{"expression":{"expression":{"baseExpression":{"id":19650,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"4604:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19652,"indexExpression":{"id":19651,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19645,"src":"4611:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4604:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19653,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":19553,"src":"4604:22:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":19649,"id":19654,"nodeType":"Return","src":"4597:29:123"}]},"documentation":{"id":19643,"nodeType":"StructuredDocumentation","src":"4346:170:123","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."},"functionSelector":"248a9ca3","id":19656,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nodeType":"FunctionDefinition","parameters":{"id":19646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19645,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19656,"src":"4543:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19644,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4543:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4542:14:123"},"returnParameters":{"id":19649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19648,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19656,"src":"4578:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19647,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4578:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4577:9:123"},"scope":19818,"src":"4521:112:123","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":19681,"nodeType":"Block","src":"4948:156:123","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"baseExpression":{"id":19666,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"4974:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19668,"indexExpression":{"id":19667,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19659,"src":"4981:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4974:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19669,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":19553,"src":"4974:22:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":19670,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4998:3:123","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4998:10:123","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":19665,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19607,"src":"4966:7:123","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":19672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4966:43:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74","id":19673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5011:49:123","typeDescriptions":{"typeIdentifier":"t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811","typeString":"literal_string \"AccessControl: sender must be an admin to grant\""},"value":"AccessControl: sender must be an admin to grant"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811","typeString":"literal_string \"AccessControl: sender must be an admin to grant\""}],"id":19664,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4958:7:123","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4958:103:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19675,"nodeType":"ExpressionStatement","src":"4958:103:123"},{"expression":{"arguments":[{"id":19677,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19659,"src":"5083:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19678,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19661,"src":"5089:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19676,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19793,"src":"5072:10:123","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":19679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5072:25:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19680,"nodeType":"ExpressionStatement","src":"5072:25:123"}]},"documentation":{"id":19657,"nodeType":"StructuredDocumentation","src":"4639:239:123","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"2f2ff15d","id":19682,"implemented":true,"kind":"function","modifiers":[],"name":"grantRole","nodeType":"FunctionDefinition","parameters":{"id":19662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19659,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19682,"src":"4902:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19658,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4902:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19661,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19682,"src":"4916:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19660,"name":"address","nodeType":"ElementaryTypeName","src":"4916:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4901:31:123"},"returnParameters":{"id":19663,"nodeType":"ParameterList","parameters":[],"src":"4948:0:123"},"scope":19818,"src":"4883:221:123","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":19707,"nodeType":"Block","src":"5404:158:123","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"baseExpression":{"id":19692,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"5430:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19694,"indexExpression":{"id":19693,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19685,"src":"5437:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5430:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19695,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":19553,"src":"5430:22:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":19696,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5454:3:123","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5454:10:123","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":19691,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19607,"src":"5422:7:123","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":19698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5422:43:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65","id":19699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5467:50:123","typeDescriptions":{"typeIdentifier":"t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3","typeString":"literal_string \"AccessControl: sender must be an admin to revoke\""},"value":"AccessControl: sender must be an admin to revoke"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3","typeString":"literal_string \"AccessControl: sender must be an admin to revoke\""}],"id":19690,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5414:7:123","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5414:104:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19701,"nodeType":"ExpressionStatement","src":"5414:104:123"},{"expression":{"arguments":[{"id":19703,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19685,"src":"5541:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19704,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19687,"src":"5547:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19702,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19817,"src":"5529:11:123","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":19705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5529:26:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19706,"nodeType":"ExpressionStatement","src":"5529:26:123"}]},"documentation":{"id":19683,"nodeType":"StructuredDocumentation","src":"5110:223:123","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"d547741f","id":19708,"implemented":true,"kind":"function","modifiers":[],"name":"revokeRole","nodeType":"FunctionDefinition","parameters":{"id":19688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19685,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19708,"src":"5358:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19684,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5358:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19687,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19708,"src":"5372:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19686,"name":"address","nodeType":"ElementaryTypeName","src":"5372:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5357:31:123"},"returnParameters":{"id":19689,"nodeType":"ParameterList","parameters":[],"src":"5404:0:123"},"scope":19818,"src":"5338:224:123","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":19729,"nodeType":"Block","src":"6121:135:123","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19717,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19713,"src":"6139:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":19718,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6150:3:123","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6150:10:123","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6139:21:123","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66","id":19721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6162:49:123","typeDescriptions":{"typeIdentifier":"t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b","typeString":"literal_string \"AccessControl: can only renounce roles for self\""},"value":"AccessControl: can only renounce roles for self"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b","typeString":"literal_string \"AccessControl: can only renounce roles for self\""}],"id":19716,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6131:7:123","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6131:81:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19723,"nodeType":"ExpressionStatement","src":"6131:81:123"},{"expression":{"arguments":[{"id":19725,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19711,"src":"6235:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19726,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19713,"src":"6241:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19724,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19817,"src":"6223:11:123","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":19727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6223:26:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19728,"nodeType":"ExpressionStatement","src":"6223:26:123"}]},"documentation":{"id":19709,"nodeType":"StructuredDocumentation","src":"5568:480:123","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `account`."},"functionSelector":"36568abe","id":19730,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nodeType":"FunctionDefinition","parameters":{"id":19714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19711,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19730,"src":"6075:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19710,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6075:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19713,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19730,"src":"6089:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19712,"name":"address","nodeType":"ElementaryTypeName","src":"6089:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6074:31:123"},"returnParameters":{"id":19715,"nodeType":"ParameterList","parameters":[],"src":"6121:0:123"},"scope":19818,"src":"6053:203:123","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":19743,"nodeType":"Block","src":"6889:42:123","statements":[{"expression":{"arguments":[{"id":19739,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19733,"src":"6910:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19740,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19735,"src":"6916:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19738,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19793,"src":"6899:10:123","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":19741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6899:25:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19742,"nodeType":"ExpressionStatement","src":"6899:25:123"}]},"documentation":{"id":19731,"nodeType":"StructuredDocumentation","src":"6262:554:123","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event. Note that unlike {grantRole}, this function doesn't perform any\n checks on the calling account.\n [WARNING]\n ====\n This function should only be called from the constructor when setting\n up the initial roles for the system.\n Using this function in any other way is effectively circumventing the admin\n system imposed by {AccessControl}.\n ===="},"id":19744,"implemented":true,"kind":"function","modifiers":[],"name":"_setupRole","nodeType":"FunctionDefinition","parameters":{"id":19736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19733,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19744,"src":"6841:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19732,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6841:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19735,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19744,"src":"6855:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19734,"name":"address","nodeType":"ElementaryTypeName","src":"6855:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6840:31:123"},"returnParameters":{"id":19737,"nodeType":"ParameterList","parameters":[],"src":"6889:0:123"},"scope":19818,"src":"6821:110:123","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":19768,"nodeType":"Block","src":"7129:123:123","statements":[{"eventCall":{"arguments":[{"id":19753,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19747,"src":"7161:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"baseExpression":{"id":19754,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"7167:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19756,"indexExpression":{"id":19755,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19747,"src":"7174:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7167:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19757,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":19553,"src":"7167:22:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19758,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19749,"src":"7191:9:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":19752,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19570,"src":"7144:16:123","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":19759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7144:57:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19760,"nodeType":"EmitStatement","src":"7139:62:123"},{"expression":{"id":19766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":19761,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"7211:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19763,"indexExpression":{"id":19762,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19747,"src":"7218:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7211:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19764,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":19553,"src":"7211:22:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19765,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19749,"src":"7236:9:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7211:34:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":19767,"nodeType":"ExpressionStatement","src":"7211:34:123"}]},"documentation":{"id":19745,"nodeType":"StructuredDocumentation","src":"6937:114:123","text":" @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."},"id":19769,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nodeType":"FunctionDefinition","parameters":{"id":19750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19747,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19769,"src":"7079:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19746,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7079:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19749,"mutability":"mutable","name":"adminRole","nodeType":"VariableDeclaration","scope":19769,"src":"7093:17:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19748,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7093:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7078:33:123"},"returnParameters":{"id":19751,"nodeType":"ParameterList","parameters":[],"src":"7129:0:123"},"scope":19818,"src":"7056:196:123","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":19792,"nodeType":"Block","src":"7317:123:123","statements":[{"condition":{"arguments":[{"id":19781,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19773,"src":"7356:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"baseExpression":{"id":19776,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"7331:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19778,"indexExpression":{"id":19777,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19771,"src":"7338:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7331:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19779,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"members","nodeType":"MemberAccess","referencedDeclaration":19551,"src":"7331:20:123","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":19780,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":6731,"src":"7331:24:123","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":19782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7331:33:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19791,"nodeType":"IfStatement","src":"7327:107:123","trueBody":{"id":19790,"nodeType":"Block","src":"7366:68:123","statements":[{"eventCall":{"arguments":[{"id":19784,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19771,"src":"7397:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19785,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19773,"src":"7403:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":19786,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7412:3:123","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7412:10:123","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":19783,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19579,"src":"7385:11:123","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":19788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7385:38:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19789,"nodeType":"EmitStatement","src":"7380:43:123"}]}}]},"id":19793,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nodeType":"FunctionDefinition","parameters":{"id":19774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19771,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19793,"src":"7278:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19770,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7278:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19773,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19793,"src":"7292:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19772,"name":"address","nodeType":"ElementaryTypeName","src":"7292:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7277:31:123"},"returnParameters":{"id":19775,"nodeType":"ParameterList","parameters":[],"src":"7317:0:123"},"scope":19818,"src":"7258:182:123","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":19816,"nodeType":"Block","src":"7506:126:123","statements":[{"condition":{"arguments":[{"id":19805,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19797,"src":"7548:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"baseExpression":{"id":19800,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19558,"src":"7520:6:123","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$19554_storage_$","typeString":"mapping(bytes32 => struct TestAccessControl.RoleData storage ref)"}},"id":19802,"indexExpression":{"id":19801,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19795,"src":"7527:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7520:12:123","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$19554_storage","typeString":"struct TestAccessControl.RoleData storage ref"}},"id":19803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"members","nodeType":"MemberAccess","referencedDeclaration":19551,"src":"7520:20:123","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6690_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":19804,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":6816,"src":"7520:27:123","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6690_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$6690_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":19806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7520:36:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19815,"nodeType":"IfStatement","src":"7516:110:123","trueBody":{"id":19814,"nodeType":"Block","src":"7558:68:123","statements":[{"eventCall":{"arguments":[{"id":19808,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19795,"src":"7589:4:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19809,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19797,"src":"7595:7:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":19810,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7604:3:123","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7604:10:123","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":19807,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19588,"src":"7577:11:123","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":19812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7577:38:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19813,"nodeType":"EmitStatement","src":"7572:43:123"}]}}]},"id":19817,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nodeType":"FunctionDefinition","parameters":{"id":19798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19795,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":19817,"src":"7467:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19794,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7467:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19797,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":19817,"src":"7481:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19796,"name":"address","nodeType":"ElementaryTypeName","src":"7481:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7466:31:123"},"returnParameters":{"id":19799,"nodeType":"ParameterList","parameters":[],"src":"7506:0:123"},"scope":19818,"src":"7446:186:123","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":19819,"src":"1613:6021:123"}],"src":"33:7602:123"},"id":123},"contracts/test/TestBalancerToken.sol":{"ast":{"absolutePath":"contracts/test/TestBalancerToken.sol","exportedSymbols":{"TestBalancerToken":[19922]},"id":19923,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19820,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:124"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","id":19821,"nodeType":"ImportDirective","scope":19923,"sourceUnit":6513,"src":"713:75:124","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol","id":19822,"nodeType":"ImportDirective","scope":19923,"sourceUnit":6570,"src":"789:83:124","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol","id":19823,"nodeType":"ImportDirective","scope":19923,"sourceUnit":6679,"src":"873:81:124","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/test/TestAccessControl.sol","file":"./TestAccessControl.sol","id":19824,"nodeType":"ImportDirective","scope":19923,"sourceUnit":19819,"src":"956:33:124","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19825,"name":"TestAccessControl","nodeType":"UserDefinedTypeName","referencedDeclaration":19818,"src":"1021:17:124","typeDescriptions":{"typeIdentifier":"t_contract$_TestAccessControl_$19818","typeString":"contract TestAccessControl"}},"id":19826,"nodeType":"InheritanceSpecifier","src":"1021:17:124"},{"baseName":{"id":19827,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":6512,"src":"1040:5:124","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$6512","typeString":"contract ERC20"}},"id":19828,"nodeType":"InheritanceSpecifier","src":"1040:5:124"},{"baseName":{"id":19829,"name":"ERC20Burnable","nodeType":"UserDefinedTypeName","referencedDeclaration":6569,"src":"1047:13:124","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Burnable_$6569","typeString":"contract ERC20Burnable"}},"id":19830,"nodeType":"InheritanceSpecifier","src":"1047:13:124"},{"baseName":{"id":19831,"name":"ERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":6678,"src":"1062:11:124","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Permit_$6678","typeString":"contract ERC20Permit"}},"id":19832,"nodeType":"InheritanceSpecifier","src":"1062:11:124"}],"contractDependencies":[2311,2447,2483,3308,6021,6512,6569,6678,19818],"contractKind":"contract","fullyImplemented":true,"id":19922,"linearizedBaseContracts":[19922,6678,3308,6021,2311,2483,6569,6512,2447,19818],"name":"TestBalancerToken","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"d5391393","id":19837,"mutability":"constant","name":"MINTER_ROLE","nodeType":"VariableDeclaration","scope":19922,"src":"1080:62:124","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19833,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1080:7:124","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"4d494e5445525f524f4c45","id":19835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1128:13:124","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6","typeString":"literal_string \"MINTER_ROLE\""},"value":"MINTER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6","typeString":"literal_string \"MINTER_ROLE\""}],"id":19834,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1118:9:124","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":19836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1118:24:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"7028e2cd","id":19842,"mutability":"constant","name":"SNAPSHOT_ROLE","nodeType":"VariableDeclaration","scope":19922,"src":"1148:66:124","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19838,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1148:7:124","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"534e415053484f545f524f4c45","id":19840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1198:15:124","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f","typeString":"literal_string \"SNAPSHOT_ROLE\""},"value":"SNAPSHOT_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f","typeString":"literal_string \"SNAPSHOT_ROLE\""}],"id":19839,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1188:9:124","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":19841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1188:26:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"anonymous":false,"id":19846,"name":"Snapshot","nodeType":"EventDefinition","parameters":{"id":19845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19844,"indexed":false,"mutability":"mutable","name":"id","nodeType":"VariableDeclaration","scope":19846,"src":"1236:10:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19843,"name":"uint256","nodeType":"ElementaryTypeName","src":"1236:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1235:12:124"},"src":"1221:27:124"},{"body":{"id":19881,"nodeType":"Block","src":"1391:164:124","statements":[{"expression":{"arguments":[{"hexValue":"3138","id":19863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1416:2:124","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"}],"id":19862,"name":"_setupDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6500,"src":"1401:14:124","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":19864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1401:18:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19865,"nodeType":"ExpressionStatement","src":"1401:18:124"},{"expression":{"arguments":[{"id":19867,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19561,"src":"1440:18:124","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19868,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19848,"src":"1460:5:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19866,"name":"_setupRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19744,"src":"1429:10:124","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":19869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1429:37:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19870,"nodeType":"ExpressionStatement","src":"1429:37:124"},{"expression":{"arguments":[{"id":19872,"name":"MINTER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19837,"src":"1487:11:124","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19873,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19848,"src":"1500:5:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19871,"name":"_setupRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19744,"src":"1476:10:124","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":19874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1476:30:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19875,"nodeType":"ExpressionStatement","src":"1476:30:124"},{"expression":{"arguments":[{"id":19877,"name":"SNAPSHOT_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19842,"src":"1527:13:124","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":19878,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19848,"src":"1542:5:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19876,"name":"_setupRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19744,"src":"1516:10:124","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":19879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1516:32:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19880,"nodeType":"ExpressionStatement","src":"1516:32:124"}]},"id":19882,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":19855,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19850,"src":"1359:4:124","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":19856,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19852,"src":"1365:6:124","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":19857,"modifierName":{"id":19854,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6512,"src":"1353:5:124","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$6512_$","typeString":"type(contract ERC20)"}},"nodeType":"ModifierInvocation","src":"1353:19:124"},{"arguments":[{"id":19859,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19850,"src":"1385:4:124","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":19860,"modifierName":{"id":19858,"name":"ERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6678,"src":"1373:11:124","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Permit_$6678_$","typeString":"type(contract ERC20Permit)"}},"nodeType":"ModifierInvocation","src":"1373:17:124"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19848,"mutability":"mutable","name":"admin","nodeType":"VariableDeclaration","scope":19882,"src":"1275:13:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19847,"name":"address","nodeType":"ElementaryTypeName","src":"1275:7:124","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19850,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":19882,"src":"1298:18:124","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19849,"name":"string","nodeType":"ElementaryTypeName","src":"1298:6:124","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19852,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":19882,"src":"1326:20:124","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19851,"name":"string","nodeType":"ElementaryTypeName","src":"1326:6:124","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1265:87:124"},"returnParameters":{"id":19861,"nodeType":"ParameterList","parameters":[],"src":"1391:0:124"},"scope":19922,"src":"1254:301:124","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":19903,"nodeType":"Block","src":"1619:106:124","statements":[{"expression":{"arguments":[{"arguments":[{"id":19891,"name":"MINTER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19837,"src":"1645:11:124","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":19892,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1658:3:124","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1658:10:124","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":19890,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19607,"src":"1637:7:124","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":19894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1637:32:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f545f4d494e544552","id":19895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1671:12:124","typeDescriptions":{"typeIdentifier":"t_stringliteral_4c0c5d721c8b7b55b3e9849de342348c28ccdebf6d5421ee0bcc928e5487b778","typeString":"literal_string \"NOT_MINTER\""},"value":"NOT_MINTER"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4c0c5d721c8b7b55b3e9849de342348c28ccdebf6d5421ee0bcc928e5487b778","typeString":"literal_string \"NOT_MINTER\""}],"id":19889,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1629:7:124","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1629:55:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19897,"nodeType":"ExpressionStatement","src":"1629:55:124"},{"expression":{"arguments":[{"id":19899,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19884,"src":"1700:9:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19900,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19886,"src":"1711:6:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19898,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6405,"src":"1694:5:124","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":19901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1694:24:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19902,"nodeType":"ExpressionStatement","src":"1694:24:124"}]},"functionSelector":"40c10f19","id":19904,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":19887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19884,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":19904,"src":"1575:17:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19883,"name":"address","nodeType":"ElementaryTypeName","src":"1575:7:124","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19886,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":19904,"src":"1594:14:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19885,"name":"uint256","nodeType":"ElementaryTypeName","src":"1594:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1574:35:124"},"returnParameters":{"id":19888,"nodeType":"ParameterList","parameters":[],"src":"1619:0:124"},"scope":19922,"src":"1561:164:124","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19920,"nodeType":"Block","src":"1760:105:124","statements":[{"expression":{"arguments":[{"arguments":[{"id":19909,"name":"SNAPSHOT_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19842,"src":"1786:13:124","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":19910,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1801:3:124","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1801:10:124","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":19908,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19607,"src":"1778:7:124","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":19912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1778:34:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f545f534e415053484f54544552","id":19913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1814:17:124","typeDescriptions":{"typeIdentifier":"t_stringliteral_57f285acbdfdaa12fc36b96a6f326bbbad439d962847f5b589c5ef66d041cd35","typeString":"literal_string \"NOT_SNAPSHOTTER\""},"value":"NOT_SNAPSHOTTER"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_57f285acbdfdaa12fc36b96a6f326bbbad439d962847f5b589c5ef66d041cd35","typeString":"literal_string \"NOT_SNAPSHOTTER\""}],"id":19907,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1770:7:124","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1770:62:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19915,"nodeType":"ExpressionStatement","src":"1770:62:124"},{"eventCall":{"arguments":[{"hexValue":"30","id":19917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1856:1:124","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":19916,"name":"Snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19846,"src":"1847:8:124","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":19918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1847:11:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19919,"nodeType":"EmitStatement","src":"1842:16:124"}]},"functionSelector":"9711715a","id":19921,"implemented":true,"kind":"function","modifiers":[],"name":"snapshot","nodeType":"FunctionDefinition","parameters":{"id":19905,"nodeType":"ParameterList","parameters":[],"src":"1748:2:124"},"returnParameters":{"id":19906,"nodeType":"ParameterList","parameters":[],"src":"1760:0:124"},"scope":19922,"src":"1731:134:124","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":19923,"src":"991:876:124"}],"src":"688:1180:124"},"id":124},"contracts/test/TestFeeDistributor.sol":{"ast":{"absolutePath":"contracts/test/TestFeeDistributor.sol","exportedSymbols":{"TestFeeDistributor":[19954]},"id":19955,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19924,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:125"},{"id":19925,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:125"},{"absolutePath":"contracts/fee-distribution/FeeDistributor.sol","file":"../fee-distribution/FeeDistributor.sol","id":19926,"nodeType":"ImportDirective","scope":19955,"sourceUnit":13821,"src":"747:48:125","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19927,"name":"FeeDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":13820,"src":"828:14:125","typeDescriptions":{"typeIdentifier":"t_contract$_FeeDistributor_$13820","typeString":"contract FeeDistributor"}},"id":19928,"nodeType":"InheritanceSpecifier","src":"828:14:125"}],"contractDependencies":[624,2293,2311,3308,3553,3603,6021,7187,13820],"contractKind":"contract","fullyImplemented":true,"id":19954,"linearizedBaseContracts":[19954,13820,7187,3553,3603,3308,6021,2311,2293,624],"name":"TestFeeDistributor","nodeType":"ContractDefinition","nodes":[{"body":{"id":19939,"nodeType":"Block","src":"948:64:125","statements":[]},"id":19940,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":19935,"name":"votingEscrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19930,"src":"923:12:125","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},{"id":19936,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19932,"src":"937:9:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19937,"modifierName":{"id":19934,"name":"FeeDistributor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13820,"src":"908:14:125","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FeeDistributor_$13820_$","typeString":"type(contract FeeDistributor)"}},"nodeType":"ModifierInvocation","src":"908:39:125"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19930,"mutability":"mutable","name":"votingEscrow","nodeType":"VariableDeclaration","scope":19940,"src":"861:26:125","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"},"typeName":{"id":19929,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":1559,"src":"861:13:125","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$1559","typeString":"contract IVotingEscrow"}},"visibility":"internal"},{"constant":false,"id":19932,"mutability":"mutable","name":"startTime","nodeType":"VariableDeclaration","scope":19940,"src":"889:17:125","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19931,"name":"uint256","nodeType":"ElementaryTypeName","src":"889:7:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"860:47:125"},"returnParameters":{"id":19938,"nodeType":"ParameterList","parameters":[],"src":"948:0:125"},"scope":19954,"src":"849:163:125","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":19952,"nodeType":"Block","src":"1102:62:125","statements":[{"expression":{"expression":{"baseExpression":{"id":19947,"name":"_userState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12426,"src":"1119:10:125","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserState_$12422_storage_$","typeString":"mapping(address => struct FeeDistributor.UserState storage ref)"}},"id":19949,"indexExpression":{"id":19948,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19942,"src":"1130:4:125","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1119:16:125","typeDescriptions":{"typeIdentifier":"t_struct$_UserState_$12422_storage","typeString":"struct FeeDistributor.UserState storage ref"}},"id":19950,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"lastEpochCheckpointed","nodeType":"MemberAccess","referencedDeclaration":12421,"src":"1119:38:125","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":19946,"id":19951,"nodeType":"Return","src":"1112:45:125"}]},"functionSelector":"286d5e7f","id":19953,"implemented":true,"kind":"function","modifiers":[],"name":"getUserLastEpochCheckpointed","nodeType":"FunctionDefinition","parameters":{"id":19943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19942,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":19953,"src":"1056:12:125","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19941,"name":"address","nodeType":"ElementaryTypeName","src":"1056:7:125","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1055:14:125"},"returnParameters":{"id":19946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19945,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19953,"src":"1093:7:125","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19944,"name":"uint256","nodeType":"ElementaryTypeName","src":"1093:7:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1092:9:125"},"scope":19954,"src":"1018:146:125","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":19955,"src":"797:369:125"}],"src":"688:479:125"},"id":125}},"contracts":{"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol":{"IArbitrumFeeProvider":{"abi":[{"inputs":[],"name":"getArbitrumFees","outputs":[{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"gasLimit","type":"uint64"},{"internalType":"uint64","name":"gasPrice","type":"uint64"},{"internalType":"uint64","name":"maxSubmissionCost","type":"uint64"}],"name":"setArbitrumFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getArbitrumFees()":"ac8288c0","setArbitrumFees(uint64,uint64,uint64)":"e9bde604"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getArbitrumFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasPrice\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxSubmissionCost\",\"type\":\"uint64\"}],\"name\":\"setArbitrumFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol\":\"IArbitrumFeeProvider\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol\":{\"keccak256\":\"0xc534a9120b1e85fdc2e40ae24a5264d4bb6fdbd458fe287fd8fe25a852bebe6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ba7317f70be2cdf2cdf81b1c2178a8297497e7bff697d9a001f7bdb01363d2b\",\"dweb:/ipfs/QmWBysYby5rywAfN6JQ9Dd6gdJf9jwLsQUyBPybnVvXe5z\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol":{"IAuthorizerAdaptor":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getVault()":"8d928af8","performAction(address,bytes)":"4036176a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"performAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"performAction(address,bytes)\":{\"params\":{\"data\":\"- Calldata to be sent to the target contract\",\"target\":\"- Address of the contract to be called\"},\"returns\":{\"_0\":\"The bytes encoded return value from the performed function call\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"performAction(address,bytes)\":{\"notice\":\"Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":\"IAuthorizerAdaptor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol":{"IAuthorizerAdaptorEntrypoint":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizerAdaptor","outputs":[{"internalType":"contract IAuthorizerAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getAuthorizerAdaptor()":"e758d36b","getVault()":"8d928af8","performAction(address,bytes)":"4036176a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizerAdaptor\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"performAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"performAction(address,bytes)\":{\"params\":{\"data\":\"- Calldata to be sent to the target contract\",\"target\":\"- Address of the contract to be called\"},\"returns\":{\"_0\":\"The bytes encoded return value from the performed function call\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getAuthorizerAdaptor()\":{\"notice\":\"Returns the Authorizer Adaptor\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"performAction(address,bytes)\":{\"notice\":\"Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\"}},\"notice\":\"Interface for `AuthorizerAdaptorEntrypoint`.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":\"IAuthorizerAdaptorEntrypoint\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x25b2a2ad63f9aa59c45f1a81a2f79733b8dcdce268cc9b1ac03866396f4b0d17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://efe9f30e6cab81587b738089165050d35533926703f4ad1da0f86452a69874ce\",\"dweb:/ipfs/QmcJoNP8NAEefchpG3qs3CwMw1qhxBJTgBMY4KY6g6qfUa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol":{"IBalancerMinter":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"uint256","name":"minted","type":"uint256"}],"name":"Minted","type":"event"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"allowed_to_mint_for","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getMinterApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"mintManyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mint_for","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[8]","name":"gauges","type":"address[8]"}],"name":"mint_many","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"}],"name":"setMinterApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"setMinterApprovalWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"toggle_approve_mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowed_to_mint_for(address,address)":"a0990033","getBalancerToken()":"c0039699","getMinterApproval(address,address)":"3c543bc6","mint(address)":"6a627842","mintFor(address,address)":"7504a15d","mintMany(address[])":"397ada21","mintManyFor(address[],address)":"3b9f7384","mint_for(address,address)":"27f18ae3","mint_many(address[8])":"a51e1904","minted(address,address)":"8b752bb0","setMinterApproval(address,bool)":"0de54ba0","setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)":"c6542794","toggle_approve_mint(address)":"dd289d60"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed_to_mint_for\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinterApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"mintMany\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintManyFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mint_for\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[8]\",\"name\":\"gauges\",\"type\":\"address[8]\"}],\"name\":\"mint_many\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"minted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMinterApprovalWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"toggle_approve_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Base minter interface, applicable to Mainnet minter or L2 pseudo minters.\",\"kind\":\"dev\",\"methods\":{\"mint(address)\":{\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\"}},\"mintFor(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mintMany(address[])\":{\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"mintManyFor(address[],address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\",\"user\":\"Address to mint to\"}},\"mint_for(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mint_many(address[8])\":{\"details\":\"This function is not recommended as `mintMany()` is more flexible and gas efficient\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowed_to_mint_for(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"},\"getMinterApproval(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"mint(address)\":{\"notice\":\"Mint everything which belongs to `msg.sender` and send to them\"},\"mintFor(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mintMany(address[])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"mintManyFor(address[],address)\":{\"notice\":\"Mint tokens for `user` across multiple gauges\"},\"mint_for(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mint_many(address[8])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"minted(address,address)\":{\"notice\":\"The total number of tokens minted for `user` from `gauge`\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on your behalf\"},\"setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing them.\"},\"toggle_approve_mint(address)\":{\"notice\":\"Toggle whether `minter` is approved to mint tokens for `user`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":\"IBalancerMinter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol":{"IBalancerToken":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNAPSHOT_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","MINTER_ROLE()":"d5391393","SNAPSHOT_ROLE()":"7028e2cd","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","mint(address,uint256)":"40c10f19","revokeRole(bytes32,address)":"d547741f","snapshot()":"9711715a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNAPSHOT_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":\"IBalancerToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol":{"IBalancerTokenAdmin":{"abi":[{"inputs":[],"name":"INITIAL_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startEpochTimeWrite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"INITIAL_RATE()":"4dbac733","RATE_DENOMINATOR()":"7efad8e0","RATE_REDUCTION_COEFFICIENT()":"21609bbf","RATE_REDUCTION_TIME()":"b87b5616","activate()":"0f15f4c0","getActionId(bytes4)":"851c1bb3","getBalancerToken()":"c0039699","mint(address,uint256)":"40c10f19","rate()":"2c4e722e","startEpochTimeWrite()":"a228bced"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"INITIAL_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_COEFFICIENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startEpochTimeWrite\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":\"IBalancerTokenAdmin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol":{"IChildChainGauge":{"abi":[{"inputs":[],"name":"factory","outputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lpToken","type":"address"},{"internalType":"string","name":"version","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"factory()":"c45a0155","initialize(address,string)":"f399e22e","integrate_fraction(address)":"09400707","user_checkpoint(address)":"4b820093","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lpToken\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"initialize(address,string)\":{\"params\":{\"lpToken\":\"Pool allowed to stake in this gauge.\",\"version\":\"Gauge version string identifier.\"}},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}},\"version()\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"factory()\":{\"notice\":\"Returns gauge factory address.\"},\"initialize(address,string)\":{\"notice\":\"Proxy constructor.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"user_checkpoint(address)\":{\"notice\":\"Records a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\":\"IChildChainGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\":{\"keccak256\":\"0xffafd017b9f43c8cc47f59e85e8a5354e4028110fb6c7fdbaeb569018f35e4d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bf250a0d068a2c8203dda057beabbf49705114e51086e885d7dc283a0cf3a249\",\"dweb:/ipfs/QmTBZvND9qY9k4EQYkfA9hYVSP3DxaXgKwuvDAQFDfxic2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol":{"IChildChainLiquidityGaugeFactory":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"streamer","type":"address"}],"name":"RewardsOnlyGaugeCreated","type":"event"},{"inputs":[],"name":"getChildChainStreamerImplementation","outputs":[{"internalType":"contract IChildChainStreamer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"contract ILiquidityGauge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"getGaugePool","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"getGaugeStreamer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolGauge","outputs":[{"internalType":"contract ILiquidityGauge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolStreamer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"streamer","type":"address"}],"name":"isStreamerFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getChildChainStreamerImplementation()":"f9e0a13e","getGaugeImplementation()":"39312dee","getGaugePool(address)":"744a65dd","getGaugeStreamer(address)":"90b20087","getPoolGauge(address)":"a8ea6875","getPoolStreamer(address)":"8a4ffeb0","isGaugeFromFactory(address)":"ce3cc8bd","isStreamerFromFactory(address)":"cbda9327"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"streamer\",\"type\":\"address\"}],\"name\":\"RewardsOnlyGaugeCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getChildChainStreamerImplementation\",\"outputs\":[{\"internalType\":\"contract IChildChainStreamer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"contract ILiquidityGauge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"getGaugePool\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"getGaugeStreamer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolGauge\",\"outputs\":[{\"internalType\":\"contract ILiquidityGauge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolStreamer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"streamer\",\"type\":\"address\"}],\"name\":\"isStreamerFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getChildChainStreamerImplementation()\":{\"notice\":\"Returns the address of the implementation used for streamer deployments.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"getGaugePool(address)\":{\"notice\":\"Returns the address of the pool which `gauge` belongs.\"},\"getGaugeStreamer(address)\":{\"notice\":\"Returns the address of the streamer belonging to `gauge`.\"},\"getPoolGauge(address)\":{\"notice\":\"Returns the address of the gauge belonging to `pool`.\"},\"getPoolStreamer(address)\":{\"notice\":\"Returns the address of the streamer belonging to `pool`'s gauge.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"},\"isStreamerFromFactory(address)\":{\"notice\":\"Returns true if `streamer` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol\":\"IChildChainLiquidityGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol\":{\"keccak256\":\"0x842d0fc23e9bc0c59c2c11d042a409328533e4424578c96727d33db8092bf51a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://50a546df376e1772a1611dfa17d0e35adf29cdae502df736f65c67c4b94c0188\",\"dweb:/ipfs/QmatAq7AvGfnZQ7xDYgPUk5obubqJkJWpFoLE8LPFqccsf\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\":{\"keccak256\":\"0x3cf2370032a789025cffe8d0c613274213fd4e1ceb88cef1c2b039a6d0d08261\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1788ecb804b061fa04678ce311020d66e25b201cf18d452ea290bbc9af12e504\",\"dweb:/ipfs/Qmf84ANUiZtoZHEsbymn7NSZSGikMovYZUVqiPHwVrbBPJ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol\":{\"keccak256\":\"0x8c09c3f372e07adf790d55607401dfa60d8ec2b591f39de772efdf887d965d11\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6cbfa8f8f004ec1cc00739f51bd00763d08600e0bf827c1be4cc21a4afb26874\",\"dweb:/ipfs/QmTxDYJA8y2cJdxHfCq6NLK812WGnxFehTF9bW4n8xa1zx\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol":{"IChildChainStreamer":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"add_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"get_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_reward(address,address,uint256)":"661ab0b2","get_reward()":"1afe22a6","initialize(address)":"c4d66de8","reward_tokens(uint256)":"54c49fe9"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"add_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"get_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\":\"IChildChainStreamer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\":{\"keccak256\":\"0x3cf2370032a789025cffe8d0c613274213fd4e1ceb88cef1c2b039a6d0d08261\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1788ecb804b061fa04678ce311020d66e25b201cf18d452ea290bbc9af12e504\",\"dweb:/ipfs/Qmf84ANUiZtoZHEsbymn7NSZSGikMovYZUVqiPHwVrbBPJ\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol":{"IFeeDistributor":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastCheckpointTimestamp","type":"uint256"}],"name":"TokenCheckpointed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"userTokenTimeCursor","type":"uint256"}],"name":"TokensClaimed","type":"event"},{"inputs":[],"name":"checkpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"checkpointToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"checkpointTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkpointUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"claimToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"claimTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"depositTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenLastBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getTokensDistributedInWeek","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getTotalSupplyAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getUserBalanceAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getUserTokenTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"checkpoint()":"c2c4c5c1","checkpointToken(address)":"3902b9bc","checkpointTokens(address[])":"905d10ac","checkpointUser(address)":"14866e08","claimToken(address,address)":"ca31879d","claimTokens(address,address[])":"88720467","depositToken(address,uint256)":"338b5dea","depositTokens(address[],uint256[])":"7b8d6221","getTimeCursor()":"82aa5ad4","getTokenLastBalance(address)":"2308805b","getTokenTimeCursor(address)":"acbc1428","getTokensDistributedInWeek(address,uint256)":"d3dc4ca1","getTotalSupplyAtTimestamp(uint256)":"4f3c5090","getUserBalanceAtTimestamp(address,uint256)":"de681faf","getUserTimeCursor(address)":"876e69a1","getUserTokenTimeCursor(address,address)":"8050a7ee","getVotingEscrow()":"08b0308a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastCheckpointTimestamp\",\"type\":\"uint256\"}],\"name\":\"TokenCheckpointed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"userTokenTimeCursor\",\"type\":\"uint256\"}],\"name\":\"TokensClaimed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"checkpointToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"checkpointTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"checkpointUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"depositTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenLastBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getTokensDistributedInWeek\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getTotalSupplyAtTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getUserBalanceAtTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getUserTokenTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Supports distributing arbitrarily many different tokens. In order to start distributing a new token to veBAL holders simply transfer the tokens to the `FeeDistributor` contract and then call `checkpointToken`.\",\"kind\":\"dev\",\"methods\":{\"checkpointToken(address)\":{\"details\":\"Any `token` balance held by the FeeDistributor above that which is returned by `getTokenLastBalance` will be distributed evenly across the time period since `token` was last checkpointed. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\",\"params\":{\"token\":\"- The ERC20 token address to be checkpointed.\"}},\"checkpointTokens(address[])\":{\"details\":\"A version of `checkpointToken` which supports checkpointing multiple tokens. See `checkpointToken` for more details.\",\"params\":{\"tokens\":\"- An array of ERC20 token addresses to be checkpointed.\"}},\"checkpointUser(address)\":{\"params\":{\"user\":\"- The address of the user to be checkpointed.\"}},\"claimToken(address,address)\":{\"details\":\"It's not necessary to explicitly checkpoint before calling this function, it will ensure the FeeDistributor is up to date before calculating the amount of tokens to be claimed.\",\"params\":{\"token\":\"- The ERC20 token address to be claimed.\",\"user\":\"- The user on behalf of which to claim.\"},\"returns\":{\"_0\":\"The amount of `token` sent to `user` as a result of claiming.\"}},\"claimTokens(address,address[])\":{\"details\":\"A version of `claimToken` which supports claiming multiple `tokens` on behalf of `user`. See `claimToken` for more details.\",\"params\":{\"tokens\":\"- An array of ERC20 token addresses to be claimed.\",\"user\":\"- The user on behalf of which to claim.\"},\"returns\":{\"_0\":\"An array of the amounts of each token in `tokens` sent to `user` as a result of claiming.\"}},\"depositToken(address,uint256)\":{\"details\":\"Sending tokens directly to the FeeDistributor instead of using `depositTokens` may result in tokens being retroactively distributed to past weeks, or for the distribution to carry over to future weeks. If for some reason `depositTokens` cannot be called, in order to ensure that all tokens are correctly distributed manually call `checkpointToken` before and after the token transfer.\",\"params\":{\"amount\":\"- The amount of tokens to deposit.\",\"token\":\"- The ERC20 token address to distribute.\"}},\"depositTokens(address[],uint256[])\":{\"details\":\"A version of `depositToken` which supports depositing multiple `tokens` at once. See `depositToken` for more details.\",\"params\":{\"amounts\":\"- An array of token amounts to deposit.\",\"tokens\":\"- An array of ERC20 token addresses to distribute.\"}},\"getTokenTimeCursor(address)\":{\"params\":{\"token\":\"- The ERC20 token address to query.\"}},\"getTokensDistributedInWeek(address,uint256)\":{\"params\":{\"timestamp\":\"- The timestamp corresponding to the beginning of the week of interest.\",\"token\":\"- The ERC20 token address to query.\"}},\"getTotalSupplyAtTimestamp(uint256)\":{\"details\":\"Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values. This function requires the contract to have been checkpointed past `timestamp` so that the supply is cached.\",\"params\":{\"timestamp\":\"- The timestamp at which to read the cached total supply at.\"}},\"getUserBalanceAtTimestamp(address,uint256)\":{\"details\":\"Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values. This function requires `user` to have been checkpointed past `timestamp` so that their balance is cached.\",\"params\":{\"timestamp\":\"- The timestamp at which to read the `user`'s cached balance at.\",\"user\":\"- The address of the user of which to read the cached balance of.\"}},\"getUserTimeCursor(address)\":{\"params\":{\"user\":\"- The address of the user to query.\"}},\"getUserTokenTimeCursor(address,address)\":{\"params\":{\"token\":\"- The ERC20 token address to query.\",\"user\":\"- The address of the user to query.\"}}},\"title\":\"Fee Distributor\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"checkpoint()\":{\"notice\":\"Caches the total supply of veBAL at the beginning of each week. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\"},\"checkpointToken(address)\":{\"notice\":\"Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\"},\"checkpointTokens(address[])\":{\"notice\":\"Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\"},\"checkpointUser(address)\":{\"notice\":\"Caches the user's balance of veBAL at the beginning of each week. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\"},\"claimToken(address,address)\":{\"notice\":\"Claims all pending distributions of the provided token for a user.\"},\"claimTokens(address,address[])\":{\"notice\":\"Claims a number of tokens on behalf of a user.\"},\"depositToken(address,uint256)\":{\"notice\":\"Deposits tokens to be distributed in the current week.\"},\"depositTokens(address[],uint256[])\":{\"notice\":\"Deposits tokens to be distributed in the current week.\"},\"getTimeCursor()\":{\"notice\":\"Returns the global time cursor representing the most earliest uncheckpointed week.\"},\"getTokenLastBalance(address)\":{\"notice\":\"Returns the FeeDistributor's cached balance of `token`.\"},\"getTokenTimeCursor(address)\":{\"notice\":\"Returns the token-level time cursor storing the timestamp at up to which tokens have been distributed.\"},\"getTokensDistributedInWeek(address,uint256)\":{\"notice\":\"Returns the amount of `token` which the FeeDistributor received in the week beginning at `timestamp`.\"},\"getTotalSupplyAtTimestamp(uint256)\":{\"notice\":\"Returns the cached total supply of veBAL as of the provided timestamp.\"},\"getUserBalanceAtTimestamp(address,uint256)\":{\"notice\":\"Returns the user's cached balance of veBAL as of the provided timestamp.\"},\"getUserTimeCursor(address)\":{\"notice\":\"Returns the user-level time cursor representing the most earliest uncheckpointed week.\"},\"getUserTokenTimeCursor(address,address)\":{\"notice\":\"Returns the user-level time cursor storing the timestamp of the latest token distribution claimed.\"},\"getVotingEscrow()\":{\"notice\":\"Returns the VotingEscrow (veBAL) token contract\"}},\"notice\":\"Distributes any tokens transferred to the contract (e.g. Protocol fees and any BAL emissions) among veBAL holders proportionally based on a snapshot of the week at which the tokens are sent to the FeeDistributor contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\":\"IFeeDistributor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\":{\"keccak256\":\"0x250e4e6dcde3cf83d4d2822e9593c3138f6518ca95d88a0156a292557605640e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a2596b2242650aade0987677bfee7f4ee1359d588244b03cd1b65542f4f06252\",\"dweb:/ipfs/Qmbrb2Lp6suCPngH9sBzmaDBxET6YD6pBH1T8crGw29Cqi\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol":{"IGaugeAdder":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"},{"indexed":false,"internalType":"contract ILiquidityGaugeFactory","name":"gaugeFactory","type":"address"}],"name":"GaugeFactorySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"}],"name":"GaugeTypeAdded","type":"event"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"string","name":"gaugeType","type":"string"}],"name":"addGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"addGaugeType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizerAdaptorEntrypoint","outputs":[{"internalType":"contract IAuthorizerAdaptorEntrypoint","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"getFactoryForGaugeType","outputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeController","outputs":[{"internalType":"contract IGaugeController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getGaugeTypeAtIndex","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeTypes","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeTypesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"string","name":"gaugeType","type":"string"}],"name":"isGaugeFromValidFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"isValidGaugeType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"factory","type":"address"},{"internalType":"string","name":"gaugeType","type":"string"}],"name":"setGaugeFactory","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addGauge(address,string)":"5bf71434","addGaugeType(string)":"231856fa","getActionId(bytes4)":"851c1bb3","getAuthorizerAdaptorEntrypoint()":"7afcf0e6","getFactoryForGaugeType(string)":"572cb6a5","getGaugeController()":"58de9ade","getGaugeTypeAtIndex(uint256)":"08ceb030","getGaugeTypes()":"afcb1a86","getGaugeTypesCount()":"96432aeb","isGaugeFromValidFactory(address,string)":"a0ade33e","isValidGaugeType(string)":"16e772bc","setGaugeFactory(address,string)":"066edd7a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"gaugeFactory\",\"type\":\"address\"}],\"name\":\"GaugeFactorySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"GaugeTypeAdded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"addGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"addGaugeType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizerAdaptorEntrypoint\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptorEntrypoint\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"getFactoryForGaugeType\",\"outputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeController\",\"outputs\":[{\"internalType\":\"contract IGaugeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getGaugeTypeAtIndex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeTypes\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeTypesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"isGaugeFromValidFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"isValidGaugeType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"setGaugeFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addGauge(address,string)\":{\"details\":\"When adding gauges for L2 networks or sidechains, this must be called with the address of the *root* gauge which is deployed on Ethereum. It should *not* be called with the address of the child gauge which is deployed on the L2 / sidechain. If the gauge added is an Ethereum gauge, it cannot be a gauge for the 80BAL-20WETH pool.\"},\"addGaugeType(string)\":{\"params\":{\"gaugeType\":\"Name of the new gauge type.\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"setGaugeFactory(address,string)\":{\"details\":\"This function can either set a new factory or replace an existing one.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addGauge(address,string)\":{\"notice\":\"Adds a new gauge to the GaugeController for the given `gaugeType` type.\"},\"addGaugeType(string)\":{\"notice\":\"Adds a new `gaugeType` corresponding to a new network, which allows setting a factory and adding gauges for the type later on.\"},\"getAuthorizerAdaptorEntrypoint()\":{\"notice\":\"Returns the address of the Authorizer adaptor entrypoint contract.\"},\"getFactoryForGaugeType(string)\":{\"notice\":\"Returns the factory for gauge type `gaugeType`.\"},\"getGaugeController()\":{\"notice\":\"Returns the address of the Gauge Controller\"},\"getGaugeTypeAtIndex(uint256)\":{\"notice\":\"Returns gauge type name registered at the given index.\"},\"getGaugeTypes()\":{\"notice\":\"Returns the list of gauge types.\"},\"getGaugeTypesCount()\":{\"notice\":\"Returns the number of gauge types.\"},\"isGaugeFromValidFactory(address,string)\":{\"notice\":\"Returns true if `gauge` has been deployed by the factory for the gauge type `gaugeType`. Note that if a gauge type's factory changes then this function will start returning false for previously valid gauges.\"},\"isValidGaugeType(string)\":{\"notice\":\"Returns true if the given gauge type is valid; false otherwise.\"},\"setGaugeFactory(address,string)\":{\"notice\":\"Sets `factory` as the allowlisted factory contract for gauges with type `gaugeType`.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol\":\"IGaugeAdder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x25b2a2ad63f9aa59c45f1a81a2f79733b8dcdce268cc9b1ac03866396f4b0d17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://efe9f30e6cab81587b738089165050d35533926703f4ad1da0f86452a69874ce\",\"dweb:/ipfs/QmcJoNP8NAEefchpG3qs3CwMw1qhxBJTgBMY4KY6g6qfUa\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol\":{\"keccak256\":\"0x50d40373e50d13566dbb624ac65494f70835aa52ff553e1185df480feae6ecd8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6038ec50171ea847ca9aeeec4af6e9721bcba35223d364f832da5f269e8a722\",\"dweb:/ipfs/QmdvyixjrpFud1kAS8un3wje2xUjrY82BRL7sUHqKvLJq2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol":{"IGaugeController":{"abi":[{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"int128","name":"gaugeType","type":"int128"}],"name":"add_gauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"weight","type":"uint256"}],"name":"add_type","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"contract IAuthorizerAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int128","name":"typeId","type":"int128"},{"internalType":"uint256","name":"weight","type":"uint256"}],"name":"change_type_weight","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"checkpoint_gauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"gauge_exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"gauge_relative_weight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"gauge_types","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"n_gauge_types","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"time_weight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"voting_escrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_gauge(address,int128)":"3a04f900","add_type(string,uint256)":"92d0d232","admin()":"f851a440","change_type_weight(int128,uint256)":"db1ca260","checkpoint_gauge(address)":"615e5237","gauge_exists(address)":"61df1bf9","gauge_relative_weight(address,uint256)":"d3078c94","gauge_types(address)":"3f9095b7","n_gauge_types()":"9fba03a1","time_weight(address)":"a4d7a250","token()":"fc0c546a","voting_escrow()":"dfe05031"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"int128\",\"name\":\"gaugeType\",\"type\":\"int128\"}],\"name\":\"add_gauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"add_type\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"typeId\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"change_type_weight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"checkpoint_gauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"gauge_exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"gauge_relative_weight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"gauge_types\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n_gauge_types\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"time_weight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"voting_escrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":\"IGaugeController\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol":{"IL1StandardBridge":{"abi":[{"inputs":[{"internalType":"address","name":"_l1Token","type":"address"},{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_l2Gas","type":"uint32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"depositERC20To","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"depositERC20To(address,address,address,uint256,uint32,bytes)":"838b2520"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_l2Gas\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"depositERC20To\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Standard token bridging interface, common to Optimism and Base networks.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\":\"IL1StandardBridge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\":{\"keccak256\":\"0x31b489cbd755b3c789115af4cf3d7af2da15f59030345ac29ecf26a033fc806a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2cc164ca032440222b7984aebbad6a46a6c82eef33564d1c6d78408bafab9934\",\"dweb:/ipfs/QmdgixtcWUX8CFhrTkUiAAmSkpMG2FsZnK18QywDhFoFcp\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol":{"IL2LayerZeroDelegation":{"abi":[{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"onVeBalBridged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"onVeBalSupplyUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"onVeBalBridged(address)":"df130bfe","onVeBalSupplyUpdate()":"96345fb5"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"onVeBalBridged\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onVeBalSupplyUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onVeBalBridged(address)\":{\"params\":{\"user\":\"The user whose veBAL balance was updated.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onVeBalBridged(address)\":{\"notice\":\"Called whenever the veBAL balance of a user is updated in a L2 chain.\"},\"onVeBalSupplyUpdate()\":{\"notice\":\"Called whenever the total veBAL supply is updated in a L2 chain.\"}},\"notice\":\"Minimal hook interface to be called whenever the veBAL balance of a user is updated in a L2 chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\":\"IL2LayerZeroDelegation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\":{\"keccak256\":\"0xbeed8a8a1802aede5aa6670554125c5938ea06fc5a96c1b75dbc93d1dd586048\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5cf7cef349eba6938df4d8993dcab2b16775b2daf0cc0d5ad71d91f27221eb00\",\"dweb:/ipfs/QmS22HyJFUggLjLx9WABDcMPq6XqC3f4Q23NrKv6CmnkL5\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol":{"ILMGetters":{"abi":[{"inputs":[],"name":"getBalancerTokenAdmin","outputs":[{"internalType":"contract IBalancerTokenAdmin","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeController","outputs":[{"internalType":"contract IGaugeController","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getBalancerTokenAdmin()":"e6dec36f","getGaugeController()":"58de9ade"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getBalancerTokenAdmin\",\"outputs\":[{\"internalType\":\"contract IBalancerTokenAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeController\",\"outputs\":[{\"internalType\":\"contract IGaugeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getBalancerTokenAdmin()\":{\"notice\":\"Returns the address of the Balancer Token Admin contract\"},\"getGaugeController()\":{\"notice\":\"Returns the address of the Gauge Controller\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":\"ILMGetters\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol":{"ILiquidityGauge":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getCappedRelativeWeight(uint256)":"14e956f5","getRelativeWeightCap()":"83f5c39b","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"},\"user_checkpoint(address)\":{\"notice\":\"Record a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":\"ILiquidityGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol":{"ILiquidityGaugeFactory":{"abi":[{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":\"ILiquidityGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol":{"IMainnetBalancerMinter":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"uint256","name":"minted","type":"uint256"}],"name":"Minted","type":"event"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"allowed_to_mint_for","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerTokenAdmin","outputs":[{"internalType":"contract IBalancerTokenAdmin","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeController","outputs":[{"internalType":"contract IGaugeController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getMinterApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"mintManyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mint_for","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[8]","name":"gauges","type":"address[8]"}],"name":"mint_many","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"}],"name":"setMinterApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"setMinterApprovalWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"toggle_approve_mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowed_to_mint_for(address,address)":"a0990033","getBalancerToken()":"c0039699","getBalancerTokenAdmin()":"e6dec36f","getGaugeController()":"58de9ade","getMinterApproval(address,address)":"3c543bc6","mint(address)":"6a627842","mintFor(address,address)":"7504a15d","mintMany(address[])":"397ada21","mintManyFor(address[],address)":"3b9f7384","mint_for(address,address)":"27f18ae3","mint_many(address[8])":"a51e1904","minted(address,address)":"8b752bb0","setMinterApproval(address,bool)":"0de54ba0","setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)":"c6542794","toggle_approve_mint(address)":"dd289d60"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed_to_mint_for\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerTokenAdmin\",\"outputs\":[{\"internalType\":\"contract IBalancerTokenAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeController\",\"outputs\":[{\"internalType\":\"contract IGaugeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinterApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"mintMany\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintManyFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mint_for\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[8]\",\"name\":\"gauges\",\"type\":\"address[8]\"}],\"name\":\"mint_many\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"minted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMinterApprovalWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"toggle_approve_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Full L1 Balancer minter interface with singleton getters.\",\"kind\":\"dev\",\"methods\":{\"mint(address)\":{\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\"}},\"mintFor(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mintMany(address[])\":{\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"mintManyFor(address[],address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\",\"user\":\"Address to mint to\"}},\"mint_for(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mint_many(address[8])\":{\"details\":\"This function is not recommended as `mintMany()` is more flexible and gas efficient\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowed_to_mint_for(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"},\"getBalancerTokenAdmin()\":{\"notice\":\"Returns the address of the Balancer Token Admin contract\"},\"getGaugeController()\":{\"notice\":\"Returns the address of the Gauge Controller\"},\"getMinterApproval(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"mint(address)\":{\"notice\":\"Mint everything which belongs to `msg.sender` and send to them\"},\"mintFor(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mintMany(address[])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"mintManyFor(address[],address)\":{\"notice\":\"Mint tokens for `user` across multiple gauges\"},\"mint_for(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mint_many(address[8])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"minted(address,address)\":{\"notice\":\"The total number of tokens minted for `user` from `gauge`\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on your behalf\"},\"setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing them.\"},\"toggle_approve_mint(address)\":{\"notice\":\"Toggle whether `minter` is approved to mint tokens for `user`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":\"IMainnetBalancerMinter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol":{"IOmniVotingEscrow":{"abi":[{"inputs":[{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"bool","name":"_useZro","type":"bool"},{"internalType":"bytes","name":"_adapterParams","type":"bytes"}],"name":"estimateSendUserBalance","outputs":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"zroFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"address payable","name":"_refundAddress","type":"address"},{"internalType":"address","name":"_zroPaymentAddress","type":"address"},{"internalType":"bytes","name":"_adapterParams","type":"bytes"}],"name":"sendUserBalance","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"estimateSendUserBalance(uint16,bool,bytes)":"65d092d0","sendUserBalance(address,uint16,address,address,bytes)":"4a759489"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"_useZro\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_adapterParams\",\"type\":\"bytes\"}],\"name\":\"estimateSendUserBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zroFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"},{\"internalType\":\"address payable\",\"name\":\"_refundAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zroPaymentAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_adapterParams\",\"type\":\"bytes\"}],\"name\":\"sendUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Partial voting escrow bridge interface. See https://github.com/LayerZero-Labs/lz_gauges/blob/main/contracts/OmniVotingEscrow.sol for reference.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol\":\"IOmniVotingEscrow\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol\":{\"keccak256\":\"0xd15a09a7f4b4cca895c325a5d4f5469d368ea95fcf81139c6f9b7a6ff98ebf58\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f5ee21f5ff34cf4f4fb65bbef37229a84cce97e7ae2c46f26b6b5356db04fa56\",\"dweb:/ipfs/Qmc5Lukprx5rxNq4om9uyJR1jiNVFMxQxbWQrpGuZhGtsW\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol":{"IOmniVotingEscrowAdaptor":{"abi":[{"inputs":[{"internalType":"uint16","name":"_dstChainId","type":"uint16"}],"name":"estimateSendUserBalance","outputs":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"zroFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"address payable","name":"_refundAddress","type":"address"}],"name":"sendUserBalance","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"estimateSendUserBalance(uint16)":"ecc4c583","sendUserBalance(address,uint16,address)":"57fb8345"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"}],\"name\":\"estimateSendUserBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zroFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"},{\"internalType\":\"address payable\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"sendUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for `OmniVotingEscrowAdaptor`.\",\"kind\":\"dev\",\"methods\":{\"estimateSendUserBalance(uint16)\":{\"details\":\"Reverts if `OmniVotingEscrow` is not set.\",\"params\":{\"_dstChainId\":\"- Destination chain ID.\"},\"returns\":{\"nativeFee\":\"- Native fee reported by the omni voting escrow.\",\"zroFee\":\"- Layer zero fee reported by the omni voting escrow.\"}},\"sendUserBalance(address,uint16,address)\":{\"details\":\"Reverts if `OmniVotingEscrow` is not set.\",\"params\":{\"_dstChainId\":\"- Destination chain ID.\",\"_refundAddress\":\"- Address where to return excess ETH.\",\"_user\":\"- User to bridge the balance from.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"estimateSendUserBalance(uint16)\":{\"notice\":\"Forwards `estimateSendUserBalance` call to omni voting escrow.\"},\"sendUserBalance(address,uint16,address)\":{\"notice\":\"Forwards `sendUserBalance` call to omni voting escrow.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol\":\"IOmniVotingEscrowAdaptor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol\":{\"keccak256\":\"0xd3a86f1eb7aadba25221c8935ae888816487ea6ba4d04c3a5f4789d7b061ac90\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ca65ef1eebc274a1b28abee0d1514f4c18334583c13e39672a80201f0481304f\",\"dweb:/ipfs/QmSs5kDN8rGfbCmkQihP1uUbTtAc9wfSzSuPTpp6dErVWk\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol":{"IOmniVotingEscrowAdaptorSettings":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"newAdapterParams","type":"bytes"}],"name":"AdapterParamsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IOmniVotingEscrow","name":"newOmniVotingEscrow","type":"address"}],"name":"OmniVotingEscrowUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"newUseZero","type":"bool"}],"name":"UseZeroUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newZeroPaymentAddress","type":"address"}],"name":"ZeroPaymentAddressUpdated","type":"event"},{"inputs":[],"name":"getAdapterParams","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOmniVotingEscrow","outputs":[{"internalType":"contract IOmniVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUseZero","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getZeroPaymentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"adapterParams","type":"bytes"}],"name":"setAdapterParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IOmniVotingEscrow","name":"omniVotingEscrow","type":"address"}],"name":"setOmniVotingEscrow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"useZro","type":"bool"}],"name":"setUseZero","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"paymentAddress","type":"address"}],"name":"setZeroPaymentAddress","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getAdapterParams()":"4cfde448","getOmniVotingEscrow()":"550f2f7f","getUseZero()":"00986fe0","getZeroPaymentAddress()":"0943b7b8","setAdapterParams(bytes)":"d56b6a4a","setOmniVotingEscrow(address)":"09d401f9","setUseZero(bool)":"299fd6fc","setZeroPaymentAddress(address)":"e241e489"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newAdapterParams\",\"type\":\"bytes\"}],\"name\":\"AdapterParamsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IOmniVotingEscrow\",\"name\":\"newOmniVotingEscrow\",\"type\":\"address\"}],\"name\":\"OmniVotingEscrowUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"newUseZero\",\"type\":\"bool\"}],\"name\":\"UseZeroUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newZeroPaymentAddress\",\"type\":\"address\"}],\"name\":\"ZeroPaymentAddressUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAdapterParams\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOmniVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IOmniVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUseZero\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getZeroPaymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adapterParams\",\"type\":\"bytes\"}],\"name\":\"setAdapterParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IOmniVotingEscrow\",\"name\":\"omniVotingEscrow\",\"type\":\"address\"}],\"name\":\"setOmniVotingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"useZro\",\"type\":\"bool\"}],\"name\":\"setUseZero\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"paymentAddress\",\"type\":\"address\"}],\"name\":\"setZeroPaymentAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for `OmniVotingEscrowAdaptor` settings.\",\"kind\":\"dev\",\"methods\":{\"setAdapterParams(bytes)\":{\"details\":\"Emits `AdapterParamsUpdated` event.\"},\"setOmniVotingEscrow(address)\":{\"details\":\"This step is required before creating any remapping in the `VotingEscrowRemapper`. Omni voting escrow is not set in the constructor to avoid circular dependencies. Emits `OmniVotingEscrowUpdated` event.\",\"params\":{\"omniVotingEscrow\":\"- Address of the omni voting escrow contract.\"}},\"setUseZero(bool)\":{\"details\":\"Emits `UseZeroUpdated` event.\"},\"setZeroPaymentAddress(address)\":{\"details\":\"Emits `ZeroPaymentAddressUpdated` event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAdapterParams()\":{\"notice\":\"Returns `_adapterParams` parameter used in `estimateSendUserBalance` and `sendUserBalance`.\"},\"getOmniVotingEscrow()\":{\"notice\":\"Returns Omni Voting Escrow contract address, which is the gateway to bridge veBAL balances to L2s.\"},\"getUseZero()\":{\"notice\":\"Returns `_useZro` parameter used in `estimateSendUserBalance`.\"},\"getZeroPaymentAddress()\":{\"notice\":\"Returns `_zroPaymentAddress` parameter used in `sendUserBalance`.\"},\"setAdapterParams(bytes)\":{\"notice\":\"Sets `_adapterParams` parameter for `estimateSendUserBalance` and `sendUserBalance` when forwarding calls.\"},\"setOmniVotingEscrow(address)\":{\"notice\":\"Sets omni voting escrow address.\"},\"setUseZero(bool)\":{\"notice\":\"Sets `_useZro` parameter for `estimateSendUserBalance` when forwarding calls.\"},\"setZeroPaymentAddress(address)\":{\"notice\":\"Sets `_zroPaymentAddress` parameter for `sendUserBalance` when forwarding calls.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol\":\"IOmniVotingEscrowAdaptorSettings\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol\":{\"keccak256\":\"0xd15a09a7f4b4cca895c325a5d4f5469d368ea95fcf81139c6f9b7a6ff98ebf58\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f5ee21f5ff34cf4f4fb65bbef37229a84cce97e7ae2c46f26b6b5356db04fa56\",\"dweb:/ipfs/Qmc5Lukprx5rxNq4om9uyJR1jiNVFMxQxbWQrpGuZhGtsW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol\":{\"keccak256\":\"0x3d1316d3c24f099fb364359085778d5e520dc1fd5377b0e2220dfbc00e179ae2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a1545ec71c26156470189d49ee027d265c67f4bcedab5dfc1e52ae1eb4d6b4e0\",\"dweb:/ipfs/QmNfBM6JAXbJYbzfBMb6mpuqvDiHZbQhDiyU1gXvzCzcb6\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol":{"IOptimismGasLimitProvider":{"abi":[{"inputs":[],"name":"getOptimismGasLimit","outputs":[{"internalType":"uint32","name":"gasLimit","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"gasLimit","type":"uint32"}],"name":"setOptimismGasLimit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getOptimismGasLimit()":"a0566e72","setOptimismGasLimit(uint32)":"bf5fa772"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getOptimismGasLimit\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"setOptimismGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol\":\"IOptimismGasLimitProvider\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol\":{\"keccak256\":\"0x1208fef15dbb96160469c256a19f69d7f7f4798882a3504252ad25f89e36afcb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://556fc28a88f4798c5dd23cb4b25d8640bb0175e85d6a3093ec185e1d096e2924\",\"dweb:/ipfs/QmTyxuE1mPRSbn6XHm52qcHj78QrMUpXNHUUF3ZdENtQXU\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol":{"IRewardTokenDistributor":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"add_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claim_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit_reward_token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"reward_data","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"period_finish","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"last_update","type":"uint256"},{"internalType":"uint256","name":"integral","type":"uint256"}],"internalType":"struct IRewardTokenDistributor.Reward","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"set_reward_distributor","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_reward(address,address)":"e8de0d4d","claim_rewards(address)":"84e9bd7e","claimable_reward(address,address)":"33fd6f74","claimable_reward_write(address,address)":"59b7e409","deposit_reward_token(address,uint256)":"93f7aa67","reward_data(address)":"48e9c65e","reward_tokens(uint256)":"54c49fe9","set_reward_distributor(address,address)":"058a3a24"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"add_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claim_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit_reward_token\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"reward_data\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"period_finish\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_update\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"integral\",\"type\":\"uint256\"}],\"internalType\":\"struct IRewardTokenDistributor.Reward\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"set_reward_distributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":\"IRewardTokenDistributor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol":{"IRewardsOnlyGauge":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"add_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claim_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit_reward_token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"streamer","type":"address"},{"internalType":"bytes32","name":"claimSignature","type":"bytes32"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"last_claim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lp_token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reward_contract","outputs":[{"internalType":"contract IChildChainStreamer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"reward_data","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"period_finish","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"last_update","type":"uint256"},{"internalType":"uint256","name":"integral","type":"uint256"}],"internalType":"struct IRewardTokenDistributor.Reward","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"set_reward_distributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"childChainStreamer","type":"address"},{"internalType":"bytes32","name":"claimSig","type":"bytes32"},{"internalType":"address[8]","name":"rewardTokens","type":"address[8]"}],"name":"set_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_reward(address,address)":"e8de0d4d","claim_rewards(address)":"84e9bd7e","claimable_reward(address,address)":"33fd6f74","claimable_reward_write(address,address)":"59b7e409","deposit_reward_token(address,uint256)":"93f7aa67","initialize(address,address,bytes32)":"6133f985","last_claim()":"3488bd19","lp_token()":"82c63066","reward_contract()":"bf88a6ff","reward_data(address)":"48e9c65e","reward_tokens(uint256)":"54c49fe9","set_reward_distributor(address,address)":"058a3a24","set_rewards(address,bytes32,address[8])":"47d2d5d3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"add_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claim_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit_reward_token\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"streamer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"claimSignature\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"last_claim\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lp_token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reward_contract\",\"outputs\":[{\"internalType\":\"contract IChildChainStreamer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"reward_data\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"period_finish\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_update\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"integral\",\"type\":\"uint256\"}],\"internalType\":\"struct IRewardTokenDistributor.Reward\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"set_reward_distributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"childChainStreamer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"claimSig\",\"type\":\"bytes32\"},{\"internalType\":\"address[8]\",\"name\":\"rewardTokens\",\"type\":\"address[8]\"}],\"name\":\"set_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol\":\"IRewardsOnlyGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\":{\"keccak256\":\"0x3cf2370032a789025cffe8d0c613274213fd4e1ceb88cef1c2b039a6d0d08261\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1788ecb804b061fa04678ce311020d66e25b201cf18d452ea290bbc9af12e504\",\"dweb:/ipfs/Qmf84ANUiZtoZHEsbymn7NSZSGikMovYZUVqiPHwVrbBPJ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol\":{\"keccak256\":\"0x8c09c3f372e07adf790d55607401dfa60d8ec2b591f39de772efdf887d965d11\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6cbfa8f8f004ec1cc00739f51bd00763d08600e0bf827c1be4cc21a4afb26874\",\"dweb:/ipfs/QmTxDYJA8y2cJdxHfCq6NLK812WGnxFehTF9bW4n8xa1zx\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol":{"ISmartWalletChecker":{"abi":[{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"check","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"check(address)":"c23697a8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"check\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":\"ISmartWalletChecker\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol":{"IStakelessGauge":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"},\"user_checkpoint(address)\":{\"notice\":\"Record a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":\"IStakelessGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol":{"IStakelessGaugeCheckpointer":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IStakelessGauge","name":"gauge","type":"address"},{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"}],"name":"GaugeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IStakelessGauge","name":"gauge","type":"address"},{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"}],"name":"GaugeRemoved","type":"event"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"addGauges","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"addGaugesWithVerifiedType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"checkpointAllGaugesAboveRelativeWeight","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string[]","name":"gaugeTypes","type":"string[]"},{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"checkpointGaugesOfTypesAboveRelativeWeight","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string[]","name":"gaugeTypes","type":"string[]"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"checkpointMultipleGauges","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"checkpointMultipleGaugesOfMatchingType","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge","name":"gauge","type":"address"}],"name":"checkpointSingleGauge","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getGaugeAdder","outputs":[{"internalType":"contract IGaugeAdder","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getGaugeAtIndex","outputs":[{"internalType":"contract IStakelessGauge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeTypes","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"gaugeTypes","type":"string[]"},{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"getGaugeTypesBridgeCost","outputs":[{"internalType":"uint256","name":"totalCost","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRoundedDownBlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge","name":"gauge","type":"address"}],"name":"getSingleBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"getTotalGauges","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge","name":"gauge","type":"address"}],"name":"hasGauge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"isValidGaugeType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"removeGauges","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addGauges(string,address[])":"f7178b88","addGaugesWithVerifiedType(string,address[])":"d8dba2ce","checkpointAllGaugesAboveRelativeWeight(uint256)":"804d17dc","checkpointGaugesOfTypesAboveRelativeWeight(string[],uint256)":"97510496","checkpointMultipleGauges(string[],address[])":"4a3a1e11","checkpointMultipleGaugesOfMatchingType(string,address[])":"43590308","checkpointSingleGauge(string,address)":"7d0a6616","getGaugeAdder()":"7c1fef51","getGaugeAtIndex(string,uint256)":"27cb2a3b","getGaugeTypes()":"afcb1a86","getGaugeTypesBridgeCost(string[],uint256)":"a9a7f87e","getRoundedDownBlockTimestamp()":"46583adf","getSingleBridgeCost(string,address)":"2adbe5ac","getTotalBridgeCost(uint256)":"27f79107","getTotalGauges(string)":"4db34d2a","hasGauge(string,address)":"c91be043","isValidGaugeType(string)":"16e772bc","removeGauges(string,address[])":"73ebd060"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"GaugeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"GaugeRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"addGauges\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"addGaugesWithVerifiedType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"checkpointAllGaugesAboveRelativeWeight\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"gaugeTypes\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"checkpointGaugesOfTypesAboveRelativeWeight\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"gaugeTypes\",\"type\":\"string[]\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"checkpointMultipleGauges\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"checkpointMultipleGaugesOfMatchingType\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"checkpointSingleGauge\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeAdder\",\"outputs\":[{\"internalType\":\"contract IGaugeAdder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getGaugeAtIndex\",\"outputs\":[{\"internalType\":\"contract IStakelessGauge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeTypes\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"gaugeTypes\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"getGaugeTypesBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRoundedDownBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"getSingleBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"getTotalGauges\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"hasGauge\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"isValidGaugeType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"removeGauges\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Supports gauge types registered in `GaugeAdder`. Gauges to be checkpointed need to be added to the controller beforehand.\",\"kind\":\"dev\",\"methods\":{\"addGauges(string,address[])\":{\"details\":\"Gauges added will be considered when performing checkpoints. The gauges to add should meet the following preconditions: - They must have been created in a valid `GaugeFactory`, according to `GaugeAdder#isGaugeFromValidFactory`. - They must exist in the `GaugeController`, according to `GaugeController#gauge_exists`. - They must not be killed. - They must not have been previously added to the checkpointer.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"gauges\":\"Gauges to add.\"}},\"addGaugesWithVerifiedType(string,address[])\":{\"details\":\"Gauges added will be considered when performing checkpoints. The gauges to add should meet the following preconditions: - They must exist in the GaugeController, according to GaugeController#gauge_exists. - They must not be killed. - They must not have been previously added to the checkpointer. Unlike `addGauges`, this function can add gauges that were created by factories registered in a deprecated `GaugeAdder`, and therefore cannot be validated by the current `GaugeAdder`.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"gauges\":\"Gauges to add.\"}},\"checkpointAllGaugesAboveRelativeWeight(uint256)\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getTotalBridgeCost` to determine the required amount of ETH for the execution to succeed.\",\"params\":{\"minRelativeWeight\":\"Threshold to filter out gauges below it.\"}},\"checkpointGaugesOfTypesAboveRelativeWeight(string[],uint256)\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getGaugeTypesBridgeCost` to determine the required amount of ETH for the execution to succeed. Reverts if invalid gauge types are given.\",\"params\":{\"gaugeTypes\":\"Types of the gauges to checkpoint.\",\"minRelativeWeight\":\"Threshold to filter out gauges below it.\"}},\"checkpointMultipleGauges(string[],address[])\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Reverts if the gauges were not added to the checkpointer beforehand, or if invalid gauge types are given. Reverts if the types array does not have the same length as the gauges array.\",\"params\":{\"gaugeTypes\":\"Types of the gauges to be checkpointed, in the same order as the gauges to be checkpointed.\",\"gauges\":\"Addresses of the gauges to checkpoint.\"}},\"checkpointMultipleGaugesOfMatchingType(string,address[])\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Reverts if the gauges were not added to the checkpointer beforehand, or if an invalid gauge type is given.\",\"params\":{\"gaugeType\":\"Type of the gauges to be checkpointed.\",\"gauges\":\"Addresses of the gauges to checkpoint.\"}},\"checkpointSingleGauge(string,address)\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getSingleBridgeCost` to determine the required amount of ETH for the execution to succeed. Reverts if the gauge was not added to the checkpointer beforehand.\",\"params\":{\"gauge\":\"Address of the gauge to checkpoint.\",\"gaugeType\":\"Type of the gauge.\"}},\"getGaugeAtIndex(string,uint256)\":{\"details\":\"Reverts if the index is greater than or equal to the amount of added gauges for the given type.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"index\":\"- Index of the added gauge.\"}},\"getGaugeTypesBridgeCost(string[],uint256)\":{\"details\":\"A lower minimum relative weight might return higher costs, since more gauges could potentially be included in the checkpoint. Reverts for invalid gauge types.\",\"params\":{\"gaugeTypes\":\"Types of the gauges.\",\"minRelativeWeight\":\"Minimum relative weight filter: gauges below this value do not add to the bridge cost.\"}},\"getSingleBridgeCost(string,address)\":{\"details\":\"Reverts if the gauge was not added to the checkpointer beforehand, or if the gauge type is invalid.\",\"params\":{\"gauge\":\"Address of the gauge to check the bridge costs.\",\"gaugeType\":\"Type of the gauge.\"}},\"getTotalBridgeCost(uint256)\":{\"details\":\"A lower minimum relative weight might return higher costs, since more gauges could potentially be included in the checkpoint.\",\"params\":{\"minRelativeWeight\":\"Minimum relative weight filter: gauges below this value do not add to the bridge cost.\"}},\"getTotalGauges(string)\":{\"params\":{\"gaugeType\":\"Type of the gauge.\"}},\"hasGauge(string,address)\":{\"params\":{\"gauge\":\"Gauge to check.\",\"gaugeType\":\"Type of the gauge.\"}},\"removeGauges(string,address[])\":{\"details\":\"Removed gauges will not be considered when performing checkpoints. To remove gauges: - They must be killed. - They must have been previously added to the checkpointer.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"gauges\":\"Gauges to remove.\"}}},\"title\":\"Stakeless Gauge Checkpointer interface\",\"version\":1},\"userdoc\":{\"events\":{\"GaugeAdded(address,string,string)\":{\"notice\":\"Emitted when a gauge is added to the checkpointer.\"},\"GaugeRemoved(address,string,string)\":{\"notice\":\"Emitted when a gauge is removed from the checkpointer.\"}},\"kind\":\"user\",\"methods\":{\"addGauges(string,address[])\":{\"notice\":\"Adds an array of gauges from the given type.\"},\"addGaugesWithVerifiedType(string,address[])\":{\"notice\":\"Adds an array of gauges from the given type. This is a permissioned function.\"},\"checkpointAllGaugesAboveRelativeWeight(uint256)\":{\"notice\":\"Performs a checkpoint for all added gauges above the given relative weight threshold.\"},\"checkpointGaugesOfTypesAboveRelativeWeight(string[],uint256)\":{\"notice\":\"Performs a checkpoint for all added gauges above the given relative weight threshold for the given types.\"},\"checkpointMultipleGauges(string[],address[])\":{\"notice\":\"Performs a checkpoint for a multiple added gauges of the given types.\"},\"checkpointMultipleGaugesOfMatchingType(string,address[])\":{\"notice\":\"Performs a checkpoint for a multiple added gauges of the given types.\"},\"checkpointSingleGauge(string,address)\":{\"notice\":\"Performs a checkpoint for a single added gauge of a given type.\"},\"getGaugeAdder()\":{\"notice\":\"Returns `GaugeAdder` contract.\"},\"getGaugeAtIndex(string,uint256)\":{\"notice\":\"Returns the gauge of a given type at the given index.\"},\"getGaugeTypes()\":{\"notice\":\"Returns gauge types available in the checkpointer.\"},\"getGaugeTypesBridgeCost(string[],uint256)\":{\"notice\":\"Returns the ETH cost to checkpoint all gauges from the given types.\"},\"getRoundedDownBlockTimestamp()\":{\"notice\":\"Returns the timestamp corresponding to the start of the previous week of the current block.\"},\"getSingleBridgeCost(string,address)\":{\"notice\":\"Returns the ETH cost to checkpoint a single given gauge.\"},\"getTotalBridgeCost(uint256)\":{\"notice\":\"Returns the ETH cost to checkpoint all gauges for a given minimum relative weight.\"},\"getTotalGauges(string)\":{\"notice\":\"Returns the amount of added gauges for a given type.\"},\"hasGauge(string,address)\":{\"notice\":\"Returns true if the given gauge was added for the given type; false otherwise.\"},\"isValidGaugeType(string)\":{\"notice\":\"Returns true if gauge type is valid; false otherwise.\"},\"removeGauges(string,address[])\":{\"notice\":\"Removes an array of gauges from the given type.\"}},\"notice\":\"Manages checkpoints for L2 and mainnet stakeless root gauges, allowing to perform mutiple checkpoints in a single call.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol\":\"IStakelessGaugeCheckpointer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x25b2a2ad63f9aa59c45f1a81a2f79733b8dcdce268cc9b1ac03866396f4b0d17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://efe9f30e6cab81587b738089165050d35533926703f4ad1da0f86452a69874ce\",\"dweb:/ipfs/QmcJoNP8NAEefchpG3qs3CwMw1qhxBJTgBMY4KY6g6qfUa\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol\":{\"keccak256\":\"0x50d40373e50d13566dbb624ac65494f70835aa52ff553e1185df480feae6ecd8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6038ec50171ea847ca9aeeec4af6e9721bcba35223d364f832da5f269e8a722\",\"dweb:/ipfs/QmdvyixjrpFud1kAS8un3wje2xUjrY82BRL7sUHqKvLJq2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol\":{\"keccak256\":\"0x09ff99f18e34cb0c794c080694581755503db45d8486bead830ec32dc1471226\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://620fbf404a1fd3ee079562de30b56d018bdef1aeb3e060fc73c31dc0e9ea0162\",\"dweb:/ipfs/QmeXPa87gfhbCa2y5XugFCC47Ea5aPLEsZuAaQMa7o8YXX\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol":{"IStakingLiquidityGauge":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"add_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claim_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit_reward_token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lpToken","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lp_token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"reward_data","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"period_finish","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"last_update","type":"uint256"},{"internalType":"uint256","name":"integral","type":"uint256"}],"internalType":"struct IRewardTokenDistributor.Reward","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"set_reward_distributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_reward(address,address)":"e8de0d4d","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","claim_rewards(address)":"84e9bd7e","claimable_reward(address,address)":"33fd6f74","claimable_reward_write(address,address)":"59b7e409","deposit(uint256,address)":"6e553f65","deposit_reward_token(address,uint256)":"93f7aa67","getCappedRelativeWeight(uint256)":"14e956f5","getRelativeWeightCap()":"83f5c39b","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","lp_token()":"82c63066","reward_data(address)":"48e9c65e","reward_tokens(uint256)":"54c49fe9","setRelativeWeightCap(uint256)":"10d3eb04","set_reward_distributor(address,address)":"058a3a24","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"add_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claim_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit_reward_token\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lpToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lp_token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"reward_data\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"period_finish\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_update\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"integral\",\"type\":\"uint256\"}],\"internalType\":\"struct IRewardTokenDistributor.Reward\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"set_reward_distributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"},\"user_checkpoint(address)\":{\"notice\":\"Record a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":\"IStakingLiquidityGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol":{"IVeDelegation":{"abi":[{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"adjusted_balance_of","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"adjusted_balance_of(address)":"bbf7408a","totalSupply()":"18160ddd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"adjusted_balance_of\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\":\"IVeDelegation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\":{\"keccak256\":\"0xd4ebf4ceca6fa99ec2149d60b36084674621ae87e8a7786b23501749da8cc581\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7dd20ed7be933a3d8ec0be284b8f7f123e69ecb29731e35f70c371eb4f5e26c8\",\"dweb:/ipfs/QmfPp5sBxn92hg32fPFTDBB5kuHP9qU4jN3bSfip8uCnQ6\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol":{"IVotingEscrow":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"contract IAuthorizerAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"apply_smart_wallet_checker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSmartWalletChecker","type":"address"}],"name":"commit_smart_wallet_checker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"locked__end","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"point_history","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"smart_wallet_checker","outputs":[{"internalType":"contract ISmartWalletChecker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_point_epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"user_point_history","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"admin()":"f851a440","allowance(address,address)":"dd62ed3e","apply_smart_wallet_checker()":"8e5b490f","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOf(address,uint256)":"00fdd58e","checkpoint()":"c2c4c5c1","commit_smart_wallet_checker(address)":"57f901e2","epoch()":"900cf0cf","locked__end(address)":"adc63589","point_history(uint256)":"d1febfb9","smart_wallet_checker()":"7175d4f7","totalSupply()":"18160ddd","totalSupply(uint256)":"bd85b039","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","user_point_epoch(address)":"010ae757","user_point_history(address,uint256)":"28d09d47"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"apply_smart_wallet_checker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newSmartWalletChecker\",\"type\":\"address\"}],\"name\":\"commit_smart_wallet_checker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"locked__end\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"point_history\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"smart_wallet_checker\",\"outputs\":[{\"internalType\":\"contract ISmartWalletChecker\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_point_epoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"user_point_history\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":\"IVotingEscrow\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol":{"IVotingEscrowRemapper":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"localUser","type":"address"},{"indexed":true,"internalType":"address","name":"delegate","type":"address"}],"name":"AddressDelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"localUser","type":"address"},{"indexed":true,"internalType":"address","name":"remoteUser","type":"address"},{"indexed":true,"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"AddressMappingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"remoteUser","type":"address"},{"indexed":true,"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"RemoteAddressMappingCleared","type":"event"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"clearNetworkRemapping","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"remoteUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"getLocalUser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getLockedEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOmniVotingEscrowAdaptor","outputs":[{"internalType":"contract IOmniVotingEscrowAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"}],"name":"getRemappingManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"getRemoteUser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalSupplyPoint","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserPoint","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"address","name":"remoteUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"setNetworkRemapping","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"setNetworkRemappingManager","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"clearNetworkRemapping(address,uint16)":"76601a18","getLocalUser(address,uint16)":"70d1bd17","getLockedEnd(address)":"3e7df7c8","getOmniVotingEscrowAdaptor()":"5e5543be","getRemappingManager(address)":"ee98b1e7","getRemoteUser(address,uint16)":"bda75c38","getTotalSupplyPoint()":"f6f4a332","getUserPoint(address)":"71628bfd","getVotingEscrow()":"08b0308a","setNetworkRemapping(address,address,uint16)":"21861fde","setNetworkRemappingManager(address,address)":"a9f3f44e"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"AddressDelegateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"AddressMappingUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"RemoteAddressMappingCleared\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"clearNetworkRemapping\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"getLocalUser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getLockedEnd\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOmniVotingEscrowAdaptor\",\"outputs\":[{\"internalType\":\"contract IOmniVotingEscrowAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"}],\"name\":\"getRemappingManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"getRemoteUser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalSupplyPoint\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserPoint\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"setNetworkRemapping\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"setNetworkRemappingManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"For each network (chainId), we maintain a mapping between local (Ethereum) and remote (L2) addresses. This contract remaps balance queries on remote network addresses to their corresponding local addresses. Users able to call this contract can set their own mappings, or delegate this function to another account if they cannot.\",\"kind\":\"dev\",\"methods\":{\"clearNetworkRemapping(address,uint16)\":{\"details\":\"This is intended to discourage and also allow recovery from griefing attacks. If griefing occurs then the griefer can be removed from Smart Wallet Checker and have their remappings erased. The local user can always clear their own mapping, regardless the state of the Smart Wallet Checker.\",\"params\":{\"chainId\":\"- The chain id of the network to erase.\",\"localUser\":\"- The address of the local user to erase.\"}},\"getLocalUser(address,uint16)\":{\"details\":\"Returns `address(0)` if the remapping does not exist for the given remote user.\",\"params\":{\"chainId\":\"- The chain ID of the remote network.\",\"remoteUser\":\"- Address of the user on the remote chain corresponding to the local address.\"}},\"getLockedEnd(address)\":{\"details\":\"The returned value is taken directly from the voting escrow.\"},\"getRemappingManager(address)\":{\"params\":{\"localUser\":\"- Address of the user on the local chain with a remapping manager.\"}},\"getRemoteUser(address,uint16)\":{\"details\":\"Returns `address(0)` if the remapping does not exist for the given local user.\",\"params\":{\"chainId\":\"- The chain ID of the remote network.\",\"localUser\":\"- Address of the user on the local chain corresponding to the remote address.\"}},\"getTotalSupplyPoint()\":{\"details\":\"We return the total supply as a Point to allow extrapolating this into the future. Note that this extrapolation will become invalid when crossing weeks, since we're not taking into account veBAL locks that expire then.\"},\"getUserPoint(address)\":{\"details\":\"We return the balance as a Point to allow extrapolating this into the future.\"},\"setNetworkRemapping(address,address,uint16)\":{\"details\":\"In order to set up a remapping on this contract, `localUser` must be a smart contract which has been allowlisted to hold veBAL. EOAs are expected to set up any delegation of their veBAL on L2s directly.\",\"params\":{\"chainId\":\"- The chain id of the remote chain on which `remoteUser` resides.\",\"localUser\":\"- The address of a contract allowlisted on the `SmartWalletChecker`.\",\"remoteUser\":\"- The address to receive `localUser`'s balance of veBAL on the remote chain.\"}},\"setNetworkRemappingManager(address,address)\":{\"details\":\"This is intended to handle contracts which cannot interact with this contract directly.\",\"params\":{\"delegate\":\"- The address which is allowed to manage remote users to be linked to `localUser`.\",\"localUser\":\"- The address of a contract allowlisted on the `SmartWalletChecker`.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"clearNetworkRemapping(address,uint16)\":{\"notice\":\"Clears a local user's mapping for a particular network.\"},\"getLocalUser(address,uint16)\":{\"notice\":\"Returns the local user corresponding to an address on a remote chain.\"},\"getLockedEnd(address)\":{\"notice\":\"Get timestamp when `user`'s lock finishes.\"},\"getOmniVotingEscrowAdaptor()\":{\"notice\":\"Returns Omni Voting Escrow Adaptor contract address, which interfaces with the gateway to bridge veBAL balances to L2s.\"},\"getRemappingManager(address)\":{\"notice\":\"Gets the account that can set a remapping for a given local user.\"},\"getRemoteUser(address,uint16)\":{\"notice\":\"Returns the remote user corresponding to an address on the local chain.\"},\"getTotalSupplyPoint()\":{\"notice\":\"Returns the current total supply of veBAL as a Point.\"},\"getUserPoint(address)\":{\"notice\":\"Returns a user's current veBAL balance as a Point. Note that we don't apply any remappings in this query. The returned value is taken directly from the voting escrow.\"},\"getVotingEscrow()\":{\"notice\":\"Returns Voting Escrow contract address.\"},\"setNetworkRemapping(address,address,uint16)\":{\"notice\":\"Sets up a mapping from `localUser`'s veBAL balance to `remoteUser` for chain `chainId`.\"},\"setNetworkRemappingManager(address,address)\":{\"notice\":\"Sets an address to manage the mapping for a given local user on their behalf.\"}},\"notice\":\"This contract allows veBAL holders on Ethereum to assign their balance to designated addresses on each L2. This is intended for smart contracts that are not deployed to the same address on all networks. EOA's are expected to either use the same address, or manage delegation on L2 networks themselves.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol\":\"IVotingEscrowRemapper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol\":{\"keccak256\":\"0xd3a86f1eb7aadba25221c8935ae888816487ea6ba4d04c3a5f4789d7b061ac90\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ca65ef1eebc274a1b28abee0d1514f4c18334583c13e39672a80201f0481304f\",\"dweb:/ipfs/QmSs5kDN8rGfbCmkQihP1uUbTtAc9wfSzSuPTpp6dErVWk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol\":{\"keccak256\":\"0x357cb8cbb0bb993b47725e25f19af79410e289c368ef29a7a5effbead655c4ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9c9742ce6bf697f8083621b91f63b1f3232b571232dc8c56d5444e59cb7f0fe9\",\"dweb:/ipfs/QmRqTLCZ6vBjhbqVySxqeWXMpyULKZYTsDKHgvfGN3cz2y\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol":{"Errors":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad732bec7ee0141d291da266d1fa87f23aa8562af21d6abb73ad7a770e108cce64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD PUSH20 0x2BEC7EE0141D291DA266D1FA87F23AA8562AF21D PUSH11 0xBB73AD7A770E108CCE6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"5072:10023:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad732bec7ee0141d291da266d1fa87f23aa8562af21d6abb73ad7a770e108cce64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD PUSH20 0x2BEC7EE0141D291DA266D1FA87F23AA8562AF21D PUSH11 0xBB73AD7A770E108CCE6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"5072:10023:31:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":\"Errors\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"IAuthentication":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":\"IAuthentication\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol":{"IOptionalOnlyCaller":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"OnlyCallerOptIn","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isOnlyCallerEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setOnlyCallerCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"setOnlyCallerCheckWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"isOnlyCallerEnabled(address)":"a1648aa5","setOnlyCallerCheck(bool)":"e811f44b","setOnlyCallerCheckWithSignature(address,bool,bytes)":"fcaa54ee"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"OnlyCallerOptIn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isOnlyCallerEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setOnlyCallerCheck\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"setOnlyCallerCheckWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the OptionalOnlyCaller helper, used to opt in to a caller verification for a given address to methods that are otherwise callable by any address.\",\"events\":{\"OnlyCallerOptIn(address,bool)\":{\"details\":\"Emitted every time setOnlyCallerCheck is called.\"}},\"kind\":\"dev\",\"methods\":{\"isOnlyCallerEnabled(address)\":{\"details\":\"Returns true if caller verification is enabled for the given user, false otherwise.\"},\"setOnlyCallerCheck(bool)\":{\"details\":\"Enables / disables verification mechanism for caller.\",\"params\":{\"enabled\":\"- True if caller verification shall be enabled, false otherwise.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol\":\"IOptionalOnlyCaller\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol\":{\"keccak256\":\"0x7bab0494ee39fb988722edd20b3e5ff747b4acfe93a62d0726c5d63ae3f6e472\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://23e1d154f2fa589cbfa51338c285cf1862edcd6172fdbb26db17a6fcf9581ee2\",\"dweb:/ipfs/Qmbu8wgFjYqZvvv84MKbLiHMSKv3THZuFHCjRchPHLjCdY\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol":{"ISignaturesValidator":{"abi":[{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the SignatureValidator helper, used to support meta-transactions.\",\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getNextNonce(address)\":{\"details\":\"Returns the next nonce used by an address to sign messages.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":\"ISignaturesValidator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol":{"ITemporarilyPausable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStateChanged","type":"event"},{"inputs":[],"name":"getPausedState","outputs":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint256","name":"pauseWindowEndTime","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodEndTime","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getPausedState()":"1c0de051"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStateChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the TemporarilyPausable helper.\",\"events\":{\"PausedStateChanged(bool)\":{\"details\":\"Emitted every time the pause state changes by `_setPaused`.\"}},\"kind\":\"dev\",\"methods\":{\"getPausedState()\":{\"details\":\"Returns the current paused state.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":\"ITemporarilyPausable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol":{"IVersion":{"abi":[{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"version()\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple interface to retrieve the version of a deployed contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":\"IVersion\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"IWETH":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","deposit()":"d0e30db0","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for WETH9. See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":\"IWETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol":{"IERC1271":{"abi":[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC1271 standard signature validation method for contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"Should return whether the signature provided is valid for the provided data\",\"params\":{\"hash\":\"Hash of the data to be signed\",\"signature\":\"Signature byte array associated with _data\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol\":{\"keccak256\":\"0xf82dab09a38bfdaf0983b69829de462c62359bc0bfaa37c4447408d93bd367c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d0172b678ca594e95b7e5d881fd1280b3792052861ca98d77fa6194b524d188\",\"dweb:/ipfs/QmZ3bYEGTrfruXNYAzuFjJeg9Hx6UQw8ZyBzyM72BVGXfT\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol":{"IERC20Permit":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over `owner`'s tokens, given `owner`'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol":{"IAsset":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like types. This concept is unrelated to a Pool's Asset Managers.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":\"IAsset\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol":{"IAuthorizer":{"abi":[{"inputs":[{"internalType":"bytes32","name":"actionId","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"where","type":"address"}],"name":"canPerform","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"canPerform(bytes32,address,address)":"9be2a884"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"actionId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"canPerform\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"canPerform(bytes32,address,address)\":{\"details\":\"Returns true if `account` can perform the action described by `actionId` in the contract `where`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":\"IAuthorizer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol":{"IFlashLoanRecipient":{"abi":[{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"receiveFlashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"receiveFlashLoan(address[],uint256[],uint256[],bytes)":"f04f2707"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"receiveFlashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"receiveFlashLoan(address[],uint256[],uint256[],bytes)\":{\"details\":\"When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient. At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the Vault, or else the entire flash loan will revert. `userData` is the same value passed in the `IVault.flashLoan` call.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":\"IFlashLoanRecipient\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol":{"IProtocolFeesCollector":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newFlashLoanFeePercentage","type":"uint256"}],"name":"FlashLoanFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newSwapFeePercentage","type":"uint256"}],"name":"SwapFeePercentageChanged","type":"event"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"getCollectedFeeAmounts","outputs":[{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFlashLoanFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFlashLoanFeePercentage","type":"uint256"}],"name":"setFlashLoanFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapFeePercentage","type":"uint256"}],"name":"setSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawCollectedFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getAuthorizer()":"aaabadc5","getCollectedFeeAmounts(address[])":"e42abf35","getFlashLoanFeePercentage()":"d877845c","getSwapFeePercentage()":"55c67628","setFlashLoanFeePercentage(uint256)":"6b6b9f69","setSwapFeePercentage(uint256)":"38e9922e","vault()":"fbfa77cf","withdrawCollectedFees(address[],uint256[],address)":"6daefab6"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFlashLoanFeePercentage\",\"type\":\"uint256\"}],\"name\":\"FlashLoanFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getCollectedFeeAmounts\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFlashLoanFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setFlashLoanFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawCollectedFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":\"IProtocolFeesCollector\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol":{"IVault":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"AuthorizerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ExternalBalanceTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IFlashLoanRecipient","name":"recipient","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeAmount","type":"uint256"}],"name":"FlashLoan","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"int256","name":"delta","type":"int256"}],"name":"InternalBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"indexed":false,"internalType":"int256[]","name":"deltas","type":"int256[]"},{"indexed":false,"internalType":"uint256[]","name":"protocolFeeAmounts","type":"uint256[]"}],"name":"PoolBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"assetManager","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"int256","name":"cashDelta","type":"int256"},{"indexed":false,"internalType":"int256","name":"managedDelta","type":"int256"}],"name":"PoolBalanceManaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"poolAddress","type":"address"},{"indexed":false,"internalType":"enum IVault.PoolSpecialization","name":"specialization","type":"uint8"}],"name":"PoolRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayer","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"RelayerApprovalChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"TokensDeregistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"indexed":false,"internalType":"address[]","name":"assetManagers","type":"address[]"}],"name":"TokensRegistered","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"batchSwap","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"deregisterTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"}],"name":"exitPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IFlashLoanRecipient","name":"recipient","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"flashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"getInternalBalance","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPausedState","outputs":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint256","name":"pauseWindowEndTime","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodEndTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getPool","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"enum IVault.PoolSpecialization","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getPoolTokenInfo","outputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"managed","type":"uint256"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"address","name":"assetManager","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getPoolTokens","outputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeesCollector","outputs":[{"internalType":"contract IProtocolFeesCollector","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"relayer","type":"address"}],"name":"hasApprovedRelayer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"}],"name":"joinPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.PoolBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IVault.PoolBalanceOp[]","name":"ops","type":"tuple[]"}],"name":"managePoolBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.UserBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}],"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]"}],"name":"manageUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"queryBatchSwap","outputs":[{"internalType":"int256[]","name":"assetDeltas","type":"int256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IVault.PoolSpecialization","name":"specialization","type":"uint8"}],"name":"registerPool","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"assetManagers","type":"address[]"}],"name":"registerTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"setAuthorizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"WETH()":"ad5c4648","batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256)":"945bcec9","deregisterTokens(bytes32,address[])":"7d3aeb96","exitPool(bytes32,address,address,(address[],uint256[],bytes,bool))":"8bdb3913","flashLoan(address,address[],uint256[],bytes)":"5c38449e","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDomainSeparator()":"ed24911d","getInternalBalance(address,address[])":"0f5a6efa","getNextNonce(address)":"90193b7c","getPausedState()":"1c0de051","getPool(bytes32)":"f6c00927","getPoolTokenInfo(bytes32,address)":"b05f8e48","getPoolTokens(bytes32)":"f94d4668","getProtocolFeesCollector()":"d2946c2b","hasApprovedRelayer(address,address)":"fec90d72","joinPool(bytes32,address,address,(address[],uint256[],bytes,bool))":"b95cac28","managePoolBalance((uint8,bytes32,address,uint256)[])":"e6c46092","manageUserBalance((uint8,address,uint256,address,address)[])":"0e8e3e84","queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))":"f84d066e","registerPool(uint8)":"09b2760f","registerTokens(bytes32,address[],address[])":"66a9c7d2","setAuthorizer(address)":"058a628f","setPaused(bool)":"16c38b3c","setRelayerApproval(address,address,bool)":"fa6e671d","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)":"52bbbe29"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ExternalBalanceTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IFlashLoanRecipient\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"InternalBalanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"deltas\",\"type\":\"int256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"protocolFeeAmounts\",\"type\":\"uint256[]\"}],\"name\":\"PoolBalanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assetManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"cashDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"managedDelta\",\"type\":\"int256\"}],\"name\":\"PoolBalanceManaged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"poolAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IVault.PoolSpecialization\",\"name\":\"specialization\",\"type\":\"uint8\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"RelayerApprovalChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"TokensDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"assetManagers\",\"type\":\"address[]\"}],\"name\":\"TokensRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"contract IWETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"batchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"deregisterTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IFlashLoanRecipient\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getInternalBalance\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"enum IVault.PoolSpecialization\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolTokenInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"managed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"assetManager\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesCollector\",\"outputs\":[{\"internalType\":\"contract IProtocolFeesCollector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"hasApprovedRelayer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.PoolBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IVault.PoolBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"}],\"name\":\"managePoolBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"queryBatchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"assetDeltas\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.PoolSpecialization\",\"name\":\"specialization\",\"type\":\"uint8\"}],\"name\":\"registerPool\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"assetManagers\",\"type\":\"address[]\"}],\"name\":\"registerTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"setAuthorizer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Full external interface for the Vault core contract - no external or public methods exist in the contract that don't override one of these declarations.\",\"events\":{\"AuthorizerChanged(address)\":{\"details\":\"Emitted when a new authorizer is set by `setAuthorizer`.\"},\"ExternalBalanceTransfer(address,address,address,uint256)\":{\"details\":\"Emitted when a user's Vault ERC20 allowance is used by the Vault to transfer tokens to an external account.\"},\"FlashLoan(address,address,uint256,uint256)\":{\"details\":\"Emitted for each individual flash loan performed by `flashLoan`.\"},\"InternalBalanceChanged(address,address,int256)\":{\"details\":\"Emitted when a user's Internal Balance changes, either from calls to `manageUserBalance`, or through interacting with Pools using Internal Balance. Because Internal Balance works exclusively with ERC20 tokens, ETH deposits and withdrawals will use the WETH address.\"},\"PoolBalanceChanged(bytes32,address,address[],int256[],uint256[])\":{\"details\":\"Emitted when a user joins or exits a Pool by calling `joinPool` or `exitPool`, respectively.\"},\"PoolBalanceManaged(bytes32,address,address,int256,int256)\":{\"details\":\"Emitted when a Pool's token Asset Manager alters its balance via `managePoolBalance`.\"},\"PoolRegistered(bytes32,address,uint8)\":{\"details\":\"Emitted when a Pool is registered by calling `registerPool`.\"},\"RelayerApprovalChanged(address,address,bool)\":{\"details\":\"Emitted every time a relayer is approved or disapproved by `setRelayerApproval`.\"},\"Swap(bytes32,address,address,uint256,uint256)\":{\"details\":\"Emitted for each individual swap performed by `swap` or `batchSwap`.\"},\"TokensDeregistered(bytes32,address[])\":{\"details\":\"Emitted when a Pool deregisters tokens by calling `deregisterTokens`.\"},\"TokensRegistered(bytes32,address[],address[])\":{\"details\":\"Emitted when a Pool registers tokens by calling `registerTokens`.\"}},\"kind\":\"dev\",\"methods\":{\"WETH()\":{\"details\":\"Returns the Vault's WETH instance.\"},\"batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256)\":{\"details\":\"Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either the amount of tokens sent to or received from the Pool, depending on the `kind` value. Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at the same index in the `assets` array. Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or `amountOut` depending on the swap kind. Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`. The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses, or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to or unwrapped from WETH by the Vault. Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies the minimum or maximum amount of each token the vault is allowed to transfer. `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the equivalent `swap` call. Emits `Swap` events.\"},\"deregisterTokens(bytes32,address[])\":{\"details\":\"Deregisters `tokens` for the `poolId` Pool. Must be called by the Pool's contract. Only registered tokens (via `registerTokens`) can be deregistered. Additionally, they must have zero total balance. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens must be deregistered in the same `deregisterTokens` call. A deregistered token can be re-registered later on, possibly with a different Asset Manager. Emits a `TokensDeregistered` event.\"},\"exitPool(bytes32,address,address,(address[],uint256[],bytes,bool))\":{\"details\":\"Called by users to exit a Pool, which transfers tokens from the Pool's balance to `recipient`. This will trigger custom Pool behavior, which will typically ask for something in return from `sender` - often tokenized Pool shares. The amount of tokens that can be withdrawn is limited by the Pool's `cash` balance (see `getPoolTokenInfo`). If the caller is not `sender`, it must be an authorized relayer for them. The `tokens` and `minAmountsOut` arrays must have the same length, and each entry in these indicates the minimum token amount to receive for each token contract. The amounts to send are decided by the Pool and not the Vault: it just enforces these minimums. If exiting a Pool that holds WETH, it is possible to receive ETH directly: the Vault will do the unwrapping. To enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the WETH address. Note that it is not possible to combine ETH and WETH in the same exit. `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when interacting with Pools that register and deregister tokens frequently. If receiving ETH however, the array must be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final `assets` array might not be sorted. Pools with no registered tokens cannot be exited. If `toInternalBalance` is true, the tokens will be deposited to `recipient`'s Internal Balance. Otherwise, an ERC20 transfer will be performed. Note that ETH cannot be deposited to Internal Balance: attempting to do so will trigger a revert. `minAmountsOut` is the minimum amount of tokens the user expects to get out of the Pool, for each token in the `tokens` array. This array must match the Pool's registered tokens. This causes the Vault to call the `IBasePool.onExitPool` hook on the Pool's contract, where Pools implement their own custom logic. This typically requires additional information from the user (such as the expected number of Pool shares to return). This can be encoded in the `userData` argument, which is ignored by the Vault and passed directly to the Pool's contract. Emits a `PoolBalanceChanged` event.\"},\"flashLoan(address,address[],uint256[],bytes)\":{\"details\":\"Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it, and then reverting unless the tokens plus a proportional protocol fee have been returned. The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount for each token contract. `tokens` must be sorted in ascending order. The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the `receiveFlashLoan` call. Emits `FlashLoan` events.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAuthorizer()\":{\"details\":\"Returns the Vault's Authorizer.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getInternalBalance(address,address[])\":{\"details\":\"Returns `user`'s Internal Balance for a set of tokens.\"},\"getNextNonce(address)\":{\"details\":\"Returns the next nonce used by an address to sign messages.\"},\"getPausedState()\":{\"details\":\"Returns the current paused state.\"},\"getPool(bytes32)\":{\"details\":\"Returns a Pool's contract address and specialization setting.\"},\"getPoolTokenInfo(bytes32,address)\":{\"details\":\"Returns detailed information for a Pool's registered token. `cash` is the number of tokens the Vault currently holds for the Pool. `managed` is the number of tokens withdrawn and held outside the Vault by the Pool's token Asset Manager. The Pool's total balance for `token` equals the sum of `cash` and `managed`. Internally, `cash` and `managed` are stored using 112 bits. No action can ever cause a Pool's token `cash`, `managed` or `total` balance to be greater than 2^112 - 1. `lastChangeBlock` is the number of the block in which `token`'s total balance was last modified (via either a join, exit, swap, or Asset Manager update). This value is useful to avoid so-called 'sandwich attacks', for example when developing price oracles. A change of zero (e.g. caused by a swap with amount zero) is considered a change for this purpose, and will update `lastChangeBlock`. `assetManager` is the Pool's token Asset Manager.\"},\"getPoolTokens(bytes32)\":{\"details\":\"Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of the tokens' `balances` changed. The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order. If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same order as passed to `registerTokens`. Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo` instead.\"},\"getProtocolFeesCollector()\":{\"details\":\"Returns the current protocol fee module.\"},\"hasApprovedRelayer(address,address)\":{\"details\":\"Returns true if `user` has approved `relayer` to act as a relayer for them.\"},\"joinPool(bytes32,address,address,(address[],uint256[],bytes,bool))\":{\"details\":\"Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized Pool shares. If the caller is not `sender`, it must be an authorized relayer for them. The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces these maximums. If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent back to the caller (not the sender, which is important for relayers). `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final `assets` array might not be sorted. Pools with no registered tokens cannot be joined. If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be withdrawn from Internal Balance: attempting to do so will trigger a revert. This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement their own custom logic. This typically requires additional information from the user (such as the expected number of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed directly to the Pool's contract, as is `recipient`. Emits a `PoolBalanceChanged` event.\"},\"managePoolBalance((uint8,bytes32,address,uint256)[])\":{\"details\":\"Performs a set of Pool balance operations, which may be either withdrawals, deposits or updates. Pool Balance management features batching, which means a single contract call can be used to perform multiple operations of different kinds, with different Pools and tokens, at once. For each operation, the caller must be registered as the Asset Manager for `token` in `poolId`.\"},\"manageUserBalance((uint8,address,uint256,address,address)[])\":{\"details\":\"Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer) and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as it lets integrators reuse a user's Vault allowance. For each operation, if the caller is not `sender`, it must be an authorized relayer for them.\"},\"queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))\":{\"details\":\"Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result. Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH) the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it receives are the same that an equivalent `batchSwap` call would receive. Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct. This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens, approve them for the Vault, or even know a user's address. Note that this function is not 'view' (due to implementation details): the client code must explicitly execute eth_call instead of eth_sendTransaction.\"},\"registerPool(uint8)\":{\"details\":\"Registers the caller account as a Pool with a given specialization setting. Returns the Pool's ID, which is used in all Pool-related functions. Pools cannot be deregistered, nor can the Pool's specialization be changed. The caller is expected to be a smart contract that implements either `IGeneralPool` or `IMinimalSwapInfoPool`, depending on the chosen specialization setting. This contract is known as the Pool's contract. Note that the same contract may register itself as multiple Pools with unique Pool IDs, or in other words, multiple Pools may share the same contract. Emits a `PoolRegistered` event.\"},\"registerTokens(bytes32,address[],address[])\":{\"details\":\"Registers `tokens` for the `poolId` Pool. Must be called by the Pool's contract. Pools can only interact with tokens they have registered. Users join a Pool by transferring registered tokens, exit by receiving registered tokens, and can only swap registered tokens. Each token can only be registered once. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens must be registered in the same `registerTokens` call, and they must be sorted in ascending order. The `tokens` and `assetManagers` arrays must have the same length, and each entry in these indicates the Asset Manager for the corresponding token. Asset Managers can manage a Pool's tokens via `managePoolBalance`, depositing and withdrawing them directly, and can even set their balance to arbitrary amounts. They are therefore expected to be highly secured smart contracts with sound design principles, and the decision to register an Asset Manager should not be made lightly. Pools can choose not to assign an Asset Manager to a given token by passing in the zero address. Once an Asset Manager is set, it cannot be changed except by deregistering the associated token and registering again with a different Asset Manager. Emits a `TokensRegistered` event.\"},\"setAuthorizer(address)\":{\"details\":\"Sets a new Authorizer for the Vault. The caller must be allowed by the current Authorizer to do this. Emits an `AuthorizerChanged` event.\"},\"setPaused(bool)\":{\"details\":\"Safety mechanism to pause most Vault operations in the event of an emergency - typically detection of an error in some part of the system. The Vault can only be paused during an initial time period, after which pausing is forever disabled. While the contract is paused, the following features are disabled: - depositing and transferring internal balance - transferring external balance (using the Vault's allowance) - swaps - joining Pools - Asset Manager interactions Internal Balance can still be withdrawn, and Pools exited.\"},\"setRelayerApproval(address,address,bool)\":{\"details\":\"Allows `relayer` to act as a relayer for `sender` if `approved` is true, and disallows it otherwise. Emits a `RelayerApprovalChanged` event.\"},\"swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)\":{\"details\":\"Performs a swap with a single Pool. If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens taken from the Pool, which must be greater than or equal to `limit`. If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens sent to the Pool, which must be less than or equal to `limit`. Internal Balance usage and the recipient are determined by the `funds` struct. Emits a `Swap` event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":\"IVault\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol":{"Authentication":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Building block for performing access control on external functions. This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied to external functions to only make them callable by authorized accounts. Derived contracts must implement the `_canPerform` function, which holds the actual access control logic.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in multi contract systems. There are two main uses for it: - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers unique. The contract's own address is a good option. - if the contract belongs to a family that shares action identifiers for the same functions, an identifier shared by the entire family (and no other contract) should be used instead.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":\"Authentication\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol":{"EOASignaturesValidator":{"abi":[{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Utility for signing Solidity function calls.\",\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":\"EOASignaturesValidator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol":{"InputHelpers":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c2e0ea22385e6a2569a34672c5f22125c8b47548296ecba0af88b51b352d0a9764736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 0xE0 0xEA 0x22 CODESIZE 0x5E PUSH11 0x2569A34672C5F22125C8B4 PUSH22 0x48296ECBA0AF88B51B352D0A9764736F6C6343000701 STOP CALLER ","sourceMap":"893:1008:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c2e0ea22385e6a2569a34672c5f22125c8b47548296ecba0af88b51b352d0a9764736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 0xE0 0xEA 0x22 CODESIZE 0x5E PUSH11 0x2569A34672C5F22125C8B4 PUSH22 0x48296ECBA0AF88B51B352D0A9764736F6C6343000701 STOP CALLER ","sourceMap":"893:1008:48:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":\"InputHelpers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol":{"OptionalOnlyCaller":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"OnlyCallerOptIn","type":"event"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isOnlyCallerEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setOnlyCallerCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"setOnlyCallerCheckWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","isOnlyCallerEnabled(address)":"a1648aa5","setOnlyCallerCheck(bool)":"e811f44b","setOnlyCallerCheckWithSignature(address,bool,bytes)":"fcaa54ee"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"OnlyCallerOptIn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isOnlyCallerEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setOnlyCallerCheck\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"setOnlyCallerCheckWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"isOnlyCallerEnabled(address)\":{\"details\":\"Returns true if caller verification is enabled for the given user, false otherwise.\"},\"setOnlyCallerCheck(bool)\":{\"details\":\"Enables / disables verification mechanism for caller.\",\"params\":{\"enabled\":\"- True if caller verification shall be enabled, false otherwise.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol\":\"OptionalOnlyCaller\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol\":{\"keccak256\":\"0x7bab0494ee39fb988722edd20b3e5ff747b4acfe93a62d0726c5d63ae3f6e472\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://23e1d154f2fa589cbfa51338c285cf1862edcd6172fdbb26db17a6fcf9581ee2\",\"dweb:/ipfs/Qmbu8wgFjYqZvvv84MKbLiHMSKv3THZuFHCjRchPHLjCdY\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol\":{\"keccak256\":\"0xf82dab09a38bfdaf0983b69829de462c62359bc0bfaa37c4447408d93bd367c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d0172b678ca594e95b7e5d881fd1280b3792052861ca98d77fa6194b524d188\",\"dweb:/ipfs/QmZ3bYEGTrfruXNYAzuFjJeg9Hx6UQw8ZyBzyM72BVGXfT\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol\":{\"keccak256\":\"0xc3a9b8d78e475f0290fa6f660b63f42ed4834dfcb61d7935b4b034fd31ef33f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1793575373e2214ceee3aecbd68b8b1a3ff24070b63bf36acb5d7e2bbb700d71\",\"dweb:/ipfs/QmVGYzndTDp2z25g6WqPze1PV5okh7MGBkP3XL2CTggAcM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol\":{\"keccak256\":\"0x028adc486d4df66cfc3157049ebd2772f1033be7159b27173225459d8d833e93\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5a67c6db6916df2ace5765995f45bf03e9ed07dd6e6164a196642ba4d52aa8b4\",\"dweb:/ipfs/QmYkhoC75YFywYqQPCMbj9iWyauVLczE7Db2NLisJR2vqu\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol":{"SignaturesValidator":{"abi":[{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Utility for signing Solidity function calls.\",\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol\":\"SignaturesValidator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol\":{\"keccak256\":\"0xf82dab09a38bfdaf0983b69829de462c62359bc0bfaa37c4447408d93bd367c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d0172b678ca594e95b7e5d881fd1280b3792052861ca98d77fa6194b524d188\",\"dweb:/ipfs/QmZ3bYEGTrfruXNYAzuFjJeg9Hx6UQw8ZyBzyM72BVGXfT\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol\":{\"keccak256\":\"0x028adc486d4df66cfc3157049ebd2772f1033be7159b27173225459d8d833e93\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5a67c6db6916df2ace5765995f45bf03e9ed07dd6e6164a196642ba4d52aa8b4\",\"dweb:/ipfs/QmYkhoC75YFywYqQPCMbj9iWyauVLczE7Db2NLisJR2vqu\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol":{"SingletonAuthentication":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getVault()":"8d928af8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":\"SingletonAuthentication\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol":{"Version":{"abi":[{"inputs":[{"internalType":"string","name":"version","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516103483803806103488339818101604052602081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b506040525050506100f2816100f860201b60201c565b506101a2565b805161010b90600090602084019061010f565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061015057805160ff191683800117855561017d565b8280016001018555821561017d579182015b8281111561017d578251825591602001919060010190610162565b5061018992915061018d565b5090565b5b80821115610189576000815560010161018e565b610197806101b16000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806354fd4d5014610030575b600080fd5b6100386100ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007257818101518382015260200161005a565b50505050905090810190601f16801561009f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101575780601f1061012c57610100808354040283529160200191610157565b820191906000526020600020905b81548152906001019060200180831161013a57829003601f168201915b505050505090509056fea2646970667358221220dff94d9847a91038ebfc464039b18ce76da3fb93a753f9b70a71167f0419acc164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x348 CODESIZE SUB DUP1 PUSH2 0x348 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x97 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP POP PUSH2 0xF2 DUP2 PUSH2 0xF8 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH2 0x1A2 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10B SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x10F JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x150 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x17D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x17D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x17D JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x162 JUMP JUMPDEST POP PUSH2 0x189 SWAP3 SWAP2 POP PUSH2 0x18D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x189 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x18E JUMP JUMPDEST PUSH2 0x197 DUP1 PUSH2 0x1B1 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38 PUSH2 0xAD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x72 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x9F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x157 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x12C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x157 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x13A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF 0xF9 0x4D SWAP9 SELFBALANCE 0xA9 LT CODESIZE 0xEB 0xFC CHAINID BLOCKHASH CODECOPY 0xB1 DUP13 0xE7 PUSH14 0xA3FB93A753F9B70A71167F0419AC 0xC1 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"884:436:52:-:0;;;949:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;949:72:52;;;;;;;;;;-1:-1:-1;949:72:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;994:20;1006:7;994:11;;;:20;;:::i;:::-;949:72;884:436;;1224:94;1290:21;;;;:8;;:21;;;;;:::i;:::-;;1224:94;:::o;884:436::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;884:436:52;;;-1:-1:-1;884:436:52;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c806354fd4d5014610030575b600080fd5b6100386100ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007257818101518382015260200161005a565b50505050905090810190601f16801561009f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101575780601f1061012c57610100808354040283529160200191610157565b820191906000526020600020905b81548152906001019060200180831161013a57829003601f168201915b505050505090509056fea2646970667358221220dff94d9847a91038ebfc464039b18ce76da3fb93a753f9b70a71167f0419acc164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38 PUSH2 0xAD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x72 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x9F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x157 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x12C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x157 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x13A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF 0xF9 0x4D SWAP9 SELFBALANCE 0xA9 LT CODESIZE 0xEB 0xFC CHAINID BLOCKHASH CODECOPY 0xB1 DUP13 0xE7 PUSH14 0xA3FB93A753F9B70A71167F0419AC 0xC1 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"884:436:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1027:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:13;;1103:15;;1110:8;;1103:15;;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1027:98;:::o"},"methodIdentifiers":{"version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"version()\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Retrieves a contract's version set at creation time from storage.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":\"Version\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0x95fe58d2b75267e6068077264da8f0ce358f0f9e18167ea902bb1d29e9636ad5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8eb074a823f7cd09f9e73f52af4c6d2602b71ec127ca08acb67336f79dfdc79b\",\"dweb:/ipfs/QmbyDXinvkw5P2KBa7menkS6jp8cdWGg1qhAu5CEYi3vdE\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol":{"FixedPoint":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4640ea1d7c89bdb767eef0d980d2e9cf18ea1dcafd3d3c15b055496927fbf0b64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 PUSH5 0xEA1D7C89B 0xDB PUSH23 0x7EEF0D980D2E9CF18EA1DCAFD3D3C15B055496927FBF0B PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"888:5321:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4640ea1d7c89bdb767eef0d980d2e9cf18ea1dcafd3d3c15b055496927fbf0b64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 PUSH5 0xEA1D7C89B 0xDB PUSH23 0x7EEF0D980D2E9CF18EA1DCAFD3D3C15B055496927FBF0B PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"888:5321:53:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":\"FixedPoint\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol":{"LogExpMath":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2f1f5a5744ba84ba902f5d8ce63788485b6aa0b1c41d070ae31d351d0d04aac64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLCODE CALL CREATE2 0xA5 PUSH21 0x4BA84BA902F5D8CE63788485B6AA0B1C41D070AE31 0xD3 MLOAD 0xD0 0xD0 0x4A 0xAC PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1681:19465:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2f1f5a5744ba84ba902f5d8ce63788485b6aa0b1c41d070ae31d351d0d04aac64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLCODE CALL CREATE2 0xA5 PUSH21 0x4BA84BA902F5D8CE63788485B6AA0B1C41D070AE31 0xD3 MLOAD 0xD0 0xD0 0x4A 0xAC PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1681:19465:54:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Fernando Martinelli - @fernandomartinelliSergio Yuhjtman - @sergioyuhjtmanDaniel Fernandez - @dmf7z\",\"details\":\"Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument). Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural exponentiation and logarithm (where the base is Euler's number).\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":\"LogExpMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220846111d7cfb69da2fca580e8b2ab6b6addf04f185e6d02f1a1c3a10d7361155964736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 PUSH2 0x11D7 0xCF 0xB6 SWAP14 LOG2 0xFC 0xA5 DUP1 0xE8 0xB2 0xAB PUSH12 0x6ADDF04F185E6D02F1A1C3A1 0xD PUSH20 0x61155964736F6C63430007010033000000000000 ","sourceMap":"290:2995:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220846111d7cfb69da2fca580e8b2ab6b6addf04f185e6d02f1a1c3a10d7361155964736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 PUSH2 0x11D7 0xCF 0xB6 SWAP14 LOG2 0xFC 0xA5 DUP1 0xE8 0xB2 0xAB PUSH12 0x6ADDF04F185E6D02F1A1C3A1 0xD PUSH20 0x61155964736F6C63430007010033000000000000 ","sourceMap":"290:2995:55:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Adapted from OpenZeppelin's SafeMath library.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":\"Math\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122014c317e5c7ffec06df50079a25a550396b9c6d54a220da98ca140dabbf742d7664736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0xC3 OR 0xE5 0xC7 SELFDESTRUCT 0xEC MOD 0xDF POP SMOD SWAP11 0x25 0xA5 POP CODECOPY PUSH12 0x9C6D54A220DA98CA140DABBF PUSH21 0x2D7664736F6C634300070100330000000000000000 ","sourceMap":"439:5334:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122014c317e5c7ffec06df50079a25a550396b9c6d54a220da98ca140dabbf742d7664736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0xC3 OR 0xE5 0xC7 SELFDESTRUCT 0xEC MOD 0xDF POP SMOD SWAP11 0x25 0xA5 POP CODECOPY PUSH12 0x9C6D54A220DA98CA140DABBF PUSH21 0x2D7664736F6C634300070100330000000000000000 ","sourceMap":"439:5334:56:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol":{"Clones":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220af9f5b777bf25b05273bbebc82b2f38fc7e9b6af7f1c9f68f1b7dea7bc7749e164736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAF SWAP16 JUMPDEST PUSH24 0x7BF25B05273BBEBC82B2F38FC7E9B6AF7F1C9F68F1B7DEA7 0xBC PUSH24 0x49E164736F6C634300070100330000000000000000000000 ","sourceMap":"740:2860:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220af9f5b777bf25b05273bbebc82b2f38fc7e9b6af7f1c9f68f1b7dea7bc7749e164736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAF SWAP16 JUMPDEST PUSH24 0x7BF25B05273BBEBC82B2F38FC7E9B6AF7F1C9F68F1B7DEA7 0xBC PUSH24 0x49E164736F6C634300070100330000000000000000000000 ","sourceMap":"740:2860:57:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for deploying minimal proxy contracts, also known as \\\"clones\\\". > To simply and cheaply clone contract functionality in an immutable way, this standard specifies > a minimal bytecode implementation that delegates all calls to a known, fixed address. The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the deterministic method. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":\"Clones\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol":{"EIP712":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in their contracts using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":\"EIP712\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051610b0c380380610b0c8339818101604052604081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156100ff57600080fd5b90830190602082018581111561011457600080fd5b825164010000000081118282018810171561012e57600080fd5b82525081516020918201929091019080838360005b8381101561015b578181015183820152602001610143565b50505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b50604052505082516101a2915060039060208501906101cb565b5080516101b69060049060208401906101cb565b50506005805460ff191660121790555061025e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061020c57805160ff1916838001178555610239565b82800160010185558215610239579182015b8281111561023957825182559160200191906001019061021e565b50610245929150610249565b5090565b5b80821115610245576000815560010161024a565b61089f8061026d6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a06103fe565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610404565b6101fd610465565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561046e565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104b1565b6100d66104d9565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610558565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561059e565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166105ab565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103f53384846105e3565b50600192915050565b60025490565b6000610411848484610652565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461045b918691610456908661019e61077b565b6105e3565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f59185906104569086610791565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f5918590610456908661019f61077b565b60006103f5338484610652565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61067673ffffffffffffffffffffffffffffffffffffffff841615156101986107aa565b61069a73ffffffffffffffffffffffffffffffffffffffff831615156101996107aa565b6106a58383836107bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020546106d890826101a061077b565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107149082610791565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061078a84841115836107aa565b5050900390565b60008282016107a384821015836107aa565b9392505050565b816107b8576107b8816107c1565b5050565b505050565b6107eb817f42414c00000000000000000000000000000000000000000000000000000000006107ee565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea26469706673582212202c86193fc6961e0e4117c460b7e51cd045ea11118a221b0580d8a077a6e6300a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB0C CODESIZE SUB DUP1 PUSH2 0xB0C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x97 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x143 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x188 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP DUP3 MLOAD PUSH2 0x1A2 SWAP2 POP PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x1CB JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x1B6 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1CB JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH2 0x25E JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x20C JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x239 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x239 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x239 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x21E JUMP JUMPDEST POP PUSH2 0x245 SWAP3 SWAP2 POP PUSH2 0x249 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x245 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x24A JUMP JUMPDEST PUSH2 0x89F DUP1 PUSH2 0x26D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x404 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4B1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x558 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x59E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5AB JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x411 DUP5 DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x45B SWAP2 DUP7 SWAP2 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x77B JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x77B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x676 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x69A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x6A5 DUP4 DUP4 DUP4 PUSH2 0x7BC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x6D8 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x77B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x714 SWAP1 DUP3 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78A DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x7A3 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x7B8 JUMPI PUSH2 0x7B8 DUP2 PUSH2 0x7C1 JUMP JUMPDEST POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x7EB DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7EE JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C DUP7 NOT EXTCODEHASH 0xC6 SWAP7 0x1E 0xE COINBASE OR 0xC4 PUSH1 0xB7 0xE5 SHR 0xD0 GASLIMIT 0xEA GT GT DUP11 0x22 SHL SDIV DUP1 0xD8 LOG0 PUSH24 0xA6E6300A64736F6C63430007010033000000000000000000 ","sourceMap":"1427:10003:59:-:0;;;2052:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2052:137:59;;;;;;;;;;-1:-1:-1;2052:137:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2052:137:59;;;;;;;;;;-1:-1:-1;2052:137:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2052:137:59;;-1:-1:-1;;2118:13:59;;;;-1:-1:-1;2118:5:59;;:13;;;;;:::i;:::-;-1:-1:-1;2141:17:59;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:59;:14;;-1:-1:-1;;2168:14:59;2180:2;2168:14;;;-1:-1:-1;1427:10003:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1427:10003:59;;;-1:-1:-1;1427:10003:59;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a06103fe565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610404565b6101fd610465565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561046e565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104b1565b6100d66104d9565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610558565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561059e565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166105ab565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103f53384846105e3565b50600192915050565b60025490565b6000610411848484610652565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461045b918691610456908661019e61077b565b6105e3565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f59185906104569086610791565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f5918590610456908661019f61077b565b60006103f5338484610652565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61067673ffffffffffffffffffffffffffffffffffffffff841615156101986107aa565b61069a73ffffffffffffffffffffffffffffffffffffffff831615156101996107aa565b6106a58383836107bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020546106d890826101a061077b565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107149082610791565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061078a84841115836107aa565b5050900390565b60008282016107a384821015836107aa565b9392505050565b816107b8576107b8816107c1565b5050565b505050565b6107eb817f42414c00000000000000000000000000000000000000000000000000000000006107ee565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea26469706673582212202c86193fc6961e0e4117c460b7e51cd045ea11118a221b0580d8a077a6e6300a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x404 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4B1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x558 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x59E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5AB JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x411 DUP5 DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x45B SWAP2 DUP7 SWAP2 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x77B JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x77B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x676 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x69A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x6A5 DUP4 DUP4 DUP4 PUSH2 0x7BC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x6D8 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x77B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x714 SWAP1 DUP3 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78A DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x7A3 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x7B8 JUMPI PUSH2 0x7B8 DUP2 PUSH2 0x7C1 JUMP JUMPDEST POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x7EB DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7EE JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C DUP7 NOT EXTCODEHASH 0xC6 SWAP7 0x1E 0xE COINBASE OR 0xC4 PUSH1 0xB7 0xE5 SHR 0xD0 GASLIMIT 0xEA GT GT DUP11 0x22 SHL SDIV DUP1 0xD8 LOG0 PUSH24 0xA6E6300A64736F6C63430007010033000000000000000000 ","sourceMap":"1427:10003:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:59;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:59;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6269:211;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:59;;;;;;;;;:::i;4022:117::-;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:59;;;;:::i;2448:85::-;;;:::i;6967:312::-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:59;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:59;;;;;;;;;:::i;4570:149::-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:59;;;;;;;;;;;:::i;2254:81::-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:59;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:31;5752:35:59;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:59;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;6269:211::-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;4022:117::-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;2448:85::-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:31;7143:36:59;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;4570:149::-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;10034:213::-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10687:3:31;7880:8:59;:71::i;:::-;7961:72;7970:23;;;;;10755:3:31;7961:8:59;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:31;8122:21:59;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:65:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:65;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:65:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;11245:183:59:-;;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}, initializes {decimals} with a default value of 18. To select a different value for {decimals}, use {_setupDecimals}. All three of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol":{"ERC20Burnable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {ERC20} that allows token holders to destroy both their own tokens and those that they have an allowance for, in a way that can be recognized off-chain (via event analysis).\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":\"ERC20Burnable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol":{"ERC20Permit":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\\\"1\\\"`. It's a good idea to use the same `name` that is defined as the ERC20 token name.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":\"ERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol":{"EnumerableSet":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b4f362195304bca0268523dcc31b851609b69f5144c5a8abcb6fa240af5462c264736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 RETURN PUSH3 0x195304 0xBC LOG0 0x26 DUP6 0x23 0xDC 0xC3 SHL DUP6 AND MULMOD 0xB6 SWAP16 MLOAD DIFFICULTY 0xC5 0xA8 0xAB 0xCB PUSH16 0xA240AF5462C264736F6C634300070100 CALLER ","sourceMap":"1210:8346:62:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b4f362195304bca0268523dcc31b851609b69f5144c5a8abcb6fa240af5462c264736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 RETURN PUSH3 0x195304 0xBC LOG0 0x26 DUP6 0x23 0xDC 0xC3 SHL DUP6 AND MULMOD 0xB6 SWAP16 MLOAD DIFFICULTY 0xC5 0xA8 0xAB 0xCB PUSH16 0xA240AF5462C264736F6C634300070100 CALLER ","sourceMap":"1210:8346:62:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example { // Add the library methods using EnumerableSet for EnumerableSet.AddressSet; // Declare a set state variable EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol":{"ReentrancyGuard":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol":{"SafeERC20":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220101cb10a10a8826c3ccbc0d7a1e0802d146095a5c909637362c78e01ce5ff54c64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT SHR 0xB1 EXP LT 0xA8 DUP3 PUSH13 0x3CCBC0D7A1E0802D146095A5C9 MULMOD PUSH4 0x7362C78E ADD 0xCE 0x5F CREATE2 0x4C PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"976:2264:64:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220101cb10a10a8826c3ccbc0d7a1e0802d146095a5c909637362c78e01ce5ff54c64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT SHR 0xB1 EXP LT 0xA8 DUP3 PUSH13 0x3CCBC0D7A1E0802D146095A5C9 MULMOD PUSH4 0x7362C78E ADD 0xCE 0x5F CREATE2 0x4C PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"976:2264:64:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol":{"SafeMath":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204078142f28de1c3e58fcb44f4a2b4e02c951ae80e8d6c98d6075eb00a9c736b364736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOCKHASH PUSH25 0x142F28DE1C3E58FCB44F4A2B4E02C951AE80E8D6C98D6075EB STOP 0xA9 0xC7 CALLDATASIZE 0xB3 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"714:1310:65:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204078142f28de1c3e58fcb44f4a2b4e02c951ae80e8d6c98d6075eb00a9c736b364736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOCKHASH PUSH25 0x142F28DE1C3E58FCB44F4A2B4E02C951AE80E8D6C98D6075EB STOP 0xA9 0xC7 CALLDATASIZE 0xB3 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"714:1310:65:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"contracts/BalancerMinter.sol":{"BalancerMinter":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"uint256","name":"minted","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"bool","name":"approval","type":"bool"}],"name":"MinterApprovalSet","type":"event"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"allowed_to_mint_for","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getMinterApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"mintManyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mint_for","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[8]","name":"gauges","type":"address[8]"}],"name":"mint_many","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"}],"name":"setMinterApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"setMinterApprovalWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"toggle_approve_mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowed_to_mint_for(address,address)":"a0990033","getBalancerToken()":"c0039699","getDomainSeparator()":"ed24911d","getMinterApproval(address,address)":"3c543bc6","getNextNonce(address)":"90193b7c","mint(address)":"6a627842","mintFor(address,address)":"7504a15d","mintMany(address[])":"397ada21","mintManyFor(address[],address)":"3b9f7384","mint_for(address,address)":"27f18ae3","mint_many(address[8])":"a51e1904","minted(address,address)":"8b752bb0","setMinterApproval(address,bool)":"0de54ba0","setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)":"c6542794","toggle_approve_mint(address)":"dd289d60"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"MinterApprovalSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed_to_mint_for\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinterApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"mintMany\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintManyFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mint_for\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[8]\",\"name\":\"gauges\",\"type\":\"address[8]\"}],\"name\":\"mint_many\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"minted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMinterApprovalWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"toggle_approve_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"mint(address)\":{\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\"}},\"mintFor(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mintMany(address[])\":{\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"mintManyFor(address[],address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\",\"user\":\"Address to mint to\"}},\"mint_for(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mint_many(address[8])\":{\"details\":\"This function is not recommended as `mintMany()` is more flexible and gas efficient\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowed_to_mint_for(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"},\"getMinterApproval(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"mint(address)\":{\"notice\":\"Mint everything which belongs to `msg.sender` and send to them\"},\"mintFor(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mintMany(address[])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"mintManyFor(address[],address)\":{\"notice\":\"Mint tokens for `user` across multiple gauges\"},\"mint_for(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mint_many(address[8])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"minted(address,address)\":{\"notice\":\"The total number of tokens minted for `user` from `gauge`\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on your behalf\"},\"setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing them.\"},\"toggle_approve_mint(address)\":{\"notice\":\"Toggle whether `minter` is approved to mint tokens for `user`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerMinter.sol\":\"BalancerMinter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/BalancerMinter.sol\":{\"keccak256\":\"0xbacdfde61937f9cea9166c7e492ac8d65261fb6bdfb621f1f258852799204cc8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3e68da1f25c0211654bb0b04c4ac1a789cb3dfabd7f5db54d6bfbeb49414e0c\",\"dweb:/ipfs/QmRnvBWovj9HNZsEfvrZpbJcs3K7ikwrY8fkX68F7rdxQK\"]}},\"version\":1}"}},"contracts/BalancerTokenAdmin.sol":{"BalancerTokenAdmin":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IBalancerToken","name":"balancerToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"supply","type":"uint256"}],"name":"MiningParametersUpdated","type":"event"},{"inputs":[],"name":"INITIAL_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"available_supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"futureEpochTimeWrite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"future_epoch_time_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAvailableSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFutureEpochTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInflationRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMiningEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStartEpochSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStartEpochTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"mintableInTimeframe","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"mintable_in_timeframe","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startEpochTimeWrite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"start_epoch_time_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateMiningParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"update_mining_parameters","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e060405260001960025534801561001657600080fd5b506040516120713803806120718339818101604052604081101561003957600080fd5b508051602090910151306080526001600160601b0319606092831b811660a0526001600055911b1660c05260805160a05160601c60c05160601c611f5e610113600039806103d052806104a6528061055e528061062052806106d2528061077e5280610874528061093052806109935280610a3f5280610b355280610bf15280610c545280610d015280610dc55280610ecd5280610f2e528061106852806111625280611211528061130252806113f35280611562528061163752806117a552806118b952508061177952508061170c5250611f5e6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c8063851c1bb3116100f9578063b87b561611610097578063c3b03fa811610071578063c3b03fa8146102fb578063cb626ae21461031e578063d43b40fa1461031e578063d725a9ca146102fb576101b9565b8063b87b5616146102eb578063c0039699146102f3578063c167d1cd146101f2576101b9565b8063a228bced116100d3578063a228bced146102db578063aaabadc5146102e3578063adc4cf43146102db578063b26b238e146101fa576101b9565b8063851c1bb3146102635780638d928af8146102a25780639711715a146102d3576101b9565b80632c4e722e116101665780634dbac733116101405780634dbac7331461024b57806355f74176146102535780637efad8e01461025b578063819df2c414610202576101b9565b80632c4e722e1461020257806340c10f191461020a5780634d2fa41314610243576101b9565b806321609bbf1161019757806321609bbf146101ea57806324f92a25146101f2578063277dbafb146101fa576101b9565b8063087905c9146101be5780630dfbdce4146101d85780630f15f4c0146101e0575b600080fd5b6101c6610326565b60408051918252519081900360200190f35b6101c661032d565b6101e8610346565b005b6101c66114f9565b6101c6611505565b6101c661150f565b6101c6611527565b6101e86004803603604081101561022057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561152d565b6101c66116e2565b6101c66116e8565b6101c66116f4565b6101c66116fa565b6101c66004803603602081101561027957600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016611706565b6102aa611777565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101e861179b565b6101c6611825565b6102aa61182f565b6101c66118af565b6102aa6118b7565b6101c66004803603604081101561031157600080fd5b50803590602001356118db565b6101e86118ee565b6001545b90565b600254600090610341906301e1338061195b565b905090565b61034e61196d565b610356611986565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600254146103cc576040805162461bcd60e51b815260206004820152601160248201527f416c726561647920616374697661746564000000000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d53913936040518163ffffffff1660e01b815260040160206040518083038186803b15801561043457600080fd5b505afa158015610448573d6000803e3d6000fd5b505050506040513d602081101561045e57600080fd5b5051604080517f7028e2cd000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691637028e2cd916004808301926020929190829003018186803b1580156104ec57600080fd5b505afa158015610500573d6000803e3d6000fd5b505050506040513d602081101561051657600080fd5b5051604080517fa217fddf000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163a217fddf916004808301926020929190829003018186803b1580156105a457600080fd5b505afa1580156105b8573d6000803e3d6000fd5b505050506040513d60208110156105ce57600080fd5b5051604080517f91d1485400000000000000000000000000000000000000000000000000000000815260048101839052306024820152905191925073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916391d1485491604480820192602092909190829003018186803b15801561066757600080fd5b505afa15801561067b573d6000803e3d6000fd5b505050506040513d602081101561069157600080fd5b50516106ce5760405162461bcd60e51b8152600401808060200182810382526022815260200180611e906022913960400191505060405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561074157600080fd5b505afa158015610755573d6000803e3d6000fd5b505050506040513d602081101561076b57600080fd5b5051905060005b818110156108e25760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639010d07c8760006040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156107f657600080fd5b505afa15801561080a573d6000803e3d6000fd5b505050506040513d602081101561082057600080fd5b5051604080517fd547741f0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff808416602483015291519293507f00000000000000000000000000000000000000000000000000000000000000009091169163d547741f9160448082019260009290919082900301818387803b1580156108be57600080fd5b505af11580156108d2573d6000803e3d6000fd5b5050505050806001019050610772565b50604080517f2f2ff15d00000000000000000000000000000000000000000000000000000000815260048101869052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691632f2ff15d91604480830192600092919082900301818387803b15801561097757600080fd5b505af115801561098b573d6000803e3d6000fd5b5050505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a0257600080fd5b505afa158015610a16573d6000803e3d6000fd5b505050506040513d6020811015610a2c57600080fd5b5051905060005b81811015610ba35760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639010d07c8760006040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610ab757600080fd5b505afa158015610acb573d6000803e3d6000fd5b505050506040513d6020811015610ae157600080fd5b5051604080517fd547741f0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff808416602483015291519293507f00000000000000000000000000000000000000000000000000000000000000009091169163d547741f9160448082019260009290919082900301818387803b158015610b7f57600080fd5b505af1158015610b93573d6000803e3d6000fd5b5050505050806001019050610a33565b50604080517f2f2ff15d00000000000000000000000000000000000000000000000000000000815260048101869052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691632f2ff15d91604480830192600092919082900301818387803b158015610c3857600080fd5b505af1158015610c4c573d6000803e3d6000fd5b5050505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610cc357600080fd5b505afa158015610cd7573d6000803e3d6000fd5b505050506040513d6020811015610ced57600080fd5b505190506000805b82811015610e7f5760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639010d07c88856040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610d7857600080fd5b505afa158015610d8c573d6000803e3d6000fd5b505050506040513d6020811015610da257600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81163014610e71577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d547741f88836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015610e5457600080fd5b505af1158015610e68573d6000803e3d6000fd5b50505050610e76565b600192505b50600101610cf5565b50604080517fd547741f00000000000000000000000000000000000000000000000000000000815260048101879052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163d547741f91604480830192600092919082900301818387803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f9d57600080fd5b505afa158015610fb1573d6000803e3d6000fd5b505050506040513d6020811015610fc757600080fd5b50511561101b576040805162461bcd60e51b815260206004820181905260248201527f416464726573732065786973747320776974682061646d696e20726967687473604482015290519081900360640190fd5b604080517f91d1485400000000000000000000000000000000000000000000000000000000815260048101899052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916391d14854916044808301926020929190829003018186803b1580156110ae57600080fd5b505afa1580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b50516111155760405162461bcd60e51b8152600401808060200182810382526022815260200180611f076022913960400191505060405180910390fd5b604080517f91d1485400000000000000000000000000000000000000000000000000000000815260048101889052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916391d14854916044808301926020929190829003018186803b1580156111a857600080fd5b505afa1580156111bc573d6000803e3d6000fd5b505050506040513d60208110156111d257600080fd5b505161120f5760405162461bcd60e51b8152600401808060200182810382526027815260200180611eb26027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561128057600080fd5b505afa158015611294573d6000803e3d6000fd5b505050506040513d60208110156112aa57600080fd5b5051600114611300576040805162461bcd60e51b815260206004820152601660248201527f4d756c7469706c65206d696e7465727320657869737400000000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561137157600080fd5b505afa158015611385573d6000803e3d6000fd5b505050506040513d602081101561139b57600080fd5b50516001146113f1576040805162461bcd60e51b815260206004820152601b60248201527f4d756c7469706c6520736e617073686f74746572732065786973740000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561145757600080fd5b505afa15801561146b573d6000803e3d6000fd5b505050506040513d602081101561148157600080fd5b50516003554260025562093a80691eb4773b6d1318a00000046004557fa96ad9a0b81b29565fbe231714a2f2c152b759e603c91bf87144a3f61944f0a562093a80691eb4773b6d1318a000006003546040805193909204835260208301528051918290030190a1505050505050506114f76119cf565b565b671080e992061ab30081565b60006103416119d6565b60006103416301e13380611521611a10565b9061195b565b60045490565b611535611986565b600254611546906301e1338061195b565b421061155457611554611a3c565b61155c6119d6565b6115f8827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115c657600080fd5b505afa1580156115da573d6000803e3d6000fd5b505050506040513d60208110156115f057600080fd5b50519061195b565b11156116355760405162461bcd60e51b815260040180806020018281038252602e815260200180611ed9602e913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156116c657600080fd5b505af11580156116da573d6000803e3d6000fd5b505050505050565b60025490565b670353c226d6c6f58081565b60035490565b670de0b6b3a764000081565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6117a3611986565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639711715a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561180b57600080fd5b505af115801561181f573d6000803e3d6000fd5b50505050565b6000610341611a10565b6000611839611777565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561187e57600080fd5b505afa158015611892573d6000803e3d6000fd5b505050506040513d60208110156118a857600080fd5b5051905090565b6301e1338081565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006118e78383611af8565b9392505050565b6002546118ff906301e1338061195b565b421015611953576040805162461bcd60e51b815260206004820152601a60248201527f45706f636820686173206e6f742066696e697368656420796574000000000000604482015290519081900360640190fd5b6114f7611a3c565b60008282016118e78482101583611ce5565b61197f60026000541415610190611ce5565b6002600055565b60006119b56000357fffffffff0000000000000000000000000000000000000000000000000000000016611706565b90506119cc6119c48233611cf7565b610191611ce5565b50565b6001600055565b6000806119fa6004546119f460025442611dc090919063ffffffff16565b90611dd6565b600354909150611a0a908261195b565b91505090565b600254600090611a24816301e1338061195b565b421061034157611a32611a3c565b505060025461032a565b6004546000611a5b611a52836301e13380611dd6565b6003549061195b565b9050611a81671080e992061ab300611a7b84670de0b6b3a7640000611dd6565b90611dfa565b9150611a986001805461195b90919063ffffffff16565b600155600254611aac906301e1338061195b565b60025560048290556003819055604080518381526020810183905281517fa96ad9a0b81b29565fbe231714a2f2c152b759e603c91bf87144a3f61944f0a5929181900390910190a15050565b600081831115611b4f576040805162461bcd60e51b815260206004820152600b60248201527f7374617274203e20656e64000000000000000000000000000000000000000000604482015290519081900360640190fd5b600254600454611b63826301e1338061195b565b841115611b9b57611b78826301e1338061195b565b9150611b98671080e992061ab300611a7b83670de0b6b3a7640000611dd6565b90505b611ba9826301e1338061195b565b841115611bfd576040805162461bcd60e51b815260206004820152601160248201527f746f6f2066617220696e20667574757265000000000000000000000000000000604482015290519081900360640190fd5b6000805b6103e7811015611cdb57838610611c915785611c21856301e1338061195b565b811115611c3957611c36856301e1338061195b565b90505b87611c48866301e1338061195b565b8110611c55575050611cdb565b85811015611c605750845b611c7e611c77611c708484611dc0565b8790611dd6565b859061195b565b9350858910611c8e575050611cdb565b50505b611c9f846301e13380611dc0565b9350611cbf670de0b6b3a7640000611a7b85671080e992061ab300611dd6565b9250670353c226d6c6f580831115611cd357fe5b600101611c01565b5095945050505050565b81611cf357611cf381611e1a565b5050565b6000611d0161182f565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611d8d57600080fd5b505afa158015611da1573d6000803e3d6000fd5b505050506040513d6020811015611db757600080fd5b50519392505050565b6000611dd0838311156001611ce5565b50900390565b60008282026118e7841580611df3575083858381611df057fe5b04145b6003611ce5565b6000611e098215156004611ce5565b818381611e1257fe5b049392505050565b62461bcd60e51b600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526119cc917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe42616c616e636572546f6b656e41646d696e206973206e6f7420616e2061646d696e42616c616e636572546f6b656e41646d696e206973206e6f74206120736e617073686f747465724d696e7420616d6f756e7420657863656564732072656d61696e696e6720617661696c61626c6520737570706c7942616c616e636572546f6b656e41646d696e206973206e6f742061206d696e746572a264697066735822122054a0fd74db370789a186086df3b364da5c6e1a227b2e9a48c1c97fd98a0e96b264736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE PUSH1 0x0 NOT PUSH1 0x2 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2071 CODESIZE SUB DUP1 PUSH2 0x2071 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE SWAP2 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x1F5E PUSH2 0x113 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x3D0 MSTORE DUP1 PUSH2 0x4A6 MSTORE DUP1 PUSH2 0x55E MSTORE DUP1 PUSH2 0x620 MSTORE DUP1 PUSH2 0x6D2 MSTORE DUP1 PUSH2 0x77E MSTORE DUP1 PUSH2 0x874 MSTORE DUP1 PUSH2 0x930 MSTORE DUP1 PUSH2 0x993 MSTORE DUP1 PUSH2 0xA3F MSTORE DUP1 PUSH2 0xB35 MSTORE DUP1 PUSH2 0xBF1 MSTORE DUP1 PUSH2 0xC54 MSTORE DUP1 PUSH2 0xD01 MSTORE DUP1 PUSH2 0xDC5 MSTORE DUP1 PUSH2 0xECD MSTORE DUP1 PUSH2 0xF2E MSTORE DUP1 PUSH2 0x1068 MSTORE DUP1 PUSH2 0x1162 MSTORE DUP1 PUSH2 0x1211 MSTORE DUP1 PUSH2 0x1302 MSTORE DUP1 PUSH2 0x13F3 MSTORE DUP1 PUSH2 0x1562 MSTORE DUP1 PUSH2 0x1637 MSTORE DUP1 PUSH2 0x17A5 MSTORE DUP1 PUSH2 0x18B9 MSTORE POP DUP1 PUSH2 0x1779 MSTORE POP DUP1 PUSH2 0x170C MSTORE POP PUSH2 0x1F5E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xB87B5616 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xC3B03FA8 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC3B03FA8 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xCB626AE2 EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0xD43B40FA EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0xD725A9CA EQ PUSH2 0x2FB JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xB87B5616 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xC167D1CD EQ PUSH2 0x1F2 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xA228BCED GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA228BCED EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0xADC4CF43 EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xB26B238E EQ PUSH2 0x1FA JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x9711715A EQ PUSH2 0x2D3 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x2C4E722E GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x4DBAC733 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x4DBAC733 EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0x55F74176 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x7EFAD8E0 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x819DF2C4 EQ PUSH2 0x202 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x4D2FA413 EQ PUSH2 0x243 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x21609BBF GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x21609BBF EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x24F92A25 EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x277DBAFB EQ PUSH2 0x1FA JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x87905C9 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0xDFBDCE4 EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0xF15F4C0 EQ PUSH2 0x1E0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C6 PUSH2 0x326 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C6 PUSH2 0x32D JUMP JUMPDEST PUSH2 0x1E8 PUSH2 0x346 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C6 PUSH2 0x14F9 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x1505 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x150F JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x1527 JUMP JUMPDEST PUSH2 0x1E8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x152D JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16E2 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16E8 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16F4 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16FA JUMP JUMPDEST PUSH2 0x1C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1706 JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x1777 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1E8 PUSH2 0x179B JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x1825 JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x182F JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x18AF JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x18B7 JUMP JUMPDEST PUSH2 0x1C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x18DB JUMP JUMPDEST PUSH2 0x1E8 PUSH2 0x18EE JUMP JUMPDEST PUSH1 0x1 SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x341 SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x34E PUSH2 0x196D JUMP JUMPDEST PUSH2 0x356 PUSH2 0x1986 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x2 SLOAD EQ PUSH2 0x3CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920616374697661746564000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD5391393 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x448 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x7028E2CD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x7028E2CD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x500 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA217FDDF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0xA217FDDF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x91D1485400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x91D14854 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x67B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x6CE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E90 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x741 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x755 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x76B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x8E2 JUMPI PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9010D07C DUP8 PUSH1 0x0 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x80A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x820 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xD547741F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0xD547741F SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x772 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x2F2FF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x2F2FF15D SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x977 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x98B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xBA3 JUMPI PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9010D07C DUP8 PUSH1 0x0 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xACB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xD547741F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0xD547741F SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB93 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0xA33 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x2F2FF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x2F2FF15D SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC4C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xE7F JUMPI PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9010D07C DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ PUSH2 0xE71 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD547741F DUP9 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE68 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xE76 JUMP JUMPDEST PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xCF5 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xD547741F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0xD547741F SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF28 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO PUSH2 0x101B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573732065786973747320776974682061646D696E20726967687473 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x91D1485400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x91D14854 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1115 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F07 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x91D1485400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x91D14854 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1EB2 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1294 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 EQ PUSH2 0x1300 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D756C7469706C65206D696E7465727320657869737400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1371 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1385 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x139B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 EQ PUSH2 0x13F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D756C7469706C6520736E617073686F74746572732065786973740000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x146B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE TIMESTAMP PUSH1 0x2 SSTORE PUSH3 0x93A80 PUSH10 0x1EB4773B6D1318A00000 DIV PUSH1 0x4 SSTORE PUSH32 0xA96AD9A0B81B29565FBE231714A2F2C152B759E603C91BF87144A3F61944F0A5 PUSH3 0x93A80 PUSH10 0x1EB4773B6D1318A00000 PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP4 SWAP1 SWAP3 DIV DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP POP POP POP POP POP POP PUSH2 0x14F7 PUSH2 0x19CF JUMP JUMPDEST JUMP JUMPDEST PUSH8 0x1080E992061AB300 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x341 PUSH2 0x19D6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x341 PUSH4 0x1E13380 PUSH2 0x1521 PUSH2 0x1A10 JUMP JUMPDEST SWAP1 PUSH2 0x195B JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1535 PUSH2 0x1986 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x1546 SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST TIMESTAMP LT PUSH2 0x1554 JUMPI PUSH2 0x1554 PUSH2 0x1A3C JUMP JUMPDEST PUSH2 0x155C PUSH2 0x19D6 JUMP JUMPDEST PUSH2 0x15F8 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x195B JUMP JUMPDEST GT ISZERO PUSH2 0x1635 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1ED9 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40C10F19 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH8 0x353C226D6C6F580 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x17A3 PUSH2 0x1986 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9711715A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x180B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x181F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x341 PUSH2 0x1A10 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1839 PUSH2 0x1777 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x187E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1892 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH4 0x1E13380 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18E7 DUP4 DUP4 PUSH2 0x1AF8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x18FF SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST TIMESTAMP LT ISZERO PUSH2 0x1953 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45706F636820686173206E6F742066696E697368656420796574000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x14F7 PUSH2 0x1A3C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x18E7 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x1CE5 JUMP JUMPDEST PUSH2 0x197F PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1CE5 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19B5 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1706 JUMP JUMPDEST SWAP1 POP PUSH2 0x19CC PUSH2 0x19C4 DUP3 CALLER PUSH2 0x1CF7 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x1CE5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19FA PUSH1 0x4 SLOAD PUSH2 0x19F4 PUSH1 0x2 SLOAD TIMESTAMP PUSH2 0x1DC0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x1DD6 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 SWAP2 POP PUSH2 0x1A0A SWAP1 DUP3 PUSH2 0x195B JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1A24 DUP2 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST TIMESTAMP LT PUSH2 0x341 JUMPI PUSH2 0x1A32 PUSH2 0x1A3C JUMP JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH2 0x32A JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 PUSH2 0x1A5B PUSH2 0x1A52 DUP4 PUSH4 0x1E13380 PUSH2 0x1DD6 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 PUSH2 0x195B JUMP JUMPDEST SWAP1 POP PUSH2 0x1A81 PUSH8 0x1080E992061AB300 PUSH2 0x1A7B DUP5 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DD6 JUMP JUMPDEST SWAP1 PUSH2 0x1DFA JUMP JUMPDEST SWAP2 POP PUSH2 0x1A98 PUSH1 0x1 DUP1 SLOAD PUSH2 0x195B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH1 0x2 SLOAD PUSH2 0x1AAC SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x4 DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xA96AD9A0B81B29565FBE231714A2F2C152B759E603C91BF87144A3F61944F0A5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x1B4F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7374617274203E20656E64000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH2 0x1B63 DUP3 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1B9B JUMPI PUSH2 0x1B78 DUP3 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST SWAP2 POP PUSH2 0x1B98 PUSH8 0x1080E992061AB300 PUSH2 0x1A7B DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DD6 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x1BA9 DUP3 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1BFD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F6F2066617220696E20667574757265000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST PUSH2 0x3E7 DUP2 LT ISZERO PUSH2 0x1CDB JUMPI DUP4 DUP7 LT PUSH2 0x1C91 JUMPI DUP6 PUSH2 0x1C21 DUP6 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x1C39 JUMPI PUSH2 0x1C36 DUP6 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST SWAP1 POP JUMPDEST DUP8 PUSH2 0x1C48 DUP7 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP2 LT PUSH2 0x1C55 JUMPI POP POP PUSH2 0x1CDB JUMP JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1C60 JUMPI POP DUP5 JUMPDEST PUSH2 0x1C7E PUSH2 0x1C77 PUSH2 0x1C70 DUP5 DUP5 PUSH2 0x1DC0 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x1DD6 JUMP JUMPDEST DUP6 SWAP1 PUSH2 0x195B JUMP JUMPDEST SWAP4 POP DUP6 DUP10 LT PUSH2 0x1C8E JUMPI POP POP PUSH2 0x1CDB JUMP JUMPDEST POP POP JUMPDEST PUSH2 0x1C9F DUP5 PUSH4 0x1E13380 PUSH2 0x1DC0 JUMP JUMPDEST SWAP4 POP PUSH2 0x1CBF PUSH8 0xDE0B6B3A7640000 PUSH2 0x1A7B DUP6 PUSH8 0x1080E992061AB300 PUSH2 0x1DD6 JUMP JUMPDEST SWAP3 POP PUSH8 0x353C226D6C6F580 DUP4 GT ISZERO PUSH2 0x1CD3 JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x1C01 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x1CF3 JUMPI PUSH2 0x1CF3 DUP2 PUSH2 0x1E1A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D01 PUSH2 0x182F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD0 DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x1CE5 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x18E7 DUP5 ISZERO DUP1 PUSH2 0x1DF3 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x1DF0 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x1CE5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E09 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x1CE5 JUMP JUMPDEST DUP2 DUP4 DUP2 PUSH2 0x1E12 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x19CC SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID TIMESTAMP PUSH2 0x6C61 PUSH15 0x636572546F6B656E41646D696E2069 PUSH20 0x206E6F7420616E2061646D696E42616C616E6365 PUSH19 0x546F6B656E41646D696E206973206E6F742061 KECCAK256 PUSH20 0x6E617073686F747465724D696E7420616D6F756E PUSH21 0x20657863656564732072656D61696E696E67206176 PUSH2 0x696C PUSH2 0x626C PUSH6 0x20737570706C PUSH26 0x42616C616E636572546F6B656E41646D696E206973206E6F7420 PUSH2 0x206D PUSH10 0x6E746572A26469706673 PC 0x22 SLT KECCAK256 SLOAD LOG0 REVERT PUSH21 0xDB370789A186086DF3B364DA5C6E1A227B2E9A48C1 0xC9 PUSH32 0xD98A0E96B264736F6C6343000701003300000000000000000000000000000000 ","sourceMap":"1910:14868:67:-:0;;;-1:-1:-1;;2619:51:67;;2794:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:134:67;;;;;;;1054:4:51;2049:46:46;;-1:-1:-1;;;;;;1073:14:51::1;::::0;;;;;::::1;::::0;2070:1:63;1030:31:51;2175:22:63;2891:30:67;;;::::1;::::0;1910:14868;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":5900}],"3611":[{"length":32,"start":6009}],"7909":[{"length":32,"start":976},{"length":32,"start":1190},{"length":32,"start":1374},{"length":32,"start":1568},{"length":32,"start":1746},{"length":32,"start":1918},{"length":32,"start":2164},{"length":32,"start":2352},{"length":32,"start":2451},{"length":32,"start":2623},{"length":32,"start":2869},{"length":32,"start":3057},{"length":32,"start":3156},{"length":32,"start":3329},{"length":32,"start":3525},{"length":32,"start":3789},{"length":32,"start":3886},{"length":32,"start":4200},{"length":32,"start":4450},{"length":32,"start":4625},{"length":32,"start":4866},{"length":32,"start":5107},{"length":32,"start":5474},{"length":32,"start":5687},{"length":32,"start":6053},{"length":32,"start":6329}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101b95760003560e01c8063851c1bb3116100f9578063b87b561611610097578063c3b03fa811610071578063c3b03fa8146102fb578063cb626ae21461031e578063d43b40fa1461031e578063d725a9ca146102fb576101b9565b8063b87b5616146102eb578063c0039699146102f3578063c167d1cd146101f2576101b9565b8063a228bced116100d3578063a228bced146102db578063aaabadc5146102e3578063adc4cf43146102db578063b26b238e146101fa576101b9565b8063851c1bb3146102635780638d928af8146102a25780639711715a146102d3576101b9565b80632c4e722e116101665780634dbac733116101405780634dbac7331461024b57806355f74176146102535780637efad8e01461025b578063819df2c414610202576101b9565b80632c4e722e1461020257806340c10f191461020a5780634d2fa41314610243576101b9565b806321609bbf1161019757806321609bbf146101ea57806324f92a25146101f2578063277dbafb146101fa576101b9565b8063087905c9146101be5780630dfbdce4146101d85780630f15f4c0146101e0575b600080fd5b6101c6610326565b60408051918252519081900360200190f35b6101c661032d565b6101e8610346565b005b6101c66114f9565b6101c6611505565b6101c661150f565b6101c6611527565b6101e86004803603604081101561022057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561152d565b6101c66116e2565b6101c66116e8565b6101c66116f4565b6101c66116fa565b6101c66004803603602081101561027957600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016611706565b6102aa611777565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101e861179b565b6101c6611825565b6102aa61182f565b6101c66118af565b6102aa6118b7565b6101c66004803603604081101561031157600080fd5b50803590602001356118db565b6101e86118ee565b6001545b90565b600254600090610341906301e1338061195b565b905090565b61034e61196d565b610356611986565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600254146103cc576040805162461bcd60e51b815260206004820152601160248201527f416c726561647920616374697661746564000000000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d53913936040518163ffffffff1660e01b815260040160206040518083038186803b15801561043457600080fd5b505afa158015610448573d6000803e3d6000fd5b505050506040513d602081101561045e57600080fd5b5051604080517f7028e2cd000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691637028e2cd916004808301926020929190829003018186803b1580156104ec57600080fd5b505afa158015610500573d6000803e3d6000fd5b505050506040513d602081101561051657600080fd5b5051604080517fa217fddf000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163a217fddf916004808301926020929190829003018186803b1580156105a457600080fd5b505afa1580156105b8573d6000803e3d6000fd5b505050506040513d60208110156105ce57600080fd5b5051604080517f91d1485400000000000000000000000000000000000000000000000000000000815260048101839052306024820152905191925073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916391d1485491604480820192602092909190829003018186803b15801561066757600080fd5b505afa15801561067b573d6000803e3d6000fd5b505050506040513d602081101561069157600080fd5b50516106ce5760405162461bcd60e51b8152600401808060200182810382526022815260200180611e906022913960400191505060405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561074157600080fd5b505afa158015610755573d6000803e3d6000fd5b505050506040513d602081101561076b57600080fd5b5051905060005b818110156108e25760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639010d07c8760006040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156107f657600080fd5b505afa15801561080a573d6000803e3d6000fd5b505050506040513d602081101561082057600080fd5b5051604080517fd547741f0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff808416602483015291519293507f00000000000000000000000000000000000000000000000000000000000000009091169163d547741f9160448082019260009290919082900301818387803b1580156108be57600080fd5b505af11580156108d2573d6000803e3d6000fd5b5050505050806001019050610772565b50604080517f2f2ff15d00000000000000000000000000000000000000000000000000000000815260048101869052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691632f2ff15d91604480830192600092919082900301818387803b15801561097757600080fd5b505af115801561098b573d6000803e3d6000fd5b5050505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a0257600080fd5b505afa158015610a16573d6000803e3d6000fd5b505050506040513d6020811015610a2c57600080fd5b5051905060005b81811015610ba35760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639010d07c8760006040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610ab757600080fd5b505afa158015610acb573d6000803e3d6000fd5b505050506040513d6020811015610ae157600080fd5b5051604080517fd547741f0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff808416602483015291519293507f00000000000000000000000000000000000000000000000000000000000000009091169163d547741f9160448082019260009290919082900301818387803b158015610b7f57600080fd5b505af1158015610b93573d6000803e3d6000fd5b5050505050806001019050610a33565b50604080517f2f2ff15d00000000000000000000000000000000000000000000000000000000815260048101869052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691632f2ff15d91604480830192600092919082900301818387803b158015610c3857600080fd5b505af1158015610c4c573d6000803e3d6000fd5b5050505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610cc357600080fd5b505afa158015610cd7573d6000803e3d6000fd5b505050506040513d6020811015610ced57600080fd5b505190506000805b82811015610e7f5760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639010d07c88856040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610d7857600080fd5b505afa158015610d8c573d6000803e3d6000fd5b505050506040513d6020811015610da257600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81163014610e71577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d547741f88836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015610e5457600080fd5b505af1158015610e68573d6000803e3d6000fd5b50505050610e76565b600192505b50600101610cf5565b50604080517fd547741f00000000000000000000000000000000000000000000000000000000815260048101879052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163d547741f91604480830192600092919082900301818387803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f9d57600080fd5b505afa158015610fb1573d6000803e3d6000fd5b505050506040513d6020811015610fc757600080fd5b50511561101b576040805162461bcd60e51b815260206004820181905260248201527f416464726573732065786973747320776974682061646d696e20726967687473604482015290519081900360640190fd5b604080517f91d1485400000000000000000000000000000000000000000000000000000000815260048101899052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916391d14854916044808301926020929190829003018186803b1580156110ae57600080fd5b505afa1580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b50516111155760405162461bcd60e51b8152600401808060200182810382526022815260200180611f076022913960400191505060405180910390fd5b604080517f91d1485400000000000000000000000000000000000000000000000000000000815260048101889052306024820152905173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916391d14854916044808301926020929190829003018186803b1580156111a857600080fd5b505afa1580156111bc573d6000803e3d6000fd5b505050506040513d60208110156111d257600080fd5b505161120f5760405162461bcd60e51b8152600401808060200182810382526027815260200180611eb26027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561128057600080fd5b505afa158015611294573d6000803e3d6000fd5b505050506040513d60208110156112aa57600080fd5b5051600114611300576040805162461bcd60e51b815260206004820152601660248201527f4d756c7469706c65206d696e7465727320657869737400000000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca15c873876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561137157600080fd5b505afa158015611385573d6000803e3d6000fd5b505050506040513d602081101561139b57600080fd5b50516001146113f1576040805162461bcd60e51b815260206004820152601b60248201527f4d756c7469706c6520736e617073686f74746572732065786973740000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561145757600080fd5b505afa15801561146b573d6000803e3d6000fd5b505050506040513d602081101561148157600080fd5b50516003554260025562093a80691eb4773b6d1318a00000046004557fa96ad9a0b81b29565fbe231714a2f2c152b759e603c91bf87144a3f61944f0a562093a80691eb4773b6d1318a000006003546040805193909204835260208301528051918290030190a1505050505050506114f76119cf565b565b671080e992061ab30081565b60006103416119d6565b60006103416301e13380611521611a10565b9061195b565b60045490565b611535611986565b600254611546906301e1338061195b565b421061155457611554611a3c565b61155c6119d6565b6115f8827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115c657600080fd5b505afa1580156115da573d6000803e3d6000fd5b505050506040513d60208110156115f057600080fd5b50519061195b565b11156116355760405162461bcd60e51b815260040180806020018281038252602e815260200180611ed9602e913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156116c657600080fd5b505af11580156116da573d6000803e3d6000fd5b505050505050565b60025490565b670353c226d6c6f58081565b60035490565b670de0b6b3a764000081565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6117a3611986565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639711715a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561180b57600080fd5b505af115801561181f573d6000803e3d6000fd5b50505050565b6000610341611a10565b6000611839611777565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561187e57600080fd5b505afa158015611892573d6000803e3d6000fd5b505050506040513d60208110156118a857600080fd5b5051905090565b6301e1338081565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006118e78383611af8565b9392505050565b6002546118ff906301e1338061195b565b421015611953576040805162461bcd60e51b815260206004820152601a60248201527f45706f636820686173206e6f742066696e697368656420796574000000000000604482015290519081900360640190fd5b6114f7611a3c565b60008282016118e78482101583611ce5565b61197f60026000541415610190611ce5565b6002600055565b60006119b56000357fffffffff0000000000000000000000000000000000000000000000000000000016611706565b90506119cc6119c48233611cf7565b610191611ce5565b50565b6001600055565b6000806119fa6004546119f460025442611dc090919063ffffffff16565b90611dd6565b600354909150611a0a908261195b565b91505090565b600254600090611a24816301e1338061195b565b421061034157611a32611a3c565b505060025461032a565b6004546000611a5b611a52836301e13380611dd6565b6003549061195b565b9050611a81671080e992061ab300611a7b84670de0b6b3a7640000611dd6565b90611dfa565b9150611a986001805461195b90919063ffffffff16565b600155600254611aac906301e1338061195b565b60025560048290556003819055604080518381526020810183905281517fa96ad9a0b81b29565fbe231714a2f2c152b759e603c91bf87144a3f61944f0a5929181900390910190a15050565b600081831115611b4f576040805162461bcd60e51b815260206004820152600b60248201527f7374617274203e20656e64000000000000000000000000000000000000000000604482015290519081900360640190fd5b600254600454611b63826301e1338061195b565b841115611b9b57611b78826301e1338061195b565b9150611b98671080e992061ab300611a7b83670de0b6b3a7640000611dd6565b90505b611ba9826301e1338061195b565b841115611bfd576040805162461bcd60e51b815260206004820152601160248201527f746f6f2066617220696e20667574757265000000000000000000000000000000604482015290519081900360640190fd5b6000805b6103e7811015611cdb57838610611c915785611c21856301e1338061195b565b811115611c3957611c36856301e1338061195b565b90505b87611c48866301e1338061195b565b8110611c55575050611cdb565b85811015611c605750845b611c7e611c77611c708484611dc0565b8790611dd6565b859061195b565b9350858910611c8e575050611cdb565b50505b611c9f846301e13380611dc0565b9350611cbf670de0b6b3a7640000611a7b85671080e992061ab300611dd6565b9250670353c226d6c6f580831115611cd357fe5b600101611c01565b5095945050505050565b81611cf357611cf381611e1a565b5050565b6000611d0161182f565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611d8d57600080fd5b505afa158015611da1573d6000803e3d6000fd5b505050506040513d6020811015611db757600080fd5b50519392505050565b6000611dd0838311156001611ce5565b50900390565b60008282026118e7841580611df3575083858381611df057fe5b04145b6003611ce5565b6000611e098215156004611ce5565b818381611e1257fe5b049392505050565b62461bcd60e51b600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526119cc917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe42616c616e636572546f6b656e41646d696e206973206e6f7420616e2061646d696e42616c616e636572546f6b656e41646d696e206973206e6f74206120736e617073686f747465724d696e7420616d6f756e7420657863656564732072656d61696e696e6720617661696c61626c6520737570706c7942616c616e636572546f6b656e41646d696e206973206e6f742061206d696e746572a264697066735822122054a0fd74db370789a186086df3b364da5c6e1a227b2e9a48c1c97fd98a0e96b264736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xB87B5616 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xC3B03FA8 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC3B03FA8 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xCB626AE2 EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0xD43B40FA EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0xD725A9CA EQ PUSH2 0x2FB JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xB87B5616 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xC167D1CD EQ PUSH2 0x1F2 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xA228BCED GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA228BCED EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0xADC4CF43 EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xB26B238E EQ PUSH2 0x1FA JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x9711715A EQ PUSH2 0x2D3 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x2C4E722E GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x4DBAC733 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x4DBAC733 EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0x55F74176 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x7EFAD8E0 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x819DF2C4 EQ PUSH2 0x202 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x4D2FA413 EQ PUSH2 0x243 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x21609BBF GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x21609BBF EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x24F92A25 EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x277DBAFB EQ PUSH2 0x1FA JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x87905C9 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0xDFBDCE4 EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0xF15F4C0 EQ PUSH2 0x1E0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C6 PUSH2 0x326 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C6 PUSH2 0x32D JUMP JUMPDEST PUSH2 0x1E8 PUSH2 0x346 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C6 PUSH2 0x14F9 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x1505 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x150F JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x1527 JUMP JUMPDEST PUSH2 0x1E8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x152D JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16E2 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16E8 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16F4 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x16FA JUMP JUMPDEST PUSH2 0x1C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1706 JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x1777 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1E8 PUSH2 0x179B JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x1825 JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x182F JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x18AF JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x18B7 JUMP JUMPDEST PUSH2 0x1C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x18DB JUMP JUMPDEST PUSH2 0x1E8 PUSH2 0x18EE JUMP JUMPDEST PUSH1 0x1 SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x341 SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x34E PUSH2 0x196D JUMP JUMPDEST PUSH2 0x356 PUSH2 0x1986 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x2 SLOAD EQ PUSH2 0x3CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920616374697661746564000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD5391393 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x448 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x7028E2CD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x7028E2CD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x500 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA217FDDF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0xA217FDDF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x91D1485400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x91D14854 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x67B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x6CE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E90 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x741 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x755 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x76B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x8E2 JUMPI PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9010D07C DUP8 PUSH1 0x0 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x80A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x820 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xD547741F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0xD547741F SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x772 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x2F2FF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x2F2FF15D SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x977 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x98B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xBA3 JUMPI PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9010D07C DUP8 PUSH1 0x0 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xACB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xD547741F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0xD547741F SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB93 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0xA33 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x2F2FF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x2F2FF15D SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC4C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xE7F JUMPI PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9010D07C DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ PUSH2 0xE71 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD547741F DUP9 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE68 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xE76 JUMP JUMPDEST PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xCF5 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xD547741F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0xD547741F SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF28 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO PUSH2 0x101B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573732065786973747320776974682061646D696E20726967687473 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x91D1485400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x91D14854 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1115 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F07 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x91D1485400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x91D14854 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1EB2 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1294 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 EQ PUSH2 0x1300 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D756C7469706C65206D696E7465727320657869737400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCA15C873 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1371 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1385 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x139B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 EQ PUSH2 0x13F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D756C7469706C6520736E617073686F74746572732065786973740000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x146B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE TIMESTAMP PUSH1 0x2 SSTORE PUSH3 0x93A80 PUSH10 0x1EB4773B6D1318A00000 DIV PUSH1 0x4 SSTORE PUSH32 0xA96AD9A0B81B29565FBE231714A2F2C152B759E603C91BF87144A3F61944F0A5 PUSH3 0x93A80 PUSH10 0x1EB4773B6D1318A00000 PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP4 SWAP1 SWAP3 DIV DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP POP POP POP POP POP POP PUSH2 0x14F7 PUSH2 0x19CF JUMP JUMPDEST JUMP JUMPDEST PUSH8 0x1080E992061AB300 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x341 PUSH2 0x19D6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x341 PUSH4 0x1E13380 PUSH2 0x1521 PUSH2 0x1A10 JUMP JUMPDEST SWAP1 PUSH2 0x195B JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1535 PUSH2 0x1986 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x1546 SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST TIMESTAMP LT PUSH2 0x1554 JUMPI PUSH2 0x1554 PUSH2 0x1A3C JUMP JUMPDEST PUSH2 0x155C PUSH2 0x19D6 JUMP JUMPDEST PUSH2 0x15F8 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x195B JUMP JUMPDEST GT ISZERO PUSH2 0x1635 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1ED9 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40C10F19 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH8 0x353C226D6C6F580 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x17A3 PUSH2 0x1986 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9711715A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x180B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x181F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x341 PUSH2 0x1A10 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1839 PUSH2 0x1777 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x187E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1892 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH4 0x1E13380 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18E7 DUP4 DUP4 PUSH2 0x1AF8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x18FF SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST TIMESTAMP LT ISZERO PUSH2 0x1953 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45706F636820686173206E6F742066696E697368656420796574000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x14F7 PUSH2 0x1A3C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x18E7 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x1CE5 JUMP JUMPDEST PUSH2 0x197F PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1CE5 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19B5 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1706 JUMP JUMPDEST SWAP1 POP PUSH2 0x19CC PUSH2 0x19C4 DUP3 CALLER PUSH2 0x1CF7 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x1CE5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19FA PUSH1 0x4 SLOAD PUSH2 0x19F4 PUSH1 0x2 SLOAD TIMESTAMP PUSH2 0x1DC0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x1DD6 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 SWAP2 POP PUSH2 0x1A0A SWAP1 DUP3 PUSH2 0x195B JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1A24 DUP2 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST TIMESTAMP LT PUSH2 0x341 JUMPI PUSH2 0x1A32 PUSH2 0x1A3C JUMP JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH2 0x32A JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 PUSH2 0x1A5B PUSH2 0x1A52 DUP4 PUSH4 0x1E13380 PUSH2 0x1DD6 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 PUSH2 0x195B JUMP JUMPDEST SWAP1 POP PUSH2 0x1A81 PUSH8 0x1080E992061AB300 PUSH2 0x1A7B DUP5 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DD6 JUMP JUMPDEST SWAP1 PUSH2 0x1DFA JUMP JUMPDEST SWAP2 POP PUSH2 0x1A98 PUSH1 0x1 DUP1 SLOAD PUSH2 0x195B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH1 0x2 SLOAD PUSH2 0x1AAC SWAP1 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x4 DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xA96AD9A0B81B29565FBE231714A2F2C152B759E603C91BF87144A3F61944F0A5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x1B4F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7374617274203E20656E64000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH2 0x1B63 DUP3 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1B9B JUMPI PUSH2 0x1B78 DUP3 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST SWAP2 POP PUSH2 0x1B98 PUSH8 0x1080E992061AB300 PUSH2 0x1A7B DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DD6 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x1BA9 DUP3 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1BFD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F6F2066617220696E20667574757265000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST PUSH2 0x3E7 DUP2 LT ISZERO PUSH2 0x1CDB JUMPI DUP4 DUP7 LT PUSH2 0x1C91 JUMPI DUP6 PUSH2 0x1C21 DUP6 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x1C39 JUMPI PUSH2 0x1C36 DUP6 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST SWAP1 POP JUMPDEST DUP8 PUSH2 0x1C48 DUP7 PUSH4 0x1E13380 PUSH2 0x195B JUMP JUMPDEST DUP2 LT PUSH2 0x1C55 JUMPI POP POP PUSH2 0x1CDB JUMP JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1C60 JUMPI POP DUP5 JUMPDEST PUSH2 0x1C7E PUSH2 0x1C77 PUSH2 0x1C70 DUP5 DUP5 PUSH2 0x1DC0 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x1DD6 JUMP JUMPDEST DUP6 SWAP1 PUSH2 0x195B JUMP JUMPDEST SWAP4 POP DUP6 DUP10 LT PUSH2 0x1C8E JUMPI POP POP PUSH2 0x1CDB JUMP JUMPDEST POP POP JUMPDEST PUSH2 0x1C9F DUP5 PUSH4 0x1E13380 PUSH2 0x1DC0 JUMP JUMPDEST SWAP4 POP PUSH2 0x1CBF PUSH8 0xDE0B6B3A7640000 PUSH2 0x1A7B DUP6 PUSH8 0x1080E992061AB300 PUSH2 0x1DD6 JUMP JUMPDEST SWAP3 POP PUSH8 0x353C226D6C6F580 DUP4 GT ISZERO PUSH2 0x1CD3 JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x1C01 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x1CF3 JUMPI PUSH2 0x1CF3 DUP2 PUSH2 0x1E1A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D01 PUSH2 0x182F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD0 DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x1CE5 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x18E7 DUP5 ISZERO DUP1 PUSH2 0x1DF3 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x1DF0 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x1CE5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E09 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x1CE5 JUMP JUMPDEST DUP2 DUP4 DUP2 PUSH2 0x1E12 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x19CC SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID TIMESTAMP PUSH2 0x6C61 PUSH15 0x636572546F6B656E41646D696E2069 PUSH20 0x206E6F7420616E2061646D696E42616C616E6365 PUSH19 0x546F6B656E41646D696E206973206E6F742061 KECCAK256 PUSH20 0x6E617073686F747465724D696E7420616D6F756E PUSH21 0x20657863656564732072656D61696E696E67206176 PUSH2 0x696C PUSH2 0x626C PUSH6 0x20737570706C PUSH26 0x42616C616E636572546F6B656E41646D696E206973206E6F7420 PUSH2 0x206D PUSH10 0x6E746572A26469706673 PC 0x22 SLT KECCAK256 SLOAD LOG0 REVERT PUSH21 0xDB370789A186086DF3B364DA5C6E1A227B2E9A48C1 0xC9 PUSH32 0xD98A0E96B264736F6C6343000701003300000000000000000000000000000000 ","sourceMap":"1910:14868:67:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8778:94;;;:::i;:::-;;;;;;;;;;;;;;;;9143:126;;;:::i;3291:4464::-;;;:::i;:::-;;2270:81;;;:::i;15236:102::-;;;:::i;10334:130::-;;;:::i;15144:86::-;;;:::i;7933:529::-;;;;;;;;;;;;;;;;-1:-1:-1;7933:529:67;;;;;;;;;:::i;8959:100::-;;;:::i;2090:82::-;;;:::i;9374:104::-;;;:::i;2378:56::-;;;:::i;2607:430:46:-;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:46;;;;:::i;1158:79:51:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8623:84:67;;;:::i;10048:113::-;;;:::i;1297:109:51:-;;;:::i;2201:63:67:-;;;:::i;2990:114::-;;;:::i;11161:145::-;;;;;;;;;;;;;;;;-1:-1:-1;11161:145:67;;;;;;;:::i;10694:193::-;;;:::i;8778:94::-;8853:12;;8778:94;;:::o;9143:126::-;9222:15;;9196:7;;9222:40;;2256:8;9222:19;:40::i;:::-;9215:47;;9143:126;:::o;3291:4464::-;2613:20:63;:18;:20::i;:::-;2276:21:46::1;:19;:21::i;:::-;3392:17:67::2;3373:15;;:36;3365:66;;;::::0;;-1:-1:-1;;;3365:66:67;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;4023:18;4044:14;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;4044:28:67;4105:30:::2;::::0;;;;;;;4044:28;;-1:-1:-1;4082:20:67::2;::::0;4105:28:::2;:14;:28;::::0;::::2;::::0;:30:::2;::::0;;::::2;::::0;4044:28:::2;::::0;4105:30;;;;;;;:28;:30;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;4105:30:67;4165:35:::2;::::0;;;;;;;4105:30;;-1:-1:-1;4145:17:67::2;::::0;4165:33:::2;:14;:33;::::0;::::2;::::0;:35:::2;::::0;;::::2;::::0;4105:30:::2;::::0;4165:35;;;;;;;:33;:35;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;4165:35:67;4219:48:::2;::::0;;;;;::::2;::::0;::::2;::::0;;;4261:4:::2;4219:48:::0;;;;;;4165:35;;-1:-1:-1;4219:22:67::2;:14;:22;::::0;::::2;::::0;:48;;;;;4165:35:::2;::::0;4219:48;;;;;;;;:22;:48;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;4219:48:67;4211:95:::2;;;;-1:-1:-1::0;;;4211:95:67::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4418:23;4444:14;:33;;;4478:10;4444:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;4444:45:67;;-1:-1:-1;4504:9:67::2;4499:190;4523:15;4519:1;:19;4499:190;;;4559:14;4576;:28;;;4605:10;4617:1;4576:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;4576:43:67;4633:45:::2;::::0;;;;;::::2;::::0;::::2;::::0;;;:25:::2;:45:::0;;::::2;::::0;;;;;;4576:43;;-1:-1:-1;4633:14:67::2;:25:::0;;::::2;::::0;::::2;::::0;:45;;;;;-1:-1:-1;;4633:45:67;;;;;;;;-1:-1:-1;4633:25:67;:45;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;4499:190;4540:3;;;;;4499:190;;;-1:-1:-1::0;4762:51:67::2;::::0;;;;;::::2;::::0;::::2;::::0;;;4807:4:::2;4762:51:::0;;;;;;:24:::2;:14;:24;::::0;::::2;::::0;:51;;;;;-1:-1:-1;;4762:51:67;;;;;;;-1:-1:-1;4762:24:67;:51;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;5139:28;5170:14;:33;;;5204:12;5170:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;5170:47:67;;-1:-1:-1;5232:9:67::2;5227:209;5251:20;5247:1;:24;5227:209;;;5292:19;5314:14;:28;;;5343:12;5357:1;5314:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;5314:45:67;5373:52:::2;::::0;;;;;::::2;::::0;::::2;::::0;;;:25:::2;:52:::0;;::::2;::::0;;;;;;5314:45;;-1:-1:-1;5373:14:67::2;:25:::0;;::::2;::::0;::::2;::::0;:52;;;;;-1:-1:-1;;5373:52:67;;;;;;;;-1:-1:-1;5373:25:67;:52;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;5227:209;5273:3;;;;;5227:209;;;-1:-1:-1::0;5514:53:67::2;::::0;;;;;::::2;::::0;::::2;::::0;;;5561:4:::2;5514:53:::0;;;;;;:24:::2;:14;:24;::::0;::::2;::::0;:53;;;;;-1:-1:-1;;5514:53:67;;;;;;;-1:-1:-1;5514:24:67;:53;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;6016:22;6041:14;:33;;;6075:9;6041:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;6041:44:67;;-1:-1:-1;6095:16:67::2;::::0;6125:414:::2;6149:14;6145:1;:18;6125:414;;;6184:13;6200:14;:28;;;6229:9;6240:8;6200:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;6200:49:67;;-1:-1:-1;6267:22:67::2;::::0;::::2;6284:4;6267:22;6263:266;;6309:14;:25;;;6335:9;6346:5;6309:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;6263:266;;;6513:1;6502:12;;6263:266;-1:-1:-1::0;6165:3:67::2;;6125:414;;;-1:-1:-1::0;6778:51:67::2;::::0;;;;;::::2;::::0;::::2;::::0;;;6823:4:::2;6778:51:::0;;;;;;:25:::2;:14;:25;::::0;::::2;::::0;:51;;;;;-1:-1:-1;;6778:51:67;;;;;;;-1:-1:-1;6778:25:67;:51;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;6940:14;:33;;;6974:9;6940:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;6940:44:67;:49;6932:94:::2;;;::::0;;-1:-1:-1;;;6932:94:67;;::::2;;::::0;::::2;::::0;;;;;;;::::2;::::0;;;;;;;;;;;;;::::2;;7044:49;::::0;;;;;::::2;::::0;::::2;::::0;;;7087:4:::2;7044:49:::0;;;;;;:22:::2;:14;:22;::::0;::::2;::::0;:49;;;;;::::2;::::0;;;;;;;;:22;:49;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;7044:49:67;7036:96:::2;;;;-1:-1:-1::0;;;7036:96:67::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7150:51;::::0;;;;;::::2;::::0;::::2;::::0;;;7195:4:::2;7150:51:::0;;;;;;:22:::2;:14;:22;::::0;::::2;::::0;:51;;;;;::::2;::::0;;;;;;;;:22;:51;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;7150:51:67;7142:103:::2;;;;-1:-1:-1::0;;;7142:103:67::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7263:14;:33;;;7297:10;7263:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;7263:45:67;7312:1:::2;7263:50;7255:85;;;::::0;;-1:-1:-1;;;7255:85:67;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;7358:14;:33;;;7392:12;7358:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;7358:47:67;7409:1:::2;7358:52;7350:92;;;::::0;;-1:-1:-1;;;7350:92:67;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;7576:14;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;7576:28:67;7556:17:::2;:48:::0;7632:15:::2;7614;:33:::0;2164:7:::2;2139:13;2138:34;7657:5;:20:::0;7692:56:::2;2164:7;2139:13;7730:17;::::0;7692:56:::2;::::0;;2138:34;;;::::2;7692:56:::0;;::::2;::::0;::::2;::::0;;;;;;;;;::::2;2307:1:46;;;;;;;2654:19:63::0;:17;:19::i;:::-;3291:4464:67:o;2270:81::-;2332:19;2270:81;:::o;15236:102::-;15287:7;15313:18;:16;:18::i;10334:130::-;10384:7;10410:47;2256:8;10410:22;:20;:22::i;:::-;:26;;:47::i;15144:86::-;15218:5;;15144:86;:::o;7933:529::-;2276:21:46;:19;:21::i;:::-;8157:15:67::1;::::0;:40:::1;::::0;2256:8:::1;8157:19;:40::i;:::-;8138:15;:59;8134:115;;8213:25;:23;:25::i;:::-;8324:18;:16;:18::i;:::-;8280:40;8313:6;8280:14;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8280:28:67;;:32:::1;:40::i;:::-;:62;;8259:155;;;;-1:-1:-1::0;;;8259:155:67::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8424:14;:19;;;8444:2;8448:6;8424:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7933:529:::0;;:::o;8959:100::-;9037:15;;8959:100;:::o;2090:82::-;2138:34;2090:82;:::o;9374:104::-;9454:17;;9374:104;:::o;2378:56::-;2430:4;2378:56;:::o;2607:430:46:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;8623:84:67:-;2276:21:46;:19;:21::i;:::-;8675:14:67::1;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8623:84::o:0;10048:113::-;10106:7;10132:22;:20;:22::i;1297:109:51:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:51;;-1:-1:-1;1297:109:51;:::o;2201:63:67:-;2256:8;2201:63;:::o;2990:114::-;3083:14;2990:114;:::o;11161:145::-;11241:7;11267:32;11288:5;11295:3;11267:20;:32::i;:::-;11260:39;11161:145;-1:-1:-1;;;11161:145:67:o;10694:193::-;10774:15;;:40;;2256:8;10774:19;:40::i;:::-;10755:15;:59;;10747:98;;;;;-1:-1:-1;;;10747:98:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;10855:25;:23;:25::i;794:166:55:-;852:7;883:5;;;898:37;907:6;;;;852:7;898:8;:37::i;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;:::-;2420:181;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;11441:227:67:-;11492:7;11511:33;11547:49;11590:5;;11548:36;11568:15;;11548;:19;;:36;;;;:::i;:::-;11547:42;;:49::i;:::-;11613:17;;11511:85;;-1:-1:-1;11613:48:67;;11511:85;11613:21;:48::i;:::-;11606:55;;;11441:227;:::o;11847:306::-;11941:15;;11897:7;;11989:39;11941:15;2256:8;11989:18;:39::i;:::-;11970:15;:58;11966:150;;12044:25;:23;:25::i;:::-;-1:-1:-1;;12090:15:67;;12083:22;;12159:547;12237:5;;12213:21;12279:61;12301:38;12237:5;2256:8;12301:17;:38::i;:::-;12279:17;;;:21;:61::i;:::-;12252:88;-1:-1:-1;12366:71:67;2332:19;12366:35;:13;2430:4;12366:17;:35::i;:::-;:43;;:71::i;:::-;12350:87;;12463:19;12480:1;12463:12;;:16;;:19;;;;:::i;:::-;12448:12;:34;12510:15;;:40;;2256:8;12510:19;:40::i;:::-;12492:15;:58;12560:5;:21;;;12591:17;:36;;;12643:56;;;;;;;;;;;;;;;;;;;;;;;;;12159:547;;:::o;12980:1949::-;13061:7;13097:3;13088:5;:12;;13080:36;;;;;-1:-1:-1;;;13080:36:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;13154:15;;13201:5;;13393:41;13154:15;2256:8;13393:20;:41::i;:::-;13387:3;:47;13383:235;;;13469:41;:16;2256:8;13469:20;:41::i;:::-;13450:60;-1:-1:-1;13538:69:67;2332:19;13538:33;:11;2430:4;13538:15;:33::i;:69::-;13524:83;;13383:235;13643:41;:16;2256:8;13643:20;:41::i;:::-;13636:3;:48;;13628:78;;;;;-1:-1:-1;;;13628:78:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;13717:14;13750:13;13745:1154;13777:3;13769:5;:11;13745:1154;;;13816:16;13809:3;:23;13805:789;;13873:3;13911:41;:16;2256:8;13911:20;:41::i;:::-;13898:10;:54;13894:155;;;13989:41;:16;2256:8;13989:20;:41::i;:::-;13976:54;;13894:155;14090:5;14133:41;:16;2256:8;14133:20;:41::i;:::-;14117:12;:57;14113:287;;14261:5;;;;14113:287;14310:16;14295:12;:31;14291:109;;;-1:-1:-1;14365:16:67;14291:109;14427:57;14438:45;14454:28;:10;14469:12;14454:14;:28::i;:::-;14438:11;;:15;:45::i;:::-;14427:6;;:10;:57::i;:::-;14418:66;;14516:16;14507:5;:25;14503:77;;14556:5;;;;14503:77;13805:789;;;14627:41;:16;2256:8;14627:20;:41::i;:::-;14608:60;-1:-1:-1;14770:69:67;2430:4;14770:43;:11;2332:19;14770:15;:43::i;:69::-;14756:83;-1:-1:-1;2138:34:67;14860:27;;;14853:35;;;;13782:7;;13745:1154;;;-1:-1:-1;14916:6:67;12980:1949;-1:-1:-1;;;;;12980:1949:67:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1523:60:51;;1412:178;-1:-1:-1;;;1412:178:51:o;1375:166:55:-;1433:7;1452:37;1466:1;1461;:6;;5194:1:31;1452:8:55;:37::i;:::-;-1:-1:-1;1511:5:55;;;1375:166::o;2456:180::-;2514:7;2545:5;;;2560:51;2569:6;;;:20;;;2588:1;2583;2579;:5;;;;;;:10;2569:20;5291:1:31;2560:8:55;:51::i;2820:148::-;2882:7;2901:38;2910:6;;;5340:1:31;2901:8:55;:38::i;:::-;2960:1;2956;:5;;;;;;;2820:148;-1:-1:-1;;;2820:148:55:o;1459:126:31:-;-1:-1:-1;;;1754:18:31;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"INITIAL_RATE()":"4dbac733","RATE_DENOMINATOR()":"7efad8e0","RATE_REDUCTION_COEFFICIENT()":"21609bbf","RATE_REDUCTION_TIME()":"b87b5616","activate()":"0f15f4c0","available_supply()":"24f92a25","futureEpochTimeWrite()":"277dbafb","future_epoch_time_write()":"b26b238e","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getAvailableSupply()":"c167d1cd","getBalancerToken()":"c0039699","getFutureEpochTime()":"0dfbdce4","getInflationRate()":"819df2c4","getMiningEpoch()":"087905c9","getStartEpochSupply()":"55f74176","getStartEpochTime()":"4d2fa413","getVault()":"8d928af8","mint(address,uint256)":"40c10f19","mintableInTimeframe(uint256,uint256)":"c3b03fa8","mintable_in_timeframe(uint256,uint256)":"d725a9ca","rate()":"2c4e722e","snapshot()":"9711715a","startEpochTimeWrite()":"a228bced","start_epoch_time_write()":"adc4cf43","updateMiningParameters()":"cb626ae2","update_mining_parameters()":"d43b40fa"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IBalancerToken\",\"name\":\"balancerToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"supply\",\"type\":\"uint256\"}],\"name\":\"MiningParametersUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"INITIAL_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_COEFFICIENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"available_supply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"futureEpochTimeWrite\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"future_epoch_time_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAvailableSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFutureEpochTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getInflationRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMiningEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStartEpochSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStartEpochTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"mintableInTimeframe\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"mintable_in_timeframe\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startEpochTimeWrite\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"start_epoch_time_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateMiningParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"update_mining_parameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract exists as a consequence of the gauge systems needing to know a fixed inflation schedule in order to know how much BAL a gauge is allowed to mint. As this does not exist within the BAL token itself it is defined here, we must then wrap the token's minting functionality in order for this to be meaningful.\",\"kind\":\"dev\",\"methods\":{\"activate()\":{\"details\":\"Reverts if contract does not have sole minting powers over BAL (and no other minters can be added).\"},\"futureEpochTimeWrite()\":{\"returns\":{\"_0\":\"Timestamp of the next epoch\"}},\"future_epoch_time_write()\":{\"returns\":{\"_0\":\"Timestamp of the next epoch\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getBalancerToken()\":{\"details\":\"Returns the Balancer token.\"},\"mint(address,uint256)\":{\"details\":\"Callable only by addresses defined in the Balancer Authorizer contract\"},\"mintableInTimeframe(uint256,uint256)\":{\"params\":{\"end\":\"End of the time interval (timestamp)\",\"start\":\"Start of the time interval (timestamp)\"},\"returns\":{\"_0\":\"Tokens mintable from `start` till `end`\"}},\"mintable_in_timeframe(uint256,uint256)\":{\"params\":{\"end\":\"End of the time interval (timestamp)\",\"start\":\"Start of the time interval (timestamp)\"},\"returns\":{\"_0\":\"Tokens mintable from `start` till `end`\"}},\"snapshot()\":{\"details\":\"Callable only by addresses defined in the Balancer Authorizer contract\"},\"startEpochTimeWrite()\":{\"returns\":{\"_0\":\"Timestamp of the current epoch\"}},\"start_epoch_time_write()\":{\"returns\":{\"_0\":\"Timestamp of the current epoch\"}},\"updateMiningParameters()\":{\"details\":\"Callable by any address, but only once per epoch Total supply becomes slightly larger if this function is called late\"},\"update_mining_parameters()\":{\"details\":\"Callable by any address, but only once per epoch Total supply becomes slightly larger if this function is called late\"}},\"title\":\"Balancer Token Admin\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"activate()\":{\"notice\":\"Initiate BAL token inflation schedule\"},\"futureEpochTimeWrite()\":{\"notice\":\"Get timestamp of the next mining epoch start while simultaneously updating mining parameters\"},\"future_epoch_time_write()\":{\"notice\":\"Get timestamp of the next mining epoch start while simultaneously updating mining parameters\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getAvailableSupply()\":{\"notice\":\"Maximum allowable number of tokens in existence (claimed or unclaimed)\"},\"getFutureEpochTime()\":{\"notice\":\"Returns the start timestamp of the next epoch.\"},\"getInflationRate()\":{\"notice\":\"Returns the current inflation rate of BAL per second\"},\"getMiningEpoch()\":{\"notice\":\"Returns the current epoch number.\"},\"getStartEpochSupply()\":{\"notice\":\"Returns the available supply at the beginning of the current epoch.\"},\"getStartEpochTime()\":{\"notice\":\"Returns the start timestamp of the current epoch.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"mint(address,uint256)\":{\"notice\":\"Mint BAL tokens subject to the defined inflation schedule\"},\"mintableInTimeframe(uint256,uint256)\":{\"notice\":\"How much supply is mintable from start timestamp till end timestamp\"},\"mintable_in_timeframe(uint256,uint256)\":{\"notice\":\"How much supply is mintable from start timestamp till end timestamp\"},\"snapshot()\":{\"notice\":\"Perform a snapshot of BAL token balances\"},\"startEpochTimeWrite()\":{\"notice\":\"Get timestamp of the current mining epoch start while simultaneously updating mining parameters\"},\"start_epoch_time_write()\":{\"notice\":\"Get timestamp of the current mining epoch start while simultaneously updating mining parameters\"},\"updateMiningParameters()\":{\"notice\":\"Update mining rate and supply at the start of the epoch\"},\"update_mining_parameters()\":{\"notice\":\"Update mining rate and supply at the start of the epoch\"}},\"notice\":\"This contract holds all admin powers over the BAL token passing through calls while delegating access control to the Balancer Authorizer In addition, calls to the mint function must respect the inflation schedule as defined in this contract. As this contract is the only way to mint BAL tokens this ensures that the maximum allowed supply is enforced\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerTokenAdmin.sol\":\"BalancerTokenAdmin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/BalancerTokenAdmin.sol\":{\"keccak256\":\"0x0845e1c626af8ef5232b9ad016284ad5398ff74fb22b8e7693a0c80a787b0c9a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2ad3057cac2c04c1f13002f3ee7ff33912b495a268eaf9fdf80d97d05653a9ed\",\"dweb:/ipfs/QmQAFmPhMUkmib6Yt1acK8kgpKCT2mHWWutWURwC9B6GjB\"]}},\"version\":1}"}},"contracts/GaugeWorkingBalanceHelper.sol":{"GaugeWorkingBalanceHelper":{"abi":[{"inputs":[{"internalType":"contract IVeDelegationProxy","name":"veDelegationProxy","type":"address"},{"internalType":"bool","name":"readTotalSupplyFromVE","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrowDelegationProxy","outputs":[{"internalType":"contract IVeDelegation","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IGauge","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getWorkingBalanceToSupplyRatios","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IGauge","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getWorkingBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"readsTotalSupplyFromVE","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e060405234801561001057600080fd5b506040516109813803806109818339818101604052604081101561003357600080fd5b5080516020918201516001600160601b0319606083901b1660805260408051630458184560e11b81529051929391926001600160a01b038516926308b0308a9260048082019391829003018186803b15801561008e57600080fd5b505afa1580156100a2573d6000803e3d6000fd5b505050506040513d60208110156100b857600080fd5b50516001600160601b031960609190911b1660a052151560f81b60c0525060805160601c60a05160601c60c05160f81c61086761011a6000398061025f528061035652508061015252806103f2525080610176528061033352506108676000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063ce5a7e7d11610050578063ce5a7e7d146100a5578063daf02aff146100f9578063fd655c841461011557610067565b806308b0308a1461006c5780635f6e28f61461009d575b600080fd5b610074610150565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610074610174565b6100e0600480360360408110156100bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610198565b6040805192835260208301919091528051918290030190f35b61010161025d565b604080519115158252519081900360200190f35b6100e06004803603604081101561012b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610281565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000806000806101a88686610281565b9150915060008673ffffffffffffffffffffffffffffffffffffffff166317e280896040518163ffffffff1660e01b815260040160206040518083038186803b1580156101f457600080fd5b505afa158015610208573d6000803e3d6000fd5b505050506040513d602081101561021e57600080fd5b5051905060006102388461023284866106a4565b906106bd565b905061024484836106d3565b61024e84836106d3565b95509550505050509250929050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60008060008473ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156102ed57600080fd5b505afa158015610301573d6000803e3d6000fd5b505050506040513d602081101561031757600080fd5b50519050600061032f8267058d15e176280000610726565b90507f000000000000000000000000000000000000000000000000000000000000000060007f00000000000000000000000000000000000000000000000000000000000000006103f0578173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103bf57600080fd5b505afa1580156103d3573d6000803e3d6000fd5b505050506040513d60208110156103e957600080fd5b5051610483565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561045657600080fd5b505afa15801561046a573d6000803e3d6000fd5b505050506040513d602081101561048057600080fd5b50515b905080156106035760008273ffffffffffffffffffffffffffffffffffffffff1663bbf7408a896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156104f457600080fd5b505afa158015610508573d6000803e3d6000fd5b505050506040513d602081101561051e57600080fd5b5051604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff8c16916318160ddd916004808301926020929190829003018186803b15801561058c57600080fd5b505afa1580156105a0573d6000803e3d6000fd5b505050506040513d60208110156105b657600080fd5b505190506105f26105eb846105e56105d567058d15e176280000610759565b6105df8688610726565b90610726565b906106d3565b86906106a4565b94506105fe868661076b565b945050505b8773ffffffffffffffffffffffffffffffffffffffff166313ecb1ca886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561066a57600080fd5b505afa15801561067e573d6000803e3d6000fd5b505050506040513d602081101561069457600080fd5b5051989297509195505050505050565b60008282016106b68482101583610777565b9392505050565b60006106cd838311156001610777565b50900390565b60006106e28215156004610777565b670de0b6b3a7640000830261071484158061070d5750670de0b6b3a764000085838161070a57fe5b04145b6005610777565b82818161071d57fe5b04949350505050565b600082820261074a84158061074357508385838161074057fe5b04145b6003610777565b670de0b6b3a76400008161071d565b670de0b6b3a764000081810391100290565b80820390821102900390565b816107855761078581610789565b5050565b6107b3817f42414c00000000000000000000000000000000000000000000000000000000006107b6565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220e6abff5bbc8414acdb5d36a62489810d8808e964516e5a475259a0a0050f816d64736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x981 CODESIZE SUB DUP1 PUSH2 0x981 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0x80 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x4581845 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0x8B0308A SWAP3 PUSH1 0x4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH1 0xA0 MSTORE ISZERO ISZERO PUSH1 0xF8 SHL PUSH1 0xC0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0xF8 SHR PUSH2 0x867 PUSH2 0x11A PUSH1 0x0 CODECOPY DUP1 PUSH2 0x25F MSTORE DUP1 PUSH2 0x356 MSTORE POP DUP1 PUSH2 0x152 MSTORE DUP1 PUSH2 0x3F2 MSTORE POP DUP1 PUSH2 0x176 MSTORE DUP1 PUSH2 0x333 MSTORE POP PUSH2 0x867 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xCE5A7E7D GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xCE5A7E7D EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0xDAF02AFF EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0xFD655C84 EQ PUSH2 0x115 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x5F6E28F6 EQ PUSH2 0x9D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x74 PUSH2 0x174 JUMP JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x198 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x101 PUSH2 0x25D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x281 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1A8 DUP7 DUP7 PUSH2 0x281 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E28089 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x208 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x238 DUP5 PUSH2 0x232 DUP5 DUP7 PUSH2 0x6A4 JUMP JUMPDEST SWAP1 PUSH2 0x6BD JUMP JUMPDEST SWAP1 POP PUSH2 0x244 DUP5 DUP4 PUSH2 0x6D3 JUMP JUMPDEST PUSH2 0x24E DUP5 DUP4 PUSH2 0x6D3 JUMP JUMPDEST SWAP6 POP SWAP6 POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x301 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x32F DUP3 PUSH8 0x58D15E176280000 PUSH2 0x726 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x0 PUSH32 0x0 PUSH2 0x3F0 JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x483 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x46A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x603 JUMPI PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBBF7408A DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x508 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x18160DDD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP2 PUSH4 0x18160DDD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x58C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x5F2 PUSH2 0x5EB DUP5 PUSH2 0x5E5 PUSH2 0x5D5 PUSH8 0x58D15E176280000 PUSH2 0x759 JUMP JUMPDEST PUSH2 0x5DF DUP7 DUP9 PUSH2 0x726 JUMP JUMPDEST SWAP1 PUSH2 0x726 JUMP JUMPDEST SWAP1 PUSH2 0x6D3 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x6A4 JUMP JUMPDEST SWAP5 POP PUSH2 0x5FE DUP7 DUP7 PUSH2 0x76B JUMP JUMPDEST SWAP5 POP POP POP JUMPDEST DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x13ECB1CA DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x67E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP9 SWAP3 SWAP8 POP SWAP2 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x6B6 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x777 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6CD DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x777 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E2 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x777 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x714 DUP5 ISZERO DUP1 PUSH2 0x70D JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x70A JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x777 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x71D JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x74A DUP5 ISZERO DUP1 PUSH2 0x743 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x740 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x777 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 PUSH2 0x71D JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP2 LT MUL SWAP1 JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x785 JUMPI PUSH2 0x785 DUP2 PUSH2 0x789 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x7B3 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7B6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 0xAB SELFDESTRUCT JUMPDEST 0xBC DUP5 EQ 0xAC 0xDB 0x5D CALLDATASIZE 0xA6 0x24 DUP10 DUP2 0xD DUP9 ADDMOD 0xE9 PUSH5 0x516E5A4752 MSIZE LOG0 LOG0 SDIV 0xF DUP2 PUSH14 0x64736F6C63430007010033000000 ","sourceMap":"2115:4200:68:-:0;;;2640:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2640:244:68;;;;;;;-1:-1:-1;;;;;;2728:38:68;;;;;;;2640:244;2785:35;;-1:-1:-1;;;2785:35:68;;;;2640:244;;;;-1:-1:-1;;;;;2728:38:68;;;2785:33;;:35;;;;;;;;;;;2728:38;2785:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2785:35:68;-1:-1:-1;;;;;;2776:44:68;;;;;;;;2831:46;;;;;;-1:-1:-1;2115:4200:68;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"8798":[{"length":32,"start":374},{"length":32,"start":819}],"8800":[{"length":32,"start":338},{"length":32,"start":1010}],"8802":[{"length":32,"start":607},{"length":32,"start":854}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c8063ce5a7e7d11610050578063ce5a7e7d146100a5578063daf02aff146100f9578063fd655c841461011557610067565b806308b0308a1461006c5780635f6e28f61461009d575b600080fd5b610074610150565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610074610174565b6100e0600480360360408110156100bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610198565b6040805192835260208301919091528051918290030190f35b61010161025d565b604080519115158252519081900360200190f35b6100e06004803603604081101561012b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610281565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000806000806101a88686610281565b9150915060008673ffffffffffffffffffffffffffffffffffffffff166317e280896040518163ffffffff1660e01b815260040160206040518083038186803b1580156101f457600080fd5b505afa158015610208573d6000803e3d6000fd5b505050506040513d602081101561021e57600080fd5b5051905060006102388461023284866106a4565b906106bd565b905061024484836106d3565b61024e84836106d3565b95509550505050509250929050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60008060008473ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156102ed57600080fd5b505afa158015610301573d6000803e3d6000fd5b505050506040513d602081101561031757600080fd5b50519050600061032f8267058d15e176280000610726565b90507f000000000000000000000000000000000000000000000000000000000000000060007f00000000000000000000000000000000000000000000000000000000000000006103f0578173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103bf57600080fd5b505afa1580156103d3573d6000803e3d6000fd5b505050506040513d60208110156103e957600080fd5b5051610483565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561045657600080fd5b505afa15801561046a573d6000803e3d6000fd5b505050506040513d602081101561048057600080fd5b50515b905080156106035760008273ffffffffffffffffffffffffffffffffffffffff1663bbf7408a896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156104f457600080fd5b505afa158015610508573d6000803e3d6000fd5b505050506040513d602081101561051e57600080fd5b5051604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff8c16916318160ddd916004808301926020929190829003018186803b15801561058c57600080fd5b505afa1580156105a0573d6000803e3d6000fd5b505050506040513d60208110156105b657600080fd5b505190506105f26105eb846105e56105d567058d15e176280000610759565b6105df8688610726565b90610726565b906106d3565b86906106a4565b94506105fe868661076b565b945050505b8773ffffffffffffffffffffffffffffffffffffffff166313ecb1ca886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561066a57600080fd5b505afa15801561067e573d6000803e3d6000fd5b505050506040513d602081101561069457600080fd5b5051989297509195505050505050565b60008282016106b68482101583610777565b9392505050565b60006106cd838311156001610777565b50900390565b60006106e28215156004610777565b670de0b6b3a7640000830261071484158061070d5750670de0b6b3a764000085838161070a57fe5b04145b6005610777565b82818161071d57fe5b04949350505050565b600082820261074a84158061074357508385838161074057fe5b04145b6003610777565b670de0b6b3a76400008161071d565b670de0b6b3a764000081810391100290565b80820390821102900390565b816107855761078581610789565b5050565b6107b3817f42414c00000000000000000000000000000000000000000000000000000000006107b6565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220e6abff5bbc8414acdb5d36a62489810d8808e964516e5a475259a0a0050f816d64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xCE5A7E7D GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xCE5A7E7D EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0xDAF02AFF EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0xFD655C84 EQ PUSH2 0x115 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x5F6E28F6 EQ PUSH2 0x9D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x74 PUSH2 0x174 JUMP JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x198 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x101 PUSH2 0x25D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x281 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1A8 DUP7 DUP7 PUSH2 0x281 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E28089 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x208 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x238 DUP5 PUSH2 0x232 DUP5 DUP7 PUSH2 0x6A4 JUMP JUMPDEST SWAP1 PUSH2 0x6BD JUMP JUMPDEST SWAP1 POP PUSH2 0x244 DUP5 DUP4 PUSH2 0x6D3 JUMP JUMPDEST PUSH2 0x24E DUP5 DUP4 PUSH2 0x6D3 JUMP JUMPDEST SWAP6 POP SWAP6 POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x301 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x32F DUP3 PUSH8 0x58D15E176280000 PUSH2 0x726 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x0 PUSH32 0x0 PUSH2 0x3F0 JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x483 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x46A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x603 JUMPI PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBBF7408A DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x508 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x18160DDD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP2 PUSH4 0x18160DDD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x58C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x5F2 PUSH2 0x5EB DUP5 PUSH2 0x5E5 PUSH2 0x5D5 PUSH8 0x58D15E176280000 PUSH2 0x759 JUMP JUMPDEST PUSH2 0x5DF DUP7 DUP9 PUSH2 0x726 JUMP JUMPDEST SWAP1 PUSH2 0x726 JUMP JUMPDEST SWAP1 PUSH2 0x6D3 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x6A4 JUMP JUMPDEST SWAP5 POP PUSH2 0x5FE DUP7 DUP7 PUSH2 0x76B JUMP JUMPDEST SWAP5 POP POP POP JUMPDEST DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x13ECB1CA DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x67E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP9 SWAP3 SWAP8 POP SWAP2 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x6B6 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x777 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6CD DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x777 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E2 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x777 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x714 DUP5 ISZERO DUP1 PUSH2 0x70D JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x70A JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x777 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x71D JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x74A DUP5 ISZERO DUP1 PUSH2 0x743 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x740 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x777 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 PUSH2 0x71D JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP2 LT MUL SWAP1 JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x785 JUMPI PUSH2 0x785 DUP2 PUSH2 0x789 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x7B3 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7B6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 0xAB SELFDESTRUCT JUMPDEST 0xBC DUP5 EQ 0xAC 0xDB 0x5D CALLDATASIZE 0xA6 0x24 DUP10 DUP2 0xD DUP9 ADDMOD 0xE9 PUSH5 0x516E5A4752 MSIZE LOG0 LOG0 SDIV 0xF DUP2 PUSH14 0x64736F6C63430007010033000000 ","sourceMap":"2115:4200:68:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3217:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3000:122;;;:::i;5743:570::-;;;;;;;;;;;;;;;;-1:-1:-1;5743:570:68;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3485:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;4097:990;;;;;;;;;;;;;;;;-1:-1:-1;4097:990:68;;;;;;;;;;;:::i;3217:88::-;3292:6;3217:88;:::o;3000:122::-;3097:18;3000:122;:::o;5743:570::-;5835:7;5844;5864:29;5895:31;5930;5949:5;5956:4;5930:18;:31::i;:::-;5863:98;;;;5971:28;6002:5;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6002:22:68;;-1:-1:-1;6035:30:68;6068:76;6122:21;6068:49;6002:22;6093:23;6068:24;:49::i;:::-;:53;;:76::i;:::-;6035:109;-1:-1:-1;6176:51:68;:21;6206:20;6176:29;:51::i;:::-;6241:55;:23;6273:22;6241:31;:55::i;:::-;6155:151;;;;;;;;5743:570;;;;;:::o;3485:109::-;3565:22;3485:109;:::o;4097:990::-;4174:7;4183;4202:24;4229:5;:15;;;4245:4;4229:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4229:21:68;;-1:-1:-1;4260:31:68;4294:47;4229:21;2284:5;4294:24;:47::i;:::-;4260:81;-1:-1:-1;4378:18:68;4351:24;4431:22;:67;;4479:5;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4479:19:68;4431:67;;;4456:6;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4456:20:68;4431:67;4407:91;-1:-1:-1;4513:17:68;;4509:499;;4546:21;4570:5;:25;;;4596:4;4570:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4570:31:68;4642:19;;;;;;;;4570:31;;-1:-1:-1;4615:24:68;;4642:17;;;;;;:19;;;;;4570:31;;4642:19;;;;;;;:17;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4642:19:68;;-1:-1:-1;4702:203:68;4747:144;4860:13;4747:83;4795:34;2284:5;4795:32;:34::i;:::-;4747:39;:16;4772:13;4747:24;:39::i;:::-;:47;;:83::i;:::-;:91;;:144::i;:::-;4702:23;;:27;:203::i;:::-;4676:229;;4946:51;4955:16;4973:23;4946:8;:51::i;:::-;4920:77;;4509:499;;;5026:5;:22;;;5049:4;5026:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5026:28:68;;5056:23;;-1:-1:-1;4097:990:68;;-1:-1:-1;;;;;;4097:990:68:o;1343:239:53:-;1401:7;1505:5;;;1520:37;1529:6;;;;1401:7;1520:8;:37::i;:::-;1574:1;1343:239;-1:-1:-1;;;1343:239:53:o;1588:::-;1646:7;1738:37;1752:1;1747;:6;;5194:1:31;1738:8:53;:37::i;:::-;-1:-1:-1;1797:5:53;;;1588:239::o;2768:282::-;2830:7;2849:38;2858:6;;;5340:1:31;2849:8:53;:38::i;:::-;988:4;2918:7;;2935:61;2944:6;;;:30;;;988:4;2966:1;2954:9;:13;;;;;;:20;2944:30;5388:1:31;2935:8:53;:61::i;:::-;3042:1;3030:9;:13;;;;;;;2768:282;-1:-1:-1;;;;2768:282:53:o;1833:209::-;1895:7;1932:5;;;1947:57;1956:6;;;:26;;;1981:1;1976;1966:7;:11;;;;;;:16;1956:26;5291:1:31;1947:8:53;:57::i;:::-;988:4;2022:7;:13;;5977:230;6183:3;6179:11;;;6167:10;;6163:28;;6139:62::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"getVotingEscrow()":"08b0308a","getVotingEscrowDelegationProxy()":"5f6e28f6","getWorkingBalanceToSupplyRatios(address,address)":"ce5a7e7d","getWorkingBalances(address,address)":"fd655c84","readsTotalSupplyFromVE()":"daf02aff"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVeDelegationProxy\",\"name\":\"veDelegationProxy\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"readTotalSupplyFromVE\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrowDelegationProxy\",\"outputs\":[{\"internalType\":\"contract IVeDelegation\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getWorkingBalanceToSupplyRatios\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getWorkingBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"readsTotalSupplyFromVE\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The `working_balance` can range between 40% and 100% of the nominal user balance on a gauge, depending on the veBAL \\\"voting power\\\" of the user with respect to the total \\\"voting power\\\" supply. This value generally decays over time, but will increase with additional veBAL locking. Also computes the working balance ratios: balance/supply, which is more informative when deciding whether it would be advantageous for the user to checkpoint a gauge.\",\"kind\":\"dev\",\"methods\":{\"getVotingEscrow()\":{\"details\":\"Returns the VotingEscrow contract associated with the proxy.\"},\"getVotingEscrowDelegationProxy()\":{\"details\":\"Returns the VotingEscrowDelegationProxy (as an IVeDelegation, which is exported).\"},\"getWorkingBalanceToSupplyRatios(address,address)\":{\"details\":\"There is also a \\\"working\\\" supply, needed to ensure that all the emissions are allocated. Compute and return the balance/supply ratios. This captures the behavior of other users, and more accurately reflects this user's relative position.\",\"params\":{\"gauge\":\"- address of a gauge (L1 or L2).\",\"user\":\"- address of a user.\"},\"returns\":{\"_0\":\"ratio of the current `working_balance` of the user to the current `working_supply` of the gauge.\",\"_1\":\"ratio of the projected `working_balance` of the user (after `user_checkpoint`), to the projected `working_supply` of the gauge.\"}},\"getWorkingBalances(address,address)\":{\"details\":\"The gauge allocates 60% of the emissions it receives to veBAL holders, which it accomplishes by computing an effective \\\"working\\\" balance for each user, starting with 40% of the true balance (i.e., BPT deposited in the gauge), and adding a \\\"boost\\\" proportional to that user's share of the total voting power.\",\"params\":{\"gauge\":\"- address of a gauge (L1 or L2).\",\"user\":\"- address of a user.\"},\"returns\":{\"_0\":\"current and projected balances.\"}},\"readsTotalSupplyFromVE()\":{\"details\":\"Returns whether the total supply will be read from the VotingEscrow contract. If false, it will be read from the delegation proxy instead.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Get the current and projected `working_balance` (effective veBAL boosted balance) for a user on a gauge.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/GaugeWorkingBalanceHelper.sol\":\"GaugeWorkingBalanceHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\":{\"keccak256\":\"0xd4ebf4ceca6fa99ec2149d60b36084674621ae87e8a7786b23501749da8cc581\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7dd20ed7be933a3d8ec0be284b8f7f123e69ecb29731e35f70c371eb4f5e26c8\",\"dweb:/ipfs/QmfPp5sBxn92hg32fPFTDBB5kuHP9qU4jN3bSfip8uCnQ6\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"contracts/GaugeWorkingBalanceHelper.sol\":{\"keccak256\":\"0xcbc734e03f299bcabaedbd92e8960bffd49392e4c1d7c73cc7736f8884bf976a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f1a7bd26135a5cd6069f9c9b843b0e14f3162157f838d823ce5d71a9bfcf936e\",\"dweb:/ipfs/QmWQeGYp9Ukoccd8RhRjUvsR1EBC1hG5VQ3x66TkvFUtSP\"]}},\"version\":1}"},"IGauge":{"abi":[{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"working_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"working_supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"balanceOf(address)":"70a08231","totalSupply()":"18160ddd","working_balances(address)":"13ecb1ca","working_supply()":"17e28089"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"working_balances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"working_supply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/GaugeWorkingBalanceHelper.sol\":\"IGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\":{\"keccak256\":\"0xd4ebf4ceca6fa99ec2149d60b36084674621ae87e8a7786b23501749da8cc581\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7dd20ed7be933a3d8ec0be284b8f7f123e69ecb29731e35f70c371eb4f5e26c8\",\"dweb:/ipfs/QmfPp5sBxn92hg32fPFTDBB5kuHP9qU4jN3bSfip8uCnQ6\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"contracts/GaugeWorkingBalanceHelper.sol\":{\"keccak256\":\"0xcbc734e03f299bcabaedbd92e8960bffd49392e4c1d7c73cc7736f8884bf976a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f1a7bd26135a5cd6069f9c9b843b0e14f3162157f838d823ce5d71a9bfcf936e\",\"dweb:/ipfs/QmWQeGYp9Ukoccd8RhRjUvsR1EBC1hG5VQ3x66TkvFUtSP\"]}},\"version\":1}"},"IVeDelegationProxy":{"abi":[{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"adjusted_balance_of","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"adjusted_balance_of(address)":"bbf7408a","getVotingEscrow()":"08b0308a","totalSupply()":"18160ddd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"adjusted_balance_of\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/GaugeWorkingBalanceHelper.sol\":\"IVeDelegationProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\":{\"keccak256\":\"0xd4ebf4ceca6fa99ec2149d60b36084674621ae87e8a7786b23501749da8cc581\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7dd20ed7be933a3d8ec0be284b8f7f123e69ecb29731e35f70c371eb4f5e26c8\",\"dweb:/ipfs/QmfPp5sBxn92hg32fPFTDBB5kuHP9qU4jN3bSfip8uCnQ6\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"contracts/GaugeWorkingBalanceHelper.sol\":{\"keccak256\":\"0xcbc734e03f299bcabaedbd92e8960bffd49392e4c1d7c73cc7736f8884bf976a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f1a7bd26135a5cd6069f9c9b843b0e14f3162157f838d823ce5d71a9bfcf936e\",\"dweb:/ipfs/QmWQeGYp9Ukoccd8RhRjUvsR1EBC1hG5VQ3x66TkvFUtSP\"]}},\"version\":1}"}},"contracts/L2BalancerPseudoMinter.sol":{"L2BalancerPseudoMinter":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IERC20","name":"balancerToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ILiquidityGaugeFactory","name":"factory","type":"address"}],"name":"GaugeFactoryAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ILiquidityGaugeFactory","name":"factory","type":"address"}],"name":"GaugeFactoryRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"uint256","name":"minted","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"bool","name":"approval","type":"bool"}],"name":"MinterApprovalSet","type":"event"},{"inputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"factory","type":"address"}],"name":"addGaugeFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"allowed_to_mint_for","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getMinterApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"factory","type":"address"}],"name":"isValidGaugeFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"mintManyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mint_for","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[8]","name":"gauges","type":"address[8]"}],"name":"mint_many","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"factory","type":"address"}],"name":"removeGaugeFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"}],"name":"setMinterApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"setMinterApprovalWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"toggle_approve_mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"61014060405234801561001157600080fd5b5060405161186a38038061186a8339818101604052604081101561003457600080fd5b508051602091820151604080518082018252601681527f42616c616e6365722050736575646f204d696e7465720000000000000000000081860190815282518084019093526001808452603160f81b968401968752600055905190206080525190922060a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526001600160601b0319606092831b811660e0523061010052911b166101205260805160a05160c05160e05160601c610100516101205160601c61173e61012c600039806109eb525080610953525080610b19525080610e25525080610e67525080610e46525061173e6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c8063851c1bb3116100d8578063a51e19041161008c578063c654279411610066578063c6542794146104c1578063dd289d6014610512578063ed24911d1461053857610177565b8063a51e190414610494578063aaabadc5146104b1578063c0039699146104b957610177565b80638d928af8116100bd5780638d928af81461044a57806390193b7c1461046e578063a0990033146102fb57610177565b8063851c1bb3146103dd5780638b752bb01461041c57610177565b80633c543bc61161012f5780636c71e920116101145780636c71e920146103635780637504a15d146103895780637a60e63a146103b757610177565b80633c543bc6146102fb5780636a6278421461033d57610177565b806338f121521161016057806338f12152146101da578063397ada21146102005780633b9f73841461028257610177565b80630de54ba01461017c57806327f18ae3146101ac575b600080fd5b6101aa6004803603604081101561019257600080fd5b506001600160a01b0381351690602001351515610540565b005b6101aa600480360360408110156101c257600080fd5b506001600160a01b038135811691602001351661054f565b6101aa600480360360208110156101f057600080fd5b50356001600160a01b0316610597565b6102706004803603602081101561021657600080fd5b81019060208101813564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184602083028401116401000000008311171561026557600080fd5b509092509050610691565b60408051918252519081900360200190f35b6102706004803603604081101561029857600080fd5b8101906020810181356401000000008111156102b357600080fd5b8201836020820111156102c557600080fd5b803590602001918460208302840111640100000000831117156102e757600080fd5b9193509150356001600160a01b03166106b6565b6103296004803603604081101561031157600080fd5b506001600160a01b0381358116916020013516610758565b604080519115158252519081900360200190f35b6102706004803603602081101561035357600080fd5b50356001600160a01b0316610786565b6103296004803603602081101561037957600080fd5b50356001600160a01b03166107a9565b6102706004803603604081101561039f57600080fd5b506001600160a01b03813581169160200135166107c7565b6101aa600480360360208110156103cd57600080fd5b50356001600160a01b0316610857565b610270600480360360208110156103f357600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661094d565b6102706004803603604081101561043257600080fd5b506001600160a01b03813581169160200135166109be565b6104526109e9565b604080516001600160a01b039092168252519081900360200190f35b6102706004803603602081101561048457600080fd5b50356001600160a01b0316610a0d565b6101aa60048036036101008110156104ab57600080fd5b50610a28565b610452610aa4565b610452610b17565b6101aa600480360360e08110156104d757600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060ff6080820135169060a08101359060c00135610b3b565b6101aa6004803603602081101561052857600080fd5b50356001600160a01b0316610be0565b610270610c13565b61054b823383610c22565b5050565b610557610cb1565b3360009081526003602090815260408083206001600160a01b038516845290915290205460ff161561058f5761058d8282610cca565b505b61054b610ce2565b61059f610ce9565b6001600160a01b03811660009081526004602052604090205460ff161561062757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464143544f52595f414c52454144595f41444445440000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f8e2924dc08a7879532dca0c2c0460bd67eb431ab342df45afd2c4f7288aab9b79190a250565b600061069b610cb1565b6106a6838333610d2f565b90506106b0610ce2565b92915050565b60006106c0610cb1565b3360009081526003602090815260408083206001600160a01b038616845290915290205460ff1661073c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116e66023913960400191505060405180910390fd5b610747848484610d2f565b9050610751610ce2565b9392505050565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6000610790610cb1565b61079a8233610cca565b90506107a4610ce2565b919050565b6001600160a01b031660009081526004602052604090205460ff1690565b60006107d1610cb1565b3360009081526003602090815260408083206001600160a01b038616845290915290205460ff1661084d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116e66023913960400191505060405180910390fd5b6106a68383610cca565b61085f610ce9565b6001600160a01b03811660009081526004602052604090205460ff166108e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f464143544f52595f4e4f545f4144444544000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fdc66290a40b716cd9557c1d6c84315e06de88697ee252b89e1a9a9b053dc307b9190a250565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031660009081526001602052604090205490565b610a30610cb1565b60005b6008811015610a98576000828260088110610a4a57fe5b60200201356001600160a01b03166001600160a01b03161415610a6c57610a98565b610a8f828260088110610a7b57fe5b60200201356001600160a01b031633610cca565b50600101610a33565b50610aa1610ce2565b50565b6000610aae6109e9565b6001600160a01b031663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae657600080fd5b505afa158015610afa573d6000803e3d6000fd5b505050506040513d6020811015610b1057600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007fc87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd8153808888610b6989610a0d565b604080516020808201969096526001600160a01b03909416848201529115156060840152608083015260a08083018990528151808403909101815260c0909201905280519101209050610bcb8682610bc2878787610d88565b886101f8610dc7565b610bd6888789610c22565b5050505050505050565b6001600160a01b0381166000908152600360209081526040808320338452909152902054610aa190829060ff1615610540565b6000610c1d610e21565b905090565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291519293927fa3ffb51320bbca4e61e7423e3c97dd7bd7e31b6ea7429eb26ef92780e84572a09281900390910190a3505050565b610cc360026000541415610190610edf565b6002600055565b6000610cd68383610eed565b90506106b082826111f1565b6001600055565b6000610d186000357fffffffff000000000000000000000000000000000000000000000000000000001661094d565b9050610aa1610d278233611214565b610191610edf565b600082815b81811015610d7557610d6b610d64878784818110610d4e57fe5b905060200201356001600160a01b031686610eed565b84906112b6565b9250600101610d34565b50610d8083836111f1565b509392505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610dd2856112c8565b9050610de8610de287838761132f565b83610edf565b610df7428410156101b8610edf565b5050506001600160a01b039092166000908152600160208190526040909120805490910190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610e8e61141a565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b8161054b5761054b8161141e565b6000808390506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2e57600080fd5b505afa158015610f42573d6000803e3d6000fd5b505050506040513d6020811015610f5857600080fd5b50519050610f65816107a9565b610fd057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e56414c49445f47415547455f464143544f52590000000000000000000000604482015290519081900360640190fd5b806001600160a01b031663ce3cc8bd866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561101d57600080fd5b505afa158015611031573d6000803e3d6000fd5b505050506040513d602081101561104757600080fd5b50516110b457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f474155474500000000000000000000000000000000000000604482015290519081900360640190fd5b816001600160a01b0316634b820093856040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561110357600080fd5b505af1158015611117573d6000803e3d6000fd5b505050506040513d602081101561112d57600080fd5b5050604080517f094007070000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291516000928516916309400707916024808301926020929190829003018186803b15801561119357600080fd5b505afa1580156111a7573d6000803e3d6000fd5b505050506040513d60208110156111bd57600080fd5b505190506111d56111ce86886109be565b8290611448565b935083156111e8576111e8858783611456565b50505092915050565b801561054b5761054b8282611204610b17565b6001600160a01b031691906114c0565b600061121e610aa4565b6001600160a01b0316639be2a8848484306040518463ffffffff1660e01b815260040180848152602001836001600160a01b03168152602001826001600160a01b03168152602001935050505060206040518083038186803b15801561128357600080fd5b505afa158015611297573d6000803e3d6000fd5b505050506040513d60208110156112ad57600080fd5b50519392505050565b60008282016107518482101583610edf565b60006112d2610e21565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061134182516041146101b9610edf565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113ba573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b0381161580159061140e5750876001600160a01b0316816001600160a01b0316145b98975050505050505050565b4690565b610aa1817f42414c0000000000000000000000000000000000000000000000000000000000611545565b6000610751838360016115c0565b6001600160a01b0380841660008181526002602090815260408083209487168084529482529182902085905581519384528301849052805191927f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0929081900390910190a2505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526115409084906115d6565b505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006115cf8484111583610edf565b5050900390565b60006060836001600160a01b0316836040518082805190602001908083835b6020831061163257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016115f5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611694576040519150601f19603f3d011682016040523d82523d6000602084013e611699565b606091505b509150915060008214156116b1573d6000803e3d6000fd5b6116df8151600014806116d757508180602001905160208110156116d457600080fd5b50515b6101a2610edf565b5050505056fe43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572a264697066735822122005677f94e7ea6a2444d7f4fbf5d6ed58b909bbe2f899066c14189e624a34d2ff64736f6c63430007010033","opcodes":"PUSH2 0x140 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x186A CODESIZE SUB DUP1 PUSH2 0x186A DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH32 0x42616C616E6365722050736575646F204D696E74657200000000000000000000 DUP2 DUP7 ADD SWAP1 DUP2 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP1 DUP5 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP7 DUP5 ADD SWAP7 DUP8 MSTORE PUSH1 0x0 SSTORE SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE MLOAD SWAP1 SWAP3 KECCAK256 PUSH1 0xA0 MSTORE PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0xE0 MSTORE ADDRESS PUSH2 0x100 MSTORE SWAP2 SHL AND PUSH2 0x120 MSTORE PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x173E PUSH2 0x12C PUSH1 0x0 CODECOPY DUP1 PUSH2 0x9EB MSTORE POP DUP1 PUSH2 0x953 MSTORE POP DUP1 PUSH2 0xB19 MSTORE POP DUP1 PUSH2 0xE25 MSTORE POP DUP1 PUSH2 0xE67 MSTORE POP DUP1 PUSH2 0xE46 MSTORE POP PUSH2 0x173E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x177 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xA51E1904 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC6542794 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC6542794 EQ PUSH2 0x4C1 JUMPI DUP1 PUSH4 0xDD289D60 EQ PUSH2 0x512 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x538 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0xA51E1904 EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x4B9 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x44A JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0xA0990033 EQ PUSH2 0x2FB JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x3DD JUMPI DUP1 PUSH4 0x8B752BB0 EQ PUSH2 0x41C JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x6C71E920 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x6C71E920 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x7504A15D EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x7A60E63A EQ PUSH2 0x3B7 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x33D JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x38F12152 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x38F12152 EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x397ADA21 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x3B9F7384 EQ PUSH2 0x282 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0xDE54BA0 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x27F18AE3 EQ PUSH2 0x1AC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x540 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x54F JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x597 JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x691 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6B6 JUMP JUMPDEST PUSH2 0x329 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x758 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x786 JUMP JUMPDEST PUSH2 0x329 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7A9 JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7C7 JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x857 JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x94D JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9BE JUMP JUMPDEST PUSH2 0x452 PUSH2 0x9E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0D JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA28 JUMP JUMPDEST PUSH2 0x452 PUSH2 0xAA4 JUMP JUMPDEST PUSH2 0x452 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xB3B JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBE0 JUMP JUMPDEST PUSH2 0x270 PUSH2 0xC13 JUMP JUMPDEST PUSH2 0x54B DUP3 CALLER DUP4 PUSH2 0xC22 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x557 PUSH2 0xCB1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x58F JUMPI PUSH2 0x58D DUP3 DUP3 PUSH2 0xCCA JUMP JUMPDEST POP JUMPDEST PUSH2 0x54B PUSH2 0xCE2 JUMP JUMPDEST PUSH2 0x59F PUSH2 0xCE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x627 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x464143544F52595F414C52454144595F41444445440000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x8E2924DC08A7879532DCA0C2C0460BD67EB431AB342DF45AFD2C4F7288AAB9B7 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x69B PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0x6A6 DUP4 DUP4 CALLER PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP PUSH2 0x6B0 PUSH2 0xCE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C0 PUSH2 0xCB1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16E6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x747 DUP5 DUP5 DUP5 PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP PUSH2 0x751 PUSH2 0xCE2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x790 PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0x79A DUP3 CALLER PUSH2 0xCCA JUMP JUMPDEST SWAP1 POP PUSH2 0x7A4 PUSH2 0xCE2 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D1 PUSH2 0xCB1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x84D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16E6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6A6 DUP4 DUP4 PUSH2 0xCCA JUMP JUMPDEST PUSH2 0x85F PUSH2 0xCE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x8E6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x464143544F52595F4E4F545F4144444544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE MLOAD PUSH32 0xDC66290A40B716CD9557C1D6C84315E06DE88697EE252B89E1A9A9B053DC307B SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xA30 PUSH2 0xCB1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0xA98 JUMPI PUSH1 0x0 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0xA4A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xA6C JUMPI PUSH2 0xA98 JUMP JUMPDEST PUSH2 0xA8F DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0xA7B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0xCCA JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xA33 JUMP JUMPDEST POP PUSH2 0xAA1 PUSH2 0xCE2 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAAE PUSH2 0x9E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAFA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xC87351A089BBDC3B2B9299D2CE29F08FD982826B275B3642939A2F7FDD815380 DUP9 DUP9 PUSH2 0xB69 DUP10 PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP10 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH2 0xBCB DUP7 DUP3 PUSH2 0xBC2 DUP8 DUP8 DUP8 PUSH2 0xD88 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xDC7 JUMP JUMPDEST PUSH2 0xBD6 DUP9 DUP8 DUP10 PUSH2 0xC22 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xAA1 SWAP1 DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x540 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC1D PUSH2 0xE21 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xA3FFB51320BBCA4E61E7423E3C97DD7BD7E31B6EA7429EB26EF92780E84572A0 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xCC3 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCD6 DUP4 DUP4 PUSH2 0xEED JUMP JUMPDEST SWAP1 POP PUSH2 0x6B0 DUP3 DUP3 PUSH2 0x11F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD18 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x94D JUMP JUMPDEST SWAP1 POP PUSH2 0xAA1 PUSH2 0xD27 DUP3 CALLER PUSH2 0x1214 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD75 JUMPI PUSH2 0xD6B PUSH2 0xD64 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0xD4E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH2 0xEED JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x12B6 JUMP JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xD34 JUMP JUMPDEST POP PUSH2 0xD80 DUP4 DUP4 PUSH2 0x11F1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD2 DUP6 PUSH2 0x12C8 JUMP JUMPDEST SWAP1 POP PUSH2 0xDE8 PUSH2 0xDE2 DUP8 DUP4 DUP8 PUSH2 0x132F JUMP JUMPDEST DUP4 PUSH2 0xEDF JUMP JUMPDEST PUSH2 0xDF7 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xEDF JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xE8E PUSH2 0x141A JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x54B JUMPI PUSH2 0x54B DUP2 PUSH2 0x141E JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC45A0155 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0xF65 DUP2 PUSH2 0x7A9 JUMP JUMPDEST PUSH2 0xFD0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F47415547455F464143544F52590000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCE3CC8BD DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1031 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1047 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x10B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F474155474500000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4B820093 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1117 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x112D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x940070700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP6 AND SWAP2 PUSH4 0x9400707 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x11D5 PUSH2 0x11CE DUP7 DUP9 PUSH2 0x9BE JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x1448 JUMP JUMPDEST SWAP4 POP DUP4 ISZERO PUSH2 0x11E8 JUMPI PUSH2 0x11E8 DUP6 DUP8 DUP4 PUSH2 0x1456 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x54B JUMPI PUSH2 0x54B DUP3 DUP3 PUSH2 0x1204 PUSH2 0xB17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x14C0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x121E PUSH2 0xAA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1297 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x751 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12D2 PUSH2 0xE21 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1341 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x140E JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH2 0xAA1 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1545 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x751 DUP4 DUP4 PUSH1 0x1 PUSH2 0x15C0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE DUP4 ADD DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 PUSH32 0x9D228D69B5FDB8D273A2336F8FB8612D039631024EA9BF09C424A9503AA078F0 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1540 SWAP1 DUP5 SWAP1 PUSH2 0x15D6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x15CF DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xEDF JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1632 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x15F5 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1694 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1699 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x16B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x16DF DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x16D7 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0xEDF JUMP JUMPDEST POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6C6C PUSH6 0x72206E6F7420 PUSH2 0x6C6C PUSH16 0x77656420746F206D696E7420666F7220 PUSH22 0x736572A264697066735822122005677F94E7EA6A2444 0xD7 DELEGATECALL 0xFB CREATE2 0xD6 0xED PC 0xB9 MULMOD 0xBB 0xE2 0xF8 SWAP10 MOD PUSH13 0x14189E624A34D2FF64736F6C63 NUMBER STOP SMOD ADD STOP CALLER ","sourceMap":"2123:4144:69:-:0;;;2480:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2480:224:69;;;;;;;;1821:152:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1821:152:66;;;;;;1030:31:51;2175:22:63;2100::58;;;;2085:37;;2150:25;;;;2132:43;;2198:95;2185:108;;-1:-1:-1;;;;;;1952:14:66::1;::::0;;;;;::::1;::::0;1054:4:51;2049:46:46;;1073:14:51;;;::::1;::::0;2123:4144:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":2387}],"3611":[{"length":32,"start":2539}],"5935":[{"length":32,"start":3654}],"5937":[{"length":32,"start":3687}],"5939":[{"length":32,"start":3621}],"7437":[{"length":32,"start":2841}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101775760003560e01c8063851c1bb3116100d8578063a51e19041161008c578063c654279411610066578063c6542794146104c1578063dd289d6014610512578063ed24911d1461053857610177565b8063a51e190414610494578063aaabadc5146104b1578063c0039699146104b957610177565b80638d928af8116100bd5780638d928af81461044a57806390193b7c1461046e578063a0990033146102fb57610177565b8063851c1bb3146103dd5780638b752bb01461041c57610177565b80633c543bc61161012f5780636c71e920116101145780636c71e920146103635780637504a15d146103895780637a60e63a146103b757610177565b80633c543bc6146102fb5780636a6278421461033d57610177565b806338f121521161016057806338f12152146101da578063397ada21146102005780633b9f73841461028257610177565b80630de54ba01461017c57806327f18ae3146101ac575b600080fd5b6101aa6004803603604081101561019257600080fd5b506001600160a01b0381351690602001351515610540565b005b6101aa600480360360408110156101c257600080fd5b506001600160a01b038135811691602001351661054f565b6101aa600480360360208110156101f057600080fd5b50356001600160a01b0316610597565b6102706004803603602081101561021657600080fd5b81019060208101813564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184602083028401116401000000008311171561026557600080fd5b509092509050610691565b60408051918252519081900360200190f35b6102706004803603604081101561029857600080fd5b8101906020810181356401000000008111156102b357600080fd5b8201836020820111156102c557600080fd5b803590602001918460208302840111640100000000831117156102e757600080fd5b9193509150356001600160a01b03166106b6565b6103296004803603604081101561031157600080fd5b506001600160a01b0381358116916020013516610758565b604080519115158252519081900360200190f35b6102706004803603602081101561035357600080fd5b50356001600160a01b0316610786565b6103296004803603602081101561037957600080fd5b50356001600160a01b03166107a9565b6102706004803603604081101561039f57600080fd5b506001600160a01b03813581169160200135166107c7565b6101aa600480360360208110156103cd57600080fd5b50356001600160a01b0316610857565b610270600480360360208110156103f357600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661094d565b6102706004803603604081101561043257600080fd5b506001600160a01b03813581169160200135166109be565b6104526109e9565b604080516001600160a01b039092168252519081900360200190f35b6102706004803603602081101561048457600080fd5b50356001600160a01b0316610a0d565b6101aa60048036036101008110156104ab57600080fd5b50610a28565b610452610aa4565b610452610b17565b6101aa600480360360e08110156104d757600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060ff6080820135169060a08101359060c00135610b3b565b6101aa6004803603602081101561052857600080fd5b50356001600160a01b0316610be0565b610270610c13565b61054b823383610c22565b5050565b610557610cb1565b3360009081526003602090815260408083206001600160a01b038516845290915290205460ff161561058f5761058d8282610cca565b505b61054b610ce2565b61059f610ce9565b6001600160a01b03811660009081526004602052604090205460ff161561062757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464143544f52595f414c52454144595f41444445440000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f8e2924dc08a7879532dca0c2c0460bd67eb431ab342df45afd2c4f7288aab9b79190a250565b600061069b610cb1565b6106a6838333610d2f565b90506106b0610ce2565b92915050565b60006106c0610cb1565b3360009081526003602090815260408083206001600160a01b038616845290915290205460ff1661073c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116e66023913960400191505060405180910390fd5b610747848484610d2f565b9050610751610ce2565b9392505050565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6000610790610cb1565b61079a8233610cca565b90506107a4610ce2565b919050565b6001600160a01b031660009081526004602052604090205460ff1690565b60006107d1610cb1565b3360009081526003602090815260408083206001600160a01b038616845290915290205460ff1661084d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116e66023913960400191505060405180910390fd5b6106a68383610cca565b61085f610ce9565b6001600160a01b03811660009081526004602052604090205460ff166108e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f464143544f52595f4e4f545f4144444544000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fdc66290a40b716cd9557c1d6c84315e06de88697ee252b89e1a9a9b053dc307b9190a250565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031660009081526001602052604090205490565b610a30610cb1565b60005b6008811015610a98576000828260088110610a4a57fe5b60200201356001600160a01b03166001600160a01b03161415610a6c57610a98565b610a8f828260088110610a7b57fe5b60200201356001600160a01b031633610cca565b50600101610a33565b50610aa1610ce2565b50565b6000610aae6109e9565b6001600160a01b031663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae657600080fd5b505afa158015610afa573d6000803e3d6000fd5b505050506040513d6020811015610b1057600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007fc87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd8153808888610b6989610a0d565b604080516020808201969096526001600160a01b03909416848201529115156060840152608083015260a08083018990528151808403909101815260c0909201905280519101209050610bcb8682610bc2878787610d88565b886101f8610dc7565b610bd6888789610c22565b5050505050505050565b6001600160a01b0381166000908152600360209081526040808320338452909152902054610aa190829060ff1615610540565b6000610c1d610e21565b905090565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291519293927fa3ffb51320bbca4e61e7423e3c97dd7bd7e31b6ea7429eb26ef92780e84572a09281900390910190a3505050565b610cc360026000541415610190610edf565b6002600055565b6000610cd68383610eed565b90506106b082826111f1565b6001600055565b6000610d186000357fffffffff000000000000000000000000000000000000000000000000000000001661094d565b9050610aa1610d278233611214565b610191610edf565b600082815b81811015610d7557610d6b610d64878784818110610d4e57fe5b905060200201356001600160a01b031686610eed565b84906112b6565b9250600101610d34565b50610d8083836111f1565b509392505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610dd2856112c8565b9050610de8610de287838761132f565b83610edf565b610df7428410156101b8610edf565b5050506001600160a01b039092166000908152600160208190526040909120805490910190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610e8e61141a565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b8161054b5761054b8161141e565b6000808390506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2e57600080fd5b505afa158015610f42573d6000803e3d6000fd5b505050506040513d6020811015610f5857600080fd5b50519050610f65816107a9565b610fd057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e56414c49445f47415547455f464143544f52590000000000000000000000604482015290519081900360640190fd5b806001600160a01b031663ce3cc8bd866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561101d57600080fd5b505afa158015611031573d6000803e3d6000fd5b505050506040513d602081101561104757600080fd5b50516110b457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f474155474500000000000000000000000000000000000000604482015290519081900360640190fd5b816001600160a01b0316634b820093856040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561110357600080fd5b505af1158015611117573d6000803e3d6000fd5b505050506040513d602081101561112d57600080fd5b5050604080517f094007070000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291516000928516916309400707916024808301926020929190829003018186803b15801561119357600080fd5b505afa1580156111a7573d6000803e3d6000fd5b505050506040513d60208110156111bd57600080fd5b505190506111d56111ce86886109be565b8290611448565b935083156111e8576111e8858783611456565b50505092915050565b801561054b5761054b8282611204610b17565b6001600160a01b031691906114c0565b600061121e610aa4565b6001600160a01b0316639be2a8848484306040518463ffffffff1660e01b815260040180848152602001836001600160a01b03168152602001826001600160a01b03168152602001935050505060206040518083038186803b15801561128357600080fd5b505afa158015611297573d6000803e3d6000fd5b505050506040513d60208110156112ad57600080fd5b50519392505050565b60008282016107518482101583610edf565b60006112d2610e21565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061134182516041146101b9610edf565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113ba573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b0381161580159061140e5750876001600160a01b0316816001600160a01b0316145b98975050505050505050565b4690565b610aa1817f42414c0000000000000000000000000000000000000000000000000000000000611545565b6000610751838360016115c0565b6001600160a01b0380841660008181526002602090815260408083209487168084529482529182902085905581519384528301849052805191927f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0929081900390910190a2505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526115409084906115d6565b505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006115cf8484111583610edf565b5050900390565b60006060836001600160a01b0316836040518082805190602001908083835b6020831061163257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016115f5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611694576040519150601f19603f3d011682016040523d82523d6000602084013e611699565b606091505b509150915060008214156116b1573d6000803e3d6000fd5b6116df8151600014806116d757508180602001905160208110156116d457600080fd5b50515b6101a2610edf565b5050505056fe43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572a264697066735822122005677f94e7ea6a2444d7f4fbf5d6ed58b909bbe2f899066c14189e624a34d2ff64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x177 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xA51E1904 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC6542794 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC6542794 EQ PUSH2 0x4C1 JUMPI DUP1 PUSH4 0xDD289D60 EQ PUSH2 0x512 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x538 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0xA51E1904 EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x4B9 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x44A JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0xA0990033 EQ PUSH2 0x2FB JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x3DD JUMPI DUP1 PUSH4 0x8B752BB0 EQ PUSH2 0x41C JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x6C71E920 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x6C71E920 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x7504A15D EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x7A60E63A EQ PUSH2 0x3B7 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x33D JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x38F12152 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x38F12152 EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x397ADA21 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x3B9F7384 EQ PUSH2 0x282 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0xDE54BA0 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x27F18AE3 EQ PUSH2 0x1AC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x540 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x54F JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x597 JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x691 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6B6 JUMP JUMPDEST PUSH2 0x329 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x758 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x786 JUMP JUMPDEST PUSH2 0x329 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7A9 JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7C7 JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x857 JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x94D JUMP JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9BE JUMP JUMPDEST PUSH2 0x452 PUSH2 0x9E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0D JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA28 JUMP JUMPDEST PUSH2 0x452 PUSH2 0xAA4 JUMP JUMPDEST PUSH2 0x452 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xB3B JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBE0 JUMP JUMPDEST PUSH2 0x270 PUSH2 0xC13 JUMP JUMPDEST PUSH2 0x54B DUP3 CALLER DUP4 PUSH2 0xC22 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x557 PUSH2 0xCB1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x58F JUMPI PUSH2 0x58D DUP3 DUP3 PUSH2 0xCCA JUMP JUMPDEST POP JUMPDEST PUSH2 0x54B PUSH2 0xCE2 JUMP JUMPDEST PUSH2 0x59F PUSH2 0xCE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x627 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x464143544F52595F414C52454144595F41444445440000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x8E2924DC08A7879532DCA0C2C0460BD67EB431AB342DF45AFD2C4F7288AAB9B7 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x69B PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0x6A6 DUP4 DUP4 CALLER PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP PUSH2 0x6B0 PUSH2 0xCE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C0 PUSH2 0xCB1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16E6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x747 DUP5 DUP5 DUP5 PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP PUSH2 0x751 PUSH2 0xCE2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x790 PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0x79A DUP3 CALLER PUSH2 0xCCA JUMP JUMPDEST SWAP1 POP PUSH2 0x7A4 PUSH2 0xCE2 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D1 PUSH2 0xCB1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x84D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16E6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6A6 DUP4 DUP4 PUSH2 0xCCA JUMP JUMPDEST PUSH2 0x85F PUSH2 0xCE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x8E6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x464143544F52595F4E4F545F4144444544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE MLOAD PUSH32 0xDC66290A40B716CD9557C1D6C84315E06DE88697EE252B89E1A9A9B053DC307B SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xA30 PUSH2 0xCB1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0xA98 JUMPI PUSH1 0x0 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0xA4A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xA6C JUMPI PUSH2 0xA98 JUMP JUMPDEST PUSH2 0xA8F DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0xA7B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0xCCA JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xA33 JUMP JUMPDEST POP PUSH2 0xAA1 PUSH2 0xCE2 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAAE PUSH2 0x9E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAFA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xC87351A089BBDC3B2B9299D2CE29F08FD982826B275B3642939A2F7FDD815380 DUP9 DUP9 PUSH2 0xB69 DUP10 PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP10 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH2 0xBCB DUP7 DUP3 PUSH2 0xBC2 DUP8 DUP8 DUP8 PUSH2 0xD88 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xDC7 JUMP JUMPDEST PUSH2 0xBD6 DUP9 DUP8 DUP10 PUSH2 0xC22 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xAA1 SWAP1 DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x540 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC1D PUSH2 0xE21 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xA3FFB51320BBCA4E61E7423E3C97DD7BD7E31B6EA7429EB26EF92780E84572A0 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xCC3 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCD6 DUP4 DUP4 PUSH2 0xEED JUMP JUMPDEST SWAP1 POP PUSH2 0x6B0 DUP3 DUP3 PUSH2 0x11F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD18 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x94D JUMP JUMPDEST SWAP1 POP PUSH2 0xAA1 PUSH2 0xD27 DUP3 CALLER PUSH2 0x1214 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD75 JUMPI PUSH2 0xD6B PUSH2 0xD64 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0xD4E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH2 0xEED JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x12B6 JUMP JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xD34 JUMP JUMPDEST POP PUSH2 0xD80 DUP4 DUP4 PUSH2 0x11F1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD2 DUP6 PUSH2 0x12C8 JUMP JUMPDEST SWAP1 POP PUSH2 0xDE8 PUSH2 0xDE2 DUP8 DUP4 DUP8 PUSH2 0x132F JUMP JUMPDEST DUP4 PUSH2 0xEDF JUMP JUMPDEST PUSH2 0xDF7 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xEDF JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xE8E PUSH2 0x141A JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x54B JUMPI PUSH2 0x54B DUP2 PUSH2 0x141E JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC45A0155 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0xF65 DUP2 PUSH2 0x7A9 JUMP JUMPDEST PUSH2 0xFD0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F47415547455F464143544F52590000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCE3CC8BD DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1031 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1047 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x10B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F474155474500000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4B820093 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1117 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x112D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x940070700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP6 AND SWAP2 PUSH4 0x9400707 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x11D5 PUSH2 0x11CE DUP7 DUP9 PUSH2 0x9BE JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x1448 JUMP JUMPDEST SWAP4 POP DUP4 ISZERO PUSH2 0x11E8 JUMPI PUSH2 0x11E8 DUP6 DUP8 DUP4 PUSH2 0x1456 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x54B JUMPI PUSH2 0x54B DUP3 DUP3 PUSH2 0x1204 PUSH2 0xB17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x14C0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x121E PUSH2 0xAA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1297 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x751 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12D2 PUSH2 0xE21 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1341 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x140E JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH2 0xAA1 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1545 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x751 DUP4 DUP4 PUSH1 0x1 PUSH2 0x15C0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE DUP4 ADD DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 PUSH32 0x9D228D69B5FDB8D273A2336F8FB8612D039631024EA9BF09C424A9503AA078F0 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1540 SWAP1 DUP5 SWAP1 PUSH2 0x15D6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x15CF DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xEDF JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1632 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x15F5 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1694 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1699 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x16B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x16DF DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x16D7 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0xEDF JUMP JUMPDEST POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6C6C PUSH6 0x72206E6F7420 PUSH2 0x6C6C PUSH16 0x77656420746F206D696E7420666F7220 PUSH22 0x736572A264697066735822122005677F94E7EA6A2444 0xD7 DELEGATECALL 0xFB CREATE2 0xD6 0xED PC 0xB9 MULMOD 0xBB 0xE2 0xF8 SWAP10 MOD PUSH13 0x14189E624A34D2FF64736F6C63 NUMBER STOP SMOD ADD STOP CALLER ","sourceMap":"2123:4144:69:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3440:139:66;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3440:139:66;;;;;;;;;;:::i;:::-;;5582:178;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5582:178:66;;;;;;;;;;:::i;2947:237:69:-;;;;;;;;;;;;;;;;-1:-1:-1;2947:237:69;-1:-1:-1;;;;;2947:237:69;;:::i;2324:150:66:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2324:150:66;;-1:-1:-1;2324:150:66;-1:-1:-1;2324:150:66;:::i;:::-;;;;;;;;;;;;;;;;2788:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2788:251:66;-1:-1:-1;2788:251:66;-1:-1:-1;;;;;2788:251:66;;:::i;3251:147::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3251:147:66;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2153:129;;;;;;;;;;;;;;;;-1:-1:-1;2153:129:66;-1:-1:-1;;;;;2153:129:66;;:::i;3808:136:69:-;;;;;;;;;;;;;;;;-1:-1:-1;3808:136:69;-1:-1:-1;;;;;3808:136:69;;:::i;2516:230:66:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2516:230:66;;;;;;;;;;:::i;3443:238:69:-;;;;;;;;;;;;;;;;-1:-1:-1;3443:238:69;-1:-1:-1;;;;;3443:238:69;;:::i;2607:430:46:-;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:46;;;;:::i;3081:128:66:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3081:128:66;;;;;;;;;;:::i;1158:79:51:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1158:79:51;;;;;;;;;;;;;;1303:121:47;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:47;-1:-1:-1;;;;;1303:121:47;;:::i;5278:262:66:-;;;;;;;;;;;;;;;;-1:-1:-1;5278:262:66;:::i;1297:109:51:-;;;:::i;2015:96:66:-;;;:::i;3621:541::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3621:541:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5802:142::-;;;;;;;;;;;;;;;;-1:-1:-1;5802:142:66;-1:-1:-1;;;;;5802:142:66;;:::i;1184:113:47:-;;;:::i;3440:139:66:-;3524:48;3543:6;3551:10;3563:8;3524:18;:48::i;:::-;3440:139;;:::o;5582:178::-;2613:20:63;:18;:20::i;:::-;5689:10:66::1;5674:26;::::0;;;:14:::1;:26;::::0;;;;;;;-1:-1:-1;;;;;5674:32:66;::::1;::::0;;;;;;;;::::1;;5670:84;;;5722:21;5731:5;5738:4;5722:8;:21::i;:::-;;5670:84;2654:19:63::0;:17;:19::i;2947:237:69:-;2276:21:46;:19;:21::i;:::-;-1:-1:-1;;;;;3045:24:69;::::1;;::::0;;;:15:::1;:24;::::0;;;;;::::1;;3044:25;3036:59;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;3105:24:69;::::1;;::::0;;;:15:::1;:24;::::0;;;;;:31;;;::::1;3132:4;3105:31;::::0;;3151:26;::::1;::::0;3105:24;3151:26:::1;2947:237:::0;:::o;2324:150:66:-;2409:7;2613:20:63;:18;:20::i;:::-;2435:32:66::1;2448:6;;2456:10;2435:12;:32::i;:::-;2428:39;;2654:19:63::0;:17;:19::i;:::-;2324:150:66;;;;:::o;2788:251::-;2890:7;2613:20:63;:18;:20::i;:::-;2932:10:66::1;2917:26;::::0;;;:14:::1;:26;::::0;;;;;;;-1:-1:-1;;;;;2917:32:66;::::1;::::0;;;;;;;;::::1;;2909:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3006:26;3019:6;;3027:4;3006:12;:26::i;:::-;2999:33;;2654:19:63::0;:17;:19::i;:::-;2788:251:66;;;;;:::o;3251:147::-;-1:-1:-1;;;;;3363:22:66;;;3340:4;3363:22;;;:14;:22;;;;;;;;:28;;;;;;;;;;;;;;;3251:147::o;2153:129::-;2222:7;2613:20:63;:18;:20::i;:::-;2248:27:66::1;2257:5;2264:10;2248:8;:27::i;:::-;2241:34;;2654:19:63::0;:17;:19::i;:::-;2153:129:66;;;:::o;3808:136:69:-;-1:-1:-1;;;;;3913:24:69;3890:4;3913:24;;;:15;:24;;;;;;;;;3808:136::o;2516:230:66:-;2602:7;2613:20:63;:18;:20::i;:::-;2644:10:66::1;2629:26;::::0;;;:14:::1;:26;::::0;;;;;;;-1:-1:-1;;;;;2629:32:66;::::1;::::0;;;;;;;;::::1;;2621:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2718:21;2727:5;2734:4;2718:8;:21::i;3443:238:69:-:0;2276:21:46;:19;:21::i;:::-;-1:-1:-1;;;;;3543:24:69;::::1;;::::0;;;:15:::1;:24;::::0;;;;;::::1;;3535:54;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;3599:24:69;::::1;3626:5;3599:24:::0;;;:15:::1;:24;::::0;;;;;:32;;;::::1;::::0;;3646:28;::::1;::::0;3626:5;3646:28:::1;3443:238:::0;:::o;2607:430:46:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;3081:128:66:-;-1:-1:-1;;;;;3182:13:66;;;3156:7;3182:13;;;:7;:13;;;;;;;;:20;;;;;;;;;;;;;3081:128::o;1158:79:51:-;1224:6;1158:79;:::o;1303:121:47:-;-1:-1:-1;;;;;1398:19:47;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;5278:262:66:-;2613:20:63;:18;:20::i;:::-;5371:9:66::1;5366:168;5390:1;5386;:5;5366:168;;;5437:1;5416:6:::0;5423:1;5416:9:::1;::::0;::::1;;;;;;;;;-1:-1:-1::0;;;;;5416:9:66::1;-1:-1:-1::0;;;;;5416:23:66::1;;5412:67;;;5459:5;;5412:67;5492:31;5501:6;5508:1;5501:9;;;;;;;;;;;-1:-1:-1::0;;;;;5501:9:66::1;5512:10;5492:8;:31::i;:::-;-1:-1:-1::0;5393:3:66::1;;5366:168;;;;2654:19:63::0;:17;:19::i;:::-;5278:262:66;:::o;1297:109:51:-;1343:11;1373:10;:8;:10::i;:::-;-1:-1:-1;;;;;1373:24:51;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:51;;-1:-1:-1;1297:109:51;:::o;2015:96:66:-;2098:6;2015:96;:::o;3621:541::-;3845:18;1618:105;3931:6;3939:8;3949:18;3962:4;3949:12;:18::i;:::-;3889:89;;;;;;;;;;;-1:-1:-1;;;;;3889:89:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3866:122;;;;;;-1:-1:-1;3999:103:66;4021:4;3866:122;4039:26;4057:1;4060;4063;4039:17;:26::i;:::-;4067:8;13190:3:31;3999:21:66;:103::i;:::-;4113:42;4132:6;4140:4;4146:8;4113:18;:42::i;:::-;3621:541;;;;;;;;:::o;5802:142::-;-1:-1:-1;;;;;5902:22:66;;;;;;:14;:22;;;;;;;;5925:10;5902:34;;;;;;;;5875:62;;5893:6;;5902:34;;5901:35;5875:17;:62::i;1184:113:47:-;1244:7;1270:20;:18;:20::i;:::-;1263:27;;1184:113;:::o;4168:223:66:-;-1:-1:-1;;;;;4289:22:66;;;;;;;:14;:22;;;;;;;;:28;;;;;;;;;;;;;:39;;;;;;;;;;;;;4343:41;;;;;;;4289:22;;:28;4343:41;;;;;;;;;;4168:223;;;:::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;3977:194:69:-;4051:20;4098:25;4111:5;4118:4;4098:12;:25::i;:::-;4083:40;;4133:31;4145:4;4151:12;4133:11;:31::i;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;4177:333:69:-;4267:20;4316:6;4267:20;4339:124;4363:6;4359:1;:10;4339:124;;;4405:47;4422:29;4435:6;;4442:1;4435:9;;;;;;;;;;;;;-1:-1:-1;;;;;4435:9:69;4446:4;4422:12;:29::i;:::-;4405:12;;:16;:47::i;:::-;4390:62;-1:-1:-1;4371:3:69;;4339:124;;;;4472:31;4484:4;4490:12;4472:11;:31::i;:::-;4177:333;;;;;;:::o;3803:419:47:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:47;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:47:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:31;2487:8:47;:63::i;:::-;-1:-1:-1;;;;;;;;2884:19:47;;;;;;;2907:1;2884:19;;;;;;;;:24;;;;;;;-1:-1:-1;;1701:1214:47:o;2386:188:58:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2483:83:58;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;5070:923:69:-;5139:20;5483:24;5527:5;5483:50;;5543:30;5576:7;-1:-1:-1;;;;;5576:15:69;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5576:17:69;;-1:-1:-1;5611:28:69;5576:17;5611:19;:28::i;:::-;5603:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5683:7;-1:-1:-1;;;;;5683:26:69;;5710:5;5683:33;;;;;;;;;;;;;-1:-1:-1;;;;;5683:33:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5683:33:69;5675:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5745:7;-1:-1:-1;;;;;5745:23:69;;5769:4;5745:29;;;;;;;;;;;;;-1:-1:-1;;;;;5745:29:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5804:32:69;;;;;;-1:-1:-1;;;;;5804:32:69;;;;;;;;;5784:17;;5804:26;;;;;:32;;;;;5745:29;;5804:32;;;;;;;:26;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5804:32:69;;-1:-1:-1;5861:34:69;5875:19;5882:4;5888:5;5875:6;:19::i;:::-;5861:9;;:13;:34::i;:::-;5846:49;-1:-1:-1;5910:16:69;;5906:81;;5942:34;5953:4;5959:5;5966:9;5942:10;:34::i;:::-;5070:923;;;;;;;:::o;6085:180::-;6165:16;;6161:98;;6197:51;6229:4;6235:12;6197:18;:16;:18::i;:::-;-1:-1:-1;;;;;6197:31:69;;:51;:31;:51::i;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;-1:-1:-1;;;;;1523:26:51;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1523:60:51;;;;;;-1:-1:-1;;;;;1523:60:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1523:60:51;;1412:178;-1:-1:-1;;;1412:178:51:o;966:167:65:-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;3199:183:58:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:47:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:31;3082:8:47;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:47;;;;;;-1:-1:-1;;;;;;;3728:30:47;;;;;;:61;;;3782:7;-1:-1:-1;;;;;3762:27:47;:16;-1:-1:-1;;;;;3762:27:47;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:47:o;3433:187:58:-;3595:9;;3570:44::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;1404:121:65:-;1462:7;1488:30;1492:1;1495;5194::31;1488:3:65;:30::i;4424:189:66:-;-1:-1:-1;;;;;4537:13:66;;;;;;;:7;:13;;;;;;;;:20;;;;;;;;;;;;;:28;;;4580:26;;;;;;;;;;;;4537:13;;4580:26;;;;;;;;;;;4424:189;;;:::o;1514:214:64:-;1662:58;;;-1:-1:-1;;;;;1662:58:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;1626:19;:95::i;:::-;1514:214;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1816:206:65;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:65;;;1816:206::o;2324:914:64:-;2626:12;2640:23;2667:5;-1:-1:-1;;;;;2667:10:64;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:64;3143:56;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o"},"methodIdentifiers":{"addGaugeFactory(address)":"38f12152","allowed_to_mint_for(address,address)":"a0990033","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getBalancerToken()":"c0039699","getDomainSeparator()":"ed24911d","getMinterApproval(address,address)":"3c543bc6","getNextNonce(address)":"90193b7c","getVault()":"8d928af8","isValidGaugeFactory(address)":"6c71e920","mint(address)":"6a627842","mintFor(address,address)":"7504a15d","mintMany(address[])":"397ada21","mintManyFor(address[],address)":"3b9f7384","mint_for(address,address)":"27f18ae3","mint_many(address[8])":"a51e1904","minted(address,address)":"8b752bb0","removeGaugeFactory(address)":"7a60e63a","setMinterApproval(address,bool)":"0de54ba0","setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)":"c6542794","toggle_approve_mint(address)":"dd289d60"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"balancerToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"GaugeFactoryAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"GaugeFactoryRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"MinterApprovalSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"addGaugeFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed_to_mint_for\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinterApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"isValidGaugeFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"mintMany\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintManyFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mint_for\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[8]\",\"name\":\"gauges\",\"type\":\"address[8]\"}],\"name\":\"mint_many\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"minted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"removeGaugeFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMinterApprovalWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"toggle_approve_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Distributes bridged BAL tokens in child chains, using the same interface as the mainnet Balancer minter. This contract is analogous to the mainnet minter: it has the same interface and interacts with (L2) gauges in a similar manner, keeping track of how many tokens were already distributed to each gauge and user. The difference with the mainnet minter is that this contract does not have a way of minting BAL directly: the tokens are only minted in mainnet, and then bridged to L2s. Then, this contract accumulates the emissions received by child chain gauges and distributes them to users. Every time the tokens are 'minted' (i.e. distributed) from a gauge to a given user, the pseudo minter will query the child chain gauge for the total amount of tokes that need to be distributed to that user. By keeping track of the amount that it has already distributed for that gauge / user, the pseudo minter can then transfer the difference to the user and update the total transferred amount.\",\"kind\":\"dev\",\"methods\":{\"addGaugeFactory(address)\":{\"details\":\"This is a permissioned function. Reverts if the given factory was added beforehand; emits `GaugeFactoryAdded` event upon success.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"mint(address)\":{\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\"}},\"mintFor(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mintMany(address[])\":{\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"mintManyFor(address[],address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\",\"user\":\"Address to mint to\"}},\"mint_for(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mint_many(address[8])\":{\"details\":\"This function is not recommended as `mintMany()` is more flexible and gas efficient\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"removeGaugeFactory(address)\":{\"details\":\"This is a permissioned function. Reverts if the given factory had not been added beforehand; emits `GaugeFactoryRemoved` event upon success.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addGaugeFactory(address)\":{\"notice\":\"Adds a given child chain gauge factory to the allowlist.\"},\"allowed_to_mint_for(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"},\"getMinterApproval(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isValidGaugeFactory(address)\":{\"notice\":\"Returns true if the given child chain gauge factory is in the allowlist; false otherwise.\"},\"mint(address)\":{\"notice\":\"Mint everything which belongs to `msg.sender` and send to them\"},\"mintFor(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mintMany(address[])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"mintManyFor(address[],address)\":{\"notice\":\"Mint tokens for `user` across multiple gauges\"},\"mint_for(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mint_many(address[8])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"minted(address,address)\":{\"notice\":\"The total number of tokens minted for `user` from `gauge`\"},\"removeGaugeFactory(address)\":{\"notice\":\"Removes a given child chain gauge factory from the allowlist.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on your behalf\"},\"setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing them.\"},\"toggle_approve_mint(address)\":{\"notice\":\"Toggle whether `minter` is approved to mint tokens for `user`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/L2BalancerPseudoMinter.sol\":\"L2BalancerPseudoMinter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\":{\"keccak256\":\"0xffafd017b9f43c8cc47f59e85e8a5354e4028110fb6c7fdbaeb569018f35e4d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bf250a0d068a2c8203dda057beabbf49705114e51086e885d7dc283a0cf3a249\",\"dweb:/ipfs/QmTBZvND9qY9k4EQYkfA9hYVSP3DxaXgKwuvDAQFDfxic2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/BalancerMinter.sol\":{\"keccak256\":\"0xbacdfde61937f9cea9166c7e492ac8d65261fb6bdfb621f1f258852799204cc8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3e68da1f25c0211654bb0b04c4ac1a789cb3dfabd7f5db54d6bfbeb49414e0c\",\"dweb:/ipfs/QmRnvBWovj9HNZsEfvrZpbJcs3K7ikwrY8fkX68F7rdxQK\"]},\"contracts/L2BalancerPseudoMinter.sol\":{\"keccak256\":\"0x5b9ddeebb5accdd9e94e89a68004301f4f92c42ccd8be2f1dc5158ffa15665ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae10ff0f3cfff31f80435ac23e95b1e03d547441e7c44f84aa238363493f93bb\",\"dweb:/ipfs/Qmbrk9GBcRu8pBG3kPsGafCJ3RE5Uvyh4toAnjph4kKs3L\"]}},\"version\":1}"}},"contracts/L2LayerZeroBridgeForwarder.sol":{"L2LayerZeroBridgeForwarder":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IL2LayerZeroDelegation","name":"newImplementation","type":"address"}],"name":"DelegationImplementationUpdated","type":"event"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDelegationImplementation","outputs":[{"internalType":"contract IL2LayerZeroDelegation","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"onVeBalBridged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"onVeBalSupplyUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IL2LayerZeroDelegation","name":"delegation","type":"address"}],"name":"setDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b506040516106cf3803806106cf8339818101604052602081101561003357600080fd5b5051306080819052606082901b6001600160601b03191660a052906001600160a01b031661065b610074600039806102135250806101a6525061065b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806396345fb51161005b57806396345fb51461010c578063aaabadc514610116578063df130bfe1461011e578063e6b3e704146101515761007d565b806363408a9014610082578063851c1bb3146100b35780638d928af814610104575b600080fd5b61008a610184565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f2600480360360208110156100c957600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166101a0565b60408051918252519081900360200190f35b61008a610211565b610114610235565b005b61008a6102d5565b6101146004803603602081101561013457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610355565b6101146004803603602081101561016757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610400565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60005473ffffffffffffffffffffffffffffffffffffffff16156102d35760008054604080517f96345fb5000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216926396345fb59260048084019382900301818387803b1580156102ba57600080fd5b505af11580156102ce573d6000803e3d6000fd5b505050505b565b60006102df610211565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561032457600080fd5b505afa158015610338573d6000803e3d6000fd5b505050506040513d602081101561034e57600080fd5b5051905090565b60005473ffffffffffffffffffffffffffffffffffffffff16156103fd5760008054604080517fdf130bfe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529151919092169263df130bfe926024808201939182900301818387803b1580156103e457600080fd5b505af11580156103f8573d6000803e3d6000fd5b505050505b50565b610408610475565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917fb2f6d9cc189e4fc02519ab5ba6d9455bedc32091e375e8a6383ed45f40653e7491a250565b60006104a46000357fffffffff00000000000000000000000000000000000000000000000000000000166101a0565b90506103fd6104b382336104bb565b610191610584565b60006104c56102d5565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561055157600080fd5b505afa158015610565573d6000803e3d6000fd5b505050506040513d602081101561057b57600080fd5b50519392505050565b816105925761059281610596565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526103fd917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea26469706673582212209e70a13ad6e6e0fbcfa910fca5d1a8d5d178c6c18e8bf647fc49bcab3e0863be64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6CF CODESIZE SUB DUP1 PUSH2 0x6CF DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x65B PUSH2 0x74 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x213 MSTORE POP DUP1 PUSH2 0x1A6 MSTORE POP PUSH2 0x65B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96345FB5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x96345FB5 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x116 JUMPI DUP1 PUSH4 0xDF130BFE EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xE6B3E704 EQ PUSH2 0x151 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x63408A90 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x104 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x184 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x211 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x235 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8A PUSH2 0x2D5 JUMP JUMPDEST PUSH2 0x114 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x355 JUMP JUMPDEST PUSH2 0x114 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x400 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x96345FB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0x96345FB5 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DF PUSH2 0x211 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x338 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xDF130BFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0xDF130BFE SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH2 0x408 PUSH2 0x475 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xB2F6D9CC189E4FC02519AB5BA6D9455BEDC32091E375E8A6383ED45F40653E74 SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A4 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x3FD PUSH2 0x4B3 DUP3 CALLER PUSH2 0x4BB JUMP JUMPDEST PUSH2 0x191 PUSH2 0x584 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C5 PUSH2 0x2D5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x565 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x592 JUMPI PUSH2 0x592 DUP2 PUSH2 0x596 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x3FD SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP15 PUSH17 0xA13AD6E6E0FBCFA910FCA5D1A8D5D178C6 0xC1 DUP15 DUP12 0xF6 SELFBALANCE 0xFC 0x49 0xBC 0xAB RETURNDATACOPY ADDMOD PUSH4 0xBE64736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1255:1390:70:-:0;;;1491:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1491:121:70;1054:4:51;2049:46:46;;;;1073:14:51::1;::::0;;;-1:-1:-1;;;;;;1073:14:51;::::1;::::0;1054:4;-1:-1:-1;;;;;1255:1390:70;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":422}],"3611":[{"length":32,"start":531}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c806396345fb51161005b57806396345fb51461010c578063aaabadc514610116578063df130bfe1461011e578063e6b3e704146101515761007d565b806363408a9014610082578063851c1bb3146100b35780638d928af814610104575b600080fd5b61008a610184565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f2600480360360208110156100c957600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166101a0565b60408051918252519081900360200190f35b61008a610211565b610114610235565b005b61008a6102d5565b6101146004803603602081101561013457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610355565b6101146004803603602081101561016757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610400565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60005473ffffffffffffffffffffffffffffffffffffffff16156102d35760008054604080517f96345fb5000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216926396345fb59260048084019382900301818387803b1580156102ba57600080fd5b505af11580156102ce573d6000803e3d6000fd5b505050505b565b60006102df610211565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561032457600080fd5b505afa158015610338573d6000803e3d6000fd5b505050506040513d602081101561034e57600080fd5b5051905090565b60005473ffffffffffffffffffffffffffffffffffffffff16156103fd5760008054604080517fdf130bfe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529151919092169263df130bfe926024808201939182900301818387803b1580156103e457600080fd5b505af11580156103f8573d6000803e3d6000fd5b505050505b50565b610408610475565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917fb2f6d9cc189e4fc02519ab5ba6d9455bedc32091e375e8a6383ed45f40653e7491a250565b60006104a46000357fffffffff00000000000000000000000000000000000000000000000000000000166101a0565b90506103fd6104b382336104bb565b610191610584565b60006104c56102d5565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561055157600080fd5b505afa158015610565573d6000803e3d6000fd5b505050506040513d602081101561057b57600080fd5b50519392505050565b816105925761059281610596565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526103fd917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea26469706673582212209e70a13ad6e6e0fbcfa910fca5d1a8d5d178c6c18e8bf647fc49bcab3e0863be64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96345FB5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x96345FB5 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x116 JUMPI DUP1 PUSH4 0xDF130BFE EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xE6B3E704 EQ PUSH2 0x151 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x63408A90 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x104 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x184 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x211 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x235 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8A PUSH2 0x2D5 JUMP JUMPDEST PUSH2 0x114 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x355 JUMP JUMPDEST PUSH2 0x114 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x400 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x96345FB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0x96345FB5 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DF PUSH2 0x211 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x338 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xDF130BFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0xDF130BFE SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH2 0x408 PUSH2 0x475 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xB2F6D9CC189E4FC02519AB5BA6D9455BEDC32091E375E8A6383ED45F40653E74 SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A4 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x3FD PUSH2 0x4B3 DUP3 CALLER PUSH2 0x4BB JUMP JUMPDEST PUSH2 0x191 PUSH2 0x584 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C5 PUSH2 0x2D5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x565 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x592 JUMPI PUSH2 0x592 DUP2 PUSH2 0x596 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x3FD SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP15 PUSH17 0xA13AD6E6E0FBCFA910FCA5D1A8D5D178C6 0xC1 DUP15 DUP12 0xF6 SELFBALANCE 0xFC 0x49 0xBC 0xAB RETURNDATACOPY ADDMOD PUSH4 0xBE64736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1255:1390:70:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1705:121;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2607:430:46;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:46;;;;:::i;:::-;;;;;;;;;;;;;;;;1158:79:51;;;:::i;2198:169:70:-;;;:::i;:::-;;1297:109:51;;;:::i;1930:175:70:-;;;;;;;;;;;;;;;;-1:-1:-1;1930:175:70;;;;:::i;2463:180::-;;;;;;;;;;;;;;;;-1:-1:-1;2463:180:70;;;;:::i;1705:121::-;1767:22;1808:11;;;1705:121;:::o;2607:430:46:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;2198:169:70:-;2299:1;2261:11;:40;:11;:40;2257:104;;2317:11;;;:33;;;;;;;;:11;;;;;:31;;:33;;;;;;;;;;:11;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2257:104;2198:169::o;1297:109:51:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:51;;-1:-1:-1;1297:109:51;:::o;1930:175:70:-;2038:1;2000:11;:40;:11;:40;1996:103;;2056:11;;;:32;;;;;;:11;:32;;;;;;;;;:11;;;;;:26;;:32;;;;;;;;;;;:11;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1996:103;1930:175;:::o;2463:180::-;2276:21:46;:19;:21::i;:::-;2553:11:70::1;:24:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;2593:43:::1;::::0;2553:24;;2593:43:::1;::::0;::::1;2463:180:::0;:::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1523:60:51;;1412:178;-1:-1:-1;;;1412:178:51:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDelegationImplementation()":"63408a90","getVault()":"8d928af8","onVeBalBridged(address)":"df130bfe","onVeBalSupplyUpdate()":"96345fb5","setDelegation(address)":"e6b3e704"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IL2LayerZeroDelegation\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"DelegationImplementationUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDelegationImplementation\",\"outputs\":[{\"internalType\":\"contract IL2LayerZeroDelegation\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"onVeBalBridged\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onVeBalSupplyUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IL2LayerZeroDelegation\",\"name\":\"delegation\",\"type\":\"address\"}],\"name\":\"setDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The delegation contract can be set so that e.g. Child Chain Gauges are updated automatically whenever there is a veBAL balance update.\",\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getDelegationImplementation()\":{\"notice\":\"Returns the current delegation implementation contract.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"onVeBalBridged(address)\":{\"notice\":\"Hook to be called whenever the veBAL balance of a user is updated.\"},\"onVeBalSupplyUpdate()\":{\"notice\":\"Hook to be called whenever the veBAL supply is updated.\"},\"setDelegation(address)\":{\"notice\":\"Sets a new delegation implementation for `onVeBalBridged`.\"}},\"notice\":\"Forwards calls from LayerZero's system to a custom hook whenever a veBAL balance is updated for a given user in a L2 chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/L2LayerZeroBridgeForwarder.sol\":\"L2LayerZeroBridgeForwarder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\":{\"keccak256\":\"0xbeed8a8a1802aede5aa6670554125c5938ea06fc5a96c1b75dbc93d1dd586048\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5cf7cef349eba6938df4d8993dcab2b16775b2daf0cc0d5ad71d91f27221eb00\",\"dweb:/ipfs/QmS22HyJFUggLjLx9WABDcMPq6XqC3f4Q23NrKv6CmnkL5\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"contracts/L2LayerZeroBridgeForwarder.sol\":{\"keccak256\":\"0x80ebea37e47c4bda44d5ffbb28e44eda4436dbb935528b67adb4290ff353de6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://07f435c5d99730b1ca22e46317d8efb63bed3be22ce511c5b5651f4f6d9491cf\",\"dweb:/ipfs/QmRAjwpBPh9soxR5pqcigcxkoYAmhpRZrXrTEUuRYUNJt1\"]}},\"version\":1}"}},"contracts/MainnetBalancerMinter.sol":{"MainnetBalancerMinter":{"abi":[{"inputs":[{"internalType":"contract IBalancerTokenAdmin","name":"tokenAdmin","type":"address"},{"internalType":"contract IGaugeController","name":"gaugeController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"uint256","name":"minted","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"bool","name":"approval","type":"bool"}],"name":"MinterApprovalSet","type":"event"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"allowed_to_mint_for","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerTokenAdmin","outputs":[{"internalType":"contract IBalancerTokenAdmin","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeController","outputs":[{"internalType":"contract IGaugeController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getMinterApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"mintManyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mint_for","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[8]","name":"gauges","type":"address[8]"}],"name":"mint_many","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"}],"name":"setMinterApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"setMinterApprovalWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"toggle_approve_mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"61014060405234801561001157600080fd5b506040516114cc3803806114cc8339818101604052604081101561003457600080fd5b5080516020918201516040805163c003969960e01b81529051929391926001600160a01b0385169263c00396999260048082019391829003018186803b15801561007d57600080fd5b505afa158015610091573d6000803e3d6000fd5b505050506040513d60208110156100a757600080fd5b5051604080518082018252600f81526e2130b630b731b2b91026b4b73a32b960891b602082810191825283518085019094526001808552603160f81b918501918252600055915190206080529051902060a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526001600160601b0319606091821b811660e05292811b8316610100521b166101205260805160a05160c05160e05160601c6101005160601c6101205160601c61132b6101a1600039806106375280610d745250806109345280610a305280610b4052508061081e525080610c9a525080610cdc525080610cbb525061132b6000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80638b752bb0116100b2578063c003969911610081578063dd289d6011610066578063dd289d601461047f578063e6dec36f146104b2578063ed24911d146104ba5761011b565b8063c003969914610419578063c6542794146104215761011b565b80638b752bb01461038e57806390193b7c146103c9578063a0990033146102a0578063a51e1904146103fc5761011b565b80633c543bc6116100ee5780633c543bc6146102a057806358de9ade146102ef5780636a627842146103205780637504a15d146103535761011b565b80630de54ba01461012057806327f18ae31461015d578063397ada21146101985780633b9f73841461021a575b600080fd5b61015b6004803603604081101561013657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013515156104c2565b005b61015b6004803603604081101561017357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166104d1565b610208600480360360208110156101ae57600080fd5b8101906020810181356401000000008111156101c957600080fd5b8201836020820111156101db57600080fd5b803590602001918460208302840111640100000000831117156101fd57600080fd5b509092509050610526565b60408051918252519081900360200190f35b6102086004803603604081101561023057600080fd5b81019060208101813564010000000081111561024b57600080fd5b82018360208201111561025d57600080fd5b8035906020019184602083028401116401000000008311171561027f57600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff1661054b565b6102db600480360360408110156102b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166105fa565b604080519115158252519081900360200190f35b6102f7610635565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102086004803603602081101561033657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610659565b6102086004803603604081101561036957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661067c565b610208600480360360408110156103a457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610719565b610208600480360360208110156103df57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610751565b61015b600480360361010081101561041357600080fd5b50610779565b6102f761081c565b61015b600480360360e081101561043757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101351515916040820135169060608101359060ff6080820135169060a08101359060c00135610840565b61015b6004803603602081101561049557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108f2565b6102f7610932565b610208610956565b6104cd823383610965565b5050565b6104d9610a01565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561051e5761051c8282610a1a565b505b6104cd610add565b6000610530610a01565b61053b838333610ae4565b9050610545610add565b92915050565b6000610555610a01565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff166105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806112b16023913960400191505060405180910390fd5b6105e9848484610ae4565b90506105f3610add565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260036020908152604080832093909416825291909152205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610663610a01565b61066d8233610a1a565b9050610677610add565b919050565b6000610686610a01565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff1661070f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806112b16023913960400191505060405180910390fd5b61053b8383610a1a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610781610a01565b60005b600881101561081057600082826008811061079b57fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156107d757610810565b6108078282600881106107e657fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1633610a1a565b50600101610784565b50610819610add565b50565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007fc87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd815380888861086e89610751565b6040805160208082019690965273ffffffffffffffffffffffffffffffffffffffff909416848201529115156060840152608083015260a08083018990528151808403909101815260c09092019052805191012090506108dd86826108d4878787610bf0565b886101f8610c2f565b6108e8888789610965565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020908152604080832033845290915290205461081990829060ff16156104c2565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610960610c96565b905090565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291519293927fa3ffb51320bbca4e61e7423e3c97dd7bd7e31b6ea7429eb26ef92780e84572a09281900390910190a3505050565b610a1360026000541415610190610d61565b6002600055565b6000610a268383610d6f565b90508015610545577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610abf57600080fd5b505af1158015610ad3573d6000803e3d6000fd5b5050505092915050565b6001600055565b600082815b81811015610b3757610b2d610b26878784818110610b0357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1686610d6f565b8490610fe1565b9250600101610ae9565b508115610be8577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1984846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050505b509392505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610c3a85610ff3565b9050610c50610c4a87838761105a565b83610d61565b610c5f428410156101b8610d61565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600160208190526040909120805490910190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610d0361116c565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816104cd576104cd81611170565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633f9095b7856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610df957600080fd5b505afa158015610e0d573d6000803e3d6000fd5b505050506040513d6020811015610e2357600080fd5b5051600f0b1215610e7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112d46022913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16634b820093836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6020811015610f1257600080fd5b5050604080517f0940070700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291516000928616916309400707916024808301926020929190829003018186803b158015610f8557600080fd5b505afa158015610f99573d6000803e3d6000fd5b505050506040513d6020811015610faf57600080fd5b50519050610fc7610fc08486610719565b829061119a565b91508115610fda57610fda8385836111a8565b5092915050565b60008282016105f38482101583610d61565b6000610ffd610c96565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061106c82516041146101b9610d61565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156110e5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061116057508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b610819817f42414c000000000000000000000000000000000000000000000000000000000061121f565b60006105f38383600161129a565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526002602090815260408083209487168084529482529182902085905581519384528301849052805191927f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0929081900390910190a2505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006112a98484111583610d61565b505090039056fe43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572476175676520646f6573206e6f74206578697374206f6e20436f6e74726f6c6c6572a2646970667358221220bf30e091a81a9894c39995074c9d44608ba6fe63b76aa04a90365a7f77421b3664736f6c63430007010033","opcodes":"PUSH2 0x140 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x14CC CODESIZE SUB DUP1 PUSH2 0x14CC DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xC0039699 SWAP3 PUSH1 0x4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x91 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xF DUP2 MSTORE PUSH15 0x2130B630B731B2B91026B4B73A32B9 PUSH1 0x89 SHL PUSH1 0x20 DUP3 DUP2 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x1 DUP1 DUP6 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP2 DUP6 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 SSTORE SWAP2 MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xA0 MSTORE PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP3 DUP2 SHL DUP4 AND PUSH2 0x100 MSTORE SHL AND PUSH2 0x120 MSTORE PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x132B PUSH2 0x1A1 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x637 MSTORE DUP1 PUSH2 0xD74 MSTORE POP DUP1 PUSH2 0x934 MSTORE DUP1 PUSH2 0xA30 MSTORE DUP1 PUSH2 0xB40 MSTORE POP DUP1 PUSH2 0x81E MSTORE POP DUP1 PUSH2 0xC9A MSTORE POP DUP1 PUSH2 0xCDC MSTORE POP DUP1 PUSH2 0xCBB MSTORE POP PUSH2 0x132B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8B752BB0 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xC0039699 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xDD289D60 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDD289D60 EQ PUSH2 0x47F JUMPI DUP1 PUSH4 0xE6DEC36F EQ PUSH2 0x4B2 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x4BA JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xC0039699 EQ PUSH2 0x419 JUMPI DUP1 PUSH4 0xC6542794 EQ PUSH2 0x421 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x8B752BB0 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x3C9 JUMPI DUP1 PUSH4 0xA0990033 EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0xA51E1904 EQ PUSH2 0x3FC JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x3C543BC6 EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x58DE9ADE EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x7504A15D EQ PUSH2 0x353 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xDE54BA0 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x27F18AE3 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x397ADA21 EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x3B9F7384 EQ PUSH2 0x21A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x4C2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x4D1 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x54B JUMP JUMPDEST PUSH2 0x2DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F7 PUSH2 0x635 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x659 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x67C JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x719 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x751 JUMP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x779 JUMP JUMPDEST PUSH2 0x2F7 PUSH2 0x81C JUMP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x840 JUMP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x2F7 PUSH2 0x932 JUMP JUMPDEST PUSH2 0x208 PUSH2 0x956 JUMP JUMPDEST PUSH2 0x4CD DUP3 CALLER DUP4 PUSH2 0x965 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x4D9 PUSH2 0xA01 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x51E JUMPI PUSH2 0x51C DUP3 DUP3 PUSH2 0xA1A JUMP JUMPDEST POP JUMPDEST PUSH2 0x4CD PUSH2 0xADD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x530 PUSH2 0xA01 JUMP JUMPDEST PUSH2 0x53B DUP4 DUP4 CALLER PUSH2 0xAE4 JUMP JUMPDEST SWAP1 POP PUSH2 0x545 PUSH2 0xADD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x555 PUSH2 0xA01 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x5DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12B1 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5E9 DUP5 DUP5 DUP5 PUSH2 0xAE4 JUMP JUMPDEST SWAP1 POP PUSH2 0x5F3 PUSH2 0xADD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x663 PUSH2 0xA01 JUMP JUMPDEST PUSH2 0x66D DUP3 CALLER PUSH2 0xA1A JUMP JUMPDEST SWAP1 POP PUSH2 0x677 PUSH2 0xADD JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x686 PUSH2 0xA01 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x70F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12B1 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x53B DUP4 DUP4 PUSH2 0xA1A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x781 PUSH2 0xA01 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x79B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x7D7 JUMPI PUSH2 0x810 JUMP JUMPDEST PUSH2 0x807 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x7E6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0xA1A JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x784 JUMP JUMPDEST POP PUSH2 0x819 PUSH2 0xADD JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xC87351A089BBDC3B2B9299D2CE29F08FD982826B275B3642939A2F7FDD815380 DUP9 DUP9 PUSH2 0x86E DUP10 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP10 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH2 0x8DD DUP7 DUP3 PUSH2 0x8D4 DUP8 DUP8 DUP8 PUSH2 0xBF0 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xC2F JUMP JUMPDEST PUSH2 0x8E8 DUP9 DUP8 DUP10 PUSH2 0x965 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x819 SWAP1 DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x4C2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x960 PUSH2 0xC96 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xA3FFB51320BBCA4E61E7423E3C97DD7BD7E31B6EA7429EB26EF92780E84572A0 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xA13 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xD61 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA26 DUP4 DUP4 PUSH2 0xD6F JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x545 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40C10F19 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xABF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB37 JUMPI PUSH2 0xB2D PUSH2 0xB26 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0xB03 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH2 0xD6F JUMP JUMPDEST DUP5 SWAP1 PUSH2 0xFE1 JUMP JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xAE9 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0xBE8 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40C10F19 DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC3A DUP6 PUSH2 0xFF3 JUMP JUMPDEST SWAP1 POP PUSH2 0xC50 PUSH2 0xC4A DUP8 DUP4 DUP8 PUSH2 0x105A JUMP JUMPDEST DUP4 PUSH2 0xD61 JUMP JUMPDEST PUSH2 0xC5F TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xD61 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xD03 PUSH2 0x116C JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x4CD JUMPI PUSH2 0x4CD DUP2 PUSH2 0x1170 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3F9095B7 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE0D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0xE7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12D4 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B820093 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x940070700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP7 AND SWAP2 PUSH4 0x9400707 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0xFC7 PUSH2 0xFC0 DUP5 DUP7 PUSH2 0x719 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x119A JUMP JUMPDEST SWAP2 POP DUP2 ISZERO PUSH2 0xFDA JUMPI PUSH2 0xFDA DUP4 DUP6 DUP4 PUSH2 0x11A8 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x5F3 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xD61 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFD PUSH2 0xC96 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x106C DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xD61 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1160 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH2 0x819 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x121F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F3 DUP4 DUP4 PUSH1 0x1 PUSH2 0x129A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE DUP4 ADD DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 PUSH32 0x9D228D69B5FDB8D273A2336F8FB8612D039631024EA9BF09C424A9503AA078F0 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12A9 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xD61 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP INVALID NUMBER PUSH2 0x6C6C PUSH6 0x72206E6F7420 PUSH2 0x6C6C PUSH16 0x77656420746F206D696E7420666F7220 PUSH22 0x736572476175676520646F6573206E6F742065786973 PUSH21 0x206F6E20436F6E74726F6C6C6572A2646970667358 0x22 SLT KECCAK256 0xBF ADDRESS 0xE0 SWAP2 0xA8 BYTE SWAP9 SWAP5 0xC3 SWAP10 SWAP6 SMOD 0x4C SWAP14 DIFFICULTY PUSH1 0x8B 0xA6 INVALID PUSH4 0xB76AA04A SWAP1 CALLDATASIZE GAS PUSH32 0x77421B3664736F6C634300070100330000000000000000000000000000000000 ","sourceMap":"1181:1939:71:-:0;;;1406:245;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1406:245:71;;;;;;;;1507:29;;-1:-1:-1;;;1507:29:71;;;;1406:245;;;;-1:-1:-1;;;;;1507:27:71;;;;;:29;;;;;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1507:29:71;1821:152:66;;;;;;;;;;;-1:-1:-1;;;1507:29:71;1821:152:66;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1821:152:66;;;;;;-1:-1:-1;2175:22:63;2100::58;;;;2085:37;;2150:25;;;;2132:43;;2198:95;2185:108;;-1:-1:-1;;;;;;1952:14:66::1;::::0;;;;;::::1;::::0;1576:24:71;;;;;::::1;::::0;1610:34;;::::1;::::0;1181:1939;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"5935":[{"length":32,"start":3259}],"5937":[{"length":32,"start":3292}],"5939":[{"length":32,"start":3226}],"7437":[{"length":32,"start":2078}],"9376":[{"length":32,"start":2356},{"length":32,"start":2608},{"length":32,"start":2880}],"9378":[{"length":32,"start":1591},{"length":32,"start":3444}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061011b5760003560e01c80638b752bb0116100b2578063c003969911610081578063dd289d6011610066578063dd289d601461047f578063e6dec36f146104b2578063ed24911d146104ba5761011b565b8063c003969914610419578063c6542794146104215761011b565b80638b752bb01461038e57806390193b7c146103c9578063a0990033146102a0578063a51e1904146103fc5761011b565b80633c543bc6116100ee5780633c543bc6146102a057806358de9ade146102ef5780636a627842146103205780637504a15d146103535761011b565b80630de54ba01461012057806327f18ae31461015d578063397ada21146101985780633b9f73841461021a575b600080fd5b61015b6004803603604081101561013657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013515156104c2565b005b61015b6004803603604081101561017357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166104d1565b610208600480360360208110156101ae57600080fd5b8101906020810181356401000000008111156101c957600080fd5b8201836020820111156101db57600080fd5b803590602001918460208302840111640100000000831117156101fd57600080fd5b509092509050610526565b60408051918252519081900360200190f35b6102086004803603604081101561023057600080fd5b81019060208101813564010000000081111561024b57600080fd5b82018360208201111561025d57600080fd5b8035906020019184602083028401116401000000008311171561027f57600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff1661054b565b6102db600480360360408110156102b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166105fa565b604080519115158252519081900360200190f35b6102f7610635565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102086004803603602081101561033657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610659565b6102086004803603604081101561036957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661067c565b610208600480360360408110156103a457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610719565b610208600480360360208110156103df57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610751565b61015b600480360361010081101561041357600080fd5b50610779565b6102f761081c565b61015b600480360360e081101561043757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101351515916040820135169060608101359060ff6080820135169060a08101359060c00135610840565b61015b6004803603602081101561049557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108f2565b6102f7610932565b610208610956565b6104cd823383610965565b5050565b6104d9610a01565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561051e5761051c8282610a1a565b505b6104cd610add565b6000610530610a01565b61053b838333610ae4565b9050610545610add565b92915050565b6000610555610a01565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff166105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806112b16023913960400191505060405180910390fd5b6105e9848484610ae4565b90506105f3610add565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260036020908152604080832093909416825291909152205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610663610a01565b61066d8233610a1a565b9050610677610add565b919050565b6000610686610a01565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff1661070f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806112b16023913960400191505060405180910390fd5b61053b8383610a1a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610781610a01565b60005b600881101561081057600082826008811061079b57fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156107d757610810565b6108078282600881106107e657fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1633610a1a565b50600101610784565b50610819610add565b50565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007fc87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd815380888861086e89610751565b6040805160208082019690965273ffffffffffffffffffffffffffffffffffffffff909416848201529115156060840152608083015260a08083018990528151808403909101815260c09092019052805191012090506108dd86826108d4878787610bf0565b886101f8610c2f565b6108e8888789610965565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020908152604080832033845290915290205461081990829060ff16156104c2565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610960610c96565b905090565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291519293927fa3ffb51320bbca4e61e7423e3c97dd7bd7e31b6ea7429eb26ef92780e84572a09281900390910190a3505050565b610a1360026000541415610190610d61565b6002600055565b6000610a268383610d6f565b90508015610545577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610abf57600080fd5b505af1158015610ad3573d6000803e3d6000fd5b5050505092915050565b6001600055565b600082815b81811015610b3757610b2d610b26878784818110610b0357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1686610d6f565b8490610fe1565b9250600101610ae9565b508115610be8577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1984846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050505b509392505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610c3a85610ff3565b9050610c50610c4a87838761105a565b83610d61565b610c5f428410156101b8610d61565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600160208190526040909120805490910190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610d0361116c565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816104cd576104cd81611170565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633f9095b7856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610df957600080fd5b505afa158015610e0d573d6000803e3d6000fd5b505050506040513d6020811015610e2357600080fd5b5051600f0b1215610e7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112d46022913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16634b820093836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6020811015610f1257600080fd5b5050604080517f0940070700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291516000928616916309400707916024808301926020929190829003018186803b158015610f8557600080fd5b505afa158015610f99573d6000803e3d6000fd5b505050506040513d6020811015610faf57600080fd5b50519050610fc7610fc08486610719565b829061119a565b91508115610fda57610fda8385836111a8565b5092915050565b60008282016105f38482101583610d61565b6000610ffd610c96565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061106c82516041146101b9610d61565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156110e5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061116057508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b610819817f42414c000000000000000000000000000000000000000000000000000000000061121f565b60006105f38383600161129a565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526002602090815260408083209487168084529482529182902085905581519384528301849052805191927f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0929081900390910190a2505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006112a98484111583610d61565b505090039056fe43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572476175676520646f6573206e6f74206578697374206f6e20436f6e74726f6c6c6572a2646970667358221220bf30e091a81a9894c39995074c9d44608ba6fe63b76aa04a90365a7f77421b3664736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8B752BB0 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xC0039699 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xDD289D60 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDD289D60 EQ PUSH2 0x47F JUMPI DUP1 PUSH4 0xE6DEC36F EQ PUSH2 0x4B2 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x4BA JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xC0039699 EQ PUSH2 0x419 JUMPI DUP1 PUSH4 0xC6542794 EQ PUSH2 0x421 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x8B752BB0 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x3C9 JUMPI DUP1 PUSH4 0xA0990033 EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0xA51E1904 EQ PUSH2 0x3FC JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x3C543BC6 EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x58DE9ADE EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x7504A15D EQ PUSH2 0x353 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xDE54BA0 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x27F18AE3 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x397ADA21 EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x3B9F7384 EQ PUSH2 0x21A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x4C2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x4D1 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x54B JUMP JUMPDEST PUSH2 0x2DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F7 PUSH2 0x635 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x659 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x67C JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x719 JUMP JUMPDEST PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x751 JUMP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x779 JUMP JUMPDEST PUSH2 0x2F7 PUSH2 0x81C JUMP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x840 JUMP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x2F7 PUSH2 0x932 JUMP JUMPDEST PUSH2 0x208 PUSH2 0x956 JUMP JUMPDEST PUSH2 0x4CD DUP3 CALLER DUP4 PUSH2 0x965 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x4D9 PUSH2 0xA01 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x51E JUMPI PUSH2 0x51C DUP3 DUP3 PUSH2 0xA1A JUMP JUMPDEST POP JUMPDEST PUSH2 0x4CD PUSH2 0xADD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x530 PUSH2 0xA01 JUMP JUMPDEST PUSH2 0x53B DUP4 DUP4 CALLER PUSH2 0xAE4 JUMP JUMPDEST SWAP1 POP PUSH2 0x545 PUSH2 0xADD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x555 PUSH2 0xA01 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x5DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12B1 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5E9 DUP5 DUP5 DUP5 PUSH2 0xAE4 JUMP JUMPDEST SWAP1 POP PUSH2 0x5F3 PUSH2 0xADD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x663 PUSH2 0xA01 JUMP JUMPDEST PUSH2 0x66D DUP3 CALLER PUSH2 0xA1A JUMP JUMPDEST SWAP1 POP PUSH2 0x677 PUSH2 0xADD JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x686 PUSH2 0xA01 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x70F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12B1 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x53B DUP4 DUP4 PUSH2 0xA1A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x781 PUSH2 0xA01 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x79B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x7D7 JUMPI PUSH2 0x810 JUMP JUMPDEST PUSH2 0x807 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x7E6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0xA1A JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x784 JUMP JUMPDEST POP PUSH2 0x819 PUSH2 0xADD JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xC87351A089BBDC3B2B9299D2CE29F08FD982826B275B3642939A2F7FDD815380 DUP9 DUP9 PUSH2 0x86E DUP10 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP10 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH2 0x8DD DUP7 DUP3 PUSH2 0x8D4 DUP8 DUP8 DUP8 PUSH2 0xBF0 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xC2F JUMP JUMPDEST PUSH2 0x8E8 DUP9 DUP8 DUP10 PUSH2 0x965 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x819 SWAP1 DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x4C2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x960 PUSH2 0xC96 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xA3FFB51320BBCA4E61E7423E3C97DD7BD7E31B6EA7429EB26EF92780E84572A0 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xA13 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xD61 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA26 DUP4 DUP4 PUSH2 0xD6F JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x545 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40C10F19 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xABF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB37 JUMPI PUSH2 0xB2D PUSH2 0xB26 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0xB03 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH2 0xD6F JUMP JUMPDEST DUP5 SWAP1 PUSH2 0xFE1 JUMP JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xAE9 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0xBE8 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40C10F19 DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC3A DUP6 PUSH2 0xFF3 JUMP JUMPDEST SWAP1 POP PUSH2 0xC50 PUSH2 0xC4A DUP8 DUP4 DUP8 PUSH2 0x105A JUMP JUMPDEST DUP4 PUSH2 0xD61 JUMP JUMPDEST PUSH2 0xC5F TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xD61 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xD03 PUSH2 0x116C JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x4CD JUMPI PUSH2 0x4CD DUP2 PUSH2 0x1170 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3F9095B7 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE0D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0xE7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12D4 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B820093 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x940070700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP7 AND SWAP2 PUSH4 0x9400707 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0xFC7 PUSH2 0xFC0 DUP5 DUP7 PUSH2 0x719 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x119A JUMP JUMPDEST SWAP2 POP DUP2 ISZERO PUSH2 0xFDA JUMPI PUSH2 0xFDA DUP4 DUP6 DUP4 PUSH2 0x11A8 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x5F3 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xD61 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFD PUSH2 0xC96 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x106C DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xD61 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1160 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH2 0x819 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x121F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F3 DUP4 DUP4 PUSH1 0x1 PUSH2 0x129A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE DUP4 ADD DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 PUSH32 0x9D228D69B5FDB8D273A2336F8FB8612D039631024EA9BF09C424A9503AA078F0 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12A9 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xD61 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP INVALID NUMBER PUSH2 0x6C6C PUSH6 0x72206E6F7420 PUSH2 0x6C6C PUSH16 0x77656420746F206D696E7420666F7220 PUSH22 0x736572476175676520646F6573206E6F742065786973 PUSH21 0x206F6E20436F6E74726F6C6C6572A2646970667358 0x22 SLT KECCAK256 0xBF ADDRESS 0xE0 SWAP2 0xA8 BYTE SWAP9 SWAP5 0xC3 SWAP10 SWAP6 SMOD 0x4C SWAP14 DIFFICULTY PUSH1 0x8B 0xA6 INVALID PUSH4 0xB76AA04A SWAP1 CALLDATASIZE GAS PUSH32 0x77421B3664736F6C634300070100330000000000000000000000000000000000 ","sourceMap":"1181:1939:71:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3440:139:66;;;;;;;;;;;;;;;;-1:-1:-1;3440:139:66;;;;;;;;;;;:::i;:::-;;5582:178;;;;;;;;;;;;;;;;-1:-1:-1;5582:178:66;;;;;;;;;;;:::i;2324:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2324:150:66;;-1:-1:-1;2324:150:66;-1:-1:-1;2324:150:66;:::i;:::-;;;;;;;;;;;;;;;;2788:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2788:251:66;-1:-1:-1;2788:251:66;;;;:::i;3251:147::-;;;;;;;;;;;;;;;;-1:-1:-1;3251:147:66;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1846:120:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2153:129:66;;;;;;;;;;;;;;;;-1:-1:-1;2153:129:66;;;;:::i;2516:230::-;;;;;;;;;;;;;;;;-1:-1:-1;2516:230:66;;;;;;;;;;;:::i;3081:128::-;;;;;;;;;;;;;;;;-1:-1:-1;3081:128:66;;;;;;;;;;;:::i;1303:121:47:-;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:47;;;;:::i;5278:262:66:-;;;;;;;;;;;;;;;;-1:-1:-1;5278:262:66;:::i;2015:96::-;;;:::i;3621:541::-;;;;;;;;;;;;;;;;-1:-1:-1;3621:541:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5802:142::-;;;;;;;;;;;;;;;;-1:-1:-1;5802:142:66;;;;:::i;1688:121:71:-;;;:::i;1184:113:47:-;;;:::i;3440:139:66:-;3524:48;3543:6;3551:10;3563:8;3524:18;:48::i;:::-;3440:139;;:::o;5582:178::-;2613:20:63;:18;:20::i;:::-;5689:10:66::1;5674:26;::::0;;;:14:::1;:26;::::0;;;;;;;::::1;:32:::0;::::1;::::0;;;;;;;;::::1;;5670:84;;;5722:21;5731:5;5738:4;5722:8;:21::i;:::-;;5670:84;2654:19:63::0;:17;:19::i;2324:150:66:-;2409:7;2613:20:63;:18;:20::i;:::-;2435:32:66::1;2448:6;;2456:10;2435:12;:32::i;:::-;2428:39;;2654:19:63::0;:17;:19::i;:::-;2324:150:66;;;;:::o;2788:251::-;2890:7;2613:20:63;:18;:20::i;:::-;2932:10:66::1;2917:26;::::0;;;:14:::1;:26;::::0;;;;;;;::::1;:32:::0;::::1;::::0;;;;;;;;::::1;;2909:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3006:26;3019:6;;3027:4;3006:12;:26::i;:::-;2999:33;;2654:19:63::0;:17;:19::i;:::-;2788:251:66;;;;;:::o;3251:147::-;3363:22;;;;3340:4;3363:22;;;:14;:22;;;;;;;;:28;;;;;;;;;;;;;;;3251:147::o;1846:120:71:-;1943:16;1846:120;:::o;2153:129:66:-;2222:7;2613:20:63;:18;:20::i;:::-;2248:27:66::1;2257:5;2264:10;2248:8;:27::i;:::-;2241:34;;2654:19:63::0;:17;:19::i;:::-;2153:129:66;;;:::o;2516:230::-;2602:7;2613:20:63;:18;:20::i;:::-;2644:10:66::1;2629:26;::::0;;;:14:::1;:26;::::0;;;;;;;::::1;:32:::0;::::1;::::0;;;;;;;;::::1;;2621:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2718:21;2727:5;2734:4;2718:8;:21::i;3081:128::-:0;3182:13;;;;3156:7;3182:13;;;:7;:13;;;;;;;;:20;;;;;;;;;;;;;3081:128::o;1303:121:47:-;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;5278:262:66:-;2613:20:63;:18;:20::i;:::-;5371:9:66::1;5366:168;5390:1;5386;:5;5366:168;;;5437:1;5416:6:::0;5423:1;5416:9:::1;::::0;::::1;;;;;;;;;;;:23;;;5412:67;;;5459:5;;5412:67;5492:31;5501:6;5508:1;5501:9;;;;;;;;;;;;;5512:10;5492:8;:31::i;:::-;-1:-1:-1::0;5393:3:66::1;;5366:168;;;;2654:19:63::0;:17;:19::i;:::-;5278:262:66;:::o;2015:96::-;2098:6;2015:96;:::o;3621:541::-;3845:18;1618:105;3931:6;3939:8;3949:18;3962:4;3949:12;:18::i;:::-;3889:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3866:122;;;;;;-1:-1:-1;3999:103:66;4021:4;3866:122;4039:26;4057:1;4060;4063;4039:17;:26::i;:::-;4067:8;13190:3:31;3999:21:66;:103::i;:::-;4113:42;4132:6;4140:4;4146:8;4113:18;:42::i;:::-;3621:541;;;;;;;;:::o;5802:142::-;5902:22;;;;;;;:14;:22;;;;;;;;5925:10;5902:34;;;;;;;;5875:62;;5893:6;;5902:34;;5901:35;5875:17;:62::i;1688:121:71:-;1791:11;1688:121;:::o;1184:113:47:-;1244:7;1270:20;:18;:20::i;:::-;1263:27;;1184:113;:::o;4168:223:66:-;4289:22;;;;;;;;:14;:22;;;;;;;;:28;;;;;;;;;;;;;:39;;;;;;;;;;;;;4343:41;;;;;;;4289:22;;:28;4343:41;;;;;;;;;;4168:223;;;:::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;1999:245:71:-;2073:20;2120:25;2133:5;2140:4;2120:12;:25::i;:::-;2105:40;-1:-1:-1;2159:16:71;;2155:83;;2191:11;:16;;;2208:4;2214:12;2191:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1999:245;;;;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;2250:385:71:-;2340:20;2389:6;2340:20;2412:124;2436:6;2432:1;:10;2412:124;;;2478:47;2495:29;2508:6;;2515:1;2508:9;;;;;;;;;;;;;;;2519:4;2495:12;:29::i;:::-;2478:12;;:16;:47::i;:::-;2463:62;-1:-1:-1;2444:3:71;;2412:124;;;-1:-1:-1;2550:16:71;;2546:83;;2582:11;:16;;;2599:4;2605:12;2582:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2546:83;2250:385;;;;;;:::o;3803:419:47:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:47;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:47:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:31;2487:8:47;:63::i;:::-;-1:-1:-1;;;2884:19:47;;;;;;;;2907:1;2884:19;;;;;;;;:24;;;;;;;-1:-1:-1;;1701:1214:47:o;2386:188:58:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;2641:477:71:-;2710:20;2789:1;2750:16;:28;;;2779:5;2750:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2750:35:71;:40;;;;2742:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2856:5;2840:38;;;2879:4;2840:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2914:47:71;;;;;;:41;:47;;;;;;;;;2894:17;;2914:41;;;;;:47;;;;;2840:44;;2914:47;;;;;;;:41;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2914:47:71;;-1:-1:-1;2986:34:71;3000:19;3007:4;3013:5;3000:6;:19::i;:::-;2986:9;;:13;:34::i;:::-;2971:49;-1:-1:-1;3035:16:71;;3031:81;;3067:34;3078:4;3084:5;3091:9;3067:10;:34::i;:::-;2641:477;;;;;:::o;966:167:65:-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;3199:183:58:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:47:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:31;3082:8:47;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:47;;;;;;-1:-1:-1;;3728:30:47;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:47:o;3433:187:58:-;3595:9;;3570:44::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;1404:121:65:-;1462:7;1488:30;1492:1;1495;5194::31;1488:3:65;:30::i;4424:189:66:-;4537:13;;;;;;;;:7;:13;;;;;;;;:20;;;;;;;;;;;;;:28;;;4580:26;;;;;;;;;;;;4537:13;;4580:26;;;;;;;;;;;4424:189;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1816:206:65;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:65;;;1816:206::o"},"methodIdentifiers":{"allowed_to_mint_for(address,address)":"a0990033","getBalancerToken()":"c0039699","getBalancerTokenAdmin()":"e6dec36f","getDomainSeparator()":"ed24911d","getGaugeController()":"58de9ade","getMinterApproval(address,address)":"3c543bc6","getNextNonce(address)":"90193b7c","mint(address)":"6a627842","mintFor(address,address)":"7504a15d","mintMany(address[])":"397ada21","mintManyFor(address[],address)":"3b9f7384","mint_for(address,address)":"27f18ae3","mint_many(address[8])":"a51e1904","minted(address,address)":"8b752bb0","setMinterApproval(address,bool)":"0de54ba0","setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)":"c6542794","toggle_approve_mint(address)":"dd289d60"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IBalancerTokenAdmin\",\"name\":\"tokenAdmin\",\"type\":\"address\"},{\"internalType\":\"contract IGaugeController\",\"name\":\"gaugeController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"MinterApprovalSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed_to_mint_for\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerTokenAdmin\",\"outputs\":[{\"internalType\":\"contract IBalancerTokenAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeController\",\"outputs\":[{\"internalType\":\"contract IGaugeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinterApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"mintMany\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintManyFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mint_for\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[8]\",\"name\":\"gauges\",\"type\":\"address[8]\"}],\"name\":\"mint_many\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"minted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMinterApprovalWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"toggle_approve_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"mint(address)\":{\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\"}},\"mintFor(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mintMany(address[])\":{\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"mintManyFor(address[],address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\",\"user\":\"Address to mint to\"}},\"mint_for(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mint_many(address[8])\":{\"details\":\"This function is not recommended as `mintMany()` is more flexible and gas efficient\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowed_to_mint_for(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"},\"getBalancerTokenAdmin()\":{\"notice\":\"Returns the address of the Balancer Token Admin contract\"},\"getGaugeController()\":{\"notice\":\"Returns the address of the Gauge Controller\"},\"getMinterApproval(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"mint(address)\":{\"notice\":\"Mint everything which belongs to `msg.sender` and send to them\"},\"mintFor(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mintMany(address[])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"mintManyFor(address[],address)\":{\"notice\":\"Mint tokens for `user` across multiple gauges\"},\"mint_for(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mint_many(address[8])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"minted(address,address)\":{\"notice\":\"The total number of tokens minted for `user` from `gauge`\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on your behalf\"},\"setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing them.\"},\"toggle_approve_mint(address)\":{\"notice\":\"Toggle whether `minter` is approved to mint tokens for `user`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MainnetBalancerMinter.sol\":\"MainnetBalancerMinter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/BalancerMinter.sol\":{\"keccak256\":\"0xbacdfde61937f9cea9166c7e492ac8d65261fb6bdfb621f1f258852799204cc8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3e68da1f25c0211654bb0b04c4ac1a789cb3dfabd7f5db54d6bfbeb49414e0c\",\"dweb:/ipfs/QmRnvBWovj9HNZsEfvrZpbJcs3K7ikwrY8fkX68F7rdxQK\"]},\"contracts/MainnetBalancerMinter.sol\":{\"keccak256\":\"0x97d3bb040125bc72090563215acafecf1cec500edc5865bb547a26e8b633d5bd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a74065e8ff779e3a14186ceb14ad339e229d2c1f3c5d02f9a0b6d693248d9814\",\"dweb:/ipfs/QmbsoYowFpmcfxwnj6d57iSuBibtgxGU4q1EKoBnb4qpAe\"]}},\"version\":1}"}},"contracts/NullVotingEscrow.sol":{"NullVotingEscrow":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506102a7806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806370a082311161005057806370a0823114610121578063a9059cbb14610077578063dd62ed3e1461015457610072565b8063095ea7b31461007757806318160ddd146100c457806323b872dd146100de575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561018f565b604080519115158252519081900360200190f35b6100cc6101a2565b60408051918252519081900360200190f35b6100b0600480360360608110156100f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356101a7565b6100cc6004803603602081101561013757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101bb565b6100cc6004803603604081101561016a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166101c1565b600061019c6103e66101c9565b92915050565b600090565b60006101b46103e66101c9565b9392505050565b50600090565b600092915050565b6101f3817f42414c00000000000000000000000000000000000000000000000000000000006101f6565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea26469706673582212205cdff8c9f1978d0900522b46a4d20ed4b492c28d00ac56065785352b3be111e064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A7 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x154 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xDE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x18F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x1A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1A7 JUMP JUMPDEST PUSH2 0xCC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1BB JUMP JUMPDEST PUSH2 0xCC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1C1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19C PUSH2 0x3E6 PUSH2 0x1C9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B4 PUSH2 0x3E6 PUSH2 0x1C9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1F3 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1F6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5C 0xDF 0xF8 0xC9 CALL SWAP8 DUP14 MULMOD STOP MSTORE 0x2B CHAINID LOG4 0xD2 0xE 0xD4 0xB4 SWAP3 0xC2 DUP14 STOP 0xAC JUMP MOD JUMPI DUP6 CALLDATALOAD 0x2B EXTCODESIZE 0xE1 GT 0xE0 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1396:762:72:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c806370a082311161005057806370a0823114610121578063a9059cbb14610077578063dd62ed3e1461015457610072565b8063095ea7b31461007757806318160ddd146100c457806323b872dd146100de575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561018f565b604080519115158252519081900360200190f35b6100cc6101a2565b60408051918252519081900360200190f35b6100b0600480360360608110156100f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356101a7565b6100cc6004803603602081101561013757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101bb565b6100cc6004803603604081101561016a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166101c1565b600061019c6103e66101c9565b92915050565b600090565b60006101b46103e66101c9565b9392505050565b50600090565b600092915050565b6101f3817f42414c00000000000000000000000000000000000000000000000000000000006101f6565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea26469706673582212205cdff8c9f1978d0900522b46a4d20ed4b492c28d00ac56065785352b3be111e064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x154 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xDE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x18F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x1A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1A7 JUMP JUMPDEST PUSH2 0xCC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1BB JUMP JUMPDEST PUSH2 0xCC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1C1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19C PUSH2 0x3E6 PUSH2 0x1C9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B4 PUSH2 0x3E6 PUSH2 0x1C9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1F3 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1F6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5C 0xDF 0xF8 0xC9 CALL SWAP8 DUP14 MULMOD STOP MSTORE 0x2B CHAINID LOG4 0xD2 0xE 0xD4 0xB4 SWAP3 0xC2 DUP14 STOP 0xAC JUMP MOD JUMPI DUP6 CALLDATALOAD 0x2B EXTCODESIZE 0xE1 GT 0xE0 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1396:762:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1742:119;;;;;;;;;;;;;;;;-1:-1:-1;1742:119:72;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1438:89;;;:::i;:::-;;;;;;;;;;;;;;;;1993:163;;;;;;;;;;;;;;;;-1:-1:-1;1993:163:72;;;;;;;;;;;;;;;;;;:::i;1533:94::-;;;;;;;;;;;;;;;;-1:-1:-1;1533:94:72;;;;:::i;1633:103::-;;;;;;;;;;;;;;;;-1:-1:-1;1633:103:72;;;;;;;;;;;:::i;1742:119::-;1809:4;1825:29;15034:3:31;1825:7:72;:29::i;:::-;1742:119;;;;:::o;1438:89::-;1493:7;1438:89;:::o;1993:163::-;2104:4;2120:29;15034:3:31;2120:7:72;:29::i;:::-;1993:163;;;;;:::o;1533:94::-;-1:-1:-1;1593:7:72;;1533:94::o;1633:103::-;1702:7;1633:103;;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is to be used as the fallback `VotingEscrow` on chains other than Ethereum mainnet. In the situation where boosts are not properly relayed from Ethereum mainnet to a chain and the veBoost implementation is killed, values will be read from here which will have the effect of zeroing out any boosts.\",\"kind\":\"dev\",\"methods\":{\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"}},\"title\":\"Null VotingEscrow\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This contract fulfils the role of a `VotingEscrow` contract where no accounts hold a balance for the purposes of gauge boosts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/NullVotingEscrow.sol\":\"NullVotingEscrow\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"contracts/NullVotingEscrow.sol\":{\"keccak256\":\"0x4ed33901c3bacc0128fa1802dd10c44d81208ee4b50c605f3665a863cbf77643\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://176dc6ac382825bef6b7b1d31249a45d34789339d9ca50d67bac54975e794fbe\",\"dweb:/ipfs/QmNzka2jCZihZ9haFGrF2KCLjrEYpwpkSTPHtPbfsQqdWL\"]}},\"version\":1}"}},"contracts/OmniVotingEscrowAdaptor.sol":{"OmniVotingEscrowAdaptor":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"newAdapterParams","type":"bytes"}],"name":"AdapterParamsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IOmniVotingEscrow","name":"newOmniVotingEscrow","type":"address"}],"name":"OmniVotingEscrowUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"newUseZero","type":"bool"}],"name":"UseZeroUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newZeroPaymentAddress","type":"address"}],"name":"ZeroPaymentAddressUpdated","type":"event"},{"inputs":[{"internalType":"uint16","name":"_dstChainId","type":"uint16"}],"name":"estimateSendUserBalance","outputs":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"zroFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAdapterParams","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOmniVotingEscrow","outputs":[{"internalType":"contract IOmniVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUseZero","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getZeroPaymentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"address payable","name":"_refundAddress","type":"address"}],"name":"sendUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"adapterParams","type":"bytes"}],"name":"setAdapterParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IOmniVotingEscrow","name":"omniVotingEscrow","type":"address"}],"name":"setOmniVotingEscrow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"useZro","type":"bool"}],"name":"setUseZero","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"paymentAddress","type":"address"}],"name":"setZeroPaymentAddress","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b50604051610f77380380610f778339818101604052602081101561003357600080fd5b5051306080819052606082901b6001600160601b03191660a052906001600160a01b0316610f03610074600039806108b35250806108465250610f036000f3fe6080604052600436106100d15760003560e01c806357fb83451161007f578063aaabadc511610059578063aaabadc514610304578063d56b6a4a14610319578063e241e489146103cc578063ecc4c5831461040c576100d1565b806357fb83451461024a578063851c1bb3146102915780638d928af8146102ef576100d1565b8063299fd6fc116100b0578063299fd6fc1461017f5780634cfde448146101ab578063550f2f7f14610235576100d1565b8062986fe0146100d65780630943b7b8146100ff57806309d401f91461013d575b600080fd5b3480156100e257600080fd5b506100eb610453565b604080519115158252519081900360200190f35b34801561010b57600080fd5b50610114610474565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561014957600080fd5b5061017d6004803603602081101561016057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610490565b005b34801561018b57600080fd5b5061017d600480360360208110156101a257600080fd5b50351515610505565b3480156101b757600080fd5b506101c061058c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101fa5781810151838201526020016101e2565b50505050905090810190601f1680156102275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024157600080fd5b5061011461063f565b61017d6004803603606081101561026057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169161ffff602082013516916040909101351661065b565b34801561029d57600080fd5b506102dd600480360360208110156102b457600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610840565b60408051918252519081900360200190f35b3480156102fb57600080fd5b506101146108b1565b34801561031057600080fd5b506101146108d5565b34801561032557600080fd5b5061017d6004803603602081101561033c57600080fd5b81019060208101813564010000000081111561035757600080fd5b82018360208201111561036957600080fd5b8035906020019184600183028401116401000000008311171561038b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610955945050505050565b3480156103d857600080fd5b5061017d600480360360208110156103ef57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a0d565b34801561041857600080fd5b5061043a6004803603602081101561042f57600080fd5b503561ffff16610a84565b6040805192835260208301919091528051918290030190f35b60005474010000000000000000000000000000000000000000900460ff1690565b60025473ffffffffffffffffffffffffffffffffffffffff1690565b610498610c87565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917fe8bb344458d00606347f5b2f5b6f6de2a6f0beeb7aa331c6b90549adc7c093c091a250565b61050d610c87565b600080548215157401000000000000000000000000000000000000000081027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790915560408051918252517fc22a8ea88c11878d4bbc93fc8deeaae9120fa8540716f449ba01e0b79a1b020c9181900360200190a150565b60018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156106355780601f1061060a57610100808354040283529160200191610635565b820191906000526020600020905b81548152906001019060200180831161061857829003601f168201915b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b600061066561063f565b905073ffffffffffffffffffffffffffffffffffffffff81166106e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f6d6e6920766f74696e6720657363726f77206e6f7420736574000000000000604482015290519081900360640190fd5b600280546040517f4a75948900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830190815261ffff8816602484015286821660448401529281166064830181905260a060848401908152600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316156101000201169690960460a4850181905292871695634a7594899534958c958c958c9590949392909160c490910190849080156107fe5780601f106107d3576101008083540402835291602001916107fe565b820191906000526020600020905b8154815290600101906020018083116107e157829003601f168201915b505096505050505050506000604051808303818588803b15801561082157600080fd5b505af1158015610835573d6000803e3d6000fd5b505050505050505050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006108df6108b1565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561092457600080fd5b505afa158015610938573d6000803e3d6000fd5b505050506040513d602081101561094e57600080fd5b5051905090565b61095d610c87565b8051610970906001906020840190610e3a565b507f89eee6f0981b5afc30154f85e504f26bc7b53645844dcb29588946e5cf35d9f4816040518080602001828103825283818151815260200191508051906020019080838360005b838110156109d05781810151838201526020016109b8565b50505050905090810190601f1680156109fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b610a15610c87565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fa7bee2b81c8995421ba22c824cb2b9a80372d577f8220162fe395c089a2782ca90600090a250565b6000806000610a9161063f565b905073ffffffffffffffffffffffffffffffffffffffff8116610b1557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f6d6e6920766f74696e6720657363726f77206e6f7420736574000000000000604482015290519081900360640190fd5b6000546040517f65d092d000000000000000000000000000000000000000000000000000000000815261ffff8616600482019081527401000000000000000000000000000000000000000090920460ff16801515602483015260606044830190815260018054600261010082841615027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909116046064850181905273ffffffffffffffffffffffffffffffffffffffff8716956365d092d0958b9594919260849091019084908015610c2a5780601f10610bff57610100808354040283529160200191610c2a565b820191906000526020600020905b815481529060010190602001808311610c0d57829003601f168201915b5050945050505050604080518083038186803b158015610c4957600080fd5b505afa158015610c5d573d6000803e3d6000fd5b505050506040513d6040811015610c7357600080fd5b508051602090910151909350915050915091565b6000610cb66000357fffffffff0000000000000000000000000000000000000000000000000000000016610840565b9050610ccd610cc58233610cd0565b610191610d99565b50565b6000610cda6108d5565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610d6657600080fd5b505afa158015610d7a573d6000803e3d6000fd5b505050506040513d6020811015610d9057600080fd5b50519392505050565b81610da757610da781610dab565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610ccd917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e7b57805160ff1916838001178555610ea8565b82800160010185558215610ea8579182015b82811115610ea8578251825591602001919060010190610e8d565b50610eb4929150610eb8565b5090565b5b80821115610eb45760008155600101610eb956fea26469706673582212200e11e19cd82f550c13e5ee1ac2d25366eb3988683915731a4fae5ab9d2db479a64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xF77 CODESIZE SUB DUP1 PUSH2 0xF77 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF03 PUSH2 0x74 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x8B3 MSTORE POP DUP1 PUSH2 0x846 MSTORE POP PUSH2 0xF03 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD1 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x57FB8345 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x304 JUMPI DUP1 PUSH4 0xD56B6A4A EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0xE241E489 EQ PUSH2 0x3CC JUMPI DUP1 PUSH4 0xECC4C583 EQ PUSH2 0x40C JUMPI PUSH2 0xD1 JUMP JUMPDEST DUP1 PUSH4 0x57FB8345 EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x2EF JUMPI PUSH2 0xD1 JUMP JUMPDEST DUP1 PUSH4 0x299FD6FC GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x299FD6FC EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x4CFDE448 EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0x550F2F7F EQ PUSH2 0x235 JUMPI PUSH2 0xD1 JUMP JUMPDEST DUP1 PUSH3 0x986FE0 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0x943B7B8 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x9D401F9 EQ PUSH2 0x13D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xEB PUSH2 0x453 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x474 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x160 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x490 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x505 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x58C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1FA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x227 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x63F JUMP JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH2 0xFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x65B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x840 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x8B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x8D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x357 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x38B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x955 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFFFF AND PUSH2 0xA84 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x498 PUSH2 0xC87 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xE8BB344458D00606347F5B2F5B6F6DE2A6F0BEEB7AA331C6B90549ADC7C093C0 SWAP2 LOG2 POP JUMP JUMPDEST PUSH2 0x50D PUSH2 0xC87 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP3 ISZERO ISZERO PUSH21 0x10000000000000000000000000000000000000000 DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0xC22A8EA88C11878D4BBC93FC8DEEAAE9120FA8540716F449BA01E0B79A1B020C SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x635 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x60A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x635 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x618 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x665 PUSH2 0x63F JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x6E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6D6E6920766F74696E6720657363726F77206E6F7420736574000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x4A75948900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD SWAP1 DUP2 MSTORE PUSH2 0xFFFF DUP9 AND PUSH1 0x24 DUP5 ADD MSTORE DUP7 DUP3 AND PUSH1 0x44 DUP5 ADD MSTORE SWAP3 DUP2 AND PUSH1 0x64 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP4 AND ISZERO PUSH2 0x100 MUL ADD AND SWAP7 SWAP1 SWAP7 DIV PUSH1 0xA4 DUP6 ADD DUP2 SWAP1 MSTORE SWAP3 DUP8 AND SWAP6 PUSH4 0x4A759489 SWAP6 CALLVALUE SWAP6 DUP13 SWAP6 DUP13 SWAP6 DUP13 SWAP6 SWAP1 SWAP5 SWAP4 SWAP3 SWAP1 SWAP2 PUSH1 0xC4 SWAP1 SWAP2 ADD SWAP1 DUP5 SWAP1 DUP1 ISZERO PUSH2 0x7FE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7FE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7E1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x835 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8DF PUSH2 0x8B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x938 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x94E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x95D PUSH2 0xC87 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x970 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xE3A JUMP JUMPDEST POP PUSH32 0x89EEE6F0981B5AFC30154F85E504F26BC7B53645844DCB29588946E5CF35D9F4 DUP2 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9D0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9B8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x9FD JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xA15 PUSH2 0xC87 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA7BEE2B81C8995421BA22C824CB2B9A80372D577F8220162FE395C089A2782CA SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA91 PUSH2 0x63F JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xB15 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6D6E6920766F74696E6720657363726F77206E6F7420736574000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x65D092D000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0xFFFF DUP7 AND PUSH1 0x4 DUP3 ADD SWAP1 DUP2 MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH1 0xFF AND DUP1 ISZERO ISZERO PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x44 DUP4 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0x2 PUSH2 0x100 DUP3 DUP5 AND ISZERO MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP2 AND DIV PUSH1 0x64 DUP6 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP6 PUSH4 0x65D092D0 SWAP6 DUP12 SWAP6 SWAP5 SWAP2 SWAP3 PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 DUP5 SWAP1 DUP1 ISZERO PUSH2 0xC2A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xBFF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC2A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC0D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP5 POP POP POP POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP4 POP SWAP2 POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB6 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x840 JUMP JUMPDEST SWAP1 POP PUSH2 0xCCD PUSH2 0xCC5 DUP3 CALLER PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xD99 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCDA PUSH2 0x8D5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xDA7 JUMPI PUSH2 0xDA7 DUP2 PUSH2 0xDAB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0xCCD SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xE7B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xEA8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xEA8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xEA8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xE8D JUMP JUMPDEST POP PUSH2 0xEB4 SWAP3 SWAP2 POP PUSH2 0xEB8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEB4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xEB9 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE GT 0xE1 SWAP13 0xD8 0x2F SSTORE 0xC SGT 0xE5 0xEE BYTE 0xC2 0xD2 MSTORE8 PUSH7 0xEB398868391573 BYTE 0x4F 0xAE GAS 0xB9 0xD2 0xDB SELFBALANCE SWAP11 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1382:3073:73:-:0;;;1670:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1670:121:73;1054:4:51;2049:46:46;;;;1073:14:51::1;::::0;;;-1:-1:-1;;;;;;1073:14:51;::::1;::::0;1054:4;-1:-1:-1;;;;;1382:3073:73;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":2118}],"3611":[{"length":32,"start":2227}]},"linkReferences":{},"object":"6080604052600436106100d15760003560e01c806357fb83451161007f578063aaabadc511610059578063aaabadc514610304578063d56b6a4a14610319578063e241e489146103cc578063ecc4c5831461040c576100d1565b806357fb83451461024a578063851c1bb3146102915780638d928af8146102ef576100d1565b8063299fd6fc116100b0578063299fd6fc1461017f5780634cfde448146101ab578063550f2f7f14610235576100d1565b8062986fe0146100d65780630943b7b8146100ff57806309d401f91461013d575b600080fd5b3480156100e257600080fd5b506100eb610453565b604080519115158252519081900360200190f35b34801561010b57600080fd5b50610114610474565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561014957600080fd5b5061017d6004803603602081101561016057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610490565b005b34801561018b57600080fd5b5061017d600480360360208110156101a257600080fd5b50351515610505565b3480156101b757600080fd5b506101c061058c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101fa5781810151838201526020016101e2565b50505050905090810190601f1680156102275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024157600080fd5b5061011461063f565b61017d6004803603606081101561026057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169161ffff602082013516916040909101351661065b565b34801561029d57600080fd5b506102dd600480360360208110156102b457600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610840565b60408051918252519081900360200190f35b3480156102fb57600080fd5b506101146108b1565b34801561031057600080fd5b506101146108d5565b34801561032557600080fd5b5061017d6004803603602081101561033c57600080fd5b81019060208101813564010000000081111561035757600080fd5b82018360208201111561036957600080fd5b8035906020019184600183028401116401000000008311171561038b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610955945050505050565b3480156103d857600080fd5b5061017d600480360360208110156103ef57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a0d565b34801561041857600080fd5b5061043a6004803603602081101561042f57600080fd5b503561ffff16610a84565b6040805192835260208301919091528051918290030190f35b60005474010000000000000000000000000000000000000000900460ff1690565b60025473ffffffffffffffffffffffffffffffffffffffff1690565b610498610c87565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917fe8bb344458d00606347f5b2f5b6f6de2a6f0beeb7aa331c6b90549adc7c093c091a250565b61050d610c87565b600080548215157401000000000000000000000000000000000000000081027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790915560408051918252517fc22a8ea88c11878d4bbc93fc8deeaae9120fa8540716f449ba01e0b79a1b020c9181900360200190a150565b60018054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156106355780601f1061060a57610100808354040283529160200191610635565b820191906000526020600020905b81548152906001019060200180831161061857829003601f168201915b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b600061066561063f565b905073ffffffffffffffffffffffffffffffffffffffff81166106e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f6d6e6920766f74696e6720657363726f77206e6f7420736574000000000000604482015290519081900360640190fd5b600280546040517f4a75948900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830190815261ffff8816602484015286821660448401529281166064830181905260a060848401908152600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316156101000201169690960460a4850181905292871695634a7594899534958c958c958c9590949392909160c490910190849080156107fe5780601f106107d3576101008083540402835291602001916107fe565b820191906000526020600020905b8154815290600101906020018083116107e157829003601f168201915b505096505050505050506000604051808303818588803b15801561082157600080fd5b505af1158015610835573d6000803e3d6000fd5b505050505050505050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006108df6108b1565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561092457600080fd5b505afa158015610938573d6000803e3d6000fd5b505050506040513d602081101561094e57600080fd5b5051905090565b61095d610c87565b8051610970906001906020840190610e3a565b507f89eee6f0981b5afc30154f85e504f26bc7b53645844dcb29588946e5cf35d9f4816040518080602001828103825283818151815260200191508051906020019080838360005b838110156109d05781810151838201526020016109b8565b50505050905090810190601f1680156109fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b610a15610c87565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fa7bee2b81c8995421ba22c824cb2b9a80372d577f8220162fe395c089a2782ca90600090a250565b6000806000610a9161063f565b905073ffffffffffffffffffffffffffffffffffffffff8116610b1557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f6d6e6920766f74696e6720657363726f77206e6f7420736574000000000000604482015290519081900360640190fd5b6000546040517f65d092d000000000000000000000000000000000000000000000000000000000815261ffff8616600482019081527401000000000000000000000000000000000000000090920460ff16801515602483015260606044830190815260018054600261010082841615027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909116046064850181905273ffffffffffffffffffffffffffffffffffffffff8716956365d092d0958b9594919260849091019084908015610c2a5780601f10610bff57610100808354040283529160200191610c2a565b820191906000526020600020905b815481529060010190602001808311610c0d57829003601f168201915b5050945050505050604080518083038186803b158015610c4957600080fd5b505afa158015610c5d573d6000803e3d6000fd5b505050506040513d6040811015610c7357600080fd5b508051602090910151909350915050915091565b6000610cb66000357fffffffff0000000000000000000000000000000000000000000000000000000016610840565b9050610ccd610cc58233610cd0565b610191610d99565b50565b6000610cda6108d5565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610d6657600080fd5b505afa158015610d7a573d6000803e3d6000fd5b505050506040513d6020811015610d9057600080fd5b50519392505050565b81610da757610da781610dab565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610ccd917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e7b57805160ff1916838001178555610ea8565b82800160010185558215610ea8579182015b82811115610ea8578251825591602001919060010190610e8d565b50610eb4929150610eb8565b5090565b5b80821115610eb45760008155600101610eb956fea26469706673582212200e11e19cd82f550c13e5ee1ac2d25366eb3988683915731a4fae5ab9d2db479a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD1 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x57FB8345 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x304 JUMPI DUP1 PUSH4 0xD56B6A4A EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0xE241E489 EQ PUSH2 0x3CC JUMPI DUP1 PUSH4 0xECC4C583 EQ PUSH2 0x40C JUMPI PUSH2 0xD1 JUMP JUMPDEST DUP1 PUSH4 0x57FB8345 EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x2EF JUMPI PUSH2 0xD1 JUMP JUMPDEST DUP1 PUSH4 0x299FD6FC GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x299FD6FC EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x4CFDE448 EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0x550F2F7F EQ PUSH2 0x235 JUMPI PUSH2 0xD1 JUMP JUMPDEST DUP1 PUSH3 0x986FE0 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0x943B7B8 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x9D401F9 EQ PUSH2 0x13D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xEB PUSH2 0x453 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x474 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x160 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x490 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x505 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x58C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1FA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x227 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x63F JUMP JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH2 0xFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x65B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x840 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x8B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x8D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x357 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x38B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x955 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFFFF AND PUSH2 0xA84 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x498 PUSH2 0xC87 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xE8BB344458D00606347F5B2F5B6F6DE2A6F0BEEB7AA331C6B90549ADC7C093C0 SWAP2 LOG2 POP JUMP JUMPDEST PUSH2 0x50D PUSH2 0xC87 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP3 ISZERO ISZERO PUSH21 0x10000000000000000000000000000000000000000 DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0xC22A8EA88C11878D4BBC93FC8DEEAAE9120FA8540716F449BA01E0B79A1B020C SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x635 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x60A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x635 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x618 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x665 PUSH2 0x63F JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x6E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6D6E6920766F74696E6720657363726F77206E6F7420736574000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x4A75948900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD SWAP1 DUP2 MSTORE PUSH2 0xFFFF DUP9 AND PUSH1 0x24 DUP5 ADD MSTORE DUP7 DUP3 AND PUSH1 0x44 DUP5 ADD MSTORE SWAP3 DUP2 AND PUSH1 0x64 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP4 AND ISZERO PUSH2 0x100 MUL ADD AND SWAP7 SWAP1 SWAP7 DIV PUSH1 0xA4 DUP6 ADD DUP2 SWAP1 MSTORE SWAP3 DUP8 AND SWAP6 PUSH4 0x4A759489 SWAP6 CALLVALUE SWAP6 DUP13 SWAP6 DUP13 SWAP6 DUP13 SWAP6 SWAP1 SWAP5 SWAP4 SWAP3 SWAP1 SWAP2 PUSH1 0xC4 SWAP1 SWAP2 ADD SWAP1 DUP5 SWAP1 DUP1 ISZERO PUSH2 0x7FE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7FE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7E1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x835 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8DF PUSH2 0x8B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x938 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x94E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x95D PUSH2 0xC87 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x970 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xE3A JUMP JUMPDEST POP PUSH32 0x89EEE6F0981B5AFC30154F85E504F26BC7B53645844DCB29588946E5CF35D9F4 DUP2 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9D0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9B8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x9FD JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xA15 PUSH2 0xC87 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA7BEE2B81C8995421BA22C824CB2B9A80372D577F8220162FE395C089A2782CA SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA91 PUSH2 0x63F JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xB15 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6D6E6920766F74696E6720657363726F77206E6F7420736574000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x65D092D000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0xFFFF DUP7 AND PUSH1 0x4 DUP3 ADD SWAP1 DUP2 MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH1 0xFF AND DUP1 ISZERO ISZERO PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x44 DUP4 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0x2 PUSH2 0x100 DUP3 DUP5 AND ISZERO MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP2 AND DIV PUSH1 0x64 DUP6 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP6 PUSH4 0x65D092D0 SWAP6 DUP12 SWAP6 SWAP5 SWAP2 SWAP3 PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 DUP5 SWAP1 DUP1 ISZERO PUSH2 0xC2A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xBFF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC2A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC0D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP5 POP POP POP POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP4 POP SWAP2 POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB6 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x840 JUMP JUMPDEST SWAP1 POP PUSH2 0xCCD PUSH2 0xCC5 DUP3 CALLER PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xD99 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCDA PUSH2 0x8D5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xDA7 JUMPI PUSH2 0xDA7 DUP2 PUSH2 0xDAB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0xCCD SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xE7B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xEA8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xEA8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xEA8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xE8D JUMP JUMPDEST POP PUSH2 0xEB4 SWAP3 SWAP2 POP PUSH2 0xEB8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEB4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xEB9 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE GT 0xE1 SWAP13 0xD8 0x2F SSTORE 0xC SGT 0xE5 0xEE BYTE 0xC2 0xD2 MSTORE8 PUSH7 0xEB398868391573 BYTE 0x4F 0xAE GAS 0xB9 0xD2 0xDB SELFBALANCE SWAP11 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1382:3073:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2030:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2351:116;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3561:205;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3561:205:73;;;;:::i;:::-;;3825:134;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3825:134:73;;;;:::i;2180:112::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1850:121;;;;;;;;;;;;;:::i;2985:517::-;;;;;;;;;;;;;;;;-1:-1:-1;2985:517:73;;;;;;;;;;;;;;;;;;;;:::i;2607:430:46:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:46;;;;:::i;:::-;;;;;;;;;;;;;;;;1158:79:51;;;;;;;;;;;;;:::i;1297:109::-;;;;;;;;;;;;;:::i;4018:182:73:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4018:182:73;;-1:-1:-1;4018:182:73;;-1:-1:-1;;;;;4018:182:73:i;4259:194::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4259:194:73;;;;:::i;2518:416::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2518:416:73;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2030:91;2084:4;2107:7;;;;;;;2030:91::o;2351:116::-;2442:18;;;;2351:116;:::o;3561:205::-;2276:21:46;:19;:21::i;:::-;3667:17:73::1;:36:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;3718:41:::1;::::0;3667:36;;3718:41:::1;::::0;::::1;3561:205:::0;:::o;3825:134::-;2276:21:46;:19;:21::i;:::-;3899:7:73::1;:16:::0;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;3930:22:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;3825:134:::0;:::o;2180:112::-;2271:14;2264:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2240:12;;2264:21;;2271:14;;2264:21;;2271:14;2264:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:112;:::o;1850:121::-;1911:17;1947;;;1850:121;:::o;2985:517::-;3143:34;3180:21;:19;:21::i;:::-;3143:58;-1:-1:-1;3219:40:73;;;3211:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3439:18;;;3301:194;;;;;:32;:194;;;;;;;;;;;;;;;;;;;;;;;3439:18;;;3301:194;;;;;;;;;;;;;3439:18;3301:194;;;;;;;3439:18;3301:194;;;;;;;;;;;;;:32;;;;;;3342:9;;3367:5;;3386:11;;3411:14;;3439:18;;;3301:194;;;;;;;;3439:18;;3301:194;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2985:517;;;;:::o;2607:430:46:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;1297:109::-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:51;;-1:-1:-1;1297:109:51;:::o;4018:182:73:-;2276:21:46;:19;:21::i;:::-;4113:30:73;;::::1;::::0;:14:::1;::::0;:30:::1;::::0;::::1;::::0;::::1;:::i;:::-;;4158:35;4179:13;4158:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4018:182:::0;:::o;4259:194::-;2276:21:46;:19;:21::i;:::-;4355:18:73::1;:35:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;4405:41:::1;::::0;::::1;::::0;-1:-1:-1;;4405:41:73::1;4259:194:::0;:::o;2518:416::-;2635:17;2654:14;2684:34;2721:21;:19;:21::i;:::-;2684:58;-1:-1:-1;2760:40:73;;;2752:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2903:7;;2849:78;;;;;;;;;;;;;;2903:7;;;;;;2849:78;;;;;;;;;;;;;;2912:14;2849:78;;;2903:7;2849:78;;;;;;;;;;;;;;;;;:40;;;;;;:78;;2903:7;2849:78;;;;;;;2912:14;;2849:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2849:78:73;;;;;;;;;-1:-1:-1;2849:78:73;-1:-1:-1;;2518:416:73;;;:::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;:::-;2420:181;:::o;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1523:60:51;;1412:178;-1:-1:-1;;;1412:178:51:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;"},"methodIdentifiers":{"estimateSendUserBalance(uint16)":"ecc4c583","getActionId(bytes4)":"851c1bb3","getAdapterParams()":"4cfde448","getAuthorizer()":"aaabadc5","getOmniVotingEscrow()":"550f2f7f","getUseZero()":"00986fe0","getVault()":"8d928af8","getZeroPaymentAddress()":"0943b7b8","sendUserBalance(address,uint16,address)":"57fb8345","setAdapterParams(bytes)":"d56b6a4a","setOmniVotingEscrow(address)":"09d401f9","setUseZero(bool)":"299fd6fc","setZeroPaymentAddress(address)":"e241e489"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newAdapterParams\",\"type\":\"bytes\"}],\"name\":\"AdapterParamsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IOmniVotingEscrow\",\"name\":\"newOmniVotingEscrow\",\"type\":\"address\"}],\"name\":\"OmniVotingEscrowUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"newUseZero\",\"type\":\"bool\"}],\"name\":\"UseZeroUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newZeroPaymentAddress\",\"type\":\"address\"}],\"name\":\"ZeroPaymentAddressUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"}],\"name\":\"estimateSendUserBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zroFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAdapterParams\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOmniVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IOmniVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUseZero\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getZeroPaymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"},{\"internalType\":\"address payable\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"sendUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adapterParams\",\"type\":\"bytes\"}],\"name\":\"setAdapterParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IOmniVotingEscrow\",\"name\":\"omniVotingEscrow\",\"type\":\"address\"}],\"name\":\"setOmniVotingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"useZro\",\"type\":\"bool\"}],\"name\":\"setUseZero\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"paymentAddress\",\"type\":\"address\"}],\"name\":\"setZeroPaymentAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Provides the remapper a stable interface to forward requests to the omni voting escrow, while allowing to configure optional parameters and even swap the target omni voting escrow contract.\",\"kind\":\"dev\",\"methods\":{\"estimateSendUserBalance(uint16)\":{\"details\":\"Reverts if `OmniVotingEscrow` is not set.\",\"params\":{\"_dstChainId\":\"- Destination chain ID.\"},\"returns\":{\"nativeFee\":\"- Native fee reported by the omni voting escrow.\",\"zroFee\":\"- Layer zero fee reported by the omni voting escrow.\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"sendUserBalance(address,uint16,address)\":{\"details\":\"Reverts if `OmniVotingEscrow` is not set.\",\"params\":{\"_dstChainId\":\"- Destination chain ID.\",\"_refundAddress\":\"- Address where to return excess ETH.\",\"_user\":\"- User to bridge the balance from.\"}},\"setAdapterParams(bytes)\":{\"details\":\"Emits `AdapterParamsUpdated` event.\"},\"setOmniVotingEscrow(address)\":{\"details\":\"This step is required before creating any remapping in the `VotingEscrowRemapper`. Omni voting escrow is not set in the constructor to avoid circular dependencies. Emits `OmniVotingEscrowUpdated` event.\",\"params\":{\"omniVotingEscrow\":\"- Address of the omni voting escrow contract.\"}},\"setUseZero(bool)\":{\"details\":\"Emits `UseZeroUpdated` event.\"},\"setZeroPaymentAddress(address)\":{\"details\":\"Emits `ZeroPaymentAddressUpdated` event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"estimateSendUserBalance(uint16)\":{\"notice\":\"Forwards `estimateSendUserBalance` call to omni voting escrow.\"},\"getAdapterParams()\":{\"notice\":\"Returns `_adapterParams` parameter used in `estimateSendUserBalance` and `sendUserBalance`.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getOmniVotingEscrow()\":{\"notice\":\"Returns Omni Voting Escrow contract address, which is the gateway to bridge veBAL balances to L2s.\"},\"getUseZero()\":{\"notice\":\"Returns `_useZro` parameter used in `estimateSendUserBalance`.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"getZeroPaymentAddress()\":{\"notice\":\"Returns `_zroPaymentAddress` parameter used in `sendUserBalance`.\"},\"sendUserBalance(address,uint16,address)\":{\"notice\":\"Forwards `sendUserBalance` call to omni voting escrow.\"},\"setAdapterParams(bytes)\":{\"notice\":\"Sets `_adapterParams` parameter for `estimateSendUserBalance` and `sendUserBalance` when forwarding calls.\"},\"setOmniVotingEscrow(address)\":{\"notice\":\"Sets omni voting escrow address.\"},\"setUseZero(bool)\":{\"notice\":\"Sets `_useZro` parameter for `estimateSendUserBalance` when forwarding calls.\"},\"setZeroPaymentAddress(address)\":{\"notice\":\"Sets `_zroPaymentAddress` parameter for `sendUserBalance` when forwarding calls.\"}},\"notice\":\"Adaptor contract between `VotingEscrowRemapper` and `OmniVotingEscrow`.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/OmniVotingEscrowAdaptor.sol\":\"OmniVotingEscrowAdaptor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol\":{\"keccak256\":\"0xd15a09a7f4b4cca895c325a5d4f5469d368ea95fcf81139c6f9b7a6ff98ebf58\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f5ee21f5ff34cf4f4fb65bbef37229a84cce97e7ae2c46f26b6b5356db04fa56\",\"dweb:/ipfs/Qmc5Lukprx5rxNq4om9uyJR1jiNVFMxQxbWQrpGuZhGtsW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol\":{\"keccak256\":\"0xd3a86f1eb7aadba25221c8935ae888816487ea6ba4d04c3a5f4789d7b061ac90\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ca65ef1eebc274a1b28abee0d1514f4c18334583c13e39672a80201f0481304f\",\"dweb:/ipfs/QmSs5kDN8rGfbCmkQihP1uUbTtAc9wfSzSuPTpp6dErVWk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptorSettings.sol\":{\"keccak256\":\"0x3d1316d3c24f099fb364359085778d5e520dc1fd5377b0e2220dfbc00e179ae2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a1545ec71c26156470189d49ee027d265c67f4bcedab5dfc1e52ae1eb4d6b4e0\",\"dweb:/ipfs/QmNfBM6JAXbJYbzfBMb6mpuqvDiHZbQhDiyU1gXvzCzcb6\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"contracts/OmniVotingEscrowAdaptor.sol\":{\"keccak256\":\"0xaf616ff58f109bcda23e13db1ee9a8602582e67c5ebd902a14918b6c62154312\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4d8273312461e7b8cf274873a7639b7edd1d3e4c891856a4715b46d46f5cfcd8\",\"dweb:/ipfs/Qmafyb1xuUNe3xbUZjuidiioKSgEurHXz7Te8VWHL9cW63\"]}},\"version\":1}"}},"contracts/SmartWalletChecker.sol":{"SmartWalletChecker":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"address[]","name":"initialAllowedAddresses","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"}],"name":"ContractAddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"}],"name":"ContractAddressRemoved","type":"event"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"allowlistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"check","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"denylistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getAllowlistedAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllowlistedAddressesLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b50604051610bed380380610bed8339818101604052604081101561003357600080fd5b81516020830180516040519294929383019291908464010000000082111561005a57600080fd5b90830190602082018581111561006f57600080fd5b825186602082028301116401000000008211171561008c57600080fd5b82525081516020918201928201910280838360005b838110156100b95781810151838201526020016100a1565b505050509190910160405250503060805250506001600160601b0319606083901b1660a052805160005b818110156101155761010d8382815181106100fa57fe5b602002602001015161011e60201b60201c565b6001016100e3565b5050505061024c565b6101368160006101c660201b61040d1790919060201c565b610187576040805162461bcd60e51b815260206004820152601b60248201527f4164647265737320616c726561647920616c6c6f776c69737465640000000000604482015290519081900360640190fd5b604080516001600160a01b038316815290517fc1fafd2633d2190fbc0bd1e0e993dc44495d77bd7a5bc0a4951b5edb0d58254e9181900360200190a150565b60006101d2838361022b565b61022157508154600180820184556000848152602080822090930180546001600160a01b0319166001600160a01b03861690811790915585549082528286019093526040902091909155610225565b5060005b92915050565b6001600160a01b031660009081526001919091016020526040902054151590565b60805160a05160601c61097b61027260003980610270525080610203525061097b6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063aaabadc51161005b578063aaabadc514610161578063c23697a814610169578063c7abf7e2146101b0578063f191aad0146101b857610088565b80632ee7ca641461008d578063851c1bb3146100d35780638d928af814610124578063a5ee4e711461012c575b600080fd5b6100aa600480360360208110156100a357600080fd5b50356101eb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610112600480360360208110156100e957600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166101fd565b60408051918252519081900360200190f35b6100aa61026e565b61015f6004803603602081101561014257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610292565b005b6100aa61035c565b61019c6004803603602081101561017f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103dc565b604080519115158252519081900360200190f35b6101126103e8565b61015f600480360360208110156101ce57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103f9565b60006101f78183610496565b92915050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b61029a6104b9565b6102a56000826104ff565b61031057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f41646472657373206973206e6f7420616c6c6f776c6973746564000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f6b7e0fe40ab6dde83349106ff5b5ce7689d5912a704a21a972034191d182de329181900360200190a150565b600061036661026e565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ab57600080fd5b505afa1580156103bf573d6000803e3d6000fd5b505050506040513d60208110156103d557600080fd5b5051905090565b60006101f781836106ad565b60006103f460006106db565b905090565b6104016104b9565b61040a816106df565b50565b600061041983836106ad565b61048d57508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155855490825282860190935260409020919091556101f7565b50600092915050565b81546000906104a890831060646107a1565b6104b283836107b3565b9392505050565b60006104e86000357fffffffff00000000000000000000000000000000000000000000000000000000166101fd565b905061040a6104f782336107ed565b6101916107a1565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205480156106a35783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808301910180821461060857600086600001828154811061056d57fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff909116915081908890859081106105a357fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b855486908061061357fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff871682526001888101909152604082209190915593506101f792505050565b60009150506101f7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b5490565b6106ea60008261040d565b61075557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4164647265737320616c726561647920616c6c6f776c69737465640000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517fc1fafd2633d2190fbc0bd1e0e993dc44495d77bd7a5bc0a4951b5edb0d58254e9181900360200190a150565b816107af576107af816108b6565b5050565b60008260000182815481106107c457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b60006107f761035c565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561088357600080fd5b505afa158015610897573d6000803e3d6000fd5b505050506040513d60208110156108ad57600080fd5b50519392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261040a917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220d6174f8f987983c5601b2d84347ab4ce592636d31d307eac33051f8395aef5b164736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xBED CODESIZE SUB DUP1 PUSH2 0xBED DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 MSTORE POP POP ADDRESS PUSH1 0x80 MSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0xA0 MSTORE DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH2 0x10D DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xFA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x11E PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xE3 JUMP JUMPDEST POP POP POP POP PUSH2 0x24C JUMP JUMPDEST PUSH2 0x136 DUP2 PUSH1 0x0 PUSH2 0x1C6 PUSH1 0x20 SHL PUSH2 0x40D OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x187 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4164647265737320616C726561647920616C6C6F776C69737465640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xC1FAFD2633D2190FBC0BD1E0E993DC44495D77BD7A5BC0A4951B5EDB0D58254E SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D2 DUP4 DUP4 PUSH2 0x22B JUMP JUMPDEST PUSH2 0x221 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x225 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x97B PUSH2 0x272 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x270 MSTORE POP DUP1 PUSH2 0x203 MSTORE POP PUSH2 0x97B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0xC23697A8 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0xC7ABF7E2 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xF191AAD0 EQ PUSH2 0x1B8 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x2EE7CA64 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0xA5EE4E71 EQ PUSH2 0x12C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAA PUSH2 0x26E JUMP JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x292 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH2 0x35C JUMP JUMPDEST PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3DC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH2 0x3E8 JUMP JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3F9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F7 DUP2 DUP4 PUSH2 0x496 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x29A PUSH2 0x4B9 JUMP JUMPDEST PUSH2 0x2A5 PUSH1 0x0 DUP3 PUSH2 0x4FF JUMP JUMPDEST PUSH2 0x310 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206973206E6F7420616C6C6F776C6973746564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x6B7E0FE40AB6DDE83349106FF5B5CE7689D5912A704A21A972034191D182DE32 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x366 PUSH2 0x26E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F7 DUP2 DUP4 PUSH2 0x6AD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F4 PUSH1 0x0 PUSH2 0x6DB JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x401 PUSH2 0x4B9 JUMP JUMPDEST PUSH2 0x40A DUP2 PUSH2 0x6DF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x419 DUP4 DUP4 PUSH2 0x6AD JUMP JUMPDEST PUSH2 0x48D JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1F7 JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x4A8 SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0x4B2 DUP4 DUP4 PUSH2 0x7B3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E8 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1FD JUMP JUMPDEST SWAP1 POP PUSH2 0x40A PUSH2 0x4F7 DUP3 CALLER PUSH2 0x7ED JUMP JUMPDEST PUSH2 0x191 PUSH2 0x7A1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x6A3 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x608 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x56D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x5A3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x613 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x1F7 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x1F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6EA PUSH1 0x0 DUP3 PUSH2 0x40D JUMP JUMPDEST PUSH2 0x755 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4164647265737320616C726561647920616C6C6F776C69737465640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xC1FAFD2633D2190FBC0BD1E0E993DC44495D77BD7A5BC0A4951B5EDB0D58254E SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP2 PUSH2 0x7AF JUMPI PUSH2 0x7AF DUP2 PUSH2 0x8B6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x7C4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F7 PUSH2 0x35C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x897 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x40A SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD6 OR 0x4F DUP16 SWAP9 PUSH26 0x83C5601B2D84347AB4CE592636D31D307EAC33051F8395AEF5B1 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1044:1649:74:-:0;;;1359:297;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1359:297:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1359:297:74;;;;;;-1:-1:-1;;1054:4:51;2049:46:46;;-1:-1:-1;;;;;;;;1073:14:51::1;::::0;;;;::::1;::::0;1494:30:74;;1030:31:51;1534:116:74::1;1558:15;1554:1;:19;1534:116;;;1594:45;1612:23;1636:1;1612:26;;;;;;;;;;;;;;1594:17;;;:45;;:::i;:::-;1575:3;;1534:116;;;;1359:297;::::0;;1044:1649;;2479:212;2558:42;2584:15;2558:21;:25;;;;;;:42;;;;:::i;:::-;2550:82;;;;;-1:-1:-1;;;2550:82:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;2647:37;;;-1:-1:-1;;;;;2647:37:74;;;;;;;;;;;;;;;2479:212;:::o;1851:410:62:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:62;;;;;;;;-1:-1:-1;1978:23:62;;;;;;;;;;;;-1:-1:-1;;;;;;1978:23:62;-1:-1:-1;;;;;1978:23:62;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:62;1937:318;1851:410;;;;:::o;3977:134::-;-1:-1:-1;;;;;4080:19:62;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;1044:1649:74:-;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":515}],"3611":[{"length":32,"start":624}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c8063aaabadc51161005b578063aaabadc514610161578063c23697a814610169578063c7abf7e2146101b0578063f191aad0146101b857610088565b80632ee7ca641461008d578063851c1bb3146100d35780638d928af814610124578063a5ee4e711461012c575b600080fd5b6100aa600480360360208110156100a357600080fd5b50356101eb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610112600480360360208110156100e957600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166101fd565b60408051918252519081900360200190f35b6100aa61026e565b61015f6004803603602081101561014257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610292565b005b6100aa61035c565b61019c6004803603602081101561017f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103dc565b604080519115158252519081900360200190f35b6101126103e8565b61015f600480360360208110156101ce57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103f9565b60006101f78183610496565b92915050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b61029a6104b9565b6102a56000826104ff565b61031057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f41646472657373206973206e6f7420616c6c6f776c6973746564000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f6b7e0fe40ab6dde83349106ff5b5ce7689d5912a704a21a972034191d182de329181900360200190a150565b600061036661026e565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ab57600080fd5b505afa1580156103bf573d6000803e3d6000fd5b505050506040513d60208110156103d557600080fd5b5051905090565b60006101f781836106ad565b60006103f460006106db565b905090565b6104016104b9565b61040a816106df565b50565b600061041983836106ad565b61048d57508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155855490825282860190935260409020919091556101f7565b50600092915050565b81546000906104a890831060646107a1565b6104b283836107b3565b9392505050565b60006104e86000357fffffffff00000000000000000000000000000000000000000000000000000000166101fd565b905061040a6104f782336107ed565b6101916107a1565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205480156106a35783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808301910180821461060857600086600001828154811061056d57fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff909116915081908890859081106105a357fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b855486908061061357fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff871682526001888101909152604082209190915593506101f792505050565b60009150506101f7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b5490565b6106ea60008261040d565b61075557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4164647265737320616c726561647920616c6c6f776c69737465640000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517fc1fafd2633d2190fbc0bd1e0e993dc44495d77bd7a5bc0a4951b5edb0d58254e9181900360200190a150565b816107af576107af816108b6565b5050565b60008260000182815481106107c457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b60006107f761035c565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561088357600080fd5b505afa158015610897573d6000803e3d6000fd5b505050506040513d60208110156108ad57600080fd5b50519392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261040a917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220d6174f8f987983c5601b2d84347ab4ce592636d31d307eac33051f8395aef5b164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0xC23697A8 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0xC7ABF7E2 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xF191AAD0 EQ PUSH2 0x1B8 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x2EE7CA64 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0xA5EE4E71 EQ PUSH2 0x12C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAA PUSH2 0x26E JUMP JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x292 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH2 0x35C JUMP JUMPDEST PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3DC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH2 0x3E8 JUMP JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3F9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F7 DUP2 DUP4 PUSH2 0x496 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x29A PUSH2 0x4B9 JUMP JUMPDEST PUSH2 0x2A5 PUSH1 0x0 DUP3 PUSH2 0x4FF JUMP JUMPDEST PUSH2 0x310 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206973206E6F7420616C6C6F776C6973746564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x6B7E0FE40AB6DDE83349106FF5B5CE7689D5912A704A21A972034191D182DE32 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x366 PUSH2 0x26E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F7 DUP2 DUP4 PUSH2 0x6AD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F4 PUSH1 0x0 PUSH2 0x6DB JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x401 PUSH2 0x4B9 JUMP JUMPDEST PUSH2 0x40A DUP2 PUSH2 0x6DF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x419 DUP4 DUP4 PUSH2 0x6AD JUMP JUMPDEST PUSH2 0x48D JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1F7 JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x4A8 SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0x4B2 DUP4 DUP4 PUSH2 0x7B3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E8 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1FD JUMP JUMPDEST SWAP1 POP PUSH2 0x40A PUSH2 0x4F7 DUP3 CALLER PUSH2 0x7ED JUMP JUMPDEST PUSH2 0x191 PUSH2 0x7A1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x6A3 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x608 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x56D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x5A3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x613 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x1F7 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x1F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6EA PUSH1 0x0 DUP3 PUSH2 0x40D JUMP JUMPDEST PUSH2 0x755 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4164647265737320616C726561647920616C6C6F776C69737465640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xC1FAFD2633D2190FBC0BD1E0E993DC44495D77BD7A5BC0A4951B5EDB0D58254E SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP2 PUSH2 0x7AF JUMPI PUSH2 0x7AF DUP2 PUSH2 0x8B6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x7C4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F7 PUSH2 0x35C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x897 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x40A SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD6 OR 0x4F DUP16 SWAP9 PUSH26 0x83C5601B2D84347AB4CE592636D31D307EAC33051F8395AEF5B1 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1044:1649:74:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1817:133;;;;;;;;;;;;;;;;-1:-1:-1;1817:133:74;;:::i;:::-;;;;;;;;;;;;;;;;;;;2607:430:46;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:46;;;;:::i;:::-;;;;;;;;;;;;;;;;1158:79:51;;;:::i;2219:227:74:-;;;;;;;;;;;;;;;;-1:-1:-1;2219:227:74;;;;:::i;:::-;;1297:109:51;;;:::i;1662:149:74:-;;;;;;;;;;;;;;;;-1:-1:-1;1662:149:74;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1956:127;;;:::i;2089:124::-;;;;;;;;;;;;;;;;-1:-1:-1;2089:124:74;;;;:::i;1817:133::-;1886:7;1912:31;1886:7;1937:5;1912:24;:31::i;:::-;1905:38;1817:133;-1:-1:-1;;1817:133:74:o;2607:430:46:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;2219:227:74:-;2276:21:46;:19;:21::i;:::-;2309:45:74::1;:21;2338:15:::0;2309:28:::1;:45::i;:::-;2301:84;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;2400:39;::::0;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;2219:227:::0;:::o;1297:109:51:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:51;;-1:-1:-1;1297:109:51;:::o;1662:149:74:-;1734:4;1757:47;1734:4;1788:15;1757:30;:47::i;1956:127::-;2020:7;2046:30;:21;:28;:30::i;:::-;2039:37;;1956:127;:::o;2089:124::-;2276:21:46;:19;:21::i;:::-;2172:34:74::1;2190:15;2172:17;:34::i;:::-;2089:124:::0;:::o;1851:410:62:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:62;;;;;;;;-1:-1:-1;1978:23:62;;;;;;;;;;;;;;;;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:62;1851:410;;;;:::o;4648:199::-;4750:18;;4722:7;;4741:58;;4750:26;-1:-1:-1;5662:3:31;4741:8:62;:58::i;:::-;4816:24;4829:3;4834:5;4816:12;:24::i;:::-;4809:31;4648:199;-1:-1:-1;;;4648:199:62:o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;2429:1467:62:-;2639:19;;;2502:4;2639:19;;;:12;;;:19;;;;;;2673:15;;2669:1221;;3114:18;;3066:14;;;;;3114:22;3236:26;;;3232:389;;3282:17;3302:3;:11;;3314:9;3302:22;;;;;;;;;;;;;;;;;;3424:26;;3302:22;;;;;-1:-1:-1;3302:22:62;;3424:3;;3436:13;;3424:26;;;;;;;;;;;;;;;;;;:38;;;;;;;;;;;3536:23;;;;;;-1:-1:-1;3536:12:62;;;:23;;;;;;3562:17;;;3536:43;;3232:389;3699:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3791:19;;;;3699:17;3791:12;;;:19;;;;;;3784:26;;;;3699:17;-1:-1:-1;3825:11:62;;-1:-1:-1;;;3825:11:62;2669:1221;3874:5;3867:12;;;;;3977:134;4080:19;;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;4192:114::-;4281:18;;4192:114::o;2479:212:74:-;2558:42;:21;2584:15;2558:25;:42::i;:::-;2550:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2647:37;;;;;;;;;;;;;;;;;;;2479:212;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;5212:135:62:-;5296:7;5322:3;:11;;5334:5;5322:18;;;;;;;;;;;;;;;;;;;;;5212:135;-1:-1:-1;;;5212:135:62:o;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1523:60:51;;1412:178;-1:-1:-1;;;1412:178:51:o;1459:126:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"allowlistAddress(address)":"f191aad0","check(address)":"c23697a8","denylistAddress(address)":"a5ee4e71","getActionId(bytes4)":"851c1bb3","getAllowlistedAddress(uint256)":"2ee7ca64","getAllowlistedAddressesLength()":"c7abf7e2","getAuthorizer()":"aaabadc5","getVault()":"8d928af8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"initialAllowedAddresses\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"ContractAddressAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"ContractAddressRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"allowlistAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"check\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"denylistAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getAllowlistedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllowlistedAddressesLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SmartWalletChecker.sol\":\"SmartWalletChecker\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"contracts/SmartWalletChecker.sol\":{\"keccak256\":\"0x5ec19305a257fa4563b087f7b06f87cc365f36ea3793ddb5c77d3db024fd6658\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://13c187398fdcdfb16491ea6c1a773d9ab83d4c28986d650008619b2f8315b8ea\",\"dweb:/ipfs/QmXojnLyB7Aq9aFaEK8NLueNPMkK88ALGSg9U6GkjTcByu\"]}},\"version\":1}"}},"contracts/VotingEscrowDelegationProxy.sol":{"VotingEscrowDelegationProxy":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IERC20","name":"votingEscrow","type":"address"},{"internalType":"contract IVeDelegation","name":"delegation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newImplementation","type":"address"}],"name":"DelegationImplementationUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"adjustedBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"adjusted_balance_of","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDelegationImplementation","outputs":[{"internalType":"contract IVeDelegation","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IVeDelegation","name":"delegation","type":"address"}],"name":"setDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e060405234801561001057600080fd5b506040516109b93803806109b98339818101604052606081101561003357600080fd5b5080516020820151604090920151306080819052606083811b6001600160601b031990811660a0529085901b1660c052600080546001600160a01b0319166001600160a01b039384161781559093928216929190911690610902906100b79039806101d7528061021b52806105f85250806104285250806103bb52506109026000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063851c1bb311610076578063aaabadc51161005b578063aaabadc51461019a578063bbf7408a1461010e578063e6b3e704146101a2576100be565b8063851c1bb3146101535780638d928af814610192576100be565b806325798418116100a7578063257984181461010e57806363408a90146101415780636448a3ab14610149576100be565b806308b0308a146100c357806318160ddd146100f4575b600080fd5b6100cb6101d5565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100fc6101fa565b60408051918252519081900360200190f35b6100fc6004803603602081101561012457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661032c565b6100cb61033f565b61015161035b565b005b6100fc6004803603602081101561016957600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166103b5565b6100cb610426565b6100cb61044a565b610151600480360360208110156101b857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104ca565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b6000805473ffffffffffffffffffffffffffffffffffffffff16806102b4577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027f57600080fd5b505afa158015610293573d6000803e3d6000fd5b505050506040513d60208110156102a957600080fd5b505191506101f79050565b8073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102fa57600080fd5b505afa15801561030e573d6000803e3d6000fd5b505050506040513d602081101561032457600080fd5b505191505090565b6000610337826105d7565b90505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b61036361074c565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556040517fb2f6d9cc189e4fc02519ab5ba6d9455bedc32091e375e8a6383ed45f40653e74908290a2565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610454610426565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049957600080fd5b505afa1580156104ad573d6000803e3d6000fd5b505050506040513d60208110156104c357600080fd5b5051905090565b6104d261074c565b604080517fbbf7408a000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff83169163bbf7408a916024808301926020929190829003018186803b15801561053e57600080fd5b505afa158015610552573d6000803e3d6000fd5b505050506040513d602081101561056857600080fd5b5050600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917fb2f6d9cc189e4fc02519ab5ba6d9455bedc32091e375e8a6383ed45f40653e7491a250565b6000805473ffffffffffffffffffffffffffffffffffffffff16806106b2577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561067d57600080fd5b505afa158015610691573d6000803e3d6000fd5b505050506040513d60208110156106a757600080fd5b5051915061033a9050565b8073ffffffffffffffffffffffffffffffffffffffff1663bbf7408a846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561071957600080fd5b505afa15801561072d573d6000803e3d6000fd5b505050506040513d602081101561074357600080fd5b50519392505050565b600061077b6000357fffffffff00000000000000000000000000000000000000000000000000000000166103b5565b905061079261078a8233610795565b61019161082b565b50565b600061079f61044a565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561071957600080fd5b81610839576108398161083d565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610792917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220f600a9a29fd20890b9dedaf51147513c68cfb43f9a689dd2e86f716c14531aff64736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x9B9 CODESIZE SUB DUP1 PUSH2 0x9B9 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD ADDRESS PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH1 0x60 DUP4 DUP2 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0xA0 MSTORE SWAP1 DUP6 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND OR DUP2 SSTORE SWAP1 SWAP4 SWAP3 DUP3 AND SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH2 0x902 SWAP1 PUSH2 0xB7 SWAP1 CODECOPY DUP1 PUSH2 0x1D7 MSTORE DUP1 PUSH2 0x21B MSTORE DUP1 PUSH2 0x5F8 MSTORE POP DUP1 PUSH2 0x428 MSTORE POP DUP1 PUSH2 0x3BB MSTORE POP PUSH2 0x902 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xBBF7408A EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0xE6B3E704 EQ PUSH2 0x1A2 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x192 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x25798418 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x25798418 EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0x63408A90 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0x6448A3AB EQ PUSH2 0x149 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xF4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB PUSH2 0x1D5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFC PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x32C JUMP JUMPDEST PUSH2 0xCB PUSH2 0x33F JUMP JUMPDEST PUSH2 0x151 PUSH2 0x35B JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x3B5 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x426 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x44A JUMP JUMPDEST PUSH2 0x151 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4CA JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x2B4 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x293 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH2 0x1F7 SWAP1 POP JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x337 DUP3 PUSH2 0x5D7 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x363 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xB2F6D9CC189E4FC02519AB5BA6D9455BEDC32091E375E8A6383ED45F40653E74 SWAP1 DUP3 SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x454 PUSH2 0x426 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x4D2 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xBBF7408A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0xBBF7408A SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x552 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xB2F6D9CC189E4FC02519AB5BA6D9455BEDC32091E375E8A6383ED45F40653E74 SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x6B2 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x691 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH2 0x33A SWAP1 POP JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBBF7408A DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x72D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77B PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x3B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x792 PUSH2 0x78A DUP3 CALLER PUSH2 0x795 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x82B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79F PUSH2 0x44A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x839 JUMPI PUSH2 0x839 DUP2 PUSH2 0x83D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x792 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 STOP 0xA9 LOG2 SWAP16 0xD2 ADDMOD SWAP1 0xB9 0xDE 0xDA CREATE2 GT SELFBALANCE MLOAD EXTCODECOPY PUSH9 0xCFB43F9A689DD2E86F PUSH18 0x6C14531AFF64736F6C634300070100330000 ","sourceMap":"954:2786:75:-:0;;;1187:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1187:213:75;;;;;;;;;;;1054:4:51;2049:46:46;;;;1187:213:75;1073:14:51;;;-1:-1:-1;;;;;;1073:14:51;;;::::1;::::0;1331:28:75;;;;;::::1;::::0;1030:31:51;1369:24:75;;-1:-1:-1;;;;;;1369:24:75::1;-1:-1:-1::0;;;;;1369:24:75;;::::1;;::::0;;1054:4:51;;954:2786:75;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":955}],"3611":[{"length":32,"start":1064}],"10023":[{"length":32,"start":471},{"length":32,"start":539},{"length":32,"start":1528}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100be5760003560e01c8063851c1bb311610076578063aaabadc51161005b578063aaabadc51461019a578063bbf7408a1461010e578063e6b3e704146101a2576100be565b8063851c1bb3146101535780638d928af814610192576100be565b806325798418116100a7578063257984181461010e57806363408a90146101415780636448a3ab14610149576100be565b806308b0308a146100c357806318160ddd146100f4575b600080fd5b6100cb6101d5565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100fc6101fa565b60408051918252519081900360200190f35b6100fc6004803603602081101561012457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661032c565b6100cb61033f565b61015161035b565b005b6100fc6004803603602081101561016957600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166103b5565b6100cb610426565b6100cb61044a565b610151600480360360208110156101b857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104ca565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b6000805473ffffffffffffffffffffffffffffffffffffffff16806102b4577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027f57600080fd5b505afa158015610293573d6000803e3d6000fd5b505050506040513d60208110156102a957600080fd5b505191506101f79050565b8073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102fa57600080fd5b505afa15801561030e573d6000803e3d6000fd5b505050506040513d602081101561032457600080fd5b505191505090565b6000610337826105d7565b90505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b61036361074c565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556040517fb2f6d9cc189e4fc02519ab5ba6d9455bedc32091e375e8a6383ed45f40653e74908290a2565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610454610426565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049957600080fd5b505afa1580156104ad573d6000803e3d6000fd5b505050506040513d60208110156104c357600080fd5b5051905090565b6104d261074c565b604080517fbbf7408a000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff83169163bbf7408a916024808301926020929190829003018186803b15801561053e57600080fd5b505afa158015610552573d6000803e3d6000fd5b505050506040513d602081101561056857600080fd5b5050600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917fb2f6d9cc189e4fc02519ab5ba6d9455bedc32091e375e8a6383ed45f40653e7491a250565b6000805473ffffffffffffffffffffffffffffffffffffffff16806106b2577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561067d57600080fd5b505afa158015610691573d6000803e3d6000fd5b505050506040513d60208110156106a757600080fd5b5051915061033a9050565b8073ffffffffffffffffffffffffffffffffffffffff1663bbf7408a846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561071957600080fd5b505afa15801561072d573d6000803e3d6000fd5b505050506040513d602081101561074357600080fd5b50519392505050565b600061077b6000357fffffffff00000000000000000000000000000000000000000000000000000000166103b5565b905061079261078a8233610795565b61019161082b565b50565b600061079f61044a565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561071957600080fd5b81610839576108398161083d565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610792917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220f600a9a29fd20890b9dedaf51147513c68cfb43f9a689dd2e86f716c14531aff64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xBBF7408A EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0xE6B3E704 EQ PUSH2 0x1A2 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x192 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x25798418 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x25798418 EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0x63408A90 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0x6448A3AB EQ PUSH2 0x149 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xF4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB PUSH2 0x1D5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFC PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x32C JUMP JUMPDEST PUSH2 0xCB PUSH2 0x33F JUMP JUMPDEST PUSH2 0x151 PUSH2 0x35B JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x3B5 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x426 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x44A JUMP JUMPDEST PUSH2 0x151 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4CA JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x2B4 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x293 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH2 0x1F7 SWAP1 POP JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x337 DUP3 PUSH2 0x5D7 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x363 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xB2F6D9CC189E4FC02519AB5BA6D9455BEDC32091E375E8A6383ED45F40653E74 SWAP1 DUP3 SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x454 PUSH2 0x426 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x4D2 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xBBF7408A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0xBBF7408A SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x552 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xB2F6D9CC189E4FC02519AB5BA6D9455BEDC32091E375E8A6383ED45F40653E74 SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x6B2 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x691 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH2 0x33A SWAP1 POP JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBBF7408A DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x72D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77B PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x3B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x792 PUSH2 0x78A DUP3 CALLER PUSH2 0x795 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x82B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79F PUSH2 0x44A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x839 JUMPI PUSH2 0x839 DUP2 PUSH2 0x83D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x792 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 STOP 0xA9 LOG2 SWAP16 0xD2 ADDMOD SWAP1 0xB9 0xDE 0xDA CREATE2 GT SELFBALANCE MLOAD EXTCODECOPY PUSH9 0xCFB43F9A689DD2E86F PUSH18 0x6C14531AFF64736F6C634300070100330000 ","sourceMap":"954:2786:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1686:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2641:275;;;:::i;:::-;;;;;;;;;;;;;;;;1987:121;;;;;;;;;;;;;;;;-1:-1:-1;1987:121:75;;;;:::i;1493:112::-;;;:::i;3585:153::-;;;:::i;:::-;;2607:430:46;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:46;;;;:::i;1158:79:51:-;;;:::i;1297:109::-;;;:::i;3287:292:75:-;;;;;;;;;;;;;;;;-1:-1:-1;3287:292:75;;;;:::i;1686:95::-;1761:13;1686:95;;:::o;2641:275::-;2687:7;2737:11;;;;2762:34;2758:107;;2826:13;2819:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2819:35:75;;-1:-1:-1;2812:42:75;;-1:-1:-1;2812:42:75;2758:107;2881:14;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2881:28:75;;-1:-1:-1;;2641:275:75;:::o;1987:121::-;2051:7;2077:24;2096:4;2077:18;:24::i;:::-;2070:31;;1987:121;;;;:::o;1493:112::-;1555:13;1587:11;;;1493:112;:::o;3585:153::-;2276:21:46;:19;:21::i;:::-;3671:1:75::1;3643:30:::0;;;::::1;::::0;;3688:43:::1;::::0;::::1;::::0;3671:1;;3688:43:::1;3585:153::o:0;2607:430:46:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;1297:109::-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:51;;-1:-1:-1;1297:109:51;:::o;3287:292:75:-;2276:21:46;:19;:21::i;:::-;3428:42:75::1;::::0;;;;;3459:10:::1;3428:42;::::0;::::1;::::0;;;:30:::1;::::0;::::1;::::0;::::1;::::0;:42;;;;;::::1;::::0;;;;;;;;:30;:42;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;3481:11:75::1;:24:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;3520:52:::1;::::0;3481:24;;3520:52:::1;::::0;::::1;3287:292:::0;:::o;2949:308::-;3014:7;3064:11;;;;3089:34;3085:109;;3153:13;3146:31;;;3178:4;3146:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3146:37:75;;-1:-1:-1;3139:44:75;;-1:-1:-1;3139:44:75;3085:109;3210:14;:34;;;3245:4;3210:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3210:40:75;;2949:308;-1:-1:-1;;;2949:308:75:o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;:::-;2420:181;:::o;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;926:101:31;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"adjustedBalanceOf(address)":"25798418","adjusted_balance_of(address)":"bbf7408a","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDelegationImplementation()":"63408a90","getVault()":"8d928af8","getVotingEscrow()":"08b0308a","killDelegation()":"6448a3ab","setDelegation(address)":"e6b3e704","totalSupply()":"18160ddd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"votingEscrow\",\"type\":\"address\"},{\"internalType\":\"contract IVeDelegation\",\"name\":\"delegation\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"DelegationImplementationUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"adjustedBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"adjusted_balance_of\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDelegationImplementation\",\"outputs\":[{\"internalType\":\"contract IVeDelegation\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IVeDelegation\",\"name\":\"delegation\",\"type\":\"address\"}],\"name\":\"setDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"adjustedBalanceOf(address)\":{\"params\":{\"user\":\"The user to query the adjusted veBAL balance of\"},\"returns\":{\"_0\":\"veBAL balance\"}},\"adjusted_balance_of(address)\":{\"params\":{\"user\":\"The user to query the adjusted veBAL balance of\"},\"returns\":{\"_0\":\"veBAL balance\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"totalSupply()\":{\"returns\":{\"_0\":\"The current veBAL total supply.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"adjustedBalanceOf(address)\":{\"notice\":\"Get the adjusted veBAL balance from the active boost delegation contract\"},\"adjusted_balance_of(address)\":{\"notice\":\"Get the adjusted veBAL balance from the active boost delegation contract\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getDelegationImplementation()\":{\"notice\":\"Returns the current delegation implementation contract.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"getVotingEscrow()\":{\"notice\":\"Returns the Voting Escrow (veBAL) contract.\"},\"totalSupply()\":{\"notice\":\"Get the current veBAL total supply from the votingEscrow contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/VotingEscrowDelegationProxy.sol\":\"VotingEscrowDelegationProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\":{\"keccak256\":\"0xd4ebf4ceca6fa99ec2149d60b36084674621ae87e8a7786b23501749da8cc581\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7dd20ed7be933a3d8ec0be284b8f7f123e69ecb29731e35f70c371eb4f5e26c8\",\"dweb:/ipfs/QmfPp5sBxn92hg32fPFTDBB5kuHP9qU4jN3bSfip8uCnQ6\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"contracts/VotingEscrowDelegationProxy.sol\":{\"keccak256\":\"0x83275376fdb523aff81b8199f128d3d79c148a5d65733dd43abc777fb239786a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3599291c10b6a6b499fb1f40bb62e1a0d78e74283d6861a76669e78d003b1144\",\"dweb:/ipfs/QmPpBaKv3urnHffzYKU128cFmpaze5P2p9SACpDL7LT6VT\"]}},\"version\":1}"}},"contracts/VotingEscrowRemapper.sol":{"VotingEscrowRemapper":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IVotingEscrow","name":"votingEscrow","type":"address"},{"internalType":"contract IOmniVotingEscrowAdaptor","name":"omniVotingEscrowAdaptor","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"localUser","type":"address"},{"indexed":true,"internalType":"address","name":"delegate","type":"address"}],"name":"AddressDelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"localUser","type":"address"},{"indexed":true,"internalType":"address","name":"remoteUser","type":"address"},{"indexed":true,"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"AddressMappingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"remoteUser","type":"address"},{"indexed":true,"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"RemoteAddressMappingCleared","type":"event"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"clearNetworkRemapping","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"remoteUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"getLocalUser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getLockedEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOmniVotingEscrowAdaptor","outputs":[{"internalType":"contract IOmniVotingEscrowAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"}],"name":"getRemappingManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"getRemoteUser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalSupplyPoint","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserPoint","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"address","name":"remoteUser","type":"address"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"setNetworkRemapping","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"localUser","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"setNetworkRemappingManager","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b5060405162001e1b38038062001e1b833981016040819052620000349162000080565b30608052606092831b6001600160601b031990811660a052600160008190559290931b90921660c05280546001600160a01b0319166001600160a01b03909216919091179055620000ec565b60008060006060848603121562000095578283fd5b8351620000a281620000d3565b6020850151909350620000b581620000d3565b6040850151909250620000c881620000d3565b809150509250925092565b6001600160a01b0381168114620000e957600080fd5b50565b60805160a05160601c60c05160601c611cf7620001246000398061028552806104ab525080610f56525080610f065250611cf76000f3fe6080604052600436106100dd5760003560e01c8063851c1bb31161007f578063aaabadc511610059578063aaabadc514610219578063bda75c381461022e578063ee98b1e71461024e578063f6f4a3321461026e576100dd565b8063851c1bb3146101c45780638d928af8146101e4578063a9f3f44e146101f9576100dd565b80635e5543be116100bb5780635e5543be1461014f57806370d1bd171461016457806371628bfd1461018457806376601a18146101b1576100dd565b806308b0308a146100e257806321861fde1461010d5780633e7df7c814610122575b600080fd5b3480156100ee57600080fd5b506100f7610283565b60405161010491906117d3565b60405180910390f35b61012061011b3660046115fe565b6102a7565b005b34801561012e57600080fd5b5061014261013d3660046115aa565b6108f8565b604051610104919061184e565b34801561015b57600080fd5b506100f7610990565b34801561017057600080fd5b506100f761017f366004611645565b6109ac565b34801561019057600080fd5b506101a461019f3660046115aa565b6109e5565b6040516101049190611c5a565b6101206101bf366004611645565b610b33565b3480156101d057600080fd5b506101426101df36600461169a565b610f02565b3480156101f057600080fd5b506100f7610f54565b34801561020557600080fd5b506101206102143660046115c6565b610f78565b34801561022557600080fd5b506100f761102d565b34801561023a57600080fd5b506100f7610249366004611645565b6110b9565b34801561025a57600080fd5b506100f76102693660046115aa565b6110f2565b34801561027a57600080fd5b506101a461111d565b7f000000000000000000000000000000000000000000000000000000000000000090565b6102af61125d565b6103043373ffffffffffffffffffffffffffffffffffffffff851614806102fc575073ffffffffffffffffffffffffffffffffffffffff8481166000908152600460205260409020541633145b610191611276565b61030d83611284565b6103325760405162461bcd60e51b815260040161032990611ae6565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166103655760405162461bcd60e51b815260040161032990611b43565b600061036f610990565b61ffff8316600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff888116855292529091205491925016156103c65760405162461bcd60e51b815260040161032990611bfd565b61ffff8216600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8781168552925290912054161561041a5760405162461bcd60e51b8152600401610329906119cf565b61ffff8216600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8881168552925290912054161561046e5760405162461bcd60e51b815260040161032990611a2c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906104e09086906004016117d3565b60206040518083038186803b1580156104f857600080fd5b505afa15801561050c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105309190611765565b1561054d5760405162461bcd60e51b8152600401610329906118e0565b61ffff8216600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff808916855292529091205416801561060c5761ffff8316600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555190917f8bbec57d3a3f4c2e45c921fd17cbddb674ae1a51e01ca960b8251463c5907f6391a35b61ffff8316600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff808a168086529184528285208054918c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790915586865260028552838620818752909452828520805490911682179055905190927f632b3b16accd727b982fb08251e873b41265cc9976166f1111fd6ddd49c8b9d391a46040517fecc4c58300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063ecc4c58390610709908790600401611c90565b604080518083038186803b15801561072057600080fd5b505afa158015610734573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610758919061177d565b50905073ffffffffffffffffffffffffffffffffffffffff821615610829578060020234101561079a5760405162461bcd60e51b815260040161032990611972565b6040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906357fb83459083906107f2908690899033906004016117f4565b6000604051808303818588803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b5050505050610849565b803410156108495760405162461bcd60e51b815260040161032990611972565b6040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906357fb83459083906108a1908a90899033906004016117f4565b6000604051808303818588803b1580156108ba57600080fd5b505af11580156108ce573d6000803e3d6000fd5b5047935050821591506108e79050576108e733826113b8565b505050506108f361143f565b505050565b6000610902610283565b73ffffffffffffffffffffffffffffffffffffffff1663adc63589836040518263ffffffff1660e01b815260040161093a91906117d3565b60206040518083038186803b15801561095257600080fd5b505afa158015610966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098a9190611765565b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b61ffff16600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff94851684529091529020541690565b6109ed611558565b60006109f7610283565b905060008173ffffffffffffffffffffffffffffffffffffffff1663010ae757856040518263ffffffff1660e01b8152600401610a3491906117d3565b60206040518083038186803b158015610a4c57600080fd5b505afa158015610a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a849190611765565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906328d09d4790610adb9087908590600401611828565b60806040518083038186803b158015610af357600080fd5b505afa158015610b07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2b91906116f6565b949350505050565b610b3b61125d565b73ffffffffffffffffffffffffffffffffffffffff8216610b6e5760405162461bcd60e51b81526004016103299061193d565b610b7782611284565b1580610b98575073ffffffffffffffffffffffffffffffffffffffff821633145b610bb45760405162461bcd60e51b815260040161032990611883565b6000610bbe610990565b61ffff8316600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff80891685529252909120549192501680610c155760405162461bcd60e51b815260040161032990611a89565b61ffff8316600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff808716855290835281842080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915585855260028452828520918a16808652919093528184208054909316909255517f632b3b16accd727b982fb08251e873b41265cc9976166f1111fd6ddd49c8b9d3908390a460405161ffff84169073ffffffffffffffffffffffffffffffffffffffff8316907f8bbec57d3a3f4c2e45c921fd17cbddb674ae1a51e01ca960b8251463c5907f6390600090a36040517fecc4c58300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063ecc4c58390610d55908790600401611c90565b604080518083038186803b158015610d6c57600080fd5b505afa158015610d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da4919061177d565b50905080600202341015610dca5760405162461bcd60e51b815260040161032990611972565b6040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906357fb8345908390610e22908990899033906004016117f4565b6000604051808303818588803b158015610e3b57600080fd5b505af1158015610e4f573d6000803e3d6000fd5b50506040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871693506357fb83459250849150610eac908690899033906004016117f4565b6000604051808303818588803b158015610ec557600080fd5b505af1158015610ed9573d6000803e3d6000fd5b504793505082159150610ef2905057610ef233826113b8565b50505050610efe61143f565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610f379291906117a0565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610f80611446565b610f8861125d565b610f9182611284565b610fad5760405162461bcd60e51b815260040161032990611ba0565b73ffffffffffffffffffffffffffffffffffffffff82811660008181526004602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055517f72cff3a94768f9930e59d7a01948e45bea689391918693c8d164c16f271c46d99190a3610efe61143f565b6000611037610f54565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561107c57600080fd5b505afa158015611090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b491906116da565b905090565b61ffff16600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff94851684529091529020541690565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600460205260409020541690565b611125611558565b600061112f610283565b905060008173ffffffffffffffffffffffffffffffffffffffff1663900cf0cf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561117957600080fd5b505afa15801561118d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b19190611765565b6040517fd1febfb900000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d1febfb99061120690849060040161184e565b60806040518083038186803b15801561121e57600080fd5b505afa158015611232573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125691906116f6565b9250505090565b61126f60026000541415610190611276565b6002600055565b81610efe57610efe81611487565b60008061128f610283565b73ffffffffffffffffffffffffffffffffffffffff16637175d4f76040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d457600080fd5b505afa1580156112e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130c91906116da565b6040517fc23697a800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063c23697a8906113619086906004016117d3565b60206040518083038186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b1919061167a565b9392505050565b6113c7814710156101a3611276565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516113ed906117d0565b60006040518083038185875af1925050503d806000811461142a576040519150601f19603f3d011682016040523d82523d6000602084013e61142f565b606091505b505090506108f3816101a4611276565b6001600055565b60006114756000357fffffffff0000000000000000000000000000000000000000000000000000000016610f02565b90506114846102fc82336114b1565b50565b611484817f42414c00000000000000000000000000000000000000000000000000000000006114f7565b60006114bb61102d565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161136193929190611857565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525090565b8051600f81900b811461098a57600080fd5b803561ffff8116811461098a57600080fd5b6000602082840312156115bb578081fd5b81356113b181611c9f565b600080604083850312156115d8578081fd5b82356115e381611c9f565b915060208301356115f381611c9f565b809150509250929050565b600080600060608486031215611612578081fd5b833561161d81611c9f565b9250602084013561162d81611c9f565b915061163c8560408601611598565b90509250925092565b60008060408385031215611657578182fd5b823561166281611c9f565b91506116718460208501611598565b90509250929050565b60006020828403121561168b578081fd5b815180151581146113b1578182fd5b6000602082840312156116ab578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146113b1578182fd5b6000602082840312156116eb578081fd5b81516113b181611c9f565b600060808284031215611707578081fd5b6040516080810181811067ffffffffffffffff82111715611726578283fd5b6040526117338484611586565b81526117428460208501611586565b602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215611776578081fd5b5051919050565b6000806040838503121561178f578182fd5b505080516020909101519092909150565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff938416815261ffff929092166020830152909116604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60208082526023908201527f6c6f63616c55736572206973207374696c6c20696e20676f6f64207374616e6460408201527f696e670000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526030908201527f5461726765742072656d6f7465206164647265737320686173206e6f6e2d7a6560408201527f726f20766542414c2062616c616e636500000000000000000000000000000000606082015260800190565b6020808252818101527f6c6f63616c557365722063616e6e6f74206265207a65726f2061646472657373604082015260600190565b60208082526027908201527f496e73756666696369656e742045544820746f2062726964676520757365722060408201527f62616c616e636500000000000000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f43616e6e6f742072656d617020746f20616e206164647265737320746861742060408201527f697320696e20757365206c6f63616c6c79000000000000000000000000000000606082015260800190565b60208082526032908201527f43616e6e6f742072656d617020746f20616e206164647265737320746861742060408201527f697320696e207573652072656d6f74656c790000000000000000000000000000606082015260800190565b60208082526021908201527f52656d617070696e6720746f20636c65617220646f6573206e6f74206578697360408201527f7400000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526038908201527f4f6e6c7920636f6e7472616374732077686963682063616e20686f6c6420766560408201527f42414c2063616e207365742075702061206d617070696e670000000000000000606082015260800190565b6020808252602a908201527f5a65726f20616464726573732063616e6e6f742062652075736564206173207260408201527f656d6f7465207573657200000000000000000000000000000000000000000000606082015260800190565b60208082526037908201527f4f6e6c7920636f6e7472616374732077686963682063616e20686f6c6420766560408201527f42414c206d6179206861766520612064656c6567617465000000000000000000606082015260800190565b60208082526034908201527f43616e6e6f74206f766572777269746520616e206578697374696e67206d617060408201527f70696e6720627920616e6f746865722075736572000000000000000000000000606082015260800190565b60006080820190508251600f0b82526020830151600f0b6020830152604083015160408301526060830151606083015292915050565b61ffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461148457600080fdfea26469706673582212206e46f69b4bbafcaa72cd9c6ecf34139d0b3719256f7fd7f30998ddf7aa926a5264736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1E1B CODESIZE SUB DUP1 PUSH3 0x1E1B DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x80 JUMP JUMPDEST ADDRESS PUSH1 0x80 MSTORE PUSH1 0x60 SWAP3 DUP4 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 SSTORE SWAP3 SWAP1 SWAP4 SHL SWAP1 SWAP3 AND PUSH1 0xC0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH3 0xEC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x95 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0xA2 DUP2 PUSH3 0xD3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0xB5 DUP2 PUSH3 0xD3 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0xC8 DUP2 PUSH3 0xD3 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x1CF7 PUSH3 0x124 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x285 MSTORE DUP1 PUSH2 0x4AB MSTORE POP DUP1 PUSH2 0xF56 MSTORE POP DUP1 PUSH2 0xF06 MSTORE POP PUSH2 0x1CF7 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x219 JUMPI DUP1 PUSH4 0xBDA75C38 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0xEE98B1E7 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0xF6F4A332 EQ PUSH2 0x26E JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1C4 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1E4 JUMPI DUP1 PUSH4 0xA9F3F44E EQ PUSH2 0x1F9 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x5E5543BE GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x5E5543BE EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x70D1BD17 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x71628BFD EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x76601A18 EQ PUSH2 0x1B1 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x21861FDE EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x3E7DF7C8 EQ PUSH2 0x122 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x283 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x15FE JUMP JUMPDEST PUSH2 0x2A7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0x15AA JUMP JUMPDEST PUSH2 0x8F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x184E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x990 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0x1645 JUMP JUMPDEST PUSH2 0x9AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A4 PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0x15AA JUMP JUMPDEST PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x1C5A JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1BF CALLDATASIZE PUSH1 0x4 PUSH2 0x1645 JUMP JUMPDEST PUSH2 0xB33 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x1DF CALLDATASIZE PUSH1 0x4 PUSH2 0x169A JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH2 0x214 CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0xF78 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x102D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x249 CALLDATASIZE PUSH1 0x4 PUSH2 0x1645 JUMP JUMPDEST PUSH2 0x10B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x269 CALLDATASIZE PUSH1 0x4 PUSH2 0x15AA JUMP JUMPDEST PUSH2 0x10F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A4 PUSH2 0x111D JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x2AF PUSH2 0x125D JUMP JUMPDEST PUSH2 0x304 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EQ DUP1 PUSH2 0x2FC JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND CALLER EQ JUMPDEST PUSH2 0x191 PUSH2 0x1276 JUMP JUMPDEST PUSH2 0x30D DUP4 PUSH2 0x1284 JUMP JUMPDEST PUSH2 0x332 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1AE6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x365 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1B43 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36F PUSH2 0x990 JUMP JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP AND ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0xFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND ISZERO PUSH2 0x41A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x19CF JUMP JUMPDEST PUSH2 0xFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND ISZERO PUSH2 0x46E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1A2C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x50C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x530 SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST ISZERO PUSH2 0x54D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x18E0 JUMP JUMPDEST PUSH2 0xFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP1 ISZERO PUSH2 0x60C JUMPI PUSH2 0xFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE MLOAD SWAP1 SWAP2 PUSH32 0x8BBEC57D3A3F4C2E45C921FD17CBDDB674AE1A51E01CA960B8251463C5907F63 SWAP2 LOG3 JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP2 DUP13 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND DUP2 OR SWAP1 SWAP2 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP2 DUP8 MSTORE SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND DUP3 OR SWAP1 SSTORE SWAP1 MLOAD SWAP1 SWAP3 PUSH32 0x632B3B16ACCD727B982FB08251E873B41265CC9976166F1111FD6DDD49C8B9D3 SWAP2 LOG4 PUSH1 0x40 MLOAD PUSH32 0xECC4C58300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xECC4C583 SWAP1 PUSH2 0x709 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1C90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x734 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x758 SWAP2 SWAP1 PUSH2 0x177D JUMP JUMPDEST POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x829 JUMPI DUP1 PUSH1 0x2 MUL CALLVALUE LT ISZERO PUSH2 0x79A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1972 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x57FB8345 SWAP1 DUP4 SWAP1 PUSH2 0x7F2 SWAP1 DUP7 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x80B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x849 JUMP JUMPDEST DUP1 CALLVALUE LT ISZERO PUSH2 0x849 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1972 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x57FB8345 SWAP1 DUP4 SWAP1 PUSH2 0x8A1 SWAP1 DUP11 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SELFBALANCE SWAP4 POP POP DUP3 ISZERO SWAP2 POP PUSH2 0x8E7 SWAP1 POP JUMPI PUSH2 0x8E7 CALLER DUP3 PUSH2 0x13B8 JUMP JUMPDEST POP POP POP POP PUSH2 0x8F3 PUSH2 0x143F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x902 PUSH2 0x283 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xADC63589 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x93A SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x966 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x98A SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH2 0x9ED PUSH2 0x1558 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9F7 PUSH2 0x283 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10AE757 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA34 SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA84 SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xADB SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1828 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB2B SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB3B PUSH2 0x125D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB6E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x193D JUMP JUMPDEST PUSH2 0xB77 DUP3 PUSH2 0x1284 JUMP JUMPDEST ISZERO DUP1 PUSH2 0xB98 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND CALLER EQ JUMPDEST PUSH2 0xBB4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1883 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBE PUSH2 0x990 JUMP JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP AND DUP1 PUSH2 0xC15 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1A89 JUMP JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE DUP6 DUP6 MSTORE PUSH1 0x2 DUP5 MSTORE DUP3 DUP6 KECCAK256 SWAP2 DUP11 AND DUP1 DUP7 MSTORE SWAP2 SWAP1 SWAP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 AND SWAP1 SWAP3 SSTORE MLOAD PUSH32 0x632B3B16ACCD727B982FB08251E873B41265CC9976166F1111FD6DDD49C8B9D3 SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP5 AND SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH32 0x8BBEC57D3A3F4C2E45C921FD17CBDDB674AE1A51E01CA960B8251463C5907F63 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x40 MLOAD PUSH32 0xECC4C58300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xECC4C583 SWAP1 PUSH2 0xD55 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1C90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDA4 SWAP2 SWAP1 PUSH2 0x177D JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x2 MUL CALLVALUE LT ISZERO PUSH2 0xDCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1972 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x57FB8345 SWAP1 DUP4 SWAP1 PUSH2 0xE22 SWAP1 DUP10 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE4F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP4 POP PUSH4 0x57FB8345 SWAP3 POP DUP5 SWAP2 POP PUSH2 0xEAC SWAP1 DUP7 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xED9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SELFBALANCE SWAP4 POP POP DUP3 ISZERO SWAP2 POP PUSH2 0xEF2 SWAP1 POP JUMPI PUSH2 0xEF2 CALLER DUP3 PUSH2 0x13B8 JUMP JUMPDEST POP POP POP POP PUSH2 0xEFE PUSH2 0x143F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF37 SWAP3 SWAP2 SWAP1 PUSH2 0x17A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xF80 PUSH2 0x1446 JUMP JUMPDEST PUSH2 0xF88 PUSH2 0x125D JUMP JUMPDEST PUSH2 0xF91 DUP3 PUSH2 0x1284 JUMP JUMPDEST PUSH2 0xFAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1BA0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP5 DUP7 AND SWAP5 DUP6 OR SWAP1 SSTORE MLOAD PUSH32 0x72CFF3A94768F9930E59D7A01948E45BEA689391918693C8D164C16F271C46D9 SWAP2 SWAP1 LOG3 PUSH2 0xEFE PUSH2 0x143F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1037 PUSH2 0xF54 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x107C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1090 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10B4 SWAP2 SWAP1 PUSH2 0x16DA JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH2 0x1125 PUSH2 0x1558 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x112F PUSH2 0x283 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x900CF0CF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x118D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B1 SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD1FEBFB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0xD1FEBFB9 SWAP1 PUSH2 0x1206 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x184E JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x121E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1232 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1256 SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x126F PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1276 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST DUP2 PUSH2 0xEFE JUMPI PUSH2 0xEFE DUP2 PUSH2 0x1487 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x128F PUSH2 0x283 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7175D4F7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x130C SWAP2 SWAP1 PUSH2 0x16DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC23697A800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xC23697A8 SWAP1 PUSH2 0x1361 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13B1 SWAP2 SWAP1 PUSH2 0x167A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x13C7 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x1276 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x13ED SWAP1 PUSH2 0x17D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x142A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x142F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x8F3 DUP2 PUSH2 0x1A4 PUSH2 0x1276 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1475 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0xF02 JUMP JUMPDEST SWAP1 POP PUSH2 0x1484 PUSH2 0x2FC DUP3 CALLER PUSH2 0x14B1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1484 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x14F7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14BB PUSH2 0x102D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1361 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1857 JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x98A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x98A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15BB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13B1 DUP2 PUSH2 0x1C9F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15D8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x15E3 DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x15F3 DUP2 PUSH2 0x1C9F JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1612 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x161D DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x162D DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP2 POP PUSH2 0x163C DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x1598 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1657 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1662 DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP2 POP PUSH2 0x1671 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1598 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x168B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x13B1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16AB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x13B1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16EB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x13B1 DUP2 PUSH2 0x1C9F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1707 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1726 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x1733 DUP5 DUP5 PUSH2 0x1586 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1742 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1586 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1776 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x178F JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE PUSH2 0xFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x6C6F63616C55736572206973207374696C6C20696E20676F6F64207374616E64 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x696E670000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x30 SWAP1 DUP3 ADD MSTORE PUSH32 0x5461726765742072656D6F7465206164647265737320686173206E6F6E2D7A65 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x726F20766542414C2062616C616E636500000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x6C6F63616C557365722063616E6E6F74206265207A65726F2061646472657373 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742045544820746F20627269646765207573657220 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x62616C616E636500000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x31 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742072656D617020746F20616E2061646472657373207468617420 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x697320696E20757365206C6F63616C6C79000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742072656D617020746F20616E2061646472657373207468617420 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x697320696E207573652072656D6F74656C790000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656D617070696E6720746F20636C65617220646F6573206E6F742065786973 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920636F6E7472616374732077686963682063616E20686F6C64207665 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x42414C2063616E207365742075702061206D617070696E670000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5A65726F20616464726573732063616E6E6F7420626520757365642061732072 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656D6F7465207573657200000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x37 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920636F6E7472616374732077686963682063616E20686F6C64207665 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x42414C206D6179206861766520612064656C6567617465000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F74206F766572777269746520616E206578697374696E67206D6170 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x70696E6720627920616E6F746865722075736572000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP DUP3 MLOAD PUSH1 0xF SIGNEXTEND DUP3 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0xF SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1484 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x46F69B4BBAFCAA72CD9C6ECF34139D SIGNEXTEND CALLDATACOPY NOT 0x25 PUSH16 0x7FD7F30998DDF7AA926A5264736F6C63 NUMBER STOP SMOD ADD STOP CALLER ","sourceMap":"1865:10228:76:-:0;;;2426:270;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1054:4:51;2049:46:46;;1073:14:51::1;::::0;;;-1:-1:-1;;;;;;1073:14:51;;;::::1;::::0;2070:1:63;1030:31:51;2175:22:63;;;2601:28:76;;;;;;;::::1;::::0;2639:50;;-1:-1:-1;;;;;;2639:50:76::1;-1:-1:-1::0;;;;;2639:50:76;;::::1;::::0;;;::::1;::::0;;1865:10228;;568:675:-1;;;;787:2;775:9;766:7;762:23;758:32;755:2;;;-1:-1;;793:12;755:2;311:6;305:13;323:48;365:5;323:48;:::i;:::-;971:2;1043:22;;483:13;845:89;;-1:-1;501:55;483:13;501:55;:::i;:::-;1112:2;1195:22;;116:13;979:96;;-1:-1;134:66;116:13;134:66;:::i;:::-;1120:107;;;;749:494;;;;;:::o;1840:183::-;-1:-1;;;;;1774:54;;1932:68;;1922:2;;2014:1;;2004:12;1922:2;1916:107;:::o;:::-;1865:10228:76;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":3846}],"3611":[{"length":32,"start":3926}],"10216":[{"length":32,"start":645},{"length":32,"start":1195}]},"linkReferences":{},"object":"6080604052600436106100dd5760003560e01c8063851c1bb31161007f578063aaabadc511610059578063aaabadc514610219578063bda75c381461022e578063ee98b1e71461024e578063f6f4a3321461026e576100dd565b8063851c1bb3146101c45780638d928af8146101e4578063a9f3f44e146101f9576100dd565b80635e5543be116100bb5780635e5543be1461014f57806370d1bd171461016457806371628bfd1461018457806376601a18146101b1576100dd565b806308b0308a146100e257806321861fde1461010d5780633e7df7c814610122575b600080fd5b3480156100ee57600080fd5b506100f7610283565b60405161010491906117d3565b60405180910390f35b61012061011b3660046115fe565b6102a7565b005b34801561012e57600080fd5b5061014261013d3660046115aa565b6108f8565b604051610104919061184e565b34801561015b57600080fd5b506100f7610990565b34801561017057600080fd5b506100f761017f366004611645565b6109ac565b34801561019057600080fd5b506101a461019f3660046115aa565b6109e5565b6040516101049190611c5a565b6101206101bf366004611645565b610b33565b3480156101d057600080fd5b506101426101df36600461169a565b610f02565b3480156101f057600080fd5b506100f7610f54565b34801561020557600080fd5b506101206102143660046115c6565b610f78565b34801561022557600080fd5b506100f761102d565b34801561023a57600080fd5b506100f7610249366004611645565b6110b9565b34801561025a57600080fd5b506100f76102693660046115aa565b6110f2565b34801561027a57600080fd5b506101a461111d565b7f000000000000000000000000000000000000000000000000000000000000000090565b6102af61125d565b6103043373ffffffffffffffffffffffffffffffffffffffff851614806102fc575073ffffffffffffffffffffffffffffffffffffffff8481166000908152600460205260409020541633145b610191611276565b61030d83611284565b6103325760405162461bcd60e51b815260040161032990611ae6565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166103655760405162461bcd60e51b815260040161032990611b43565b600061036f610990565b61ffff8316600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff888116855292529091205491925016156103c65760405162461bcd60e51b815260040161032990611bfd565b61ffff8216600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8781168552925290912054161561041a5760405162461bcd60e51b8152600401610329906119cf565b61ffff8216600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8881168552925290912054161561046e5760405162461bcd60e51b815260040161032990611a2c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906104e09086906004016117d3565b60206040518083038186803b1580156104f857600080fd5b505afa15801561050c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105309190611765565b1561054d5760405162461bcd60e51b8152600401610329906118e0565b61ffff8216600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff808916855292529091205416801561060c5761ffff8316600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555190917f8bbec57d3a3f4c2e45c921fd17cbddb674ae1a51e01ca960b8251463c5907f6391a35b61ffff8316600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff808a168086529184528285208054918c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790915586865260028552838620818752909452828520805490911682179055905190927f632b3b16accd727b982fb08251e873b41265cc9976166f1111fd6ddd49c8b9d391a46040517fecc4c58300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063ecc4c58390610709908790600401611c90565b604080518083038186803b15801561072057600080fd5b505afa158015610734573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610758919061177d565b50905073ffffffffffffffffffffffffffffffffffffffff821615610829578060020234101561079a5760405162461bcd60e51b815260040161032990611972565b6040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906357fb83459083906107f2908690899033906004016117f4565b6000604051808303818588803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b5050505050610849565b803410156108495760405162461bcd60e51b815260040161032990611972565b6040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906357fb83459083906108a1908a90899033906004016117f4565b6000604051808303818588803b1580156108ba57600080fd5b505af11580156108ce573d6000803e3d6000fd5b5047935050821591506108e79050576108e733826113b8565b505050506108f361143f565b505050565b6000610902610283565b73ffffffffffffffffffffffffffffffffffffffff1663adc63589836040518263ffffffff1660e01b815260040161093a91906117d3565b60206040518083038186803b15801561095257600080fd5b505afa158015610966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098a9190611765565b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b61ffff16600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff94851684529091529020541690565b6109ed611558565b60006109f7610283565b905060008173ffffffffffffffffffffffffffffffffffffffff1663010ae757856040518263ffffffff1660e01b8152600401610a3491906117d3565b60206040518083038186803b158015610a4c57600080fd5b505afa158015610a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a849190611765565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906328d09d4790610adb9087908590600401611828565b60806040518083038186803b158015610af357600080fd5b505afa158015610b07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2b91906116f6565b949350505050565b610b3b61125d565b73ffffffffffffffffffffffffffffffffffffffff8216610b6e5760405162461bcd60e51b81526004016103299061193d565b610b7782611284565b1580610b98575073ffffffffffffffffffffffffffffffffffffffff821633145b610bb45760405162461bcd60e51b815260040161032990611883565b6000610bbe610990565b61ffff8316600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff80891685529252909120549192501680610c155760405162461bcd60e51b815260040161032990611a89565b61ffff8316600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff808716855290835281842080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915585855260028452828520918a16808652919093528184208054909316909255517f632b3b16accd727b982fb08251e873b41265cc9976166f1111fd6ddd49c8b9d3908390a460405161ffff84169073ffffffffffffffffffffffffffffffffffffffff8316907f8bbec57d3a3f4c2e45c921fd17cbddb674ae1a51e01ca960b8251463c5907f6390600090a36040517fecc4c58300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff84169063ecc4c58390610d55908790600401611c90565b604080518083038186803b158015610d6c57600080fd5b505afa158015610d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da4919061177d565b50905080600202341015610dca5760405162461bcd60e51b815260040161032990611972565b6040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906357fb8345908390610e22908990899033906004016117f4565b6000604051808303818588803b158015610e3b57600080fd5b505af1158015610e4f573d6000803e3d6000fd5b50506040517f57fb834500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871693506357fb83459250849150610eac908690899033906004016117f4565b6000604051808303818588803b158015610ec557600080fd5b505af1158015610ed9573d6000803e3d6000fd5b504793505082159150610ef2905057610ef233826113b8565b50505050610efe61143f565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610f379291906117a0565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610f80611446565b610f8861125d565b610f9182611284565b610fad5760405162461bcd60e51b815260040161032990611ba0565b73ffffffffffffffffffffffffffffffffffffffff82811660008181526004602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055517f72cff3a94768f9930e59d7a01948e45bea689391918693c8d164c16f271c46d99190a3610efe61143f565b6000611037610f54565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561107c57600080fd5b505afa158015611090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b491906116da565b905090565b61ffff16600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff94851684529091529020541690565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600460205260409020541690565b611125611558565b600061112f610283565b905060008173ffffffffffffffffffffffffffffffffffffffff1663900cf0cf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561117957600080fd5b505afa15801561118d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b19190611765565b6040517fd1febfb900000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d1febfb99061120690849060040161184e565b60806040518083038186803b15801561121e57600080fd5b505afa158015611232573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125691906116f6565b9250505090565b61126f60026000541415610190611276565b6002600055565b81610efe57610efe81611487565b60008061128f610283565b73ffffffffffffffffffffffffffffffffffffffff16637175d4f76040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d457600080fd5b505afa1580156112e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130c91906116da565b6040517fc23697a800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063c23697a8906113619086906004016117d3565b60206040518083038186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b1919061167a565b9392505050565b6113c7814710156101a3611276565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516113ed906117d0565b60006040518083038185875af1925050503d806000811461142a576040519150601f19603f3d011682016040523d82523d6000602084013e61142f565b606091505b505090506108f3816101a4611276565b6001600055565b60006114756000357fffffffff0000000000000000000000000000000000000000000000000000000016610f02565b90506114846102fc82336114b1565b50565b611484817f42414c00000000000000000000000000000000000000000000000000000000006114f7565b60006114bb61102d565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161136193929190611857565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525090565b8051600f81900b811461098a57600080fd5b803561ffff8116811461098a57600080fd5b6000602082840312156115bb578081fd5b81356113b181611c9f565b600080604083850312156115d8578081fd5b82356115e381611c9f565b915060208301356115f381611c9f565b809150509250929050565b600080600060608486031215611612578081fd5b833561161d81611c9f565b9250602084013561162d81611c9f565b915061163c8560408601611598565b90509250925092565b60008060408385031215611657578182fd5b823561166281611c9f565b91506116718460208501611598565b90509250929050565b60006020828403121561168b578081fd5b815180151581146113b1578182fd5b6000602082840312156116ab578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146113b1578182fd5b6000602082840312156116eb578081fd5b81516113b181611c9f565b600060808284031215611707578081fd5b6040516080810181811067ffffffffffffffff82111715611726578283fd5b6040526117338484611586565b81526117428460208501611586565b602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215611776578081fd5b5051919050565b6000806040838503121561178f578182fd5b505080516020909101519092909150565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff938416815261ffff929092166020830152909116604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60208082526023908201527f6c6f63616c55736572206973207374696c6c20696e20676f6f64207374616e6460408201527f696e670000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526030908201527f5461726765742072656d6f7465206164647265737320686173206e6f6e2d7a6560408201527f726f20766542414c2062616c616e636500000000000000000000000000000000606082015260800190565b6020808252818101527f6c6f63616c557365722063616e6e6f74206265207a65726f2061646472657373604082015260600190565b60208082526027908201527f496e73756666696369656e742045544820746f2062726964676520757365722060408201527f62616c616e636500000000000000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f43616e6e6f742072656d617020746f20616e206164647265737320746861742060408201527f697320696e20757365206c6f63616c6c79000000000000000000000000000000606082015260800190565b60208082526032908201527f43616e6e6f742072656d617020746f20616e206164647265737320746861742060408201527f697320696e207573652072656d6f74656c790000000000000000000000000000606082015260800190565b60208082526021908201527f52656d617070696e6720746f20636c65617220646f6573206e6f74206578697360408201527f7400000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526038908201527f4f6e6c7920636f6e7472616374732077686963682063616e20686f6c6420766560408201527f42414c2063616e207365742075702061206d617070696e670000000000000000606082015260800190565b6020808252602a908201527f5a65726f20616464726573732063616e6e6f742062652075736564206173207260408201527f656d6f7465207573657200000000000000000000000000000000000000000000606082015260800190565b60208082526037908201527f4f6e6c7920636f6e7472616374732077686963682063616e20686f6c6420766560408201527f42414c206d6179206861766520612064656c6567617465000000000000000000606082015260800190565b60208082526034908201527f43616e6e6f74206f766572777269746520616e206578697374696e67206d617060408201527f70696e6720627920616e6f746865722075736572000000000000000000000000606082015260800190565b60006080820190508251600f0b82526020830151600f0b6020830152604083015160408301526060830151606083015292915050565b61ffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461148457600080fdfea26469706673582212206e46f69b4bbafcaa72cd9c6ecf34139d0b3719256f7fd7f30998ddf7aa926a5264736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x219 JUMPI DUP1 PUSH4 0xBDA75C38 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0xEE98B1E7 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0xF6F4A332 EQ PUSH2 0x26E JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1C4 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1E4 JUMPI DUP1 PUSH4 0xA9F3F44E EQ PUSH2 0x1F9 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x5E5543BE GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x5E5543BE EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x70D1BD17 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x71628BFD EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x76601A18 EQ PUSH2 0x1B1 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x21861FDE EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x3E7DF7C8 EQ PUSH2 0x122 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x283 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x15FE JUMP JUMPDEST PUSH2 0x2A7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0x15AA JUMP JUMPDEST PUSH2 0x8F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x184E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x990 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0x1645 JUMP JUMPDEST PUSH2 0x9AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A4 PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0x15AA JUMP JUMPDEST PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x1C5A JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1BF CALLDATASIZE PUSH1 0x4 PUSH2 0x1645 JUMP JUMPDEST PUSH2 0xB33 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x1DF CALLDATASIZE PUSH1 0x4 PUSH2 0x169A JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120 PUSH2 0x214 CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0xF78 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x102D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x249 CALLDATASIZE PUSH1 0x4 PUSH2 0x1645 JUMP JUMPDEST PUSH2 0x10B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x269 CALLDATASIZE PUSH1 0x4 PUSH2 0x15AA JUMP JUMPDEST PUSH2 0x10F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A4 PUSH2 0x111D JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x2AF PUSH2 0x125D JUMP JUMPDEST PUSH2 0x304 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EQ DUP1 PUSH2 0x2FC JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND CALLER EQ JUMPDEST PUSH2 0x191 PUSH2 0x1276 JUMP JUMPDEST PUSH2 0x30D DUP4 PUSH2 0x1284 JUMP JUMPDEST PUSH2 0x332 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1AE6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x365 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1B43 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36F PUSH2 0x990 JUMP JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP AND ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0xFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND ISZERO PUSH2 0x41A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x19CF JUMP JUMPDEST PUSH2 0xFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND ISZERO PUSH2 0x46E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1A2C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x50C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x530 SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST ISZERO PUSH2 0x54D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x18E0 JUMP JUMPDEST PUSH2 0xFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP1 ISZERO PUSH2 0x60C JUMPI PUSH2 0xFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE MLOAD SWAP1 SWAP2 PUSH32 0x8BBEC57D3A3F4C2E45C921FD17CBDDB674AE1A51E01CA960B8251463C5907F63 SWAP2 LOG3 JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP2 DUP13 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND DUP2 OR SWAP1 SWAP2 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP2 DUP8 MSTORE SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND DUP3 OR SWAP1 SSTORE SWAP1 MLOAD SWAP1 SWAP3 PUSH32 0x632B3B16ACCD727B982FB08251E873B41265CC9976166F1111FD6DDD49C8B9D3 SWAP2 LOG4 PUSH1 0x40 MLOAD PUSH32 0xECC4C58300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xECC4C583 SWAP1 PUSH2 0x709 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1C90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x734 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x758 SWAP2 SWAP1 PUSH2 0x177D JUMP JUMPDEST POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x829 JUMPI DUP1 PUSH1 0x2 MUL CALLVALUE LT ISZERO PUSH2 0x79A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1972 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x57FB8345 SWAP1 DUP4 SWAP1 PUSH2 0x7F2 SWAP1 DUP7 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x80B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x849 JUMP JUMPDEST DUP1 CALLVALUE LT ISZERO PUSH2 0x849 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1972 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x57FB8345 SWAP1 DUP4 SWAP1 PUSH2 0x8A1 SWAP1 DUP11 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SELFBALANCE SWAP4 POP POP DUP3 ISZERO SWAP2 POP PUSH2 0x8E7 SWAP1 POP JUMPI PUSH2 0x8E7 CALLER DUP3 PUSH2 0x13B8 JUMP JUMPDEST POP POP POP POP PUSH2 0x8F3 PUSH2 0x143F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x902 PUSH2 0x283 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xADC63589 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x93A SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x966 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x98A SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH2 0x9ED PUSH2 0x1558 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9F7 PUSH2 0x283 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10AE757 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA34 SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA84 SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xADB SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1828 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB2B SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB3B PUSH2 0x125D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB6E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x193D JUMP JUMPDEST PUSH2 0xB77 DUP3 PUSH2 0x1284 JUMP JUMPDEST ISZERO DUP1 PUSH2 0xB98 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND CALLER EQ JUMPDEST PUSH2 0xBB4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1883 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBE PUSH2 0x990 JUMP JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP AND DUP1 PUSH2 0xC15 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1A89 JUMP JUMPDEST PUSH2 0xFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE DUP6 DUP6 MSTORE PUSH1 0x2 DUP5 MSTORE DUP3 DUP6 KECCAK256 SWAP2 DUP11 AND DUP1 DUP7 MSTORE SWAP2 SWAP1 SWAP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 AND SWAP1 SWAP3 SSTORE MLOAD PUSH32 0x632B3B16ACCD727B982FB08251E873B41265CC9976166F1111FD6DDD49C8B9D3 SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP5 AND SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH32 0x8BBEC57D3A3F4C2E45C921FD17CBDDB674AE1A51E01CA960B8251463C5907F63 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x40 MLOAD PUSH32 0xECC4C58300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xECC4C583 SWAP1 PUSH2 0xD55 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1C90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDA4 SWAP2 SWAP1 PUSH2 0x177D JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x2 MUL CALLVALUE LT ISZERO PUSH2 0xDCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1972 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x57FB8345 SWAP1 DUP4 SWAP1 PUSH2 0xE22 SWAP1 DUP10 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE4F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x57FB834500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP4 POP PUSH4 0x57FB8345 SWAP3 POP DUP5 SWAP2 POP PUSH2 0xEAC SWAP1 DUP7 SWAP1 DUP10 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xED9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SELFBALANCE SWAP4 POP POP DUP3 ISZERO SWAP2 POP PUSH2 0xEF2 SWAP1 POP JUMPI PUSH2 0xEF2 CALLER DUP3 PUSH2 0x13B8 JUMP JUMPDEST POP POP POP POP PUSH2 0xEFE PUSH2 0x143F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF37 SWAP3 SWAP2 SWAP1 PUSH2 0x17A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xF80 PUSH2 0x1446 JUMP JUMPDEST PUSH2 0xF88 PUSH2 0x125D JUMP JUMPDEST PUSH2 0xF91 DUP3 PUSH2 0x1284 JUMP JUMPDEST PUSH2 0xFAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x329 SWAP1 PUSH2 0x1BA0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP5 DUP7 AND SWAP5 DUP6 OR SWAP1 SSTORE MLOAD PUSH32 0x72CFF3A94768F9930E59D7A01948E45BEA689391918693C8D164C16F271C46D9 SWAP2 SWAP1 LOG3 PUSH2 0xEFE PUSH2 0x143F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1037 PUSH2 0xF54 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x107C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1090 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10B4 SWAP2 SWAP1 PUSH2 0x16DA JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH2 0x1125 PUSH2 0x1558 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x112F PUSH2 0x283 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x900CF0CF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x118D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B1 SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD1FEBFB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0xD1FEBFB9 SWAP1 PUSH2 0x1206 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x184E JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x121E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1232 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1256 SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x126F PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1276 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST DUP2 PUSH2 0xEFE JUMPI PUSH2 0xEFE DUP2 PUSH2 0x1487 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x128F PUSH2 0x283 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7175D4F7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x130C SWAP2 SWAP1 PUSH2 0x16DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC23697A800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xC23697A8 SWAP1 PUSH2 0x1361 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13B1 SWAP2 SWAP1 PUSH2 0x167A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x13C7 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x1276 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x13ED SWAP1 PUSH2 0x17D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x142A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x142F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x8F3 DUP2 PUSH2 0x1A4 PUSH2 0x1276 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1475 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0xF02 JUMP JUMPDEST SWAP1 POP PUSH2 0x1484 PUSH2 0x2FC DUP3 CALLER PUSH2 0x14B1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1484 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x14F7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14BB PUSH2 0x102D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1361 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1857 JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x98A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x98A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15BB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13B1 DUP2 PUSH2 0x1C9F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15D8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x15E3 DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x15F3 DUP2 PUSH2 0x1C9F JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1612 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x161D DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x162D DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP2 POP PUSH2 0x163C DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x1598 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1657 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1662 DUP2 PUSH2 0x1C9F JUMP JUMPDEST SWAP2 POP PUSH2 0x1671 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1598 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x168B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x13B1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16AB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x13B1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16EB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x13B1 DUP2 PUSH2 0x1C9F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1707 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1726 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x1733 DUP5 DUP5 PUSH2 0x1586 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1742 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1586 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1776 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x178F JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE PUSH2 0xFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x6C6F63616C55736572206973207374696C6C20696E20676F6F64207374616E64 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x696E670000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x30 SWAP1 DUP3 ADD MSTORE PUSH32 0x5461726765742072656D6F7465206164647265737320686173206E6F6E2D7A65 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x726F20766542414C2062616C616E636500000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x6C6F63616C557365722063616E6E6F74206265207A65726F2061646472657373 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742045544820746F20627269646765207573657220 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x62616C616E636500000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x31 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742072656D617020746F20616E2061646472657373207468617420 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x697320696E20757365206C6F63616C6C79000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742072656D617020746F20616E2061646472657373207468617420 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x697320696E207573652072656D6F74656C790000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656D617070696E6720746F20636C65617220646F6573206E6F742065786973 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920636F6E7472616374732077686963682063616E20686F6C64207665 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x42414C2063616E207365742075702061206D617070696E670000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5A65726F20616464726573732063616E6E6F7420626520757365642061732072 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656D6F7465207573657200000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x37 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920636F6E7472616374732077686963682063616E20686F6C64207665 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x42414C206D6179206861766520612064656C6567617465000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F74206F766572777269746520616E206578697374696E67206D6170 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x70696E6720627920616E6F746865722075736572000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP DUP3 MLOAD PUSH1 0xF SIGNEXTEND DUP3 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0xF SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1484 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x46F69B4BBAFCAA72CD9C6ECF34139D SIGNEXTEND CALLDATACOPY NOT 0x25 PUSH16 0x7FD7F30998DDF7AA926A5264736F6C63 NUMBER STOP SMOD ADD STOP CALLER ","sourceMap":"1865:10228:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4577:4873;;;;;;:::i;:::-;;:::i;:::-;;3748:136;;;;;;;;;;-1:-1:-1;3748:136:76;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2901:142::-;;;;;;;;;;;;;:::i;3932:166::-;;;;;;;;;;-1:-1:-1;3932:166:76;;;;;:::i;:::-;;:::i;3411:289::-;;;;;;;;;;-1:-1:-1;3411:289:76;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9926:1718::-;;;;;;:::i;:::-;;:::i;2607:430:46:-;;;;;;;;;;-1:-1:-1;2607:430:46;;;;;:::i;:::-;;:::i;1158:79:51:-;;;;;;;;;;;;;:::i;9498:380:76:-;;;;;;;;;;-1:-1:-1;9498:380:76;;;;;:::i;:::-;;:::i;1297:109:51:-;;;;;;;;;;;;;:::i;4146:165:76:-;;;;;;;;;;-1:-1:-1;4146:165:76;;;;;:::i;:::-;;:::i;4359:144::-;;;;;;;;;;-1:-1:-1;4359:144:76;;;;;:::i;:::-;;:::i;3091:272::-;;;;;;;;;;;;;:::i;2744:109::-;2833:13;2744:109;:::o;4577:4873::-;2613:20:63;:18;:20::i;:::-;4740:111:76::1;4749:10;:23;::::0;::::1;;::::0;:74:::1;;-1:-1:-1::0;4790:33:76::1;::::0;;::::1;;::::0;;;:22:::1;:33;::::0;;;;;::::1;4776:10;:47;4749:74;10270:3:31;4740:8:76;:111::i;:::-;4869:29;4888:9;4869:18;:29::i;:::-;4861:98;;;;-1:-1:-1::0;;;4861:98:76::1;;;;;;;:::i;:::-;;;;;;;;;4977:24;::::0;::::1;4969:79;;;;-1:-1:-1::0;;;4969:79:76::1;;;;;;;:::i;:::-;5058:48;5109:28;:26;:28::i;:::-;6480:33;::::0;::::1;6537:1;6480:33:::0;;;:24:::1;:33;::::0;;;;;;;:59:::1;:45:::0;;::::1;::::0;;;;;;;;5058:79;;-1:-1:-1;6480:45:76::1;:59:::0;6459:158:::1;;;;-1:-1:-1::0;;;6459:158:76::1;;;;;;;:::i;:::-;6821:33;::::0;::::1;6878:1;6821:33:::0;;;:24:::1;:33;::::0;;;;;;;:59:::1;:45:::0;;::::1;::::0;;;;;;;;::::1;:59:::0;6800:155:::1;;;;-1:-1:-1::0;;;6800:155:76::1;;;;;;;:::i;:::-;7165:33;::::0;::::1;7221:1;7165:33:::0;;;:24:::1;:33;::::0;;;;;;;:58:::1;:44:::0;;::::1;::::0;;;;;;;;::::1;:58:::0;7144:155:::1;;;;-1:-1:-1::0;;;7144:155:76::1;;;;;;;:::i;:::-;7508:35;::::0;;;;:23:::1;:13;:23;::::0;::::1;::::0;:35:::1;::::0;7532:10;;7508:35:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40:::0;7500:101:::1;;;;-1:-1:-1::0;;;7500:101:76::1;;;;;;;:::i;:::-;7704:33;::::0;::::1;7680:21;7704:33:::0;;;:24:::1;:33;::::0;;;;;;;:44:::1;::::0;;::::1;::::0;;;;;;;;::::1;7762:27:::0;;7758:189:::1;;7805:33;::::0;::::1;7864:1;7805:33:::0;;;:24:::1;:33;::::0;;;;;;;:48:::1;::::0;::::1;::::0;;;;;;;;:61;;;::::1;::::0;;7885:51;7805:48;;7885:51:::1;::::0;::::1;7758:189;7990:33;::::0;::::1;;::::0;;;:24:::1;:33;::::0;;;;;;;:45:::1;::::0;;::::1;::::0;;;;;;;;;:57;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;8057:33;;;:24:::1;:33:::0;;;;;:44;;;;;;;;;:57;;;;::::1;::::0;::::1;::::0;;8130:53;;7990:45;;8130:53:::1;::::0;::::1;8411:56;::::0;;;;8388:17:::1;::::0;8411:47:::1;::::0;::::1;::::0;::::1;::::0;:56:::1;::::0;8459:7;;8411:56:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8387:80:76;-1:-1:-1;8481:27:76::1;::::0;::::1;::::0;8477:569:::1;;8545:9;8557:1;8545:13;8532:9;:26;;8524:78;;;;-1:-1:-1::0;;;8524:78:76::1;;;;;;;:::i;:::-;8826:104;::::0;;;;:39:::1;::::0;::::1;::::0;::::1;::::0;8874:9;;8826:104:::1;::::0;8886:13;;8901:7;;8918:10:::1;::::0;8826:104:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;8477:569;;;8982:9;8969;:22;;8961:74;;;;-1:-1:-1::0;;;8961:74:76::1;;;;;;;:::i;:::-;9124:100;::::0;;;;:39:::1;::::0;::::1;::::0;::::1;::::0;9172:9;;9124:100:::1;::::0;9184:9;;9195:7;;9212:10:::1;::::0;9124:100:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;9315:21:76::1;::::0;-1:-1:-1;;9350:20:76;;;-1:-1:-1;9346:98:76::1;::::0;-1:-1:-1;9346:98:76::1;9386:47;9404:10;9416:16;9386:17;:47::i;:::-;2643:1:63;;;;2654:19:::0;:17;:19::i;:::-;4577:4873:76;;;:::o;3748:136::-;3816:7;3842:17;:15;:17::i;:::-;:29;;;3872:4;3842:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3835:42;3748:136;-1:-1:-1;;3748:136:76:o;2901:142::-;3012:24;;;;2901:142;:::o;3932:166::-;4046:33;;4020:7;4046:33;;;:24;:33;;;;;;;;:45;;;;;;;;;;;;;;3932:166::o;3411:289::-;3479:26;;:::i;:::-;3517;3546:17;:15;:17::i;:::-;3517:46;;3573:17;3593:12;:29;;;3623:4;3593:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3645:48;;;;;3573:55;;-1:-1:-1;3645:31:76;;;;;;:48;;3677:4;;3573:55;;3645:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3638:55;3411:289;-1:-1:-1;;;;3411:289:76:o;9926:1718::-;2613:20:63;:18;:20::i;:::-;10049:23:76::1;::::0;::::1;10041:68;;;;-1:-1:-1::0;;;10041:68:76::1;;;;;;;:::i;:::-;10128:29;10147:9;10128:18;:29::i;:::-;10127:30;:57;;;-1:-1:-1::0;10161:23:76::1;::::0;::::1;10174:10;10161:23;10127:57;10119:105;;;;-1:-1:-1::0;;;10119:105:76::1;;;;;;;:::i;:::-;10234:48;10285:28;:26;:28::i;:::-;10345:33;::::0;::::1;10324:18;10345:33:::0;;;:24:::1;:33;::::0;;;;;;;:44:::1;::::0;;::::1;::::0;;;;;;;;10234:79;;-1:-1:-1;10345:44:76::1;10407:24:::0;10399:70:::1;;;;-1:-1:-1::0;;;10399:70:76::1;;;;;;;:::i;:::-;10480:33;::::0;::::1;10536:1;10480:33:::0;;;:24:::1;:33;::::0;;;;;;;:45:::1;::::0;;::::1;::::0;;;;;;;;:58;;;;;::::1;::::0;;;10548:33;;;:24:::1;:33:::0;;;;;:44;;::::1;::::0;;;;;;;;;;:57;;;;::::1;::::0;;;10621:53;::::1;::::0;10536:1;;10621:53:::1;10689:48;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;11052:56;::::0;;;;11029:17:::1;::::0;11052:47:::1;::::0;::::1;::::0;::::1;::::0;:56:::1;::::0;11100:7;;11052:56:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11028:80;;;11139:9;11151:1;11139:13;11126:9;:26;;11118:78;;;;-1:-1:-1::0;;;11118:78:76::1;;;;;;;:::i;:::-;11207:100;::::0;;;;:39:::1;::::0;::::1;::::0;::::1;::::0;11255:9;;11207:100:::1;::::0;11267:9;;11278:7;;11295:10:::1;::::0;11207:100:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11317:101:76::1;::::0;;;;:39:::1;::::0;::::1;::::0;-1:-1:-1;11317:39:76::1;::::0;-1:-1:-1;11365:9:76;;-1:-1:-1;11317:101:76::1;::::0;11377:10;;11389:7;;11406:10:::1;::::0;11317:101:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;11509:21:76::1;::::0;-1:-1:-1;;11544:20:76;;;-1:-1:-1;11540:98:76::1;::::0;-1:-1:-1;11540:98:76::1;11580:47;11598:10;11610:16;11580:17;:47::i;:::-;2643:1:63;;;;2654:19:::0;:17;:19::i;:::-;9926:1718:76;;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;9498:380:76:-;2276:21:46;:19;:21::i;:::-;2613:20:63::1;:18;:20::i;:::-;9669:29:76::2;9688:9;9669:18;:29::i;:::-;9661:97;;;;-1:-1:-1::0;;;9661:97:76::2;;;;;;;:::i;:::-;9769:33;::::0;;::::2;;::::0;;;:22:::2;:33;::::0;;;;;:44;;;::::2;::::0;;::::2;::::0;;::::2;::::0;;9828:43;::::2;::::0;9769:33;9828:43:::2;2654:19:63::1;:17;:19::i;1297:109:51:-:0;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;4146:165:76:-;4260:33;;4234:7;4260:33;;;:24;:33;;;;;;;;:44;;;;;;;;;;;;;;4146:165::o;4359:144::-;4463:33;;;;4437:7;4463:33;;;:22;:33;;;;;;;;4359:144::o;3091:272::-;3154:26;;:::i;:::-;3192;3221:17;:15;:17::i;:::-;3192:46;;3248:24;3275:12;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3312:44;;;;;3248:47;;-1:-1:-1;3312:26:76;;;;;;:44;;3248:47;;3312:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3305:51;;;;3091:272;:::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;11866:225:76:-;11935:4;11951:38;11992:17;:15;:17::i;:::-;:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12049:35;;;;;11951:81;;-1:-1:-1;12049:24:76;;;;;;:35;;12074:9;;12049:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12042:42;11866:225;-1:-1:-1;;;11866:225:76:o;2421:369:56:-;2502:78;2536:6;2511:21;:31;;11425:3:31;2502:8:56;:78::i;:::-;2669:12;2687:9;:14;;2710:6;2687:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:54;;;2732:51;2741:7;11488:3:31;2732:8:56;:51::i;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;2524:70::-;2420:181;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;1692:3378:31:-;-1:-1:-1;;;1754:18:31;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;790:132::-;867:13;;23412:2;23401:21;;;25901:34;;25891:2;;25949:1;;25939:12;1773:128;1839:20;;23506:6;23495:18;;26023:34;;26013:2;;26071:1;;26061:12;2049:241;;2153:2;2141:9;2132:7;2128:23;2124:32;2121:2;;;-1:-1;;2159:12;2121:2;85:6;72:20;97:33;124:5;97:33;:::i;2297:366::-;;;2418:2;2406:9;2397:7;2393:23;2389:32;2386:2;;;-1:-1;;2424:12;2386:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2476:63;-1:-1;2576:2;2615:22;;72:20;97:33;72:20;97:33;:::i;:::-;2584:63;;;;2380:283;;;;;:::o;2670:489::-;;;;2807:2;2795:9;2786:7;2782:23;2778:32;2775:2;;;-1:-1;;2813:12;2775:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2865:63;-1:-1;2965:2;3004:22;;72:20;97:33;72:20;97:33;:::i;:::-;2973:63;-1:-1;3091:52;3135:7;3073:2;3111:22;;3091:52;:::i;:::-;3081:62;;2769:390;;;;;:::o;3166:364::-;;;3286:2;3274:9;3265:7;3261:23;3257:32;3254:2;;;-1:-1;;3292:12;3254:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3344:63;-1:-1;3462:52;3506:7;3444:2;3482:22;;3462:52;:::i;:::-;3452:62;;3248:282;;;;;:::o;3537:257::-;;3649:2;3637:9;3628:7;3624:23;3620:32;3617:2;;;-1:-1;;3655:12;3617:2;223:6;217:13;25340:5;22840:13;22833:21;25318:5;25315:32;25305:2;;-1:-1;;25351:12;3801:239;;3904:2;3892:9;3883:7;3879:23;3875:32;3872:2;;;-1:-1;;3910:12;3872:2;356:6;343:20;23017:66;25462:5;23006:78;25438:5;25435:34;25425:2;;-1:-1;;25473:12;4047:303;;4182:2;4170:9;4161:7;4157:23;4153:32;4150:2;;;-1:-1;;4188:12;4150:2;516:6;510:13;528:53;575:5;528:53;:::i;4683:310::-;;4821:3;4809:9;4800:7;4796:23;4792:33;4789:2;;;-1:-1;;4828:12;4789:2;22044;22038:9;4821:3;22074:6;22070:17;22181:6;22169:10;22166:22;22145:18;22133:10;22130:34;22127:62;22124:2;;;-1:-1;;22192:12;22124:2;22044;22211:22;1223:59;1278:3;1254:22;1223:59;:::i;:::-;1205:16;1198:85;1378:59;1433:3;1345:2;1413:9;1409:22;1378:59;:::i;:::-;1345:2;1364:5;1360:16;1353:85;22044:2;1566:9;1562:22;1986:13;22044:2;1516:5;1512:16;1505:86;1651:2;1720:9;1716:22;1986:13;1651:2;1670:5;1666:16;1659:86;4880:97;;;;4783:210;;;;:::o;5000:263::-;;5115:2;5103:9;5094:7;5090:23;5086:32;5083:2;;;-1:-1;;5121:12;5083:2;-1:-1;1986:13;;5077:186;-1:-1;5077:186::o;5270:399::-;;;5402:2;5390:9;5381:7;5377:23;5373:32;5370:2;;;-1:-1;;5408:12;5370:2;-1:-1;;1986:13;;5571:2;5621:22;;;1986:13;;;;;-1:-1;5364:305::o;12949:387::-;6011:37;;;23017:66;23006:78;13200:2;13191:12;;6306:56;13300:11;;;13091:245::o;13343:379::-;13707:10;13531:191::o;13729:222::-;23598:42;23587:54;;;;5763:45;;13856:2;13841:18;;13827:124::o;13958:472::-;23598:42;23587:54;;;5763:45;;23506:6;23495:18;;;;14317:2;14302:18;;12671:36;23587:54;;;14416:2;14401:18;;5763:45;14155:2;14140:18;;14126:304::o;14437:333::-;23598:42;23587:54;;;;5763:45;;14756:2;14741:18;;6011:37;14592:2;14577:18;;14563:207::o;14777:222::-;6011:37;;;14904:2;14889:18;;14875:124::o;15006:444::-;6011:37;;;23598:42;23587:54;;;15353:2;15338:18;;5763:45;23587:54;15436:2;15421:18;;5763:45;15189:2;15174:18;;15160:290::o;16553:416::-;16753:2;16767:47;;;7418:2;16738:18;;;22502:19;7454:34;22542:14;;;7434:55;7523:5;7509:12;;;7502:27;7548:12;;;16724:245::o;16976:416::-;17176:2;17190:47;;;7799:2;17161:18;;;22502:19;7835:34;22542:14;;;7815:55;7904:18;7890:12;;;7883:40;7942:12;;;17147:245::o;17399:416::-;17599:2;17613:47;;;17584:18;;;22502:19;8229:34;22542:14;;;8209:55;8283:12;;;17570:245::o;17822:416::-;18022:2;18036:47;;;8534:2;18007:18;;;22502:19;8570:34;22542:14;;;8550:55;8639:9;8625:12;;;8618:31;8668:12;;;17993:245::o;18245:416::-;18445:2;18459:47;;;8919:2;18430:18;;;22502:19;8955:34;22542:14;;;8935:55;9024:19;9010:12;;;9003:41;9063:12;;;18416:245::o;18668:416::-;18868:2;18882:47;;;9314:2;18853:18;;;22502:19;9350:34;22542:14;;;9330:55;9419:20;9405:12;;;9398:42;9459:12;;;18839:245::o;19091:416::-;19291:2;19305:47;;;9710:2;19276:18;;;22502:19;9746:34;22542:14;;;9726:55;9815:3;9801:12;;;9794:25;9838:12;;;19262:245::o;19514:416::-;19714:2;19728:47;;;10089:2;19699:18;;;22502:19;10125:34;22542:14;;;10105:55;10194:26;10180:12;;;10173:48;10240:12;;;19685:245::o;19937:416::-;20137:2;20151:47;;;10491:2;20122:18;;;22502:19;10527:34;22542:14;;;10507:55;10596:12;10582;;;10575:34;10628:12;;;20108:245::o;20360:416::-;20560:2;20574:47;;;10879:2;20545:18;;;22502:19;10915:34;22542:14;;;10895:55;10984:25;10970:12;;;10963:47;11029:12;;;20531:245::o;20783:416::-;20983:2;20997:47;;;11585:2;20968:18;;;22502:19;11621:34;22542:14;;;11601:55;11690:22;11676:12;;;11669:44;11732:12;;;20954:245::o;21206:315::-;;21379:3;21368:9;21364:19;21356:27;;12032:16;12026:23;23412:2;23401:21;7152:3;7145:36;12196:4;12189:5;12185:16;12179:23;23412:2;23401:21;12196:4;12258:3;12254:14;7145:36;12346:4;12339:5;12335:16;12329:23;12346:4;12410:3;12406:14;6011:37;12499:4;12492:5;12488:16;12482:23;12499:4;12563:3;12559:14;6011:37;21350:171;;;;:::o;21528:218::-;23506:6;23495:18;;;;12671:36;;21653:2;21638:18;;21624:122::o;25135:117::-;23598:42;25222:5;23587:54;25197:5;25194:35;25184:2;;25243:1;;25233:12"},"methodIdentifiers":{"clearNetworkRemapping(address,uint16)":"76601a18","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getLocalUser(address,uint16)":"70d1bd17","getLockedEnd(address)":"3e7df7c8","getOmniVotingEscrowAdaptor()":"5e5543be","getRemappingManager(address)":"ee98b1e7","getRemoteUser(address,uint16)":"bda75c38","getTotalSupplyPoint()":"f6f4a332","getUserPoint(address)":"71628bfd","getVault()":"8d928af8","getVotingEscrow()":"08b0308a","setNetworkRemapping(address,address,uint16)":"21861fde","setNetworkRemappingManager(address,address)":"a9f3f44e"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IVotingEscrow\",\"name\":\"votingEscrow\",\"type\":\"address\"},{\"internalType\":\"contract IOmniVotingEscrowAdaptor\",\"name\":\"omniVotingEscrowAdaptor\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"AddressDelegateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"AddressMappingUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"RemoteAddressMappingCleared\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"clearNetworkRemapping\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"getLocalUser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getLockedEnd\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOmniVotingEscrowAdaptor\",\"outputs\":[{\"internalType\":\"contract IOmniVotingEscrowAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"}],\"name\":\"getRemappingManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"getRemoteUser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalSupplyPoint\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserPoint\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"remoteUser\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"setNetworkRemapping\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"setNetworkRemappingManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"For each network (chainId), we maintain a mapping between local (Ethereum) and remote (L2) addresses. This contract remaps balance queries on remote network addresses to their corresponding local addresses. Users able to call this contract can set their own mappings, or delegate this function to another account if they cannot.\",\"kind\":\"dev\",\"methods\":{\"clearNetworkRemapping(address,uint16)\":{\"details\":\"This is intended to discourage and also allow recovery from griefing attacks. If griefing occurs then the griefer can be removed from Smart Wallet Checker and have their remappings erased. The local user can always clear their own mapping, regardless the state of the Smart Wallet Checker.\",\"params\":{\"chainId\":\"- The chain id of the network to erase.\",\"localUser\":\"- The address of the local user to erase.\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getLocalUser(address,uint16)\":{\"details\":\"Returns `address(0)` if the remapping does not exist for the given remote user.\",\"params\":{\"chainId\":\"- The chain ID of the remote network.\",\"remoteUser\":\"- Address of the user on the remote chain corresponding to the local address.\"}},\"getLockedEnd(address)\":{\"details\":\"The returned value is taken directly from the voting escrow.\"},\"getRemappingManager(address)\":{\"params\":{\"localUser\":\"- Address of the user on the local chain with a remapping manager.\"}},\"getRemoteUser(address,uint16)\":{\"details\":\"Returns `address(0)` if the remapping does not exist for the given local user.\",\"params\":{\"chainId\":\"- The chain ID of the remote network.\",\"localUser\":\"- Address of the user on the local chain corresponding to the remote address.\"}},\"getTotalSupplyPoint()\":{\"details\":\"We return the total supply as a Point to allow extrapolating this into the future. Note that this extrapolation will become invalid when crossing weeks, since we're not taking into account veBAL locks that expire then.\"},\"getUserPoint(address)\":{\"details\":\"We return the balance as a Point to allow extrapolating this into the future.\"},\"setNetworkRemapping(address,address,uint16)\":{\"details\":\"In order to set up a remapping on this contract, `localUser` must be a smart contract which has been allowlisted to hold veBAL. EOAs are expected to set up any delegation of their veBAL on L2s directly.\",\"params\":{\"chainId\":\"- The chain id of the remote chain on which `remoteUser` resides.\",\"localUser\":\"- The address of a contract allowlisted on the `SmartWalletChecker`.\",\"remoteUser\":\"- The address to receive `localUser`'s balance of veBAL on the remote chain.\"}},\"setNetworkRemappingManager(address,address)\":{\"details\":\"This is intended to handle contracts which cannot interact with this contract directly.\",\"params\":{\"delegate\":\"- The address which is allowed to manage remote users to be linked to `localUser`.\",\"localUser\":\"- The address of a contract allowlisted on the `SmartWalletChecker`.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"clearNetworkRemapping(address,uint16)\":{\"notice\":\"Clears a local user's mapping for a particular network.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getLocalUser(address,uint16)\":{\"notice\":\"Returns the local user corresponding to an address on a remote chain.\"},\"getLockedEnd(address)\":{\"notice\":\"Get timestamp when `user`'s lock finishes.\"},\"getOmniVotingEscrowAdaptor()\":{\"notice\":\"Returns Omni Voting Escrow Adaptor contract address, which interfaces with the gateway to bridge veBAL balances to L2s.\"},\"getRemappingManager(address)\":{\"notice\":\"Gets the account that can set a remapping for a given local user.\"},\"getRemoteUser(address,uint16)\":{\"notice\":\"Returns the remote user corresponding to an address on the local chain.\"},\"getTotalSupplyPoint()\":{\"notice\":\"Returns the current total supply of veBAL as a Point.\"},\"getUserPoint(address)\":{\"notice\":\"Returns a user's current veBAL balance as a Point. Note that we don't apply any remappings in this query. The returned value is taken directly from the voting escrow.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"getVotingEscrow()\":{\"notice\":\"Returns Voting Escrow contract address.\"},\"setNetworkRemapping(address,address,uint16)\":{\"notice\":\"Sets up a mapping from `localUser`'s veBAL balance to `remoteUser` for chain `chainId`.\"},\"setNetworkRemappingManager(address,address)\":{\"notice\":\"Sets an address to manage the mapping for a given local user on their behalf.\"}},\"notice\":\"This contract allows veBAL holders on Ethereum to assign their balance to designated addresses on each L2. This is intended for smart contracts that are not deployed to the same address on all networks. EOA's are expected to either use the same address, or manage delegation on L2 networks themselves.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/VotingEscrowRemapper.sol\":\"VotingEscrowRemapper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrowAdaptor.sol\":{\"keccak256\":\"0xd3a86f1eb7aadba25221c8935ae888816487ea6ba4d04c3a5f4789d7b061ac90\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ca65ef1eebc274a1b28abee0d1514f4c18334583c13e39672a80201f0481304f\",\"dweb:/ipfs/QmSs5kDN8rGfbCmkQihP1uUbTtAc9wfSzSuPTpp6dErVWk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrowRemapper.sol\":{\"keccak256\":\"0x357cb8cbb0bb993b47725e25f19af79410e289c368ef29a7a5effbead655c4ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9c9742ce6bf697f8083621b91f63b1f3232b571232dc8c56d5444e59cb7f0fe9\",\"dweb:/ipfs/QmRqTLCZ6vBjhbqVySxqeWXMpyULKZYTsDKHgvfGN3cz2y\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/VotingEscrowRemapper.sol\":{\"keccak256\":\"0x65ad3c681d61656d73b877a5c6d7975666e12386ae9bde9d97e33921fbea512b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b6f098acf9056f0efd3a6b1b25be887c07f0f21dbcde2d648e3294299a30c4b9\",\"dweb:/ipfs/QmTNZygNXTrmSitTG2Jo86k99uV29V5vBCfwAf5zWDLbUE\"]}},\"version\":1}"}},"contracts/admin/AuthorizerAdaptor.sol":{"AuthorizerAdaptor":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b5060405161070e38038061070e8339818101604052602081101561003357600080fd5b50516001600055306080526001600160601b031960609190911b1660a05260805160a05160601c610697610077600039806102ff52508061029252506106976000f3fe60806040526004361061003f5760003560e01c80634036176a14610044578063851c1bb3146101465780638d928af8146101a4578063aaabadc5146101e2575b600080fd5b6100d16004803603604081101561005a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561009257600080fd5b8201836020820111156100a457600080fd5b803590602001918460018302840111640100000000831117156100c657600080fd5b5090925090506101f7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561010b5781810151838201526020016100f3565b50505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015257600080fd5b506101926004803603602081101561016957600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661028c565b60408051918252519081900360200190f35b3480156101b057600080fd5b506101b96102fd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101ee57600080fd5b506101b9610321565b60606102016103a1565b60643561022261021a6102138361028c565b33886103ba565b610191610484565b61027a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505073ffffffffffffffffffffffffffffffffffffffff881691905034610496565b915050610285610582565b9392505050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061032b6102fd565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561037057600080fd5b505afa158015610384573d6000803e3d6000fd5b505050506040513d602081101561039a57600080fd5b5051905090565b6103b360026000541415610190610484565b6002600055565b60006103c4610321565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848585856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561045057600080fd5b505afa158015610464573d6000803e3d6000fd5b505050506040513d602081101561047a57600080fd5b5051949350505050565b816104925761049281610589565b5050565b6060600060608573ffffffffffffffffffffffffffffffffffffffff1684866040518082805190602001908083835b6020831061050257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016104c5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610564576040519150601f19603f3d011682016040523d82523d6000602084013e610569565b606091505b509150915061057882826105b6565b9695505050505050565b6001600055565b6105b3817f42414c00000000000000000000000000000000000000000000000000000000006105e6565b50565b606082156105c55750806105e0565b8151156105d55781518083602001fd5b6105e06101ae610589565b92915050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea264697066735822122089acb3cfb6556c8140f79bef2040ac142b1e91400d1bdadcf04c70f24f58173664736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x70E CODESIZE SUB DUP1 PUSH2 0x70E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x0 SSTORE ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x697 PUSH2 0x77 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2FF MSTORE POP DUP1 PUSH2 0x292 MSTORE POP PUSH2 0x697 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4036176A EQ PUSH2 0x44 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1E2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x138 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x192 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x28C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x321 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x201 PUSH2 0x3A1 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD PUSH2 0x222 PUSH2 0x21A PUSH2 0x213 DUP4 PUSH2 0x28C JUMP JUMPDEST CALLER DUP9 PUSH2 0x3BA JUMP JUMPDEST PUSH2 0x191 PUSH2 0x484 JUMP JUMPDEST PUSH2 0x27A DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 SWAP1 POP CALLVALUE PUSH2 0x496 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x285 PUSH2 0x582 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32B PUSH2 0x2FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x384 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3B3 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x484 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C4 PUSH2 0x321 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x450 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x464 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x47A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x492 JUMPI PUSH2 0x492 DUP2 PUSH2 0x589 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 DUP7 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x502 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4C5 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x564 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x569 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x578 DUP3 DUP3 PUSH2 0x5B6 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x5B3 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x5E6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x5C5 JUMPI POP DUP1 PUSH2 0x5E0 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x5D5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x5E0 PUSH2 0x1AE PUSH2 0x589 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 0xAC 0xB3 0xCF 0xB6 SSTORE PUSH13 0x8140F79BEF2040AC142B1E9140 0xD SHL 0xDA 0xDC CREATE 0x4C PUSH17 0xF24F58173664736F6C6343000701003300 ","sourceMap":"2213:5876:77:-:0;;;2409:237;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2409:237:77;2070:1:63;2175:7;:22;2608:4:77;2559:56;;-1:-1:-1;;;;;;2625:14:77;;;;;;;;2213:5876;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"10865":[{"length":32,"start":658}],"10867":[{"length":32,"start":767}]},"linkReferences":{},"object":"60806040526004361061003f5760003560e01c80634036176a14610044578063851c1bb3146101465780638d928af8146101a4578063aaabadc5146101e2575b600080fd5b6100d16004803603604081101561005a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561009257600080fd5b8201836020820111156100a457600080fd5b803590602001918460018302840111640100000000831117156100c657600080fd5b5090925090506101f7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561010b5781810151838201526020016100f3565b50505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015257600080fd5b506101926004803603602081101561016957600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661028c565b60408051918252519081900360200190f35b3480156101b057600080fd5b506101b96102fd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101ee57600080fd5b506101b9610321565b60606102016103a1565b60643561022261021a6102138361028c565b33886103ba565b610191610484565b61027a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505073ffffffffffffffffffffffffffffffffffffffff881691905034610496565b915050610285610582565b9392505050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061032b6102fd565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561037057600080fd5b505afa158015610384573d6000803e3d6000fd5b505050506040513d602081101561039a57600080fd5b5051905090565b6103b360026000541415610190610484565b6002600055565b60006103c4610321565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848585856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561045057600080fd5b505afa158015610464573d6000803e3d6000fd5b505050506040513d602081101561047a57600080fd5b5051949350505050565b816104925761049281610589565b5050565b6060600060608573ffffffffffffffffffffffffffffffffffffffff1684866040518082805190602001908083835b6020831061050257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016104c5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610564576040519150601f19603f3d011682016040523d82523d6000602084013e610569565b606091505b509150915061057882826105b6565b9695505050505050565b6001600055565b6105b3817f42414c00000000000000000000000000000000000000000000000000000000006105e6565b50565b606082156105c55750806105e0565b8151156105d55781518083602001fd5b6105e06101ae610589565b92915050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea264697066735822122089acb3cfb6556c8140f79bef2040ac142b1e91400d1bdadcf04c70f24f58173664736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4036176A EQ PUSH2 0x44 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1E2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x138 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x192 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x28C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x321 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x201 PUSH2 0x3A1 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD PUSH2 0x222 PUSH2 0x21A PUSH2 0x213 DUP4 PUSH2 0x28C JUMP JUMPDEST CALLER DUP9 PUSH2 0x3BA JUMP JUMPDEST PUSH2 0x191 PUSH2 0x484 JUMP JUMPDEST PUSH2 0x27A DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 SWAP1 POP CALLVALUE PUSH2 0x496 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x285 PUSH2 0x582 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32B PUSH2 0x2FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x384 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3B3 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x484 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C4 PUSH2 0x321 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x450 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x464 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x47A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x492 JUMPI PUSH2 0x492 DUP2 PUSH2 0x589 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 DUP7 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x502 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4C5 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x564 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x569 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x578 DUP3 DUP3 PUSH2 0x5B6 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x5B3 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x5E6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x5C5 JUMPI POP DUP1 PUSH2 0x5E0 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x5D5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x5E0 PUSH2 0x1AE PUSH2 0x589 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 0xAC 0xB3 0xCF 0xB6 SSTORE PUSH13 0x8140F79BEF2040AC142B1E9140 0xD SHL 0xDA 0xDC CREATE 0x4C PUSH17 0xF24F58173664736F6C6343000701003300 ","sourceMap":"2213:5876:77:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4444:3643;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4444:3643:77;;-1:-1:-1;4444:3643:77;-1:-1:-1;4444:3643:77;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3769:162;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3769:162:77;;;;:::i;:::-;;;;;;;;;;;;;;;;2710:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2858:118;;;;;;;;;;;;;:::i;4444:3643::-;4592:12;2613:20:63;:18;:20::i;:::-;7480:3:77::1;7467:17;7835:91;7844:54;7856:21;7467:17:::0;7856:11:::1;:21::i;:::-;7879:10;7891:6;7844:11;:54::i;:::-;10270:3:31;7835:8:77;:91::i;:::-;8035:45;8064:4;;8035:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;8035:28:77::1;::::0;::::1;::::0;;-1:-1:-1;8070:9:77::1;8035:28;:45::i;:::-;8028:52;;;2654:19:63::0;:17;:19::i;:::-;4444:3643:77;;;;;:::o;3769:162::-;3873:50;;;3890:22;3873:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3863:61;;;;;3769:162;;;:::o;2710:88::-;2785:6;2710:88;:::o;2858:118::-;2913:11;2943:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2943:26:77;;-1:-1:-1;2858:118:77;:::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;2982:206:77:-;3106:4;3129:15;:13;:15::i;:::-;:26;;;3156:8;3166:7;3175:5;3129:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3129:52:77;;2982:206;-1:-1:-1;;;;2982:206:77:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;4012:348:56:-;4141:12;4225;4239:23;4266:6;:11;;4286:5;4294:4;4266:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4224:75;;;;4316:37;4333:7;4342:10;4316:16;:37::i;:::-;4309:44;4012:348;-1:-1:-1;;;;;;4012:348:56:o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;5057:714:56:-;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:56;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;12091:3:31;5703:7:56;:37::i;:::-;5057:714;;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getVault()":"8d928af8","performAction(address,bytes)":"4036176a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"performAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"When calculating the actionId to call a function on a target contract, it must be calculated as if it were to be called on this adaptor. This can be done by passing the function selector to the `getActionId` function.\",\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"As the contracts managed by this adaptor don't have action ID disambiguators, we use the adaptor's globally. This means that contracts with the same function selector will have a matching action ID: if granularity is required then permissions must not be granted globally in the Authorizer.\",\"params\":{\"selector\":\"- The 4 byte selector of the function to be called using `performAction`\"},\"returns\":{\"_0\":\"The associated action ID\"}},\"performAction(address,bytes)\":{\"params\":{\"data\":\"- Calldata to be sent to the target contract\",\"target\":\"- Address of the contract to be called\"},\"returns\":{\"_0\":\"The bytes encoded return value from the performed function call\"}}},\"title\":\"Authorizer Adaptor WARNING: this contract contains a *critical bug* that can lead into exploits where it checks for permissions incorrectly. It should *never* be used by itself. We keep a copy of it in the repository, including the bug and all original comments (some of which are incorrect due to the bug), both for historical reasons and because it is part of our immutable infrastructure. See the `AuthorizerAdaptorEntrypoint` contract for more information on how we use this contract safely.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getActionId(bytes4)\":{\"notice\":\"Returns the action ID associated with calling a given function through this adaptor\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"performAction(address,bytes)\":{\"notice\":\"Performs an arbitrary function call on a target contract, provided the caller is authorized to do so. This function should not be called directly as that will result in an unconditional revert: instead, use `AuthorizerAdaptorEntrypoint.performAction`.\"}},\"notice\":\"This contract is intended to act as an adaptor between systems which expect a single admin address and the Balancer Authorizer such that the Authorizer may grant/revoke admin powers to unlimited addresses. The permissions the Authorizer can grant are granular such they may be global or specific to a particular contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/admin/AuthorizerAdaptor.sol\":\"AuthorizerAdaptor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/admin/AuthorizerAdaptor.sol\":{\"keccak256\":\"0xa7214ccaa5b1a2e76bbed39b86745cb54043d64b9c4d765d57cefae03daddad1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cb4359f73d7ab5db66ff98062aae52957508541e0718da028dfde7832d1249ed\",\"dweb:/ipfs/QmY8FUxMgm7bkFXWz8pX5dyNpd4oPo5Z8DecY7m26byQSH\"]}},\"version\":1}"}},"contracts/admin/AuthorizerAdaptorEntrypoint.sol":{"AuthorizerAdaptorEntrypoint":{"abi":[{"inputs":[{"internalType":"contract IAuthorizerAdaptor","name":"adaptor","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"ActionPerformed","type":"event"},{"inputs":[{"internalType":"bytes32","name":"actionId","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"where","type":"address"}],"name":"canPerform","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizerAdaptor","outputs":[{"internalType":"contract IAuthorizerAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b50604051610a54380380610a548339818101604052602081101561003357600080fd5b50516001600160601b0319606082901b16608052604080516311b2515f60e31b815290516001600160a01b03831691638d928af8916004808301926020929190829003018186803b15801561008757600080fd5b505afa15801561009b573d6000803e3d6000fd5b505050506040513d60208110156100b157600080fd5b5051606081811b6001600160601b03191660a052608051901c91506001600160a01b03166109626100f2600039806106e252508061085052506109626000f3fe6080604052600436106100655760003560e01c80639be2a884116100435780639be2a88414610208578063aaabadc51461026a578063e758d36b1461027f57610065565b80634036176a1461006a578063851c1bb31461016c5780638d928af8146101ca575b600080fd5b6100f76004803603604081101561008057600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156100b857600080fd5b8201836020820111156100ca57600080fd5b803590602001918460018302840111640100000000831117156100ec57600080fd5b509092509050610294565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017857600080fd5b506101b86004803603602081101561018f57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610635565b60408051918252519081900360200190f35b3480156101d657600080fd5b506101df6106e0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561021457600080fd5b506102566004803603606081101561022b57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff60208201358116916040013516610704565b604080519115158252519081900360200190f35b34801561027657600080fd5b506101df6107ce565b34801561028b57600080fd5b506101df61084e565b60606102a560048310156069610872565b60006018848460038181106102b657fe5b909101357fff000000000000000000000000000000000000000000000000000000000000001690911c90506010858560028181106102f057fe5b909101357fff000000000000000000000000000000000000000000000000000000000000001690911c905060088686600181811061032a57fe5b909101357fff000000000000000000000000000000000000000000000000000000000000001690911c9050868660008161036057fe5b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191617171790506103af6103a76103a083610635565b3388610704565b610191610872565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167fd4634f1cb58f0ea9cb6e1838192e5c3077115fcc17f0f6af3db4757114f42739878760405180806020018281038252848482818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039550909350505050a461048361084e565b73ffffffffffffffffffffffffffffffffffffffff16634036176a348787876040518563ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509450505050506000604051808303818588803b15801561051f57600080fd5b505af1158015610533573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561057b57600080fd5b810190808051604051939291908464010000000082111561059b57600080fd5b9083019060208201858111156105b057600080fd5b82516401000000008111828201881017156105ca57600080fd5b82525081516020918201929091019080838360005b838110156105f75781810151838201526020016105df565b50505050905090810190601f1680156106245780820380516001836020036101000a031916815260200191505b506040525050509150509392505050565b600061063f61084e565b73ffffffffffffffffffffffffffffffffffffffff1663851c1bb3836040518263ffffffff1660e01b815260040180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060206040518083038186803b1580156106ae57600080fd5b505afa1580156106c2573d6000803e3d6000fd5b505050506040513d60208110156106d857600080fd5b505192915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061070e6107ce565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848585856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561079a57600080fd5b505afa1580156107ae573d6000803e3d6000fd5b505050506040513d60208110156107c457600080fd5b5051949350505050565b60006107d86106e0565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561081d57600080fd5b505afa158015610831573d6000803e3d6000fd5b505050506040513d602081101561084757600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b816108805761088081610884565b5050565b6108ae817f42414c00000000000000000000000000000000000000000000000000000000006108b1565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220f9d4a5a41e93bd4491eb24316a69b41ca4123c15eca1e37164b479096f0f777b64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xA54 CODESIZE SUB DUP1 PUSH2 0xA54 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH1 0x80 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x11B2515F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0x8D928AF8 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 DUP2 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD SWAP1 SHR SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x962 PUSH2 0xF2 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x6E2 MSTORE POP DUP1 PUSH2 0x850 MSTORE POP PUSH2 0x962 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9BE2A884 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x9BE2A884 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x26A JUMPI DUP1 PUSH4 0xE758D36B EQ PUSH2 0x27F JUMPI PUSH2 0x65 JUMP JUMPDEST DUP1 PUSH4 0x4036176A EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1CA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x131 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x635 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DF PUSH2 0x6E0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 ADD CALLDATALOAD AND PUSH2 0x704 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DF PUSH2 0x7CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DF PUSH2 0x84E JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2A5 PUSH1 0x4 DUP4 LT ISZERO PUSH1 0x69 PUSH2 0x872 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x18 DUP5 DUP5 PUSH1 0x3 DUP2 DUP2 LT PUSH2 0x2B6 JUMPI INVALID JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 SWAP2 SHR SWAP1 POP PUSH1 0x10 DUP6 DUP6 PUSH1 0x2 DUP2 DUP2 LT PUSH2 0x2F0 JUMPI INVALID JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 SWAP2 SHR SWAP1 POP PUSH1 0x8 DUP7 DUP7 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x32A JUMPI INVALID JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 SWAP2 SHR SWAP1 POP DUP7 DUP7 PUSH1 0x0 DUP2 PUSH2 0x360 JUMPI INVALID JUMPDEST SWAP1 POP ADD CALLDATALOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND OR OR OR SWAP1 POP PUSH2 0x3AF PUSH2 0x3A7 PUSH2 0x3A0 DUP4 PUSH2 0x635 JUMP JUMPDEST CALLER DUP9 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x872 JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH32 0xD4634F1CB58F0EA9CB6E1838192E5C3077115FCC17F0F6AF3DB4757114F42739 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG4 PUSH2 0x483 PUSH2 0x84E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4036176A CALLVALUE DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP5 POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x533 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x5CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5DF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x624 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP POP SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63F PUSH2 0x84E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x851C1BB3 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH2 0x7CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x79A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D8 PUSH2 0x6E0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x81D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x831 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x880 JUMPI PUSH2 0x880 DUP2 PUSH2 0x884 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x8AE DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x8B1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 0xD4 0xA5 LOG4 0x1E SWAP4 0xBD DIFFICULTY SWAP2 0xEB 0x24 BALANCE PUSH11 0x69B41CA4123C15ECA1E371 PUSH5 0xB479096F0F PUSH24 0x7B64736F6C63430007010033000000000000000000000000 ","sourceMap":"1547:3001:78:-:0;;;1856:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1856:112:78;-1:-1:-1;;;;;;1906:18:78;;;;;;;1943;;;-1:-1:-1;;;1943:18:78;;;;-1:-1:-1;;;;;1906:18:78;;;1943:16;;:18;;;;;1856:112;;1943:18;;;;;;;1906;1943;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1943:18:78;1934:27;;;;-1:-1:-1;;;;;;1934:27:78;;;1547:3001;;;;;-1:-1:-1;;;;;;1547:3001:78;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"11015":[{"length":32,"start":2128}],"11017":[{"length":32,"start":1762}]},"linkReferences":{},"object":"6080604052600436106100655760003560e01c80639be2a884116100435780639be2a88414610208578063aaabadc51461026a578063e758d36b1461027f57610065565b80634036176a1461006a578063851c1bb31461016c5780638d928af8146101ca575b600080fd5b6100f76004803603604081101561008057600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156100b857600080fd5b8201836020820111156100ca57600080fd5b803590602001918460018302840111640100000000831117156100ec57600080fd5b509092509050610294565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017857600080fd5b506101b86004803603602081101561018f57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610635565b60408051918252519081900360200190f35b3480156101d657600080fd5b506101df6106e0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561021457600080fd5b506102566004803603606081101561022b57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff60208201358116916040013516610704565b604080519115158252519081900360200190f35b34801561027657600080fd5b506101df6107ce565b34801561028b57600080fd5b506101df61084e565b60606102a560048310156069610872565b60006018848460038181106102b657fe5b909101357fff000000000000000000000000000000000000000000000000000000000000001690911c90506010858560028181106102f057fe5b909101357fff000000000000000000000000000000000000000000000000000000000000001690911c905060088686600181811061032a57fe5b909101357fff000000000000000000000000000000000000000000000000000000000000001690911c9050868660008161036057fe5b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191617171790506103af6103a76103a083610635565b3388610704565b610191610872565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167fd4634f1cb58f0ea9cb6e1838192e5c3077115fcc17f0f6af3db4757114f42739878760405180806020018281038252848482818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039550909350505050a461048361084e565b73ffffffffffffffffffffffffffffffffffffffff16634036176a348787876040518563ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509450505050506000604051808303818588803b15801561051f57600080fd5b505af1158015610533573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561057b57600080fd5b810190808051604051939291908464010000000082111561059b57600080fd5b9083019060208201858111156105b057600080fd5b82516401000000008111828201881017156105ca57600080fd5b82525081516020918201929091019080838360005b838110156105f75781810151838201526020016105df565b50505050905090810190601f1680156106245780820380516001836020036101000a031916815260200191505b506040525050509150509392505050565b600061063f61084e565b73ffffffffffffffffffffffffffffffffffffffff1663851c1bb3836040518263ffffffff1660e01b815260040180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060206040518083038186803b1580156106ae57600080fd5b505afa1580156106c2573d6000803e3d6000fd5b505050506040513d60208110156106d857600080fd5b505192915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061070e6107ce565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848585856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561079a57600080fd5b505afa1580156107ae573d6000803e3d6000fd5b505050506040513d60208110156107c457600080fd5b5051949350505050565b60006107d86106e0565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561081d57600080fd5b505afa158015610831573d6000803e3d6000fd5b505050506040513d602081101561084757600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b816108805761088081610884565b5050565b6108ae817f42414c00000000000000000000000000000000000000000000000000000000006108b1565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220f9d4a5a41e93bd4491eb24316a69b41ca4123c15eca1e37164b479096f0f777b64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9BE2A884 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x9BE2A884 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x26A JUMPI DUP1 PUSH4 0xE758D36B EQ PUSH2 0x27F JUMPI PUSH2 0x65 JUMP JUMPDEST DUP1 PUSH4 0x4036176A EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1CA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x131 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x635 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DF PUSH2 0x6E0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 ADD CALLDATALOAD AND PUSH2 0x704 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DF PUSH2 0x7CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DF PUSH2 0x84E JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2A5 PUSH1 0x4 DUP4 LT ISZERO PUSH1 0x69 PUSH2 0x872 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x18 DUP5 DUP5 PUSH1 0x3 DUP2 DUP2 LT PUSH2 0x2B6 JUMPI INVALID JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 SWAP2 SHR SWAP1 POP PUSH1 0x10 DUP6 DUP6 PUSH1 0x2 DUP2 DUP2 LT PUSH2 0x2F0 JUMPI INVALID JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 SWAP2 SHR SWAP1 POP PUSH1 0x8 DUP7 DUP7 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x32A JUMPI INVALID JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 SWAP2 SHR SWAP1 POP DUP7 DUP7 PUSH1 0x0 DUP2 PUSH2 0x360 JUMPI INVALID JUMPDEST SWAP1 POP ADD CALLDATALOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND OR OR OR SWAP1 POP PUSH2 0x3AF PUSH2 0x3A7 PUSH2 0x3A0 DUP4 PUSH2 0x635 JUMP JUMPDEST CALLER DUP9 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x872 JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH32 0xD4634F1CB58F0EA9CB6E1838192E5C3077115FCC17F0F6AF3DB4757114F42739 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG4 PUSH2 0x483 PUSH2 0x84E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4036176A CALLVALUE DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP5 POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x533 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x5CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5DF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x624 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP POP SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63F PUSH2 0x84E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x851C1BB3 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH2 0x7CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x79A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D8 PUSH2 0x6E0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x81D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x831 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x880 JUMPI PUSH2 0x880 DUP2 PUSH2 0x884 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x8AE DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x8B1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 0xD4 0xA5 LOG4 0x1E SWAP4 0xBD DIFFICULTY SWAP2 0xEB 0x24 BALANCE PUSH11 0x69B41CA4123C15ECA1E371 PUSH5 0xB479096F0F PUSH24 0x7B64736F6C63430007010033000000000000000000000000 ","sourceMap":"1547:3001:78:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3224:1322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3224:1322:78;;-1:-1:-1;3224:1322:78;-1:-1:-1;3224:1322:78;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3073:145;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3073:145:78;;;;:::i;:::-;;;;;;;;;;;;;;;;1974:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2312:203;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2312:203:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2068:118;;;;;;;;;;;;;:::i;2192:114::-;;;;;;;;;;;;;:::i;3224:1322::-;3319:12;3687:52;3711:1;3696:16;;;5929:3:31;3687:8:78;:52::i;:::-;3749:15;3848:2;3836:4;;3841:1;3836:7;;;;;;;;;;;;;3829:21;;;;-1:-1:-1;3822:2:78;3810:4;;3815:1;3810:7;;;;;;;;;;;;;3803:21;;;;-1:-1:-1;3797:1:78;3785:4;;3790:1;3785:7;;;;;;;;;;;;;3778:20;;;;-1:-1:-1;3767:4:78;;3772:1;3767:4;:7;;;;;;;;;;;;:32;;;;:58;:84;3749:102;;3862:90;3871:53;3882:21;3894:8;3882:11;:21::i;:::-;3905:10;3917:6;3871:10;:53::i;:::-;10270:3:31;3862:8:78;:90::i;:::-;4006:6;3968:51;;3994:10;3968:51;;3984:8;3968:51;;;;4014:4;;3968:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3968:51:78;;-1:-1:-1;;;;3968:51:78;4469:22;:20;:22::i;:::-;:36;;;4514:9;4526:6;4534:4;;4469:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4469:70:78;;;;;;;;;;-1:-1:-1;4469:70:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4462:77;;;3224:1322;;;;;:::o;3073:145::-;3141:7;3167:22;:20;:22::i;:::-;:34;;;3202:8;3167:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3167:44:78;;3073:145;-1:-1:-1;;3073:145:78:o;1974:88::-;2049:6;1974:88;:::o;2312:203::-;2433:4;2456:15;:13;:15::i;:::-;:26;;;2483:8;2493:7;2502:5;2456:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2456:52:78;;2312:203;-1:-1:-1;;;;2312:203:78:o;2068:118::-;2123:11;2153:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2153:26:78;;-1:-1:-1;2068:118:78;:::o;2192:114::-;2291:8;2192:114;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"canPerform(bytes32,address,address)":"9be2a884","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getAuthorizerAdaptor()":"e758d36b","getVault()":"8d928af8","performAction(address,bytes)":"4036176a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"adaptor\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ActionPerformed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"actionId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"canPerform\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizerAdaptor\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"performAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"performAction(address,bytes)\":{\"params\":{\"data\":\"- Calldata to be sent to the target contract\",\"target\":\"- Address of the contract to be called\"},\"returns\":{\"_0\":\"The bytes encoded return value from the performed function call\"}}},\"title\":\"Authorizer Adaptor Entrypoint\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getActionId(bytes4)\":{\"notice\":\"Returns the action ID associated with calling a given function through the `AuthorizerAdaptor`. Note that even though the Adaptor's action IDs are not actually used by it (since the Authorizer ignores those values - see `TimelockAuthorizer.canPerform`), this contract reuses those IDs to simplify migrations and tooling. See `AuthorizerAdaptor.getActionId` for more information on how the action IDs are computed, and how functions with equal selectors are assigned the same action ID.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getAuthorizerAdaptor()\":{\"notice\":\"Returns the Authorizer Adaptor\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"performAction(address,bytes)\":{\"notice\":\"Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\"}},\"notice\":\"This contract exists as a fix for a critical bug in the `AuthorizerAdaptor` that could lead to escalation of privileges. The Entrypoint contract addresses this by working in combination with `TimelockAuthorizer` so that all Adaptor calls that are not made via the Entrypoint fail, while those that do happen through the Entrypoint check for permissions correctly.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/admin/AuthorizerAdaptorEntrypoint.sol\":\"AuthorizerAdaptorEntrypoint\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x25b2a2ad63f9aa59c45f1a81a2f79733b8dcdce268cc9b1ac03866396f4b0d17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://efe9f30e6cab81587b738089165050d35533926703f4ad1da0f86452a69874ce\",\"dweb:/ipfs/QmcJoNP8NAEefchpG3qs3CwMw1qhxBJTgBMY4KY6g6qfUa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/admin/AuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x8b688aa83e9133bc62afebabe7086e1591c1e5722693f52e51e352f2969b96ff\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bb9227c1551a113ffba8d0334dcdf8deffab1313709ad04209f87f62845d5ff1\",\"dweb:/ipfs/QmYfYmMZf6QFYUqe55XPqgegdSh84SUGRtxtSKDXVeG5MD\"]}},\"version\":1}"}},"contracts/admin/ChildChainGaugeTokenAdder.sol":{"ChildChainGaugeTokenAdder":{"abi":[{"inputs":[{"internalType":"contract IChildChainLiquidityGaugeFactory","name":"gaugeFactory","type":"address"},{"internalType":"contract IAuthorizerAdaptorEntrypoint","name":"authorizerAdaptorEntrypoint","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"contract IRewardsOnlyGauge","name":"gauge","type":"address"},{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"addTokenToGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizerAdaptorEntrypoint","outputs":[{"internalType":"contract IAuthorizerAdaptorEntrypoint","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"61010060405234801561001157600080fd5b50604051610eb8380380610eb8833981016040819052610030916100cd565b806001600160a01b0316638d928af86040518163ffffffff1660e01b815260040160206040518083038186803b15801561006957600080fd5b505afa15801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a19190610106565b306080526001600160601b0319606091821b811660a05291811b821660c0529190911b1660e052610141565b600080604083850312156100df578182fd5b82516100ea81610129565b60208401519092506100fb81610129565b809150509250929050565b600060208284031215610117578081fd5b815161012281610129565b9392505050565b6001600160a01b038116811461013e57600080fd5b50565b60805160a05160601c60c05160601c60e05160601c610d2c61018c6000398061023a528061033e52508060d152806105fa528061077a52508061014752508060f75250610d2c6000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80638d928af8116100505780638d928af8146100aa578063aaabadc5146100b2578063d411ee4d146100ba57610067565b80637afcf0e61461006c578063851c1bb31461008a575b600080fd5b6100746100cf565b6040516100819190610ae7565b60405180910390f35b61009d610098366004610974565b6100f3565b6040516100819190610b76565b610074610145565b610074610169565b6100cd6100c8366004610a6d565b6101f5565b005b7f000000000000000000000000000000000000000000000000000000000000000090565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610128929190610ab7565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610173610145565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156101b857600080fd5b505afa1580156101cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f09190610938565b905090565b6101fd6105af565b6040517fce3cc8bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063ce3cc8bd9061026f908690600401610ae7565b60206040518083038186803b15801561028757600080fd5b505afa15801561029b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bf9190610954565b6102fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f590610c71565b60405180910390fd5b6040517f90b2008700000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906390b2008790610373908790600401610ae7565b60206040518083038186803b15801561038b57600080fd5b505afa15801561039f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c39190610938565b90508373ffffffffffffffffffffffffffffffffffffffff1663bf88a6ff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561040b57600080fd5b505afa15801561041f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104439190610938565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146104a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f590610c3a565b6104b28184846105f8565b6104ba610919565b60005b600881101561059c576040517f54c49fe900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906354c49fe990610518908490600401610b76565b60206040518083038186803b15801561053057600080fd5b505afa158015610544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105689190610938565b82826008811061057457fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209290920201526001016104bd565b506105a8858383610760565b5050505050565b60006105de6000357fffffffff00000000000000000000000000000000000000000000000000000000166100f3565b90506105f56105ed82336107db565b610191610878565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634036176a8463661ab0b260e01b858562093a8060405160240161065593929190610c09565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526106e69291600401610b08565b600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261075a91908101906109b4565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690634036176a9085907f47d2d5d30000000000000000000000000000000000000000000000000000000090610655908790631afe22a6908890602401610bab565b60006107e5610169565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161082193929190610b7f565b60206040518083038186803b15801561083957600080fd5b505afa15801561084d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108719190610954565b9392505050565b81610886576108868161088a565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526105f5917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b6040518061010001604052806008906020820280368337509192915050565b600060208284031215610949578081fd5b815161087181610cd4565b600060208284031215610965578081fd5b81518015158114610871578182fd5b600060208284031215610985578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610871578182fd5b6000602082840312156109c5578081fd5b815167ffffffffffffffff808211156109dc578283fd5b818401915084601f8301126109ef578283fd5b8151818111156109fd578384fd5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610a3b578586fd5b604052818152838201602001871015610a52578485fd5b610a63826020830160208701610ca8565b9695505050505050565b600080600060608486031215610a81578182fd5b8335610a8c81610cd4565b92506020840135610a9c81610cd4565b91506040840135610aac81610cd4565b809150509250925092565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff84168252604060208301528251806040840152610b43816060850160208701610ca8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60006101408201905073ffffffffffffffffffffffffffffffffffffffff808616835260208581850152604084018560005b6008811015610bfc578151851683529183019190830190600101610bdd565b5050505050949350505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b6020808252601b908201527f4e6f74206f726967696e616c2067617567652073747265616d65720000000000604082015260600190565b6020808252600d908201527f496e76616c696420676175676500000000000000000000000000000000000000604082015260600190565b60005b83811015610cc3578181015183820152602001610cab565b8381111561075a5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146105f557600080fdfea26469706673582212200ac0acd000db4f5c215a05f2297f9ea83d548984d4c3977c769368cad0b0ec2764736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xEB8 CODESIZE SUB DUP1 PUSH2 0xEB8 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0xCD JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8D928AF8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x106 JUMP JUMPDEST ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE SWAP2 SWAP1 SWAP2 SHL AND PUSH1 0xE0 MSTORE PUSH2 0x141 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDF JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0xEA DUP2 PUSH2 0x129 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0xFB DUP2 PUSH2 0x129 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x117 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x122 DUP2 PUSH2 0x129 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x13E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0xD2C PUSH2 0x18C PUSH1 0x0 CODECOPY DUP1 PUSH2 0x23A MSTORE DUP1 PUSH2 0x33E MSTORE POP DUP1 PUSH1 0xD1 MSTORE DUP1 PUSH2 0x5FA MSTORE DUP1 PUSH2 0x77A MSTORE POP DUP1 PUSH2 0x147 MSTORE POP DUP1 PUSH1 0xF7 MSTORE POP PUSH2 0xD2C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0xD411EE4D EQ PUSH2 0xBA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x7AFCF0E6 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xCF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9D PUSH2 0x98 CALLDATASIZE PUSH1 0x4 PUSH2 0x974 JUMP JUMPDEST PUSH2 0xF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xB76 JUMP JUMPDEST PUSH2 0x74 PUSH2 0x145 JUMP JUMPDEST PUSH2 0x74 PUSH2 0x169 JUMP JUMPDEST PUSH2 0xCD PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6D JUMP JUMPDEST PUSH2 0x1F5 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x128 SWAP3 SWAP2 SWAP1 PUSH2 0xAB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x173 PUSH2 0x145 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F0 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x5AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCE3CC8BD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xCE3CC8BD SWAP1 PUSH2 0x26F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BF SWAP2 SWAP1 PUSH2 0x954 JUMP JUMPDEST PUSH2 0x2FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F5 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x90B2008700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x90B20087 SWAP1 PUSH2 0x373 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C3 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBF88A6FF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x443 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F5 SWAP1 PUSH2 0xC3A JUMP JUMPDEST PUSH2 0x4B2 DUP2 DUP5 DUP5 PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x919 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x59C JUMPI PUSH1 0x40 MLOAD PUSH32 0x54C49FE900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x54C49FE9 SWAP1 PUSH2 0x518 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0xB76 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x544 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x568 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x574 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x4BD JUMP JUMPDEST POP PUSH2 0x5A8 DUP6 DUP4 DUP4 PUSH2 0x760 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DE PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0xF3 JUMP JUMPDEST SWAP1 POP PUSH2 0x5F5 PUSH2 0x5ED DUP3 CALLER PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x191 PUSH2 0x878 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4036176A DUP5 PUSH4 0x661AB0B2 PUSH1 0xE0 SHL DUP6 DUP6 PUSH3 0x93A80 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x655 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP5 DUP6 AND OR SWAP1 MSTORE MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL SWAP1 SWAP3 AND DUP3 MSTORE PUSH2 0x6E6 SWAP3 SWAP2 PUSH1 0x4 ADD PUSH2 0xB08 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x714 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x75A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x9B4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x4036176A SWAP1 DUP6 SWAP1 PUSH32 0x47D2D5D300000000000000000000000000000000000000000000000000000000 SWAP1 PUSH2 0x655 SWAP1 DUP8 SWAP1 PUSH4 0x1AFE22A6 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0xBAB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E5 PUSH2 0x169 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x821 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x84D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x871 SWAP2 SWAP1 PUSH2 0x954 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x886 JUMPI PUSH2 0x886 DUP2 PUSH2 0x88A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x5F5 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x949 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x871 DUP2 PUSH2 0xCD4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x965 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x871 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x985 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x871 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9C5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x9DC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9EF JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x9FD JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0xA3B JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0xA52 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xA63 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xCA8 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA81 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xA8C DUP2 PUSH2 0xCD4 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xA9C DUP2 PUSH2 0xCD4 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xAAC DUP2 PUSH2 0xCD4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0xB43 DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x140 DUP3 ADD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND DUP4 MSTORE PUSH1 0x20 DUP6 DUP2 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0xBFC JUMPI DUP2 MLOAD DUP6 AND DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xBDD JUMP JUMPDEST POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F74206F726967696E616C2067617567652073747265616D65720000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676500000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCC3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCAB JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x75A JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5F5 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP 0xC0 0xAC 0xD0 STOP 0xDB 0x4F 0x5C 0x21 GAS SDIV CALLCODE 0x29 PUSH32 0x9EA83D548984D4C3977C769368CAD0B0EC2764736F6C63430007010033000000 ","sourceMap":"1232:3419:79:-:0;;;1835:306;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1984:27;-1:-1:-1;;;;;1984:36:79;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1054:4:51;2049:46:46;;-1:-1:-1;;;;;;1073:14:51::1;::::0;;;;;::::1;::::0;2038:58:79;;;;;::::1;::::0;2106:28;;;;;::::1;::::0;1232:3419;;608:549:-1;;;815:2;803:9;794:7;790:23;786:32;783:2;;;-1:-1;;821:12;783:2;340:6;334:13;352:73;419:5;352:73;:::i;:::-;1024:2;1109:22;;118:13;873:114;;-1:-1;136:68;118:13;136:68;:::i;:::-;1032:109;;;;777:380;;;;;:::o;1164:293::-;;1294:2;1282:9;1273:7;1269:23;1265:32;1262:2;;;-1:-1;;1300:12;1262:2;536:6;530:13;548:48;590:5;548:48;:::i;:::-;1352:89;1256:201;-1:-1;;;1256:201::o;2074:187::-;-1:-1;;;;;2008:54;;2168:70;;2158:2;;2252:1;;2242:12;2158:2;2152:109;:::o;:::-;1232:3419:79;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":247}],"3611":[{"length":32,"start":327}],"11214":[{"length":32,"start":209},{"length":32,"start":1530},{"length":32,"start":1914}],"11216":[{"length":32,"start":570},{"length":32,"start":830}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c80638d928af8116100505780638d928af8146100aa578063aaabadc5146100b2578063d411ee4d146100ba57610067565b80637afcf0e61461006c578063851c1bb31461008a575b600080fd5b6100746100cf565b6040516100819190610ae7565b60405180910390f35b61009d610098366004610974565b6100f3565b6040516100819190610b76565b610074610145565b610074610169565b6100cd6100c8366004610a6d565b6101f5565b005b7f000000000000000000000000000000000000000000000000000000000000000090565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610128929190610ab7565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610173610145565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156101b857600080fd5b505afa1580156101cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f09190610938565b905090565b6101fd6105af565b6040517fce3cc8bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063ce3cc8bd9061026f908690600401610ae7565b60206040518083038186803b15801561028757600080fd5b505afa15801561029b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bf9190610954565b6102fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f590610c71565b60405180910390fd5b6040517f90b2008700000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906390b2008790610373908790600401610ae7565b60206040518083038186803b15801561038b57600080fd5b505afa15801561039f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c39190610938565b90508373ffffffffffffffffffffffffffffffffffffffff1663bf88a6ff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561040b57600080fd5b505afa15801561041f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104439190610938565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146104a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f590610c3a565b6104b28184846105f8565b6104ba610919565b60005b600881101561059c576040517f54c49fe900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906354c49fe990610518908490600401610b76565b60206040518083038186803b15801561053057600080fd5b505afa158015610544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105689190610938565b82826008811061057457fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209290920201526001016104bd565b506105a8858383610760565b5050505050565b60006105de6000357fffffffff00000000000000000000000000000000000000000000000000000000166100f3565b90506105f56105ed82336107db565b610191610878565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634036176a8463661ab0b260e01b858562093a8060405160240161065593929190610c09565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526106e69291600401610b08565b600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261075a91908101906109b4565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690634036176a9085907f47d2d5d30000000000000000000000000000000000000000000000000000000090610655908790631afe22a6908890602401610bab565b60006107e5610169565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161082193929190610b7f565b60206040518083038186803b15801561083957600080fd5b505afa15801561084d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108719190610954565b9392505050565b81610886576108868161088a565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526105f5917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b6040518061010001604052806008906020820280368337509192915050565b600060208284031215610949578081fd5b815161087181610cd4565b600060208284031215610965578081fd5b81518015158114610871578182fd5b600060208284031215610985578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610871578182fd5b6000602082840312156109c5578081fd5b815167ffffffffffffffff808211156109dc578283fd5b818401915084601f8301126109ef578283fd5b8151818111156109fd578384fd5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610a3b578586fd5b604052818152838201602001871015610a52578485fd5b610a63826020830160208701610ca8565b9695505050505050565b600080600060608486031215610a81578182fd5b8335610a8c81610cd4565b92506020840135610a9c81610cd4565b91506040840135610aac81610cd4565b809150509250925092565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff84168252604060208301528251806040840152610b43816060850160208701610ca8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60006101408201905073ffffffffffffffffffffffffffffffffffffffff808616835260208581850152604084018560005b6008811015610bfc578151851683529183019190830190600101610bdd565b5050505050949350505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b6020808252601b908201527f4e6f74206f726967696e616c2067617567652073747265616d65720000000000604082015260600190565b6020808252600d908201527f496e76616c696420676175676500000000000000000000000000000000000000604082015260600190565b60005b83811015610cc3578181015183820152602001610cab565b8381111561075a5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146105f557600080fdfea26469706673582212200ac0acd000db4f5c215a05f2297f9ea83d548984d4c3977c769368cad0b0ec2764736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0xD411EE4D EQ PUSH2 0xBA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x7AFCF0E6 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xCF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9D PUSH2 0x98 CALLDATASIZE PUSH1 0x4 PUSH2 0x974 JUMP JUMPDEST PUSH2 0xF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xB76 JUMP JUMPDEST PUSH2 0x74 PUSH2 0x145 JUMP JUMPDEST PUSH2 0x74 PUSH2 0x169 JUMP JUMPDEST PUSH2 0xCD PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6D JUMP JUMPDEST PUSH2 0x1F5 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x128 SWAP3 SWAP2 SWAP1 PUSH2 0xAB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x173 PUSH2 0x145 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F0 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x5AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCE3CC8BD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xCE3CC8BD SWAP1 PUSH2 0x26F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BF SWAP2 SWAP1 PUSH2 0x954 JUMP JUMPDEST PUSH2 0x2FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F5 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x90B2008700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x90B20087 SWAP1 PUSH2 0x373 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C3 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBF88A6FF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x443 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F5 SWAP1 PUSH2 0xC3A JUMP JUMPDEST PUSH2 0x4B2 DUP2 DUP5 DUP5 PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x919 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x59C JUMPI PUSH1 0x40 MLOAD PUSH32 0x54C49FE900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x54C49FE9 SWAP1 PUSH2 0x518 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0xB76 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x544 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x568 SWAP2 SWAP1 PUSH2 0x938 JUMP JUMPDEST DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x574 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x4BD JUMP JUMPDEST POP PUSH2 0x5A8 DUP6 DUP4 DUP4 PUSH2 0x760 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DE PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0xF3 JUMP JUMPDEST SWAP1 POP PUSH2 0x5F5 PUSH2 0x5ED DUP3 CALLER PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x191 PUSH2 0x878 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4036176A DUP5 PUSH4 0x661AB0B2 PUSH1 0xE0 SHL DUP6 DUP6 PUSH3 0x93A80 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x655 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP5 DUP6 AND OR SWAP1 MSTORE MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL SWAP1 SWAP3 AND DUP3 MSTORE PUSH2 0x6E6 SWAP3 SWAP2 PUSH1 0x4 ADD PUSH2 0xB08 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x714 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x75A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x9B4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x4036176A SWAP1 DUP6 SWAP1 PUSH32 0x47D2D5D300000000000000000000000000000000000000000000000000000000 SWAP1 PUSH2 0x655 SWAP1 DUP8 SWAP1 PUSH4 0x1AFE22A6 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0xBAB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E5 PUSH2 0x169 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x821 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x84D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x871 SWAP2 SWAP1 PUSH2 0x954 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x886 JUMPI PUSH2 0x886 DUP2 PUSH2 0x88A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x5F5 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x949 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x871 DUP2 PUSH2 0xCD4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x965 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x871 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x985 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x871 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9C5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x9DC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9EF JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x9FD JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0xA3B JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0xA52 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xA63 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xCA8 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA81 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xA8C DUP2 PUSH2 0xCD4 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xA9C DUP2 PUSH2 0xCD4 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xAAC DUP2 PUSH2 0xCD4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0xB43 DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x140 DUP3 ADD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND DUP4 MSTORE PUSH1 0x20 DUP6 DUP2 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0xBFC JUMPI DUP2 MLOAD DUP6 AND DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xBDD JUMP JUMPDEST POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F74206F726967696E616C2067617567652073747265616D65720000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676500000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCC3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCAB JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x75A JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5F5 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP 0xC0 0xAC 0xD0 STOP 0xDB 0x4F 0x5C 0x21 GAS SDIV CALLCODE 0x29 PUSH32 0x9EA83D548984D4C3977C769368CAD0B0EC2764736F6C63430007010033000000 ","sourceMap":"1232:3419:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:147;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2607:430:46;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1158:79:51:-;;;:::i;1297:109::-;;;:::i;2675:1226:79:-;;;;;;:::i;:::-;;:::i;:::-;;2245:147;2357:28;2245:147;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;1297:109::-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;2675:1226:79:-;2276:21:46;:19;:21::i;:::-;2836:48:79::1;::::0;;;;:32:::1;:13;:32;::::0;::::1;::::0;:48:::1;::::0;2877:5;;2836:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2828:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;2963:46;::::0;;;;2912:28:::1;::::0;2963:30:::1;:13;:30;::::0;::::1;::::0;:46:::1;::::0;3002:5;;2963:46:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2912:98;;3040:5;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3028:35;;:8;:35;;;3020:75;;;;;;;;;;;;:::i;:::-;3211:55;3231:8;3241:11;3254;3211:19;:55::i;:::-;3613:39;;:::i;:::-;3667:9;3662:106;1618:1;3678;:15;3662:106;;;3732:25;::::0;;;;:22:::1;::::0;::::1;::::0;::::1;::::0;:25:::1;::::0;3755:1;;3732:25:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3714:12;3727:1;3714:15;;;;;;;:43;::::0;;::::1;:15;::::0;;;::::1;;:43:::0;3695:3:::1;;3662:106;;;;3839:55;3864:5;3871:8;3881:12;3839:24;:55::i;:::-;2307:1:46;;2675:1226:79::0;;;:::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;:::-;2420:181;:::o;3907:359:79:-;4055:28;:42;;;4119:8;4165:39;;;4206:11;4219;1669:7;4142:107;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4055:204;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3907:359;;;:::o;4272:377::-;4534:98;;4450:42;:28;:42;;;;4514:5;;4557:38;;4534:98;;4597:8;;1536:37;;4619:12;;4534:98;;;:::i;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1516:67;1412:178;-1:-1:-1;;;1412:178:51:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o;1907:263::-;;2022:2;2010:9;2001:7;1997:23;1993:32;1990:2;;;-1:-1;;2028:12;1990:2;226:6;220:13;238:33;265:5;238:33;:::i;2177:257::-;;2289:2;2277:9;2268:7;2264:23;2260:32;2257:2;;;-1:-1;;2295:12;2257:2;364:6;358:13;18020:5;14778:13;14771:21;17998:5;17995:32;17985:2;;-1:-1;;18031:12;2441:239;;2544:2;2532:9;2523:7;2519:23;2515:32;2512:2;;;-1:-1;;2550:12;2512:2;497:6;484:20;14955:66;18142:5;14944:78;18118:5;18115:34;18105:2;;-1:-1;;18153:12;2687:360;;2811:2;2799:9;2790:7;2786:23;2782:32;2779:2;;;-1:-1;;2817:12;2779:2;2868:17;2862:24;2906:18;;2898:6;2895:30;2892:2;;;-1:-1;;2928:12;2892:2;3014:6;3003:9;2999:22;;;666:3;659:4;651:6;647:17;643:27;633:2;;-1:-1;;674:12;633:2;714:6;708:13;2906:18;13424:6;13421:30;13418:2;;;-1:-1;;13454:12;13418:2;13088;13082:9;2811:2;13527:9;659:4;13512:6;13508:17;13504:33;13118:6;13114:17;;13225:6;13213:10;13210:22;2906:18;13177:10;13174:34;13171:62;13168:2;;;-1:-1;;13236:12;13168:2;13088;13255:22;806:21;;;906:16;;;2811:2;906:16;903:25;-1:-1;900:2;;;-1:-1;;931:12;900:2;951:39;983:6;2811:2;882:5;878:16;2811:2;848:6;844:17;951:39;:::i;:::-;2948:83;2773:274;-1:-1;;;;;;2773:274::o;3988:573::-;;;;4167:2;4155:9;4146:7;4142:23;4138:32;4135:2;;;-1:-1;;4173:12;4135:2;1824:6;1811:20;1836:59;1889:5;1836:59;:::i;:::-;4225:89;-1:-1;4351:2;4405:22;;1462:20;1487:48;1462:20;1487:48;:::i;:::-;4359:78;-1:-1;4474:2;4513:22;;72:20;97:33;72:20;97:33;:::i;:::-;4482:63;;;;4129:432;;;;;:::o;8288:387::-;5755:37;;;14955:66;14944:78;8539:2;8530:12;;6050:56;8639:11;;;8430:245::o;8682:222::-;15587:42;15576:54;;;;4851:37;;8809:2;8794:18;;8780:124::o;8911:417::-;;15587:42;14694:5;15576:54;4858:3;4851:37;9084:2;9202;9191:9;9187:18;9180:48;6260:5;13953:12;14386:6;9084:2;9073:9;9069:18;14374:19;6353:52;6398:6;14414:14;9073:9;14414:14;9202:2;6379:5;6375:16;6353:52;:::i;:::-;17798:2;17778:14;17794:7;17774:28;6417:39;;;;14414:14;6417:39;;9055:273;-1:-1;;;9055:273::o;9335:222::-;5755:37;;;9462:2;9447:18;;9433:124::o;9564:444::-;5755:37;;;15587:42;15576:54;;;9911:2;9896:18;;4851:37;15576:54;9994:2;9979:18;;4851:37;9747:2;9732:18;;9718:290::o;10583:621::-;;10854:3;10843:9;10839:19;10831:27;;15587:42;;14694:5;15576:54;6581:3;6574:85;11046:2;5785:5;11046:2;11035:9;11031:18;5755:37;11190:2;11179:9;11175:18;5349:21;-1:-1;5376:288;13845:4;5398:1;5395:13;5376:288;;;5462:13;;15576:54;;6574:85;;4752:14;;;;14096;;;;5423:1;5416:9;5376:288;;;5380:14;;;;;10825:379;;;;;;:::o;11211:474::-;15587:42;15576:54;;;6574:85;;15576:54;;;;11588:2;11573:18;;4851:37;11671:2;11656:18;;5755:37;;;;11409:2;11394:18;;11380:305::o;11951:416::-;12151:2;12165:47;;;7735:2;12136:18;;;14374:19;7771:29;14414:14;;;7751:50;7820:12;;;12122:245::o;12374:416::-;12574:2;12588:47;;;8071:2;12559:18;;;14374:19;8107:15;14414:14;;;8087:36;8142:12;;;12545:245::o;17273:268::-;17338:1;17345:101;17359:6;17356:1;17353:13;17345:101;;;17426:11;;;17420:18;17407:11;;;17400:39;17381:2;17374:10;17345:101;;;17461:6;17458:1;17455:13;17452:2;;;-1:-1;;17338:1;17508:16;;17501:27;17322:219::o;17815:117::-;15587:42;17902:5;15576:54;17877:5;17874:35;17864:2;;17923:1;;17913:12"},"methodIdentifiers":{"addTokenToGauge(address,address,address)":"d411ee4d","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getAuthorizerAdaptorEntrypoint()":"7afcf0e6","getVault()":"8d928af8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IChildChainLiquidityGaugeFactory\",\"name\":\"gaugeFactory\",\"type\":\"address\"},{\"internalType\":\"contract IAuthorizerAdaptorEntrypoint\",\"name\":\"authorizerAdaptorEntrypoint\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IRewardsOnlyGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"addTokenToGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizerAdaptorEntrypoint\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptorEntrypoint\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addTokenToGauge(address,address,address)\":{\"details\":\"This is a permissioned function.\",\"params\":{\"distributor\":\"- The distributor for the rewards.\",\"gauge\":\"- The gauge we are modifying\",\"rewardToken\":\"- The token to be added.\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"title\":\"ChildChainGaugeTokenAdder\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addTokenToGauge(address,address,address)\":{\"notice\":\"Adds a new token to a RewardsOnlyGauge.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getAuthorizerAdaptorEntrypoint()\":{\"notice\":\"Returns the address of the Authorizer adaptor entrypoint contract.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"notice\":\"Allows atomically adding a new reward token to a RewardsOnlyGauge while ensuring that it remains in sync with its ChildChainStreamer.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/admin/ChildChainGaugeTokenAdder.sol\":\"ChildChainGaugeTokenAdder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x25b2a2ad63f9aa59c45f1a81a2f79733b8dcdce268cc9b1ac03866396f4b0d17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://efe9f30e6cab81587b738089165050d35533926703f4ad1da0f86452a69874ce\",\"dweb:/ipfs/QmcJoNP8NAEefchpG3qs3CwMw1qhxBJTgBMY4KY6g6qfUa\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol\":{\"keccak256\":\"0x842d0fc23e9bc0c59c2c11d042a409328533e4424578c96727d33db8092bf51a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://50a546df376e1772a1611dfa17d0e35adf29cdae502df736f65c67c4b94c0188\",\"dweb:/ipfs/QmatAq7AvGfnZQ7xDYgPUk5obubqJkJWpFoLE8LPFqccsf\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\":{\"keccak256\":\"0x3cf2370032a789025cffe8d0c613274213fd4e1ceb88cef1c2b039a6d0d08261\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1788ecb804b061fa04678ce311020d66e25b201cf18d452ea290bbc9af12e504\",\"dweb:/ipfs/Qmf84ANUiZtoZHEsbymn7NSZSGikMovYZUVqiPHwVrbBPJ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol\":{\"keccak256\":\"0x8c09c3f372e07adf790d55607401dfa60d8ec2b591f39de772efdf887d965d11\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6cbfa8f8f004ec1cc00739f51bd00763d08600e0bf827c1be4cc21a4afb26874\",\"dweb:/ipfs/QmTxDYJA8y2cJdxHfCq6NLK812WGnxFehTF9bW4n8xa1zx\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"contracts/admin/ChildChainGaugeTokenAdder.sol\":{\"keccak256\":\"0x19a4b3abfc1ea5b9f4e4fb8a882e241774d92a529cac5722186ee4a3772603fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://912a06fccfd7a53781a44eda9ac7cc4cec6d851719bc75c3a1d83fb36e9b0656\",\"dweb:/ipfs/QmVV34VePWSUFqQbGsqPJNTVTyjKoRKSHQ1TyN53wBqNpB\"]}},\"version\":1}"}},"contracts/admin/DistributionScheduler.sol":{"DistributionScheduler":{"abi":[{"inputs":[{"internalType":"contract IRewardTokenDistributor","name":"gauge","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getPendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IRewardTokenDistributor","name":"gauge","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getPendingRewardsAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IRewardTokenDistributor","name":"gauge","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getRewardNode","outputs":[{"components":[{"internalType":"uint224","name":"amount","type":"uint224"},{"internalType":"uint32","name":"nextTimestamp","type":"uint32"}],"internalType":"struct DistributionScheduler.RewardNode","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IRewardTokenDistributor","name":"gauge","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"}],"name":"scheduleDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRewardTokenDistributor","name":"gauge","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"startDistributionForToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRewardTokenDistributor","name":"gauge","type":"address"}],"name":"startDistributions","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50611551806100206000396000f3fe608060405234801561001057600080fd5b50600436106100715760003560e01c8063974e98a611610050578063974e98a6146100d4578063d85b7a61146100e7578063e2962564146100fa57610071565b806289fac3146100765780637a27db571461008b57806380723ab3146100b4575b600080fd5b610089610084366004610f66565b61010d565b005b61009e610099366004610f82565b6102c2565b6040516100ab91906114f0565b60405180910390f35b6100c76100c2366004610fba565b6102d6565b6040516100ab91906114b5565b6100896100e2366004610ffa565b610367565b6100896100f5366004610f82565b61068e565b61009e610108366004610fba565b6107d0565b60005b60088110156102be576040517f54c49fe900000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8416906354c49fe99061016e9085906004016114f0565b60206040518083038186803b15801561018657600080fd5b505afa15801561019a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101be9190610f4a565b905073ffffffffffffffffffffffffffffffffffffffff81166101e157506102be565b6040517f48e9c65e00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8516906348e9c65e906102369085906004016111f8565b60c06040518083038186803b15801561024e57600080fd5b505afa158015610262573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610286919061103f565b60200151905073ffffffffffffffffffffffffffffffffffffffff81163014156102b4576102b4848361068e565b5050600101610110565b5050565b60006102cf8383426107d0565b9392505050565b6102de610f13565b6000806102eb8686610807565b81526020808201929092526040908101600090812063ffffffff958616825283528190208151808301909252547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811682527c01000000000000000000000000000000000000000000000000000000009004909316908301525092915050565b600082116103aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611367565b60405180910390fd5b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115610400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906112d3565b63ffffffff81111561043e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906113c4565b6040517f48e9c65e00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906348e9c65e906104939087906004016111f8565b60c06040518083038186803b1580156104ab57600080fd5b505afa1580156104bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e3919061103f565b60200151905073ffffffffffffffffffffffffffffffffffffffff8116610536576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611219565b73ffffffffffffffffffffffffffffffffffffffff81163014610585576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611458565b428210156105bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906113fb565b6105c88261083a565b8214610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611276565b6301e133804283031115610640576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a19061130a565b61066273ffffffffffffffffffffffffffffffffffffffff8516333086610846565b6106876000806106728888610807565b815260200190815260200160002083856108ef565b5050505050565b600080600061069d8585610807565b815260200190815260200160002090506000806106ba8342610bfd565b6000808052602086905260409020805463ffffffff8085167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790915591935091506107439073ffffffffffffffffffffffffffffffffffffffff86169087908490610cc016565b6040517f93f7aa6700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616906393f7aa679061079790879085906004016111d2565b600060405180830381600087803b1580156107b157600080fd5b505af11580156107c5573d6000803e3d6000fd5b505050505050505050565b6000806000806107e08787610807565b8152602001908152602001600020905060006107fc8285610bfd565b979650505050505050565b6000828260405160200161081c929190611117565b60405160208183030381529060405280519060200120905092915050565b62093a80908190040290565b6108e9846323b872dd60e01b85858560405160240161086793929190611178565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610dba565b50505050565b6000808052602084905260408120547c0100000000000000000000000000000000000000000000000000000000900463ffffffff165b8063ffffffff168463ffffffff16118015610945575063ffffffff811615155b1561098b5763ffffffff8082166000908152602087905260409020549192507c010000000000000000000000000000000000000000000000000000000090910416610925565b63ffffffff8116610a555763ffffffff8083166000908152602087815260408083208054858a167c01000000000000000000000000000000000000000000000000000000008181027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff93841617909355835180850185528a83168152808601878152918752948c905292909420925183549251909516029383167fffffffff000000000000000000000000000000000000000000000000000000009190911617909116919091179055610687565b8363ffffffff168163ffffffff161415610b425763ffffffff81166000908152602086905260409020547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081168185160190811115610add576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906112d3565b63ffffffff8216600090815260208790526040902080547fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216919091179055610687565b6040805180820182527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff948516815263ffffffff92831660208083019182529684166000818152989097528288209151825491517fffffffff000000000000000000000000000000000000000000000000000000009092169087161786167c0100000000000000000000000000000000000000000000000000000000918516820217909155929091168552909320805490911692909102919091179055565b60008080526020839052604081205481907c0100000000000000000000000000000000000000000000000000000000900463ffffffff16815b8163ffffffff168510158015610c51575063ffffffff821615155b15610cb55763ffffffff9182166000908152602087905260409020547c01000000000000000000000000000000000000000000000000000000008104909216917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1601610c36565b909590945092505050565b8015801590610d7157506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e90610d1e9030908690600401611151565b60206040518083038186803b158015610d3657600080fd5b505afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e91906110c6565b15155b15610d9657610d968363095ea7b360e01b8460006040516024016108679291906111a9565b610db58363095ea7b360e01b84846040516024016108679291906111d2565b505050565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610de391906110de565b6000604051808303816000865af19150503d8060008114610e20576040519150601f19603f3d011682016040523d82523d6000602084013e610e25565b606091505b50915091506000821415610e3d573d6000803e3d6000fd5b6108e9815160001480610e5f575081806020019051810190610e5f9190610f2a565b6101a2816102be576102be81610e95817f42414c0000000000000000000000000000000000000000000000000000000000610e98565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b604080518082019091526000808252602082015290565b600060208284031215610f3b578081fd5b815180151581146102cf578182fd5b600060208284031215610f5b578081fd5b81516102cf816114f9565b600060208284031215610f77578081fd5b81356102cf816114f9565b60008060408385031215610f94578081fd5b8235610f9f816114f9565b91506020830135610faf816114f9565b809150509250929050565b600080600060608486031215610fce578081fd5b8335610fd9816114f9565b92506020840135610fe9816114f9565b929592945050506040919091013590565b6000806000806080858703121561100f578081fd5b843561101a816114f9565b9350602085013561102a816114f9565b93969395505050506040820135916060013590565b600060c08284031215611050578081fd5b60405160c0810181811067ffffffffffffffff8211171561106f578283fd5b604052825161107d816114f9565b8152602083015161108d816114f9565b8060208301525060408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b6000602082840312156110d7578081fd5b5051919050565b60008251815b818110156110fe57602081860181015185830152016110e4565b8181111561110c5782828501525b509190910192915050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60208082526024908201527f52657761726420746f6b656e20646f6573206e6f74206578697374206f6e206760408201527f6175676500000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526034908201527f446973747269627574696f6e206d75737420737461727420617420746865206260408201527f6567696e6e696e67206f6620746865207765656b000000000000000000000000606082015260800190565b60208082526016908201527f52657761726420616d6f756e74206f766572666c6f7700000000000000000000604082015260600190565b60208082526024908201527f446973747269627574696f6e20746f6f2066617220696e746f2074686520667560408201527f7475726500000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d7573742070726f76696465206e6f6e2d7a65726f206e756d626572206f662060408201527f746f6b656e730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f5265776172642074696d657374616d70206f766572666c6f7700000000000000604082015260600190565b60208082526031908201527f446973747269627574696f6e2063616e206f6e6c79206265207363686564756c60408201527f656420666f722074686520667574757265000000000000000000000000000000606082015260800190565b60208082526037908201527f446973747269627574696f6e5363686564756c6572206973206e6f742072657760408201527f61726420746f6b656e2773206469737472696275746f72000000000000000000606082015260800190565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815260209182015163ffffffff169181019190915260400190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610e9557600080fdfea2646970667358221220cb69ad3ac8f03007bd7a393b8b8b0f28aac7fb88a16b5e681864d1b30e749a8a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1551 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x71 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x974E98A6 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x974E98A6 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xD85B7A61 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0xE2962564 EQ PUSH2 0xFA JUMPI PUSH2 0x71 JUMP JUMPDEST DUP1 PUSH3 0x89FAC3 EQ PUSH2 0x76 JUMPI DUP1 PUSH4 0x7A27DB57 EQ PUSH2 0x8B JUMPI DUP1 PUSH4 0x80723AB3 EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x89 PUSH2 0x84 CALLDATASIZE PUSH1 0x4 PUSH2 0xF66 JUMP JUMPDEST PUSH2 0x10D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x9E PUSH2 0x99 CALLDATASIZE PUSH1 0x4 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAB SWAP2 SWAP1 PUSH2 0x14F0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC7 PUSH2 0xC2 CALLDATASIZE PUSH1 0x4 PUSH2 0xFBA JUMP JUMPDEST PUSH2 0x2D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAB SWAP2 SWAP1 PUSH2 0x14B5 JUMP JUMPDEST PUSH2 0x89 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0xFFA JUMP JUMPDEST PUSH2 0x367 JUMP JUMPDEST PUSH2 0x89 PUSH2 0xF5 CALLDATASIZE PUSH1 0x4 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0x68E JUMP JUMPDEST PUSH2 0x9E PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xFBA JUMP JUMPDEST PUSH2 0x7D0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x54C49FE900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x54C49FE9 SWAP1 PUSH2 0x16E SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x14F0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0xF4A JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1E1 JUMPI POP PUSH2 0x2BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x48E9C65E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x48E9C65E SWAP1 PUSH2 0x236 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x262 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x286 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ ISZERO PUSH2 0x2B4 JUMPI PUSH2 0x2B4 DUP5 DUP4 PUSH2 0x68E JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x110 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CF DUP4 DUP4 TIMESTAMP PUSH2 0x7D0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2DE PUSH2 0xF13 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2EB DUP7 DUP7 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 PUSH4 0xFFFFFFFF SWAP6 DUP7 AND DUP3 MSTORE DUP4 MSTORE DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP3 MSTORE PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV SWAP1 SWAP4 AND SWAP1 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x3AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1367 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x400 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x12D3 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 GT ISZERO PUSH2 0x43E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x13C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x48E9C65E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH4 0x48E9C65E SWAP1 PUSH2 0x493 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4E3 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x536 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1219 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ PUSH2 0x585 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1458 JUMP JUMPDEST TIMESTAMP DUP3 LT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x13FB JUMP JUMPDEST PUSH2 0x5C8 DUP3 PUSH2 0x83A JUMP JUMPDEST DUP3 EQ PUSH2 0x600 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1276 JUMP JUMPDEST PUSH4 0x1E13380 TIMESTAMP DUP4 SUB GT ISZERO PUSH2 0x640 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x662 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND CALLER ADDRESS DUP7 PUSH2 0x846 JUMP JUMPDEST PUSH2 0x687 PUSH1 0x0 DUP1 PUSH2 0x672 DUP9 DUP9 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP6 PUSH2 0x8EF JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x69D DUP6 DUP6 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x6BA DUP4 TIMESTAMP PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP6 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x743 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP8 SWAP1 DUP5 SWAP1 PUSH2 0xCC0 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x93F7AA6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH4 0x93F7AA67 SWAP1 PUSH2 0x797 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x7E0 DUP8 DUP8 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x7FC DUP3 DUP6 PUSH2 0xBFD JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x81C SWAP3 SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH2 0x8E9 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x867 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1178 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0xDBA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND JUMPDEST DUP1 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x945 JUMPI POP PUSH4 0xFFFFFFFF DUP2 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x98B JUMPI PUSH4 0xFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND PUSH2 0x925 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0xA55 JUMPI PUSH4 0xFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP6 DUP11 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP2 DUP2 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND OR SWAP1 SWAP4 SSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE DUP11 DUP4 AND DUP2 MSTORE DUP1 DUP7 ADD DUP8 DUP2 MSTORE SWAP2 DUP8 MSTORE SWAP5 DUP13 SWAP1 MSTORE SWAP3 SWAP1 SWAP5 KECCAK256 SWAP3 MLOAD DUP4 SLOAD SWAP3 MLOAD SWAP1 SWAP6 AND MUL SWAP4 DUP4 AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP2 AND OR SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x687 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0xB42 JUMPI PUSH4 0xFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP2 DUP6 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0xADD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x12D3 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x687 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE SWAP7 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE SWAP9 SWAP1 SWAP8 MSTORE DUP3 DUP9 KECCAK256 SWAP2 MLOAD DUP3 SLOAD SWAP2 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP1 DUP8 AND OR DUP7 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP2 DUP6 AND DUP3 MUL OR SWAP1 SWAP2 SSTORE SWAP3 SWAP1 SWAP2 AND DUP6 MSTORE SWAP1 SWAP4 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xC51 JUMPI POP PUSH4 0xFFFFFFFF DUP3 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xCB5 JUMPI PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP2 DIV SWAP1 SWAP3 AND SWAP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADD PUSH2 0xC36 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xD71 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0xD1E SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1151 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD6E SWAP2 SWAP1 PUSH2 0x10C6 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xD96 JUMPI PUSH2 0xD96 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x867 SWAP3 SWAP2 SWAP1 PUSH2 0x11A9 JUMP JUMPDEST PUSH2 0xDB5 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x867 SWAP3 SWAP2 SWAP1 PUSH2 0x11D2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xDE3 SWAP2 SWAP1 PUSH2 0x10DE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE20 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE25 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0xE3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x8E9 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0xE5F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xE5F SWAP2 SWAP1 PUSH2 0xF2A JUMP JUMPDEST PUSH2 0x1A2 DUP2 PUSH2 0x2BE JUMPI PUSH2 0x2BE DUP2 PUSH2 0xE95 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xE98 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF3B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2CF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF5B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2CF DUP2 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF77 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2CF DUP2 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF94 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF9F DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xFAF DUP2 PUSH2 0x14F9 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFCE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xFD9 DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFE9 DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x100F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x101A DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x102A DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1050 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x106F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x107D DUP2 PUSH2 0x14F9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x108D DUP2 PUSH2 0x14F9 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x10FE JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x10E4 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x110C JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP3 SHL AND PUSH1 0x14 DUP3 ADD MSTORE PUSH1 0x28 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x52657761726420746F6B656E20646F6573206E6F74206578697374206F6E2067 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6175676500000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E206D757374207374617274206174207468652062 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6567696E6E696E67206F6620746865207765656B000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x52657761726420616D6F756E74206F766572666C6F7700000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E20746F6F2066617220696E746F20746865206675 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7475726500000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D7573742070726F76696465206E6F6E2D7A65726F206E756D626572206F6620 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x746F6B656E730000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x5265776172642074696D657374616D70206F766572666C6F7700000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x31 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E2063616E206F6E6C79206265207363686564756C PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656420666F722074686520667574757265000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x37 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E5363686564756C6572206973206E6F7420726577 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x61726420746F6B656E2773206469737472696275746F72000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE95 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB PUSH10 0xAD3AC8F03007BD7A393B DUP12 DUP12 0xF 0x28 0xAA 0xC7 0xFB DUP9 LOG1 PUSH12 0x5E681864D1B30E749A8A6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"1205:9740:80:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100715760003560e01c8063974e98a611610050578063974e98a6146100d4578063d85b7a61146100e7578063e2962564146100fa57610071565b806289fac3146100765780637a27db571461008b57806380723ab3146100b4575b600080fd5b610089610084366004610f66565b61010d565b005b61009e610099366004610f82565b6102c2565b6040516100ab91906114f0565b60405180910390f35b6100c76100c2366004610fba565b6102d6565b6040516100ab91906114b5565b6100896100e2366004610ffa565b610367565b6100896100f5366004610f82565b61068e565b61009e610108366004610fba565b6107d0565b60005b60088110156102be576040517f54c49fe900000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8416906354c49fe99061016e9085906004016114f0565b60206040518083038186803b15801561018657600080fd5b505afa15801561019a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101be9190610f4a565b905073ffffffffffffffffffffffffffffffffffffffff81166101e157506102be565b6040517f48e9c65e00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8516906348e9c65e906102369085906004016111f8565b60c06040518083038186803b15801561024e57600080fd5b505afa158015610262573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610286919061103f565b60200151905073ffffffffffffffffffffffffffffffffffffffff81163014156102b4576102b4848361068e565b5050600101610110565b5050565b60006102cf8383426107d0565b9392505050565b6102de610f13565b6000806102eb8686610807565b81526020808201929092526040908101600090812063ffffffff958616825283528190208151808301909252547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811682527c01000000000000000000000000000000000000000000000000000000009004909316908301525092915050565b600082116103aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611367565b60405180910390fd5b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115610400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906112d3565b63ffffffff81111561043e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906113c4565b6040517f48e9c65e00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906348e9c65e906104939087906004016111f8565b60c06040518083038186803b1580156104ab57600080fd5b505afa1580156104bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e3919061103f565b60200151905073ffffffffffffffffffffffffffffffffffffffff8116610536576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611219565b73ffffffffffffffffffffffffffffffffffffffff81163014610585576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611458565b428210156105bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906113fb565b6105c88261083a565b8214610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a190611276565b6301e133804283031115610640576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a19061130a565b61066273ffffffffffffffffffffffffffffffffffffffff8516333086610846565b6106876000806106728888610807565b815260200190815260200160002083856108ef565b5050505050565b600080600061069d8585610807565b815260200190815260200160002090506000806106ba8342610bfd565b6000808052602086905260409020805463ffffffff8085167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790915591935091506107439073ffffffffffffffffffffffffffffffffffffffff86169087908490610cc016565b6040517f93f7aa6700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616906393f7aa679061079790879085906004016111d2565b600060405180830381600087803b1580156107b157600080fd5b505af11580156107c5573d6000803e3d6000fd5b505050505050505050565b6000806000806107e08787610807565b8152602001908152602001600020905060006107fc8285610bfd565b979650505050505050565b6000828260405160200161081c929190611117565b60405160208183030381529060405280519060200120905092915050565b62093a80908190040290565b6108e9846323b872dd60e01b85858560405160240161086793929190611178565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610dba565b50505050565b6000808052602084905260408120547c0100000000000000000000000000000000000000000000000000000000900463ffffffff165b8063ffffffff168463ffffffff16118015610945575063ffffffff811615155b1561098b5763ffffffff8082166000908152602087905260409020549192507c010000000000000000000000000000000000000000000000000000000090910416610925565b63ffffffff8116610a555763ffffffff8083166000908152602087815260408083208054858a167c01000000000000000000000000000000000000000000000000000000008181027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff93841617909355835180850185528a83168152808601878152918752948c905292909420925183549251909516029383167fffffffff000000000000000000000000000000000000000000000000000000009190911617909116919091179055610687565b8363ffffffff168163ffffffff161415610b425763ffffffff81166000908152602086905260409020547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081168185160190811115610add576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906112d3565b63ffffffff8216600090815260208790526040902080547fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216919091179055610687565b6040805180820182527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff948516815263ffffffff92831660208083019182529684166000818152989097528288209151825491517fffffffff000000000000000000000000000000000000000000000000000000009092169087161786167c0100000000000000000000000000000000000000000000000000000000918516820217909155929091168552909320805490911692909102919091179055565b60008080526020839052604081205481907c0100000000000000000000000000000000000000000000000000000000900463ffffffff16815b8163ffffffff168510158015610c51575063ffffffff821615155b15610cb55763ffffffff9182166000908152602087905260409020547c01000000000000000000000000000000000000000000000000000000008104909216917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1601610c36565b909590945092505050565b8015801590610d7157506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e90610d1e9030908690600401611151565b60206040518083038186803b158015610d3657600080fd5b505afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e91906110c6565b15155b15610d9657610d968363095ea7b360e01b8460006040516024016108679291906111a9565b610db58363095ea7b360e01b84846040516024016108679291906111d2565b505050565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610de391906110de565b6000604051808303816000865af19150503d8060008114610e20576040519150601f19603f3d011682016040523d82523d6000602084013e610e25565b606091505b50915091506000821415610e3d573d6000803e3d6000fd5b6108e9815160001480610e5f575081806020019051810190610e5f9190610f2a565b6101a2816102be576102be81610e95817f42414c0000000000000000000000000000000000000000000000000000000000610e98565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b604080518082019091526000808252602082015290565b600060208284031215610f3b578081fd5b815180151581146102cf578182fd5b600060208284031215610f5b578081fd5b81516102cf816114f9565b600060208284031215610f77578081fd5b81356102cf816114f9565b60008060408385031215610f94578081fd5b8235610f9f816114f9565b91506020830135610faf816114f9565b809150509250929050565b600080600060608486031215610fce578081fd5b8335610fd9816114f9565b92506020840135610fe9816114f9565b929592945050506040919091013590565b6000806000806080858703121561100f578081fd5b843561101a816114f9565b9350602085013561102a816114f9565b93969395505050506040820135916060013590565b600060c08284031215611050578081fd5b60405160c0810181811067ffffffffffffffff8211171561106f578283fd5b604052825161107d816114f9565b8152602083015161108d816114f9565b8060208301525060408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b6000602082840312156110d7578081fd5b5051919050565b60008251815b818110156110fe57602081860181015185830152016110e4565b8181111561110c5782828501525b509190910192915050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60208082526024908201527f52657761726420746f6b656e20646f6573206e6f74206578697374206f6e206760408201527f6175676500000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526034908201527f446973747269627574696f6e206d75737420737461727420617420746865206260408201527f6567696e6e696e67206f6620746865207765656b000000000000000000000000606082015260800190565b60208082526016908201527f52657761726420616d6f756e74206f766572666c6f7700000000000000000000604082015260600190565b60208082526024908201527f446973747269627574696f6e20746f6f2066617220696e746f2074686520667560408201527f7475726500000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d7573742070726f76696465206e6f6e2d7a65726f206e756d626572206f662060408201527f746f6b656e730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f5265776172642074696d657374616d70206f766572666c6f7700000000000000604082015260600190565b60208082526031908201527f446973747269627574696f6e2063616e206f6e6c79206265207363686564756c60408201527f656420666f722074686520667574757265000000000000000000000000000000606082015260800190565b60208082526037908201527f446973747269627574696f6e5363686564756c6572206973206e6f742072657760408201527f61726420746f6b656e2773206469737472696275746f72000000000000000000606082015260800190565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815260209182015163ffffffff169181019190915260400190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610e9557600080fdfea2646970667358221220cb69ad3ac8f03007bd7a393b8b8b0f28aac7fb88a16b5e681864d1b30e749a8a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x71 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x974E98A6 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x974E98A6 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xD85B7A61 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0xE2962564 EQ PUSH2 0xFA JUMPI PUSH2 0x71 JUMP JUMPDEST DUP1 PUSH3 0x89FAC3 EQ PUSH2 0x76 JUMPI DUP1 PUSH4 0x7A27DB57 EQ PUSH2 0x8B JUMPI DUP1 PUSH4 0x80723AB3 EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x89 PUSH2 0x84 CALLDATASIZE PUSH1 0x4 PUSH2 0xF66 JUMP JUMPDEST PUSH2 0x10D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x9E PUSH2 0x99 CALLDATASIZE PUSH1 0x4 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAB SWAP2 SWAP1 PUSH2 0x14F0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC7 PUSH2 0xC2 CALLDATASIZE PUSH1 0x4 PUSH2 0xFBA JUMP JUMPDEST PUSH2 0x2D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAB SWAP2 SWAP1 PUSH2 0x14B5 JUMP JUMPDEST PUSH2 0x89 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0xFFA JUMP JUMPDEST PUSH2 0x367 JUMP JUMPDEST PUSH2 0x89 PUSH2 0xF5 CALLDATASIZE PUSH1 0x4 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0x68E JUMP JUMPDEST PUSH2 0x9E PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xFBA JUMP JUMPDEST PUSH2 0x7D0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x54C49FE900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x54C49FE9 SWAP1 PUSH2 0x16E SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x14F0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0xF4A JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1E1 JUMPI POP PUSH2 0x2BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x48E9C65E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x48E9C65E SWAP1 PUSH2 0x236 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x262 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x286 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ ISZERO PUSH2 0x2B4 JUMPI PUSH2 0x2B4 DUP5 DUP4 PUSH2 0x68E JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x110 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CF DUP4 DUP4 TIMESTAMP PUSH2 0x7D0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2DE PUSH2 0xF13 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2EB DUP7 DUP7 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 PUSH4 0xFFFFFFFF SWAP6 DUP7 AND DUP3 MSTORE DUP4 MSTORE DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP3 MSTORE PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV SWAP1 SWAP4 AND SWAP1 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x3AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1367 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x400 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x12D3 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 GT ISZERO PUSH2 0x43E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x13C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x48E9C65E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH4 0x48E9C65E SWAP1 PUSH2 0x493 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4E3 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x536 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1219 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ADDRESS EQ PUSH2 0x585 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1458 JUMP JUMPDEST TIMESTAMP DUP3 LT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x13FB JUMP JUMPDEST PUSH2 0x5C8 DUP3 PUSH2 0x83A JUMP JUMPDEST DUP3 EQ PUSH2 0x600 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x1276 JUMP JUMPDEST PUSH4 0x1E13380 TIMESTAMP DUP4 SUB GT ISZERO PUSH2 0x640 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x662 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND CALLER ADDRESS DUP7 PUSH2 0x846 JUMP JUMPDEST PUSH2 0x687 PUSH1 0x0 DUP1 PUSH2 0x672 DUP9 DUP9 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP6 PUSH2 0x8EF JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x69D DUP6 DUP6 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x6BA DUP4 TIMESTAMP PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP6 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x743 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP8 SWAP1 DUP5 SWAP1 PUSH2 0xCC0 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x93F7AA6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH4 0x93F7AA67 SWAP1 PUSH2 0x797 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x7E0 DUP8 DUP8 PUSH2 0x807 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x7FC DUP3 DUP6 PUSH2 0xBFD JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x81C SWAP3 SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH2 0x8E9 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x867 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1178 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0xDBA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND JUMPDEST DUP1 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x945 JUMPI POP PUSH4 0xFFFFFFFF DUP2 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x98B JUMPI PUSH4 0xFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND PUSH2 0x925 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0xA55 JUMPI PUSH4 0xFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP6 DUP11 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP2 DUP2 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND OR SWAP1 SWAP4 SSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE DUP11 DUP4 AND DUP2 MSTORE DUP1 DUP7 ADD DUP8 DUP2 MSTORE SWAP2 DUP8 MSTORE SWAP5 DUP13 SWAP1 MSTORE SWAP3 SWAP1 SWAP5 KECCAK256 SWAP3 MLOAD DUP4 SLOAD SWAP3 MLOAD SWAP1 SWAP6 AND MUL SWAP4 DUP4 AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP2 AND OR SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x687 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0xB42 JUMPI PUSH4 0xFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP2 DUP6 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0xADD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A1 SWAP1 PUSH2 0x12D3 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x687 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE SWAP7 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE SWAP9 SWAP1 SWAP8 MSTORE DUP3 DUP9 KECCAK256 SWAP2 MLOAD DUP3 SLOAD SWAP2 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP1 DUP8 AND OR DUP7 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP2 DUP6 AND DUP3 MUL OR SWAP1 SWAP2 SSTORE SWAP3 SWAP1 SWAP2 AND DUP6 MSTORE SWAP1 SWAP4 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xC51 JUMPI POP PUSH4 0xFFFFFFFF DUP3 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xCB5 JUMPI PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP2 DIV SWAP1 SWAP3 AND SWAP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADD PUSH2 0xC36 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xD71 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0xD1E SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1151 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD6E SWAP2 SWAP1 PUSH2 0x10C6 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xD96 JUMPI PUSH2 0xD96 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x867 SWAP3 SWAP2 SWAP1 PUSH2 0x11A9 JUMP JUMPDEST PUSH2 0xDB5 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x867 SWAP3 SWAP2 SWAP1 PUSH2 0x11D2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xDE3 SWAP2 SWAP1 PUSH2 0x10DE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE20 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE25 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0xE3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x8E9 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0xE5F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xE5F SWAP2 SWAP1 PUSH2 0xF2A JUMP JUMPDEST PUSH2 0x1A2 DUP2 PUSH2 0x2BE JUMPI PUSH2 0x2BE DUP2 PUSH2 0xE95 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xE98 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF3B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2CF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF5B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2CF DUP2 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF77 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2CF DUP2 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF94 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF9F DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xFAF DUP2 PUSH2 0x14F9 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFCE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xFD9 DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFE9 DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x100F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x101A DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x102A DUP2 PUSH2 0x14F9 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1050 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x106F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x107D DUP2 PUSH2 0x14F9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x108D DUP2 PUSH2 0x14F9 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x10FE JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x10E4 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x110C JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP3 SHL AND PUSH1 0x14 DUP3 ADD MSTORE PUSH1 0x28 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x52657761726420746F6B656E20646F6573206E6F74206578697374206F6E2067 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6175676500000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E206D757374207374617274206174207468652062 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6567696E6E696E67206F6620746865207765656B000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x52657761726420616D6F756E74206F766572666C6F7700000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E20746F6F2066617220696E746F20746865206675 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7475726500000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D7573742070726F76696465206E6F6E2D7A65726F206E756D626572206F6620 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x746F6B656E730000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x5265776172642074696D657374616D70206F766572666C6F7700000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x31 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E2063616E206F6E6C79206265207363686564756C PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656420666F722074686520667574757265000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x37 SWAP1 DUP3 ADD MSTORE PUSH32 0x446973747269627574696F6E5363686564756C6572206973206E6F7420726577 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x61726420746F6B656E2773206469737472696275746F72000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE95 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB PUSH10 0xAD3AC8F03007BD7A393B DUP12 DUP12 0xF 0x28 0xAA 0xC7 0xFB DUP9 LOG1 PUSH12 0x5E681864D1B30E749A8A6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"1205:9740:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6173:531;;;;;;:::i;:::-;;:::i;:::-;;2906:176;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2362:248;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4502:1481::-;;;;;;:::i;:::-;;:::i;6991:641::-;;;;;;:::i;:::-;;:::i;3444:365::-;;;;;;:::i;:::-;;:::i;6173:531::-;6256:9;6251:447;1315:1;6271;:16;6251:447;;;6323:22;;;;;6308:12;;6323:19;;;;;;:22;;6343:1;;6323:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6308:37;-1:-1:-1;6363:18:80;;;6359:29;;6383:5;;;6359:29;6526:24;;;;;6498:25;;6526:17;;;;;;:24;;6544:5;;6526:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;;;-1:-1:-1;6580:34:80;;;6609:4;6580:34;6576:112;;;6634:39;6660:5;6667;6634:25;:39::i;:::-;-1:-1:-1;;6289:3:80;;6251:447;;;;6173:531;:::o;2906:176::-;2999:7;3025:50;3045:5;3052;3059:15;3025:19;:50::i;:::-;3018:57;2906:176;-1:-1:-1;;;2906:176:80:o;2362:248::-;2502:17;;:::i;:::-;2538:13;:46;2552:31;2570:5;2577;2552:17;:31::i;:::-;2538:46;;;;;;;;;;;;;;-1:-1:-1;2538:46:80;;;:65;;;;;;;;;;;2531:72;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2531:72:80;2362:248;-1:-1:-1;;2362:248:80:o;4502:1481::-;4686:1;4677:6;:10;4669:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;4827:17;4817:27;;;4809:62;;;;;;;;;;;;:::i;:::-;4902:16;4889:29;;;4881:67;;;;;;;;;;;;:::i;:::-;5078:24;;;;;5050:25;;5078:17;;;;;;:24;;5096:5;;5078:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;;;-1:-1:-1;5132:31:80;;;5124:80;;;;;;;;;;;;:::i;:::-;5222:34;;;5251:4;5222:34;5214:102;;;;;;;;;;;;:::i;:::-;5438:15;5425:9;:28;;5417:90;;;;;;;;;;;;:::i;:::-;5538:30;5558:9;5538:19;:30::i;:::-;5525:9;:43;5517:108;;;;;;;;;;;;:::i;:::-;5751:8;5732:15;5720:9;:27;:39;;5712:88;;;;;;;;;;;;:::i;:::-;5811:57;:22;;;5834:10;5854:4;5861:6;5811:22;:57::i;:::-;5879:97;5893:13;:46;5907:31;5925:5;5932;5907:17;:31::i;:::-;5893:46;;;;;;;;;;;5948:9;5968:6;5879:13;:97::i;:::-;4502:1481;;;;;:::o;6991:641::-;7088:49;7140:13;:46;7154:31;7172:5;7179;7154:17;:31::i;:::-;7140:46;;;;;;;;;;;7088:98;;7198:30;7230:20;7254:48;7273:11;7286:15;7254:18;:48::i;:::-;7452:18;;;;;;;;;;;:58;;:18;:58;;;;;;;;;;;;;;;;7197:105;;-1:-1:-1;7197:105:80;-1:-1:-1;7521:47:80;;:17;;;;7547:5;;7197:105;;7521:17;:47;:::i;:::-;7578;;;;;:26;;;;;;:47;;7605:5;;7612:12;;7578:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6991:641;;;;;:::o;3444:365::-;3588:7;3607:49;3659:13;:46;3673:31;3691:5;3698;3673:17;:31::i;:::-;3659:46;;;;;;;;;;;3607:98;;3719:14;3737:42;3756:11;3769:9;3737:18;:42::i;:::-;3716:63;3444:365;-1:-1:-1;;;;;;;3444:365:80:o;7665:181::-;7766:7;7819:5;7826:11;7802:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7792:47;;;;;;7785:54;;7665:181;;;;:::o;10809:134::-;10918:7;10906:19;;;;10905:31;;10809:134::o;1734:250:64:-;1872:105;1900:5;1931:27;;;1960:4;1966:2;1970:5;1908:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1872:19;:105::i;:::-;1734:250;;;;:::o;8873:1811:80:-;9156:21;9216:27;;;;;;;;;;:41;;;;:27;:41;9414:184;9439:11;9421:29;;:15;:29;;;:53;;;;-1:-1:-1;9454:20:80;;;;;9421:53;9414:184;;;9546:27;;;;;;;;;;;;;;;:41;9507:11;;-1:-1:-1;9546:41:80;;;;;9414:184;;;9612:20;;;9608:1070;;9731:27;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;9835:25;;;;;;;;;;;;;;;;;;9804:28;;;;;;;;;;;:56;;;;;;;;;;;;;9731:59;9804:56;;;;;;;;;;;;;;9608:1070;;;9896:15;9881:30;;:11;:30;;;9877:801;;;10098:24;;;10067:20;10098:24;;;;;;;;;;:31;10090:49;10098:31;;;10090:49;;;;;10161:33;;;10153:68;;;;;;;;;;;;:::i;:::-;10235:24;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;9877:801;;;10563:31;;;;;;;;;;;;;;;;;;;;;;;;;10532:28;;;-1:-1:-1;10532:28:80;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;10608:27;;;;;;;;;:59;;;;;;;;;;;;;;;8873:1811::o;8145:616::-;8290:6;8345:18;;;;;;;;;;:32;8290:6;;8345:32;;;:18;:32;8290:6;8508:205;8528:14;8515:27;;:9;:27;;:54;;;;-1:-1:-1;8546:23:80;;;;;8515:54;8508:205;;;8595:27;;;;;;;;;;;;;;;:34;8661:41;;;;;;;8595:34;;8585:44;8508:205;;;8731:14;;;;-1:-1:-1;8145:616:80;-1:-1:-1;;;8145:616:80:o;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;:15;;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;1296:90::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;1407:94::-;1001:507;;;:::o;2324:914::-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:31;995:9;990:34;;1006:18;1014:9;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;:::o;2313:257::-;;2425:2;2413:9;2404:7;2400:23;2396:32;2393:2;;;-1:-1;;2431:12;2393:2;227:6;221:13;20769:5;18438:13;18431:21;20747:5;20744:32;20734:2;;-1:-1;;20780:12;2577:293;;2707:2;2695:9;2686:7;2682:23;2678:32;2675:2;;;-1:-1;;2713:12;2675:2;547:6;541:13;559:48;601:5;559:48;:::i;2877:305::-;;3013:2;3001:9;2992:7;2988:23;2984:32;2981:2;;;-1:-1;;3019:12;2981:2;731:6;718:20;743:65;802:5;743:65;:::i;3189:460::-;;;3357:2;3345:9;3336:7;3332:23;3328:32;3325:2;;;-1:-1;;3363:12;3325:2;731:6;718:20;743:65;802:5;743:65;:::i;:::-;3415:95;-1:-1;3547:2;3601:22;;363:20;388:48;363:20;388:48;:::i;:::-;3555:78;;;;3319:330;;;;;:::o;3656:585::-;;;;3841:2;3829:9;3820:7;3816:23;3812:32;3809:2;;;-1:-1;;3847:12;3809:2;731:6;718:20;743:65;802:5;743:65;:::i;:::-;3899:95;-1:-1;4031:2;4085:22;;363:20;388:48;363:20;388:48;:::i;:::-;3803:438;;4039:78;;-1:-1;;;4154:2;4193:22;;;;2102:20;;3803:438::o;4248:711::-;;;;;4450:3;4438:9;4429:7;4425:23;4421:33;4418:2;;;-1:-1;;4457:12;4418:2;731:6;718:20;743:65;802:5;743:65;:::i;:::-;4509:95;-1:-1;4641:2;4695:22;;363:20;388:48;363:20;388:48;:::i;:::-;4412:547;;4649:78;;-1:-1;;;;4764:2;4803:22;;2102:20;;4872:2;4911:22;2102:20;;4412:547::o;4966:312::-;;5105:3;5093:9;5084:7;5080:23;5076:33;5073:2;;;-1:-1;;5112:12;5073:2;17620;17614:9;5105:3;17650:6;17646:17;17757:6;17745:10;17742:22;17721:18;17709:10;17706:34;17703:62;17700:2;;;-1:-1;;17768:12;17700:2;17620;17787:22;83:13;;101:33;83:13;101:33;:::i;:::-;1102:101;;1271:2;1336:22;;83:13;101:33;83:13;101:33;:::i;:::-;1304:60;1271:2;1290:5;1286:16;1279:86;;17620:2;1504:9;1500:22;2250:13;17620:2;1454:5;1450:16;1443:86;1590:2;1659:9;1655:22;2250:13;1590:2;1609:5;1605:16;1598:86;1752:3;1822:9;1818:22;2250:13;1752:3;1772:5;1768:16;1761:86;1912:3;1982:9;1978:22;2250:13;1912:3;1932:5;1928:16;1921:86;5164:98;;;;5067:211;;;;:::o;5285:263::-;;5400:2;5388:9;5379:7;5375:23;5371:32;5368:2;;;-1:-1;;5406:12;5368:2;-1:-1;2250:13;;5362:186;-1:-1;5362:186::o;10717:271::-;;5835:5;17908:12;-1:-1;20060:101;20074:6;20071:1;20068:13;20060:101;;;5979:4;20141:11;;;;;20135:18;20122:11;;;20115:39;20089:10;20060:101;;;20176:6;20173:1;20170:13;20167:2;;;-1:-1;20232:6;20227:3;20223:16;20216:27;20167:2;-1:-1;6010:16;;;;;10851:137;-1:-1;;10851:137::o;10995:486::-;20532:14;20536:2;20532:14;;;;;6305:86;;20532:14;;;;;11327:2;11318:12;;6305:86;11444:12;;;11186:295::o;11488:333::-;18780:42;18769:54;;;5626:37;;18769:54;;11807:2;11792:18;;5626:37;11643:2;11628:18;;11614:207::o;11828:444::-;18780:42;18769:54;;;5626:37;;18769:54;;;;12175:2;12160:18;;5626:37;12258:2;12243:18;;10561:37;;;;12011:2;11996:18;;11982:290::o;12279:345::-;18780:42;18769:54;;;;5626:37;;19224:4;19213:16;12610:2;12595:18;;6716:56;12440:2;12425:18;;12411:213::o;12631:333::-;18780:42;18769:54;;;;5626:37;;12950:2;12935:18;;10561:37;12786:2;12771:18;;12757:207::o;12971:252::-;18780:42;18769:54;;;;6124:65;;13113:2;13098:18;;13084:139::o;13600:416::-;13800:2;13814:47;;;7009:2;13785:18;;;18206:19;7045:34;18246:14;;;7025:55;7114:6;7100:12;;;7093:28;7140:12;;;13771:245::o;14023:416::-;14223:2;14237:47;;;7391:2;14208:18;;;18206:19;7427:34;18246:14;;;7407:55;7496:22;7482:12;;;7475:44;7538:12;;;14194:245::o;14446:416::-;14646:2;14660:47;;;7789:2;14631:18;;;18206:19;7825:24;18246:14;;;7805:45;7869:12;;;14617:245::o;14869:416::-;15069:2;15083:47;;;8120:2;15054:18;;;18206:19;8156:34;18246:14;;;8136:55;8225:6;8211:12;;;8204:28;8251:12;;;15040:245::o;15292:416::-;15492:2;15506:47;;;8502:2;15477:18;;;18206:19;8538:34;18246:14;;;8518:55;8607:8;8593:12;;;8586:30;8635:12;;;15463:245::o;15715:416::-;15915:2;15929:47;;;8886:2;15900:18;;;18206:19;8922:27;18246:14;;;8902:48;8969:12;;;15886:245::o;16138:416::-;16338:2;16352:47;;;9220:2;16323:18;;;18206:19;9256:34;18246:14;;;9236:55;9325:19;9311:12;;;9304:41;9364:12;;;16309:245::o;16561:416::-;16761:2;16775:47;;;9615:2;16746:18;;;18206:19;9651:34;18246:14;;;9631:55;9720:25;9706:12;;;9699:47;9765:12;;;16732:245::o;16984:338::-;10099:23;;18908:58;18897:70;10441:37;;10279:4;10268:16;;;10262:23;19130:10;19119:22;10337:14;;;10669:36;;;;17169:2;17154:18;;17140:182::o;17329:222::-;10561:37;;;17456:2;17441:18;;17427:124::o;20564:117::-;18780:42;20651:5;18769:54;20626:5;20623:35;20613:2;;20672:1;;20662:12"},"methodIdentifiers":{"getPendingRewards(address,address)":"7a27db57","getPendingRewardsAt(address,address,uint256)":"e2962564","getRewardNode(address,address,uint256)":"80723ab3","scheduleDistribution(address,address,uint256,uint256)":"974e98a6","startDistributionForToken(address,address)":"d85b7a61","startDistributions(address)":"0089fac3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IRewardTokenDistributor\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardTokenDistributor\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getPendingRewardsAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardTokenDistributor\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getRewardNode\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"nextTimestamp\",\"type\":\"uint32\"}],\"internalType\":\"struct DistributionScheduler.RewardNode\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardTokenDistributor\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"scheduleDistribution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardTokenDistributor\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"startDistributionForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardTokenDistributor\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"startDistributions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Any address may send tokens to the DistributionSchedule to be distributed among gauge depositors.\",\"kind\":\"dev\",\"methods\":{\"getPendingRewards(address,address)\":{\"params\":{\"gauge\":\"- The gauge which is to distribute the reward token.\",\"token\":\"- The token which is to be distributed among gauge depositors.\"}},\"getPendingRewardsAt(address,address,uint256)\":{\"params\":{\"gauge\":\"- The gauge which is to distribute the reward token.\",\"timestamp\":\"- The future timestamp in which to query.\",\"token\":\"- The token which is to be distributed among gauge depositors.\"}},\"getRewardNode(address,address,uint256)\":{\"params\":{\"gauge\":\"- The gauge which is to distribute the reward token.\",\"timestamp\":\"- The timestamp corresponding to the beginning of the week being queried.\",\"token\":\"- The token which is to be distributed among gauge depositors.\"},\"returns\":{\"_0\":\"- the amount of `token` which is to be distributed over the week starting at `timestamp`. - the timestamp of the next scheduled distribution of `token` to `gauge`. Zero if no distribution exists.\"}},\"scheduleDistribution(address,address,uint256,uint256)\":{\"details\":\"All distributions must start at the beginning of a week in UNIX time, i.e. Thurs 00:00 UTC. This is to prevent griefing from many low value distributions having to be processed before a meaningful distribution can be processed.\",\"params\":{\"amount\":\"- The amount of tokens which to distribute.\",\"gauge\":\"- The gauge which is to distribute the reward token.\",\"startTime\":\"- The timestamp at the beginning of the week over which to distribute tokens.\",\"token\":\"- The token which is to be distributed among gauge depositors.\"}},\"startDistributionForToken(address,address)\":{\"params\":{\"gauge\":\"- The gauge which is to distribute the reward token.\",\"token\":\"- The token which is to be distributed among gauge depositors.\"}},\"startDistributions(address)\":{\"params\":{\"gauge\":\"- The gauge which is to distribute the reward token.\"}}},\"title\":\"DistributionScheduler\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getPendingRewards(address,address)\":{\"notice\":\"Returns the amount of `token` which is ready to be distributed by `gauge` as of the current timestamp.\"},\"getPendingRewardsAt(address,address,uint256)\":{\"notice\":\"Returns the amount of `token` which is ready to be distributed by `gauge` as of a specified timestamp.\"},\"getRewardNode(address,address,uint256)\":{\"notice\":\"Returns information on the reward paid out to `gauge` in `token` over the week starting at `timestamp`\"},\"scheduleDistribution(address,address,uint256,uint256)\":{\"notice\":\"Schedule a distribution of tokens to gauge depositors over the span of 1 week.\"},\"startDistributionForToken(address,address)\":{\"notice\":\"Process all pending distributions for a given token for a gauge to start distributing tokens.\"},\"startDistributions(address)\":{\"notice\":\"Process all pending distributions for a gauge to start distributing the tokens.\"}},\"notice\":\"Scheduler for setting up permissionless distributions of liquidity gauge reward tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/admin/DistributionScheduler.sol\":\"DistributionScheduler\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/admin/DistributionScheduler.sol\":{\"keccak256\":\"0x5fcbafb21ba3e531688f1b59ef36dabfafa0d8f1766e8e06cd560994bc42e651\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://333ba30f7df151aa73e4768d0e97aeb5eb2fca427a69a721ea0a02a6e35e8ccf\",\"dweb:/ipfs/QmRc2hkTCmxQHrG2iMWzdMa2aDppaoAemtyZqVz9RNrjw9\"]}},\"version\":1}"}},"contracts/admin/GaugeAdder.sol":{"GaugeAdder":{"abi":[{"inputs":[{"internalType":"contract IGaugeController","name":"gaugeController","type":"address"},{"internalType":"contract IAuthorizerAdaptorEntrypoint","name":"authorizerAdaptorEntrypoint","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"},{"indexed":false,"internalType":"contract ILiquidityGaugeFactory","name":"gaugeFactory","type":"address"}],"name":"GaugeFactorySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"}],"name":"GaugeTypeAdded","type":"event"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"string","name":"gaugeType","type":"string"}],"name":"addGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"addGaugeType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizerAdaptorEntrypoint","outputs":[{"internalType":"contract IAuthorizerAdaptorEntrypoint","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"getFactoryForGaugeType","outputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeController","outputs":[{"internalType":"contract IGaugeController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getGaugeTypeAtIndex","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeTypes","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeTypesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"string","name":"gaugeType","type":"string"}],"name":"isGaugeFromValidFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"isValidGaugeType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"factory","type":"address"},{"internalType":"string","name":"gaugeType","type":"string"}],"name":"setGaugeFactory","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"610120604052620000126101406200027f565b60408051601f19818403018152919052805160209091012060c0523480156200003a57600080fd5b50604051620019ec380380620019ec8339810160408190526200005d9162000241565b816001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009757600080fd5b505afa158015620000ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d291906200021b565b6001600160a01b0316638d928af86040518163ffffffff1660e01b815260040160206040518083038186803b1580156200010b57600080fd5b505afa15801562000120573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014691906200021b565b30608052606090811b6001600160601b031990811660a052600160008190559184901b1660e05280546001600160a01b0319166001600160a01b038381169190911790915560408051637e062a3560e11b815290519184169163fc0c546a91600480820192602092909190829003018186803b158015620001c657600080fd5b505afa158015620001db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020191906200021b565b60601b6001600160601b0319166101005250620002ac9050565b6000602082840312156200022d578081fd5b81516200023a8162000293565b9392505050565b6000806040838503121562000254578081fd5b8251620002618162000293565b6020840151909250620002748162000293565b809150509250929050565b67457468657265756d60c01b815260080190565b6001600160a01b0381168114620002a957600080fd5b50565b60805160a05160601c60c05160e05160601c6101005160601c6116f2620002fa600039806107b25250806106765280610bff5250806106e25250806108b752508061086752506116f26000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637afcf0e61161008c57806396432aeb1161006657806396432aeb146101cb578063a0ade33e146101d3578063aaabadc5146101e6578063afcb1a86146101ee576100ea565b80637afcf0e61461019b578063851c1bb3146101a35780638d928af8146101c3576100ea565b8063231856fa116100c8578063231856fa1461014d578063572cb6a51461016057806358de9ade146101805780635bf7143414610188576100ea565b8063066edd7a146100ef57806308ceb0301461010457806316e772bc1461012d575b600080fd5b6101026100fd366004611063565b610203565b005b6101176101123660046111d3565b610404565b6040516101249190611446565b60405180910390f35b61014061013b3660046111a0565b6104cc565b6040516101249190611406565b61010261015b3660046111a0565b6104dd565b61017361016e3660046111a0565b6105f4565b604051610124919061130f565b610173610674565b610102610196366004611063565b610698565b610173610847565b6101b66101b13660046110d1565b610863565b6040516101249190611411565b6101736108b5565b6101b66108d9565b6101406101e1366004611063565b6108df565b610173610933565b6101f66109bf565b6040516101249190611388565b61020b610ab5565b8061021581610afe565b610254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316158061031757506040517fce3cc8bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063ce3cc8bd906102c59060009060040161130f565b60206040518083038186803b1580156102dd57600080fd5b505afa1580156102f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031591906110b1565b155b61034d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906115ca565b8260038360405161035e9190611265565b908152604051908190036020018120805473ffffffffffffffffffffffffffffffffffffffff939093167fffffffffffffffffffffffff0000000000000000000000000000000000000000909316929092179091556103be908390611265565b60405180910390207f46b04b7db9f5602bff429ad4ca486bf7ce9ef39d52716794e092c44d68db286783856040516103f7929190611459565b60405180910390a2505050565b60606002828154811061041357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156104bf5780601f10610494576101008083540402835291602001916104bf565b820191906000526020600020905b8154815290600101906020018083116104a257829003601f168201915b505050505090505b919050565b60006104d782610afe565b92915050565b6104e5610ab5565b6000815111610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b90611593565b61052981610afe565b15610560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114c8565b6002805460018101825560009190915281516105a3917f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01906020840190610f7d565b50806040516105b29190611265565b60405180910390207fb6691d9563ae43400fbc0d74ed71ab5fa74200ebcf1c8a2b5c9a0a67fd649be0826040516105e99190611446565b60405180910390a250565b60008161060081610afe565b610636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b6003836040516106469190611265565b9081526040519081900360200190205473ffffffffffffffffffffffffffffffffffffffff16915050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106a0610ab5565b806106aa81610afe565b6106e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b7f0000000000000000000000000000000000000000000000000000000000000000826040516020016107129190611265565b6040516020818303038152906040528051906020012014156108385760008373ffffffffffffffffffffffffffffffffffffffff166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561077657600080fd5b505afa15801561078a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ae9190611184565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b90611536565b505b6108428383610b98565b505050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610898929190611235565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60025490565b6000816108eb81610afe565b610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b61092b8484610d57565b949350505050565b600061093d6108b5565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561098257600080fd5b505afa158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba9190611184565b905090565b60606002805480602002602001604051908101604052809291908181526020016000905b82821015610aac5760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015610a985780601f10610a6d57610100808354040283529160200191610a98565b820191906000526020600020905b815481529060010190602001808311610a7b57829003601f168201915b5050505050815260200190600101906109e3565b50505050905090565b6000610ae46000357fffffffff0000000000000000000000000000000000000000000000000000000016610863565b9050610afb610af38233610e3f565b610191610edc565b50565b60008082604051602001610b129190611265565b60405160208183030381529060405280519060200120905060005b600254811015610b8e5760028181548110610b4457fe5b90600052602060002001604051602001610b5e9190611281565b60405160208183030381529060405280519060200120821415610b86576001925050506104c7565b600101610b2d565b5060009392505050565b610ba28282610d57565b610bd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b90611491565b60015460405173ffffffffffffffffffffffffffffffffffffffff90911690634036176a907f0000000000000000000000000000000000000000000000000000000000000000907f3a04f9000000000000000000000000000000000000000000000000000000000090610c5290879060029060240161135f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b9092168252610ce39291600401611330565b600060405180830381600087803b158015610cfd57600080fd5b505af1158015610d11573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108429190810190611111565b600080600383604051610d6a9190611265565b9081526040519081900360200190205473ffffffffffffffffffffffffffffffffffffffff1690508015610b8e576040517fce3cc8bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ce3cc8bd90610dea90879060040161130f565b60206040518083038186803b158015610e0257600080fd5b505afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a91906110b1565b61092b565b6000610e49610933565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610e859392919061141a565b60206040518083038186803b158015610e9d57600080fd5b505afa158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed591906110b1565b9392505050565b81610eea57610eea81610eee565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610afb917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610fbe57805160ff1916838001178555610feb565b82800160010185558215610feb579182015b82811115610feb578251825591602001919060010190610fd0565b50610ff7929150610ffb565b5090565b5b80821115610ff75760008155600101610ffc565b600082601f830112611020578081fd5b813561103361102e82611628565b611601565b915080825283602082850101111561104a57600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215611075578182fd5b82356110808161169a565b9150602083013567ffffffffffffffff81111561109b578182fd5b6110a785828601611010565b9150509250929050565b6000602082840312156110c2578081fd5b81518015158114610ed5578182fd5b6000602082840312156110e2578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ed5578182fd5b600060208284031215611122578081fd5b815167ffffffffffffffff811115611138578182fd5b8201601f81018413611148578182fd5b805161115661102e82611628565b81815285602083850101111561116a578384fd5b61117b82602083016020860161166a565b95945050505050565b600060208284031215611195578081fd5b8151610ed58161169a565b6000602082840312156111b1578081fd5b813567ffffffffffffffff8111156111c7578182fd5b61092b84828501611010565b6000602082840312156111e4578081fd5b5035919050565b6000815180845261120381602086016020860161166a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6000825161127781846020870161166a565b9190910192915050565b60008083546001808216600081146112a057600181146112d557611304565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083168652607f600284041686019350611304565b600283048786526020808720875b838110156112fc5781548a8201529085019082016112e3565b505050860193505b509195945050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff841682526040602083015261092b60408301846111eb565b73ffffffffffffffffffffffffffffffffffffffff929092168252600f0b602082015260400190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156113f9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526113e78583516111eb565b945092850192908501906001016113ad565b5092979650505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b600060208252610ed560208301846111eb565b60006040825261146c60408301856111eb565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b6020808252600d908201527f496e76616c696420676175676500000000000000000000000000000000000000604082015260600190565b60208082526018908201527f4761756765207479706520616c72656164792061646465640000000000000000604082015260600190565b60208082526012908201527f496e76616c696420676175676520747970650000000000000000000000000000604082015260600190565b60208082526027908201527f43616e6e6f742061646420676175676520666f722038302f32302042414c2d5760408201527f4554482042505400000000000000000000000000000000000000000000000000606082015260800190565b6020808252601a908201527f476175676520747970652063616e6e6f7420626520656d707479000000000000604082015260600190565b6020808252601e908201527f496e76616c696420666163746f727920696d706c656d656e746174696f6e0000604082015260600190565b60405181810167ffffffffffffffff8111828210171561162057600080fd5b604052919050565b600067ffffffffffffffff82111561163e578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b8381101561168557818101518382015260200161166d565b83811115611694576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610afb57600080fdfea2646970667358221220c54f0503aab5d52122d264a660ffdb6376d5b3b164b6972329f873d1638f005b64736f6c63430007010033","opcodes":"PUSH2 0x120 PUSH1 0x40 MSTORE PUSH3 0x12 PUSH2 0x140 PUSH3 0x27F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0xC0 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x19EC CODESIZE SUB DUP1 PUSH3 0x19EC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x5D SWAP2 PUSH3 0x241 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF851A440 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xAC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xD2 SWAP2 SWAP1 PUSH3 0x21B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8D928AF8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x120 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x146 SWAP2 SWAP1 PUSH3 0x21B JUMP JUMPDEST ADDRESS PUSH1 0x80 MSTORE PUSH1 0x60 SWAP1 DUP2 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 SSTORE SWAP2 DUP5 SWAP1 SHL AND PUSH1 0xE0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x7E062A35 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 DUP5 AND SWAP2 PUSH4 0xFC0C546A SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x201 SWAP2 SWAP1 PUSH3 0x21B JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE POP PUSH3 0x2AC SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x22D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x23A DUP2 PUSH3 0x293 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x254 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x261 DUP2 PUSH3 0x293 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x274 DUP2 PUSH3 0x293 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH8 0x457468657265756D PUSH1 0xC0 SHL DUP2 MSTORE PUSH1 0x8 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x16F2 PUSH3 0x2FA PUSH1 0x0 CODECOPY DUP1 PUSH2 0x7B2 MSTORE POP DUP1 PUSH2 0x676 MSTORE DUP1 PUSH2 0xBFF MSTORE POP DUP1 PUSH2 0x6E2 MSTORE POP DUP1 PUSH2 0x8B7 MSTORE POP DUP1 PUSH2 0x867 MSTORE POP PUSH2 0x16F2 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7AFCF0E6 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x96432AEB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x96432AEB EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0xA0ADE33E EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xAFCB1A86 EQ PUSH2 0x1EE JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x7AFCF0E6 EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1C3 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x231856FA GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x231856FA EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x572CB6A5 EQ PUSH2 0x160 JUMPI DUP1 PUSH4 0x58DE9ADE EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x5BF71434 EQ PUSH2 0x188 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x66EDD7A EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x8CEB030 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x16E772BC EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x1063 JUMP JUMPDEST PUSH2 0x203 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x117 PUSH2 0x112 CALLDATASIZE PUSH1 0x4 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x404 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1446 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x140 PUSH2 0x13B CALLDATASIZE PUSH1 0x4 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0x4CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1406 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x15B CALLDATASIZE PUSH1 0x4 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0x4DD JUMP JUMPDEST PUSH2 0x173 PUSH2 0x16E CALLDATASIZE PUSH1 0x4 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0x5F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x130F JUMP JUMPDEST PUSH2 0x173 PUSH2 0x674 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0x1063 JUMP JUMPDEST PUSH2 0x698 JUMP JUMPDEST PUSH2 0x173 PUSH2 0x847 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x1B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D1 JUMP JUMPDEST PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1411 JUMP JUMPDEST PUSH2 0x173 PUSH2 0x8B5 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x140 PUSH2 0x1E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1063 JUMP JUMPDEST PUSH2 0x8DF JUMP JUMPDEST PUSH2 0x173 PUSH2 0x933 JUMP JUMPDEST PUSH2 0x1F6 PUSH2 0x9BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1388 JUMP JUMPDEST PUSH2 0x20B PUSH2 0xAB5 JUMP JUMPDEST DUP1 PUSH2 0x215 DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x254 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO DUP1 PUSH2 0x317 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xCE3CC8BD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xCE3CC8BD SWAP1 PUSH2 0x2C5 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x130F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x315 SWAP2 SWAP1 PUSH2 0x10B1 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x34D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x15CA JUMP JUMPDEST DUP3 PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD PUSH2 0x35E SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD DUP2 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x3BE SWAP1 DUP4 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x46B04B7DB9F5602BFF429AD4CA486BF7CE9EF39D52716794E092C44D68DB2867 DUP4 DUP6 PUSH1 0x40 MLOAD PUSH2 0x3F7 SWAP3 SWAP2 SWAP1 PUSH2 0x1459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x413 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4BF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x494 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4BF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4A2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D7 DUP3 PUSH2 0xAFE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4E5 PUSH2 0xAB5 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x520 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x1593 JUMP JUMPDEST PUSH2 0x529 DUP2 PUSH2 0xAFE JUMP JUMPDEST ISZERO PUSH2 0x560 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14C8 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD PUSH2 0x5A3 SWAP2 PUSH32 0x405787FA12A823E0F2B7631CC41B3BA8828B3321CA811111FA75CD3AA3BB5ACE ADD SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xF7D JUMP JUMPDEST POP DUP1 PUSH1 0x40 MLOAD PUSH2 0x5B2 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0xB6691D9563AE43400FBC0D74ED71AB5FA74200EBCF1C8A2B5C9A0A67FD649BE0 DUP3 PUSH1 0x40 MLOAD PUSH2 0x5E9 SWAP2 SWAP1 PUSH2 0x1446 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x600 DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x636 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD PUSH2 0x646 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6A0 PUSH2 0xAB5 JUMP JUMPDEST DUP1 PUSH2 0x6AA DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x6E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x712 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO PUSH2 0x838 JUMPI PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x776 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x78A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7AE SWAP2 SWAP1 PUSH2 0x1184 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x836 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x1536 JUMP JUMPDEST POP JUMPDEST PUSH2 0x842 DUP4 DUP4 PUSH2 0xB98 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x898 SWAP3 SWAP2 SWAP1 PUSH2 0x1235 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x8EB DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x921 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH2 0x92B DUP5 DUP5 PUSH2 0xD57 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x93D PUSH2 0x8B5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x996 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9BA SWAP2 SWAP1 PUSH2 0x1184 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0xAAC JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA98 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA6D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA98 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA7B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x9E3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAE4 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x863 JUMP JUMPDEST SWAP1 POP PUSH2 0xAFB PUSH2 0xAF3 DUP3 CALLER PUSH2 0xE3F JUMP JUMPDEST PUSH2 0x191 PUSH2 0xEDC JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB12 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x2 SLOAD DUP2 LT ISZERO PUSH2 0xB8E JUMPI PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xB44 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB5E SWAP2 SWAP1 PUSH2 0x1281 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 EQ ISZERO PUSH2 0xB86 JUMPI PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x4C7 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB2D JUMP JUMPDEST POP PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xBA2 DUP3 DUP3 PUSH2 0xD57 JUMP JUMPDEST PUSH2 0xBD8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x1491 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x4036176A SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x3A04F90000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH2 0xC52 SWAP1 DUP8 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x24 ADD PUSH2 0x135F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP5 DUP6 AND OR SWAP1 MSTORE MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL SWAP1 SWAP3 AND DUP3 MSTORE PUSH2 0xCE3 SWAP3 SWAP2 PUSH1 0x4 ADD PUSH2 0x1330 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x842 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1111 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD PUSH2 0xD6A SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 ISZERO PUSH2 0xB8E JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE3CC8BD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCE3CC8BD SWAP1 PUSH2 0xDEA SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x130F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE3A SWAP2 SWAP1 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0x92B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE49 PUSH2 0x933 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE85 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x141A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xED5 SWAP2 SWAP1 PUSH2 0x10B1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xEEA JUMPI PUSH2 0xEEA DUP2 PUSH2 0xEEE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0xAFB SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xFBE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xFEB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xFEB JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xFEB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xFD0 JUMP JUMPDEST POP PUSH2 0xFF7 SWAP3 SWAP2 POP PUSH2 0xFFB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xFF7 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xFFC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1020 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1033 PUSH2 0x102E DUP3 PUSH2 0x1628 JUMP JUMPDEST PUSH2 0x1601 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x104A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1075 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1080 DUP2 PUSH2 0x169A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x109B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x10A7 DUP6 DUP3 DUP7 ADD PUSH2 0x1010 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10C2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xED5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10E2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xED5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1122 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1138 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x1148 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1156 PUSH2 0x102E DUP3 PUSH2 0x1628 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x116A JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x117B DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x166A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1195 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xED5 DUP2 PUSH2 0x169A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11B1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11C7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x92B DUP5 DUP3 DUP6 ADD PUSH2 0x1010 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E4 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1203 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x166A JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1277 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x166A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLOAD PUSH1 0x1 DUP1 DUP3 AND PUSH1 0x0 DUP2 EQ PUSH2 0x12A0 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x12D5 JUMPI PUSH2 0x1304 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP4 AND DUP7 MSTORE PUSH1 0x7F PUSH1 0x2 DUP5 DIV AND DUP7 ADD SWAP4 POP PUSH2 0x1304 JUMP JUMPDEST PUSH1 0x2 DUP4 DIV DUP8 DUP7 MSTORE PUSH1 0x20 DUP1 DUP8 KECCAK256 DUP8 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12FC JUMPI DUP2 SLOAD DUP11 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP3 ADD PUSH2 0x12E3 JUMP JUMPDEST POP POP POP DUP7 ADD SWAP4 POP JUMPDEST POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x92B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x11EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xF SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x13F9 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x13E7 DUP6 DUP4 MLOAD PUSH2 0x11EB JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AD JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xED5 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x11EB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE PUSH2 0x146C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x11EB JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676500000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x4761756765207479706520616C72656164792061646465640000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676520747970650000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742061646420676175676520666F722038302F32302042414C2D57 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4554482042505400000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520747970652063616E6E6F7420626520656D707479000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420666163746F727920696D706C656D656E746174696F6E0000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x163E JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1685 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x166D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1694 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xAFB JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC5 0x4F SDIV SUB 0xAA 0xB5 0xD5 0x21 0x22 0xD2 PUSH5 0xA660FFDB63 PUSH23 0xD5B3B164B6972329F873D1638F005B64736F6C63430007 ADD STOP CALLER ","sourceMap":"1245:5636:81:-:0;;;1591:28;;;:::i;:::-;;;;-1:-1:-1;;1591:28:81;;;;;;;;;1581:39;;1591:28;1581:39;;;;1543:77;;2026:401;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2162:15;-1:-1:-1;;;;;2162:21:81;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2162:32:81;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1054:4:51;2049:46:46;;1073:14:51::1;::::0;;;-1:-1:-1;;;;;;1073:14:51;;;::::1;::::0;2070:1:63;1030:31:51;2175:22:63;;;2212:34:81;;;;;::::1;::::0;2256:58;;-1:-1:-1;;;;;;2256:58:81::1;-1:-1:-1::0;;;;;2256:58:81;;::::1;::::0;;;::::1;::::0;;;2397:23:::1;::::0;;-1:-1:-1;;;2397:23:81;;;;2212:34;;::::1;::::0;2397:21:::1;::::0;:23:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;2212:34;2397:23;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2383:37;::::0;-1:-1:-1;;;;;;2383:37:81;::::1;::::0;-1:-1:-1;1245:5636:81;;-1:-1:-1;1245:5636:81;938:313:-1;;1078:2;1066:9;1057:7;1053:23;1049:32;1046:2;;;-1:-1;;1084:12;1046:2;325:6;319:13;337:58;389:5;337:58;:::i;:::-;1136:99;1040:211;-1:-1;;;1040:211::o;1558:517::-;;;1749:2;1737:9;1728:7;1724:23;1720:32;1717:2;;;-1:-1;;1755:12;1717:2;686:6;680:13;698:57;749:5;698:57;:::i;:::-;1942:2;2027:22;;118:13;1807:98;;-1:-1;136:68;118:13;136:68;:::i;:::-;1950:109;;;;1711:364;;;;;:::o;2733:381::-;-1:-1;;;2658:31;;2643:1;2708:11;;2922:192::o;4105:187::-;-1:-1;;;;;4039:54;;4199:70;;4189:2;;4283:1;;4273:12;4189:2;4183:109;:::o;:::-;1245:5636:81;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":2151}],"3611":[{"length":32,"start":2231}],"11960":[{"length":32,"start":1762}],"11962":[{"length":32,"start":1654},{"length":32,"start":3071}],"11964":[{"length":32,"start":1970}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637afcf0e61161008c57806396432aeb1161006657806396432aeb146101cb578063a0ade33e146101d3578063aaabadc5146101e6578063afcb1a86146101ee576100ea565b80637afcf0e61461019b578063851c1bb3146101a35780638d928af8146101c3576100ea565b8063231856fa116100c8578063231856fa1461014d578063572cb6a51461016057806358de9ade146101805780635bf7143414610188576100ea565b8063066edd7a146100ef57806308ceb0301461010457806316e772bc1461012d575b600080fd5b6101026100fd366004611063565b610203565b005b6101176101123660046111d3565b610404565b6040516101249190611446565b60405180910390f35b61014061013b3660046111a0565b6104cc565b6040516101249190611406565b61010261015b3660046111a0565b6104dd565b61017361016e3660046111a0565b6105f4565b604051610124919061130f565b610173610674565b610102610196366004611063565b610698565b610173610847565b6101b66101b13660046110d1565b610863565b6040516101249190611411565b6101736108b5565b6101b66108d9565b6101406101e1366004611063565b6108df565b610173610933565b6101f66109bf565b6040516101249190611388565b61020b610ab5565b8061021581610afe565b610254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316158061031757506040517fce3cc8bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063ce3cc8bd906102c59060009060040161130f565b60206040518083038186803b1580156102dd57600080fd5b505afa1580156102f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031591906110b1565b155b61034d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906115ca565b8260038360405161035e9190611265565b908152604051908190036020018120805473ffffffffffffffffffffffffffffffffffffffff939093167fffffffffffffffffffffffff0000000000000000000000000000000000000000909316929092179091556103be908390611265565b60405180910390207f46b04b7db9f5602bff429ad4ca486bf7ce9ef39d52716794e092c44d68db286783856040516103f7929190611459565b60405180910390a2505050565b60606002828154811061041357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156104bf5780601f10610494576101008083540402835291602001916104bf565b820191906000526020600020905b8154815290600101906020018083116104a257829003601f168201915b505050505090505b919050565b60006104d782610afe565b92915050565b6104e5610ab5565b6000815111610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b90611593565b61052981610afe565b15610560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114c8565b6002805460018101825560009190915281516105a3917f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01906020840190610f7d565b50806040516105b29190611265565b60405180910390207fb6691d9563ae43400fbc0d74ed71ab5fa74200ebcf1c8a2b5c9a0a67fd649be0826040516105e99190611446565b60405180910390a250565b60008161060081610afe565b610636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b6003836040516106469190611265565b9081526040519081900360200190205473ffffffffffffffffffffffffffffffffffffffff16915050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106a0610ab5565b806106aa81610afe565b6106e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b7f0000000000000000000000000000000000000000000000000000000000000000826040516020016107129190611265565b6040516020818303038152906040528051906020012014156108385760008373ffffffffffffffffffffffffffffffffffffffff166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561077657600080fd5b505afa15801561078a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ae9190611184565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b90611536565b505b6108428383610b98565b505050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610898929190611235565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60025490565b6000816108eb81610afe565b610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b906114ff565b61092b8484610d57565b949350505050565b600061093d6108b5565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561098257600080fd5b505afa158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba9190611184565b905090565b60606002805480602002602001604051908101604052809291908181526020016000905b82821015610aac5760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015610a985780601f10610a6d57610100808354040283529160200191610a98565b820191906000526020600020905b815481529060010190602001808311610a7b57829003601f168201915b5050505050815260200190600101906109e3565b50505050905090565b6000610ae46000357fffffffff0000000000000000000000000000000000000000000000000000000016610863565b9050610afb610af38233610e3f565b610191610edc565b50565b60008082604051602001610b129190611265565b60405160208183030381529060405280519060200120905060005b600254811015610b8e5760028181548110610b4457fe5b90600052602060002001604051602001610b5e9190611281565b60405160208183030381529060405280519060200120821415610b86576001925050506104c7565b600101610b2d565b5060009392505050565b610ba28282610d57565b610bd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024b90611491565b60015460405173ffffffffffffffffffffffffffffffffffffffff90911690634036176a907f0000000000000000000000000000000000000000000000000000000000000000907f3a04f9000000000000000000000000000000000000000000000000000000000090610c5290879060029060240161135f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b9092168252610ce39291600401611330565b600060405180830381600087803b158015610cfd57600080fd5b505af1158015610d11573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108429190810190611111565b600080600383604051610d6a9190611265565b9081526040519081900360200190205473ffffffffffffffffffffffffffffffffffffffff1690508015610b8e576040517fce3cc8bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ce3cc8bd90610dea90879060040161130f565b60206040518083038186803b158015610e0257600080fd5b505afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a91906110b1565b61092b565b6000610e49610933565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610e859392919061141a565b60206040518083038186803b158015610e9d57600080fd5b505afa158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed591906110b1565b9392505050565b81610eea57610eea81610eee565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610afb917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610fbe57805160ff1916838001178555610feb565b82800160010185558215610feb579182015b82811115610feb578251825591602001919060010190610fd0565b50610ff7929150610ffb565b5090565b5b80821115610ff75760008155600101610ffc565b600082601f830112611020578081fd5b813561103361102e82611628565b611601565b915080825283602082850101111561104a57600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215611075578182fd5b82356110808161169a565b9150602083013567ffffffffffffffff81111561109b578182fd5b6110a785828601611010565b9150509250929050565b6000602082840312156110c2578081fd5b81518015158114610ed5578182fd5b6000602082840312156110e2578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ed5578182fd5b600060208284031215611122578081fd5b815167ffffffffffffffff811115611138578182fd5b8201601f81018413611148578182fd5b805161115661102e82611628565b81815285602083850101111561116a578384fd5b61117b82602083016020860161166a565b95945050505050565b600060208284031215611195578081fd5b8151610ed58161169a565b6000602082840312156111b1578081fd5b813567ffffffffffffffff8111156111c7578182fd5b61092b84828501611010565b6000602082840312156111e4578081fd5b5035919050565b6000815180845261120381602086016020860161166a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6000825161127781846020870161166a565b9190910192915050565b60008083546001808216600081146112a057600181146112d557611304565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083168652607f600284041686019350611304565b600283048786526020808720875b838110156112fc5781548a8201529085019082016112e3565b505050860193505b509195945050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff841682526040602083015261092b60408301846111eb565b73ffffffffffffffffffffffffffffffffffffffff929092168252600f0b602082015260400190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156113f9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526113e78583516111eb565b945092850192908501906001016113ad565b5092979650505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b600060208252610ed560208301846111eb565b60006040825261146c60408301856111eb565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b6020808252600d908201527f496e76616c696420676175676500000000000000000000000000000000000000604082015260600190565b60208082526018908201527f4761756765207479706520616c72656164792061646465640000000000000000604082015260600190565b60208082526012908201527f496e76616c696420676175676520747970650000000000000000000000000000604082015260600190565b60208082526027908201527f43616e6e6f742061646420676175676520666f722038302f32302042414c2d5760408201527f4554482042505400000000000000000000000000000000000000000000000000606082015260800190565b6020808252601a908201527f476175676520747970652063616e6e6f7420626520656d707479000000000000604082015260600190565b6020808252601e908201527f496e76616c696420666163746f727920696d706c656d656e746174696f6e0000604082015260600190565b60405181810167ffffffffffffffff8111828210171561162057600080fd5b604052919050565b600067ffffffffffffffff82111561163e578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b8381101561168557818101518382015260200161166d565b83811115611694576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610afb57600080fdfea2646970667358221220c54f0503aab5d52122d264a660ffdb6376d5b3b164b6972329f873d1638f005b64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7AFCF0E6 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x96432AEB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x96432AEB EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0xA0ADE33E EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xAFCB1A86 EQ PUSH2 0x1EE JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x7AFCF0E6 EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1C3 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x231856FA GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x231856FA EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x572CB6A5 EQ PUSH2 0x160 JUMPI DUP1 PUSH4 0x58DE9ADE EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x5BF71434 EQ PUSH2 0x188 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x66EDD7A EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x8CEB030 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x16E772BC EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x1063 JUMP JUMPDEST PUSH2 0x203 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x117 PUSH2 0x112 CALLDATASIZE PUSH1 0x4 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x404 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1446 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x140 PUSH2 0x13B CALLDATASIZE PUSH1 0x4 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0x4CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1406 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x15B CALLDATASIZE PUSH1 0x4 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0x4DD JUMP JUMPDEST PUSH2 0x173 PUSH2 0x16E CALLDATASIZE PUSH1 0x4 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0x5F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x130F JUMP JUMPDEST PUSH2 0x173 PUSH2 0x674 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0x1063 JUMP JUMPDEST PUSH2 0x698 JUMP JUMPDEST PUSH2 0x173 PUSH2 0x847 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x1B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D1 JUMP JUMPDEST PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1411 JUMP JUMPDEST PUSH2 0x173 PUSH2 0x8B5 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x140 PUSH2 0x1E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1063 JUMP JUMPDEST PUSH2 0x8DF JUMP JUMPDEST PUSH2 0x173 PUSH2 0x933 JUMP JUMPDEST PUSH2 0x1F6 PUSH2 0x9BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1388 JUMP JUMPDEST PUSH2 0x20B PUSH2 0xAB5 JUMP JUMPDEST DUP1 PUSH2 0x215 DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x254 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO DUP1 PUSH2 0x317 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xCE3CC8BD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xCE3CC8BD SWAP1 PUSH2 0x2C5 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x130F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x315 SWAP2 SWAP1 PUSH2 0x10B1 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x34D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x15CA JUMP JUMPDEST DUP3 PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD PUSH2 0x35E SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD DUP2 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x3BE SWAP1 DUP4 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x46B04B7DB9F5602BFF429AD4CA486BF7CE9EF39D52716794E092C44D68DB2867 DUP4 DUP6 PUSH1 0x40 MLOAD PUSH2 0x3F7 SWAP3 SWAP2 SWAP1 PUSH2 0x1459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x413 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4BF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x494 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4BF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4A2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D7 DUP3 PUSH2 0xAFE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4E5 PUSH2 0xAB5 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x520 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x1593 JUMP JUMPDEST PUSH2 0x529 DUP2 PUSH2 0xAFE JUMP JUMPDEST ISZERO PUSH2 0x560 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14C8 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD PUSH2 0x5A3 SWAP2 PUSH32 0x405787FA12A823E0F2B7631CC41B3BA8828B3321CA811111FA75CD3AA3BB5ACE ADD SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xF7D JUMP JUMPDEST POP DUP1 PUSH1 0x40 MLOAD PUSH2 0x5B2 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0xB6691D9563AE43400FBC0D74ED71AB5FA74200EBCF1C8A2B5C9A0A67FD649BE0 DUP3 PUSH1 0x40 MLOAD PUSH2 0x5E9 SWAP2 SWAP1 PUSH2 0x1446 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x600 DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x636 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD PUSH2 0x646 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6A0 PUSH2 0xAB5 JUMP JUMPDEST DUP1 PUSH2 0x6AA DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x6E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x712 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO PUSH2 0x838 JUMPI PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x776 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x78A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7AE SWAP2 SWAP1 PUSH2 0x1184 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x836 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x1536 JUMP JUMPDEST POP JUMPDEST PUSH2 0x842 DUP4 DUP4 PUSH2 0xB98 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x898 SWAP3 SWAP2 SWAP1 PUSH2 0x1235 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x8EB DUP2 PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x921 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x14FF JUMP JUMPDEST PUSH2 0x92B DUP5 DUP5 PUSH2 0xD57 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x93D PUSH2 0x8B5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x996 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9BA SWAP2 SWAP1 PUSH2 0x1184 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0xAAC JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA98 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA6D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA98 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA7B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x9E3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAE4 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x863 JUMP JUMPDEST SWAP1 POP PUSH2 0xAFB PUSH2 0xAF3 DUP3 CALLER PUSH2 0xE3F JUMP JUMPDEST PUSH2 0x191 PUSH2 0xEDC JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB12 SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x2 SLOAD DUP2 LT ISZERO PUSH2 0xB8E JUMPI PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xB44 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB5E SWAP2 SWAP1 PUSH2 0x1281 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 EQ ISZERO PUSH2 0xB86 JUMPI PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x4C7 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB2D JUMP JUMPDEST POP PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xBA2 DUP3 DUP3 PUSH2 0xD57 JUMP JUMPDEST PUSH2 0xBD8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24B SWAP1 PUSH2 0x1491 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x4036176A SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x3A04F90000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH2 0xC52 SWAP1 DUP8 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x24 ADD PUSH2 0x135F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP5 DUP6 AND OR SWAP1 MSTORE MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL SWAP1 SWAP3 AND DUP3 MSTORE PUSH2 0xCE3 SWAP3 SWAP2 PUSH1 0x4 ADD PUSH2 0x1330 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x842 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1111 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD PUSH2 0xD6A SWAP2 SWAP1 PUSH2 0x1265 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 ISZERO PUSH2 0xB8E JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE3CC8BD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCE3CC8BD SWAP1 PUSH2 0xDEA SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x130F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE3A SWAP2 SWAP1 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0x92B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE49 PUSH2 0x933 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE85 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x141A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xED5 SWAP2 SWAP1 PUSH2 0x10B1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xEEA JUMPI PUSH2 0xEEA DUP2 PUSH2 0xEEE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0xAFB SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xFBE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xFEB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xFEB JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xFEB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xFD0 JUMP JUMPDEST POP PUSH2 0xFF7 SWAP3 SWAP2 POP PUSH2 0xFFB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xFF7 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xFFC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1020 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1033 PUSH2 0x102E DUP3 PUSH2 0x1628 JUMP JUMPDEST PUSH2 0x1601 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x104A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1075 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1080 DUP2 PUSH2 0x169A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x109B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x10A7 DUP6 DUP3 DUP7 ADD PUSH2 0x1010 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10C2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xED5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10E2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xED5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1122 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1138 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x1148 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1156 PUSH2 0x102E DUP3 PUSH2 0x1628 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x116A JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x117B DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x166A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1195 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xED5 DUP2 PUSH2 0x169A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11B1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11C7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x92B DUP5 DUP3 DUP6 ADD PUSH2 0x1010 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E4 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1203 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x166A JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1277 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x166A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLOAD PUSH1 0x1 DUP1 DUP3 AND PUSH1 0x0 DUP2 EQ PUSH2 0x12A0 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x12D5 JUMPI PUSH2 0x1304 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP4 AND DUP7 MSTORE PUSH1 0x7F PUSH1 0x2 DUP5 DIV AND DUP7 ADD SWAP4 POP PUSH2 0x1304 JUMP JUMPDEST PUSH1 0x2 DUP4 DIV DUP8 DUP7 MSTORE PUSH1 0x20 DUP1 DUP8 KECCAK256 DUP8 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12FC JUMPI DUP2 SLOAD DUP11 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP3 ADD PUSH2 0x12E3 JUMP JUMPDEST POP POP POP DUP7 ADD SWAP4 POP JUMPDEST POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x92B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x11EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xF SIGNEXTEND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x13F9 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x13E7 DUP6 DUP4 MLOAD PUSH2 0x11EB JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AD JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xED5 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x11EB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE PUSH2 0x146C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x11EB JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676500000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x4761756765207479706520616C72656164792061646465640000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676520747970650000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742061646420676175676520666F722038302F32302042414C2D57 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4554482042505400000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520747970652063616E6E6F7420626520656D707479000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420666163746F727920696D706C656D656E746174696F6E0000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x163E JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1685 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x166D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1694 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xAFB JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC5 0x4F SDIV SUB 0xAA 0xB5 0xD5 0x21 0x22 0xD2 PUSH5 0xA660FFDB63 PUSH23 0xD5B3B164B6972329F873D1638F005B64736F6C63430007 ADD STOP CALLER ","sourceMap":"1245:5636:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5034:538;;;;;;:::i;:::-;;:::i;:::-;;3110:133;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3432:141;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4201:327::-;;;;;;:::i;:::-;;:::i;3611:239::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2805:120::-;;;:::i;4566:430::-;;;;;;:::i;:::-;;:::i;2611:156::-;;;:::i;2607:430:46:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1158:79:51:-;;;:::i;3281:113:81:-;;;:::i;3888:251::-;;;;;;:::i;:::-;;:::i;1297:109:51:-;;;:::i;2963::81:-;;;:::i;:::-;;;;;;;:::i;5034:538::-;2276:21:46;:19;:21::i;:::-;5198:9:81::1;2504:28;2522:9;2504:17;:28::i;:::-;2496:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;5316:36:::2;::::0;::::2;::::0;;5315:83:::2;;-1:-1:-1::0;5359:38:81::2;::::0;;;;:26:::2;::::0;::::2;::::0;::::2;::::0;:38:::2;::::0;5394:1:::2;::::0;5359:38:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5358:39;5315:83;5294:160;;;;;;;;;;;;:::i;:::-;5496:7;5465:17;5483:9;5465:28;;;;;;:::i;:::-;::::0;;;::::2;::::0;;;;;::::2;::::0;;;:38;;::::2;::::0;;;::::2;::::0;;;::::2;::::0;;;::::2;::::0;;;5519:46:::2;::::0;5535:9;;5519:46:::2;:::i;:::-;;;;;;;;;5546:9;5557:7;5519:46;;;;;;;:::i;:::-;;;;;;;;2307:1:46::1;5034:538:81::0;;:::o;3110:133::-;3186:13;3218:11;3230:5;3218:18;;;;;;;;;;;;;;;;;;3211:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3218:18;3211:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3110:133;;;;:::o;3432:141::-;3515:4;3538:28;3556:9;3538:17;:28::i;:::-;3531:35;3432:141;-1:-1:-1;;3432:141:81:o;4201:327::-;2276:21:46;:19;:21::i;:::-;4323:1:81::1;4303:9;4297:23;:27;4289:66;;;;;;;;;;;;:::i;:::-;4374:28;4392:9;4374:17;:28::i;:::-;4373:29;4365:66;;;;;;;;;;;;:::i;:::-;4442:11;:27:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;4442:27:81;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;;4500:9;4485:36;;;;;;:::i;:::-;;;;;;;;;4511:9;4485:36;;;;;;:::i;:::-;;;;;;;;4201:327:::0;:::o;3611:239::-;3770:22;3742:9;2504:28;2522:9;2504:17;:28::i;:::-;2496:59;;;;;;;;;;;;:::i;:::-;3815:17:::1;3833:9;3815:28;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;;::::1;;::::0;-1:-1:-1;3611:239:81;;;;:::o;2805:120::-;2902:16;2805:120;:::o;4566:430::-;2276:21:46;:19;:21::i;:::-;4706:9:81::1;2504:28;2522:9;2504:17;:28::i;:::-;2496:59;;;;;;;;;;;;:::i;:::-;4777:9:::2;4762;4745:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;4735:38;;;;;;:51;4731:221;;;4802:11;4839:5;4816:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4802:54;;4886:11;4878:19;;:4;:19;;;;4870:71;;;;;;;;;;;;:::i;:::-;4731:221;;4962:27;4972:5;4979:9;4962;:27::i;:::-;2307:1:46::1;4566:430:81::0;;:::o;2611:156::-;2732:28;;;;2611:156;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;3281:113:81:-;3369:11;:18;3281:113;:::o;3888:251::-;4063:4;4035:9;2504:28;2522:9;2504:17;:28::i;:::-;2496:59;;;;;;;;;;;;:::i;:::-;4090:42:::1;4115:5;4122:9;4090:24;:42::i;:::-;4083:49:::0;3888:251;-1:-1:-1;;;;3888:251:81:o;1297:109:51:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;2963::81:-;3020:15;3054:11;3047:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2963:109;:::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;:::-;2420:181;:::o;6504:375:81:-;6579:4;6595:21;6646:9;6629:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;6619:38;;;;;;6595:62;;6672:9;6667:183;6691:11;:18;6687:22;;6667:183;;;6778:11;6790:1;6778:14;;;;;;;;;;;;;;;6761:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;6751:43;;;;;;6734:13;:60;6730:110;;;6821:4;6814:11;;;;;;6730:110;6711:3;;6667:183;;;-1:-1:-1;6867:5:81;;6504:375;-1:-1:-1;;;6504:375:81:o;6020:478::-;6105:42;6130:5;6137:9;6105:24;:42::i;:::-;6097:68;;;;;;;;;;;;:::i;:::-;6287:28;;6382:99;;6287:28;;;;;:42;;6351:16;;6405:35;;6382:99;;6442:5;;1535:1;;6382:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6287:204;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5605:293::-;5702:4;5718:35;5756:17;5774:9;5756:28;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;5801:41:81;;:90;;5853:38;;;;;:31;;;;;;:38;;5885:5;;5853:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5801:90;;1412:178:51;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1516:67;1412:178;-1:-1:-1;;;1412:178:51:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;1413:442;;1515:3;1508:4;1500:6;1496:17;1492:27;1482:2;;-1:-1;;1523:12;1482:2;1570:6;1557:20;1592:65;1607:49;1649:6;1607:49;:::i;:::-;1592:65;:::i;:::-;1583:74;;1677:6;1670:5;1663:21;1781:3;1713:4;1772:6;1705;1763:16;;1760:25;1757:2;;;1798:1;;1788:12;1757:2;26839:6;1713:4;1705:6;1701:17;1713:4;1739:5;1735:16;26816:30;26895:1;26877:16;;;1713:4;26877:16;26870:27;1739:5;1475:380;-1:-1;;1475:380::o;2000:472::-;;;2131:2;2119:9;2110:7;2106:23;2102:32;2099:2;;;-1:-1;;2137:12;2099:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2189:63;-1:-1;2317:2;2302:18;;2289:32;2341:18;2330:30;;2327:2;;;-1:-1;;2363:12;2327:2;2393:63;2448:7;2439:6;2428:9;2424:22;2393:63;:::i;:::-;2383:73;;;2093:379;;;;;:::o;2479:257::-;;2591:2;2579:9;2570:7;2566:23;2562:32;2559:2;;;-1:-1;;2597:12;2559:2;223:6;217:13;27659:5;23875:13;23868:21;27637:5;27634:32;27624:2;;-1:-1;;27670:12;2743:239;;2846:2;2834:9;2825:7;2821:23;2817:32;2814:2;;;-1:-1;;2852:12;2814:2;356:6;343:20;24052:66;27781:5;24041:78;27757:5;27754:34;27744:2;;-1:-1;;27792:12;2989:360;;3113:2;3101:9;3092:7;3088:23;3084:32;3081:2;;;-1:-1;;3119:12;3081:2;3170:17;3164:24;3208:18;3200:6;3197:30;3194:2;;;-1:-1;;3230:12;3194:2;3301:22;;518:4;506:17;;502:27;-1:-1;492:2;;-1:-1;;533:12;492:2;573:6;567:13;595:64;610:48;651:6;610:48;:::i;595:64::-;679:6;672:5;665:21;783:3;3113:2;774:6;707;765:16;;762:25;759:2;;;-1:-1;;790:12;759:2;810:39;842:6;3113:2;741:5;737:16;3113:2;707:6;703:17;810:39;:::i;:::-;3250:83;3075:274;-1:-1;;;;;3075:274::o;3356:303::-;;3491:2;3479:9;3470:7;3466:23;3462:32;3459:2;;;-1:-1;;3497:12;3459:2;967:6;961:13;979:53;1026:5;979:53;:::i;4505:347::-;;4619:2;4607:9;4598:7;4594:23;4590:32;4587:2;;;-1:-1;;4625:12;4587:2;4683:17;4670:31;4721:18;4713:6;4710:30;4707:2;;;-1:-1;;4743:12;4707:2;4773:63;4828:7;4819:6;4808:9;4804:22;4773:63;:::i;4859:241::-;;4963:2;4951:9;4942:7;4938:23;4934:32;4931:2;;;-1:-1;;4969:12;4931:2;-1:-1;1930:20;;4925:175;-1:-1;4925:175::o;7088:343::-;;7230:5;22432:12;22996:6;22991:3;22984:19;7323:52;7368:6;23033:4;23028:3;23024:14;23033:4;7349:5;7345:16;7323:52;:::i;:::-;27437:2;27417:14;27433:7;27413:28;7387:39;;;;23033:4;7387:39;;7178:253;-1:-1;;7178:253::o;12601:387::-;6725:37;;;24052:66;24041:78;12852:2;12843:12;;7020:56;12952:11;;;12743:245::o;12995:275::-;;9319:5;22432:12;9431:52;9476:6;9471:3;9464:4;9457:5;9453:16;9431:52;:::i;:::-;9495:16;;;;;13131:139;-1:-1;;13131:139::o;13277:269::-;;-1:-1;9685:5;9679:12;9719:1;;9708:9;9704:17;9732:1;9727:268;;;;10006:1;10001:425;;;;9697:729;;9727:268;9947:9;9936;9932:25;9927:3;9920:38;9805:4;9801:1;9790:9;9786:17;9782:28;9976:3;9972:16;9965:23;;9727:268;;10001:425;10070:1;10059:9;10055:17;22259:3;-1:-1;22249:14;22291:4;;-1:-1;22278:18;-1:-1;10259:130;10273:6;10270:1;10267:13;10259:130;;;10332:14;;10319:11;;;10312:35;10366:15;;;;10288:12;;10259:130;;;-1:-1;;;10403:16;;;-1:-1;9697:729;-1:-1;13531:10;;13410:136;-1:-1;;;;;13410:136::o;13553:222::-;24657:42;24646:54;;;;5529:37;;13680:2;13665:18;;13651:124::o;14027:417::-;;24657:42;23791:5;24646:54;5536:3;5529:37;14200:2;14318;14307:9;14303:18;14296:48;14358:76;14200:2;14189:9;14185:18;14420:6;14358:76;:::i;14451:329::-;24657:42;24646:54;;;;5529:37;;24562:2;24551:21;14766:2;14751:18;;8420:36;14604:2;14589:18;;14575:205::o;14787:410::-;;14984:2;;14973:9;14969:18;14984:2;15005:17;14998:47;15059:128;5830:5;22432:12;22996:6;22991:3;22984:19;23024:14;14973:9;23024:14;5842:103;;23024:14;14984:2;6002:6;5998:17;14973:9;5989:27;;5977:39;;14984:2;6097:5;22111:14;-1:-1;6136:360;6161:6;6158:1;6155:13;6136:360;;;6213:20;14973:9;6217:4;6213:20;;6208:3;6201:33;5229:66;5291:3;6268:6;6262:13;5229:66;:::i;:::-;6282:92;-1:-1;6475:14;;;;22829;;;;6183:1;6176:9;6136:360;;;-1:-1;15051:136;;14955:242;-1:-1;;;;;;;14955:242::o;15204:210::-;23875:13;;23868:21;6608:34;;15325:2;15310:18;;15296:118::o;15421:222::-;6725:37;;;15548:2;15533:18;;15519:124::o;15650:444::-;6725:37;;;24657:42;24646:54;;;15997:2;15982:18;;5529:37;24646:54;16080:2;16065:18;;5529:37;15833:2;15818:18;;15804:290::o;17494:310::-;;17641:2;17662:17;17655:47;17716:78;17641:2;17630:9;17626:18;17780:6;17716:78;:::i;17811:481::-;;18016:2;18037:17;18030:47;18091:78;18016:2;18005:9;18001:18;18155:6;18091:78;:::i;:::-;18083:86;;24657:42;23791:5;24646:54;18278:2;18267:9;18263:18;7544:85;17987:305;;;;;:::o;18299:416::-;18499:2;18513:47;;;10665:2;18484:18;;;22984:19;10701:15;23024:14;;;10681:36;10736:12;;;18470:245::o;18722:416::-;18922:2;18936:47;;;10987:2;18907:18;;;22984:19;11023:26;23024:14;;;11003:47;11069:12;;;18893:245::o;19145:416::-;19345:2;19359:47;;;11320:2;19330:18;;;22984:19;11356:20;23024:14;;;11336:41;11396:12;;;19316:245::o;19568:416::-;19768:2;19782:47;;;11647:2;19753:18;;;22984:19;11683:34;23024:14;;;11663:55;11752:9;11738:12;;;11731:31;11781:12;;;19739:245::o;19991:416::-;20191:2;20205:47;;;12032:2;20176:18;;;22984:19;12068:28;23024:14;;;12048:49;12116:12;;;20162:245::o;20414:416::-;20614:2;20628:47;;;12367:2;20599:18;;;22984:19;12403:32;23024:14;;;12383:53;12455:12;;;20585:245::o;21066:256::-;21128:2;21122:9;21154:17;;;21229:18;21214:34;;21250:22;;;21211:62;21208:2;;;21286:1;;21276:12;21208:2;21128;21295:22;21106:216;;-1:-1;21106:216::o;21329:321::-;;21472:18;21464:6;21461:30;21458:2;;;-1:-1;;21494:12;21458:2;-1:-1;21571:4;21548:17;21567:9;21544:33;21635:4;21625:15;;21395:255::o;26912:268::-;26977:1;26984:101;26998:6;26995:1;26992:13;26984:101;;;27065:11;;;27059:18;27046:11;;;27039:39;27020:2;27013:10;26984:101;;;27100:6;27097:1;27094:13;27091:2;;;26977:1;27156:6;27151:3;27147:16;27140:27;27091:2;;26961:219;;;:::o;27454:117::-;24657:42;27541:5;24646:54;27516:5;27513:35;27503:2;;27562:1;;27552:12"},"methodIdentifiers":{"addGauge(address,string)":"5bf71434","addGaugeType(string)":"231856fa","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getAuthorizerAdaptorEntrypoint()":"7afcf0e6","getFactoryForGaugeType(string)":"572cb6a5","getGaugeController()":"58de9ade","getGaugeTypeAtIndex(uint256)":"08ceb030","getGaugeTypes()":"afcb1a86","getGaugeTypesCount()":"96432aeb","getVault()":"8d928af8","isGaugeFromValidFactory(address,string)":"a0ade33e","isValidGaugeType(string)":"16e772bc","setGaugeFactory(address,string)":"066edd7a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IGaugeController\",\"name\":\"gaugeController\",\"type\":\"address\"},{\"internalType\":\"contract IAuthorizerAdaptorEntrypoint\",\"name\":\"authorizerAdaptorEntrypoint\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"gaugeFactory\",\"type\":\"address\"}],\"name\":\"GaugeFactorySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"GaugeTypeAdded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"addGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"addGaugeType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizerAdaptorEntrypoint\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptorEntrypoint\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"getFactoryForGaugeType\",\"outputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeController\",\"outputs\":[{\"internalType\":\"contract IGaugeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getGaugeTypeAtIndex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeTypes\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeTypesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"isGaugeFromValidFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"isValidGaugeType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"setGaugeFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addGauge(address,string)\":{\"details\":\"When adding gauges for L2 networks or sidechains, this must be called with the address of the *root* gauge which is deployed on Ethereum. It should *not* be called with the address of the child gauge which is deployed on the L2 / sidechain. If the gauge added is an Ethereum gauge, it cannot be a gauge for the 80BAL-20WETH pool.\"},\"addGaugeType(string)\":{\"params\":{\"gaugeType\":\"Name of the new gauge type.\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"setGaugeFactory(address,string)\":{\"details\":\"This function can either set a new factory or replace an existing one.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addGauge(address,string)\":{\"notice\":\"Adds a new gauge to the GaugeController for the given `gaugeType` type.\"},\"addGaugeType(string)\":{\"notice\":\"Adds a new `gaugeType` corresponding to a new network, which allows setting a factory and adding gauges for the type later on.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getAuthorizerAdaptorEntrypoint()\":{\"notice\":\"Returns the address of the Authorizer adaptor entrypoint contract.\"},\"getFactoryForGaugeType(string)\":{\"notice\":\"Returns the factory for gauge type `gaugeType`.\"},\"getGaugeController()\":{\"notice\":\"Returns the address of the Gauge Controller\"},\"getGaugeTypeAtIndex(uint256)\":{\"notice\":\"Returns gauge type name registered at the given index.\"},\"getGaugeTypes()\":{\"notice\":\"Returns the list of gauge types.\"},\"getGaugeTypesCount()\":{\"notice\":\"Returns the number of gauge types.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isGaugeFromValidFactory(address,string)\":{\"notice\":\"Returns true if `gauge` has been deployed by the factory for the gauge type `gaugeType`. Note that if a gauge type's factory changes then this function will start returning false for previously valid gauges.\"},\"isValidGaugeType(string)\":{\"notice\":\"Returns true if the given gauge type is valid; false otherwise.\"},\"setGaugeFactory(address,string)\":{\"notice\":\"Sets `factory` as the allowlisted factory contract for gauges with type `gaugeType`.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/admin/GaugeAdder.sol\":\"GaugeAdder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x25b2a2ad63f9aa59c45f1a81a2f79733b8dcdce268cc9b1ac03866396f4b0d17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://efe9f30e6cab81587b738089165050d35533926703f4ad1da0f86452a69874ce\",\"dweb:/ipfs/QmcJoNP8NAEefchpG3qs3CwMw1qhxBJTgBMY4KY6g6qfUa\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol\":{\"keccak256\":\"0x50d40373e50d13566dbb624ac65494f70835aa52ff553e1185df480feae6ecd8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6038ec50171ea847ca9aeeec4af6e9721bcba35223d364f832da5f269e8a722\",\"dweb:/ipfs/QmdvyixjrpFud1kAS8un3wje2xUjrY82BRL7sUHqKvLJq2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/admin/GaugeAdder.sol\":{\"keccak256\":\"0x679ab1f31aad932b35cc34617b1b97279ddb03776059dbed8d8ab5fd9eb9c2cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1592b73fe75314e502fe86c8590051454919221e5decec8b6f9045e5800e14e\",\"dweb:/ipfs/QmY4vv3Rjdc567VoU6kT6EHKvU3TQzPxHQMgBbxcQqak7q\"]}},\"version\":1}"}},"contracts/fee-distribution/FeeDistributor.sol":{"FeeDistributor":{"abi":[{"inputs":[{"internalType":"contract IVotingEscrow","name":"votingEscrow","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"OnlyCallerOptIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastCheckpointTimestamp","type":"uint256"}],"name":"TokenCheckpointed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"userTokenTimeCursor","type":"uint256"}],"name":"TokensClaimed","type":"event"},{"inputs":[],"name":"checkpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"checkpointToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"checkpointTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkpointUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"claimToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"claimTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"depositTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenLastBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getTokensDistributedInWeek","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getTotalSupplyAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getUserBalanceAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getUserTokenTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isOnlyCallerEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setOnlyCallerCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"setOnlyCallerCheckWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101206040523480156200001257600080fd5b50604051620029a1380380620029a18339810160408190526200003591620001d0565b604080518082018252600e81526d2332b2a234b9ba3934b13aba37b960911b602080830191825283518085019094526001808552603160f81b9185019182529251909120608052915190912060a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526002556001600160601b0319606083901b1660e052620000c881620001c4565b90506000620000d742620001c4565b905080821015620001055760405162461bcd60e51b8152600401620000fc9062000223565b60405180910390fd5b80821415620001b35760405163bd85b03960e01b81526000906001600160a01b0385169063bd85b039906200013f908590600401620002a0565b60206040518083038186803b1580156200015857600080fd5b505afa1580156200016d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019391906200020a565b11620001b35760405162461bcd60e51b8152600401620000fc9062000258565b5061010081905260035550620002a9565b62093a80908190040290565b60008060408385031215620001e3578182fd5b82516001600160a01b0381168114620001fa578283fd5b6020939093015192949293505050565b6000602082840312156200021c578081fd5b5051919050565b6020808252818101527f43616e6e6f74207374617274206265666f72652063757272656e74207765656b604082015260600190565b60208082526028908201527f5a65726f20746f74616c20737570706c7920726573756c747320696e206c6f736040820152677420746f6b656e7360c01b606082015260800190565b90815260200190565b60805160a05160c05160e05160601c6101005161268862000319600039806109ab5280610b0a5280610b6f5280610eec52508061033e52806108cd5280610a7a5280610c825280611453528061152752806119bc5250806118805250806118c25250806118a152506126886000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806390193b7c116100d8578063ca31879d1161008c578063e811f44b11610066578063e811f44b1461030e578063ed24911d14610321578063fcaa54ee1461032957610182565b8063ca31879d146102d5578063d3dc4ca1146102e8578063de681faf146102fb57610182565b8063a1648aa5116100bd578063a1648aa51461029a578063acbc1428146102ba578063c2c4c5c1146102cd57610182565b806390193b7c14610274578063905d10ac1461028757610182565b80634f3c50901161013a57806382aa5ad41161011457806382aa5ad414610239578063876e69a114610241578063887204671461025457610182565b80634f3c5090146102005780637b8d6221146102135780638050a7ee1461022657610182565b80632308805b1161016b5780632308805b146101ba578063338b5dea146101da5780633902b9bc146101ed57610182565b806308b0308a1461018757806314866e08146101a5575b600080fd5b61018f61033c565b60405161019c9190612309565b60405180910390f35b6101b86101b3366004611f6e565b610360565b005b6101cd6101c8366004611f6e565b61037c565b60405161019c9190612422565b6101b86101e83660046120e4565b6103ca565b6101b86101fb366004611f6e565b610416565b6101cd61020e366004612287565b610429565b6101b861022136600461214f565b61043b565b6101cd6102343660046120ac565b61051e565b6101cd610533565b6101cd61024f366004611f6e565b610539565b610267610262366004611f8a565b610577565b60405161019c91906123df565b6101cd610282366004611f6e565b61065a565b6101b861029536600461210f565b610682565b6102ad6102a8366004611f6e565b6106b7565b60405161019c9190612417565b6101cd6102c8366004611f6e565b6106e2565b6101b8610720565b6101cd6102e33660046120ac565b61073a565b6101cd6102f63660046120e4565b610782565b6101cd6103093660046120e4565b6107b7565b6101b861031c3660046121b8565b6107ec565b6101cd6107f6565b6101b8610337366004611fdd565b610805565b7f000000000000000000000000000000000000000000000000000000000000000090565b610368610876565b6103718161088d565b610379610e5d565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b6103d2610876565b6103dd826000610e64565b6103ff73ffffffffffffffffffffffffffffffffffffffff831633308461128e565b61040a826001610e64565b610412610e5d565b5050565b61041e610876565b610371816001610e64565b60009081526004602052604090205490565b610443610876565b61044d8382611331565b8260005b8181101561050e5761048486868381811061046857fe5b905060200201602081019061047d9190611f6e565b6000610e64565b6104db333086868581811061049557fe5b905060200201358989868181106104a857fe5b90506020020160208101906104bd9190611f6e565b73ffffffffffffffffffffffffffffffffffffffff1692919061128e565b6105068686838181106104ea57fe5b90506020020160208101906104ff9190611f6e565b6001610e64565b600101610451565b5050610518610e5d565b50505050565b600061052a838361133e565b90505b92915050565b60035490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526007602052604090205468010000000000000000900467ffffffffffffffff1690565b6060610581610876565b8361058b816113d6565b610593611428565b61059c8561088d565b8260608167ffffffffffffffff811180156105b657600080fd5b506040519080825280602002602001820160405280156105e0578160200160208202803683370190505b50905060005b82811015610646576105fd87878381811061046857fe5b6106278888888481811061060d57fe5b90506020020160208101906106229190611f6e565b6115d2565b82828151811061063357fe5b60209081029190910101526001016105e6565b5092505050610653610e5d565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61068a610876565b8060005b818110156106ad576106a58484838181106104ea57fe5b60010161068e565b5050610412610e5d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205468010000000000000000900467ffffffffffffffff1690565b610728610876565b610730611428565b610738610e5d565b565b6000610744610876565b8261074e816113d6565b610756611428565b61075f8461088d565b61076a836000610e64565b600061077685856115d2565b9250505061052d610e5d565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205490565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600860209081526040808320938352929052205490565b61037933826117ef565b600061080061187c565b905090565b60007fbd291ffccec065968fe20c5f8debdad73ab50837733f357eeae8814178015a9084846108338761065a565b604051602001610846949392919061242b565b60405160208183030381529060405280519060200120905061086c8482846101f8611919565b61051884846117ef565b610887600280541415610190611946565b60028055565b6040517f010ae75700000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063010ae75790610902908590600401612309565b60206040518083038186803b15801561091a57600080fd5b505afa15801561092e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610952919061229f565b90508061095f5750610379565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120805490916801000000000000000090910467ffffffffffffffff1690816109d9576109d2857f0000000000000000000000000000000000000000000000000000000000000000600087611954565b9050610a2c565b4282106109e95750505050610379565b50815470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660148185031115610a2c57610a2985838387611954565b90505b80610a35575060015b610a3d611ee5565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610ab190899086906004016123b9565b60806040518083038186803b158015610ac957600080fd5b505afa158015610add573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b019190612230565b905082610bd5577f00000000000000000000000000000000000000000000000000000000000000004211610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190612572565b60405180910390fd5b610ba07f0000000000000000000000000000000000000000000000000000000000000000610b9b8360400151611a75565b611a85565b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff821617855592505b610bdd611ee5565b60005b6032811015610dc25782604001518510158015610bfd5750868411155b15610d115760018401935082915086841115610c455760405180608001604052806000600f0b81526020016000600f0b81526020016000815260200160008152509250610d0c565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610cb9908b9088906004016123b9565b60806040518083038186803b158015610cd157600080fd5b505afa158015610ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d099190612230565b92505b610dba565b428510610d1d57610dc2565b6000826040015186039050600081846020015102600f0b8460000151600f0b13610d48576000610d59565b81846020015102846000015103600f0b5b905080158015610d6857508886115b15610d7f57610d7642611a75565b96505050610dc2565b73ffffffffffffffffffffffffffffffffffffffff8a1660009081526008602090815260408083208a84529091529020555062093a80909401935b600101610be0565b505083546fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9290920167ffffffffffffffff90811670010000000000000000000000000000000002929092177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff1668010000000000000000939092169290920217909155505050565b6001600255565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560205260408120805490916801000000000000000090910467ffffffffffffffff169081610f4857429150610eb642611a91565b83547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff919091161783557f00000000000000000000000000000000000000000000000000000000000000004211610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190612572565b610f9a565b814203905083610f9a576000610f5d83611a91565b610f6642611a91565b14905060006201518042610f7942611a75565b03109050818015610f88575080155b15610f97575050505050610412565b50505b82547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff16021783556040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8716906370a082319061102c903090600401612309565b60206040518083038186803b15801561104457600080fd5b505afa158015611058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107c919061229f565b84549091506000906110b590839070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611a9d565b9050806110c6575050505050610412565b6fffffffffffffffffffffffffffffffff821115611110576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b619061253b565b84546fffffffffffffffffffffffffffffffff808416700100000000000000000000000000000000029116178555600061114985611a91565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260066020526040812091925090815b6014811015611246578362093a80019250824210156111e4578615801561119a57508742145b156111b85760008481526020839052604090208054860190556111df565b868842038602816111c557fe5b600086815260208590526040902080549290910490910190555b611246565b861580156111f157508783145b1561120f576000848152602083905260409020805486019055611236565b8688840386028161121c57fe5b600086815260208590526040902080549290910490910190555b9196508692508291600101611174565b507f9b7f1a85a4c9b4e59e1b6527d9969c50cdfb3a1a467d0c4a51fb0ed8bf07f1308a858960405161127a9392919061250d565b60405180910390a150505050505050505050565b610518846323b872dd60e01b8585856040516024016112af9392919061232a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611aab565b6104128183146067611946565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600960209081526040808320938516835292905290812054801561138057905061052d565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260076020908152604080832054938716835260059091529020546113ce9167ffffffffffffffff9081169116611a85565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1615610379576103793373ffffffffffffffffffffffffffffffffffffffff831614610191611946565b600354600061143642611a91565b90508082118061144557504281145b15611451575050610738565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c2c4c5c16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156114b957600080fd5b505af11580156114cd573d6000803e3d6000fd5b5050505060005b60148110156115cb57818311156114ea576115cb565b6040517fbd85b03900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063bd85b0399061155c908690600401612422565b60206040518083038186803b15801561157457600080fd5b505afa158015611588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ac919061229f565b60008481526004602052604090205562093a80909201916001016114d4565b5050600355565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020526040812081611602858561133e565b60035473ffffffffffffffffffffffffffffffffffffffff8716600090815260076020526040812054929350916116829161165c91611657919068010000000000000000900467ffffffffffffffff16611b58565b611a75565b845461167d9068010000000000000000900467ffffffffffffffff16611a91565b611b58565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600660209081526040808320938b16835260089091528120929350909190805b6014811015611713578486106116d457611713565b600086815260046020908152604080832054868352818420549288905292205402816116fc57fe5b62093a8097909701960491909101906001016116bf565b5073ffffffffffffffffffffffffffffffffffffffff808a166000908152600960209081526040808320938c1683529290522085905580156117e35785546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000808304821684900382160291161786556117a573ffffffffffffffffffffffffffffffffffffffff89168a83611b64565b7fff097c7d8b1957a4ff09ef1361b5fb54dcede3941ba836d0beb9d10bec725de6898983886040516117da9493929190612383565b60405180910390a15b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016831515179055517fac9874a7a931a3f5c9f202c6d9cf40de5d21506993c9f9c38ca8265add89584c90611870908490849061235b565b60405180910390a15050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006118e9611b88565b306040516020016118fe95949392919061245e565b60405160208183030381529060405280519060200120905090565b6105188484847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85611b8c565b816104125761041281611bf0565b60008282825b6080811015611a695781831061196f57611a69565b600282840181010461197f611ee5565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906328d09d47906119f3908d9086906004016123b9565b60806040518083038186803b158015611a0b57600080fd5b505afa158015611a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a439190612230565b905088816040015111611a5857819450611a5f565b6001820393505b505060010161195a565b50909695505050505050565b600061052d62093a7f8301611a91565b80820390821002900390565b62093a80908190040290565b600061052a83836001611c1a565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051611ad491906122b7565b6000604051808303816000865af19150503d8060008114611b11576040519150601f19603f3d011682016040523d82523d6000602084013e611b16565b606091505b50915091506000821415611b2e573d6000803e3d6000fd5b610518815160001480611b50575081806020019051810190611b5091906121d4565b6101a2611946565b80820390821102900390565b611b838363a9059cbb60e01b84846040516024016112af9291906123b9565b505050565b4690565b6000611b9785611c30565b9050611bad611ba7878387611c69565b83611946565b611bbc428410156101b8611946565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152602081905260409020805460010190555050565b610379817f42414c0000000000000000000000000000000000000000000000000000000000611d71565b6000611c298484111583611946565b5050900390565b6000611c3a61187c565b82604051602001611c4c9291906122d3565b604051602081830303815290604052805190602001209050919050565b6000611c8a8473ffffffffffffffffffffffffffffffffffffffff16611dec565b15611d5f576040517f1626ba7e000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff861690631626ba7e90611ce59087908790600401612497565b60206040518083038186803b158015611cfd57600080fd5b505afa158015611d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3591906121f0565b7fffffffff0000000000000000000000000000000000000000000000000000000016149050610653565b611d6a848484611df2565b9050610653565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b3b151590565b6000611e0482516041146101b9611946565b60208281015160408085015160608601518251600080825295019283905292939092811a91600190611e3d9089908590889088906124ef565b6020604051602081039080840390855afa158015611e5f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906117e357508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161498975050505050505050565b60405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525090565b60008083601f840112611f24578182fd5b50813567ffffffffffffffff811115611f3b578182fd5b6020830191508360208083028501011115611f5557600080fd5b9250929050565b8051600f81900b811461052d57600080fd5b600060208284031215611f7f578081fd5b813561065381612622565b600080600060408486031215611f9e578182fd5b8335611fa981612622565b9250602084013567ffffffffffffffff811115611fc4578283fd5b611fd086828701611f13565b9497909650939450505050565b600080600060608486031215611ff1578283fd5b8335611ffc81612622565b925060208481013561200d81612644565b9250604085013567ffffffffffffffff80821115612029578384fd5b818701915087601f83011261203c578384fd5b81358181111561204a578485fd5b61207a847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016125cf565b9150808252888482850101111561208f578485fd5b808484018584013784848284010152508093505050509250925092565b600080604083850312156120be578182fd5b82356120c981612622565b915060208301356120d981612622565b809150509250929050565b600080604083850312156120f6578182fd5b823561210181612622565b946020939093013593505050565b60008060208385031215612121578182fd5b823567ffffffffffffffff811115612137578283fd5b61214385828601611f13565b90969095509350505050565b60008060008060408587031215612164578081fd5b843567ffffffffffffffff8082111561217b578283fd5b61218788838901611f13565b9096509450602087013591508082111561219f578283fd5b506121ac87828801611f13565b95989497509550505050565b6000602082840312156121c9578081fd5b813561065381612644565b6000602082840312156121e5578081fd5b815161065381612644565b600060208284031215612201578081fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610653578182fd5b600060808284031215612241578081fd5b61224b60806125cf565b6122558484611f5c565b81526122648460208501611f5c565b602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612298578081fd5b5035919050565b6000602082840312156122b0578081fd5b5051919050565b600082516122c98184602087016125f6565b9190910192915050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff9290921682521515602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015611a69578351835292840192918401916001016123fb565b901515815260200190565b90815260200190565b93845273ffffffffffffffffffffffffffffffffffffffff92909216602084015215156040830152606082015260800190565b94855260208501939093526040840191909152606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a00190565b60008382526040602083015282518060408401526124bc8160608501602087016125f6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b93845260ff9290921660208401526040830152606082015260800190565b73ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b6020808252601e908201527f4d6178696d756d20746f6b656e2062616c616e63652065786365656465640000604082015260600190565b60208082526024908201527f46656520646973747269627574696f6e20686173206e6f74207374617274656460408201527f2079657400000000000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff811182821017156125ee57600080fd5b604052919050565b60005b838110156126115781810151838201526020016125f9565b838111156105185750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461037957600080fd5b801515811461037957600080fdfea2646970667358221220a544860f566443e9c1fc339571e3e5d52b64dbafd0875bffd489bd4e671311c964736f6c63430007010033","opcodes":"PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x29A1 CODESIZE SUB DUP1 PUSH3 0x29A1 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x1D0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x2332B2A234B9BA3934B13ABA37B9 PUSH1 0x91 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x1 DUP1 DUP6 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP2 DUP6 ADD SWAP2 DUP3 MSTORE SWAP3 MLOAD SWAP1 SWAP2 KECCAK256 PUSH1 0x80 MSTORE SWAP2 MLOAD SWAP1 SWAP2 KECCAK256 PUSH1 0xA0 MSTORE PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH3 0xC8 DUP2 PUSH3 0x1C4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xD7 TIMESTAMP PUSH3 0x1C4 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH3 0x105 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xFC SWAP1 PUSH3 0x223 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 EQ ISZERO PUSH3 0x1B3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xBD85B039 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBD85B039 SWAP1 PUSH3 0x13F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH3 0x2A0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x158 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x16D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x193 SWAP2 SWAP1 PUSH3 0x20A JUMP JUMPDEST GT PUSH3 0x1B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xFC SWAP1 PUSH3 0x258 JUMP JUMPDEST POP PUSH2 0x100 DUP2 SWAP1 MSTORE PUSH1 0x3 SSTORE POP PUSH3 0x2A9 JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1E3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1FA JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x21C JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x43616E6E6F74207374617274206265666F72652063757272656E74207765656B PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x5A65726F20746F74616C20737570706C7920726573756C747320696E206C6F73 PUSH1 0x40 DUP3 ADD MSTORE PUSH8 0x7420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH2 0x2688 PUSH3 0x319 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x9AB MSTORE DUP1 PUSH2 0xB0A MSTORE DUP1 PUSH2 0xB6F MSTORE DUP1 PUSH2 0xEEC MSTORE POP DUP1 PUSH2 0x33E MSTORE DUP1 PUSH2 0x8CD MSTORE DUP1 PUSH2 0xA7A MSTORE DUP1 PUSH2 0xC82 MSTORE DUP1 PUSH2 0x1453 MSTORE DUP1 PUSH2 0x1527 MSTORE DUP1 PUSH2 0x19BC MSTORE POP DUP1 PUSH2 0x1880 MSTORE POP DUP1 PUSH2 0x18C2 MSTORE POP DUP1 PUSH2 0x18A1 MSTORE POP PUSH2 0x2688 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x182 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90193B7C GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xCA31879D GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE811F44B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xE811F44B EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0xFCAA54EE EQ PUSH2 0x329 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0xCA31879D EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0xD3DC4CA1 EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0xDE681FAF EQ PUSH2 0x2FB JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0xA1648AA5 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xA1648AA5 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xACBC1428 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x2CD JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x90193B7C EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0x905D10AC EQ PUSH2 0x287 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x4F3C5090 GT PUSH2 0x13A JUMPI DUP1 PUSH4 0x82AA5AD4 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x82AA5AD4 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x876E69A1 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x88720467 EQ PUSH2 0x254 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x4F3C5090 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x7B8D6221 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x8050A7EE EQ PUSH2 0x226 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x2308805B GT PUSH2 0x16B JUMPI DUP1 PUSH4 0x2308805B EQ PUSH2 0x1BA JUMPI DUP1 PUSH4 0x338B5DEA EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x3902B9BC EQ PUSH2 0x1ED JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x14866E08 EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18F PUSH2 0x33C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2309 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B8 PUSH2 0x1B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CD PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x37C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2422 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x1E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x20E4 JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x1FB CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x416 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x20E CALLDATASIZE PUSH1 0x4 PUSH2 0x2287 JUMP JUMPDEST PUSH2 0x429 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x221 CALLDATASIZE PUSH1 0x4 PUSH2 0x214F JUMP JUMPDEST PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x234 CALLDATASIZE PUSH1 0x4 PUSH2 0x20AC JUMP JUMPDEST PUSH2 0x51E JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x533 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x24F CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x539 JUMP JUMPDEST PUSH2 0x267 PUSH2 0x262 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F8A JUMP JUMPDEST PUSH2 0x577 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x282 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x65A JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x295 CALLDATASIZE PUSH1 0x4 PUSH2 0x210F JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST PUSH2 0x2AD PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x6B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2417 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x2C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x6E2 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x720 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x2E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x20AC JUMP JUMPDEST PUSH2 0x73A JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x2F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x20E4 JUMP JUMPDEST PUSH2 0x782 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x309 CALLDATASIZE PUSH1 0x4 PUSH2 0x20E4 JUMP JUMPDEST PUSH2 0x7B7 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x31C CALLDATASIZE PUSH1 0x4 PUSH2 0x21B8 JUMP JUMPDEST PUSH2 0x7EC JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x7F6 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x337 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FDD JUMP JUMPDEST PUSH2 0x805 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x368 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x371 DUP2 PUSH2 0x88D JUMP JUMPDEST PUSH2 0x379 PUSH2 0xE5D JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3D2 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x3DD DUP3 PUSH1 0x0 PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x3FF PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x128E JUMP JUMPDEST PUSH2 0x40A DUP3 PUSH1 0x1 PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x412 PUSH2 0xE5D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x41E PUSH2 0x876 JUMP JUMPDEST PUSH2 0x371 DUP2 PUSH1 0x1 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x443 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x44D DUP4 DUP3 PUSH2 0x1331 JUMP JUMPDEST DUP3 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x50E JUMPI PUSH2 0x484 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x468 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x47D SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x4DB CALLER ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x495 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP10 DUP10 DUP7 DUP2 DUP2 LT PUSH2 0x4A8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4BD SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP2 SWAP1 PUSH2 0x128E JUMP JUMPDEST PUSH2 0x506 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x4EA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4FF SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x1 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x451 JUMP JUMPDEST POP POP PUSH2 0x518 PUSH2 0xE5D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52A DUP4 DUP4 PUSH2 0x133E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x581 PUSH2 0x876 JUMP JUMPDEST DUP4 PUSH2 0x58B DUP2 PUSH2 0x13D6 JUMP JUMPDEST PUSH2 0x593 PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x59C DUP6 PUSH2 0x88D JUMP JUMPDEST DUP3 PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x5E0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x646 JUMPI PUSH2 0x5FD DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x468 JUMPI INVALID JUMPDEST PUSH2 0x627 DUP9 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x60D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x622 SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x15D2 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x633 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x5E6 JUMP JUMPDEST POP SWAP3 POP POP POP PUSH2 0x653 PUSH2 0xE5D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x68A PUSH2 0x876 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6AD JUMPI PUSH2 0x6A5 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x4EA JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x68E JUMP JUMPDEST POP POP PUSH2 0x412 PUSH2 0xE5D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x728 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x730 PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x738 PUSH2 0xE5D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x744 PUSH2 0x876 JUMP JUMPDEST DUP3 PUSH2 0x74E DUP2 PUSH2 0x13D6 JUMP JUMPDEST PUSH2 0x756 PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x75F DUP5 PUSH2 0x88D JUMP JUMPDEST PUSH2 0x76A DUP4 PUSH1 0x0 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x776 DUP6 DUP6 PUSH2 0x15D2 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x52D PUSH2 0xE5D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x379 CALLER DUP3 PUSH2 0x17EF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x800 PUSH2 0x187C JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xBD291FFCCEC065968FE20C5F8DEBDAD73AB50837733F357EEAE8814178015A90 DUP5 DUP5 PUSH2 0x833 DUP8 PUSH2 0x65A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x846 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x242B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x86C DUP5 DUP3 DUP5 PUSH2 0x1F8 PUSH2 0x1919 JUMP JUMPDEST PUSH2 0x518 DUP5 DUP5 PUSH2 0x17EF JUMP JUMPDEST PUSH2 0x887 PUSH1 0x2 DUP1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1946 JUMP JUMPDEST PUSH1 0x2 DUP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x10AE75700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x10AE757 SWAP1 PUSH2 0x902 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2309 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x91A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x92E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x952 SWAP2 SWAP1 PUSH2 0x229F JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x95F JUMPI POP PUSH2 0x379 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0x9D9 JUMPI PUSH2 0x9D2 DUP6 PUSH32 0x0 PUSH1 0x0 DUP8 PUSH2 0x1954 JUMP JUMPDEST SWAP1 POP PUSH2 0xA2C JUMP JUMPDEST TIMESTAMP DUP3 LT PUSH2 0x9E9 JUMPI POP POP POP POP PUSH2 0x379 JUMP JUMPDEST POP DUP2 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 DUP2 DUP6 SUB GT ISZERO PUSH2 0xA2C JUMPI PUSH2 0xA29 DUP6 DUP4 DUP4 DUP8 PUSH2 0x1954 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH2 0xA35 JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0xA3D PUSH2 0x1EE5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xAB1 SWAP1 DUP10 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x23B9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xADD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB01 SWAP2 SWAP1 PUSH2 0x2230 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0xBD5 JUMPI PUSH32 0x0 TIMESTAMP GT PUSH2 0xB6A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB61 SWAP1 PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBA0 PUSH32 0x0 PUSH2 0xB9B DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x1A75 JUMP JUMPDEST PUSH2 0x1A85 JUMP JUMPDEST DUP5 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND OR DUP6 SSTORE SWAP3 POP JUMPDEST PUSH2 0xBDD PUSH2 0x1EE5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x32 DUP2 LT ISZERO PUSH2 0xDC2 JUMPI DUP3 PUSH1 0x40 ADD MLOAD DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xBFD JUMPI POP DUP7 DUP5 GT ISZERO JUMPDEST ISZERO PUSH2 0xD11 JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP DUP3 SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0xC45 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP PUSH2 0xD0C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xCB9 SWAP1 DUP12 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x23B9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCE5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD09 SWAP2 SWAP1 PUSH2 0x2230 JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH2 0xDBA JUMP JUMPDEST TIMESTAMP DUP6 LT PUSH2 0xD1D JUMPI PUSH2 0xDC2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 ADD MLOAD DUP7 SUB SWAP1 POP PUSH1 0x0 DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL PUSH1 0xF SIGNEXTEND DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xF SIGNEXTEND SGT PUSH2 0xD48 JUMPI PUSH1 0x0 PUSH2 0xD59 JUMP JUMPDEST DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL DUP5 PUSH1 0x0 ADD MLOAD SUB PUSH1 0xF SIGNEXTEND JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0xD68 JUMPI POP DUP9 DUP7 GT JUMPDEST ISZERO PUSH2 0xD7F JUMPI PUSH2 0xD76 TIMESTAMP PUSH2 0x1A75 JUMP JUMPDEST SWAP7 POP POP POP PUSH2 0xDC2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE POP PUSH3 0x93A80 SWAP1 SWAP5 ADD SWAP4 JUMPDEST PUSH1 0x1 ADD PUSH2 0xBE0 JUMP JUMPDEST POP POP DUP4 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 ADD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP3 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SWAP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0xF48 JUMPI TIMESTAMP SWAP2 POP PUSH2 0xEB6 TIMESTAMP PUSH2 0x1A91 JUMP JUMPDEST DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR DUP4 SSTORE PUSH32 0x0 TIMESTAMP GT PUSH2 0xF43 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB61 SWAP1 PUSH2 0x2572 JUMP JUMPDEST PUSH2 0xF9A JUMP JUMPDEST DUP2 TIMESTAMP SUB SWAP1 POP DUP4 PUSH2 0xF9A JUMPI PUSH1 0x0 PUSH2 0xF5D DUP4 PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0xF66 TIMESTAMP PUSH2 0x1A91 JUMP JUMPDEST EQ SWAP1 POP PUSH1 0x0 PUSH3 0x15180 TIMESTAMP PUSH2 0xF79 TIMESTAMP PUSH2 0x1A75 JUMP JUMPDEST SUB LT SWAP1 POP DUP2 DUP1 ISZERO PUSH2 0xF88 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xF97 JUMPI POP POP POP POP POP PUSH2 0x412 JUMP JUMPDEST POP POP JUMPDEST DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 TIMESTAMP PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x102C SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2309 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1058 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x107C SWAP2 SWAP1 PUSH2 0x229F JUMP JUMPDEST DUP5 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x10B5 SWAP1 DUP4 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1A9D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x10C6 JUMPI POP POP POP POP POP PUSH2 0x412 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB61 SWAP1 PUSH2 0x253B JUMP JUMPDEST DUP5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP2 AND OR DUP6 SSTORE PUSH1 0x0 PUSH2 0x1149 DUP6 PUSH2 0x1A91 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP3 POP SWAP1 DUP2 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x1246 JUMPI DUP4 PUSH3 0x93A80 ADD SWAP3 POP DUP3 TIMESTAMP LT ISZERO PUSH2 0x11E4 JUMPI DUP7 ISZERO DUP1 ISZERO PUSH2 0x119A JUMPI POP DUP8 TIMESTAMP EQ JUMPDEST ISZERO PUSH2 0x11B8 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x11DF JUMP JUMPDEST DUP7 DUP9 TIMESTAMP SUB DUP7 MUL DUP2 PUSH2 0x11C5 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH2 0x1246 JUMP JUMPDEST DUP7 ISZERO DUP1 ISZERO PUSH2 0x11F1 JUMPI POP DUP8 DUP4 EQ JUMPDEST ISZERO PUSH2 0x120F JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x1236 JUMP JUMPDEST DUP7 DUP9 DUP5 SUB DUP7 MUL DUP2 PUSH2 0x121C JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST SWAP2 SWAP7 POP DUP7 SWAP3 POP DUP3 SWAP2 PUSH1 0x1 ADD PUSH2 0x1174 JUMP JUMPDEST POP PUSH32 0x9B7F1A85A4C9B4E59E1B6527D9969C50CDFB3A1A467D0C4A51FB0ED8BF07F130 DUP11 DUP6 DUP10 PUSH1 0x40 MLOAD PUSH2 0x127A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x250D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x518 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x12AF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1AAB JUMP JUMPDEST PUSH2 0x412 DUP2 DUP4 EQ PUSH1 0x67 PUSH2 0x1946 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1380 JUMPI SWAP1 POP PUSH2 0x52D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP8 AND DUP4 MSTORE PUSH1 0x5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x13CE SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND PUSH2 0x1A85 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x379 JUMPI PUSH2 0x379 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EQ PUSH2 0x191 PUSH2 0x1946 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 PUSH2 0x1436 TIMESTAMP PUSH2 0x1A91 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT DUP1 PUSH2 0x1445 JUMPI POP TIMESTAMP DUP2 EQ JUMPDEST ISZERO PUSH2 0x1451 JUMPI POP POP PUSH2 0x738 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC2C4C5C1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x15CB JUMPI DUP2 DUP4 GT ISZERO PUSH2 0x14EA JUMPI PUSH2 0x15CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xBD85B039 SWAP1 PUSH2 0x155C SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2422 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1588 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15AC SWAP2 SWAP1 PUSH2 0x229F JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH3 0x93A80 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x14D4 JUMP JUMPDEST POP POP PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 PUSH2 0x1602 DUP6 DUP6 PUSH2 0x133E JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP2 PUSH2 0x1682 SWAP2 PUSH2 0x165C SWAP2 PUSH2 0x1657 SWAP2 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1B58 JUMP JUMPDEST PUSH2 0x1A75 JUMP JUMPDEST DUP5 SLOAD PUSH2 0x167D SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0x1B58 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SWAP3 SWAP4 POP SWAP1 SWAP2 SWAP1 DUP1 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x1713 JUMPI DUP5 DUP7 LT PUSH2 0x16D4 JUMPI PUSH2 0x1713 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP7 DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD SWAP3 DUP9 SWAP1 MSTORE SWAP3 KECCAK256 SLOAD MUL DUP2 PUSH2 0x16FC JUMPI INVALID JUMPDEST PUSH3 0x93A80 SWAP8 SWAP1 SWAP8 ADD SWAP7 DIV SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x16BF JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP6 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x17E3 JUMPI DUP6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP5 SWAP1 SUB DUP3 AND MUL SWAP2 AND OR DUP7 SSTORE PUSH2 0x17A5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND DUP11 DUP4 PUSH2 0x1B64 JUMP JUMPDEST PUSH32 0xFF097C7D8B1957A4FF09EF1361B5FB54DCEDE3941BA836D0BEB9D10BEC725DE6 DUP10 DUP10 DUP4 DUP9 PUSH1 0x40 MLOAD PUSH2 0x17DA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2383 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0xAC9874A7A931A3F5C9F202C6D9CF40DE5D21506993C9F9C38CA8265ADD89584C SWAP1 PUSH2 0x1870 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x235B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x18E9 PUSH2 0x1B88 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x18FE SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x245E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x518 DUP5 DUP5 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 PUSH2 0x1B8C JUMP JUMPDEST DUP2 PUSH2 0x412 JUMPI PUSH2 0x412 DUP2 PUSH2 0x1BF0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP3 JUMPDEST PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1A69 JUMPI DUP2 DUP4 LT PUSH2 0x196F JUMPI PUSH2 0x1A69 JUMP JUMPDEST PUSH1 0x2 DUP3 DUP5 ADD DUP2 ADD DIV PUSH2 0x197F PUSH2 0x1EE5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0x19F3 SWAP1 DUP14 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x23B9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A1F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A43 SWAP2 SWAP1 PUSH2 0x2230 JUMP JUMPDEST SWAP1 POP DUP9 DUP2 PUSH1 0x40 ADD MLOAD GT PUSH2 0x1A58 JUMPI DUP2 SWAP5 POP PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x195A JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52D PUSH3 0x93A7F DUP4 ADD PUSH2 0x1A91 JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 LT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52A DUP4 DUP4 PUSH1 0x1 PUSH2 0x1C1A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1AD4 SWAP2 SWAP1 PUSH2 0x22B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1B11 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1B2E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x518 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1B50 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1B50 SWAP2 SWAP1 PUSH2 0x21D4 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1946 JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x1B83 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x12AF SWAP3 SWAP2 SWAP1 PUSH2 0x23B9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B97 DUP6 PUSH2 0x1C30 JUMP JUMPDEST SWAP1 POP PUSH2 0x1BAD PUSH2 0x1BA7 DUP8 DUP4 DUP8 PUSH2 0x1C69 JUMP JUMPDEST DUP4 PUSH2 0x1946 JUMP JUMPDEST PUSH2 0x1BBC TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x1946 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x379 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1D71 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C29 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x1946 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C3A PUSH2 0x187C JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1C4C SWAP3 SWAP2 SWAP1 PUSH2 0x22D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C8A DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1DEC JUMP JUMPDEST ISZERO PUSH2 0x1D5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP1 DUP3 MSTORE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH4 0x1626BA7E SWAP1 PUSH2 0x1CE5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2497 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D35 SWAP2 SWAP1 PUSH2 0x21F0 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ SWAP1 POP PUSH2 0x653 JUMP JUMPDEST PUSH2 0x1D6A DUP5 DUP5 DUP5 PUSH2 0x1DF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x653 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E04 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x1946 JUMP JUMPDEST PUSH1 0x20 DUP3 DUP2 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD DUP3 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP6 ADD SWAP3 DUP4 SWAP1 MSTORE SWAP3 SWAP4 SWAP1 SWAP3 DUP2 BYTE SWAP2 PUSH1 0x1 SWAP1 PUSH2 0x1E3D SWAP1 DUP10 SWAP1 DUP6 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x24EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E5F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x17E3 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1F24 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F3B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1F55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F7F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x653 DUP2 PUSH2 0x2622 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F9E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1FA9 DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1FC4 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1FD0 DUP7 DUP3 DUP8 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1FF1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1FFC DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 DUP2 ADD CALLDATALOAD PUSH2 0x200D DUP2 PUSH2 0x2644 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2029 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x203C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x204A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x207A DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x25CF JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP9 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x208F JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY DUP5 DUP5 DUP3 DUP5 ADD ADD MSTORE POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20BE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x20C9 DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x20D9 DUP2 PUSH2 0x2622 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20F6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2101 DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2121 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2137 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2143 DUP6 DUP3 DUP7 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2164 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x217B JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2187 DUP9 DUP4 DUP10 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x219F JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x21AC DUP8 DUP3 DUP9 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21C9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x653 DUP2 PUSH2 0x2644 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21E5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x653 DUP2 PUSH2 0x2644 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2201 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x653 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2241 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x224B PUSH1 0x80 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x2255 DUP5 DUP5 PUSH2 0x1F5C JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2264 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1F5C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2298 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22B0 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x22C9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x25F6 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1A69 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x23FB JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x24BC DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x25F6 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6178696D756D20746F6B656E2062616C616E63652065786365656465640000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x46656520646973747269627574696F6E20686173206E6F742073746172746564 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2079657400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x25EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2611 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x25F9 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x518 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 DIFFICULTY DUP7 0xF JUMP PUSH5 0x43E9C1FC33 SWAP6 PUSH18 0xE3E5D52B64DBAFD0875BFFD489BD4E671311 0xC9 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"2013:28387:82:-:0;;;3562:842;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2020:280:58;;;;;;;;;;;-1:-1:-1;;;2020:280:58;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2020:280:58;;;;;;2100:22;;;;;2085:37;;2150:25;;;;;2132:43;;2198:95;2185:108;;2175:7:63;:22;-1:-1:-1;;;;;;3661:28:82::1;::::0;;;;::::1;::::0;3712:30:::1;3732:9:::0;3712:19:::1;:30::i;:::-;3700:42:::0;-1:-1:-1;3752:19:82::1;3774:36;3794:15;3774:19;:36::i;:::-;3752:58;;3841:11;3828:9;:24;;3820:69;;;;-1:-1:-1::0;;;3820:69:82::1;;;;;;;:::i;:::-;;;;;;;;;3916:11;3903:9;:24;3899:434;;;4236:37;::::0;-1:-1:-1;;;4236:37:82;;4276:1:::1;::::0;-1:-1:-1;;;;;4236:24:82;::::1;::::0;::::1;::::0;:37:::1;::::0;4261:11;;4236:37:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;4228:94;;;;-1:-1:-1::0;;;4228:94:82::1;;;;;;;:::i;:::-;-1:-1:-1::0;4342:22:82::1;::::0;;;4374:11:::1;:23:::0;-1:-1:-1;2013:28387:82;;29871:196;30042:7;30030:19;;;;30029:31;;29871:196::o;331:443:-1:-;;;485:2;473:9;464:7;460:23;456:32;453:2;;;-1:-1;;491:12;453:2;105:13;;-1:-1;;;;;3425:54;;3651:57;;3641:2;;-1:-1;;3712:12;3641:2;676;726:22;;;;268:13;543:96;;268:13;;-1:-1;;;447:327::o;781:263::-;;896:2;884:9;875:7;871:23;867:32;864:2;;;-1:-1;;902:12;864:2;-1:-1;268:13;;858:186;-1:-1;858:186::o;1898:416::-;2098:2;2112:47;;;2083:18;;;3077:19;1312:34;3117:14;;;1292:55;1366:12;;;2069:245::o;2321:416::-;2521:2;2535:47;;;1617:2;2506:18;;;3077:19;1653:34;3117:14;;;1633:55;-1:-1;;;1708:12;;;1701:32;1752:12;;;2492:245::o;2744:222::-;1849:37;;;2871:2;2856:18;;2842:124::o;:::-;2013:28387:82;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"5935":[{"length":32,"start":6305}],"5937":[{"length":32,"start":6338}],"5939":[{"length":32,"start":6272}],"12390":[{"length":32,"start":830},{"length":32,"start":2253},{"length":32,"start":2682},{"length":32,"start":3202},{"length":32,"start":5203},{"length":32,"start":5415},{"length":32,"start":6588}],"12392":[{"length":32,"start":2475},{"length":32,"start":2826},{"length":32,"start":2927},{"length":32,"start":3820}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101825760003560e01c806390193b7c116100d8578063ca31879d1161008c578063e811f44b11610066578063e811f44b1461030e578063ed24911d14610321578063fcaa54ee1461032957610182565b8063ca31879d146102d5578063d3dc4ca1146102e8578063de681faf146102fb57610182565b8063a1648aa5116100bd578063a1648aa51461029a578063acbc1428146102ba578063c2c4c5c1146102cd57610182565b806390193b7c14610274578063905d10ac1461028757610182565b80634f3c50901161013a57806382aa5ad41161011457806382aa5ad414610239578063876e69a114610241578063887204671461025457610182565b80634f3c5090146102005780637b8d6221146102135780638050a7ee1461022657610182565b80632308805b1161016b5780632308805b146101ba578063338b5dea146101da5780633902b9bc146101ed57610182565b806308b0308a1461018757806314866e08146101a5575b600080fd5b61018f61033c565b60405161019c9190612309565b60405180910390f35b6101b86101b3366004611f6e565b610360565b005b6101cd6101c8366004611f6e565b61037c565b60405161019c9190612422565b6101b86101e83660046120e4565b6103ca565b6101b86101fb366004611f6e565b610416565b6101cd61020e366004612287565b610429565b6101b861022136600461214f565b61043b565b6101cd6102343660046120ac565b61051e565b6101cd610533565b6101cd61024f366004611f6e565b610539565b610267610262366004611f8a565b610577565b60405161019c91906123df565b6101cd610282366004611f6e565b61065a565b6101b861029536600461210f565b610682565b6102ad6102a8366004611f6e565b6106b7565b60405161019c9190612417565b6101cd6102c8366004611f6e565b6106e2565b6101b8610720565b6101cd6102e33660046120ac565b61073a565b6101cd6102f63660046120e4565b610782565b6101cd6103093660046120e4565b6107b7565b6101b861031c3660046121b8565b6107ec565b6101cd6107f6565b6101b8610337366004611fdd565b610805565b7f000000000000000000000000000000000000000000000000000000000000000090565b610368610876565b6103718161088d565b610379610e5d565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b6103d2610876565b6103dd826000610e64565b6103ff73ffffffffffffffffffffffffffffffffffffffff831633308461128e565b61040a826001610e64565b610412610e5d565b5050565b61041e610876565b610371816001610e64565b60009081526004602052604090205490565b610443610876565b61044d8382611331565b8260005b8181101561050e5761048486868381811061046857fe5b905060200201602081019061047d9190611f6e565b6000610e64565b6104db333086868581811061049557fe5b905060200201358989868181106104a857fe5b90506020020160208101906104bd9190611f6e565b73ffffffffffffffffffffffffffffffffffffffff1692919061128e565b6105068686838181106104ea57fe5b90506020020160208101906104ff9190611f6e565b6001610e64565b600101610451565b5050610518610e5d565b50505050565b600061052a838361133e565b90505b92915050565b60035490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526007602052604090205468010000000000000000900467ffffffffffffffff1690565b6060610581610876565b8361058b816113d6565b610593611428565b61059c8561088d565b8260608167ffffffffffffffff811180156105b657600080fd5b506040519080825280602002602001820160405280156105e0578160200160208202803683370190505b50905060005b82811015610646576105fd87878381811061046857fe5b6106278888888481811061060d57fe5b90506020020160208101906106229190611f6e565b6115d2565b82828151811061063357fe5b60209081029190910101526001016105e6565b5092505050610653610e5d565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61068a610876565b8060005b818110156106ad576106a58484838181106104ea57fe5b60010161068e565b5050610412610e5d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205468010000000000000000900467ffffffffffffffff1690565b610728610876565b610730611428565b610738610e5d565b565b6000610744610876565b8261074e816113d6565b610756611428565b61075f8461088d565b61076a836000610e64565b600061077685856115d2565b9250505061052d610e5d565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205490565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600860209081526040808320938352929052205490565b61037933826117ef565b600061080061187c565b905090565b60007fbd291ffccec065968fe20c5f8debdad73ab50837733f357eeae8814178015a9084846108338761065a565b604051602001610846949392919061242b565b60405160208183030381529060405280519060200120905061086c8482846101f8611919565b61051884846117ef565b610887600280541415610190611946565b60028055565b6040517f010ae75700000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063010ae75790610902908590600401612309565b60206040518083038186803b15801561091a57600080fd5b505afa15801561092e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610952919061229f565b90508061095f5750610379565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120805490916801000000000000000090910467ffffffffffffffff1690816109d9576109d2857f0000000000000000000000000000000000000000000000000000000000000000600087611954565b9050610a2c565b4282106109e95750505050610379565b50815470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660148185031115610a2c57610a2985838387611954565b90505b80610a35575060015b610a3d611ee5565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610ab190899086906004016123b9565b60806040518083038186803b158015610ac957600080fd5b505afa158015610add573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b019190612230565b905082610bd5577f00000000000000000000000000000000000000000000000000000000000000004211610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190612572565b60405180910390fd5b610ba07f0000000000000000000000000000000000000000000000000000000000000000610b9b8360400151611a75565b611a85565b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff821617855592505b610bdd611ee5565b60005b6032811015610dc25782604001518510158015610bfd5750868411155b15610d115760018401935082915086841115610c455760405180608001604052806000600f0b81526020016000600f0b81526020016000815260200160008152509250610d0c565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610cb9908b9088906004016123b9565b60806040518083038186803b158015610cd157600080fd5b505afa158015610ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d099190612230565b92505b610dba565b428510610d1d57610dc2565b6000826040015186039050600081846020015102600f0b8460000151600f0b13610d48576000610d59565b81846020015102846000015103600f0b5b905080158015610d6857508886115b15610d7f57610d7642611a75565b96505050610dc2565b73ffffffffffffffffffffffffffffffffffffffff8a1660009081526008602090815260408083208a84529091529020555062093a80909401935b600101610be0565b505083546fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9290920167ffffffffffffffff90811670010000000000000000000000000000000002929092177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff1668010000000000000000939092169290920217909155505050565b6001600255565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560205260408120805490916801000000000000000090910467ffffffffffffffff169081610f4857429150610eb642611a91565b83547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff919091161783557f00000000000000000000000000000000000000000000000000000000000000004211610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190612572565b610f9a565b814203905083610f9a576000610f5d83611a91565b610f6642611a91565b14905060006201518042610f7942611a75565b03109050818015610f88575080155b15610f97575050505050610412565b50505b82547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff16021783556040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8716906370a082319061102c903090600401612309565b60206040518083038186803b15801561104457600080fd5b505afa158015611058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107c919061229f565b84549091506000906110b590839070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611a9d565b9050806110c6575050505050610412565b6fffffffffffffffffffffffffffffffff821115611110576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b619061253b565b84546fffffffffffffffffffffffffffffffff808416700100000000000000000000000000000000029116178555600061114985611a91565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260066020526040812091925090815b6014811015611246578362093a80019250824210156111e4578615801561119a57508742145b156111b85760008481526020839052604090208054860190556111df565b868842038602816111c557fe5b600086815260208590526040902080549290910490910190555b611246565b861580156111f157508783145b1561120f576000848152602083905260409020805486019055611236565b8688840386028161121c57fe5b600086815260208590526040902080549290910490910190555b9196508692508291600101611174565b507f9b7f1a85a4c9b4e59e1b6527d9969c50cdfb3a1a467d0c4a51fb0ed8bf07f1308a858960405161127a9392919061250d565b60405180910390a150505050505050505050565b610518846323b872dd60e01b8585856040516024016112af9392919061232a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611aab565b6104128183146067611946565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600960209081526040808320938516835292905290812054801561138057905061052d565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260076020908152604080832054938716835260059091529020546113ce9167ffffffffffffffff9081169116611a85565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1615610379576103793373ffffffffffffffffffffffffffffffffffffffff831614610191611946565b600354600061143642611a91565b90508082118061144557504281145b15611451575050610738565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c2c4c5c16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156114b957600080fd5b505af11580156114cd573d6000803e3d6000fd5b5050505060005b60148110156115cb57818311156114ea576115cb565b6040517fbd85b03900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063bd85b0399061155c908690600401612422565b60206040518083038186803b15801561157457600080fd5b505afa158015611588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ac919061229f565b60008481526004602052604090205562093a80909201916001016114d4565b5050600355565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020526040812081611602858561133e565b60035473ffffffffffffffffffffffffffffffffffffffff8716600090815260076020526040812054929350916116829161165c91611657919068010000000000000000900467ffffffffffffffff16611b58565b611a75565b845461167d9068010000000000000000900467ffffffffffffffff16611a91565b611b58565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600660209081526040808320938b16835260089091528120929350909190805b6014811015611713578486106116d457611713565b600086815260046020908152604080832054868352818420549288905292205402816116fc57fe5b62093a8097909701960491909101906001016116bf565b5073ffffffffffffffffffffffffffffffffffffffff808a166000908152600960209081526040808320938c1683529290522085905580156117e35785546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000808304821684900382160291161786556117a573ffffffffffffffffffffffffffffffffffffffff89168a83611b64565b7fff097c7d8b1957a4ff09ef1361b5fb54dcede3941ba836d0beb9d10bec725de6898983886040516117da9493929190612383565b60405180910390a15b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016831515179055517fac9874a7a931a3f5c9f202c6d9cf40de5d21506993c9f9c38ca8265add89584c90611870908490849061235b565b60405180910390a15050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006118e9611b88565b306040516020016118fe95949392919061245e565b60405160208183030381529060405280519060200120905090565b6105188484847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85611b8c565b816104125761041281611bf0565b60008282825b6080811015611a695781831061196f57611a69565b600282840181010461197f611ee5565b6040517f28d09d4700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906328d09d47906119f3908d9086906004016123b9565b60806040518083038186803b158015611a0b57600080fd5b505afa158015611a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a439190612230565b905088816040015111611a5857819450611a5f565b6001820393505b505060010161195a565b50909695505050505050565b600061052d62093a7f8301611a91565b80820390821002900390565b62093a80908190040290565b600061052a83836001611c1a565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051611ad491906122b7565b6000604051808303816000865af19150503d8060008114611b11576040519150601f19603f3d011682016040523d82523d6000602084013e611b16565b606091505b50915091506000821415611b2e573d6000803e3d6000fd5b610518815160001480611b50575081806020019051810190611b5091906121d4565b6101a2611946565b80820390821102900390565b611b838363a9059cbb60e01b84846040516024016112af9291906123b9565b505050565b4690565b6000611b9785611c30565b9050611bad611ba7878387611c69565b83611946565b611bbc428410156101b8611946565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152602081905260409020805460010190555050565b610379817f42414c0000000000000000000000000000000000000000000000000000000000611d71565b6000611c298484111583611946565b5050900390565b6000611c3a61187c565b82604051602001611c4c9291906122d3565b604051602081830303815290604052805190602001209050919050565b6000611c8a8473ffffffffffffffffffffffffffffffffffffffff16611dec565b15611d5f576040517f1626ba7e000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff861690631626ba7e90611ce59087908790600401612497565b60206040518083038186803b158015611cfd57600080fd5b505afa158015611d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3591906121f0565b7fffffffff0000000000000000000000000000000000000000000000000000000016149050610653565b611d6a848484611df2565b9050610653565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b3b151590565b6000611e0482516041146101b9611946565b60208281015160408085015160608601518251600080825295019283905292939092811a91600190611e3d9089908590889088906124ef565b6020604051602081039080840390855afa158015611e5f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906117e357508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161498975050505050505050565b60405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525090565b60008083601f840112611f24578182fd5b50813567ffffffffffffffff811115611f3b578182fd5b6020830191508360208083028501011115611f5557600080fd5b9250929050565b8051600f81900b811461052d57600080fd5b600060208284031215611f7f578081fd5b813561065381612622565b600080600060408486031215611f9e578182fd5b8335611fa981612622565b9250602084013567ffffffffffffffff811115611fc4578283fd5b611fd086828701611f13565b9497909650939450505050565b600080600060608486031215611ff1578283fd5b8335611ffc81612622565b925060208481013561200d81612644565b9250604085013567ffffffffffffffff80821115612029578384fd5b818701915087601f83011261203c578384fd5b81358181111561204a578485fd5b61207a847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016125cf565b9150808252888482850101111561208f578485fd5b808484018584013784848284010152508093505050509250925092565b600080604083850312156120be578182fd5b82356120c981612622565b915060208301356120d981612622565b809150509250929050565b600080604083850312156120f6578182fd5b823561210181612622565b946020939093013593505050565b60008060208385031215612121578182fd5b823567ffffffffffffffff811115612137578283fd5b61214385828601611f13565b90969095509350505050565b60008060008060408587031215612164578081fd5b843567ffffffffffffffff8082111561217b578283fd5b61218788838901611f13565b9096509450602087013591508082111561219f578283fd5b506121ac87828801611f13565b95989497509550505050565b6000602082840312156121c9578081fd5b813561065381612644565b6000602082840312156121e5578081fd5b815161065381612644565b600060208284031215612201578081fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610653578182fd5b600060808284031215612241578081fd5b61224b60806125cf565b6122558484611f5c565b81526122648460208501611f5c565b602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612298578081fd5b5035919050565b6000602082840312156122b0578081fd5b5051919050565b600082516122c98184602087016125f6565b9190910192915050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff9290921682521515602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015611a69578351835292840192918401916001016123fb565b901515815260200190565b90815260200190565b93845273ffffffffffffffffffffffffffffffffffffffff92909216602084015215156040830152606082015260800190565b94855260208501939093526040840191909152606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a00190565b60008382526040602083015282518060408401526124bc8160608501602087016125f6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b93845260ff9290921660208401526040830152606082015260800190565b73ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b6020808252601e908201527f4d6178696d756d20746f6b656e2062616c616e63652065786365656465640000604082015260600190565b60208082526024908201527f46656520646973747269627574696f6e20686173206e6f74207374617274656460408201527f2079657400000000000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff811182821017156125ee57600080fd5b604052919050565b60005b838110156126115781810151838201526020016125f9565b838111156105185750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461037957600080fd5b801515811461037957600080fdfea2646970667358221220a544860f566443e9c1fc339571e3e5d52b64dbafd0875bffd489bd4e671311c964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x182 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90193B7C GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xCA31879D GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE811F44B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xE811F44B EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0xFCAA54EE EQ PUSH2 0x329 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0xCA31879D EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0xD3DC4CA1 EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0xDE681FAF EQ PUSH2 0x2FB JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0xA1648AA5 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xA1648AA5 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xACBC1428 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x2CD JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x90193B7C EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0x905D10AC EQ PUSH2 0x287 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x4F3C5090 GT PUSH2 0x13A JUMPI DUP1 PUSH4 0x82AA5AD4 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x82AA5AD4 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x876E69A1 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x88720467 EQ PUSH2 0x254 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x4F3C5090 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x7B8D6221 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x8050A7EE EQ PUSH2 0x226 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x2308805B GT PUSH2 0x16B JUMPI DUP1 PUSH4 0x2308805B EQ PUSH2 0x1BA JUMPI DUP1 PUSH4 0x338B5DEA EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x3902B9BC EQ PUSH2 0x1ED JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x14866E08 EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18F PUSH2 0x33C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2309 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B8 PUSH2 0x1B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CD PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x37C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2422 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x1E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x20E4 JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x1FB CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x416 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x20E CALLDATASIZE PUSH1 0x4 PUSH2 0x2287 JUMP JUMPDEST PUSH2 0x429 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x221 CALLDATASIZE PUSH1 0x4 PUSH2 0x214F JUMP JUMPDEST PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x234 CALLDATASIZE PUSH1 0x4 PUSH2 0x20AC JUMP JUMPDEST PUSH2 0x51E JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x533 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x24F CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x539 JUMP JUMPDEST PUSH2 0x267 PUSH2 0x262 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F8A JUMP JUMPDEST PUSH2 0x577 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x282 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x65A JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x295 CALLDATASIZE PUSH1 0x4 PUSH2 0x210F JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST PUSH2 0x2AD PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x6B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2417 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x2C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x6E2 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x720 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x2E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x20AC JUMP JUMPDEST PUSH2 0x73A JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x2F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x20E4 JUMP JUMPDEST PUSH2 0x782 JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x309 CALLDATASIZE PUSH1 0x4 PUSH2 0x20E4 JUMP JUMPDEST PUSH2 0x7B7 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x31C CALLDATASIZE PUSH1 0x4 PUSH2 0x21B8 JUMP JUMPDEST PUSH2 0x7EC JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x7F6 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x337 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FDD JUMP JUMPDEST PUSH2 0x805 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x368 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x371 DUP2 PUSH2 0x88D JUMP JUMPDEST PUSH2 0x379 PUSH2 0xE5D JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3D2 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x3DD DUP3 PUSH1 0x0 PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x3FF PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x128E JUMP JUMPDEST PUSH2 0x40A DUP3 PUSH1 0x1 PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x412 PUSH2 0xE5D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x41E PUSH2 0x876 JUMP JUMPDEST PUSH2 0x371 DUP2 PUSH1 0x1 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x443 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x44D DUP4 DUP3 PUSH2 0x1331 JUMP JUMPDEST DUP3 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x50E JUMPI PUSH2 0x484 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x468 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x47D SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x4DB CALLER ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x495 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP10 DUP10 DUP7 DUP2 DUP2 LT PUSH2 0x4A8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4BD SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP2 SWAP1 PUSH2 0x128E JUMP JUMPDEST PUSH2 0x506 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x4EA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4FF SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH1 0x1 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x451 JUMP JUMPDEST POP POP PUSH2 0x518 PUSH2 0xE5D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52A DUP4 DUP4 PUSH2 0x133E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x581 PUSH2 0x876 JUMP JUMPDEST DUP4 PUSH2 0x58B DUP2 PUSH2 0x13D6 JUMP JUMPDEST PUSH2 0x593 PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x59C DUP6 PUSH2 0x88D JUMP JUMPDEST DUP3 PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x5E0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x646 JUMPI PUSH2 0x5FD DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x468 JUMPI INVALID JUMPDEST PUSH2 0x627 DUP9 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x60D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x622 SWAP2 SWAP1 PUSH2 0x1F6E JUMP JUMPDEST PUSH2 0x15D2 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x633 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x5E6 JUMP JUMPDEST POP SWAP3 POP POP POP PUSH2 0x653 PUSH2 0xE5D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x68A PUSH2 0x876 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6AD JUMPI PUSH2 0x6A5 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x4EA JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x68E JUMP JUMPDEST POP POP PUSH2 0x412 PUSH2 0xE5D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x728 PUSH2 0x876 JUMP JUMPDEST PUSH2 0x730 PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x738 PUSH2 0xE5D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x744 PUSH2 0x876 JUMP JUMPDEST DUP3 PUSH2 0x74E DUP2 PUSH2 0x13D6 JUMP JUMPDEST PUSH2 0x756 PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x75F DUP5 PUSH2 0x88D JUMP JUMPDEST PUSH2 0x76A DUP4 PUSH1 0x0 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x776 DUP6 DUP6 PUSH2 0x15D2 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x52D PUSH2 0xE5D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x379 CALLER DUP3 PUSH2 0x17EF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x800 PUSH2 0x187C JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xBD291FFCCEC065968FE20C5F8DEBDAD73AB50837733F357EEAE8814178015A90 DUP5 DUP5 PUSH2 0x833 DUP8 PUSH2 0x65A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x846 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x242B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x86C DUP5 DUP3 DUP5 PUSH2 0x1F8 PUSH2 0x1919 JUMP JUMPDEST PUSH2 0x518 DUP5 DUP5 PUSH2 0x17EF JUMP JUMPDEST PUSH2 0x887 PUSH1 0x2 DUP1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1946 JUMP JUMPDEST PUSH1 0x2 DUP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x10AE75700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x10AE757 SWAP1 PUSH2 0x902 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2309 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x91A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x92E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x952 SWAP2 SWAP1 PUSH2 0x229F JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x95F JUMPI POP PUSH2 0x379 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0x9D9 JUMPI PUSH2 0x9D2 DUP6 PUSH32 0x0 PUSH1 0x0 DUP8 PUSH2 0x1954 JUMP JUMPDEST SWAP1 POP PUSH2 0xA2C JUMP JUMPDEST TIMESTAMP DUP3 LT PUSH2 0x9E9 JUMPI POP POP POP POP PUSH2 0x379 JUMP JUMPDEST POP DUP2 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 DUP2 DUP6 SUB GT ISZERO PUSH2 0xA2C JUMPI PUSH2 0xA29 DUP6 DUP4 DUP4 DUP8 PUSH2 0x1954 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH2 0xA35 JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0xA3D PUSH2 0x1EE5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xAB1 SWAP1 DUP10 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x23B9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xADD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB01 SWAP2 SWAP1 PUSH2 0x2230 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0xBD5 JUMPI PUSH32 0x0 TIMESTAMP GT PUSH2 0xB6A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB61 SWAP1 PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBA0 PUSH32 0x0 PUSH2 0xB9B DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x1A75 JUMP JUMPDEST PUSH2 0x1A85 JUMP JUMPDEST DUP5 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND OR DUP6 SSTORE SWAP3 POP JUMPDEST PUSH2 0xBDD PUSH2 0x1EE5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x32 DUP2 LT ISZERO PUSH2 0xDC2 JUMPI DUP3 PUSH1 0x40 ADD MLOAD DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xBFD JUMPI POP DUP7 DUP5 GT ISZERO JUMPDEST ISZERO PUSH2 0xD11 JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP DUP3 SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0xC45 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP PUSH2 0xD0C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xCB9 SWAP1 DUP12 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x23B9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCE5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD09 SWAP2 SWAP1 PUSH2 0x2230 JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH2 0xDBA JUMP JUMPDEST TIMESTAMP DUP6 LT PUSH2 0xD1D JUMPI PUSH2 0xDC2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 ADD MLOAD DUP7 SUB SWAP1 POP PUSH1 0x0 DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL PUSH1 0xF SIGNEXTEND DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xF SIGNEXTEND SGT PUSH2 0xD48 JUMPI PUSH1 0x0 PUSH2 0xD59 JUMP JUMPDEST DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL DUP5 PUSH1 0x0 ADD MLOAD SUB PUSH1 0xF SIGNEXTEND JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0xD68 JUMPI POP DUP9 DUP7 GT JUMPDEST ISZERO PUSH2 0xD7F JUMPI PUSH2 0xD76 TIMESTAMP PUSH2 0x1A75 JUMP JUMPDEST SWAP7 POP POP POP PUSH2 0xDC2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE POP PUSH3 0x93A80 SWAP1 SWAP5 ADD SWAP4 JUMPDEST PUSH1 0x1 ADD PUSH2 0xBE0 JUMP JUMPDEST POP POP DUP4 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 ADD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP3 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SWAP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0xF48 JUMPI TIMESTAMP SWAP2 POP PUSH2 0xEB6 TIMESTAMP PUSH2 0x1A91 JUMP JUMPDEST DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR DUP4 SSTORE PUSH32 0x0 TIMESTAMP GT PUSH2 0xF43 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB61 SWAP1 PUSH2 0x2572 JUMP JUMPDEST PUSH2 0xF9A JUMP JUMPDEST DUP2 TIMESTAMP SUB SWAP1 POP DUP4 PUSH2 0xF9A JUMPI PUSH1 0x0 PUSH2 0xF5D DUP4 PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0xF66 TIMESTAMP PUSH2 0x1A91 JUMP JUMPDEST EQ SWAP1 POP PUSH1 0x0 PUSH3 0x15180 TIMESTAMP PUSH2 0xF79 TIMESTAMP PUSH2 0x1A75 JUMP JUMPDEST SUB LT SWAP1 POP DUP2 DUP1 ISZERO PUSH2 0xF88 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xF97 JUMPI POP POP POP POP POP PUSH2 0x412 JUMP JUMPDEST POP POP JUMPDEST DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 TIMESTAMP PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x102C SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2309 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1058 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x107C SWAP2 SWAP1 PUSH2 0x229F JUMP JUMPDEST DUP5 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x10B5 SWAP1 DUP4 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1A9D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x10C6 JUMPI POP POP POP POP POP PUSH2 0x412 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB61 SWAP1 PUSH2 0x253B JUMP JUMPDEST DUP5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP2 AND OR DUP6 SSTORE PUSH1 0x0 PUSH2 0x1149 DUP6 PUSH2 0x1A91 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP3 POP SWAP1 DUP2 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x1246 JUMPI DUP4 PUSH3 0x93A80 ADD SWAP3 POP DUP3 TIMESTAMP LT ISZERO PUSH2 0x11E4 JUMPI DUP7 ISZERO DUP1 ISZERO PUSH2 0x119A JUMPI POP DUP8 TIMESTAMP EQ JUMPDEST ISZERO PUSH2 0x11B8 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x11DF JUMP JUMPDEST DUP7 DUP9 TIMESTAMP SUB DUP7 MUL DUP2 PUSH2 0x11C5 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH2 0x1246 JUMP JUMPDEST DUP7 ISZERO DUP1 ISZERO PUSH2 0x11F1 JUMPI POP DUP8 DUP4 EQ JUMPDEST ISZERO PUSH2 0x120F JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x1236 JUMP JUMPDEST DUP7 DUP9 DUP5 SUB DUP7 MUL DUP2 PUSH2 0x121C JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST SWAP2 SWAP7 POP DUP7 SWAP3 POP DUP3 SWAP2 PUSH1 0x1 ADD PUSH2 0x1174 JUMP JUMPDEST POP PUSH32 0x9B7F1A85A4C9B4E59E1B6527D9969C50CDFB3A1A467D0C4A51FB0ED8BF07F130 DUP11 DUP6 DUP10 PUSH1 0x40 MLOAD PUSH2 0x127A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x250D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x518 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x12AF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1AAB JUMP JUMPDEST PUSH2 0x412 DUP2 DUP4 EQ PUSH1 0x67 PUSH2 0x1946 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1380 JUMPI SWAP1 POP PUSH2 0x52D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP8 AND DUP4 MSTORE PUSH1 0x5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x13CE SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND PUSH2 0x1A85 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x379 JUMPI PUSH2 0x379 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EQ PUSH2 0x191 PUSH2 0x1946 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 PUSH2 0x1436 TIMESTAMP PUSH2 0x1A91 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT DUP1 PUSH2 0x1445 JUMPI POP TIMESTAMP DUP2 EQ JUMPDEST ISZERO PUSH2 0x1451 JUMPI POP POP PUSH2 0x738 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC2C4C5C1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x15CB JUMPI DUP2 DUP4 GT ISZERO PUSH2 0x14EA JUMPI PUSH2 0x15CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xBD85B039 SWAP1 PUSH2 0x155C SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2422 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1588 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15AC SWAP2 SWAP1 PUSH2 0x229F JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH3 0x93A80 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x14D4 JUMP JUMPDEST POP POP PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 PUSH2 0x1602 DUP6 DUP6 PUSH2 0x133E JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP2 PUSH2 0x1682 SWAP2 PUSH2 0x165C SWAP2 PUSH2 0x1657 SWAP2 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1B58 JUMP JUMPDEST PUSH2 0x1A75 JUMP JUMPDEST DUP5 SLOAD PUSH2 0x167D SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0x1B58 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SWAP3 SWAP4 POP SWAP1 SWAP2 SWAP1 DUP1 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x1713 JUMPI DUP5 DUP7 LT PUSH2 0x16D4 JUMPI PUSH2 0x1713 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP7 DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD SWAP3 DUP9 SWAP1 MSTORE SWAP3 KECCAK256 SLOAD MUL DUP2 PUSH2 0x16FC JUMPI INVALID JUMPDEST PUSH3 0x93A80 SWAP8 SWAP1 SWAP8 ADD SWAP7 DIV SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x16BF JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP6 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x17E3 JUMPI DUP6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP5 SWAP1 SUB DUP3 AND MUL SWAP2 AND OR DUP7 SSTORE PUSH2 0x17A5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND DUP11 DUP4 PUSH2 0x1B64 JUMP JUMPDEST PUSH32 0xFF097C7D8B1957A4FF09EF1361B5FB54DCEDE3941BA836D0BEB9D10BEC725DE6 DUP10 DUP10 DUP4 DUP9 PUSH1 0x40 MLOAD PUSH2 0x17DA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2383 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0xAC9874A7A931A3F5C9F202C6D9CF40DE5D21506993C9F9C38CA8265ADD89584C SWAP1 PUSH2 0x1870 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x235B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x18E9 PUSH2 0x1B88 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x18FE SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x245E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x518 DUP5 DUP5 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 PUSH2 0x1B8C JUMP JUMPDEST DUP2 PUSH2 0x412 JUMPI PUSH2 0x412 DUP2 PUSH2 0x1BF0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP3 JUMPDEST PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1A69 JUMPI DUP2 DUP4 LT PUSH2 0x196F JUMPI PUSH2 0x1A69 JUMP JUMPDEST PUSH1 0x2 DUP3 DUP5 ADD DUP2 ADD DIV PUSH2 0x197F PUSH2 0x1EE5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0x19F3 SWAP1 DUP14 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x23B9 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A1F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A43 SWAP2 SWAP1 PUSH2 0x2230 JUMP JUMPDEST SWAP1 POP DUP9 DUP2 PUSH1 0x40 ADD MLOAD GT PUSH2 0x1A58 JUMPI DUP2 SWAP5 POP PUSH2 0x1A5F JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x195A JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52D PUSH3 0x93A7F DUP4 ADD PUSH2 0x1A91 JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 LT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52A DUP4 DUP4 PUSH1 0x1 PUSH2 0x1C1A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1AD4 SWAP2 SWAP1 PUSH2 0x22B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1B11 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1B2E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x518 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1B50 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1B50 SWAP2 SWAP1 PUSH2 0x21D4 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1946 JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x1B83 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x12AF SWAP3 SWAP2 SWAP1 PUSH2 0x23B9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B97 DUP6 PUSH2 0x1C30 JUMP JUMPDEST SWAP1 POP PUSH2 0x1BAD PUSH2 0x1BA7 DUP8 DUP4 DUP8 PUSH2 0x1C69 JUMP JUMPDEST DUP4 PUSH2 0x1946 JUMP JUMPDEST PUSH2 0x1BBC TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x1946 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x379 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1D71 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C29 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x1946 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C3A PUSH2 0x187C JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1C4C SWAP3 SWAP2 SWAP1 PUSH2 0x22D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C8A DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1DEC JUMP JUMPDEST ISZERO PUSH2 0x1D5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP1 DUP3 MSTORE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH4 0x1626BA7E SWAP1 PUSH2 0x1CE5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2497 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D35 SWAP2 SWAP1 PUSH2 0x21F0 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ SWAP1 POP PUSH2 0x653 JUMP JUMPDEST PUSH2 0x1D6A DUP5 DUP5 DUP5 PUSH2 0x1DF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x653 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E04 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x1946 JUMP JUMPDEST PUSH1 0x20 DUP3 DUP2 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD DUP3 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP6 ADD SWAP3 DUP4 SWAP1 MSTORE SWAP3 SWAP4 SWAP1 SWAP3 DUP2 BYTE SWAP2 PUSH1 0x1 SWAP1 PUSH2 0x1E3D SWAP1 DUP10 SWAP1 DUP6 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x24EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E5F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x17E3 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1F24 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F3B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1F55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F7F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x653 DUP2 PUSH2 0x2622 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F9E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1FA9 DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1FC4 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1FD0 DUP7 DUP3 DUP8 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1FF1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1FFC DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 DUP2 ADD CALLDATALOAD PUSH2 0x200D DUP2 PUSH2 0x2644 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2029 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x203C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x204A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x207A DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x25CF JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP9 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x208F JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY DUP5 DUP5 DUP3 DUP5 ADD ADD MSTORE POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20BE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x20C9 DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x20D9 DUP2 PUSH2 0x2622 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20F6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2101 DUP2 PUSH2 0x2622 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2121 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2137 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2143 DUP6 DUP3 DUP7 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2164 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x217B JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2187 DUP9 DUP4 DUP10 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x219F JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x21AC DUP8 DUP3 DUP9 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21C9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x653 DUP2 PUSH2 0x2644 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21E5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x653 DUP2 PUSH2 0x2644 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2201 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x653 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2241 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x224B PUSH1 0x80 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x2255 DUP5 DUP5 PUSH2 0x1F5C JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2264 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1F5C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2298 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22B0 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x22C9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x25F6 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1A69 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x23FB JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x24BC DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x25F6 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6178696D756D20746F6B656E2062616C616E63652065786365656465640000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x46656520646973747269627574696F6E20686173206E6F742073746172746564 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2079657400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x25EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2611 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x25F9 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x518 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 DIFFICULTY DUP7 0xF JUMP PUSH5 0x43E9C1FC33 SWAP6 PUSH18 0xE3E5D52B64DBAFD0875BFFD489BD4E671311 0xC9 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"2013:28387:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4489:111;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10104:114;;;;;;:::i;:::-;;:::i;:::-;;7175:140;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8423:236::-;;;;;;:::i;:::-;;:::i;10738:116::-;;;;;;:::i;:::-;;:::i;6938:144::-;;;;;;:::i;:::-;;:::i;9022:463::-;;;;;;:::i;:::-;;:::i;5712:161::-;;;;;;:::i;:::-;;:::i;4720:101::-;;;:::i;5000:133::-;;;;;;:::i;:::-;;:::i;12773:569::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1303:121:47:-;;;;;;:::i;:::-;;:::i;11190:246:82:-;;;;;;:::i;:::-;;:::i;2247:131:49:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5329:136:82:-;;;;;;:::i;:::-;;:::i;9725:94::-;;;:::i;11950:360::-;;;;;;:::i;:::-;;:::i;7606:166::-;;;;;;:::i;:::-;;:::i;6363:173::-;;;;;;:::i;:::-;;:::i;1551:117:49:-;;;;;;:::i;:::-;;:::i;1184:113:47:-;;;:::i;1674:398:49:-;;;;;;:::i;:::-;;:::i;4489:111:82:-;4580:13;4489:111;:::o;10104:114::-;2613:20:63;:18;:20::i;:::-;10183:28:82::1;10206:4;10183:22;:28::i;:::-;2654:19:63::0;:17;:19::i;:::-;10104:114:82;:::o;7175:140::-;7276:18;;7250:7;7276:18;;;:11;:18;;;;;:32;;;;;;;7175:140::o;8423:236::-;2613:20:63;:18;:20::i;:::-;8516:30:82::1;8533:5;8540;8516:16;:30::i;:::-;8556:57;:22;::::0;::::1;8579:10;8599:4;8606:6:::0;8556:22:::1;:57::i;:::-;8623:29;8640:5;8647:4;8623:16;:29::i;:::-;2654:19:63::0;:17;:19::i;:::-;8423:236:82;;:::o;10738:116::-;2613:20:63;:18;:20::i;:::-;10818:29:82::1;10835:5;10842:4;10818:16;:29::i;6938:144::-:0;7024:7;7050:25;;;:14;:25;;;;;;;6938:144::o;9022:463::-;2613:20:63;:18;:20::i;:::-;9140:66:82::1;9176:6:::0;9191:7;9140:35:::1;:66::i;:::-;9234:6:::0;9217:14:::1;9257:222;9281:6;9277:1;:10;9257:222;;;9308:34;9325:6;;9332:1;9325:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;9336:5;9308:16;:34::i;:::-;9356:65;9383:10;9403:4;9410:7;;9418:1;9410:10;;;;;;;;;;;;;9356:6;;9363:1;9356:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;:26;;::::0;:65;;:26:::1;:65::i;:::-;9435:33;9452:6;;9459:1;9452:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;9463:4;9435:16;:33::i;:::-;9289:3;;9257:222;;;;2643:1:63;2654:19:::0;:17;:19::i;:::-;9022:463:82;;;;:::o;5712:161::-;5804:7;5830:36;5854:4;5860:5;5830:23;:36::i;:::-;5823:43;;5712:161;;;;;:::o;4720:101::-;4803:11;;4720:101;:::o;5000:133::-;5099:16;;5073:7;5099:16;;;:10;:16;;;;;:27;;;;;;;5000:133::o;12773:569::-;12939:16;2613:20:63;:18;:20::i;:::-;12916:4:82::1;1508:19:49;1522:4;1508:13;:19::i;:::-;12971:24:82::2;:22;:24::i;:::-;13005:28;13028:4;13005:22;:28::i;:::-;13067:6:::0;13090:24:::2;13067:6:::0;13117:27:::2;::::0;::::2;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;13117:27:82::2;;13090:54;;13159:9;13154:157;13178:12;13174:1;:16;13154:157;;;13211:34;13228:6;;13235:1;13228:9;;;;;;13211:34;13272:28;13284:4;13290:6;;13297:1;13290:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;13272:11;:28::i;:::-;13259:7;13267:1;13259:10;;;;;;;;;::::0;;::::2;::::0;;;;;:41;13192:3:::2;;13154:157;;;-1:-1:-1::0;13328:7:82;-1:-1:-1;;2643:1:63::1;2654:19:::0;:17;:19::i;:::-;12773:569:82;;;;;:::o;1303:121:47:-;1398:19;;1372:7;1398:19;;;;;;;;;;;;1303:121::o;11190:246:82:-;2613:20:63;:18;:20::i;:::-;11306:6:82;11283:20:::1;11329:101;11353:12;11349:1;:16;11329:101;;;11386:33;11403:6;;11410:1;11403:9;;;;;;11386:33;11367:3;;11329:101;;;;2643:1:63;2654:19:::0;:17;:19::i;2247:131:49:-;2345:26;;2322:4;2345:26;;;:20;:26;;;;;;;;;2247:131::o;5329:136:82:-;5429:18;;5403:7;5429:18;;;:11;:18;;;;;:29;;;;;;;5329:136::o;9725:94::-;2613:20:63;:18;:20::i;:::-;9788:24:82::1;:22;:24::i;:::-;2654:19:63::0;:17;:19::i;:::-;9725:94:82:o;11950:360::-;12103:7;2613:20:63;:18;:20::i;:::-;12080:4:82::1;1508:19:49;1522:4;1508:13;:19::i;:::-;12126:24:82::2;:22;:24::i;:::-;12160:28;12183:4;12160:22;:28::i;:::-;12198:30;12215:5;12222;12198:16;:30::i;:::-;12239:14;12256:24;12268:4;12274:5;12256:11;:24::i;:::-;12239:41:::0;-1:-1:-1;;2643:1:63::1;2654:19:::0;:17;:19::i;7606:166:82:-;7733:21;;;;;7707:7;7733:21;;;:14;:21;;;;;;;;:32;;;;;;;;;7606:166::o;6363:173::-;6489:29;;;;;6463:7;6489:29;;;:23;:29;;;;;;;;:40;;;;;;;;;6363:173::o;1551:117:49:-;1621:40;1641:10;1653:7;1621:19;:40::i;1184:113:47:-;1244:7;1270:20;:18;:20::i;:::-;1263:27;;1184:113;:::o;1674:398:49:-;1825:18;1144:86;1900:4;1906:7;1915:18;1928:4;1915:12;:18::i;:::-;1856:78;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1846:89;;;;;;1825:110;;1945:76;1967:4;1973:10;1985:9;13190:3:31;1945:21:49;:76::i;:::-;2031:34;2051:4;2057:7;2031:19;:34::i;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:18;;2686:271::o;20783:6075:82:-;20871:36;;;;;20848:20;;20871:30;:13;:30;;;;:36;;20902:4;;20871:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20848:59;-1:-1:-1;21042:17:82;21038:30;;21061:7;;;21038:30;21108:16;;;21078:27;21108:16;;;:10;:16;;;;;21338:20;;21108:16;;21338:20;;;;;;;;21396:1576;;21534:58;21558:4;21564:10;21576:1;21579:12;21534:23;:58::i;:::-;21522:70;;21396:1576;;;21651:15;21627:20;:39;21623:416;;22018:7;;;;;;21623:416;-1:-1:-1;22125:31:82;;;;;;;22837:2;22810:24;;;:29;22806:156;;;22871:76;22895:4;22901:20;22923:9;22934:12;22871:23;:76::i;:::-;22859:88;;22806:156;23082:14;23078:58;;-1:-1:-1;23124:1:82;23078:58;23146:40;;:::i;:::-;23189:49;;;;;:32;:13;:32;;;;:49;;23222:4;;23228:9;;23189:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23146:92;-1:-1:-1;23513:25:82;23509:349;;23638:10;23620:15;:28;23612:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;23726:57;23735:10;23747:35;23765:13;:16;;;23747:17;:35::i;:::-;23726:8;:57::i;:::-;23797:50;;;;;;;;;;;-1:-1:-1;23509:349:82;24068:43;;:::i;:::-;24126:9;24121:2279;24145:2;24141:1;:6;24121:2279;;;24196:13;:16;;;24172:20;:40;;:69;;;;;24229:12;24216:9;:25;;24172:69;24168:2222;;;24731:1;24718:14;;;;24769:13;24750:32;;24816:12;24804:9;:24;24800:230;;;24868:31;;;;;;;;24888:1;24868:31;;;;;;24891:1;24868:31;;;;;;24894:1;24868:31;;;;24897:1;24868:31;;;24852:47;;24800:230;;;24962:49;;;;;:32;:13;:32;;;;:49;;24995:4;;25001:9;;24962:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24946:65;;24800:230;24168:2222;;;25296:15;25272:20;:39;25268:349;;25593:5;;25268:349;25635:9;25677:16;:19;;;25654:20;:42;25635:62;;25715:19;25786:2;25761:16;:22;;;:27;25737:51;;:16;:21;;;:51;;;:158;;25894:1;25737:158;;;25868:2;25843:16;:22;;;:27;25819:16;:21;;;:51;25811:60;;25737:158;25715:180;-1:-1:-1;25992:16:82;;:44;;;;;26024:12;26012:9;:24;25992:44;25988:175;;;26083:34;26101:15;26083:17;:34::i;:::-;26060:57;;26139:5;;;;25988:175;26260:29;;;;;;;:23;:29;;;;;;;;:51;;;;;;;;:65;-1:-1:-1;26368:7:82;26344:31;;;;24168:2222;24149:3;;24121:2279;;;-1:-1:-1;;26735:55:82;;;;26776:13;;;;;26735:55;;;;;;;;;;26800:51;;;;;;;;;;;;;;;-1:-1:-1;;;20783:6075:82:o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;15951:4718:82:-;16054:18;;;16022:29;16054:18;;;:11;:18;;;;;16106:21;;16054:18;;16106:21;;;;;;;;16178:1820;;16433:15;16417:31;;16492:36;16512:15;16492:19;:36::i;:::-;16462:67;;;;;;;;;;;;16648:10;16630:15;:28;16622:77;;;;;;;;;;;;:::i;:::-;16178:1820;;;16774:13;16756:15;:31;16730:57;;16807:5;16802:1186;;17170:32;17265:34;17285:13;17265:19;:34::i;:::-;17205:36;17225:15;17205:19;:36::i;:::-;:94;17170:129;;17551:21;17630:6;17612:15;17575:34;17593:15;17575:17;:34::i;:::-;:52;:61;17551:85;;17877:27;:48;;;;;17909:16;17908:17;17877:48;17873:101;;;17949:7;;;;;;;17873:101;16802:1186;;;18008:47;;;;;18039:15;18008:47;;;;;;18089:30;;;;;-1:-1:-1;;18089:15:82;;;;;;:30;;18113:4;;18089:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18178:24;;18066:53;;-1:-1:-1;18129:29:82;;18161:42;;18066:53;;18178:24;;;;;18161:16;:42::i;:::-;18129:74;-1:-1:-1;18217:26:82;18213:39;;18245:7;;;;;;;18213:39;18285:17;18269:33;;;18261:76;;;;;;;;;;;;:::i;:::-;18347:48;;;;;;;;;;;;;:24;18436:34;18456:13;18436:19;:34::i;:::-;18778:21;;;18480:16;18778:21;;;:14;:21;;;;;18406:64;;-1:-1:-1;18480:16:82;;18809:1776;18833:2;18829:1;:6;18809:1776;;;18930:19;18952:7;18930:29;18919:40;;18995:8;18977:15;:26;18973:1405;;;19144:28;;:64;;;;;19195:13;19176:15;:32;19144:64;19140:459;;;19232:34;;;;;;;;;;;:59;;;;;;19140:459;;;19557:23;19515:13;19497:15;:31;19472:21;:57;19471:109;;;;;19409:34;;;;;;;;;;;:171;;19471:109;;;;19409:171;;;;;19140:459;19695:5;;18973:1405;19863:28;;:57;;;;;19907:13;19895:8;:25;19863:57;19859:505;;;20012:34;;;;;;;;;;;:59;;;;;;19859:505;;;20322:23;20280:13;20269:8;:24;20244:21;:50;20243:102;;;;;20181:34;;;;;;;;;;;:164;;20243:102;;;;20181:164;;;;;19859:505;20522:8;;-1:-1:-1;20522:8:82;;-1:-1:-1;20522:8:82;;18837:3;;18809:1776;;;;20600:62;20618:5;20625:21;20648:13;20600:62;;;;;;;;:::i;:::-;;;;;;;;15951:4718;;;;;;;;;;:::o;1734:250:64:-;1872:105;1900:5;1931:27;;;1960:4;1966:2;1970:5;1908:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1872:19;:105::i;920:131:48:-;998:46;1012:1;1007;:6;5826:3:31;998:8:48;:46::i;28204:507:82:-;28332:26;;;;28288:7;28332:26;;;:20;:26;;;;;;;;:33;;;;;;;;;;;;28379:18;;28375:45;;28406:14;-1:-1:-1;28399:21:82;;28375:45;28647:16;;;;;;;;:10;:16;;;;;;;;:26;28675:18;;;;;:11;:18;;;;;:28;28638:66;;28647:26;;;;;28675:28;28638:8;:66::i;:::-;28631:73;28204:507;-1:-1:-1;;;;28204:507:82:o;2384:178:49:-;2448:26;;;;;;;:20;:26;;;;;;;;2444:112;;;2490:55;2499:10;:18;;;;10270:3:31;2490:8:49;:55::i;26970:1024:82:-;27054:11;;27023:28;27095:36;27115:15;27095:19;:36::i;:::-;27075:56;;27249:9;27226:20;:32;:64;;;;27275:15;27262:9;:28;27226:64;27222:183;;;27388:7;;;;27222:183;27415:13;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27560:9;27555:310;27579:2;27575:1;:6;27555:310;;;27629:9;27606:20;:32;27602:43;;;27640:5;;27602:43;27699:47;;;;;:25;:13;:25;;;;:47;;27725:20;;27699:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27660:36;;;;:14;:36;;;;;:86;27847:7;27823:31;;;;27583:3;;27555:310;;;-1:-1:-1;;27953:11:82;:34;26970:1024::o;13530:2283::-;13648:18;;;13597:7;13648:18;;;:11;:18;;;;;13597:7;13711:36;13735:4;13660:5;13711:23;:36::i;:::-;14490:11;;14503:16;;;14410:28;14503:16;;;:10;:16;;;;;:27;13676:71;;-1:-1:-1;14410:28:82;14441:157;;14463:69;;14481:50;;14490:11;14503:27;;;;;14481:8;:50::i;:::-;14463:17;:69::i;:::-;14566:21;;14546:42;;14566:21;;;;;14546:19;:42::i;:::-;14441:8;:157::i;:::-;14661:21;;;;14609:49;14661:21;;;:14;:21;;;;;;;;14753:29;;;;;:23;:29;;;;;14410:188;;-1:-1:-1;14661:21:82;;14753:29;14609:49;14817:446;14841:2;14837:1;:6;14817:446;;;14984:20;14956:24;:48;14952:59;;15006:5;;14952:59;15163:40;;;;:14;:40;;;;;;;;;15095:48;;;;;;;15053:39;;;;;;;:90;15163:40;15052:151;;;;15245:7;15217:35;;;;;15052:151;15026:177;;;;;14845:3;;14817:446;;;-1:-1:-1;15371:26:82;;;;;;;;:20;:26;;;;;;;;:33;;;;;;;;;:60;;;15446:10;;15442:341;;15613:24;;;;;;;;;:33;;;15578:69;;;;;;;;15661:32;:18;;;15680:4;15640:6;15661:18;:32::i;:::-;15712:60;15726:4;15732:5;15739:6;15747:24;15712:60;;;;;;;;;:::i;:::-;;;;;;;;15442:341;15800:6;13530:2283;-1:-1:-1;;;;;;;;13530:2283:82:o;2078:163:49:-;2153:26;;;;;;;:20;:26;;;;;;;:36;;;;;;;;;;2204:30;;;;;2153:26;;:36;;2204:30;:::i;:::-;;;;;;;;2078:163;;:::o;2386:188:58:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;1430:265:47:-;1605:83;1627:7;1636:10;1648:9;1659:17;1678:9;1605:21;:83::i;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;28827:919:82:-;28998:7;29031:12;29067;28998:7;29175:545;29199:3;29195:1;:7;29175:545;;;29234:3;29227;:10;29223:21;;29239:5;;29223:21;29442:1;29425:9;;;:13;;29424:19;29457:29;;:::i;:::-;29489:43;;;;;:32;:13;:32;;;;:43;;29522:4;;29528:3;;29489:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29457:75;;29559:9;29550:2;:5;;;:18;29546:164;;29594:3;29588:9;;29546:164;;;29694:1;29688:3;:7;29682:13;;29546:164;-1:-1:-1;;29204:3:82;;29175:545;;;-1:-1:-1;29736:3:82;;28827:919;-1:-1:-1;;;;;;28827:919:82:o;30186:212::-;30254:7;30347:44;30367:23;;;30347:19;:44::i;1922:228:55:-;2113:9;;;2124:8;;;2109:24;2102:32;;;2078:66::o;29871:196:82:-;30042:7;30030:19;;;;30029:31;;29871:196::o;1404:121:65:-;1462:7;1488:30;1492:1;1495;5194::31;1488:3:65;:30::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:31;3134:8:64;:97::i;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;1514:214:64:-;1626:95;1654:5;1685:23;;;1710:2;1714:5;1662:58;;;;;;;;;:::i;1626:95::-;1514:214;;;:::o;3433:187:58:-;3595:9;;3570:44::o;1701:1214:47:-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:31;2487:8:47;:63::i;:::-;-1:-1:-1;;;2884:19:47;;;;:10;:19;;;;;;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:47:o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;1816:206:65:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:65;;;1816:206::o;3199:183:58:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;1045:414:50:-;1199:4;1219:20;:7;:18;;;:20::i;:::-;1215:238;;;1262:53;;1319:34;1262:53;;;1319:34;1262;;;;1319;;1262:53;;1297:6;;1305:9;;1262:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:91;;;;-1:-1:-1;1255:98:50;;1215:238;1391:51;1415:7;1424:6;1432:9;1391:23;:51::i;:::-;1384:58;;;;1692:3378:31;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1031:433:56;1403:20;1449:8;;;1031:433::o;2921:876:47:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:31;3082:8:47;:60::i;:::-;3427:4;3412:20;;;3406:27;3472:4;3457:20;;;3451:27;3525:4;3510:20;;3504:27;3579:26;;3153:9;3579:26;;;;;;;;;3406:27;;3451;;3496:36;;;3579:26;;;;3589:6;;3496:36;;3406:27;;3451;;3579:26;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:47;;;;;;-1:-1:-1;;3728:30:47;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:47:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;168:367::-;;;313:3;306:4;298:6;294:17;290:27;280:2;;-1:-1;;321:12;280:2;-1:-1;351:20;;391:18;380:30;;377:2;;;-1:-1;;413:12;377:2;457:4;449:6;445:17;433:29;;508:3;457:4;;492:6;488:17;449:6;474:32;;471:41;468:2;;;525:1;;515:12;468:2;273:262;;;;;:::o;1942:132::-;2019:13;;23087:2;23076:21;;;25194:34;;25184:2;;25242:1;;25232:12;3203:241;;3307:2;3295:9;3286:7;3282:23;3278:32;3275:2;;;-1:-1;;3313:12;3275:2;85:6;72:20;97:33;124:5;97:33;:::i;3451:552::-;;;;3622:2;3610:9;3601:7;3597:23;3593:32;3590:2;;;-1:-1;;3628:12;3590:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3680:63;-1:-1;3808:2;3793:18;;3780:32;3832:18;3821:30;;3818:2;;;-1:-1;;3854:12;3818:2;3892:95;3979:7;3970:6;3959:9;3955:22;3892:95;:::i;:::-;3584:419;;3874:113;;-1:-1;3874:113;;-1:-1;;;;3584:419::o;4010:589::-;;;;4154:2;4142:9;4133:7;4129:23;4125:32;4122:2;;;-1:-1;;4160:12;4122:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4212:63;-1:-1;4312:2;4348:22;;;985:20;1010:30;985:20;1010:30;:::i;:::-;4320:60;-1:-1;4445:2;4430:18;;4417:32;4469:18;4458:30;;;4455:2;;;-1:-1;;4491:12;4455:2;4566:6;4555:9;4551:22;;;1428:3;1421:4;1413:6;1409:17;1405:27;1395:2;;-1:-1;;1436:12;1395:2;1483:6;1470:20;4469:18;20907:6;20904:30;20901:2;;;-1:-1;;20937:12;20901:2;1505:64;4312:2;21010:9;1421:4;20995:6;20991:17;20987:33;21068:15;1505:64;:::i;:::-;1496:73;;1589:6;1582:5;1575:21;1693:3;4312:2;1684:6;1617;1675:16;;1672:25;1669:2;;;-1:-1;;1700:12;1669:2;24083:6;4312:2;1617:6;1613:17;4312:2;1651:5;1647:16;24060:30;-1:-1;4312:2;24130:6;1651:5;24121:16;;24114:27;;4511:72;;;;;;4116:483;;;;;:::o;4606:396::-;;;4742:2;4730:9;4721:7;4717:23;4713:32;4710:2;;;-1:-1;;4748:12;4710:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4800:63;-1:-1;4900:2;4954:22;;1857:20;1882:48;1857:20;1882:48;:::i;:::-;4908:78;;;;4704:298;;;;;:::o;5009:366::-;;;5130:2;5118:9;5109:7;5105:23;5101:32;5098:2;;;-1:-1;;5136:12;5098:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5188:63;5288:2;5327:22;;;;2992:20;;-1:-1;;;5092:283::o;5382:427::-;;;5536:2;5524:9;5515:7;5511:23;5507:32;5504:2;;;-1:-1;;5542:12;5504:2;5600:17;5587:31;5638:18;5630:6;5627:30;5624:2;;;-1:-1;;5660:12;5624:2;5698:95;5785:7;5776:6;5765:9;5761:22;5698:95;:::i;:::-;5680:113;;;;-1:-1;5498:311;-1:-1;;;;5498:311::o;5816:708::-;;;;;6022:2;6010:9;6001:7;5997:23;5993:32;5990:2;;;-1:-1;;6028:12;5990:2;6086:17;6073:31;6124:18;;6116:6;6113:30;6110:2;;;-1:-1;;6146:12;6110:2;6184:95;6271:7;6262:6;6251:9;6247:22;6184:95;:::i;:::-;6166:113;;-1:-1;6166:113;-1:-1;6344:2;6329:18;;6316:32;;-1:-1;6357:30;;;6354:2;;;-1:-1;;6390:12;6354:2;;6428:80;6500:7;6491:6;6480:9;6476:22;6428:80;:::i;:::-;5984:540;;;;-1:-1;6410:98;-1:-1;;;;5984:540::o;6531:235::-;;6632:2;6620:9;6611:7;6607:23;6603:32;6600:2;;;-1:-1;;6638:12;6600:2;998:6;985:20;1010:30;1034:5;1010:30;:::i;6773:257::-;;6885:2;6873:9;6864:7;6860:23;6856:32;6853:2;;;-1:-1;;6891:12;6853:2;1133:6;1127:13;1145:30;1169:5;1145:30;:::i;7037:261::-;;7151:2;7139:9;7130:7;7126:23;7122:32;7119:2;;;-1:-1;;7157:12;7119:2;1270:6;1264:13;22823:66;24945:5;22812:78;24921:5;24918:34;24908:2;;-1:-1;;24956:12;7986:310;;8124:3;8112:9;8103:7;8099:23;8095:33;8092:2;;;-1:-1;;8131:12;8092:2;2273:20;8124:3;2273:20;:::i;:::-;2375:59;2430:3;2406:22;2375:59;:::i;:::-;2357:16;2350:85;2530:59;2585:3;2497:2;2565:9;2561:22;2530:59;:::i;:::-;2497:2;2516:5;2512:16;2505:85;2649:2;2718:9;2714:22;3140:13;2649:2;2668:5;2664:16;2657:86;2803:2;2872:9;2868:22;3140:13;2803:2;2822:5;2818:16;2811:86;8183:97;;;;8086:210;;;;:::o;8303:241::-;;8407:2;8395:9;8386:7;8382:23;8378:32;8375:2;;;-1:-1;;8413:12;8375:2;-1:-1;2992:20;;8369:175;-1:-1;8369:175::o;8551:263::-;;8666:2;8654:9;8645:7;8641:23;8637:32;8634:2;;;-1:-1;;8672:12;8634:2;-1:-1;3140:13;;8628:186;-1:-1;8628:186::o;12767:271::-;;10752:5;21361:12;10863:52;10908:6;10903:3;10896:4;10889:5;10885:16;10863:52;:::i;:::-;10927:16;;;;;12901:137;-1:-1;;12901:137::o;13045:659::-;11591:66;11571:87;;11556:1;11677:11;;10034:37;;;;13556:12;;;10034:37;13667:12;;;13290:414::o;13711:222::-;23182:42;23171:54;;;;9074:37;;13838:2;13823:18;;13809:124::o;13940:444::-;23182:42;23171:54;;;9074:37;;23171:54;;;;14287:2;14272:18;;9074:37;14370:2;14355:18;;10034:37;;;;14123:2;14108:18;;14094:290::o;14391:321::-;23182:42;23171:54;;;;9074:37;;22646:13;22639:21;14698:2;14683:18;;9917:34;14540:2;14525:18;;14511:201::o;14719:586::-;23182:42;23171:54;;;9074:37;;23171:54;;;;15125:2;15110:18;;11041:65;15208:2;15193:18;;10034:37;15291:2;15276:18;;10034:37;;;;14945:3;14930:19;;14916:389::o;15312:333::-;23182:42;23171:54;;;;9074:37;;15631:2;15616:18;;10034:37;15467:2;15452:18;;15438:207::o;15652:370::-;15829:2;15843:47;;;21361:12;;15814:18;;;21764:19;;;15652:370;;15829:2;21215:14;;;;21804;;;;15652:370;9562:260;9587:6;9584:1;9581:13;9562:260;;;9648:13;;10034:37;;21619:14;;;;8975;;;;9609:1;9602:9;9562:260;;16029:210;22646:13;;22639:21;9917:34;;16150:2;16135:18;;16121:118::o;16246:222::-;10034:37;;;16373:2;16358:18;;16344:124::o;16475:544::-;10034:37;;;23182:42;23171:54;;;;16845:2;16830:18;;9074:37;22646:13;22639:21;16922:2;16907:18;;9917:34;17005:2;16990:18;;10034:37;16680:3;16665:19;;16651:368::o;17026:668::-;10034:37;;;17430:2;17415:18;;10034:37;;;;17513:2;17498:18;;10034:37;;;;17596:2;17581:18;;10034:37;23182:42;23171:54;17679:3;17664:19;;9074:37;17265:3;17250:19;;17236:458::o;17701:417::-;;10064:5;10041:3;10034:37;17874:2;17992;17981:9;17977:18;17970:48;10384:5;21361:12;21776:6;17874:2;17863:9;17859:18;21764:19;10477:52;10522:6;21804:14;17863:9;21804:14;17992:2;10503:5;10499:16;10477:52;:::i;:::-;24601:2;24581:14;24597:7;24577:28;10541:39;;;;21804:14;10541:39;;17845:273;-1:-1;;;17845:273::o;18125:548::-;10034:37;;;23387:4;23376:16;;;;18493:2;18478:18;;12720:35;18576:2;18561:18;;10034:37;18659:2;18644:18;;10034:37;18332:3;18317:19;;18303:370::o;18680:474::-;23182:42;23171:54;;;;11041:65;;19057:2;19042:18;;10034:37;;;;19140:2;19125:18;;10034:37;18878:2;18863:18;;18849:305::o;19434:416::-;19634:2;19648:47;;;11927:2;19619:18;;;21764:19;11963:32;21804:14;;;11943:53;12015:12;;;19605:245::o;19857:416::-;20057:2;20071:47;;;12266:2;20042:18;;;21764:19;12302:34;21804:14;;;12282:55;12371:6;12357:12;;;12350:28;12397:12;;;20028:245::o;20509:256::-;20571:2;20565:9;20597:17;;;20672:18;20657:34;;20693:22;;;20654:62;20651:2;;;20729:1;;20719:12;20651:2;20571;20738:22;20549:216;;-1:-1;20549:216::o;24156:268::-;24221:1;24228:101;24242:6;24239:1;24236:13;24228:101;;;24309:11;;;24303:18;24290:11;;;24283:39;24264:2;24257:10;24228:101;;;24344:6;24341:1;24338:13;24335:2;;;-1:-1;;24221:1;24391:16;;24384:27;24205:219::o;24618:117::-;23182:42;24705:5;23171:54;24680:5;24677:35;24667:2;;24726:1;;24716:12;24742:111;24823:5;22646:13;22639:21;24801:5;24798:32;24788:2;;24844:1;;24834:12"},"methodIdentifiers":{"checkpoint()":"c2c4c5c1","checkpointToken(address)":"3902b9bc","checkpointTokens(address[])":"905d10ac","checkpointUser(address)":"14866e08","claimToken(address,address)":"ca31879d","claimTokens(address,address[])":"88720467","depositToken(address,uint256)":"338b5dea","depositTokens(address[],uint256[])":"7b8d6221","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","getTimeCursor()":"82aa5ad4","getTokenLastBalance(address)":"2308805b","getTokenTimeCursor(address)":"acbc1428","getTokensDistributedInWeek(address,uint256)":"d3dc4ca1","getTotalSupplyAtTimestamp(uint256)":"4f3c5090","getUserBalanceAtTimestamp(address,uint256)":"de681faf","getUserTimeCursor(address)":"876e69a1","getUserTokenTimeCursor(address,address)":"8050a7ee","getVotingEscrow()":"08b0308a","isOnlyCallerEnabled(address)":"a1648aa5","setOnlyCallerCheck(bool)":"e811f44b","setOnlyCallerCheckWithSignature(address,bool,bytes)":"fcaa54ee"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"votingEscrow\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"OnlyCallerOptIn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastCheckpointTimestamp\",\"type\":\"uint256\"}],\"name\":\"TokenCheckpointed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"userTokenTimeCursor\",\"type\":\"uint256\"}],\"name\":\"TokensClaimed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"checkpointToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"checkpointTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"checkpointUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"depositTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenLastBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getTokensDistributedInWeek\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getTotalSupplyAtTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getUserBalanceAtTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getUserTokenTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isOnlyCallerEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setOnlyCallerCheck\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"setOnlyCallerCheckWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Supports distributing arbitrarily many different tokens. In order to start distributing a new token to veBAL holders simply transfer the tokens to the `FeeDistributor` contract and then call `checkpointToken`.\",\"kind\":\"dev\",\"methods\":{\"checkpointToken(address)\":{\"details\":\"Any `token` balance held by the FeeDistributor above that which is returned by `getTokenLastBalance` will be distributed evenly across the time period since `token` was last checkpointed. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\",\"params\":{\"token\":\"- The ERC20 token address to be checkpointed.\"}},\"checkpointTokens(address[])\":{\"details\":\"A version of `checkpointToken` which supports checkpointing multiple tokens. See `checkpointToken` for more details.\",\"params\":{\"tokens\":\"- An array of ERC20 token addresses to be checkpointed.\"}},\"checkpointUser(address)\":{\"params\":{\"user\":\"- The address of the user to be checkpointed.\"}},\"claimToken(address,address)\":{\"details\":\"It's not necessary to explicitly checkpoint before calling this function, it will ensure the FeeDistributor is up to date before calculating the amount of tokens to be claimed.\",\"params\":{\"token\":\"- The ERC20 token address to be claimed.\",\"user\":\"- The user on behalf of which to claim.\"},\"returns\":{\"_0\":\"The amount of `token` sent to `user` as a result of claiming.\"}},\"claimTokens(address,address[])\":{\"details\":\"A version of `claimToken` which supports claiming multiple `tokens` on behalf of `user`. See `claimToken` for more details.\",\"params\":{\"tokens\":\"- An array of ERC20 token addresses to be claimed.\",\"user\":\"- The user on behalf of which to claim.\"},\"returns\":{\"_0\":\"An array of the amounts of each token in `tokens` sent to `user` as a result of claiming.\"}},\"depositToken(address,uint256)\":{\"details\":\"Sending tokens directly to the FeeDistributor instead of using `depositToken` may result in tokens being retroactively distributed to past weeks, or for the distribution to carry over to future weeks. If for some reason `depositToken` cannot be called, in order to ensure that all tokens are correctly distributed manually call `checkpointToken` before and after the token transfer.\",\"params\":{\"amount\":\"- The amount of tokens to deposit.\",\"token\":\"- The ERC20 token address to distribute.\"}},\"depositTokens(address[],uint256[])\":{\"details\":\"A version of `depositToken` which supports depositing multiple `tokens` at once. See `depositToken` for more details.\",\"params\":{\"amounts\":\"- An array of token amounts to deposit.\",\"tokens\":\"- An array of ERC20 token addresses to distribute.\"}},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getTokenTimeCursor(address)\":{\"params\":{\"token\":\"- The ERC20 token address to query.\"}},\"getTokensDistributedInWeek(address,uint256)\":{\"params\":{\"timestamp\":\"- The timestamp corresponding to the beginning of the week of interest.\",\"token\":\"- The ERC20 token address to query.\"}},\"getTotalSupplyAtTimestamp(uint256)\":{\"details\":\"Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values. This function requires the contract to have been checkpointed past `timestamp` so that the supply is cached.\",\"params\":{\"timestamp\":\"- The timestamp at which to read the cached total supply at.\"}},\"getUserBalanceAtTimestamp(address,uint256)\":{\"details\":\"Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values. This function requires `user` to have been checkpointed past `timestamp` so that their balance is cached.\",\"params\":{\"timestamp\":\"- The timestamp at which to read the `user`'s cached balance at.\",\"user\":\"- The address of the user of which to read the cached balance of.\"}},\"getUserTimeCursor(address)\":{\"params\":{\"user\":\"- The address of the user to query.\"}},\"getUserTokenTimeCursor(address,address)\":{\"params\":{\"token\":\"- The ERC20 token address to query.\",\"user\":\"- The address of the user to query.\"}},\"isOnlyCallerEnabled(address)\":{\"details\":\"Returns true if caller verification is enabled for the given user, false otherwise.\"},\"setOnlyCallerCheck(bool)\":{\"details\":\"Enables / disables verification mechanism for caller.\",\"params\":{\"enabled\":\"- True if caller verification shall be enabled, false otherwise.\"}}},\"title\":\"Fee Distributor\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"checkpoint()\":{\"notice\":\"Caches the total supply of veBAL at the beginning of each week. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\"},\"checkpointToken(address)\":{\"notice\":\"Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\"},\"checkpointTokens(address[])\":{\"notice\":\"Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\"},\"checkpointUser(address)\":{\"notice\":\"Caches the user's balance of veBAL at the beginning of each week. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\"},\"claimToken(address,address)\":{\"notice\":\"Claims all pending distributions of the provided token for a user.\"},\"claimTokens(address,address[])\":{\"notice\":\"Claims a number of tokens on behalf of a user.\"},\"depositToken(address,uint256)\":{\"notice\":\"Deposits tokens to be distributed in the current week.\"},\"depositTokens(address[],uint256[])\":{\"notice\":\"Deposits tokens to be distributed in the current week.\"},\"getTimeCursor()\":{\"notice\":\"Returns the global time cursor representing the most earliest uncheckpointed week.\"},\"getTokenLastBalance(address)\":{\"notice\":\"Returns the FeeDistributor's cached balance of `token`.\"},\"getTokenTimeCursor(address)\":{\"notice\":\"Returns the token-level time cursor storing the timestamp at up to which tokens have been distributed.\"},\"getTokensDistributedInWeek(address,uint256)\":{\"notice\":\"Returns the amount of `token` which the FeeDistributor received in the week beginning at `timestamp`.\"},\"getTotalSupplyAtTimestamp(uint256)\":{\"notice\":\"Returns the cached total supply of veBAL as of the provided timestamp.\"},\"getUserBalanceAtTimestamp(address,uint256)\":{\"notice\":\"Returns the user's cached balance of veBAL as of the provided timestamp.\"},\"getUserTimeCursor(address)\":{\"notice\":\"Returns the user-level time cursor representing the most earliest uncheckpointed week.\"},\"getUserTokenTimeCursor(address,address)\":{\"notice\":\"Returns the user-level time cursor storing the timestamp of the latest token distribution claimed.\"},\"getVotingEscrow()\":{\"notice\":\"Returns the VotingEscrow (veBAL) token contract\"}},\"notice\":\"Distributes any tokens transferred to the contract (e.g. Protocol fees and any BAL emissions) among veBAL holders proportionally based on a snapshot of the week at which the tokens are sent to the FeeDistributor contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/fee-distribution/FeeDistributor.sol\":\"FeeDistributor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\":{\"keccak256\":\"0x250e4e6dcde3cf83d4d2822e9593c3138f6518ca95d88a0156a292557605640e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a2596b2242650aade0987677bfee7f4ee1359d588244b03cd1b65542f4f06252\",\"dweb:/ipfs/Qmbrb2Lp6suCPngH9sBzmaDBxET6YD6pBH1T8crGw29Cqi\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol\":{\"keccak256\":\"0x7bab0494ee39fb988722edd20b3e5ff747b4acfe93a62d0726c5d63ae3f6e472\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://23e1d154f2fa589cbfa51338c285cf1862edcd6172fdbb26db17a6fcf9581ee2\",\"dweb:/ipfs/Qmbu8wgFjYqZvvv84MKbLiHMSKv3THZuFHCjRchPHLjCdY\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol\":{\"keccak256\":\"0xf82dab09a38bfdaf0983b69829de462c62359bc0bfaa37c4447408d93bd367c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d0172b678ca594e95b7e5d881fd1280b3792052861ca98d77fa6194b524d188\",\"dweb:/ipfs/QmZ3bYEGTrfruXNYAzuFjJeg9Hx6UQw8ZyBzyM72BVGXfT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol\":{\"keccak256\":\"0xc3a9b8d78e475f0290fa6f660b63f42ed4834dfcb61d7935b4b034fd31ef33f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1793575373e2214ceee3aecbd68b8b1a3ff24070b63bf36acb5d7e2bbb700d71\",\"dweb:/ipfs/QmVGYzndTDp2z25g6WqPze1PV5okh7MGBkP3XL2CTggAcM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol\":{\"keccak256\":\"0x028adc486d4df66cfc3157049ebd2772f1033be7159b27173225459d8d833e93\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5a67c6db6916df2ace5765995f45bf03e9ed07dd6e6164a196642ba4d52aa8b4\",\"dweb:/ipfs/QmYkhoC75YFywYqQPCMbj9iWyauVLczE7Db2NLisJR2vqu\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/fee-distribution/FeeDistributor.sol\":{\"keccak256\":\"0xe46c05028895d98f78543b5e663f1f6331a9cee360423b556d5b66a68e391c5d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f21b55c0384a5f1bfd07e1df0c9717f4780bfc726dce026e017d978f3a8c267e\",\"dweb:/ipfs/QmeY8aCe487s6xcq2LNED6hRxR6dJCGzp43wVbPNmQpbCf\"]}},\"version\":1}"}},"contracts/gauges/BaseGaugeFactory.sol":{"BaseGaugeFactory":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getGaugeImplementation()":"39312dee","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/BaseGaugeFactory.sol\":\"BaseGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]}},\"version\":1}"}},"contracts/gauges/ChildChainGaugeCheckpointer.sol":{"ChildChainGaugeCheckpointer":{"abi":[{"inputs":[{"internalType":"contract ChildChainGaugeRegistry","name":"childChainGaugeRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"onVeBalBridged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"onVeBalSupplyUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60a060405234801561001057600080fd5b506040516103f13803806103f18339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b031661038661006b60003980607e528061016452506103866000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806396345fb51461003b578063df130bfe14610045575b600080fd5b610043610078565b005b6100436004803603602081101561005b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661007a565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632ba271116040518163ffffffff1660e01b815260040160206040518083038186803b1580156100e257600080fd5b505afa1580156100f6573d6000803e3d6000fd5b505050506040513d602081101561010c57600080fd5b5051604080517f77b8883a00000000000000000000000000000000000000000000000000000000815260006004820181905260248201849052915192935060609273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016926377b8883a9260448082019391829003018186803b1580156101a657600080fd5b505afa1580156101ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561020157600080fd5b810190808051604051939291908464010000000082111561022157600080fd5b90830190602082018581111561023657600080fd5b825186602082028301116401000000008211171561025357600080fd5b82525081516020918201928201910280838360005b83811015610280578181015183820152602001610268565b50505050905001604052505050905060005b8281101561034a578181815181106102a657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16634b820093856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561031657600080fd5b505af115801561032a573d6000803e3d6000fd5b505050506040513d602081101561034057600080fd5b5050600101610292565b5050505056fea2646970667358221220a28d83c2ef4e9e02feaeefaed759adc408fc0baedc3ad5841363522ae9fb620164736f6c63430007010033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x3F1 CODESIZE SUB DUP1 PUSH2 0x3F1 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x386 PUSH2 0x6B PUSH1 0x0 CODECOPY DUP1 PUSH1 0x7E MSTORE DUP1 PUSH2 0x164 MSTORE POP PUSH2 0x386 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96345FB5 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xDF130BFE EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x78 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2BA27111 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x77B8883A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH1 0x60 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 PUSH4 0x77B8883A SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x253 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x280 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x268 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x34A JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2A6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B820093 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x292 JUMP JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG2 DUP14 DUP4 0xC2 0xEF 0x4E SWAP15 MUL INVALID 0xAE 0xEF 0xAE 0xD7 MSIZE 0xAD 0xC4 ADDMOD 0xFC SIGNEXTEND 0xAE 0xDC GASPRICE 0xD5 DUP5 SGT PUSH4 0x522AE9FB PUSH3 0x16473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"1442:818:84:-:0;;;1584:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1584:128:84;1655:50;;;;-1:-1:-1;;;;;;1655:50:84;;;-1:-1:-1;;;;;1442:818:84;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"13910":[{"length":32,"start":126},{"length":32,"start":356}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c806396345fb51461003b578063df130bfe14610045575b600080fd5b610043610078565b005b6100436004803603602081101561005b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661007a565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632ba271116040518163ffffffff1660e01b815260040160206040518083038186803b1580156100e257600080fd5b505afa1580156100f6573d6000803e3d6000fd5b505050506040513d602081101561010c57600080fd5b5051604080517f77b8883a00000000000000000000000000000000000000000000000000000000815260006004820181905260248201849052915192935060609273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016926377b8883a9260448082019391829003018186803b1580156101a657600080fd5b505afa1580156101ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561020157600080fd5b810190808051604051939291908464010000000082111561022157600080fd5b90830190602082018581111561023657600080fd5b825186602082028301116401000000008211171561025357600080fd5b82525081516020918201928201910280838360005b83811015610280578181015183820152602001610268565b50505050905001604052505050905060005b8281101561034a578181815181106102a657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16634b820093856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561031657600080fd5b505af115801561032a573d6000803e3d6000fd5b505050506040513d602081101561034057600080fd5b5050600101610292565b5050505056fea2646970667358221220a28d83c2ef4e9e02feaeefaed759adc408fc0baedc3ad5841363522ae9fb620164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96345FB5 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xDF130BFE EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x78 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2BA27111 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x77B8883A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH1 0x60 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 PUSH4 0x77B8883A SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x253 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x280 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x268 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x34A JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2A6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B820093 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x292 JUMP JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG2 DUP14 DUP4 0xC2 0xEF 0x4E SWAP15 MUL INVALID 0xAE 0xEF 0xAE 0xD7 MSIZE 0xAD 0xC4 ADDMOD 0xFC SIGNEXTEND 0xAE 0xDC GASPRICE 0xD5 DUP5 SGT PUSH4 0x522AE9FB PUSH3 0x16473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"1442:818:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2145:113;;;:::i;:::-;;1761:335;;;;;;;;;;;;;;;;-1:-1:-1;1761:335:84;;;;:::i;2145:113::-;:::o;1761:335::-;1827:19;1849:24;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1849:38:84;1932:50;;;;;;1967:1;1932:50;;;;;;;;;;;;;;1849:38;;-1:-1:-1;1897:32:84;;1932:34;:24;:34;;;;:50;;;;;;;;;;;:34;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:50:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1897:85;;1997:9;1992:98;2016:11;2012:1;:15;1992:98;;;2048:6;2055:1;2048:9;;;;;;;;;;;;;;:25;;;2074:4;2048:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2029:3:84;;1992:98;;;;1761:335;;;:::o"},"methodIdentifiers":{"onVeBalBridged(address)":"df130bfe","onVeBalSupplyUpdate()":"96345fb5"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ChildChainGaugeRegistry\",\"name\":\"childChainGaugeRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"onVeBalBridged\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onVeBalSupplyUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onVeBalBridged(address)\":{\"params\":{\"user\":\"The user whose veBAL balance was updated.\"}}},\"title\":\"ChildChainGaugeCheckpointer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onVeBalBridged(address)\":{\"notice\":\"Called whenever the veBAL balance of a user is updated in a L2 chain.\"},\"onVeBalSupplyUpdate()\":{\"notice\":\"Called whenever the total veBAL supply is updated in a L2 chain.\"}},\"notice\":\"Checkpointer for all child chain gauges. This contract calls `user_checkpoint` function on every child chain gauge during onVeBalBridged callback.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ChildChainGaugeCheckpointer.sol\":\"ChildChainGaugeCheckpointer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\":{\"keccak256\":\"0xffafd017b9f43c8cc47f59e85e8a5354e4028110fb6c7fdbaeb569018f35e4d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bf250a0d068a2c8203dda057beabbf49705114e51086e885d7dc283a0cf3a249\",\"dweb:/ipfs/QmTBZvND9qY9k4EQYkfA9hYVSP3DxaXgKwuvDAQFDfxic2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\":{\"keccak256\":\"0xbeed8a8a1802aede5aa6670554125c5938ea06fc5a96c1b75dbc93d1dd586048\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5cf7cef349eba6938df4d8993dcab2b16775b2daf0cc0d5ad71d91f27221eb00\",\"dweb:/ipfs/QmS22HyJFUggLjLx9WABDcMPq6XqC3f4Q23NrKv6CmnkL5\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/BalancerMinter.sol\":{\"keccak256\":\"0xbacdfde61937f9cea9166c7e492ac8d65261fb6bdfb621f1f258852799204cc8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3e68da1f25c0211654bb0b04c4ac1a789cb3dfabd7f5db54d6bfbeb49414e0c\",\"dweb:/ipfs/QmRnvBWovj9HNZsEfvrZpbJcs3K7ikwrY8fkX68F7rdxQK\"]},\"contracts/L2BalancerPseudoMinter.sol\":{\"keccak256\":\"0x5b9ddeebb5accdd9e94e89a68004301f4f92c42ccd8be2f1dc5158ffa15665ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae10ff0f3cfff31f80435ac23e95b1e03d547441e7c44f84aa238363493f93bb\",\"dweb:/ipfs/Qmbrk9GBcRu8pBG3kPsGafCJ3RE5Uvyh4toAnjph4kKs3L\"]},\"contracts/gauges/ChildChainGaugeCheckpointer.sol\":{\"keccak256\":\"0xba05099472e3f7cc59ab2346f19ebcd1c606c5fc5a6ff307fdd168c0531fab25\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://38b898490e2e7c4e73806b60592e881fd4c56257b58da2e8a921ded193350add\",\"dweb:/ipfs/QmbgMtBF6Nqp6DFp162hn8fBsT5MqtKadsxGRZ3oiHHkp8\"]},\"contracts/gauges/ChildChainGaugeRegistry.sol\":{\"keccak256\":\"0x80512d1d09d3f3b1d51da620693208a30ca993f104fa3bf33eba0e0ad1a17eb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8008b06daa2c95c59bceff73ced3ebec8d2db9542b48c10a2c6e829a6f2a2466\",\"dweb:/ipfs/QmWqUXnFMLCeBswwmizerXFV8jy3m7dDhdnKNa2Sqk4PXn\"]}},\"version\":1}"}},"contracts/gauges/ChildChainGaugeFactory.sol":{"ChildChainGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IChildChainGauge","name":"gaugeImplementation","type":"address"},{"internalType":"string","name":"factoryVersion","type":"string"},{"internalType":"string","name":"productVersion","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProductVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620009b9380380620009b98339810160408190526200003491620002aa565b8282620000418162000174565b50600180546001600160a01b0319166001600160a01b0392909216919091179055604051620000759082906020016200036e565b60405160208183030381529060405280519060200120836001600160a01b03166354fd4d506040518163ffffffff1660e01b815260040160006040518083038186803b158015620000c557600080fd5b505afa158015620000da573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000104919081019062000330565b6040516020016200011691906200036e565b6040516020818303038152906040528051906020012014620001555760405162461bcd60e51b81526004016200014c906200038c565b60405180910390fd5b80516200016a9060039060208401906200018d565b50505050620003e9565b8051620001899060009060208401906200018d565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001d057805160ff191683800117855562000200565b8280016001018555821562000200579182015b8281111562000200578251825591602001919060010190620001e3565b506200020e92915062000212565b5090565b5b808211156200020e576000815560010162000213565b600082601f8301126200023a578081fd5b81516001600160401b038082111562000251578283fd5b604051601f8301601f19168101602001828111828210171562000272578485fd5b6040528281529250828483016020018610156200028e57600080fd5b620002a1836020830160208801620003b6565b50505092915050565b600080600060608486031215620002bf578283fd5b83516001600160a01b0381168114620002d6578384fd5b60208501519093506001600160401b0380821115620002f3578384fd5b620003018783880162000229565b9350604086015191508082111562000317578283fd5b50620003268682870162000229565b9150509250925092565b60006020828403121562000342578081fd5b81516001600160401b0381111562000358578182fd5b620003668482850162000229565b949350505050565b6000825162000382818460208701620003b6565b9190910192915050565b60208082526010908201526f0ac8aa4a6929e9cbe9a92a69a82a886960831b604082015260600190565b60005b83811015620003d3578181015183820152602001620003b9565b83811115620003e3576000848401525b50505050565b6105c080620003f96000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806354fd4d501161005057806354fd4d501461009f5780639ed93318146100a7578063ce3cc8bd146100ba57610067565b806318d6186f1461006c57806339312dee1461008a575b600080fd5b6100746100da565b6040516100819190610540565b60405180910390f35b61009261018e565b60405161008191906104dd565b6100746101aa565b6100926100b5366004610439565b610229565b6100cd6100c8366004610439565b6102b3565b6040516100819190610535565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b820191906000526020600020905b81548152906001019060200180831161016757829003601f168201915b5050505050905090565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b6000806102346102de565b90508073ffffffffffffffffffffffffffffffffffffffff1663f399e22e8461025b6100da565b6040518363ffffffff1660e01b81526004016102789291906104fe565b600060405180830381600087803b15801561029257600080fd5b505af11580156102a6573d6000803e3d6000fd5b509293505050505b919050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b60015460009081906103059073ffffffffffffffffffffffffffffffffffffffff16610383565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166102ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043090610553565b60405180910390fd5b60006020828403121561044a578081fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461046d578182fd5b9392505050565b60008151808452815b818110156104995760208185018101518683018201520161047d565b818111156104aa5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff841682526040602083015261052d6040830184610474565b949350505050565b901515815260200190565b60006020825261046d6020830184610474565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea2646970667358221220680f55f8befb135112961dcd4211fb9a592f85826be47d06665ff058822b3fcf64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x9B9 CODESIZE SUB DUP1 PUSH3 0x9B9 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x2AA JUMP JUMPDEST DUP3 DUP3 PUSH3 0x41 DUP2 PUSH3 0x174 JUMP JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH3 0x75 SWAP1 DUP3 SWAP1 PUSH1 0x20 ADD PUSH3 0x36E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x54FD4D50 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH3 0x104 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x330 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x116 SWAP2 SWAP1 PUSH3 0x36E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH3 0x155 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x14C SWAP1 PUSH3 0x38C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH3 0x16A SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x18D JUMP JUMPDEST POP POP POP POP PUSH3 0x3E9 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x189 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x18D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x1D0 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x200 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x200 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x200 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x1E3 JUMP JUMPDEST POP PUSH3 0x20E SWAP3 SWAP2 POP PUSH3 0x212 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x20E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x213 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x23A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x251 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP3 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x272 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE SWAP3 POP DUP3 DUP5 DUP4 ADD PUSH1 0x20 ADD DUP7 LT ISZERO PUSH3 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x2A1 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH3 0x3B6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x2BF JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2D6 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x2F3 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH3 0x301 DUP8 DUP4 DUP9 ADD PUSH3 0x229 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x317 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH3 0x326 DUP7 DUP3 DUP8 ADD PUSH3 0x229 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x342 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x358 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH3 0x366 DUP5 DUP3 DUP6 ADD PUSH3 0x229 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x382 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x3B6 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH16 0xAC8AA4A6929E9CBE9A92A69A82A8869 PUSH1 0x83 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x3D3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x3B9 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x3E3 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x5C0 DUP1 PUSH3 0x3F9 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x9ED93318 EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xBA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x18D6186F EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x540 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x92 PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x4DD JUMP JUMPDEST PUSH2 0x74 PUSH2 0x1AA JUMP JUMPDEST PUSH2 0x92 PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x229 JUMP JUMPDEST PUSH2 0xCD PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x535 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x167 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x234 PUSH2 0x2DE JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF399E22E DUP5 PUSH2 0x25B PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x278 SWAP3 SWAP2 SWAP1 PUSH2 0x4FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x305 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x383 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x430 SWAP1 PUSH2 0x553 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x44A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x46D JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x499 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x47D JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x4AA JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x52D PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x474 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x46D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x474 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0xF55F8BEFB13511296 SAR 0xCD TIMESTAMP GT 0xFB SWAP11 MSIZE 0x2F DUP6 DUP3 PUSH12 0xE47D06665FF058822B3FCF64 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"942:1602:85:-:0;;;1046:438;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1235:19;1194:14;994:20:52;1194:14:85;994:11:52;:20::i;:::-;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;1360:32:85::2;::::0;::::2;::::0;1377:14;;1360:32:::2;;;:::i;:::-;;;;;;;;;;;;;1350:43;;;;;;1315:19;-1:-1:-1::0;;;;;1315:27:85::2;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;1315:29:85::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;1298:47;;;;;;;;:::i;:::-;;;;;;;;;;;;;1288:58;;;;;;:105;1267:168;;;;-1:-1:-1::0;;;1267:168:85::2;;;;;;;:::i;:::-;;;;;;;;;1445:32:::0;;::::2;::::0;:15:::2;::::0;:32:::2;::::0;::::2;::::0;::::2;:::i;:::-;;1046:438:::0;;;942:1602;;1224:94:52;1290:21;;;;:8;;:21;;;;;:::i;:::-;;1224:94;:::o;942:1602:85:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;942:1602:85;;;-1:-1:-1;942:1602:85;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;195:444:-1;;308:3;301:4;293:6;289:17;285:27;275:2;;-1:-1;;316:12;275:2;350:13;;-1:-1;;;;;3597:30;;;3594:2;;;-1:-1;;3630:12;3594:2;3263;3257:9;3703;3684:17;;-1:-1;;3680:33;3289:17;;3771:4;3289:17;3349:34;;;3385:22;;;3346:62;3343:2;;;-1:-1;;3411:12;3343:2;3263;3430:22;449:21;;;369:74;-1:-1;369:74;549:16;;;3771:4;549:16;546:25;-1:-1;543:2;;;584:1;;574:12;543:2;594:39;626:6;3771:4;525:5;521:16;3771:4;491:6;487:17;594:39;:::i;:::-;;;;268:371;;;;:::o;647:781::-;;;;840:2;828:9;819:7;815:23;811:32;808:2;;;-1:-1;;846:12;808:2;107:13;;-1:-1;;;;;4530:54;;4956:59;;4946:2;;-1:-1;;5019:12;4946:2;1054;1039:18;;1033:25;898:98;;-1:-1;;;;;;1067:30;;;1064:2;;;-1:-1;;1100:12;1064:2;1130:74;1196:7;1187:6;1176:9;1172:22;1130:74;:::i;:::-;1120:84;;1262:2;1251:9;1247:18;1241:25;1227:39;;1078:18;1278:6;1275:30;1272:2;;;-1:-1;;1308:12;1272:2;;1338:74;1404:7;1395:6;1384:9;1380:22;1338:74;:::i;:::-;1328:84;;;802:626;;;;;:::o;1435:362::-;;1560:2;1548:9;1539:7;1535:23;1531:32;1528:2;;;-1:-1;;1566:12;1528:2;1611:24;;-1:-1;;;;;1644:30;;1641:2;;;-1:-1;;1677:12;1641:2;1707:74;1773:7;1764:6;1753:9;1749:22;1707:74;:::i;:::-;1697:84;1522:275;-1:-1;;;;1522:275::o;2496:::-;;1967:5;3881:12;2079:52;2124:6;2119:3;2112:4;2105:5;2101:16;2079:52;:::i;:::-;2143:16;;;;;2632:139;-1:-1;;2632:139::o;2778:416::-;2978:2;2992:47;;;2396:2;2963:18;;;4026:19;-1:-1;;;4066:14;;;2412:39;2470:12;;;2949:245::o;4597:268::-;4662:1;4669:101;4683:6;4680:1;4677:13;4669:101;;;4750:11;;;4744:18;4731:11;;;4724:39;4705:2;4698:10;4669:101;;;4785:6;4782:1;4779:13;4776:2;;;4662:1;4841:6;4836:3;4832:16;4825:27;4776:2;;4646:219;;;:::o;:::-;942:1602:85;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c806354fd4d501161005057806354fd4d501461009f5780639ed93318146100a7578063ce3cc8bd146100ba57610067565b806318d6186f1461006c57806339312dee1461008a575b600080fd5b6100746100da565b6040516100819190610540565b60405180910390f35b61009261018e565b60405161008191906104dd565b6100746101aa565b6100926100b5366004610439565b610229565b6100cd6100c8366004610439565b6102b3565b6040516100819190610535565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b820191906000526020600020905b81548152906001019060200180831161016757829003601f168201915b5050505050905090565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b6000806102346102de565b90508073ffffffffffffffffffffffffffffffffffffffff1663f399e22e8461025b6100da565b6040518363ffffffff1660e01b81526004016102789291906104fe565b600060405180830381600087803b15801561029257600080fd5b505af11580156102a6573d6000803e3d6000fd5b509293505050505b919050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b60015460009081906103059073ffffffffffffffffffffffffffffffffffffffff16610383565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166102ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043090610553565b60405180910390fd5b60006020828403121561044a578081fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461046d578182fd5b9392505050565b60008151808452815b818110156104995760208185018101518683018201520161047d565b818111156104aa5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff841682526040602083015261052d6040830184610474565b949350505050565b901515815260200190565b60006020825261046d6020830184610474565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea2646970667358221220680f55f8befb135112961dcd4211fb9a592f85826be47d06665ff058822b3fcf64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x9ED93318 EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xBA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x18D6186F EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x540 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x92 PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x4DD JUMP JUMPDEST PUSH2 0x74 PUSH2 0x1AA JUMP JUMPDEST PUSH2 0x92 PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x229 JUMP JUMPDEST PUSH2 0xCD PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x535 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x167 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x234 PUSH2 0x2DE JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF399E22E DUP5 PUSH2 0x25B PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x278 SWAP3 SWAP2 SWAP1 PUSH2 0x4FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x305 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x383 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x430 SWAP1 PUSH2 0x553 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x44A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x46D JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x499 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x47D JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x4AA JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x52D PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x474 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x46D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x474 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0xF55F8BEFB13511296 SAR 0xCD TIMESTAMP GT 0xFB SWAP11 MSIZE 0x2F DUP6 DUP3 PUSH12 0xE47D06665FF058822B3FCF64 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"942:1602:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1703:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;:::-;;;;;;;:::i;1027:98:52:-;;;:::i;2350:192:85:-;;;;;;:::i;:::-;;:::i;1507:131:83:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1703:104:85:-;1785:15;1778:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1753:13;;1778:22;;1785:15;;1778:22;;1785:15;1778:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1703:104;:::o;1309:108:83:-;1390:20;;;;1309:108;:::o;1027:98:52:-;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:13;;1103:15;;1110:8;;1103:15;;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;2350:192:85;2398:7;2417:13;2433:9;:7;:9::i;:::-;2417:25;;2469:5;2452:34;;;2487:4;2493:19;:17;:19::i;:::-;2452:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2530:5:85;;-1:-1:-1;;;;2350:192:85;;;;:::o;1507:131:83:-;1605:26;;1582:4;1605:26;;;:19;:26;;;;;;;;;1507:131::o;1854:214::-;1939:20;;1891:7;;;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;:19;:26;;;;;;:33;;;;2000:4;1971:33;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;142:241:-1;;246:2;234:9;225:7;221:23;217:32;214:2;;;-1:-1;;252:12;214:2;85:6;72:20;3484:42;4008:5;3473:54;3983:5;3980:35;3970:2;;-1:-1;;4019:12;3970:2;304:63;208:175;-1:-1;;;208:175::o;621:347::-;;766:5;3008:12;3165:6;3160:3;3153:19;-1:-1;3612:101;3626:6;3623:1;3620:13;3612:101;;;3202:4;3693:11;;;;;3687:18;3674:11;;;;;3667:39;3641:10;3612:101;;;3728:6;3725:1;3722:13;3719:2;;;-1:-1;3202:4;3784:6;3197:3;3775:16;;3768:27;3719:2;-1:-1;3904:2;3884:14;3900:7;3880:28;924:39;;;;3202:4;924:39;;713:255;-1:-1;;713:255::o;1306:222::-;3484:42;3473:54;;;;461:37;;1433:2;1418:18;;1404:124::o;1535:421::-;;3484:42;3477:5;3473:54;468:3;461:37;1710:2;1828;1817:9;1813:18;1806:48;1868:78;1710:2;1699:9;1695:18;1932:6;1868:78;:::i;:::-;1860:86;1681:275;-1:-1;;;;1681:275::o;1963:210::-;3385:13;;3378:21;575:34;;2084:2;2069:18;;2055:118::o;2180:310::-;;2327:2;2348:17;2341:47;2402:78;2327:2;2316:9;2312:18;2466:6;2402:78;:::i;2497:416::-;2697:2;2711:47;;;1200:2;2682:18;;;3153:19;1236:24;3193:14;;;1216:45;1280:12;;;2668:245::o"},"methodIdentifiers":{"create(address)":"9ed93318","getGaugeImplementation()":"39312dee","getProductVersion()":"18d6186f","isGaugeFromFactory(address)":"ce3cc8bd","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IChildChainGauge\",\"name\":\"gaugeImplementation\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"factoryVersion\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"productVersion\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProductVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address)\":{\"details\":\"As anyone can register arbitrary Balancer pools with the Vault, it's impossible to prove onchain that `pool` is a \\\"valid\\\" deployment. Care must be taken to ensure that gauges deployed from this factory are suitable to distribute rewards. It is possible to deploy multiple gauges for a single pool.\",\"params\":{\"pool\":\"The address of the pool for which to deploy a gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}},\"getProductVersion()\":{\"details\":\"This value will only be updated at factory creation time.\"},\"version()\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address)\":{\"notice\":\"Deploys a new gauge for a Balancer pool.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"getProductVersion()\":{\"notice\":\"Returns a JSON representation of the deployed gauge version containing name, version number and task ID.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ChildChainGaugeFactory.sol\":\"ChildChainGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\":{\"keccak256\":\"0xffafd017b9f43c8cc47f59e85e8a5354e4028110fb6c7fdbaeb569018f35e4d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bf250a0d068a2c8203dda057beabbf49705114e51086e885d7dc283a0cf3a249\",\"dweb:/ipfs/QmTBZvND9qY9k4EQYkfA9hYVSP3DxaXgKwuvDAQFDfxic2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0x95fe58d2b75267e6068077264da8f0ce358f0f9e18167ea902bb1d29e9636ad5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8eb074a823f7cd09f9e73f52af4c6d2602b71ec127ca08acb67336f79dfdc79b\",\"dweb:/ipfs/QmbyDXinvkw5P2KBa7menkS6jp8cdWGg1qhAu5CEYi3vdE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/ChildChainGaugeFactory.sol\":{\"keccak256\":\"0x804d4f5d5179ace8d92c7c25378261ff5561b09327b2ef0a572e076ea0f6af58\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c0bfabfc56a36bfca319f0443401f483f455828b9b17a9b31c0f0333e11cfe72\",\"dweb:/ipfs/QmYmhhUqsxTDYgMnt6ijuN1PExi3LfZXWexaArbFYNnpkU\"]}},\"version\":1}"}},"contracts/gauges/ChildChainGaugeRegistry.sol":{"ChildChainGaugeRegistry":{"abi":[{"inputs":[{"internalType":"contract L2BalancerPseudoMinter","name":"l2BalancerPseudoMinter","type":"address"},{"internalType":"contract ILiquidityGaugeFactory","name":"liquidityGaugeFactory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IChildChainGauge","name":"gauge","type":"address"}],"name":"GaugeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IChildChainGauge","name":"gauge","type":"address"}],"name":"GaugeRemoved","type":"event"},{"inputs":[{"internalType":"contract IChildChainGauge","name":"gauge","type":"address"}],"name":"addGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"endIndex","type":"uint256"}],"name":"getGauges","outputs":[{"internalType":"contract IChildChainGauge[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IChildChainGauge","name":"gauge","type":"address"}],"name":"removeGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalGauges","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"61010060405234801561001157600080fd5b50604051610eaa380380610eaa8339818101604052604081101561003457600080fd5b508051602091820151604080516311b2515f60e31b81529051929391926001600160a01b03851692638d928af89260048082019391829003018186803b15801561007d57600080fd5b505afa158015610091573d6000803e3d6000fd5b505050506040513d60208110156100a757600080fd5b5051306080526001600160601b0319606091821b811660a052600160005592811b831660c0521b1660e05260805160a05160601c60c05160601c60e05160601c610d9f61010b60003950806105b35250806104c25250806104555250610d9f6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063851c1bb31161005b578063851c1bb3146101445780638d928af8146101835780639da882ac146101b4578063aaabadc5146101e75761007d565b80632ba27111146100825780633a0451451461009c57806377b8883a146100d1575b600080fd5b61008a6101ef565b60408051918252519081900360200190f35b6100cf600480360360208110156100b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610200565b005b6100f4600480360360408110156100e757600080fd5b50803590602001356102c2565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610130578181015183820152602001610118565b505050509050019250505060405180910390f35b61008a6004803603602081101561015a57600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661044f565b61018b6104c0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100cf600480360360208110156101ca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104e4565b61018b610854565b60006101fb60016108d4565b905090565b6102086108d8565b61021360018261091e565b61027e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f47415547455f4e4f545f52454749535445524544000000000000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f94ac12f5301759f065db9de7f23677e50bef009f062b028d4d4612f620f0f5fb90600090a250565b606081831061033257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f494e44494345530000000000000000000000000000000000604482015290519081900360640190fd5b61033c60016108d4565b8211156103aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f454e445f494e4445585f4f55545f4f465f424f554e4453000000000000000000604482015290519081900360640190fd5b82820360608167ffffffffffffffff811180156103c657600080fd5b506040519080825280602002602001820160405280156103f0578160200160208202803683370190505b50905060005b828110156104445761040b6001878301610acc565b82828151811061041757fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016103f6565b509150505b92915050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ec6108d8565b6104f4610aef565b60008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561053c57600080fd5b505afa158015610550573d6000803e3d6000fd5b505050506040513d602081101561056657600080fd5b5051604080517f6c71e92000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015291519293507f000000000000000000000000000000000000000000000000000000000000000090911691636c71e92091602480820192602092909190829003018186803b1580156105fc57600080fd5b505afa158015610610573d6000803e3d6000fd5b505050506040513d602081101561062657600080fd5b505161069357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e56414c49445f47415547455f464143544f52590000000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff1663ce3cc8bd836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156106fa57600080fd5b505afa15801561070e573d6000803e3d6000fd5b505050506040513d602081101561072457600080fd5b505161079157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f47415547455f4e4f545f46524f4d5f464143544f525900000000000000000000604482015290519081900360640190fd5b61079c600183610b08565b61080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f47415547455f414c52454144595f524547495354455245440000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316907f9808313031a8f4caa534c417adad16800af7317516eff29a2d37cec0ffb244db90600090a250610851610b90565b50565b600061085e6104c0565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d60208110156108cd57600080fd5b5051905090565b5490565b60006109076000357fffffffff000000000000000000000000000000000000000000000000000000001661044f565b90506108516109168233610b97565b610191610c60565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120548015610ac25783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019101808214610a2757600086600001828154811061098c57fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff909116915081908890859081106109c257fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b8554869080610a3257fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061044992505050565b6000915050610449565b8154600090610ade9083106064610c60565b610ae88383610c72565b9392505050565b610b0160026000541415610190610c60565b6002600055565b6000610b148383610cac565b610b8857508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155610449565b506000610449565b6001600055565b6000610ba1610854565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610c2d57600080fd5b505afa158015610c41573d6000803e3d6000fd5b505050506040513d6020811015610c5757600080fd5b50519392505050565b81610c6e57610c6e81610cda565b5050565b6000826000018281548110610c8357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610851917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220809e41012a663e264fa73f9df103c36dc5be1011b081801143089752726cf80564736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xEAA CODESIZE SUB DUP1 PUSH2 0xEAA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x11B2515F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0x8D928AF8 SWAP3 PUSH1 0x4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x91 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE SWAP3 DUP2 SHL DUP4 AND PUSH1 0xC0 MSTORE SHL AND PUSH1 0xE0 MSTORE PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0xD9F PUSH2 0x10B PUSH1 0x0 CODECOPY POP DUP1 PUSH2 0x5B3 MSTORE POP DUP1 PUSH2 0x4C2 MSTORE POP DUP1 PUSH2 0x455 MSTORE POP PUSH2 0xD9F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0x9DA882AC EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1E7 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x2BA27111 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x3A045145 EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0x77B8883A EQ PUSH2 0xD1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x1EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x200 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x130 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x118 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x44F JUMP JUMPDEST PUSH2 0x18B PUSH2 0x4C0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4E4 JUMP JUMPDEST PUSH2 0x18B PUSH2 0x854 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FB PUSH1 0x1 PUSH2 0x8D4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x208 PUSH2 0x8D8 JUMP JUMPDEST PUSH2 0x213 PUSH1 0x1 DUP3 PUSH2 0x91E JUMP JUMPDEST PUSH2 0x27E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47415547455F4E4F545F52454749535445524544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH32 0x94AC12F5301759F065DB9DE7F23677E50BEF009F062B028D4D4612F620F0F5FB SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP4 LT PUSH2 0x332 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E44494345530000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x33C PUSH1 0x1 PUSH2 0x8D4 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E445F494E4445585F4F55545F4F465F424F554E4453000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 SUB PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3F0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x444 JUMPI PUSH2 0x40B PUSH1 0x1 DUP8 DUP4 ADD PUSH2 0xACC JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x417 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3F6 JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4EC PUSH2 0x8D8 JUMP JUMPDEST PUSH2 0x4F4 PUSH2 0xAEF JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC45A0155 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x53C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x550 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x6C71E92000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0x6C71E920 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x610 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x693 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F47415547455F464143544F52590000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCE3CC8BD DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x70E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x724 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x791 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47415547455F4E4F545F46524F4D5F464143544F525900000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x79C PUSH1 0x1 DUP4 PUSH2 0xB08 JUMP JUMPDEST PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47415547455F414C52454144595F524547495354455245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH32 0x9808313031A8F4CAA534C417ADAD16800AF7317516EFF29A2D37CEC0FFB244DB SWAP1 PUSH1 0x0 SWAP1 LOG2 POP PUSH2 0x851 PUSH2 0xB90 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85E PUSH2 0x4C0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x907 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x44F JUMP JUMPDEST SWAP1 POP PUSH2 0x851 PUSH2 0x916 DUP3 CALLER PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xC60 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0xAC2 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0xA27 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x98C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x9C2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0xA32 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x449 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x449 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xADE SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0xC60 JUMP JUMPDEST PUSH2 0xAE8 DUP4 DUP4 PUSH2 0xC72 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB01 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xC60 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB14 DUP4 DUP4 PUSH2 0xCAC JUMP JUMPDEST PUSH2 0xB88 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x449 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x449 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBA1 PUSH2 0x854 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xC6E JUMPI PUSH2 0xC6E DUP2 PUSH2 0xCDA JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC83 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x851 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 SWAP15 COINBASE ADD 0x2A PUSH7 0x3E264FA73F9DF1 SUB 0xC3 PUSH14 0xC5BE1011B081801143089752726C 0xF8 SDIV PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1440:3744:86:-:0;;;2102:297;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2102:297:86;;;;;;;;2239:33;;-1:-1:-1;;;2239:33:86;;;;2102:297;;;;-1:-1:-1;;;;;2239:31:86;;;;;:33;;;;;;;;;;;:31;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2239:33:86;1054:4:51;2049:46:46;;-1:-1:-1;;;;;;1073:14:51::1;::::0;;;;;::::1;::::0;2070:1:63;1030:31:51;2175:22:63;2288:48:86;;;;;::::1;::::0;2346:46;;::::1;::::0;1440:3744;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":1109}],"3611":[{"length":32,"start":1218}],"14077":[{"length":32,"start":1459}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c8063851c1bb31161005b578063851c1bb3146101445780638d928af8146101835780639da882ac146101b4578063aaabadc5146101e75761007d565b80632ba27111146100825780633a0451451461009c57806377b8883a146100d1575b600080fd5b61008a6101ef565b60408051918252519081900360200190f35b6100cf600480360360208110156100b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610200565b005b6100f4600480360360408110156100e757600080fd5b50803590602001356102c2565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610130578181015183820152602001610118565b505050509050019250505060405180910390f35b61008a6004803603602081101561015a57600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661044f565b61018b6104c0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100cf600480360360208110156101ca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104e4565b61018b610854565b60006101fb60016108d4565b905090565b6102086108d8565b61021360018261091e565b61027e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f47415547455f4e4f545f52454749535445524544000000000000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f94ac12f5301759f065db9de7f23677e50bef009f062b028d4d4612f620f0f5fb90600090a250565b606081831061033257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f494e44494345530000000000000000000000000000000000604482015290519081900360640190fd5b61033c60016108d4565b8211156103aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f454e445f494e4445585f4f55545f4f465f424f554e4453000000000000000000604482015290519081900360640190fd5b82820360608167ffffffffffffffff811180156103c657600080fd5b506040519080825280602002602001820160405280156103f0578160200160208202803683370190505b50905060005b828110156104445761040b6001878301610acc565b82828151811061041757fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016103f6565b509150505b92915050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ec6108d8565b6104f4610aef565b60008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561053c57600080fd5b505afa158015610550573d6000803e3d6000fd5b505050506040513d602081101561056657600080fd5b5051604080517f6c71e92000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015291519293507f000000000000000000000000000000000000000000000000000000000000000090911691636c71e92091602480820192602092909190829003018186803b1580156105fc57600080fd5b505afa158015610610573d6000803e3d6000fd5b505050506040513d602081101561062657600080fd5b505161069357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e56414c49445f47415547455f464143544f52590000000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff1663ce3cc8bd836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156106fa57600080fd5b505afa15801561070e573d6000803e3d6000fd5b505050506040513d602081101561072457600080fd5b505161079157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f47415547455f4e4f545f46524f4d5f464143544f525900000000000000000000604482015290519081900360640190fd5b61079c600183610b08565b61080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f47415547455f414c52454144595f524547495354455245440000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316907f9808313031a8f4caa534c417adad16800af7317516eff29a2d37cec0ffb244db90600090a250610851610b90565b50565b600061085e6104c0565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d60208110156108cd57600080fd5b5051905090565b5490565b60006109076000357fffffffff000000000000000000000000000000000000000000000000000000001661044f565b90506108516109168233610b97565b610191610c60565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120548015610ac25783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019101808214610a2757600086600001828154811061098c57fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff909116915081908890859081106109c257fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b8554869080610a3257fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061044992505050565b6000915050610449565b8154600090610ade9083106064610c60565b610ae88383610c72565b9392505050565b610b0160026000541415610190610c60565b6002600055565b6000610b148383610cac565b610b8857508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155610449565b506000610449565b6001600055565b6000610ba1610854565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610c2d57600080fd5b505afa158015610c41573d6000803e3d6000fd5b505050506040513d6020811015610c5757600080fd5b50519392505050565b81610c6e57610c6e81610cda565b5050565b6000826000018281548110610c8357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610851917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220809e41012a663e264fa73f9df103c36dc5be1011b081801143089752726cf80564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0x9DA882AC EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1E7 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x2BA27111 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x3A045145 EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0x77B8883A EQ PUSH2 0xD1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x1EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x200 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x130 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x118 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x44F JUMP JUMPDEST PUSH2 0x18B PUSH2 0x4C0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4E4 JUMP JUMPDEST PUSH2 0x18B PUSH2 0x854 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FB PUSH1 0x1 PUSH2 0x8D4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x208 PUSH2 0x8D8 JUMP JUMPDEST PUSH2 0x213 PUSH1 0x1 DUP3 PUSH2 0x91E JUMP JUMPDEST PUSH2 0x27E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47415547455F4E4F545F52454749535445524544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH32 0x94AC12F5301759F065DB9DE7F23677E50BEF009F062B028D4D4612F620F0F5FB SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP4 LT PUSH2 0x332 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E44494345530000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x33C PUSH1 0x1 PUSH2 0x8D4 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E445F494E4445585F4F55545F4F465F424F554E4453000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 SUB PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3F0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x444 JUMPI PUSH2 0x40B PUSH1 0x1 DUP8 DUP4 ADD PUSH2 0xACC JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x417 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3F6 JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4EC PUSH2 0x8D8 JUMP JUMPDEST PUSH2 0x4F4 PUSH2 0xAEF JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC45A0155 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x53C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x550 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x6C71E92000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0x6C71E920 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x610 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x693 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F47415547455F464143544F52590000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCE3CC8BD DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x70E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x724 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x791 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47415547455F4E4F545F46524F4D5F464143544F525900000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x79C PUSH1 0x1 DUP4 PUSH2 0xB08 JUMP JUMPDEST PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47415547455F414C52454144595F524547495354455245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH32 0x9808313031A8F4CAA534C417ADAD16800AF7317516EFF29A2D37CEC0FFB244DB SWAP1 PUSH1 0x0 SWAP1 LOG2 POP PUSH2 0x851 PUSH2 0xB90 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85E PUSH2 0x4C0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x907 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x44F JUMP JUMPDEST SWAP1 POP PUSH2 0x851 PUSH2 0x916 DUP3 CALLER PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xC60 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0xAC2 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0xA27 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x98C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x9C2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0xA32 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x449 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x449 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xADE SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0xC60 JUMP JUMPDEST PUSH2 0xAE8 DUP4 DUP4 PUSH2 0xC72 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB01 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xC60 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB14 DUP4 DUP4 PUSH2 0xCAC JUMP JUMPDEST PUSH2 0xB88 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x449 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x449 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBA1 PUSH2 0x854 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xC6E JUMPI PUSH2 0xC6E DUP2 PUSH2 0xCDA JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC83 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x851 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 SWAP15 COINBASE ADD 0x2A PUSH7 0x3E264FA73F9DF1 SUB 0xC3 PUSH14 0xC5BE1011B081801143089752726C 0xF8 SDIV PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1440:3744:86:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4147:95;;;:::i;:::-;;;;;;;;;;;;;;;;3797:182;;;;;;;;;;;;;;;;-1:-1:-1;3797:182:86;;;;:::i;:::-;;4647:535;;;;;;;;;;;;;;;;-1:-1:-1;4647:535:86;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2607:430:46;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:46;;;;:::i;1158:79:51:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2836:618:86;;;;;;;;;;;;;;;;-1:-1:-1;2836:618:86;;;;:::i;1297:109:51:-;;;:::i;4147:95:86:-;4193:7;4219:16;:7;:14;:16::i;:::-;4212:23;;4147:95;:::o;3797:182::-;2276:21:46;:19;:21::i;:::-;3882:30:86::1;:7;3905:5:::0;3882:14:::1;:30::i;:::-;3874:63;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3953:19;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;3797:182:::0;:::o;4647:535::-;4727:25;4785:8;4772:10;:21;4764:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4843:16;:7;:14;:16::i;:::-;4831:8;:28;;4823:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4913:21;;;4944:38;4913:21;4985:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4985:28:86;;4944:69;;5029:9;5024:122;5048:4;5044:1;:8;5024:122;;;5108:26;:7;5119:14;;;5108:10;:26::i;:::-;5073:12;5086:1;5073:15;;;;;;;;:62;;;;:15;;;;;;;;;;;:62;5054:3;;5024:122;;;-1:-1:-1;5163:12:86;-1:-1:-1;;4647:535:86;;;;;:::o;2607:430:46:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;2836:618:86:-;2276:21:46;:19;:21::i;:::-;2613:20:63::1;:18;:20::i;:::-;3108:30:86::2;3141:5;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;3141:15:86;3174:52:::2;::::0;;;;;:43:::2;:52:::0;;::::2;;::::0;::::2;::::0;;;3141:15;;-1:-1:-1;3174:23:86::2;:43:::0;;::::2;::::0;::::2;::::0;:52;;;;;3141:15:::2;::::0;3174:52;;;;;;;;:43;:52;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;3174:52:86;3166:86:::2;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;3270:7;:26;;;3305:5;3270:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;3270:42:86;3262:77:::2;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;3358:27;:7;3378:5:::0;3358:11:::2;:27::i;:::-;3350:64;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;3430:17;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;;::::2;2643:1:63;2654:19:::1;:17;:19::i;:::-;2836:618:86::0;:::o;1297:109:51:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:51;;-1:-1:-1;1297:109:51;:::o;4192:114:62:-;4281:18;;4192:114::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;2429:1467:62:-;2639:19;;;2502:4;2639:19;;;:12;;;:19;;;;;;2673:15;;2669:1221;;3114:18;;3066:14;;;;;3114:22;3236:26;;;3232:389;;3282:17;3302:3;:11;;3314:9;3302:22;;;;;;;;;;;;;;;;;;3424:26;;3302:22;;;;;-1:-1:-1;3302:22:62;;3424:3;;3436:13;;3424:26;;;;;;;;;;;;;;;;;;:38;;;;;;;;;;;3536:23;;;;;;-1:-1:-1;3536:12:62;;;:23;;;;;;3562:17;;;3536:43;;3232:389;3699:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3791:19;;;;3699:17;3791:12;;;:19;;;;;;3784:26;;;;3699:17;-1:-1:-1;3825:11:62;;-1:-1:-1;;;3825:11:62;2669:1221;3874:5;3867:12;;;;;4648:199;4750:18;;4722:7;;4741:58;;4750:26;-1:-1:-1;5662:3:31;4741:8:62;:58::i;:::-;4816:24;4829:3;4834:5;4816:12;:24::i;:::-;4809:31;4648:199;-1:-1:-1;;;4648:199:62:o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;1851:410:62:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:62;;;;;;;;-1:-1:-1;1978:23:62;;;;;;;;;;;;;;;;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:62;2232:12;;2963:208:63;2070:1;3142:7;:22;2963:208::o;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1523:60:51;;1412:178;-1:-1:-1;;;1412:178:51:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;5212:135:62:-;5296:7;5322:3;:11;;5334:5;5322:18;;;;;;;;;;;;;;;;;;;;;5212:135;-1:-1:-1;;;5212:135:62:o;3977:134::-;4080:19;;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;1459:126:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"addGauge(address)":"9da882ac","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getGauges(uint256,uint256)":"77b8883a","getVault()":"8d928af8","removeGauge(address)":"3a045145","totalGauges()":"2ba27111"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract L2BalancerPseudoMinter\",\"name\":\"l2BalancerPseudoMinter\",\"type\":\"address\"},{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"liquidityGaugeFactory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IChildChainGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IChildChainGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IChildChainGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"addGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"}],\"name\":\"getGauges\",\"outputs\":[{\"internalType\":\"contract IChildChainGauge[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IChildChainGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"removeGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalGauges\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addGauge(address)\":{\"details\":\"This function checks that the gauge's factory is registered with the L2BalancerPseudoMinter, and that the gauge has been deployed from the registered factory. If these conditions are met, the gauge is added to the registry, and a GaugeAdded event is emitted.\",\"params\":{\"gauge\":\"The gauge to add to the registry.\"}},\"constructor\":{\"params\":{\"l2BalancerPseudoMinter\":\"The L2 Balancer pseudo minter.\",\"liquidityGaugeFactory\":\"The liquidity gauge factory.\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getGauges(uint256,uint256)\":{\"params\":{\"endIndex\":\"The ending index (exclusive) for retrieving gauges from the registry.\",\"startIndex\":\"The starting index (inclusive) for retrieving gauges from the registry.\"},\"returns\":{\"_0\":\"An array of IChildChainGauge containing the gauges within the specified index range.\"}},\"removeGauge(address)\":{\"details\":\"If the gauge is not registered, the function reverts with a \\\"GAUGE_NOT_REGISTERED\\\" error. Remove a gauge might affect the order of the remaining gauges.\",\"params\":{\"gauge\":\"The gauge to remove from the registry.\"}},\"totalGauges()\":{\"returns\":{\"_0\":\"The total number of registered gauges as a uint256.\"}}},\"title\":\"ChildChainGaugeRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addGauge(address)\":{\"notice\":\"Add a gauge to the registry after validating its legitimacy.\"},\"constructor\":{\"notice\":\"Constructor initializes the ChildChainGaugeRegistry contract.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getGauges(uint256,uint256)\":{\"notice\":\"Retrieve a list of gauges within the specified index range from the registry.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"removeGauge(address)\":{\"notice\":\"Remove a registered gauge from the registry and emit a GaugeRemoved event.\"},\"totalGauges()\":{\"notice\":\"Retrieve the total number of gauges registered in the registry.\"}},\"notice\":\"Registry for all child chain gauges. This contract enables the addition and removal of child chain gauges to the registry. Duplication is not permitted. Gauges are verified to be valid.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ChildChainGaugeRegistry.sol\":\"ChildChainGaugeRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\":{\"keccak256\":\"0xffafd017b9f43c8cc47f59e85e8a5354e4028110fb6c7fdbaeb569018f35e4d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bf250a0d068a2c8203dda057beabbf49705114e51086e885d7dc283a0cf3a249\",\"dweb:/ipfs/QmTBZvND9qY9k4EQYkfA9hYVSP3DxaXgKwuvDAQFDfxic2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/BalancerMinter.sol\":{\"keccak256\":\"0xbacdfde61937f9cea9166c7e492ac8d65261fb6bdfb621f1f258852799204cc8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3e68da1f25c0211654bb0b04c4ac1a789cb3dfabd7f5db54d6bfbeb49414e0c\",\"dweb:/ipfs/QmRnvBWovj9HNZsEfvrZpbJcs3K7ikwrY8fkX68F7rdxQK\"]},\"contracts/L2BalancerPseudoMinter.sol\":{\"keccak256\":\"0x5b9ddeebb5accdd9e94e89a68004301f4f92c42ccd8be2f1dc5158ffa15665ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae10ff0f3cfff31f80435ac23e95b1e03d547441e7c44f84aa238363493f93bb\",\"dweb:/ipfs/Qmbrk9GBcRu8pBG3kPsGafCJ3RE5Uvyh4toAnjph4kKs3L\"]},\"contracts/gauges/ChildChainGaugeRegistry.sol\":{\"keccak256\":\"0x80512d1d09d3f3b1d51da620693208a30ca993f104fa3bf33eba0e0ad1a17eb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8008b06daa2c95c59bceff73ced3ebec8d2db9542b48c10a2c6e829a6f2a2466\",\"dweb:/ipfs/QmWqUXnFMLCeBswwmizerXFV8jy3m7dDhdnKNa2Sqk4PXn\"]}},\"version\":1}"}},"contracts/gauges/ChildChainGaugeRewardHelper.sol":{"ChildChainGaugeRewardHelper":{"abi":[{"inputs":[],"name":"CLAIM_FREQUENCY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IRewardsOnlyGauge","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimRewardsFromGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRewardsOnlyGauge[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"claimRewardsFromGauges","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRewardsOnlyGauge","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"token","type":"address"}],"name":"getPendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506105ed806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635db749491461005157806371d5065c1461007a578063c2ec33b51461008f578063ff98f88d146100a2575b600080fd5b61006461005f3660046104ea565b6100aa565b6040516100719190610589565b60405180910390f35b61008d6100883660046104b2565b610237565b005b61008d61009d3660046103f3565b610245565b610064610288565b60008373ffffffffffffffffffffffffffffffffffffffff1663bf88a6ff6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100f257600080fd5b505afa158015610106573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012a9190610473565b73ffffffffffffffffffffffffffffffffffffffff16631afe22a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561017157600080fd5b505af1158015610185573d6000803e3d6000fd5b50506040517f59b7e40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871692506359b7e40991506101dd9086908690600401610562565b602060405180830381600087803b1580156101f757600080fd5b505af115801561020b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022f9190610529565b949350505050565b610241828261028e565b5050565b60005b828110156102825761027a84848381811061025f57fe5b90506020020160208101906102749190610496565b8361028e565b600101610248565b50505050565b610e1081565b8173ffffffffffffffffffffffffffffffffffffffff1663bf88a6ff6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102d457600080fd5b505afa1580156102e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030c9190610473565b73ffffffffffffffffffffffffffffffffffffffff16631afe22a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035357600080fd5b505af1158015610367573d6000803e3d6000fd5b50506040517f84e9bd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851692506384e9bd7e91506103bd908490600401610541565b600060405180830381600087803b1580156103d757600080fd5b505af11580156103eb573d6000803e3d6000fd5b505050505050565b600080600060408486031215610407578283fd5b833567ffffffffffffffff8082111561041e578485fd5b818601915086601f830112610431578485fd5b81358181111561043f578586fd5b8760208083028501011115610452578586fd5b6020928301955093505084013561046881610592565b809150509250925092565b600060208284031215610484578081fd5b815161048f81610592565b9392505050565b6000602082840312156104a7578081fd5b813561048f81610592565b600080604083850312156104c4578182fd5b82356104cf81610592565b915060208301356104df81610592565b809150509250929050565b6000806000606084860312156104fe578283fd5b833561050981610592565b9250602084013561051981610592565b9150604084013561046881610592565b60006020828403121561053a578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff811681146105b457600080fd5b5056fea2646970667358221220d1a0b7da4b1c0d170c5885e5a9132c7d214ac81f855ecbaebbdbea4a8d82b93864736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5ED DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5DB74949 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x71D5065C EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0xC2EC33B5 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0xFF98F88D EQ PUSH2 0xA2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x4EA JUMP JUMPDEST PUSH2 0xAA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x589 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8D PUSH2 0x88 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B2 JUMP JUMPDEST PUSH2 0x237 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8D PUSH2 0x9D CALLDATASIZE PUSH1 0x4 PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x64 PUSH2 0x288 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBF88A6FF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x106 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12A SWAP2 SWAP1 PUSH2 0x473 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1AFE22A6 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x185 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x59B7E40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP3 POP PUSH4 0x59B7E409 SWAP2 POP PUSH2 0x1DD SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x562 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22F SWAP2 SWAP1 PUSH2 0x529 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x241 DUP3 DUP3 PUSH2 0x28E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH2 0x27A DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x25F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x274 SWAP2 SWAP1 PUSH2 0x496 JUMP JUMPDEST DUP4 PUSH2 0x28E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x248 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xE10 DUP2 JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBF88A6FF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x473 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1AFE22A6 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x367 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x84E9BD7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP3 POP PUSH4 0x84E9BD7E SWAP2 POP PUSH2 0x3BD SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x541 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x407 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x41E JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x431 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x43F JUMPI DUP6 DUP7 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x452 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP6 POP SWAP4 POP POP DUP5 ADD CALLDATALOAD PUSH2 0x468 DUP2 PUSH2 0x592 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x484 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x48F DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x48F DUP2 PUSH2 0x592 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4C4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4CF DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4DF DUP2 PUSH2 0x592 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4FE JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x509 DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x519 DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x468 DUP2 PUSH2 0x592 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53A JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD1 LOG0 0xB7 0xDA 0x4B SHR 0xD OR 0xC PC DUP6 0xE5 0xA9 SGT 0x2C PUSH30 0x214AC81F855ECBAEBBDBEA4A8D82B93864736F6C63430007010033000000 ","sourceMap":"1209:2088:87:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061004c5760003560e01c80635db749491461005157806371d5065c1461007a578063c2ec33b51461008f578063ff98f88d146100a2575b600080fd5b61006461005f3660046104ea565b6100aa565b6040516100719190610589565b60405180910390f35b61008d6100883660046104b2565b610237565b005b61008d61009d3660046103f3565b610245565b610064610288565b60008373ffffffffffffffffffffffffffffffffffffffff1663bf88a6ff6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100f257600080fd5b505afa158015610106573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012a9190610473565b73ffffffffffffffffffffffffffffffffffffffff16631afe22a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561017157600080fd5b505af1158015610185573d6000803e3d6000fd5b50506040517f59b7e40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871692506359b7e40991506101dd9086908690600401610562565b602060405180830381600087803b1580156101f757600080fd5b505af115801561020b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022f9190610529565b949350505050565b610241828261028e565b5050565b60005b828110156102825761027a84848381811061025f57fe5b90506020020160208101906102749190610496565b8361028e565b600101610248565b50505050565b610e1081565b8173ffffffffffffffffffffffffffffffffffffffff1663bf88a6ff6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102d457600080fd5b505afa1580156102e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030c9190610473565b73ffffffffffffffffffffffffffffffffffffffff16631afe22a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035357600080fd5b505af1158015610367573d6000803e3d6000fd5b50506040517f84e9bd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851692506384e9bd7e91506103bd908490600401610541565b600060405180830381600087803b1580156103d757600080fd5b505af11580156103eb573d6000803e3d6000fd5b505050505050565b600080600060408486031215610407578283fd5b833567ffffffffffffffff8082111561041e578485fd5b818601915086601f830112610431578485fd5b81358181111561043f578586fd5b8760208083028501011115610452578586fd5b6020928301955093505084013561046881610592565b809150509250925092565b600060208284031215610484578081fd5b815161048f81610592565b9392505050565b6000602082840312156104a7578081fd5b813561048f81610592565b600080604083850312156104c4578182fd5b82356104cf81610592565b915060208301356104df81610592565b809150509250929050565b6000806000606084860312156104fe578283fd5b833561050981610592565b9250602084013561051981610592565b9150604084013561046881610592565b60006020828403121561053a578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff811681146105b457600080fd5b5056fea2646970667358221220d1a0b7da4b1c0d170c5885e5a9132c7d214ac81f855ecbaebbdbea4a8d82b93864736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5DB74949 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x71D5065C EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0xC2EC33B5 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0xFF98F88D EQ PUSH2 0xA2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x4EA JUMP JUMPDEST PUSH2 0xAA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x589 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8D PUSH2 0x88 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B2 JUMP JUMPDEST PUSH2 0x237 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8D PUSH2 0x9D CALLDATASIZE PUSH1 0x4 PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x64 PUSH2 0x288 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBF88A6FF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x106 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12A SWAP2 SWAP1 PUSH2 0x473 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1AFE22A6 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x185 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x59B7E40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP3 POP PUSH4 0x59B7E409 SWAP2 POP PUSH2 0x1DD SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x562 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22F SWAP2 SWAP1 PUSH2 0x529 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x241 DUP3 DUP3 PUSH2 0x28E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH2 0x27A DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x25F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x274 SWAP2 SWAP1 PUSH2 0x496 JUMP JUMPDEST DUP4 PUSH2 0x28E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x248 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xE10 DUP2 JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBF88A6FF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x473 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1AFE22A6 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x367 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x84E9BD7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP3 POP PUSH4 0x84E9BD7E SWAP2 POP PUSH2 0x3BD SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x541 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x407 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x41E JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x431 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x43F JUMPI DUP6 DUP7 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x452 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP6 POP SWAP4 POP POP DUP5 ADD CALLDATALOAD PUSH2 0x468 DUP2 PUSH2 0x592 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x484 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x48F DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x48F DUP2 PUSH2 0x592 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4C4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4CF DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4DF DUP2 PUSH2 0x592 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4FE JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x509 DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x519 DUP2 PUSH2 0x592 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x468 DUP2 PUSH2 0x592 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53A JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD1 LOG0 0xB7 0xDA 0x4B SHR 0xD OR 0xC PC DUP6 0xE5 0xA9 SGT 0x2C PUSH30 0x214AC81F855ECBAEBBDBEA4A8D82B93864736F6C63430007010033000000 ","sourceMap":"1209:2088:87:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1885:249;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2402:131;;;;;;:::i;:::-;;:::i;:::-;;2819:216;;;;;;:::i;:::-;;:::i;1252:46::-;;;:::i;1885:249::-;2014:7;2033:5;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2086:41:87;;;;;:28;;;;-1:-1:-1;2086:28:87;;-1:-1:-1;2086:41:87;;2115:4;;2121:5;;2086:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2079:48;1885:249;-1:-1:-1;;;;1885:249:87:o;2402:131::-;2491:35;2514:5;2521:4;2491:22;:35::i;:::-;2402:131;;:::o;2819:216::-;2926:9;2921:108;2941:17;;;2921:108;;;2979:39;3002:6;;3009:1;3002:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;3013:4;2979:22;:39::i;:::-;2960:3;;2921:108;;;;2819:216;;;:::o;1252:46::-;1294:4;1252:46;:::o;3068:227::-;3217:5;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3263:25:87;;;;;:19;;;;-1:-1:-1;3263:19:87;;-1:-1:-1;3263:25:87;;3283:4;;3263:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3068:227;;:::o;1090:574:-1:-;;;;1272:2;1260:9;1251:7;1247:23;1243:32;1240:2;;;-1:-1;;1278:12;1240:2;1336:17;1323:31;1374:18;;1366:6;1363:30;1360:2;;;-1:-1;;1396:12;1360:2;1523:6;1512:9;1508:22;;;335:3;328:4;320:6;316:17;312:27;302:2;;-1:-1;;343:12;302:2;386:6;373:20;1374:18;405:6;402:30;399:2;;;-1:-1;;435:12;399:2;530:3;479:4;;514:6;510:17;471:6;496:32;;493:41;490:2;;;-1:-1;;537:12;490:2;479:4;467:17;;;;-1:-1;1416:124;-1:-1;;1616:22;;72:20;97:33;72:20;97:33;:::i;:::-;1585:63;;;;1234:430;;;;;:::o;1671:317::-;;1813:2;1801:9;1792:7;1788:23;1784:32;1781:2;;;-1:-1;;1819:12;1781:2;676:6;670:13;688:60;742:5;688:60;:::i;:::-;1871:101;1775:213;-1:-1;;;1775:213::o;1995:293::-;;2125:2;2113:9;2104:7;2100:23;2096:32;2093:2;;;-1:-1;;2131:12;2093:2;866:6;853:20;878:59;931:5;878:59;:::i;2295:418::-;;;2442:2;2430:9;2421:7;2417:23;2413:32;2410:2;;;-1:-1;;2448:12;2410:2;866:6;853:20;878:59;931:5;878:59;:::i;:::-;2500:89;-1:-1;2626:2;2665:22;;72:20;97:33;72:20;97:33;:::i;:::-;2634:63;;;;2404:309;;;;;:::o;2720:543::-;;;;2884:2;2872:9;2863:7;2859:23;2855:32;2852:2;;;-1:-1;;2890:12;2852:2;866:6;853:20;878:59;931:5;878:59;:::i;:::-;2942:89;-1:-1;3068:2;3107:22;;72:20;97:33;72:20;97:33;:::i;:::-;3076:63;-1:-1;3176:2;3215:22;;72:20;97:33;72:20;97:33;:::i;3270:263::-;;3385:2;3373:9;3364:7;3360:23;3356:32;3353:2;;;-1:-1;;3391:12;3353:2;-1:-1;1027:13;;3347:186;-1:-1;3347:186::o;3780:222::-;4998:42;4987:54;;;;3611:37;;3907:2;3892:18;;3878:124::o;4009:333::-;4998:42;4987:54;;;3611:37;;4987:54;;4328:2;4313:18;;3611:37;4164:2;4149:18;;4135:207::o;4349:222::-;3731:37;;;4476:2;4461:18;;4447:124::o;5132:117::-;4998:42;5219:5;4987:54;5194:5;5191:35;5181:2;;5240:1;;5230:12;5181:2;5175:74;:::o"},"methodIdentifiers":{"CLAIM_FREQUENCY()":"ff98f88d","claimRewardsFromGauge(address,address)":"71d5065c","claimRewardsFromGauges(address[],address)":"c2ec33b5","getPendingRewards(address,address,address)":"5db74949"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CLAIM_FREQUENCY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardsOnlyGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimRewardsFromGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardsOnlyGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimRewardsFromGauges\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRewardsOnlyGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Balancer Labs\",\"kind\":\"dev\",\"methods\":{\"claimRewardsFromGauge(address,address)\":{\"params\":{\"gauge\":\"- The address of the RewardsOnlyGauge from which to claim rewards.\",\"user\":\"- The address of the user for which to claim rewards.\"}},\"claimRewardsFromGauges(address[],address)\":{\"params\":{\"gauges\":\"- An array of address of RewardsOnlyGauges from which to claim rewards.\",\"user\":\"- The address of the user for which to claim rewards.\"}},\"getPendingRewards(address,address,address)\":{\"details\":\"This function cannot be marked `view` as it updates the gauge's state (not possible in a view context). Offchain users attempting to read from this function should manually perform a static call or modify the abi.\",\"params\":{\"gauge\":\"- The address of the RewardsOnlyGauge for which to query.\",\"token\":\"- The address of the reward token for which to query.\",\"user\":\"- The address of the user for which to query.\"}}},\"title\":\"ChildChainGaugeRewardHelper\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimRewardsFromGauge(address,address)\":{\"notice\":\"Claims pending rewards on RewardsOnlyGauge `gauge` for account `user`.\"},\"claimRewardsFromGauges(address[],address)\":{\"notice\":\"Claims pending rewards on a list of RewardsOnlyGauges `gauges` for account `user`.\"},\"getPendingRewards(address,address,address)\":{\"notice\":\"Returns the amount of ERC20 token `token` on RewardsOnlyGauge `gauge` claimable by address `user`.\"}},\"notice\":\"Helper contract which allows claiming rewards from many RewardsOnlyGauges in a single transaction. This contract manually triggers an update to the gauges' streamers as a workaround for the gauge .\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ChildChainGaugeRewardHelper.sol\":\"ChildChainGaugeRewardHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\":{\"keccak256\":\"0x3cf2370032a789025cffe8d0c613274213fd4e1ceb88cef1c2b039a6d0d08261\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1788ecb804b061fa04678ce311020d66e25b201cf18d452ea290bbc9af12e504\",\"dweb:/ipfs/Qmf84ANUiZtoZHEsbymn7NSZSGikMovYZUVqiPHwVrbBPJ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol\":{\"keccak256\":\"0x8c09c3f372e07adf790d55607401dfa60d8ec2b591f39de772efdf887d965d11\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6cbfa8f8f004ec1cc00739f51bd00763d08600e0bf827c1be4cc21a4afb26874\",\"dweb:/ipfs/QmTxDYJA8y2cJdxHfCq6NLK812WGnxFehTF9bW4n8xa1zx\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"contracts/gauges/ChildChainGaugeRewardHelper.sol\":{\"keccak256\":\"0xd232a359e1d25239d2e4c2017994420d0f495956ca0cf45478ec4f2e804880e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://784bf911c991fda8beba47d240466e38a267e8d98e8d7afada0be08d9823a3ff\",\"dweb:/ipfs/QmRmd7Vz5CFHVYYVQmoMHUhg7qqATtVvqmfJte2aRKY6Bu\"]}},\"version\":1}"}},"contracts/gauges/ChildChainLiquidityGaugeFactory.sol":{"ChildChainLiquidityGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract ILiquidityGauge","name":"gauge","type":"address"},{"internalType":"contract IChildChainStreamer","name":"childChainStreamer","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"streamer","type":"address"}],"name":"RewardsOnlyGaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getChildChainStreamerImplementation","outputs":[{"internalType":"contract IChildChainStreamer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"contract ILiquidityGauge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"getGaugePool","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"getGaugeStreamer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolGauge","outputs":[{"internalType":"contract ILiquidityGauge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolStreamer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"streamer","type":"address"}],"name":"isStreamerFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b5060405161088338038061088383398101604081905261002f9161004d565b6001600160601b0319606092831b8116608052911b1660a05261009e565b6000806040838503121561005f578182fd5b825161006a81610086565b602084015190925061007b81610086565b809150509250929050565b6001600160a01b038116811461009b57600080fd5b50565b60805160601c60a05160601c6107b26100d1600039806102e3528061057e52508061016252806102b652506107b26000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80639ed9331811610076578063cbda93271161005b578063cbda932714610125578063ce3cc8bd14610145578063f9e0a13e14610158576100a3565b80639ed93318146100ff578063a8ea687514610112576100a3565b806339312dee146100a8578063744a65dd146100c65780638a4ffeb0146100d957806390b20087146100ec575b600080fd5b6100b0610160565b6040516100bd919061068c565b60405180910390f35b6100b06100d436600461064d565b610184565b6100b06100e736600461064d565b61020c565b6100b06100fa36600461064d565b61021a565b6100b061010d36600461064d565b610245565b6100b061012036600461064d565b6104fb565b61013861013336600461064d565b610526565b6040516100bd91906106de565b61013861015336600461064d565b610551565b6100b061057c565b7f000000000000000000000000000000000000000000000000000000000000000090565b60008173ffffffffffffffffffffffffffffffffffffffff166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b1580156101cc57600080fd5b505afa1580156101e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102049190610670565b90505b919050565b60006102046100fa836104fb565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600360205260409020541690565b73ffffffffffffffffffffffffffffffffffffffff818116600090815260026020526040812054909116156102af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a6906106e9565b60405180910390fd5b60006102da7f00000000000000000000000000000000000000000000000000000000000000006105a0565b905060006103077f00000000000000000000000000000000000000000000000000000000000000006105a0565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063c4d66de89061035c90859060040161068c565b600060405180830381600087803b15801561037657600080fd5b505af115801561038a573d6000803e3d6000fd5b50506040517f6133f98500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169250636133f98591506103e89087908590631afe22a6906004016106ad565b600060405180830381600087803b15801561040257600080fd5b505af1158015610416573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff82811660008181526020818152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558885168084526002835281842080547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116871790915585855260039093529281902080549587169590921694909417905591517f887aaf82b8cf747396674afdce22a170d9e18895da73bbe1a63055fdfc8dd6b5906104ec90859061068c565b60405180910390a35092915050565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600260205260409020541690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a690610720565b60006020828403121561065e578081fd5b813561066981610757565b9392505050565b600060208284031215610681578081fd5b815161066981610757565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b901515815260200190565b60208082526014908201527f476175676520616c726561647920657869737473000000000000000000000000604082015260600190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff8116811461077957600080fd5b5056fea2646970667358221220acf91573fc2125e02f259cf9c81cab41d9794b019839e73ab3d9379c7a775d3e64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x883 CODESIZE SUB DUP1 PUSH2 0x883 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x4D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0x9E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x6A DUP2 PUSH2 0x86 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x7B DUP2 PUSH2 0x86 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x7B2 PUSH2 0xD1 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2E3 MSTORE DUP1 PUSH2 0x57E MSTORE POP DUP1 PUSH2 0x162 MSTORE DUP1 PUSH2 0x2B6 MSTORE POP PUSH2 0x7B2 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9ED93318 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xCBDA9327 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xCBDA9327 EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xF9E0A13E EQ PUSH2 0x158 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x9ED93318 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xA8EA6875 EQ PUSH2 0x112 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x744A65DD EQ PUSH2 0xC6 JUMPI DUP1 PUSH4 0x8A4FFEB0 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x90B20087 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH2 0x160 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBD SWAP2 SWAP1 PUSH2 0x68C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH2 0xD4 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x184 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0xE7 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x20C JUMP JUMPDEST PUSH2 0xB0 PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x21A JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x10D CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x120 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x4FB JUMP JUMPDEST PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBD SWAP2 SWAP1 PUSH2 0x6DE JUMP JUMPDEST PUSH2 0x138 PUSH2 0x153 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x57C JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x204 SWAP2 SWAP1 PUSH2 0x670 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x204 PUSH2 0xFA DUP4 PUSH2 0x4FB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 AND ISZERO PUSH2 0x2AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A6 SWAP1 PUSH2 0x6E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2DA PUSH32 0x0 PUSH2 0x5A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x307 PUSH32 0x0 PUSH2 0x5A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC4D66DE800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xC4D66DE8 SWAP1 PUSH2 0x35C SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x68C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x38A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x6133F98500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP3 POP PUSH4 0x6133F985 SWAP2 POP PUSH2 0x3E8 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH4 0x1AFE22A6 SWAP1 PUSH1 0x4 ADD PUSH2 0x6AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x416 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE DUP9 DUP6 AND DUP1 DUP5 MSTORE PUSH1 0x2 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND DUP8 OR SWAP1 SWAP2 SSTORE DUP6 DUP6 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP6 DUP8 AND SWAP6 SWAP1 SWAP3 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SSTORE SWAP2 MLOAD PUSH32 0x887AAF82B8CF747396674AFDCE22A170D9E18895DA73BBE1A63055FDFC8DD6B5 SWAP1 PUSH2 0x4EC SWAP1 DUP6 SWAP1 PUSH2 0x68C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x207 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A6 SWAP1 PUSH2 0x720 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x65E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x669 DUP2 PUSH2 0x757 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x681 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x669 DUP2 PUSH2 0x757 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520616C726561647920657869737473000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAC 0xF9 ISZERO PUSH20 0xFC2125E02F259CF9C81CAB41D9794B019839E73A 0xB3 0xD9 CALLDATACOPY SWAP13 PUSH27 0x775D3E64736F6C6343000701003300000000000000000000000000 ","sourceMap":"1081:4011:88:-:0;;;1810:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1895:28:88;;;;;;;;1933:54;;;;;1081:4011;;387:499:-1;;;569:2;557:9;548:7;544:23;540:32;537:2;;;-1:-1;;575:12;537:2;307:6;301:13;319:56;369:5;319:56;:::i;:::-;761:2;838:22;;110:13;627:97;;-1:-1;128:60;110:13;128:60;:::i;:::-;769:101;;;;531:355;;;;;:::o;1365:171::-;-1:-1;;;;;1299:54;;1451:62;;1441:2;;1527:1;;1517:12;1441:2;1435:101;:::o;:::-;1081:4011:88;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14391":[{"length":32,"start":354},{"length":32,"start":694}],"14393":[{"length":32,"start":739},{"length":32,"start":1406}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a35760003560e01c80639ed9331811610076578063cbda93271161005b578063cbda932714610125578063ce3cc8bd14610145578063f9e0a13e14610158576100a3565b80639ed93318146100ff578063a8ea687514610112576100a3565b806339312dee146100a8578063744a65dd146100c65780638a4ffeb0146100d957806390b20087146100ec575b600080fd5b6100b0610160565b6040516100bd919061068c565b60405180910390f35b6100b06100d436600461064d565b610184565b6100b06100e736600461064d565b61020c565b6100b06100fa36600461064d565b61021a565b6100b061010d36600461064d565b610245565b6100b061012036600461064d565b6104fb565b61013861013336600461064d565b610526565b6040516100bd91906106de565b61013861015336600461064d565b610551565b6100b061057c565b7f000000000000000000000000000000000000000000000000000000000000000090565b60008173ffffffffffffffffffffffffffffffffffffffff166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b1580156101cc57600080fd5b505afa1580156101e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102049190610670565b90505b919050565b60006102046100fa836104fb565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600360205260409020541690565b73ffffffffffffffffffffffffffffffffffffffff818116600090815260026020526040812054909116156102af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a6906106e9565b60405180910390fd5b60006102da7f00000000000000000000000000000000000000000000000000000000000000006105a0565b905060006103077f00000000000000000000000000000000000000000000000000000000000000006105a0565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063c4d66de89061035c90859060040161068c565b600060405180830381600087803b15801561037657600080fd5b505af115801561038a573d6000803e3d6000fd5b50506040517f6133f98500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169250636133f98591506103e89087908590631afe22a6906004016106ad565b600060405180830381600087803b15801561040257600080fd5b505af1158015610416573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff82811660008181526020818152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558885168084526002835281842080547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116871790915585855260039093529281902080549587169590921694909417905591517f887aaf82b8cf747396674afdce22a170d9e18895da73bbe1a63055fdfc8dd6b5906104ec90859061068c565b60405180910390a35092915050565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600260205260409020541690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a690610720565b60006020828403121561065e578081fd5b813561066981610757565b9392505050565b600060208284031215610681578081fd5b815161066981610757565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b901515815260200190565b60208082526014908201527f476175676520616c726561647920657869737473000000000000000000000000604082015260600190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff8116811461077957600080fd5b5056fea2646970667358221220acf91573fc2125e02f259cf9c81cab41d9794b019839e73ab3d9379c7a775d3e64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9ED93318 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xCBDA9327 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xCBDA9327 EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xF9E0A13E EQ PUSH2 0x158 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x9ED93318 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xA8EA6875 EQ PUSH2 0x112 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x744A65DD EQ PUSH2 0xC6 JUMPI DUP1 PUSH4 0x8A4FFEB0 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x90B20087 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH2 0x160 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBD SWAP2 SWAP1 PUSH2 0x68C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH2 0xD4 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x184 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0xE7 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x20C JUMP JUMPDEST PUSH2 0xB0 PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x21A JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x10D CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x120 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x4FB JUMP JUMPDEST PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBD SWAP2 SWAP1 PUSH2 0x6DE JUMP JUMPDEST PUSH2 0x138 PUSH2 0x153 CALLDATASIZE PUSH1 0x4 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x57C JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x204 SWAP2 SWAP1 PUSH2 0x670 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x204 PUSH2 0xFA DUP4 PUSH2 0x4FB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 AND ISZERO PUSH2 0x2AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A6 SWAP1 PUSH2 0x6E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2DA PUSH32 0x0 PUSH2 0x5A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x307 PUSH32 0x0 PUSH2 0x5A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC4D66DE800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xC4D66DE8 SWAP1 PUSH2 0x35C SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x68C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x38A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x6133F98500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP3 POP PUSH4 0x6133F985 SWAP2 POP PUSH2 0x3E8 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH4 0x1AFE22A6 SWAP1 PUSH1 0x4 ADD PUSH2 0x6AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x416 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE DUP9 DUP6 AND DUP1 DUP5 MSTORE PUSH1 0x2 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND DUP8 OR SWAP1 SWAP2 SSTORE DUP6 DUP6 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP6 DUP8 AND SWAP6 SWAP1 SWAP3 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SSTORE SWAP2 MLOAD PUSH32 0x887AAF82B8CF747396674AFDCE22A170D9E18895DA73BBE1A63055FDFC8DD6B5 SWAP1 PUSH2 0x4EC SWAP1 DUP6 SWAP1 PUSH2 0x68C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x207 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A6 SWAP1 PUSH2 0x720 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x65E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x669 DUP2 PUSH2 0x757 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x681 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x669 DUP2 PUSH2 0x757 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520616C726561647920657869737473000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAC 0xF9 ISZERO PUSH20 0xFC2125E02F259CF9C81CAB41D9794B019839E73A 0xB3 0xD9 CALLDATACOPY SWAP13 PUSH27 0x775D3E64736F6C6343000701003300000000000000000000000000 ","sourceMap":"1081:4011:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2101:127;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3495:136;;;;;;:::i;:::-;;:::i;3733:149::-;;;;;;:::i;:::-;;:::i;3042:125::-;;;;;;:::i;:::-;;:::i;4463:627::-;;;;;;:::i;:::-;;:::i;2586:140::-;;;;;;:::i;:::-;;:::i;3260:143::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2816:131::-;;;;;;:::i;:::-;;:::i;2338:157::-;;;:::i;2101:127::-;2201:20;2101:127;:::o;3495:136::-;3564:6;3607:5;3589:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3582:42;;3495:136;;;;:::o;3733:149::-;3804:7;3830:45;3855:18;3868:4;3855:12;:18::i;3042:125::-;3139:21;;;;3113:7;3139:21;;;:14;:21;;;;;;;;3042:125::o;4463:627::-;4538:30;:16;;;4511:7;4538:16;;;:10;:16;;;;;;4511:7;;4538:16;:30;4530:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4604:13;4620:43;4641:20;4620:12;:43::i;:::-;4604:59;;4673:16;4692:56;4713:33;4692:12;:56::i;:::-;4759:47;;;;;4673:75;;-1:-1:-1;4759:40:88;;;;;;:47;;4800:5;;4759:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4816:63:88;;;;;:35;;;;-1:-1:-1;4816:35:88;;-1:-1:-1;4816:63:88;;4852:4;;4858:8;;1400:37;;4816:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;4890:26:88;;;;:19;:26;;;;;;;;;;;:33;;;;4919:4;4890:33;;;4933:16;;;;;;:10;:16;;;;;:24;;;;;;;;;;;4967:21;;;:14;:21;;;;;;;:32;;;;;;;;;;;;;;;5014:46;;;;;;4967:32;;5014:46;:::i;:::-;;;;;;;;-1:-1:-1;5078:5:88;4463:627;-1:-1:-1;;4463:627:88:o;2586:140::-;2702:16;;;;2652:15;2702:16;;;:10;:16;;;;;;;;2586:140::o;3260:143::-;3364:32;;3341:4;3364:32;;;:22;:32;;;;;;;;;3260:143::o;2816:131::-;2914:26;;2891:4;2914:26;;;;;;;;;;;;;;2816:131::o;2338:157::-;2455:33;2338:157;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;313:241:-1:-;;417:2;405:9;396:7;392:23;388:32;385:2;;;-1:-1;;423:12;385:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;475:63;379:175;-1:-1;;;379:175::o;561:293::-;;691:2;679:9;670:7;666:23;662:32;659:2;;;-1:-1;;697:12;659:2;241:6;235:13;253:48;295:5;253:48;:::i;2401:222::-;5588:42;5577:54;;;;932:37;;2528:2;2513:18;;2499:124::o;2630:444::-;5588:42;5577:54;;;932:37;;5577:54;;;;2977:2;2962:18;;932:37;3060:2;3045:18;;1163:37;;;;2813:2;2798:18;;2784:290::o;3081:210::-;5297:13;;5290:21;1046:34;;3202:2;3187:18;;3173:118::o;4115:416::-;4315:2;4329:47;;;1966:2;4300:18;;;5065:19;2002:22;5105:14;;;1982:43;2044:12;;;4286:245::o;4538:416::-;4738:2;4752:47;;;2295:2;4723:18;;;5065:19;2331:24;5105:14;;;2311:45;2375:12;;;4709:245::o;6567:117::-;5588:42;6654:5;5577:54;6629:5;6626:35;6616:2;;6675:1;;6665:12;6616:2;6610:74;:::o"},"methodIdentifiers":{"create(address)":"9ed93318","getChildChainStreamerImplementation()":"f9e0a13e","getGaugeImplementation()":"39312dee","getGaugePool(address)":"744a65dd","getGaugeStreamer(address)":"90b20087","getPoolGauge(address)":"a8ea6875","getPoolStreamer(address)":"8a4ffeb0","isGaugeFromFactory(address)":"ce3cc8bd","isStreamerFromFactory(address)":"cbda9327"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ILiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"contract IChildChainStreamer\",\"name\":\"childChainStreamer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"streamer\",\"type\":\"address\"}],\"name\":\"RewardsOnlyGaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChildChainStreamerImplementation\",\"outputs\":[{\"internalType\":\"contract IChildChainStreamer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"contract ILiquidityGauge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"getGaugePool\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"getGaugeStreamer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolGauge\",\"outputs\":[{\"internalType\":\"contract ILiquidityGauge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolStreamer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"streamer\",\"type\":\"address\"}],\"name\":\"isStreamerFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address)\":{\"details\":\"As anyone can register arbitrary Balancer pools with the Vault, it's impossible to prove onchain that `pool` is a \\\"valid\\\" deployment. Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController. This factory disallows deploying multiple gauges for a single pool.\",\"params\":{\"pool\":\"The address of the pool for which to deploy a gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address)\":{\"notice\":\"Deploys a new gauge for a Balancer pool.\"},\"getChildChainStreamerImplementation()\":{\"notice\":\"Returns the address of the implementation used for streamer deployments.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"getGaugePool(address)\":{\"notice\":\"Returns the address of the pool which `gauge` belongs.\"},\"getGaugeStreamer(address)\":{\"notice\":\"Returns the address of the streamer belonging to `gauge`.\"},\"getPoolGauge(address)\":{\"notice\":\"Returns the address of the gauge belonging to `pool`.\"},\"getPoolStreamer(address)\":{\"notice\":\"Returns the address of the streamer belonging to `pool`'s gauge.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"},\"isStreamerFromFactory(address)\":{\"notice\":\"Returns true if `streamer` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ChildChainLiquidityGaugeFactory.sol\":\"ChildChainLiquidityGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainLiquidityGaugeFactory.sol\":{\"keccak256\":\"0x842d0fc23e9bc0c59c2c11d042a409328533e4424578c96727d33db8092bf51a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://50a546df376e1772a1611dfa17d0e35adf29cdae502df736f65c67c4b94c0188\",\"dweb:/ipfs/QmatAq7AvGfnZQ7xDYgPUk5obubqJkJWpFoLE8LPFqccsf\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainStreamer.sol\":{\"keccak256\":\"0x3cf2370032a789025cffe8d0c613274213fd4e1ceb88cef1c2b039a6d0d08261\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1788ecb804b061fa04678ce311020d66e25b201cf18d452ea290bbc9af12e504\",\"dweb:/ipfs/Qmf84ANUiZtoZHEsbymn7NSZSGikMovYZUVqiPHwVrbBPJ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardsOnlyGauge.sol\":{\"keccak256\":\"0x8c09c3f372e07adf790d55607401dfa60d8ec2b591f39de772efdf887d965d11\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6cbfa8f8f004ec1cc00739f51bd00763d08600e0bf827c1be4cc21a4afb26874\",\"dweb:/ipfs/QmTxDYJA8y2cJdxHfCq6NLK812WGnxFehTF9bW4n8xa1zx\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"contracts/gauges/ChildChainLiquidityGaugeFactory.sol\":{\"keccak256\":\"0x49457bc2e1f6e9b2e2b53ab30251a337ae35453414aca68cf42548387aaff8d1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4edd98f1050008da25766151b852726a7213ea494559ef8e9fcbc9648187949d\",\"dweb:/ipfs/QmXmZFKzi7dvmXGU7G3sHZ7jhoZw5BYTAZUoTqUUcPjFXJ\"]}},\"version\":1}"}},"contracts/gauges/StakelessGauge.sol":{"StakelessGauge":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/StakelessGauge.sol\":\"StakelessGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]}},\"version\":1}"}},"contracts/gauges/StakelessGaugeCheckpointer.sol":{"StakelessGaugeCheckpointer":{"abi":[{"inputs":[{"internalType":"contract IGaugeAdder","name":"gaugeAdder","type":"address"},{"internalType":"contract IAuthorizerAdaptorEntrypoint","name":"authorizerAdaptorEntrypoint","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IStakelessGauge","name":"gauge","type":"address"},{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"}],"name":"GaugeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IStakelessGauge","name":"gauge","type":"address"},{"indexed":true,"internalType":"string","name":"indexedGaugeType","type":"string"},{"indexed":false,"internalType":"string","name":"gaugeType","type":"string"}],"name":"GaugeRemoved","type":"event"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"addGauges","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"addGaugesWithVerifiedType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"checkpointAllGaugesAboveRelativeWeight","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string[]","name":"gaugeTypes","type":"string[]"},{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"checkpointGaugesOfTypesAboveRelativeWeight","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string[]","name":"gaugeTypes","type":"string[]"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"checkpointMultipleGauges","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"checkpointMultipleGaugesOfMatchingType","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge","name":"gauge","type":"address"}],"name":"checkpointSingleGauge","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeAdder","outputs":[{"internalType":"contract IGaugeAdder","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getGaugeAtIndex","outputs":[{"internalType":"contract IStakelessGauge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeTypes","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"gaugeTypes","type":"string[]"},{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"getGaugeTypesBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRoundedDownBlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge","name":"gauge","type":"address"}],"name":"getSingleBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minRelativeWeight","type":"uint256"}],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"getTotalGauges","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge","name":"gauge","type":"address"}],"name":"hasGauge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"}],"name":"isValidGaugeType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"gaugeType","type":"string"},{"internalType":"contract IStakelessGauge[]","name":"gauges","type":"address[]"}],"name":"removeGauges","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101206040523480156200001257600080fd5b50604051620030ca380380620030ca83398101604081905262000035916200016c565b806001600160a01b0316638d928af86040518163ffffffff1660e01b815260040160206040518083038186803b1580156200006f57600080fd5b505afa15801562000084573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000aa9190620001aa565b6001600055306080526001600160601b0319606091821b811660a05283821b811660e0529082901b1660c05260408051632c6f4d6f60e11b815290516001600160a01b038416916358de9ade916004808301926020929190829003018186803b1580156200011757600080fd5b505afa1580156200012c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001529190620001aa565b60601b6001600160601b0319166101005250620001e99050565b600080604083850312156200017f578182fd5b82516200018c81620001d0565b60208401519092506200019f81620001d0565b809150509250929050565b600060208284031215620001bc578081fd5b8151620001c981620001d0565b9392505050565b6001600160a01b0381168114620001e657600080fd5b50565b60805160a05160601c60c05160601c60e05160601c6101005160601c612e3b6200028f600039806117915280611b795280611c6b5280611e3f5280611f295280611fd052508061041652806104a8528061072a52806108525280610a7c5280610af55280610c425280610d4d5280610ec15280610f665280611091528061118c52806119375250806113e052806122df525080610c09525080610bb95250612e3b6000f3fe60806040526004361061016a5760003560e01c80637d0a6616116100cb578063a9a7f87e1161007f578063c91be04311610059578063c91be04314610376578063d8dba2ce14610396578063f7178b88146103b65761016a565b8063a9a7f87e1461031f578063aaabadc51461033f578063afcb1a86146103545761016a565b8063851c1bb3116100b0578063851c1bb3146102d75780638d928af8146102f7578063975104961461030c5761016a565b80637d0a6616146102b1578063804d17dc146102c45761016a565b806346583adf116101225780634db34d2a116101075780634db34d2a1461025c57806373ebd0601461027c5780637c1fef511461029c5761016a565b806346583adf146102345780634a3a1e11146102495761016a565b806327f791071161015357806327f79107146101d25780632adbe5ac146101ff578063435903081461021f5761016a565b806316e772bc1461016f57806327cb2a3b146101a5575b600080fd5b34801561017b57600080fd5b5061018f61018a366004612726565b6103d6565b60405161019c9190612a4c565b60405180910390f35b3480156101b157600080fd5b506101c56101c0366004612871565b6104a3565b60405161019c9190612950565b3480156101de57600080fd5b506101f26101ed3660046128a5565b6105a7565b60405161019c9190612a57565b34801561020b57600080fd5b506101f261021a366004612821565b6105c6565b61023261022d3660046127ec565b610602565b005b34801561024057600080fd5b506101f261068a565b6102326102573660046125b7565b610699565b34801561026857600080fd5b506101f2610277366004612726565b610725565b34801561028857600080fd5b50610232610297366004612759565b610813565b3480156102a857600080fd5b506101c5610a7a565b6102326102bf366004612821565b610a9e565b6102326102d23660046128a5565b610ae9565b3480156102e357600080fd5b506101f26102f236600461267b565b610bb5565b34801561030357600080fd5b506101c5610c07565b61023261031a366004612618565b610c2b565b34801561032b57600080fd5b506101f261033a366004612618565b610d3c565b34801561034b57600080fd5b506101c5610e36565b34801561036057600080fd5b50610369610ebd565b60405161019c91906129ce565b34801561038257600080fd5b5061018f610391366004612821565b610f61565b3480156103a257600080fd5b506102326103b1366004612759565b611052565b3480156103c257600080fd5b506102326103d1366004612759565b61114d565b6040517f16e772bc00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc9061044b908590600401612a8c565b60206040518083038186803b15801561046357600080fd5b505afa158015610477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049b919061265b565b90505b919050565b6000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b81526004016104ff9190612a8c565b60206040518083038186803b15801561051757600080fd5b505afa15801561052b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054f919061265b565b6105745760405162461bcd60e51b815260040161056b90612c81565b60405180910390fd5b61059d836001866040516105889190612931565b9081526040519081900360200190209061123a565b91505b5092915050565b600060606105b3610ebd565b90506105bf818461125f565b9392505050565b600082826105d48282610f61565b6105f05760405162461bcd60e51b815260040161056b90612c4a565b6105f98461129b565b95945050505050565b61060a611326565b805160005b81811015610674576106348484838151811061062757fe5b6020026020010151610f61565b6106505760405162461bcd60e51b815260040161056b90612c4a565b61066c83828151811061065f57fe5b602002602001015161133f565b60010161060f565b505061067e611470565b610686611481565b5050565b6000610694611488565b905090565b6106a1611326565b80518251146106c25760405162461bcd60e51b815260040161056b90612afc565b805160005b81811015610674576106f28482815181106106de57fe5b602002602001015184838151811061062757fe5b61070e5760405162461bcd60e51b815260040161056b90612c4a565b61071d83828151811061065f57fe5b6001016106c7565b6000817f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b81526004016107819190612a8c565b60206040518083038186803b15801561079957600080fd5b505afa1580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d1919061265b565b6107ed5760405162461bcd60e51b815260040161056b90612c81565b6105bf6001846040516108009190612931565b908152602001604051809103902061149d565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc90610887908490600401612a8c565b60206040518083038186803b15801561089f57600080fd5b505afa1580156108b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d7919061265b565b6108f35760405162461bcd60e51b815260040161056b90612c81565b60006001856040516109059190612931565b9081526020016040518091039020905060005b83811015610a7257600085858381811061092e57fe5b9050602002016020810190610943919061270a565b90508073ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b815260040160206040518083038186803b15801561098b57600080fd5b505afa15801561099f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c3919061265b565b6109df5760405162461bcd60e51b815260040161056b90612cb8565b6109e983826114a1565b610a055760405162461bcd60e51b815260040161056b90612bb6565b86604051610a139190612931565b60405180910390208173ffffffffffffffffffffffffffffffffffffffff167fb87757e0365ca4f80cc1f429f422c0ea7ec26bbd3e5778727e77c809462aad0289604051610a619190612a8c565b60405180910390a350600101610918565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610aa6611326565b8181610ab28282610f61565b610ace5760405162461bcd60e51b815260040161056b90612c4a565b610ad78361133f565b610adf611470565b5050610686611481565b610af1611326565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663afcb1a866040518163ffffffff1660e01b815260040160006040518083038186803b158015610b5957600080fd5b505afa158015610b6d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b95919081019061252e565b9050610ba1818361164f565b50610baa611470565b610bb2611481565b50565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610bea929190612901565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610c33611326565b8160005b8151811015610d20577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc838381518110610c8857fe5b60200260200101516040518263ffffffff1660e01b8152600401610cac9190612a8c565b60206040518083038186803b158015610cc457600080fd5b505afa158015610cd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfc919061265b565b610d185760405162461bcd60e51b815260040161056b90612c81565b600101610c37565b50610d2b838361164f565b610d33611470565b50610686611481565b60008260005b8151811015610e2b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc838381518110610d9357fe5b60200260200101516040518263ffffffff1660e01b8152600401610db79190612a8c565b60206040518083038186803b158015610dcf57600080fd5b505afa158015610de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e07919061265b565b610e235760405162461bcd60e51b815260040161056b90612c81565b600101610d42565b5061059d848461125f565b6000610e40610c07565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8557600080fd5b505afa158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069491906126ee565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663afcb1a866040518163ffffffff1660e01b815260040160006040518083038186803b158015610f2557600080fd5b505afa158015610f39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610694919081019061252e565b6000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b8152600401610fbd9190612a8c565b60206040518083038186803b158015610fd557600080fd5b505afa158015610fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100d919061265b565b6110295760405162461bcd60e51b815260040161056b90612c81565b61059d8360018660405161103d9190612931565b9081526040519081900360200190209061168d565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc906110c6908490600401612a8c565b60206040518083038186803b1580156110de57600080fd5b505afa1580156110f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611116919061265b565b6111325760405162461bcd60e51b815260040161056b90612c81565b61113a6116bb565b6111478484846001611701565b50505050565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc906111c1908490600401612a8c565b60206040518083038186803b1580156111d957600080fd5b505afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611211919061265b565b61122d5760405162461bcd60e51b815260040161056b90612c81565b6111478484846000611701565b815460009061124c9083106064611acd565b6112568383611adb565b90505b92915050565b6000805b83518110156105a057606084828151811061127a57fe5b6020026020010151905061128e8185611b15565b9092019150600101611263565b60008173ffffffffffffffffffffffffffffffffffffffff1663b02452256040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e357600080fd5b505afa925050508015611313575060408051601f3d908101601f19168201909252611310918101906128bd565b60015b61131f5750600061049e565b905061049e565b61133860026000541415610190611acd565b6002600055565b600061134a8261129b565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc2c4c5c10000000000000000000000000000000000000000000000000000000017905291517f4036176a00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692634036176a92859261141592889201612971565b6000604051808303818588803b15801561142e57600080fd5b505af1158015611442573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261146b91908101906126bb565b505050565b478015610bb257610bb23382611d34565b6001600055565b6000600162093a8042040362093a8002905090565b5490565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205480156116455783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191018082146115aa57600086600001828154811061150f57fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff9091169150819088908590811061154557fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b85548690806115b557fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061125992505050565b6000915050611259565b6000611659611488565b905060005b83518110156111475761168584828151811061167657fe5b60200260200101518484611dbb565b60010161165e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b60006116ea6000357fffffffff0000000000000000000000000000000000000000000000000000000016610bb5565b9050610bb26116f98233612084565b610191611acd565b60006001856040516117139190612931565b9081526020016040518091039020905060005b83811015610a7257600085858381811061173c57fe5b9050602002016020810190611751919061270a565b6040517f61df1bf900000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906361df1bf9906117c6908490600401612950565b60206040518083038186803b1580156117de57600080fd5b505afa1580156117f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611816919061265b565b6118325760405162461bcd60e51b815260040161056b90612a9f565b8073ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b815260040160206040518083038186803b15801561187857600080fd5b505afa15801561188c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b0919061265b565b156118cd5760405162461bcd60e51b815260040161056b90612c13565b6118d7838261211a565b6118f35760405162461bcd60e51b815260040161056b90612cef565b8380611a4457506040517f572cb6a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063572cb6a59061196c908a90600401612a8c565b60206040518083038186803b15801561198457600080fd5b505afa158015611998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bc91906126ee565b73ffffffffffffffffffffffffffffffffffffffff1663ce3cc8bd826040518263ffffffff1660e01b81526004016119f49190612950565b60206040518083038186803b158015611a0c57600080fd5b505afa158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a44919061265b565b611a605760405162461bcd60e51b815260040161056b90612b59565b86604051611a6e9190612931565b60405180910390208173ffffffffffffffffffffffffffffffffffffffff167fbd3a33b3738a69bcfb84219d93fb0b1b2d91efbf2e5bef206c9af4122290fb5489604051611abc9190612a8c565b60405180910390a350600101611726565b8161068657610686816121a2565b6000826000018281548110611aec57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b600080611b20611488565b90506000611b376001866040516108009190612931565b90506000600186604051611b4b9190612931565b9081526020016040518091039020905060005b82811015611d2a576000611b728383611adb565b90506000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4d7a250846040518263ffffffff1660e01b8152600401611bd09190612950565b60206040518083038186803b158015611be857600080fd5b505afa158015611bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2091906128bd565b10159050808015611cf457506040517fd3078c94000000000000000000000000000000000000000000000000000000008152889073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d3078c9490611ca29086908b906004016129a8565b60206040518083038186803b158015611cba57600080fd5b505afa158015611cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf291906128bd565b105b15611d00575050611d22565b6000611d0b8361129b565b905080611d1a57505050611d2a565b969096019550505b600101611b5e565b5050505092915050565b611d43814710156101a3611acd565b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611d699061294d565b60006040518083038185875af1925050503d8060008114611da6576040519150601f19603f3d011682016040523d82523d6000602084013e611dab565b606091505b5050905061146b816101a4611acd565b6000600184604051611dcd9190612931565b908152602001604051809103902090506000611de88261149d565b905080611df657505061146b565b6000611e0a611e058483611adb565b61129b565b1590506123c981611e1d576121cc611e21565b61224c5b905060005b8381101561207a576000611e3a8683611adb565b9050867f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4d7a250836040518263ffffffff1660e01b8152600401611e969190612950565b60206040518083038186803b158015611eae57600080fd5b505afa158015611ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee691906128bd565b1015611f91576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e523790611f5e908490600401612950565b600060405180830381600087803b158015611f7857600080fd5b505af1158015611f8c573d6000803e3d6000fd5b505050505b6040517fd3078c94000000000000000000000000000000000000000000000000000000008152889073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d3078c94906120079085908c906004016129a8565b60206040518083038186803b15801561201f57600080fd5b505afa158015612033573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205791906128bd565b10156120635750612072565b612070818463ffffffff16565b505b600101611e26565b5050505050505050565b600061208e610e36565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b81526004016120ca93929190612a60565b60206040518083038186803b1580156120e257600080fd5b505afa1580156120f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611256919061265b565b6000612126838361168d565b61219a57508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155611259565b506000611259565b610bb2817f42414c0000000000000000000000000000000000000000000000000000000000612368565b60008173ffffffffffffffffffffffffffffffffffffffff1663b02452256040518163ffffffff1660e01b815260040160206040518083038186803b15801561221457600080fd5b505afa158015612228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134a91906128bd565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc2c4c5c10000000000000000000000000000000000000000000000000000000017905291517f4036176a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692634036176a9261231292869201612971565b600060405180830381600087803b15801561232c57600080fd5b505af1158015612340573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261068691908101906126bb565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5bfe5b600082601f8301126123db578081fd5b81356123ee6123e982612d73565b612d4c565b81815291506020808301908481018184028601820187101561240f57600080fd5b60005b8481101561243757813561242581612de3565b84529282019290820190600101612412565b505050505092915050565b600082601f830112612452578081fd5b81356124606123e982612d73565b818152915060208083019084810160005b8481101561243757612488888484358a01016124e0565b84529282019290820190600101612471565b600082601f8301126124aa578081fd5b81516124b86123e982612d93565b91508082528360208285010111156124cf57600080fd5b6105a0816020840160208601612db7565b600082601f8301126124f0578081fd5b81356124fe6123e982612d93565b915080825283602082850101111561251557600080fd5b8060208401602084013760009082016020015292915050565b60006020808385031215612540578182fd5b825167ffffffffffffffff811115612556578283fd5b8301601f81018513612566578283fd5b80516125746123e982612d73565b81815283810190838501865b848110156125a9576125978a88845189010161249a565b84529286019290860190600101612580565b509098975050505050505050565b600080604083850312156125c9578081fd5b823567ffffffffffffffff808211156125e0578283fd5b6125ec86838701612442565b93506020850135915080821115612601578283fd5b5061260e858286016123cb565b9150509250929050565b6000806040838503121561262a578182fd5b823567ffffffffffffffff811115612640578283fd5b61264c85828601612442565b95602094909401359450505050565b60006020828403121561266c578081fd5b815180151581146105bf578182fd5b60006020828403121561268c578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146105bf578182fd5b6000602082840312156126cc578081fd5b815167ffffffffffffffff8111156126e2578182fd5b61059d8482850161249a565b6000602082840312156126ff578081fd5b81516105bf81612de3565b60006020828403121561271b578081fd5b81356105bf81612de3565b600060208284031215612737578081fd5b813567ffffffffffffffff81111561274d578182fd5b61059d848285016124e0565b60008060006040848603121561276d578081fd5b833567ffffffffffffffff80821115612784578283fd5b612790878388016124e0565b945060208601359150808211156127a5578283fd5b818601915086601f8301126127b8578283fd5b8135818111156127c6578384fd5b87602080830285010111156127d9578384fd5b6020830194508093505050509250925092565b600080604083850312156127fe578182fd5b823567ffffffffffffffff80821115612815578384fd5b6125ec868387016124e0565b60008060408385031215612833578182fd5b823567ffffffffffffffff811115612849578283fd5b612855858286016124e0565b925050602083013561286681612de3565b809150509250929050565b60008060408385031215612883578182fd5b823567ffffffffffffffff811115612899578283fd5b61264c858286016124e0565b6000602082840312156128b6578081fd5b5035919050565b6000602082840312156128ce578081fd5b5051919050565b600081518084526128ed816020860160208601612db7565b601f01601f19169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b60008251612943818460208701612db7565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff84168252604060208301526129a060408301846128d5565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015612a3f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452612a2d8583516128d5565b945092850192908501906001016129f3565b5092979650505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60006020825261125660208301846128d5565b6020808252602a908201527f476175676520776173206e6f7420616464656420746f2074686520476175676560408201527f436f6e74726f6c6c657200000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d69736d61746368206265747765656e20676175676520747970657320616e6460408201527f2061646472657373657300000000000000000000000000000000000000000000606082015260800190565b6020808252602e908201527f476175676520646f6573206e6f7420636f72726573706f6e6420746f2074686560408201527f2073656c65637465642074797065000000000000000000000000000000000000606082015260800190565b60208082526027908201527f476175676520776173206e6f7420616464656420746f2074686520636865636b60408201527f706f696e74657200000000000000000000000000000000000000000000000000606082015260800190565b60208082526010908201527f476175676520776173206b696c6c656400000000000000000000000000000000604082015260600190565b6020808252600f908201527f4761756765206e6f742061646465640000000000000000000000000000000000604082015260600190565b60208082526012908201527f496e76616c696420676175676520747970650000000000000000000000000000604082015260600190565b60208082526014908201527f476175676520776173206e6f74206b696c6c6564000000000000000000000000604082015260600190565b60208082526027908201527f476175676520616c726561647920616464656420746f2074686520636865636b60408201527f706f696e74657200000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff81118282101715612d6b57600080fd5b604052919050565b600067ffffffffffffffff821115612d89578081fd5b5060209081020190565b600067ffffffffffffffff821115612da9578081fd5b50601f01601f191660200190565b60005b83811015612dd2578181015183820152602001612dba565b838111156111475750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114610bb257600080fdfea2646970667358221220ad96561ddd7ce6b409b5587999c89b40f38d1074f98055464efae03c87603b7564736f6c63430007010033","opcodes":"PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x30CA CODESIZE SUB DUP1 PUSH3 0x30CA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x16C JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8D928AF8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xAA SWAP2 SWAP1 PUSH3 0x1AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE DUP4 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP1 DUP3 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x12C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x152 SWAP2 SWAP1 PUSH3 0x1AA JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE POP PUSH3 0x1E9 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x17F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x18C DUP2 PUSH3 0x1D0 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x19F DUP2 PUSH3 0x1D0 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1BC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x1C9 DUP2 PUSH3 0x1D0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x2E3B PUSH3 0x28F PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1791 MSTORE DUP1 PUSH2 0x1B79 MSTORE DUP1 PUSH2 0x1C6B MSTORE DUP1 PUSH2 0x1E3F MSTORE DUP1 PUSH2 0x1F29 MSTORE DUP1 PUSH2 0x1FD0 MSTORE POP DUP1 PUSH2 0x416 MSTORE DUP1 PUSH2 0x4A8 MSTORE DUP1 PUSH2 0x72A MSTORE DUP1 PUSH2 0x852 MSTORE DUP1 PUSH2 0xA7C MSTORE DUP1 PUSH2 0xAF5 MSTORE DUP1 PUSH2 0xC42 MSTORE DUP1 PUSH2 0xD4D MSTORE DUP1 PUSH2 0xEC1 MSTORE DUP1 PUSH2 0xF66 MSTORE DUP1 PUSH2 0x1091 MSTORE DUP1 PUSH2 0x118C MSTORE DUP1 PUSH2 0x1937 MSTORE POP DUP1 PUSH2 0x13E0 MSTORE DUP1 PUSH2 0x22DF MSTORE POP DUP1 PUSH2 0xC09 MSTORE POP DUP1 PUSH2 0xBB9 MSTORE POP PUSH2 0x2E3B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x16A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7D0A6616 GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xA9A7F87E GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xC91BE043 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC91BE043 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0xD8DBA2CE EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0xF7178B88 EQ PUSH2 0x3B6 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0xA9A7F87E EQ PUSH2 0x31F JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x33F JUMPI DUP1 PUSH4 0xAFCB1A86 EQ PUSH2 0x354 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x97510496 EQ PUSH2 0x30C JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x7D0A6616 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x804D17DC EQ PUSH2 0x2C4 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x46583ADF GT PUSH2 0x122 JUMPI DUP1 PUSH4 0x4DB34D2A GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x4DB34D2A EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x73EBD060 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x7C1FEF51 EQ PUSH2 0x29C JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x46583ADF EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x4A3A1E11 EQ PUSH2 0x249 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x27F79107 GT PUSH2 0x153 JUMPI DUP1 PUSH4 0x27F79107 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0x2ADBE5AC EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0x43590308 EQ PUSH2 0x21F JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x16E772BC EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x27CB2A3B EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18F PUSH2 0x18A CALLDATASIZE PUSH1 0x4 PUSH2 0x2726 JUMP JUMPDEST PUSH2 0x3D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2A4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0x1C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2871 JUMP JUMPDEST PUSH2 0x4A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x28A5 JUMP JUMPDEST PUSH2 0x5A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2A57 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x21A CALLDATASIZE PUSH1 0x4 PUSH2 0x2821 JUMP JUMPDEST PUSH2 0x5C6 JUMP JUMPDEST PUSH2 0x232 PUSH2 0x22D CALLDATASIZE PUSH1 0x4 PUSH2 0x27EC JUMP JUMPDEST PUSH2 0x602 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x68A JUMP JUMPDEST PUSH2 0x232 PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0x25B7 JUMP JUMPDEST PUSH2 0x699 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x277 CALLDATASIZE PUSH1 0x4 PUSH2 0x2726 JUMP JUMPDEST PUSH2 0x725 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x297 CALLDATASIZE PUSH1 0x4 PUSH2 0x2759 JUMP JUMPDEST PUSH2 0x813 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0xA7A JUMP JUMPDEST PUSH2 0x232 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x2821 JUMP JUMPDEST PUSH2 0xA9E JUMP JUMPDEST PUSH2 0x232 PUSH2 0x2D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x28A5 JUMP JUMPDEST PUSH2 0xAE9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x2F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x267B JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0xC07 JUMP JUMPDEST PUSH2 0x232 PUSH2 0x31A CALLDATASIZE PUSH1 0x4 PUSH2 0x2618 JUMP JUMPDEST PUSH2 0xC2B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x33A CALLDATASIZE PUSH1 0x4 PUSH2 0x2618 JUMP JUMPDEST PUSH2 0xD3C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0xE36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0xEBD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x29CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18F PUSH2 0x391 CALLDATASIZE PUSH1 0x4 PUSH2 0x2821 JUMP JUMPDEST PUSH2 0xF61 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x3B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2759 JUMP JUMPDEST PUSH2 0x1052 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x3D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2759 JUMP JUMPDEST PUSH2 0x114D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x44B SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x477 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x49B SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4FF SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x54F SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x574 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x59D DUP4 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x588 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SWAP1 PUSH2 0x123A JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x5B3 PUSH2 0xEBD JUMP JUMPDEST SWAP1 POP PUSH2 0x5BF DUP2 DUP5 PUSH2 0x125F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH2 0x5D4 DUP3 DUP3 PUSH2 0xF61 JUMP JUMPDEST PUSH2 0x5F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0x5F9 DUP5 PUSH2 0x129B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x60A PUSH2 0x1326 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x674 JUMPI PUSH2 0x634 DUP5 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x627 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xF61 JUMP JUMPDEST PUSH2 0x650 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0x66C DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x65F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x133F JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x60F JUMP JUMPDEST POP POP PUSH2 0x67E PUSH2 0x1470 JUMP JUMPDEST PUSH2 0x686 PUSH2 0x1481 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x694 PUSH2 0x1488 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6A1 PUSH2 0x1326 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x6C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2AFC JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x674 JUMPI PUSH2 0x6F2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6DE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x627 JUMPI INVALID JUMPDEST PUSH2 0x70E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0x71D DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x65F JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x6C7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x781 SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7D1 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x7ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x5BF PUSH1 0x1 DUP5 PUSH1 0x40 MLOAD PUSH2 0x800 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH2 0x149D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x887 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x89F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8D7 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x8F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x40 MLOAD PUSH2 0x905 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x92E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x943 SWAP2 SWAP1 PUSH2 0x270A JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9C868AC0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x98B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x99F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9C3 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x9DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2CB8 JUMP JUMPDEST PUSH2 0x9E9 DUP4 DUP3 PUSH2 0x14A1 JUMP JUMPDEST PUSH2 0xA05 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD PUSH2 0xA13 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xB87757E0365CA4F80CC1F429F422C0EA7EC26BBD3E5778727E77C809462AAD02 DUP10 PUSH1 0x40 MLOAD PUSH2 0xA61 SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 ADD PUSH2 0x918 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xAA6 PUSH2 0x1326 JUMP JUMPDEST DUP2 DUP2 PUSH2 0xAB2 DUP3 DUP3 PUSH2 0xF61 JUMP JUMPDEST PUSH2 0xACE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0xAD7 DUP4 PUSH2 0x133F JUMP JUMPDEST PUSH2 0xADF PUSH2 0x1470 JUMP JUMPDEST POP POP PUSH2 0x686 PUSH2 0x1481 JUMP JUMPDEST PUSH2 0xAF1 PUSH2 0x1326 JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAFCB1A86 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xB95 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x252E JUMP JUMPDEST SWAP1 POP PUSH2 0xBA1 DUP2 DUP4 PUSH2 0x164F JUMP JUMPDEST POP PUSH2 0xBAA PUSH2 0x1470 JUMP JUMPDEST PUSH2 0xBB2 PUSH2 0x1481 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBEA SWAP3 SWAP2 SWAP1 PUSH2 0x2901 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xC33 PUSH2 0x1326 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xD20 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xC88 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCAC SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCFC SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0xD18 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xC37 JUMP JUMPDEST POP PUSH2 0xD2B DUP4 DUP4 PUSH2 0x164F JUMP JUMPDEST PUSH2 0xD33 PUSH2 0x1470 JUMP JUMPDEST POP PUSH2 0x686 PUSH2 0x1481 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xE2B JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD93 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDB7 SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE07 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0xE23 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD42 JUMP JUMPDEST POP PUSH2 0x59D DUP5 DUP5 PUSH2 0x125F JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE40 PUSH2 0xC07 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x694 SWAP2 SWAP1 PUSH2 0x26EE JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAFCB1A86 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x694 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x252E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFBD SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFE9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x100D SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1029 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x59D DUP4 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x103D SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SWAP1 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x10C6 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1116 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1132 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x113A PUSH2 0x16BB JUMP JUMPDEST PUSH2 0x1147 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x1701 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x11C1 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1211 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x122D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x1147 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x1701 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x124C SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0x1ACD JUMP JUMPDEST PUSH2 0x1256 DUP4 DUP4 PUSH2 0x1ADB JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x5A0 JUMPI PUSH1 0x60 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x127A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x128E DUP2 DUP6 PUSH2 0x1B15 JUMP JUMPDEST SWAP1 SWAP3 ADD SWAP2 POP PUSH1 0x1 ADD PUSH2 0x1263 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB0245225 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1313 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1310 SWAP2 DUP2 ADD SWAP1 PUSH2 0x28BD JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x131F JUMPI POP PUSH1 0x0 PUSH2 0x49E JUMP JUMPDEST SWAP1 POP PUSH2 0x49E JUMP JUMPDEST PUSH2 0x1338 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x134A DUP3 PUSH2 0x129B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP1 DUP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC2C4C5C100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x4036176A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 PUSH4 0x4036176A SWAP3 DUP6 SWAP3 PUSH2 0x1415 SWAP3 DUP9 SWAP3 ADD PUSH2 0x2971 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x142E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1442 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x146B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26BB JUMP JUMPDEST POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0xBB2 JUMPI PUSH2 0xBB2 CALLER DUP3 PUSH2 0x1D34 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH3 0x93A80 TIMESTAMP DIV SUB PUSH3 0x93A80 MUL SWAP1 POP SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1645 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x15AA JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x150F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x1545 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x15B5 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x1259 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x1259 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1659 PUSH2 0x1488 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1147 JUMPI PUSH2 0x1685 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1676 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP5 PUSH2 0x1DBB JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x165E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16EA PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0xBB5 JUMP JUMPDEST SWAP1 POP PUSH2 0xBB2 PUSH2 0x16F9 DUP3 CALLER PUSH2 0x2084 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1713 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x173C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1751 SWAP2 SWAP1 PUSH2 0x270A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x61DF1BF900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x61DF1BF9 SWAP1 PUSH2 0x17C6 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1816 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1832 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2A9F JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9C868AC0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1878 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x188C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18B0 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST ISZERO PUSH2 0x18CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C13 JUMP JUMPDEST PUSH2 0x18D7 DUP4 DUP3 PUSH2 0x211A JUMP JUMPDEST PUSH2 0x18F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2CEF JUMP JUMPDEST DUP4 DUP1 PUSH2 0x1A44 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x572CB6A500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x572CB6A5 SWAP1 PUSH2 0x196C SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1984 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1998 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19BC SWAP2 SWAP1 PUSH2 0x26EE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCE3CC8BD DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F4 SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A44 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1A60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2B59 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD PUSH2 0x1A6E SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xBD3A33B3738A69BCFB84219D93FB0B1B2D91EFBF2E5BEF206C9AF4122290FB54 DUP10 PUSH1 0x40 MLOAD PUSH2 0x1ABC SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 ADD PUSH2 0x1726 JUMP JUMPDEST DUP2 PUSH2 0x686 JUMPI PUSH2 0x686 DUP2 PUSH2 0x21A2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1AEC JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B20 PUSH2 0x1488 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B37 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x800 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1B4B SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1D2A JUMPI PUSH1 0x0 PUSH2 0x1B72 DUP4 DUP4 PUSH2 0x1ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA4D7A250 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BD0 SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C20 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT ISZERO SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x1CF4 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xD3078C9400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xD3078C94 SWAP1 PUSH2 0x1CA2 SWAP1 DUP7 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x29A8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CCE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CF2 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT JUMPDEST ISZERO PUSH2 0x1D00 JUMPI POP POP PUSH2 0x1D22 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D0B DUP4 PUSH2 0x129B JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1D1A JUMPI POP POP POP PUSH2 0x1D2A JUMP JUMPDEST SWAP7 SWAP1 SWAP7 ADD SWAP6 POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1B5E JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1D43 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x1D69 SWAP1 PUSH2 0x294D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1DA6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1DAB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x146B DUP2 PUSH2 0x1A4 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1DCD SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x1DE8 DUP3 PUSH2 0x149D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1DF6 JUMPI POP POP PUSH2 0x146B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E0A PUSH2 0x1E05 DUP5 DUP4 PUSH2 0x1ADB JUMP JUMPDEST PUSH2 0x129B JUMP JUMPDEST ISZERO SWAP1 POP PUSH2 0x23C9 DUP2 PUSH2 0x1E1D JUMPI PUSH2 0x21CC PUSH2 0x1E21 JUMP JUMPDEST PUSH2 0x224C JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x207A JUMPI PUSH1 0x0 PUSH2 0x1E3A DUP7 DUP4 PUSH2 0x1ADB JUMP JUMPDEST SWAP1 POP DUP7 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA4D7A250 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E96 SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1EE6 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT ISZERO PUSH2 0x1F91 JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x1F5E SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD3078C9400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xD3078C94 SWAP1 PUSH2 0x2007 SWAP1 DUP6 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x29A8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x201F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2033 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2057 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT ISZERO PUSH2 0x2063 JUMPI POP PUSH2 0x2072 JUMP JUMPDEST PUSH2 0x2070 DUP2 DUP5 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1E26 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208E PUSH2 0xE36 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20CA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1256 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2126 DUP4 DUP4 PUSH2 0x168D JUMP JUMPDEST PUSH2 0x219A JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1259 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1259 JUMP JUMPDEST PUSH2 0xBB2 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x2368 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB0245225 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2228 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x134A SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP1 DUP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC2C4C5C100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x4036176A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 PUSH4 0x4036176A SWAP3 PUSH2 0x2312 SWAP3 DUP7 SWAP3 ADD PUSH2 0x2971 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x232C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2340 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x686 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26BB JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST INVALID JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23DB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x23EE PUSH2 0x23E9 DUP3 PUSH2 0x2D73 JUMP JUMPDEST PUSH2 0x2D4C JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x240F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2437 JUMPI DUP2 CALLDATALOAD PUSH2 0x2425 DUP2 PUSH2 0x2DE3 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2412 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2452 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2460 PUSH2 0x23E9 DUP3 PUSH2 0x2D73 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2437 JUMPI PUSH2 0x2488 DUP9 DUP5 DUP5 CALLDATALOAD DUP11 ADD ADD PUSH2 0x24E0 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2471 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x24AA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x24B8 PUSH2 0x23E9 DUP3 PUSH2 0x2D93 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x24CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5A0 DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2DB7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x24F0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x24FE PUSH2 0x23E9 DUP3 PUSH2 0x2D93 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2515 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2540 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2556 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x2566 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2574 PUSH2 0x23E9 DUP3 PUSH2 0x2D73 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP7 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x25A9 JUMPI PUSH2 0x2597 DUP11 DUP9 DUP5 MLOAD DUP10 ADD ADD PUSH2 0x249A JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP7 ADD SWAP3 SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2580 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25C9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x25E0 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x25EC DUP7 DUP4 DUP8 ADD PUSH2 0x2442 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2601 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x260E DUP6 DUP3 DUP7 ADD PUSH2 0x23CB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x262A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2640 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x264C DUP6 DUP3 DUP7 ADD PUSH2 0x2442 JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x266C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5BF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x268C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x5BF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26CC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x26E2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x59D DUP5 DUP3 DUP6 ADD PUSH2 0x249A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26FF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x5BF DUP2 PUSH2 0x2DE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x271B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5BF DUP2 PUSH2 0x2DE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2737 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x274D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x59D DUP5 DUP3 DUP6 ADD PUSH2 0x24E0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x276D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2784 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2790 DUP8 DUP4 DUP9 ADD PUSH2 0x24E0 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x27A5 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x27B8 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x27C6 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x27D9 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x27FE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2815 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x25EC DUP7 DUP4 DUP8 ADD PUSH2 0x24E0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2833 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2849 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2855 DUP6 DUP3 DUP7 ADD PUSH2 0x24E0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2866 DUP2 PUSH2 0x2DE3 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2883 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2899 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x264C DUP6 DUP3 DUP7 ADD PUSH2 0x24E0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28B6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28CE JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x28ED DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2DB7 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2943 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2DB7 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x29A0 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x28D5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2A3F JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x2A2D DUP6 DUP4 MLOAD PUSH2 0x28D5 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x29F3 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1256 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x28D5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206E6F7420616464656420746F20746865204761756765 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x436F6E74726F6C6C657200000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x4D69736D61746368206265747765656E20676175676520747970657320616E64 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2061646472657373657300000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520646F6573206E6F7420636F72726573706F6E6420746F20746865 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2073656C65637465642074797065000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206E6F7420616464656420746F2074686520636865636B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x706F696E74657200000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206B696C6C656400000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH32 0x4761756765206E6F742061646465640000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676520747970650000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206E6F74206B696C6C6564000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520616C726561647920616464656420746F2074686520636865636B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x706F696E74657200000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2D6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2D89 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2DA9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DD2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2DBA JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1147 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xBB2 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD SWAP7 JUMP SAR 0xDD PUSH29 0xE6B409B5587999C89B40F38D1074F98055464EFAE03C87603B7564736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1660:16949:90:-:0;;;2081:339;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2207:27;-1:-1:-1;;;;;2207:36:90;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2070:1:63;1030:31:51;2175:22:63;1054:4:51;2049:46:46;;-1:-1:-1;;;;;;1073:14:51::1;::::0;;;;;::::1;::::0;2261:24:90;;;;;::::1;::::0;2295:58;;;;;::::1;::::0;2382:31:::1;::::0;;-1:-1:-1;;;2382:31:90;;;;-1:-1:-1;;;;;2261:24:90;::::1;::::0;2382:29:::1;::::0;:31:::1;::::0;;::::1;::::0;-1:-1:-1;;2382:31:90;;;;;;;2261:24;2382:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2363:50;::::0;-1:-1:-1;;;;;;2363:50:90;::::1;::::0;-1:-1:-1;1660:16949:90;;-1:-1:-1;1660:16949:90;755:507:-1;;;941:2;929:9;920:7;916:23;912:32;909:2;;;-1:-1;;947:12;909:2;319:6;313:13;331:52;377:5;331:52;:::i;:::-;1129:2;1214:22;;118:13;999:93;;-1:-1;136:68;118:13;136:68;:::i;:::-;1137:109;;;;903:359;;;;;:::o;1269:311::-;;1408:2;1396:9;1387:7;1383:23;1379:32;1376:2;;;-1:-1;;1414:12;1376:2;503:6;497:13;515:57;566:5;515:57;:::i;:::-;1466:98;1370:210;-1:-1;;;1370:210::o;2598:187::-;-1:-1;;;;;2532:54;;2692:70;;2682:2;;2776:1;;2766:12;2682:2;2676:109;:::o;:::-;1660:16949:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":3001}],"3611":[{"length":32,"start":3081}],"15225":[{"length":32,"start":5088},{"length":32,"start":8927}],"15227":[{"length":32,"start":1046},{"length":32,"start":1192},{"length":32,"start":1834},{"length":32,"start":2130},{"length":32,"start":2684},{"length":32,"start":2805},{"length":32,"start":3138},{"length":32,"start":3405},{"length":32,"start":3777},{"length":32,"start":3942},{"length":32,"start":4241},{"length":32,"start":4492},{"length":32,"start":6455}],"15229":[{"length":32,"start":6033},{"length":32,"start":7033},{"length":32,"start":7275},{"length":32,"start":7743},{"length":32,"start":7977},{"length":32,"start":8144}]},"linkReferences":{},"object":"60806040526004361061016a5760003560e01c80637d0a6616116100cb578063a9a7f87e1161007f578063c91be04311610059578063c91be04314610376578063d8dba2ce14610396578063f7178b88146103b65761016a565b8063a9a7f87e1461031f578063aaabadc51461033f578063afcb1a86146103545761016a565b8063851c1bb3116100b0578063851c1bb3146102d75780638d928af8146102f7578063975104961461030c5761016a565b80637d0a6616146102b1578063804d17dc146102c45761016a565b806346583adf116101225780634db34d2a116101075780634db34d2a1461025c57806373ebd0601461027c5780637c1fef511461029c5761016a565b806346583adf146102345780634a3a1e11146102495761016a565b806327f791071161015357806327f79107146101d25780632adbe5ac146101ff578063435903081461021f5761016a565b806316e772bc1461016f57806327cb2a3b146101a5575b600080fd5b34801561017b57600080fd5b5061018f61018a366004612726565b6103d6565b60405161019c9190612a4c565b60405180910390f35b3480156101b157600080fd5b506101c56101c0366004612871565b6104a3565b60405161019c9190612950565b3480156101de57600080fd5b506101f26101ed3660046128a5565b6105a7565b60405161019c9190612a57565b34801561020b57600080fd5b506101f261021a366004612821565b6105c6565b61023261022d3660046127ec565b610602565b005b34801561024057600080fd5b506101f261068a565b6102326102573660046125b7565b610699565b34801561026857600080fd5b506101f2610277366004612726565b610725565b34801561028857600080fd5b50610232610297366004612759565b610813565b3480156102a857600080fd5b506101c5610a7a565b6102326102bf366004612821565b610a9e565b6102326102d23660046128a5565b610ae9565b3480156102e357600080fd5b506101f26102f236600461267b565b610bb5565b34801561030357600080fd5b506101c5610c07565b61023261031a366004612618565b610c2b565b34801561032b57600080fd5b506101f261033a366004612618565b610d3c565b34801561034b57600080fd5b506101c5610e36565b34801561036057600080fd5b50610369610ebd565b60405161019c91906129ce565b34801561038257600080fd5b5061018f610391366004612821565b610f61565b3480156103a257600080fd5b506102326103b1366004612759565b611052565b3480156103c257600080fd5b506102326103d1366004612759565b61114d565b6040517f16e772bc00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc9061044b908590600401612a8c565b60206040518083038186803b15801561046357600080fd5b505afa158015610477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049b919061265b565b90505b919050565b6000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b81526004016104ff9190612a8c565b60206040518083038186803b15801561051757600080fd5b505afa15801561052b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054f919061265b565b6105745760405162461bcd60e51b815260040161056b90612c81565b60405180910390fd5b61059d836001866040516105889190612931565b9081526040519081900360200190209061123a565b91505b5092915050565b600060606105b3610ebd565b90506105bf818461125f565b9392505050565b600082826105d48282610f61565b6105f05760405162461bcd60e51b815260040161056b90612c4a565b6105f98461129b565b95945050505050565b61060a611326565b805160005b81811015610674576106348484838151811061062757fe5b6020026020010151610f61565b6106505760405162461bcd60e51b815260040161056b90612c4a565b61066c83828151811061065f57fe5b602002602001015161133f565b60010161060f565b505061067e611470565b610686611481565b5050565b6000610694611488565b905090565b6106a1611326565b80518251146106c25760405162461bcd60e51b815260040161056b90612afc565b805160005b81811015610674576106f28482815181106106de57fe5b602002602001015184838151811061062757fe5b61070e5760405162461bcd60e51b815260040161056b90612c4a565b61071d83828151811061065f57fe5b6001016106c7565b6000817f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b81526004016107819190612a8c565b60206040518083038186803b15801561079957600080fd5b505afa1580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d1919061265b565b6107ed5760405162461bcd60e51b815260040161056b90612c81565b6105bf6001846040516108009190612931565b908152602001604051809103902061149d565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc90610887908490600401612a8c565b60206040518083038186803b15801561089f57600080fd5b505afa1580156108b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d7919061265b565b6108f35760405162461bcd60e51b815260040161056b90612c81565b60006001856040516109059190612931565b9081526020016040518091039020905060005b83811015610a7257600085858381811061092e57fe5b9050602002016020810190610943919061270a565b90508073ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b815260040160206040518083038186803b15801561098b57600080fd5b505afa15801561099f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c3919061265b565b6109df5760405162461bcd60e51b815260040161056b90612cb8565b6109e983826114a1565b610a055760405162461bcd60e51b815260040161056b90612bb6565b86604051610a139190612931565b60405180910390208173ffffffffffffffffffffffffffffffffffffffff167fb87757e0365ca4f80cc1f429f422c0ea7ec26bbd3e5778727e77c809462aad0289604051610a619190612a8c565b60405180910390a350600101610918565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610aa6611326565b8181610ab28282610f61565b610ace5760405162461bcd60e51b815260040161056b90612c4a565b610ad78361133f565b610adf611470565b5050610686611481565b610af1611326565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663afcb1a866040518163ffffffff1660e01b815260040160006040518083038186803b158015610b5957600080fd5b505afa158015610b6d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b95919081019061252e565b9050610ba1818361164f565b50610baa611470565b610bb2611481565b50565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610bea929190612901565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610c33611326565b8160005b8151811015610d20577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc838381518110610c8857fe5b60200260200101516040518263ffffffff1660e01b8152600401610cac9190612a8c565b60206040518083038186803b158015610cc457600080fd5b505afa158015610cd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfc919061265b565b610d185760405162461bcd60e51b815260040161056b90612c81565b600101610c37565b50610d2b838361164f565b610d33611470565b50610686611481565b60008260005b8151811015610e2b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc838381518110610d9357fe5b60200260200101516040518263ffffffff1660e01b8152600401610db79190612a8c565b60206040518083038186803b158015610dcf57600080fd5b505afa158015610de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e07919061265b565b610e235760405162461bcd60e51b815260040161056b90612c81565b600101610d42565b5061059d848461125f565b6000610e40610c07565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8557600080fd5b505afa158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069491906126ee565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663afcb1a866040518163ffffffff1660e01b815260040160006040518083038186803b158015610f2557600080fd5b505afa158015610f39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610694919081019061252e565b6000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b8152600401610fbd9190612a8c565b60206040518083038186803b158015610fd557600080fd5b505afa158015610fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100d919061265b565b6110295760405162461bcd60e51b815260040161056b90612c81565b61059d8360018660405161103d9190612931565b9081526040519081900360200190209061168d565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc906110c6908490600401612a8c565b60206040518083038186803b1580156110de57600080fd5b505afa1580156110f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611116919061265b565b6111325760405162461bcd60e51b815260040161056b90612c81565b61113a6116bb565b6111478484846001611701565b50505050565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc906111c1908490600401612a8c565b60206040518083038186803b1580156111d957600080fd5b505afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611211919061265b565b61122d5760405162461bcd60e51b815260040161056b90612c81565b6111478484846000611701565b815460009061124c9083106064611acd565b6112568383611adb565b90505b92915050565b6000805b83518110156105a057606084828151811061127a57fe5b6020026020010151905061128e8185611b15565b9092019150600101611263565b60008173ffffffffffffffffffffffffffffffffffffffff1663b02452256040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e357600080fd5b505afa925050508015611313575060408051601f3d908101601f19168201909252611310918101906128bd565b60015b61131f5750600061049e565b905061049e565b61133860026000541415610190611acd565b6002600055565b600061134a8261129b565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc2c4c5c10000000000000000000000000000000000000000000000000000000017905291517f4036176a00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692634036176a92859261141592889201612971565b6000604051808303818588803b15801561142e57600080fd5b505af1158015611442573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261146b91908101906126bb565b505050565b478015610bb257610bb23382611d34565b6001600055565b6000600162093a8042040362093a8002905090565b5490565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205480156116455783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191018082146115aa57600086600001828154811061150f57fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff9091169150819088908590811061154557fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b85548690806115b557fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061125992505050565b6000915050611259565b6000611659611488565b905060005b83518110156111475761168584828151811061167657fe5b60200260200101518484611dbb565b60010161165e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b60006116ea6000357fffffffff0000000000000000000000000000000000000000000000000000000016610bb5565b9050610bb26116f98233612084565b610191611acd565b60006001856040516117139190612931565b9081526020016040518091039020905060005b83811015610a7257600085858381811061173c57fe5b9050602002016020810190611751919061270a565b6040517f61df1bf900000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906361df1bf9906117c6908490600401612950565b60206040518083038186803b1580156117de57600080fd5b505afa1580156117f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611816919061265b565b6118325760405162461bcd60e51b815260040161056b90612a9f565b8073ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b815260040160206040518083038186803b15801561187857600080fd5b505afa15801561188c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b0919061265b565b156118cd5760405162461bcd60e51b815260040161056b90612c13565b6118d7838261211a565b6118f35760405162461bcd60e51b815260040161056b90612cef565b8380611a4457506040517f572cb6a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063572cb6a59061196c908a90600401612a8c565b60206040518083038186803b15801561198457600080fd5b505afa158015611998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bc91906126ee565b73ffffffffffffffffffffffffffffffffffffffff1663ce3cc8bd826040518263ffffffff1660e01b81526004016119f49190612950565b60206040518083038186803b158015611a0c57600080fd5b505afa158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a44919061265b565b611a605760405162461bcd60e51b815260040161056b90612b59565b86604051611a6e9190612931565b60405180910390208173ffffffffffffffffffffffffffffffffffffffff167fbd3a33b3738a69bcfb84219d93fb0b1b2d91efbf2e5bef206c9af4122290fb5489604051611abc9190612a8c565b60405180910390a350600101611726565b8161068657610686816121a2565b6000826000018281548110611aec57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b600080611b20611488565b90506000611b376001866040516108009190612931565b90506000600186604051611b4b9190612931565b9081526020016040518091039020905060005b82811015611d2a576000611b728383611adb565b90506000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4d7a250846040518263ffffffff1660e01b8152600401611bd09190612950565b60206040518083038186803b158015611be857600080fd5b505afa158015611bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2091906128bd565b10159050808015611cf457506040517fd3078c94000000000000000000000000000000000000000000000000000000008152889073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d3078c9490611ca29086908b906004016129a8565b60206040518083038186803b158015611cba57600080fd5b505afa158015611cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf291906128bd565b105b15611d00575050611d22565b6000611d0b8361129b565b905080611d1a57505050611d2a565b969096019550505b600101611b5e565b5050505092915050565b611d43814710156101a3611acd565b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611d699061294d565b60006040518083038185875af1925050503d8060008114611da6576040519150601f19603f3d011682016040523d82523d6000602084013e611dab565b606091505b5050905061146b816101a4611acd565b6000600184604051611dcd9190612931565b908152602001604051809103902090506000611de88261149d565b905080611df657505061146b565b6000611e0a611e058483611adb565b61129b565b1590506123c981611e1d576121cc611e21565b61224c5b905060005b8381101561207a576000611e3a8683611adb565b9050867f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4d7a250836040518263ffffffff1660e01b8152600401611e969190612950565b60206040518083038186803b158015611eae57600080fd5b505afa158015611ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee691906128bd565b1015611f91576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e523790611f5e908490600401612950565b600060405180830381600087803b158015611f7857600080fd5b505af1158015611f8c573d6000803e3d6000fd5b505050505b6040517fd3078c94000000000000000000000000000000000000000000000000000000008152889073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d3078c94906120079085908c906004016129a8565b60206040518083038186803b15801561201f57600080fd5b505afa158015612033573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205791906128bd565b10156120635750612072565b612070818463ffffffff16565b505b600101611e26565b5050505050505050565b600061208e610e36565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b81526004016120ca93929190612a60565b60206040518083038186803b1580156120e257600080fd5b505afa1580156120f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611256919061265b565b6000612126838361168d565b61219a57508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155611259565b506000611259565b610bb2817f42414c0000000000000000000000000000000000000000000000000000000000612368565b60008173ffffffffffffffffffffffffffffffffffffffff1663b02452256040518163ffffffff1660e01b815260040160206040518083038186803b15801561221457600080fd5b505afa158015612228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134a91906128bd565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc2c4c5c10000000000000000000000000000000000000000000000000000000017905291517f4036176a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692634036176a9261231292869201612971565b600060405180830381600087803b15801561232c57600080fd5b505af1158015612340573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261068691908101906126bb565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5bfe5b600082601f8301126123db578081fd5b81356123ee6123e982612d73565b612d4c565b81815291506020808301908481018184028601820187101561240f57600080fd5b60005b8481101561243757813561242581612de3565b84529282019290820190600101612412565b505050505092915050565b600082601f830112612452578081fd5b81356124606123e982612d73565b818152915060208083019084810160005b8481101561243757612488888484358a01016124e0565b84529282019290820190600101612471565b600082601f8301126124aa578081fd5b81516124b86123e982612d93565b91508082528360208285010111156124cf57600080fd5b6105a0816020840160208601612db7565b600082601f8301126124f0578081fd5b81356124fe6123e982612d93565b915080825283602082850101111561251557600080fd5b8060208401602084013760009082016020015292915050565b60006020808385031215612540578182fd5b825167ffffffffffffffff811115612556578283fd5b8301601f81018513612566578283fd5b80516125746123e982612d73565b81815283810190838501865b848110156125a9576125978a88845189010161249a565b84529286019290860190600101612580565b509098975050505050505050565b600080604083850312156125c9578081fd5b823567ffffffffffffffff808211156125e0578283fd5b6125ec86838701612442565b93506020850135915080821115612601578283fd5b5061260e858286016123cb565b9150509250929050565b6000806040838503121561262a578182fd5b823567ffffffffffffffff811115612640578283fd5b61264c85828601612442565b95602094909401359450505050565b60006020828403121561266c578081fd5b815180151581146105bf578182fd5b60006020828403121561268c578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146105bf578182fd5b6000602082840312156126cc578081fd5b815167ffffffffffffffff8111156126e2578182fd5b61059d8482850161249a565b6000602082840312156126ff578081fd5b81516105bf81612de3565b60006020828403121561271b578081fd5b81356105bf81612de3565b600060208284031215612737578081fd5b813567ffffffffffffffff81111561274d578182fd5b61059d848285016124e0565b60008060006040848603121561276d578081fd5b833567ffffffffffffffff80821115612784578283fd5b612790878388016124e0565b945060208601359150808211156127a5578283fd5b818601915086601f8301126127b8578283fd5b8135818111156127c6578384fd5b87602080830285010111156127d9578384fd5b6020830194508093505050509250925092565b600080604083850312156127fe578182fd5b823567ffffffffffffffff80821115612815578384fd5b6125ec868387016124e0565b60008060408385031215612833578182fd5b823567ffffffffffffffff811115612849578283fd5b612855858286016124e0565b925050602083013561286681612de3565b809150509250929050565b60008060408385031215612883578182fd5b823567ffffffffffffffff811115612899578283fd5b61264c858286016124e0565b6000602082840312156128b6578081fd5b5035919050565b6000602082840312156128ce578081fd5b5051919050565b600081518084526128ed816020860160208601612db7565b601f01601f19169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b60008251612943818460208701612db7565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff84168252604060208301526129a060408301846128d5565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015612a3f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452612a2d8583516128d5565b945092850192908501906001016129f3565b5092979650505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60006020825261125660208301846128d5565b6020808252602a908201527f476175676520776173206e6f7420616464656420746f2074686520476175676560408201527f436f6e74726f6c6c657200000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d69736d61746368206265747765656e20676175676520747970657320616e6460408201527f2061646472657373657300000000000000000000000000000000000000000000606082015260800190565b6020808252602e908201527f476175676520646f6573206e6f7420636f72726573706f6e6420746f2074686560408201527f2073656c65637465642074797065000000000000000000000000000000000000606082015260800190565b60208082526027908201527f476175676520776173206e6f7420616464656420746f2074686520636865636b60408201527f706f696e74657200000000000000000000000000000000000000000000000000606082015260800190565b60208082526010908201527f476175676520776173206b696c6c656400000000000000000000000000000000604082015260600190565b6020808252600f908201527f4761756765206e6f742061646465640000000000000000000000000000000000604082015260600190565b60208082526012908201527f496e76616c696420676175676520747970650000000000000000000000000000604082015260600190565b60208082526014908201527f476175676520776173206e6f74206b696c6c6564000000000000000000000000604082015260600190565b60208082526027908201527f476175676520616c726561647920616464656420746f2074686520636865636b60408201527f706f696e74657200000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff81118282101715612d6b57600080fd5b604052919050565b600067ffffffffffffffff821115612d89578081fd5b5060209081020190565b600067ffffffffffffffff821115612da9578081fd5b50601f01601f191660200190565b60005b83811015612dd2578181015183820152602001612dba565b838111156111475750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114610bb257600080fdfea2646970667358221220ad96561ddd7ce6b409b5587999c89b40f38d1074f98055464efae03c87603b7564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x16A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7D0A6616 GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xA9A7F87E GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xC91BE043 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC91BE043 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0xD8DBA2CE EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0xF7178B88 EQ PUSH2 0x3B6 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0xA9A7F87E EQ PUSH2 0x31F JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x33F JUMPI DUP1 PUSH4 0xAFCB1A86 EQ PUSH2 0x354 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x97510496 EQ PUSH2 0x30C JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x7D0A6616 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x804D17DC EQ PUSH2 0x2C4 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x46583ADF GT PUSH2 0x122 JUMPI DUP1 PUSH4 0x4DB34D2A GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x4DB34D2A EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x73EBD060 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x7C1FEF51 EQ PUSH2 0x29C JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x46583ADF EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x4A3A1E11 EQ PUSH2 0x249 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x27F79107 GT PUSH2 0x153 JUMPI DUP1 PUSH4 0x27F79107 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0x2ADBE5AC EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0x43590308 EQ PUSH2 0x21F JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x16E772BC EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x27CB2A3B EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18F PUSH2 0x18A CALLDATASIZE PUSH1 0x4 PUSH2 0x2726 JUMP JUMPDEST PUSH2 0x3D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2A4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0x1C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2871 JUMP JUMPDEST PUSH2 0x4A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x28A5 JUMP JUMPDEST PUSH2 0x5A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x2A57 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x21A CALLDATASIZE PUSH1 0x4 PUSH2 0x2821 JUMP JUMPDEST PUSH2 0x5C6 JUMP JUMPDEST PUSH2 0x232 PUSH2 0x22D CALLDATASIZE PUSH1 0x4 PUSH2 0x27EC JUMP JUMPDEST PUSH2 0x602 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x68A JUMP JUMPDEST PUSH2 0x232 PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0x25B7 JUMP JUMPDEST PUSH2 0x699 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x277 CALLDATASIZE PUSH1 0x4 PUSH2 0x2726 JUMP JUMPDEST PUSH2 0x725 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x297 CALLDATASIZE PUSH1 0x4 PUSH2 0x2759 JUMP JUMPDEST PUSH2 0x813 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0xA7A JUMP JUMPDEST PUSH2 0x232 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x2821 JUMP JUMPDEST PUSH2 0xA9E JUMP JUMPDEST PUSH2 0x232 PUSH2 0x2D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x28A5 JUMP JUMPDEST PUSH2 0xAE9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x2F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x267B JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0xC07 JUMP JUMPDEST PUSH2 0x232 PUSH2 0x31A CALLDATASIZE PUSH1 0x4 PUSH2 0x2618 JUMP JUMPDEST PUSH2 0xC2B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x33A CALLDATASIZE PUSH1 0x4 PUSH2 0x2618 JUMP JUMPDEST PUSH2 0xD3C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0xE36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x369 PUSH2 0xEBD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x29CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18F PUSH2 0x391 CALLDATASIZE PUSH1 0x4 PUSH2 0x2821 JUMP JUMPDEST PUSH2 0xF61 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x3B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2759 JUMP JUMPDEST PUSH2 0x1052 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 PUSH2 0x3D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2759 JUMP JUMPDEST PUSH2 0x114D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x44B SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x477 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x49B SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4FF SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x54F SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x574 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x59D DUP4 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x588 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SWAP1 PUSH2 0x123A JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x5B3 PUSH2 0xEBD JUMP JUMPDEST SWAP1 POP PUSH2 0x5BF DUP2 DUP5 PUSH2 0x125F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH2 0x5D4 DUP3 DUP3 PUSH2 0xF61 JUMP JUMPDEST PUSH2 0x5F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0x5F9 DUP5 PUSH2 0x129B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x60A PUSH2 0x1326 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x674 JUMPI PUSH2 0x634 DUP5 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x627 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xF61 JUMP JUMPDEST PUSH2 0x650 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0x66C DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x65F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x133F JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x60F JUMP JUMPDEST POP POP PUSH2 0x67E PUSH2 0x1470 JUMP JUMPDEST PUSH2 0x686 PUSH2 0x1481 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x694 PUSH2 0x1488 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6A1 PUSH2 0x1326 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x6C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2AFC JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x674 JUMPI PUSH2 0x6F2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6DE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x627 JUMPI INVALID JUMPDEST PUSH2 0x70E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0x71D DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x65F JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x6C7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x781 SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7D1 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x7ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x5BF PUSH1 0x1 DUP5 PUSH1 0x40 MLOAD PUSH2 0x800 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH2 0x149D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x887 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x89F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8D7 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x8F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x40 MLOAD PUSH2 0x905 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x92E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x943 SWAP2 SWAP1 PUSH2 0x270A JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9C868AC0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x98B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x99F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9C3 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x9DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2CB8 JUMP JUMPDEST PUSH2 0x9E9 DUP4 DUP3 PUSH2 0x14A1 JUMP JUMPDEST PUSH2 0xA05 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2BB6 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD PUSH2 0xA13 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xB87757E0365CA4F80CC1F429F422C0EA7EC26BBD3E5778727E77C809462AAD02 DUP10 PUSH1 0x40 MLOAD PUSH2 0xA61 SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 ADD PUSH2 0x918 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xAA6 PUSH2 0x1326 JUMP JUMPDEST DUP2 DUP2 PUSH2 0xAB2 DUP3 DUP3 PUSH2 0xF61 JUMP JUMPDEST PUSH2 0xACE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C4A JUMP JUMPDEST PUSH2 0xAD7 DUP4 PUSH2 0x133F JUMP JUMPDEST PUSH2 0xADF PUSH2 0x1470 JUMP JUMPDEST POP POP PUSH2 0x686 PUSH2 0x1481 JUMP JUMPDEST PUSH2 0xAF1 PUSH2 0x1326 JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAFCB1A86 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xB95 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x252E JUMP JUMPDEST SWAP1 POP PUSH2 0xBA1 DUP2 DUP4 PUSH2 0x164F JUMP JUMPDEST POP PUSH2 0xBAA PUSH2 0x1470 JUMP JUMPDEST PUSH2 0xBB2 PUSH2 0x1481 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBEA SWAP3 SWAP2 SWAP1 PUSH2 0x2901 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xC33 PUSH2 0x1326 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xD20 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xC88 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCAC SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCFC SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0xD18 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xC37 JUMP JUMPDEST POP PUSH2 0xD2B DUP4 DUP4 PUSH2 0x164F JUMP JUMPDEST PUSH2 0xD33 PUSH2 0x1470 JUMP JUMPDEST POP PUSH2 0x686 PUSH2 0x1481 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xE2B JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD93 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDB7 SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE07 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0xE23 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD42 JUMP JUMPDEST POP PUSH2 0x59D DUP5 DUP5 PUSH2 0x125F JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE40 PUSH2 0xC07 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x694 SWAP2 SWAP1 PUSH2 0x26EE JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAFCB1A86 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x694 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x252E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16E772BC DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFBD SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFE9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x100D SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1029 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x59D DUP4 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x103D SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SWAP1 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x10C6 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1116 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1132 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x113A PUSH2 0x16BB JUMP JUMPDEST PUSH2 0x1147 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x1701 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x16E772BC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x16E772BC SWAP1 PUSH2 0x11C1 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1211 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x122D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH2 0x1147 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x1701 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x124C SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0x1ACD JUMP JUMPDEST PUSH2 0x1256 DUP4 DUP4 PUSH2 0x1ADB JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x5A0 JUMPI PUSH1 0x60 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x127A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x128E DUP2 DUP6 PUSH2 0x1B15 JUMP JUMPDEST SWAP1 SWAP3 ADD SWAP2 POP PUSH1 0x1 ADD PUSH2 0x1263 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB0245225 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1313 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1310 SWAP2 DUP2 ADD SWAP1 PUSH2 0x28BD JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x131F JUMPI POP PUSH1 0x0 PUSH2 0x49E JUMP JUMPDEST SWAP1 POP PUSH2 0x49E JUMP JUMPDEST PUSH2 0x1338 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x134A DUP3 PUSH2 0x129B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP1 DUP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC2C4C5C100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x4036176A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 PUSH4 0x4036176A SWAP3 DUP6 SWAP3 PUSH2 0x1415 SWAP3 DUP9 SWAP3 ADD PUSH2 0x2971 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x142E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1442 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x146B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26BB JUMP JUMPDEST POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0xBB2 JUMPI PUSH2 0xBB2 CALLER DUP3 PUSH2 0x1D34 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH3 0x93A80 TIMESTAMP DIV SUB PUSH3 0x93A80 MUL SWAP1 POP SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1645 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x15AA JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x150F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x1545 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x15B5 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x1259 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x1259 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1659 PUSH2 0x1488 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1147 JUMPI PUSH2 0x1685 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1676 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP5 PUSH2 0x1DBB JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x165E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16EA PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0xBB5 JUMP JUMPDEST SWAP1 POP PUSH2 0xBB2 PUSH2 0x16F9 DUP3 CALLER PUSH2 0x2084 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1713 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x173C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1751 SWAP2 SWAP1 PUSH2 0x270A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x61DF1BF900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x61DF1BF9 SWAP1 PUSH2 0x17C6 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1816 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1832 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2A9F JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9C868AC0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1878 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x188C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18B0 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST ISZERO PUSH2 0x18CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2C13 JUMP JUMPDEST PUSH2 0x18D7 DUP4 DUP3 PUSH2 0x211A JUMP JUMPDEST PUSH2 0x18F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2CEF JUMP JUMPDEST DUP4 DUP1 PUSH2 0x1A44 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x572CB6A500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x572CB6A5 SWAP1 PUSH2 0x196C SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1984 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1998 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19BC SWAP2 SWAP1 PUSH2 0x26EE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCE3CC8BD DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F4 SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A44 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH2 0x1A60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56B SWAP1 PUSH2 0x2B59 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD PUSH2 0x1A6E SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xBD3A33B3738A69BCFB84219D93FB0B1B2D91EFBF2E5BEF206C9AF4122290FB54 DUP10 PUSH1 0x40 MLOAD PUSH2 0x1ABC SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 ADD PUSH2 0x1726 JUMP JUMPDEST DUP2 PUSH2 0x686 JUMPI PUSH2 0x686 DUP2 PUSH2 0x21A2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1AEC JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B20 PUSH2 0x1488 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B37 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x800 SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1B4B SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1D2A JUMPI PUSH1 0x0 PUSH2 0x1B72 DUP4 DUP4 PUSH2 0x1ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA4D7A250 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BD0 SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C20 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT ISZERO SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x1CF4 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xD3078C9400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xD3078C94 SWAP1 PUSH2 0x1CA2 SWAP1 DUP7 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x29A8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CCE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CF2 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT JUMPDEST ISZERO PUSH2 0x1D00 JUMPI POP POP PUSH2 0x1D22 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D0B DUP4 PUSH2 0x129B JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1D1A JUMPI POP POP POP PUSH2 0x1D2A JUMP JUMPDEST SWAP7 SWAP1 SWAP7 ADD SWAP6 POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1B5E JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1D43 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x1D69 SWAP1 PUSH2 0x294D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1DA6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1DAB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x146B DUP2 PUSH2 0x1A4 PUSH2 0x1ACD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1DCD SWAP2 SWAP1 PUSH2 0x2931 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x1DE8 DUP3 PUSH2 0x149D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1DF6 JUMPI POP POP PUSH2 0x146B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E0A PUSH2 0x1E05 DUP5 DUP4 PUSH2 0x1ADB JUMP JUMPDEST PUSH2 0x129B JUMP JUMPDEST ISZERO SWAP1 POP PUSH2 0x23C9 DUP2 PUSH2 0x1E1D JUMPI PUSH2 0x21CC PUSH2 0x1E21 JUMP JUMPDEST PUSH2 0x224C JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x207A JUMPI PUSH1 0x0 PUSH2 0x1E3A DUP7 DUP4 PUSH2 0x1ADB JUMP JUMPDEST SWAP1 POP DUP7 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA4D7A250 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E96 SWAP2 SWAP1 PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1EE6 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT ISZERO PUSH2 0x1F91 JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x1F5E SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x2950 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD3078C9400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xD3078C94 SWAP1 PUSH2 0x2007 SWAP1 DUP6 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x29A8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x201F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2033 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2057 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST LT ISZERO PUSH2 0x2063 JUMPI POP PUSH2 0x2072 JUMP JUMPDEST PUSH2 0x2070 DUP2 DUP5 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1E26 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208E PUSH2 0xE36 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20CA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1256 SWAP2 SWAP1 PUSH2 0x265B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2126 DUP4 DUP4 PUSH2 0x168D JUMP JUMPDEST PUSH2 0x219A JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1259 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1259 JUMP JUMPDEST PUSH2 0xBB2 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x2368 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB0245225 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2228 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x134A SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP1 DUP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC2C4C5C100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x4036176A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 PUSH4 0x4036176A SWAP3 PUSH2 0x2312 SWAP3 DUP7 SWAP3 ADD PUSH2 0x2971 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x232C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2340 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x686 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26BB JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST INVALID JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23DB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x23EE PUSH2 0x23E9 DUP3 PUSH2 0x2D73 JUMP JUMPDEST PUSH2 0x2D4C JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x240F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2437 JUMPI DUP2 CALLDATALOAD PUSH2 0x2425 DUP2 PUSH2 0x2DE3 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2412 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2452 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2460 PUSH2 0x23E9 DUP3 PUSH2 0x2D73 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2437 JUMPI PUSH2 0x2488 DUP9 DUP5 DUP5 CALLDATALOAD DUP11 ADD ADD PUSH2 0x24E0 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2471 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x24AA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x24B8 PUSH2 0x23E9 DUP3 PUSH2 0x2D93 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x24CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5A0 DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2DB7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x24F0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x24FE PUSH2 0x23E9 DUP3 PUSH2 0x2D93 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2515 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2540 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2556 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x2566 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2574 PUSH2 0x23E9 DUP3 PUSH2 0x2D73 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP7 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x25A9 JUMPI PUSH2 0x2597 DUP11 DUP9 DUP5 MLOAD DUP10 ADD ADD PUSH2 0x249A JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP7 ADD SWAP3 SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2580 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25C9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x25E0 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x25EC DUP7 DUP4 DUP8 ADD PUSH2 0x2442 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2601 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x260E DUP6 DUP3 DUP7 ADD PUSH2 0x23CB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x262A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2640 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x264C DUP6 DUP3 DUP7 ADD PUSH2 0x2442 JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x266C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5BF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x268C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x5BF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26CC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x26E2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x59D DUP5 DUP3 DUP6 ADD PUSH2 0x249A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26FF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x5BF DUP2 PUSH2 0x2DE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x271B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5BF DUP2 PUSH2 0x2DE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2737 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x274D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x59D DUP5 DUP3 DUP6 ADD PUSH2 0x24E0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x276D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2784 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2790 DUP8 DUP4 DUP9 ADD PUSH2 0x24E0 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x27A5 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x27B8 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x27C6 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x27D9 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x27FE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2815 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x25EC DUP7 DUP4 DUP8 ADD PUSH2 0x24E0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2833 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2849 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2855 DUP6 DUP3 DUP7 ADD PUSH2 0x24E0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2866 DUP2 PUSH2 0x2DE3 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2883 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2899 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x264C DUP6 DUP3 DUP7 ADD PUSH2 0x24E0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28B6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28CE JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x28ED DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2DB7 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2943 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2DB7 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x29A0 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x28D5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2A3F JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x2A2D DUP6 DUP4 MLOAD PUSH2 0x28D5 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x29F3 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1256 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x28D5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206E6F7420616464656420746F20746865204761756765 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x436F6E74726F6C6C657200000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x4D69736D61746368206265747765656E20676175676520747970657320616E64 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2061646472657373657300000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520646F6573206E6F7420636F72726573706F6E6420746F20746865 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2073656C65637465642074797065000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206E6F7420616464656420746F2074686520636865636B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x706F696E74657200000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206B696C6C656400000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH32 0x4761756765206E6F742061646465640000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676520747970650000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520776173206E6F74206B696C6C6564000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x476175676520616C726561647920616464656420746F2074686520636865636B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x706F696E74657200000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2D6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2D89 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2DA9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DD2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2DBA JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1147 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xBB2 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD SWAP7 JUMP SAR 0xDD PUSH29 0xE6B409B5587999C89B40F38D1074F98055464EFAE03C87603B7564736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1660:16949:90:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9400:152;;;;;;;;;;-1:-1:-1;9400:152:90;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5750:257;;;;;;;;;;-1:-1:-1;5750:257:90;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9112:234::-;;;;;;;;;;-1:-1:-1;9112:234:90;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8469:246::-;;;;;;;;;;-1:-1:-1;8469:246:90;;;;;:::i;:::-;;:::i;7312:478::-;;;;;;:::i;:::-;;:::i;:::-;;6061:131;;;;;;;;;;;;;:::i;7844:571::-;;;;;;:::i;:::-;;:::i;5481:215::-;;;;;;;;;;-1:-1:-1;5481:215:90;;;;;:::i;:::-;;:::i;4299:831::-;;;;;;;;;;-1:-1:-1;4299:831:90;;;;;:::i;:::-;;:::i;3109:105::-;;;;;;;;;;;;;:::i;6998:260::-;;;;;;:::i;:::-;;:::i;6246:319::-;;;;;;:::i;:::-;;:::i;2607:430:46:-;;;;;;;;;;-1:-1:-1;2607:430:46;;;;;:::i;:::-;;:::i;1158:79:51:-;;;;;;;;;;;;;:::i;6619:325:90:-;;;;;;:::i;:::-;;:::i;8769:289::-;;;;;;;;;;-1:-1:-1;8769:289:90;;;;;:::i;:::-;;:::i;1297:109:51:-;;;;;;;;;;;;;:::i;3268:123:90:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5184:243::-;;;;;;;;;;-1:-1:-1;5184:243:90;;;;;:::i;:::-;;:::i;3445:423::-;;;;;;;;;;-1:-1:-1;3445:423:90;;;;;:::i;:::-;;:::i;3922:323::-;;;;;;;;;;-1:-1:-1;3922:323:90;;;;;:::i;:::-;;:::i;9400:152::-;9506:39;;;;;9483:4;;9506:28;:11;:28;;;;:39;;9535:9;;9506:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9499:46;;9400:152;;;;:::o;5750:257::-;5917:15;5889:9;2497:11;:28;;;2526:9;2497:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2489:70;;;;-1:-1:-1;;;2489:70:90;;;;;;;:::i;:::-;;;;;;;;;5971:28:::1;5993:5;5971:7;5979:9;5971:18;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;;:21:::1;:28::i;:::-;5948:52;;2569:1;5750:257:::0;;;;;:::o;9112:234::-;9199:7;9218:26;9247:15;:13;:15::i;:::-;9218:44;;9279:60;9309:10;9321:17;9279:29;:60::i;:::-;9272:67;9112:234;-1:-1:-1;;;9112:234:90:o;8469:246::-;8651:7;8616:9;8627:5;2910:26;2919:9;2930:5;2910:8;:26::i;:::-;2902:54;;;;-1:-1:-1;;;2902:54:90;;;;;;;:::i;:::-;8681:27:::1;8702:5;8681:20;:27::i;:::-;8674:34:::0;8469:246;-1:-1:-1;;;;;8469:246:90:o;7312:478::-;2613:20:63;:18;:20::i;:::-;7539:13:90;;7522:14:::2;7562:222;7586:6;7582:1;:10;7562:222;;;7675:30;7684:9;7695:6;7702:1;7695:9;;;;;;;;;;;;;;7675:8;:30::i;:::-;7667:58;;;;-1:-1:-1::0;;;7667:58:90::2;;;;;;;:::i;:::-;7740:33;7763:6;7770:1;7763:9;;;;;;;;;;;;;;7740:22;:33::i;:::-;7594:3;;7562:222;;;;3012:1;3023:25:::1;:23;:25::i;:::-;2654:19:63::0;:17;:19::i;:::-;7312:478:90;;:::o;6061:131::-;6133:7;6159:26;:24;:26::i;:::-;6152:33;;6061:131;:::o;7844:571::-;2613:20:63;:18;:20::i;:::-;8072:6:90::2;:13;8051:10;:17;:34;8043:89;;;;-1:-1:-1::0;;;8043:89:90::2;;;;;;;:::i;:::-;8160:13:::0;;8143:14:::2;8183:226;8207:6;8203:1;:10;8183:226;;;8296:34;8305:10;8316:1;8305:13;;;;;;;;;;;;;;8320:6;8327:1;8320:9;;;;;;;8296:34;8288:62;;;;-1:-1:-1::0;;;8288:62:90::2;;;;;;;:::i;:::-;8365:33;8388:6;8395:1;8388:9;;;;;;;8365:33;8215:3;;8183:226;;5481:215:::0;5632:7;5604:9;2497:11;:28;;;2526:9;2497:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2489:70;;;;-1:-1:-1;;;2489:70:90;;;;;;;:::i;:::-;5662:27:::1;:7;5670:9;5662:18;;;;;;:::i;:::-;;;;;;;;;;;;;:25;:27::i;4299:831::-:0;2497:39;;;;;4442:9;;2497:28;:11;:28;;;;:39;;4442:9;;2497:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2489:70;;;;-1:-1:-1;;;2489:70:90;;;;;;;:::i;:::-;4467:46:::1;4516:7;4524:9;4516:18;;;;;;:::i;:::-;;;;;;;;;;;;;4467:67;;4550:9;4545:579;4565:17:::0;;::::1;4545:579;;;4825:21;4849:6;;4856:1;4849:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;4825:33;;4880:5;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4872:50;;;;-1:-1:-1::0;;;4872:50:90::1;;;;;;;:::i;:::-;4944:36;:13:::0;4973:5;4944:20:::1;:36::i;:::-;4936:88;;;;-1:-1:-1::0;;;4936:88:90::1;;;;;;;:::i;:::-;5092:9;5044:69;;;;;;:::i;:::-;;;;;;;;5085:5;5044:69;;;5103:9;5044:69;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;4584:3:90::1;;4545:579;;;;2569:1;4299:831:::0;;;;:::o;3109:105::-;3196:11;3109:105;:::o;6998:260::-;2613:20:63;:18;:20::i;:::-;7171:9:90::1;7182:5;2910:26;2919:9;2930:5;2910:8;:26::i;:::-;2902:54;;;;-1:-1:-1::0;;;2902:54:90::1;;;;;;;:::i;:::-;7222:29:::3;7245:5;7222:22;:29::i;:::-;3023:25:::2;:23;:25::i;:::-;2643:1:63::1;;2654:19:::0;:17;:19::i;6246:319:90:-;2613:20:63;:18;:20::i;:::-;6425:26:90::2;6454:11;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;6454:27:90::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;6425:56;;6491:67;6528:10;6540:17;6491:36;:67::i;:::-;3012:1;3023:25:::1;:23;:25::i;:::-;2654:19:63::0;:17;:19::i;:::-;6246:319:90;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;6619:325:90:-;2613:20:63;:18;:20::i;:::-;6825:10:90::1;2655:9;2650:147;2674:10;:17;2670:1;:21;2650:147;;;2720:11;:28;;;2749:10;2760:1;2749:13;;;;;;;;;;;;;;2720:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2712:74;;;;-1:-1:-1::0;;;2712:74:90::1;;;;;;;:::i;:::-;2693:3;;2650:147;;;;6870:67:::3;6907:10;6919:17;6870:36;:67::i;:::-;3023:25:::2;:23;:25::i;:::-;2643:1:63::1;2654:19:::0;:17;:19::i;8769:289:90:-;8961:7;8932:10;2655:9;2650:147;2674:10;:17;2670:1;:21;2650:147;;;2720:11;:28;;;2749:10;2760:1;2749:13;;;;;;;;;;;;;;2720:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2712:74;;;;-1:-1:-1;;;2712:74:90;;;;;;;:::i;:::-;2693:3;;2650:147;;;;8991:60:::1;9021:10;9033:17;8991:29;:60::i;1297:109:51:-:0;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3268:123:90:-;3323:15;3357:11;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3357:27:90;;;;;;;;;;;;:::i;5184:243::-;5350:4;5322:9;2497:11;:28;;;2526:9;2497:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2489:70;;;;-1:-1:-1;;;2489:70:90;;;;;;;:::i;:::-;5377:43:::1;5413:5;5377:7;5385:9;5377:18;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;;:27:::1;:43::i;3445:423::-:0;2497:39;;;;;3601:9;;2497:28;:11;:28;;;;:39;;3601:9;;2497:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2489:70;;;;-1:-1:-1;;;2489:70:90;;;;;;;:::i;:::-;2276:21:46::1;:19;:21::i;:::-;3826:35:90::2;3837:9;3848:6;;3856:4;3826:10;:35::i;:::-;3445:423:::0;;;;:::o;3922:323::-;2497:39;;;;;4062:9;;2497:28;:11;:28;;;;:39;;4062:9;;2497:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2489:70;;;;-1:-1:-1;;;2489:70:90;;;;;;;:::i;:::-;4202:36:::1;4213:9;4224:6;;4232:5;4202:10;:36::i;4648:199:62:-:0;4750:18;;4722:7;;4741:58;;4750:26;-1:-1:-1;5662:3:31;4741:8:62;:58::i;:::-;4816:24;4829:3;4834:5;4816:12;:24::i;:::-;4809:31;;4648:199;;;;;:::o;13408:377:90:-;13549:17;;13582:197;13606:10;:17;13602:1;:21;13582:197;;;13644:23;13670:10;13681:1;13670:13;;;;;;;;;;;;;;13644:39;;13710:58;13739:9;13750:17;13710:28;:58::i;:::-;13697:71;;;;-1:-1:-1;13625:3:90;;13582:197;;11255:414;11331:7;11537:5;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11537:26:90;;;;;;;;-1:-1:-1;;11537:26:90;;;;;;;;;;;;:::i;:::-;;;11533:130;;-1:-1:-1;11651:1:90;11644:8;;11533:130;11608:4;-1:-1:-1;11601:11:90;;2686:271:63;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;17422:322:90:-;17496:22;17521:27;17542:5;17521:20;:27::i;:::-;17668:59;;;;;;;;;;;;;;;;;;;17691:35;17668:59;;;17559:178;;;;;17496:52;;-1:-1:-1;17559:42:90;:28;:42;;;;17496:52;;17559:178;;17648:5;;17559:178;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17559:178:90;;;;;;;;;;;;:::i;:::-;;17422:322;;:::o;17868:314::-;18047:21;18082:20;;18078:98;;18118:47;18136:10;18148:16;18118:17;:47::i;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;18359:248:90:-;18417:7;18588:1;18578:7;18560:15;:25;:29;18593:7;18559:41;18552:48;;18359:248;:::o;4192:114:62:-;4281:18;;4192:114::o;2429:1467::-;2639:19;;;2502:4;2639:19;;;:12;;;:19;;;;;;2673:15;;2669:1221;;3114:18;;3066:14;;;;;3114:22;3236:26;;;3232:389;;3282:17;3302:3;:11;;3314:9;3302:22;;;;;;;;;;;;;;;;;;3424:26;;3302:22;;;;;-1:-1:-1;3302:22:62;;3424:3;;3436:13;;3424:26;;;;;;;;;;;;;;;;;;:38;;;;;;;;;;;3536:23;;;;;;-1:-1:-1;3536:12:62;;;:23;;;;;;3562:17;;;3536:43;;3232:389;3699:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3791:19;;;;3699:17;3791:12;;;:19;;;;;;3784:26;;;;3699:17;-1:-1:-1;3825:11:62;;-1:-1:-1;;;3825:11:62;2669:1221;3874:5;3867:12;;;;;13791:326:90;13911:21;13935:26;:24;:26::i;:::-;13911:50;;13977:9;13972:139;13996:10;:17;13992:1;:21;13972:139;;;14034:66;14052:10;14063:1;14052:13;;;;;;;;;;;;;;14067:17;14086:13;14034:17;:66::i;:::-;14015:3;;13972:139;;3977:134:62;4080:19;;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;9558:1531:90:-;9713:46;9762:7;9770:9;9762:18;;;;;;:::i;:::-;;;;;;;;;;;;;9713:67;;9796:9;9791:1292;9811:17;;;9791:1292;;;9849:21;9873:6;;9880:1;9873:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;10095:45;;;;;9849:33;;-1:-1:-1;10095:29:90;:16;:29;;;;:45;;9849:33;;10095:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10087:100;;;;-1:-1:-1;;;10087:100:90;;;;;;;:::i;:::-;10210:5;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10209:18;10201:47;;;;-1:-1:-1;;;10201:47:90;;;;;;;:::i;:::-;10270:33;:13;10296:5;10270:17;:33::i;:::-;10262:85;;;;-1:-1:-1;;;10262:85:90;;;;;;;:::i;:::-;10802:19;:103;;;-1:-1:-1;10825:45:90;;;;;:34;:11;:34;;;;:45;;10860:9;;10825:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:64;;;10898:5;10825:80;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10777:208;;;;-1:-1:-1;;;10777:208:90;;;;;;;:::i;:::-;11051:9;11005:67;;;;;;:::i;:::-;;;;;;;;11044:5;11005:67;;;11062:9;11005:67;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;9830:3:90;;9791:1292;;926:101:31;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;5212:135:62:-;5296:7;5322:3;:11;;5334:5;5322:18;;;;;;;;;;;;;;;;;;;;;5212:135;-1:-1:-1;;;5212:135:62:o;11675:1727:90:-;11812:17;11845:21;11869:26;:24;:26::i;:::-;11845:50;;11905:18;11926:27;:7;11934:9;11926:18;;;;;;:::i;:27::-;11905:48;;11963:39;12005:7;12013:9;12005:18;;;;;;:::i;:::-;;;;;;;;;;;;;11963:60;;12039:9;12034:1362;12058:10;12054:1;:14;12034:1362;;;12089:13;12105:22;:6;12125:1;12105:19;:22::i;:::-;12089:38;;12691:19;12752:13;12713:16;:28;;;12742:5;12713:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;12691:74;;12783:14;:98;;;;-1:-1:-1;12801:60:90;;;;;12864:17;;12801:38;:16;:38;;;;:60;;12840:5;;12847:13;;12801:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:80;12783:98;12779:145;;;12901:8;;;;12779:145;12938:23;12964:44;13001:5;12964:20;:44::i;:::-;12938:70;-1:-1:-1;13126:20:90;13122:64;;13166:5;;;;;13122:64;13357:28;;;;;-1:-1:-1;;12034:1362:90;12070:3;;12034:1362;;;;11675:1727;;;;;;;:::o;2421:369:56:-;2502:78;2536:6;2511:21;:31;;11425:3:31;2502:8:56;:78::i;:::-;2669:12;2687:9;:14;;2710:6;2687:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:54;;;2732:51;2741:7;11488:3:31;2732:8:56;:51::i;14589:1952:90:-;14739:43;14785:7;14793:9;14785:18;;;;;;:::i;:::-;;;;;;;;;;;;;14739:64;;14814:23;14840:19;:10;:17;:19::i;:::-;14814:45;-1:-1:-1;14873:20:90;14869:116;;14968:7;;;;14869:116;15355:24;15383:65;15420:26;:10;15355:24;15420:23;:26::i;:::-;15383:20;:65::i;:::-;:70;;-1:-1:-1;15687:52:90;15383:70;15742:105;;15821:26;15742:105;;;15776:30;15742:105;15687:160;;15863:9;15858:677;15882:15;15878:1;:19;15858:677;;;15918:13;15934:26;:10;15958:1;15934:23;:26::i;:::-;15918:42;;16183:13;16145:16;:28;;;16174:5;16145:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;16141:130;;;16216:40;;;;;:33;:16;:33;;;;:40;;16250:5;;16216:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16141:130;16346:60;;;;;16409:17;;16346:38;:16;:38;;;;:60;;16385:5;;16392:13;;16346:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:80;16342:127;;;16446:8;;;16342:127;16483:41;16517:5;16483:17;:41;;:::i;:::-;15858:677;;15899:3;;15858:677;;;;14589:1952;;;;;;;:::o;1412:178:51:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1851:410:62:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:62;;;;;;;;-1:-1:-1;1978:23:62;;;;;;;;;;;;;;;;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:62;2232:12;;1459:126:31;1506:28;1514:9;1506:28;:7;:28::i;16649:324:90:-;16726:22;16751:5;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17073:241::-;17238:59;;;;;;;;;;;;;;;;;;;17261:35;17238:59;;;17154:153;;;;;:42;:28;:42;;;;:153;;17218:5;;17154:153;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17154:153:90;;;;;;;;;;;;:::i;1692:3378:31:-;-1:-1:-1;;;1754:18:31;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;-1:-1:-1;;459:779;;600:3;593:4;585:6;581:17;577:27;567:2;;-1:-1;;608:12;567:2;655:6;642:20;677:104;692:88;773:6;692:88;:::i;:::-;677:104;:::i;:::-;809:21;;;668:113;-1:-1;853:4;866:14;;;;841:17;;;955;;;946:27;;;;943:36;-1:-1;940:2;;;992:1;;982:12;940:2;1017:1;1002:230;1027:6;1024:1;1021:13;1002:230;;;3927:6;3914:20;3939:57;3990:5;3939:57;:::i;:::-;1095:74;;1183:14;;;;1211;;;;1049:1;1042:9;1002:230;;;1006:14;;;;;560:678;;;;:::o;1263:708::-;;1390:3;1383:4;1375:6;1371:17;1367:27;1357:2;;-1:-1;;1398:12;1357:2;1445:6;1432:20;1467:90;1482:74;1549:6;1482:74;:::i;1467:90::-;1585:21;;;1458:99;-1:-1;1629:4;1642:14;;;;1617:17;;;1737:1;1722:243;1747:6;1744:1;1741:13;1722:243;;;1854:47;1897:3;1629:4;1830:3;1817:17;1621:6;1805:30;;1854:47;:::i;:::-;1842:60;;1916:14;;;;1944;;;;1769:1;1762:9;1722:243;;2991:442;;3103:3;3096:4;3088:6;3084:17;3080:27;3070:2;;-1:-1;;3111:12;3070:2;3151:6;3145:13;3173:64;3188:48;3229:6;3188:48;:::i;3173:64::-;3164:73;;3257:6;3250:5;3243:21;3361:3;3293:4;3352:6;3285;3343:16;;3340:25;3337:2;;;3378:1;;3368:12;3337:2;3388:39;3420:6;3293:4;3319:5;3315:16;3293:4;3285:6;3281:17;3388:39;:::i;4009:442::-;;4111:3;4104:4;4096:6;4092:17;4088:27;4078:2;;-1:-1;;4119:12;4078:2;4166:6;4153:20;4188:65;4203:49;4245:6;4203:49;:::i;4188:65::-;4179:74;;4273:6;4266:5;4259:21;4377:3;4309:4;4368:6;4301;4359:16;;4356:25;4353:2;;;4394:1;;4384:12;4353:2;33847:6;4309:4;4301:6;4297:17;4309:4;4335:5;4331:16;33824:30;33903:1;33885:16;;;4309:4;33885:16;33878:27;4335:5;4071:380;-1:-1;;4071:380::o;5190:412::-;;5340:2;;5328:9;5319:7;5315:23;5311:32;5308:2;;;-1:-1;;5346:12;5308:2;5397:17;5391:24;5435:18;5427:6;5424:30;5421:2;;;-1:-1;;5457:12;5421:2;5554:22;;2127:4;2115:17;;2111:27;-1:-1;2101:2;;-1:-1;;2142:12;2101:2;2182:6;2176:13;2204:90;2219:74;2286:6;2219:74;:::i;2204:90::-;2322:21;;;2379:14;;;;2354:17;;;-1:-1;2459:247;2484:6;2481:1;2478:13;2459:247;;;2584:58;2638:3;5340:2;2560:3;2554:10;2358:6;2542:23;;2584:58;:::i;:::-;2572:71;;2657:14;;;;2685;;;;2506:1;2499:9;2459:247;;;-1:-1;5477:109;;5302:300;-1:-1;;;;;;;;5302:300::o;5609:706::-;;;5814:2;5802:9;5793:7;5789:23;5785:32;5782:2;;;-1:-1;;5820:12;5782:2;5878:17;5865:31;5916:18;;5908:6;5905:30;5902:2;;;-1:-1;;5938:12;5902:2;5968:88;6048:7;6039:6;6028:9;6024:22;5968:88;:::i;:::-;5958:98;;6121:2;6110:9;6106:18;6093:32;6079:46;;5916:18;6137:6;6134:30;6131:2;;;-1:-1;;6167:12;6131:2;;6197:102;6291:7;6282:6;6271:9;6267:22;6197:102;:::i;:::-;6187:112;;;5776:539;;;;;:::o;6322:522::-;;;6478:2;6466:9;6457:7;6453:23;6449:32;6446:2;;;-1:-1;;6484:12;6446:2;6542:17;6529:31;6580:18;6572:6;6569:30;6566:2;;;-1:-1;;6602:12;6566:2;6632:88;6712:7;6703:6;6692:9;6688:22;6632:88;:::i;:::-;6622:98;6757:2;6796:22;;;;4979:20;;-1:-1;;;;6440:404::o;6851:257::-;;6963:2;6951:9;6942:7;6938:23;6934:32;6931:2;;;-1:-1;;6969:12;6931:2;2801:6;2795:13;34543:5;31728:13;31721:21;34521:5;34518:32;34508:2;;-1:-1;;34554:12;7115:239;;7218:2;7206:9;7197:7;7193:23;7189:32;7186:2;;;-1:-1;;7224:12;7186:2;2934:6;2921:20;31905:66;34665:5;31894:78;34641:5;34638:34;34628:2;;-1:-1;;34676:12;7361:360;;7485:2;7473:9;7464:7;7460:23;7456:32;7453:2;;;-1:-1;;7491:12;7453:2;7542:17;7536:24;7580:18;7572:6;7569:30;7566:2;;;-1:-1;;7602:12;7566:2;7632:73;7697:7;7688:6;7677:9;7673:22;7632:73;:::i;7728:303::-;;7863:2;7851:9;7842:7;7838:23;7834:32;7831:2;;;-1:-1;;7869:12;7831:2;3545:6;3539:13;3557:53;3604:5;3557:53;:::i;8368:289::-;;8496:2;8484:9;8475:7;8471:23;8467:32;8464:2;;;-1:-1;;8502:12;8464:2;3927:6;3914:20;3939:57;3990:5;3939:57;:::i;8664:347::-;;8778:2;8766:9;8757:7;8753:23;8749:32;8746:2;;;-1:-1;;8784:12;8746:2;8842:17;8829:31;8880:18;8872:6;8869:30;8866:2;;;-1:-1;;8902:12;8866:2;8932:63;8987:7;8978:6;8967:9;8963:22;8932:63;:::i;9018:676::-;;;;9208:2;9196:9;9187:7;9183:23;9179:32;9176:2;;;-1:-1;;9214:12;9176:2;9272:17;9259:31;9310:18;;9302:6;9299:30;9296:2;;;-1:-1;;9332:12;9296:2;9362:63;9417:7;9408:6;9397:9;9393:22;9362:63;:::i;:::-;9352:73;;9490:2;9479:9;9475:18;9462:32;9448:46;;9310:18;9506:6;9503:30;9500:2;;;-1:-1;;9536:12;9500:2;9661:6;9650:9;9646:22;;;194:3;187:4;179:6;175:17;171:27;161:2;;-1:-1;;202:12;161:2;245:6;232:20;9310:18;264:6;261:30;258:2;;;-1:-1;;294:12;258:2;389:3;9490:2;;373:6;369:17;330:6;355:32;;352:41;349:2;;;-1:-1;;396:12;349:2;9490;330:6;326:17;9556:122;;;;;;;;9170:524;;;;;:::o;9701:656::-;;;9881:2;9869:9;9860:7;9856:23;9852:32;9849:2;;;-1:-1;;9887:12;9849:2;9945:17;9932:31;9983:18;;9975:6;9972:30;9969:2;;;-1:-1;;10005:12;9969:2;10035:63;10090:7;10081:6;10070:9;10066:22;10035:63;:::i;10364:520::-;;;10519:2;10507:9;10498:7;10494:23;10490:32;10487:2;;;-1:-1;;10525:12;10487:2;10583:17;10570:31;10621:18;10613:6;10610:30;10607:2;;;-1:-1;;10643:12;10607:2;10673:63;10728:7;10719:6;10708:9;10704:22;10673:63;:::i;:::-;10663:73;;;10773:2;10840:9;10836:22;3914:20;3939:57;3990:5;3939:57;:::i;:::-;10781:87;;;;10481:403;;;;;:::o;10891:472::-;;;11022:2;11010:9;11001:7;10997:23;10993:32;10990:2;;;-1:-1;;11028:12;10990:2;11086:17;11073:31;11124:18;11116:6;11113:30;11110:2;;;-1:-1;;11146:12;11110:2;11176:63;11231:7;11222:6;11211:9;11207:22;11176:63;:::i;11370:241::-;;11474:2;11462:9;11453:7;11449:23;11445:32;11442:2;;;-1:-1;;11480:12;11442:2;-1:-1;4979:20;;11436:175;-1:-1;11436:175::o;11618:263::-;;11733:2;11721:9;11712:7;11708:23;11704:32;11701:2;;;-1:-1;;11739:12;11701:2;-1:-1;5127:13;;11695:186;-1:-1;11695:186::o;13720:343::-;;13862:5;30132:12;30696:6;30691:3;30684:19;13955:52;14000:6;30733:4;30728:3;30724:14;30733:4;13981:5;13977:16;13955:52;:::i;:::-;34445:2;34425:14;-1:-1;;34421:28;14019:39;;;;30733:4;14019:39;;13810:253;-1:-1;;13810:253::o;19481:387::-;13357:37;;;31905:66;31894:78;19732:2;19723:12;;13652:56;19832:11;;;19623:245::o;19875:275::-;;15609:5;30132:12;15721:52;15766:6;15761:3;15754:4;15747:5;15743:16;15721:52;:::i;:::-;15785:16;;;;;20011:139;-1:-1;;20011:139::o;20157:379::-;20521:10;20345:191::o;20543:222::-;32425:42;32414:54;;;;12161:37;;20670:2;20655:18;;20641:124::o;20772:417::-;;32425:42;31644:5;32414:54;12168:3;12161:37;20945:2;21063;21052:9;21048:18;21041:48;21103:76;20945:2;20934:9;20930:18;21165:6;21103:76;:::i;:::-;21095:84;20916:273;-1:-1;;;;20916:273::o;21196:333::-;32425:42;32414:54;;;;12161:37;;21515:2;21500:18;;13357:37;21351:2;21336:18;;21322:207::o;21536:410::-;;21733:2;;21722:9;21718:18;21733:2;21754:17;21747:47;21808:128;12462:5;30132:12;30696:6;30691:3;30684:19;30724:14;21722:9;30724:14;12474:103;;30724:14;21733:2;12634:6;12630:17;21722:9;12621:27;;12609:39;;21733:2;12729:5;29976:14;-1:-1;12768:360;12793:6;12790:1;12787:13;12768:360;;;12845:20;21722:9;12849:4;12845:20;;12840:3;12833:33;12010:66;12072:3;12900:6;12894:13;12010:66;:::i;:::-;12914:92;-1:-1;13107:14;;;;30529;;;;12815:1;12808:9;12768:360;;;-1:-1;21800:136;;21704:242;-1:-1;;;;;;;21704:242::o;21953:210::-;31728:13;;31721:21;13240:34;;22074:2;22059:18;;22045:118::o;22170:222::-;13357:37;;;22297:2;22282:18;;22268:124::o;22399:444::-;13357:37;;;32425:42;32414:54;;;22746:2;22731:18;;12161:37;32414:54;22829:2;22814:18;;12161:37;22582:2;22567:18;;22553:290::o;23922:310::-;;24069:2;24090:17;24083:47;24144:78;24069:2;24058:9;24054:18;24208:6;24144:78;:::i;24239:416::-;24439:2;24453:47;;;16038:2;24424:18;;;30684:19;16074:34;30724:14;;;16054:55;16143:12;16129;;;16122:34;16175:12;;;24410:245::o;24662:416::-;24862:2;24876:47;;;16426:2;24847:18;;;30684:19;16462:34;30724:14;;;16442:55;16531:12;16517;;;16510:34;16563:12;;;24833:245::o;25085:416::-;25285:2;25299:47;;;16814:2;25270:18;;;30684:19;16850:34;30724:14;;;16830:55;16919:16;16905:12;;;16898:38;16955:12;;;25256:245::o;25508:416::-;25708:2;25722:47;;;17206:2;25693:18;;;30684:19;17242:34;30724:14;;;17222:55;17311:9;17297:12;;;17290:31;17340:12;;;25679:245::o;25931:416::-;26131:2;26145:47;;;17591:2;26116:18;;;30684:19;17627:18;30724:14;;;17607:39;17665:12;;;26102:245::o;26354:416::-;26554:2;26568:47;;;17916:2;26539:18;;;30684:19;17952:17;30724:14;;;17932:38;17989:12;;;26525:245::o;26777:416::-;26977:2;26991:47;;;18240:2;26962:18;;;30684:19;18276:20;30724:14;;;18256:41;18316:12;;;26948:245::o;27200:416::-;27400:2;27414:47;;;18872:2;27385:18;;;30684:19;18908:22;30724:14;;;18888:43;18950:12;;;27371:245::o;27623:416::-;27823:2;27837:47;;;19201:2;27808:18;;;30684:19;19237:34;30724:14;;;19217:55;19306:9;19292:12;;;19285:31;19335:12;;;27794:245::o;28275:256::-;28337:2;28331:9;28363:17;;;28438:18;28423:34;;28459:22;;;28420:62;28417:2;;;28495:1;;28485:12;28417:2;28337;28504:22;28315:216;;-1:-1;28315:216::o;28538:328::-;;28721:18;28713:6;28710:30;28707:2;;;-1:-1;;28743:12;28707:2;-1:-1;28788:4;28776:17;;;28841:15;;28644:222::o;29194:321::-;;29337:18;29329:6;29326:30;29323:2;;;-1:-1;;29359:12;29323:2;-1:-1;29436:4;29413:17;-1:-1;;29409:33;29500:4;29490:15;;29260:255::o;33920:268::-;33985:1;33992:101;34006:6;34003:1;34000:13;33992:101;;;34073:11;;;34067:18;34054:11;;;34047:39;34028:2;34021:10;33992:101;;;34108:6;34105:1;34102:13;34099:2;;;-1:-1;;33985:1;34155:16;;34148:27;33969:219::o;34702:157::-;32425:42;34829:5;32414:54;34784:5;34781:55;34771:2;;34850:1;;34840:12"},"methodIdentifiers":{"addGauges(string,address[])":"f7178b88","addGaugesWithVerifiedType(string,address[])":"d8dba2ce","checkpointAllGaugesAboveRelativeWeight(uint256)":"804d17dc","checkpointGaugesOfTypesAboveRelativeWeight(string[],uint256)":"97510496","checkpointMultipleGauges(string[],address[])":"4a3a1e11","checkpointMultipleGaugesOfMatchingType(string,address[])":"43590308","checkpointSingleGauge(string,address)":"7d0a6616","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getGaugeAdder()":"7c1fef51","getGaugeAtIndex(string,uint256)":"27cb2a3b","getGaugeTypes()":"afcb1a86","getGaugeTypesBridgeCost(string[],uint256)":"a9a7f87e","getRoundedDownBlockTimestamp()":"46583adf","getSingleBridgeCost(string,address)":"2adbe5ac","getTotalBridgeCost(uint256)":"27f79107","getTotalGauges(string)":"4db34d2a","getVault()":"8d928af8","hasGauge(string,address)":"c91be043","isValidGaugeType(string)":"16e772bc","removeGauges(string,address[])":"73ebd060"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IGaugeAdder\",\"name\":\"gaugeAdder\",\"type\":\"address\"},{\"internalType\":\"contract IAuthorizerAdaptorEntrypoint\",\"name\":\"authorizerAdaptorEntrypoint\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"GaugeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedGaugeType\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"GaugeRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"addGauges\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"addGaugesWithVerifiedType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"checkpointAllGaugesAboveRelativeWeight\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"gaugeTypes\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"checkpointGaugesOfTypesAboveRelativeWeight\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"gaugeTypes\",\"type\":\"string[]\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"checkpointMultipleGauges\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"checkpointMultipleGaugesOfMatchingType\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"checkpointSingleGauge\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeAdder\",\"outputs\":[{\"internalType\":\"contract IGaugeAdder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getGaugeAtIndex\",\"outputs\":[{\"internalType\":\"contract IStakelessGauge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeTypes\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"gaugeTypes\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"getGaugeTypesBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRoundedDownBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"getSingleBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minRelativeWeight\",\"type\":\"uint256\"}],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"getTotalGauges\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"hasGauge\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"}],\"name\":\"isValidGaugeType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"gaugeType\",\"type\":\"string\"},{\"internalType\":\"contract IStakelessGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"removeGauges\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addGauges(string,address[])\":{\"details\":\"Gauges added will be considered when performing checkpoints. The gauges to add should meet the following preconditions: - They must have been created in a valid `GaugeFactory`, according to `GaugeAdder#isGaugeFromValidFactory`. - They must exist in the `GaugeController`, according to `GaugeController#gauge_exists`. - They must not be killed. - They must not have been previously added to the checkpointer.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"gauges\":\"Gauges to add.\"}},\"addGaugesWithVerifiedType(string,address[])\":{\"details\":\"Gauges added will be considered when performing checkpoints. The gauges to add should meet the following preconditions: - They must exist in the GaugeController, according to GaugeController#gauge_exists. - They must not be killed. - They must not have been previously added to the checkpointer. Unlike `addGauges`, this function can add gauges that were created by factories registered in a deprecated `GaugeAdder`, and therefore cannot be validated by the current `GaugeAdder`.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"gauges\":\"Gauges to add.\"}},\"checkpointAllGaugesAboveRelativeWeight(uint256)\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getTotalBridgeCost` to determine the required amount of ETH for the execution to succeed.\",\"params\":{\"minRelativeWeight\":\"Threshold to filter out gauges below it.\"}},\"checkpointGaugesOfTypesAboveRelativeWeight(string[],uint256)\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getGaugeTypesBridgeCost` to determine the required amount of ETH for the execution to succeed. Reverts if invalid gauge types are given.\",\"params\":{\"gaugeTypes\":\"Types of the gauges to checkpoint.\",\"minRelativeWeight\":\"Threshold to filter out gauges below it.\"}},\"checkpointMultipleGauges(string[],address[])\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Reverts if the gauges were not added to the checkpointer beforehand, or if invalid gauge types are given. Reverts if the types array does not have the same length as the gauges array.\",\"params\":{\"gaugeTypes\":\"Types of the gauges to be checkpointed, in the same order as the gauges to be checkpointed.\",\"gauges\":\"Addresses of the gauges to checkpoint.\"}},\"checkpointMultipleGaugesOfMatchingType(string,address[])\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Reverts if the gauges were not added to the checkpointer beforehand, or if an invalid gauge type is given.\",\"params\":{\"gaugeType\":\"Type of the gauges to be checkpointed.\",\"gauges\":\"Addresses of the gauges to checkpoint.\"}},\"checkpointSingleGauge(string,address)\":{\"details\":\"Reverts if the ETH sent in the call is not enough to cover bridge costs. Use `getSingleBridgeCost` to determine the required amount of ETH for the execution to succeed. Reverts if the gauge was not added to the checkpointer beforehand.\",\"params\":{\"gauge\":\"Address of the gauge to checkpoint.\",\"gaugeType\":\"Type of the gauge.\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getGaugeAtIndex(string,uint256)\":{\"details\":\"Reverts if the index is greater than or equal to the amount of added gauges for the given type.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"index\":\"- Index of the added gauge.\"}},\"getGaugeTypesBridgeCost(string[],uint256)\":{\"details\":\"A lower minimum relative weight might return higher costs, since more gauges could potentially be included in the checkpoint. Reverts for invalid gauge types.\",\"params\":{\"gaugeTypes\":\"Types of the gauges.\",\"minRelativeWeight\":\"Minimum relative weight filter: gauges below this value do not add to the bridge cost.\"}},\"getSingleBridgeCost(string,address)\":{\"details\":\"Reverts if the gauge was not added to the checkpointer beforehand, or if the gauge type is invalid.\",\"params\":{\"gauge\":\"Address of the gauge to check the bridge costs.\",\"gaugeType\":\"Type of the gauge.\"}},\"getTotalBridgeCost(uint256)\":{\"details\":\"A lower minimum relative weight might return higher costs, since more gauges could potentially be included in the checkpoint.\",\"params\":{\"minRelativeWeight\":\"Minimum relative weight filter: gauges below this value do not add to the bridge cost.\"}},\"getTotalGauges(string)\":{\"params\":{\"gaugeType\":\"Type of the gauge.\"}},\"hasGauge(string,address)\":{\"params\":{\"gauge\":\"Gauge to check.\",\"gaugeType\":\"Type of the gauge.\"}},\"removeGauges(string,address[])\":{\"details\":\"Removed gauges will not be considered when performing checkpoints. To remove gauges: - They must be killed. - They must have been previously added to the checkpointer.\",\"params\":{\"gaugeType\":\"Type of the gauge.\",\"gauges\":\"Gauges to remove.\"}}},\"title\":\"Stakeless Gauge Checkpointer\",\"version\":1},\"userdoc\":{\"events\":{\"GaugeAdded(address,string,string)\":{\"notice\":\"Emitted when a gauge is added to the checkpointer.\"},\"GaugeRemoved(address,string,string)\":{\"notice\":\"Emitted when a gauge is removed from the checkpointer.\"}},\"kind\":\"user\",\"methods\":{\"addGauges(string,address[])\":{\"notice\":\"Adds an array of gauges from the given type.\"},\"addGaugesWithVerifiedType(string,address[])\":{\"notice\":\"Adds an array of gauges from the given type. This is a permissioned function.\"},\"checkpointAllGaugesAboveRelativeWeight(uint256)\":{\"notice\":\"Performs a checkpoint for all added gauges above the given relative weight threshold.\"},\"checkpointGaugesOfTypesAboveRelativeWeight(string[],uint256)\":{\"notice\":\"Performs a checkpoint for all added gauges above the given relative weight threshold for the given types.\"},\"checkpointMultipleGauges(string[],address[])\":{\"notice\":\"Performs a checkpoint for a multiple added gauges of the given types.\"},\"checkpointMultipleGaugesOfMatchingType(string,address[])\":{\"notice\":\"Performs a checkpoint for a multiple added gauges of the given types.\"},\"checkpointSingleGauge(string,address)\":{\"notice\":\"Performs a checkpoint for a single added gauge of a given type.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getGaugeAdder()\":{\"notice\":\"Returns `GaugeAdder` contract.\"},\"getGaugeAtIndex(string,uint256)\":{\"notice\":\"Returns the gauge of a given type at the given index.\"},\"getGaugeTypes()\":{\"notice\":\"Returns gauge types available in the checkpointer.\"},\"getGaugeTypesBridgeCost(string[],uint256)\":{\"notice\":\"Returns the ETH cost to checkpoint all gauges from the given types.\"},\"getRoundedDownBlockTimestamp()\":{\"notice\":\"Returns the timestamp corresponding to the start of the previous week of the current block.\"},\"getSingleBridgeCost(string,address)\":{\"notice\":\"Returns the ETH cost to checkpoint a single given gauge.\"},\"getTotalBridgeCost(uint256)\":{\"notice\":\"Returns the ETH cost to checkpoint all gauges for a given minimum relative weight.\"},\"getTotalGauges(string)\":{\"notice\":\"Returns the amount of added gauges for a given type.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"hasGauge(string,address)\":{\"notice\":\"Returns true if the given gauge was added for the given type; false otherwise.\"},\"isValidGaugeType(string)\":{\"notice\":\"Returns true if gauge type is valid; false otherwise.\"},\"removeGauges(string,address[])\":{\"notice\":\"Removes an array of gauges from the given type.\"}},\"notice\":\"Implements IStakelessGaugeCheckpointer; refer to it for API documentation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/StakelessGaugeCheckpointer.sol\":\"StakelessGaugeCheckpointer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol\":{\"keccak256\":\"0xc534a9120b1e85fdc2e40ae24a5264d4bb6fdbd458fe287fd8fe25a852bebe6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ba7317f70be2cdf2cdf81b1c2178a8297497e7bff697d9a001f7bdb01363d2b\",\"dweb:/ipfs/QmWBysYby5rywAfN6JQ9Dd6gdJf9jwLsQUyBPybnVvXe5z\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptorEntrypoint.sol\":{\"keccak256\":\"0x25b2a2ad63f9aa59c45f1a81a2f79733b8dcdce268cc9b1ac03866396f4b0d17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://efe9f30e6cab81587b738089165050d35533926703f4ad1da0f86452a69874ce\",\"dweb:/ipfs/QmcJoNP8NAEefchpG3qs3CwMw1qhxBJTgBMY4KY6g6qfUa\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeAdder.sol\":{\"keccak256\":\"0x50d40373e50d13566dbb624ac65494f70835aa52ff553e1185df480feae6ecd8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6038ec50171ea847ca9aeeec4af6e9721bcba35223d364f832da5f269e8a722\",\"dweb:/ipfs/QmdvyixjrpFud1kAS8un3wje2xUjrY82BRL7sUHqKvLJq2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGaugeCheckpointer.sol\":{\"keccak256\":\"0x09ff99f18e34cb0c794c080694581755503db45d8486bead830ec32dc1471226\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://620fbf404a1fd3ee079562de30b56d018bdef1aeb3e060fc73c31dc0e9ea0162\",\"dweb:/ipfs/QmeXPa87gfhbCa2y5XugFCC47Ea5aPLEsZuAaQMa7o8YXX\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/admin/GaugeAdder.sol\":{\"keccak256\":\"0x679ab1f31aad932b35cc34617b1b97279ddb03776059dbed8d8ab5fd9eb9c2cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1592b73fe75314e502fe86c8590051454919221e5decec8b6f9045e5800e14e\",\"dweb:/ipfs/QmY4vv3Rjdc567VoU6kT6EHKvU3TQzPxHQMgBbxcQqak7q\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/StakelessGaugeCheckpointer.sol\":{\"keccak256\":\"0x4c32cdf8730851fa001d34856461dcde2e766f75e68eb9f0e668ae17523f3787\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a064e381173ec93418b243eed213ff492eb3aac8e9e546d3b5fea15be06dc53f\",\"dweb:/ipfs/Qmc7TWLUgEkywxYvsdo4BMFUA5a7VGc46nUk6TCjWcPZmx\"]},\"contracts/gauges/arbitrum/ArbitrumRootGauge.sol\":{\"keccak256\":\"0x374c214f8fd093fabbd208de098bfc6ef6d7dafc3567bd455f19f9706073f72f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://eaa2ced6e8884d9e7a7c3eeffee53e98b42aa4467c10ed0391cd0576e4081754\",\"dweb:/ipfs/QmcUBCnzfJSwzmCigh6t2bCkvFCow9JLC7yFKBTZYKGG2v\"]},\"contracts/gauges/arbitrum/IGatewayRouter.sol\":{\"keccak256\":\"0x18111553a1164746a16d3143d5b8bf2e15f825eefcbe0a987539cebde460a0f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8b5dc6100de63234a9543ff772cfeaa26d004b3838f2173e233ecf4ead0df976\",\"dweb:/ipfs/QmZwLoAmyzXmRF5RoJyb3AHvyTWEuaJNX8oLTXF6k7jD5W\"]}},\"version\":1}"}},"contracts/gauges/arbitrum/ArbitrumRootGauge.sol":{"ArbitrumRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IGatewayRouter","name":"gatewayRouter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101e06040523480156200001257600080fd5b5060405162001bcd38038062001bcd833981810160405260408110156200003857600080fd5b508051602091820151600160009081556040805163e6dec36f60e01b815290519394929385936001600160a01b0385169263e6dec36f9260048083019392829003018186803b1580156200008b57600080fd5b505afa158015620000a0573d6000803e3d6000fd5b505050506040513d6020811015620000b757600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010057600080fd5b505afa15801562000115573d6000803e3d6000fd5b505050506040513d60208110156200012c57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017557600080fd5b505afa1580156200018a573d6000803e3d6000fd5b505050506040513d6020811015620001a157600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021257600080fd5b505afa15801562000227573d6000803e3d6000fd5b505050506040513d60208110156200023e57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d6020811015620002be57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030557600080fd5b505afa1580156200031a573d6000803e3d6000fd5b505050506040513d60208110156200033157600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200037857600080fd5b505afa1580156200038d573d6000803e3d6000fd5b505050506040513d6020811015620003a457600080fd5b505161016052505060001960025550506040805163c003969960e01b815290516001600160a01b038084169263bda009fe929186169163c003969991600480820192602092909190829003018186803b1580156200040157600080fd5b505afa15801562000416573d6000803e3d6000fd5b505050506040513d60208110156200042d57600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b039092166004830152516024808301926020929190829003018186803b1580156200047557600080fd5b505afa1580156200048a573d6000803e3d6000fd5b505050506040513d6020811015620004a157600080fd5b50516001600160601b0319606091821b81166101805291811b9091166101a05233901b6101c0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c6101c05160601c61164862000585600039806106005280610d1d525080610e40525080610cf15250806108d25250806108b1525080610834528061091e525080610383528061053f52806106d95280610b0d52508061042252806107c2525080610a145250806110765280611173525080610ccf5280610e7d52506116486000f3fe6080604052600436106100d25760003560e01c80639c868ac01161007f578063b024522511610059578063b024522514610265578063c2c4c5c11461027a578063cd6dc68714610282578063d34fb267146102c8576100d2565b80639c868ac0146102265780639f8676711461023b578063ab8f094514610250576100d2565b80631b88094d116100b05780631b88094d1461017f5780634b820093146101bd57806383f5c39b14610211576100d2565b806309400707146100d757806310d3eb041461012957806314e956f514610155575b600080fd5b3480156100e357600080fd5b50610117600480360360208110156100fa57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102dd565b60408051918252519081900360200190f35b34801561013557600080fd5b506101536004803603602081101561014c57600080fd5b503561036b565b005b34801561016157600080fd5b506101176004803603602081101561017857600080fd5b503561041b565b34801561018b57600080fd5b506101946104e9565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c957600080fd5b506101fd600480360360208110156101e057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610506565b604080519115158252519081900360200190f35b34801561021d57600080fd5b5061011761050c565b34801561023257600080fd5b506101fd610512565b34801561024757600080fd5b5061011761051b565b34801561025c57600080fd5b50610153610527565b34801561027157600080fd5b506101176105f8565b6101fd6106b7565b34801561028e57600080fd5b50610153600480360360408110156102a557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610aa4565b3480156102d457600080fd5b50610153610af5565b600073ffffffffffffffffffffffffffffffffffffffff8216301461036357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461040f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61041881610bc3565b50565b60006104e37f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104af57600080fd5b505afa1580156104c3573d6000803e3d6000fd5b505050506040513d60208110156104d957600080fd5b5051600654610c5f565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105cb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ac8288c06040518163ffffffff1660e01b815260040160606040518083038186803b15801561066457600080fd5b505afa158015610678573d6000803e3d6000fd5b505050506040513d606081101561068e57600080fd5b508051602082015160409092015190945090925090506106af838383610c6b565b935050505090565b60006106c1610c71565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461076557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610772610c8a565b905080821015610a9657604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff018110156109a9578481111561086e576109a9565b62093a8081026000806108808361041b565b905082851015801561089657508262093a800185105b1561094f57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008902816108fa57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506109649050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610856565b506002849055600480548301905581158015906109c9575060055460ff16155b15610a9257604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610a5c57600080fd5b505af1158015610a70573d6000803e3d6000fd5b505050506040513d6020811015610a8657600080fd5b50610a92905082610cb5565b5050505b600192505050610503610ffc565b610aad81611003565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610c24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806115bb6034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b91020190565b610c8360026000541415610190611215565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610d1673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611223565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ac8288c06040518163ffffffff1660e01b815260040160606040518083038186803b158015610d8157600080fd5b505afa158015610d95573d6000803e3d6000fd5b505050506040513d6060811015610dab57600080fd5b508051602082015160409092015190945090925090506000610dce848484610c6b565b9050803414610e3e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2ce7d65827f0000000000000000000000000000000000000000000000000000000000000000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16898989896040516020018082815260200180602001828103825260008152602001602001925050506040516020818303038152906040526040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610f8c578181015183820152602001610f74565b50505050905090810190601f168015610fb95780820380516001836020036101000a031916815260200191505b509750505050505050506000604051808303818588803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b50505050505050505050565b6001600055565b6002541561107257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110da57600080fd5b505afa1580156110ee573d6000803e3d6000fd5b505050506040513d602081101561110457600080fd5b505190508061115e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806115ef6024913960400191505060405180910390fd5b600181905561116b610c8a565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111d957600080fd5b505af11580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b505160035561121182610bc3565b5050565b8161121157611211816113f9565b80158015906112d25750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156112a357600080fd5b505afa1580156112b7573d6000803e3d6000fd5b505050506040513d60208110156112cd57600080fd5b505115155b15611367576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611367908490611423565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526113f4908490611423565b505050565b610418817f42414c000000000000000000000000000000000000000000000000000000000061153f565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061148c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161144f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114ee576040519150601f19603f3d011682016040523d82523d6000602084013e6114f3565b606091505b5091509150600082141561150b573d6000803e3d6000fd5b611539815160001480611531575081806020019051602081101561152e57600080fd5b50515b6101a2611215565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212202ddd39149091ef9b57cc92e0e32b27e04fa7e9dc950cd794d3bf20fd109df6f964736f6c63430007010033","opcodes":"PUSH2 0x1E0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1BCD CODESIZE SUB DUP1 PUSH3 0x1BCD DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 DUP6 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x18A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x227 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x31A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x38D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 PUSH4 0xBDA009FE SWAP3 SWAP2 DUP7 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x416 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x48A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x4A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP2 DUP2 SHL SWAP1 SWAP2 AND PUSH2 0x1A0 MSTORE CALLER SWAP1 SHL PUSH2 0x1C0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1C0 MLOAD PUSH1 0x60 SHR PUSH2 0x1648 PUSH3 0x585 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x600 MSTORE DUP1 PUSH2 0xD1D MSTORE POP DUP1 PUSH2 0xE40 MSTORE POP DUP1 PUSH2 0xCF1 MSTORE POP DUP1 PUSH2 0x8D2 MSTORE POP DUP1 PUSH2 0x8B1 MSTORE POP DUP1 PUSH2 0x834 MSTORE DUP1 PUSH2 0x91E MSTORE POP DUP1 PUSH2 0x383 MSTORE DUP1 PUSH2 0x53F MSTORE DUP1 PUSH2 0x6D9 MSTORE DUP1 PUSH2 0xB0D MSTORE POP DUP1 PUSH2 0x422 MSTORE DUP1 PUSH2 0x7C2 MSTORE POP DUP1 PUSH2 0xA14 MSTORE POP DUP1 PUSH2 0x1076 MSTORE DUP1 PUSH2 0x1173 MSTORE POP DUP1 PUSH2 0xCCF MSTORE DUP1 PUSH2 0xE7D MSTORE POP PUSH2 0x1648 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C868AC0 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x282 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2C8 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x250 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x211 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x155 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x36B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x41B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x4E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x506 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x50C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x512 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x51B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH2 0x527 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x6B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH2 0xAF5 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x363 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x40F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 DUP2 PUSH2 0xBC3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC5F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5CB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAC8288C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x678 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x6AF DUP4 DUP4 DUP4 PUSH2 0xC6B JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C1 PUSH2 0xC71 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x765 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x772 PUSH2 0xC8A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x809 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x9A9 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x86E JUMPI PUSH2 0x9A9 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x880 DUP4 PUSH2 0x41B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x896 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x94F JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x8FA JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x964 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x856 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x9C9 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA70 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA92 SWAP1 POP DUP3 PUSH2 0xCB5 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x503 PUSH2 0xFFC JUMP JUMPDEST PUSH2 0xAAD DUP2 PUSH2 0x1003 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB99 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xC24 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15BB PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0xC83 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xD16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1223 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAC8288C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0xDCE DUP5 DUP5 DUP5 PUSH2 0xC6B JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xE3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2CE7D65 DUP3 PUSH32 0x0 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF8C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF74 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFB9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFF0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x1072 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x115E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15EF PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x116B PUSH2 0xC8A JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x1211 DUP3 PUSH2 0xBC3 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x1211 JUMPI PUSH2 0x1211 DUP2 PUSH2 0x13F9 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x12D2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1367 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1367 SWAP1 DUP5 SWAP1 PUSH2 0x1423 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13F4 SWAP1 DUP5 SWAP1 PUSH2 0x1423 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x418 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x153F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x148C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x144F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x14EE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x14F3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x150B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1539 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1531 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x152E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1215 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212202DDD39149091EF9B57CC92E0E32B27E0 0x4F 0xA7 0xE9 0xDC SWAP6 0xC 0xD7 SWAP5 0xD3 0xBF KECCAK256 REVERT LT SWAP14 0xF6 0xF9 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"949:2808:91:-:0;;;1213:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1213:277:91;;;;;;;2070:1:63;2175:7;:22;;;1213:277:91;2339:30:89;;-1:-1:-1;2339:30:89;;;;1213:277:91;;;;;;-1:-1:-1;2339:28:89;;;-1:-1:-1;;2339:30:89;;;;;1213:277:91;2339:30:89;;;;;:28;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2339:30:89;2398:29;;;-1:-1:-1;2398:29:89;;;;2339:30;;-1:-1:-1;2380:15:89;;-1:-1:-1;2398:27:89;;;-1:-1:-1;;2398:29:89;;;;;2339:30;;2398:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2398:29:89;2472:27;;;-1:-1:-1;2472:27:89;;;;2398:29;;-1:-1:-1;2437:32:89;;-1:-1:-1;2472:25:89;;;;;:27;;;;;2398:29;;2472:27;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2472:27:89;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2472:27;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;2472:27;;2665:23;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2665:23:89;2644:44;;-1:-1:-1;2644:44:89;;;2722:32;;;-1:-1:-1;2722:32:89;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;2665:23;;2722:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2722:32:89;2699:55;;2794:39;;;-1:-1:-1;2794:39:89;;;;-1:-1:-1;2794:37:89;;;-1:-1:-1;;2794:39:89;;;;;2722:32;;2794:39;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:39:89;2764:69;;2863:29;;;-1:-1:-1;2863:29:89;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;2794:39;;2863:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2863:29:89;2843:49;;-1:-1:-1;;;3053:7:89;:27;-1:-1:-1;;1363:25:91::1;::::0;;-1:-1:-1;1363:25:91;;;;-1:-1:-1;1330:24:91;;::::1;::::0;::::1;::::0;1363:23;;::::1;::::0;-1:-1:-1;;1363:25:91::1;::::0;;::::1;::::0;2863:29:89;;1363:25:91;;;;;;;;:23;:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;1363:25:91;1330:60:::1;::::0;;-1:-1:-1;1330:60:91;;;-1:-1:-1;1330:60:91;;;-1:-1:-1;1330:60:91;;::::1;;::::0;::::1;::::0;;;;;;;1363:25:::1;::::0;1330:60;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;1330:60:91;-1:-1:-1;;;;;;1319:71:91::1;::::0;;;;;::::1;::::0;1400:30;;;;;;::::1;::::0;1472:10:::1;1440:43:::0;::::1;;::::0;-1:-1:-1;949:2808:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":3279},{"length":32,"start":3709}],"14642":[{"length":32,"start":4214},{"length":32,"start":4467}],"14644":[{"length":32,"start":2580}],"14646":[{"length":32,"start":1058},{"length":32,"start":1986}],"14648":[{"length":32,"start":899},{"length":32,"start":1343},{"length":32,"start":1753},{"length":32,"start":2829}],"14656":[{"length":32,"start":2100},{"length":32,"start":2334}],"14658":[{"length":32,"start":2225}],"14660":[{"length":32,"start":2258}],"16313":[{"length":32,"start":3313}],"16315":[{"length":32,"start":3648}],"16317":[{"length":32,"start":1536},{"length":32,"start":3357}]},"linkReferences":{},"object":"6080604052600436106100d25760003560e01c80639c868ac01161007f578063b024522511610059578063b024522514610265578063c2c4c5c11461027a578063cd6dc68714610282578063d34fb267146102c8576100d2565b80639c868ac0146102265780639f8676711461023b578063ab8f094514610250576100d2565b80631b88094d116100b05780631b88094d1461017f5780634b820093146101bd57806383f5c39b14610211576100d2565b806309400707146100d757806310d3eb041461012957806314e956f514610155575b600080fd5b3480156100e357600080fd5b50610117600480360360208110156100fa57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102dd565b60408051918252519081900360200190f35b34801561013557600080fd5b506101536004803603602081101561014c57600080fd5b503561036b565b005b34801561016157600080fd5b506101176004803603602081101561017857600080fd5b503561041b565b34801561018b57600080fd5b506101946104e9565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c957600080fd5b506101fd600480360360208110156101e057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610506565b604080519115158252519081900360200190f35b34801561021d57600080fd5b5061011761050c565b34801561023257600080fd5b506101fd610512565b34801561024757600080fd5b5061011761051b565b34801561025c57600080fd5b50610153610527565b34801561027157600080fd5b506101176105f8565b6101fd6106b7565b34801561028e57600080fd5b50610153600480360360408110156102a557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610aa4565b3480156102d457600080fd5b50610153610af5565b600073ffffffffffffffffffffffffffffffffffffffff8216301461036357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461040f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61041881610bc3565b50565b60006104e37f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104af57600080fd5b505afa1580156104c3573d6000803e3d6000fd5b505050506040513d60208110156104d957600080fd5b5051600654610c5f565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105cb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ac8288c06040518163ffffffff1660e01b815260040160606040518083038186803b15801561066457600080fd5b505afa158015610678573d6000803e3d6000fd5b505050506040513d606081101561068e57600080fd5b508051602082015160409092015190945090925090506106af838383610c6b565b935050505090565b60006106c1610c71565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461076557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610772610c8a565b905080821015610a9657604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff018110156109a9578481111561086e576109a9565b62093a8081026000806108808361041b565b905082851015801561089657508262093a800185105b1561094f57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008902816108fa57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506109649050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610856565b506002849055600480548301905581158015906109c9575060055460ff16155b15610a9257604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610a5c57600080fd5b505af1158015610a70573d6000803e3d6000fd5b505050506040513d6020811015610a8657600080fd5b50610a92905082610cb5565b5050505b600192505050610503610ffc565b610aad81611003565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610c24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806115bb6034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b91020190565b610c8360026000541415610190611215565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610d1673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611223565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ac8288c06040518163ffffffff1660e01b815260040160606040518083038186803b158015610d8157600080fd5b505afa158015610d95573d6000803e3d6000fd5b505050506040513d6060811015610dab57600080fd5b508051602082015160409092015190945090925090506000610dce848484610c6b565b9050803414610e3e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2ce7d65827f0000000000000000000000000000000000000000000000000000000000000000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16898989896040516020018082815260200180602001828103825260008152602001602001925050506040516020818303038152906040526040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610f8c578181015183820152602001610f74565b50505050905090810190601f168015610fb95780820380516001836020036101000a031916815260200191505b509750505050505050506000604051808303818588803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b50505050505050505050565b6001600055565b6002541561107257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110da57600080fd5b505afa1580156110ee573d6000803e3d6000fd5b505050506040513d602081101561110457600080fd5b505190508061115e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806115ef6024913960400191505060405180910390fd5b600181905561116b610c8a565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111d957600080fd5b505af11580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b505160035561121182610bc3565b5050565b8161121157611211816113f9565b80158015906112d25750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156112a357600080fd5b505afa1580156112b7573d6000803e3d6000fd5b505050506040513d60208110156112cd57600080fd5b505115155b15611367576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611367908490611423565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526113f4908490611423565b505050565b610418817f42414c000000000000000000000000000000000000000000000000000000000061153f565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061148c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161144f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114ee576040519150601f19603f3d011682016040523d82523d6000602084013e6114f3565b606091505b5091509150600082141561150b573d6000803e3d6000fd5b611539815160001480611531575081806020019051602081101561152e57600080fd5b50515b6101a2611215565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212202ddd39149091ef9b57cc92e0e32b27e04fa7e9dc950cd794d3bf20fd109df6f964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C868AC0 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x282 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2C8 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x250 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x211 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x155 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x36B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x41B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x4E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x506 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x50C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x512 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x51B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH2 0x527 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x6B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH2 0xAF5 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x363 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x40F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 DUP2 PUSH2 0xBC3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC5F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5CB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAC8288C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x678 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x6AF DUP4 DUP4 DUP4 PUSH2 0xC6B JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C1 PUSH2 0xC71 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x765 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x772 PUSH2 0xC8A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x809 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x9A9 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x86E JUMPI PUSH2 0x9A9 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x880 DUP4 PUSH2 0x41B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x896 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x94F JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x8FA JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x964 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x856 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x9C9 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA70 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA92 SWAP1 POP DUP3 PUSH2 0xCB5 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x503 PUSH2 0xFFC JUMP JUMPDEST PUSH2 0xAAD DUP2 PUSH2 0x1003 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB99 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xC24 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15BB PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0xC83 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xD16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1223 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAC8288C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0xDCE DUP5 DUP5 DUP5 PUSH2 0xC6B JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xE3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2CE7D65 DUP3 PUSH32 0x0 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF8C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF74 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFB9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFF0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x1072 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x115E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15EF PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x116B PUSH2 0xC8A JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x1211 DUP3 PUSH2 0xBC3 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x1211 JUMPI PUSH2 0x1211 DUP2 PUSH2 0x13F9 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x12D2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1367 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1367 SWAP1 DUP5 SWAP1 PUSH2 0x1423 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13F4 SWAP1 DUP5 SWAP1 PUSH2 0x1423 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x418 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x153F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x148C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x144F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x14EE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x14F3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x150B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1539 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1531 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x152E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1215 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212202DDD39149091EF9B57CC92E0E32B27E0 0x4F 0xA7 0xE9 0xDC SWAP6 0xC 0xD7 SWAP5 0xD3 0xBF KECCAK256 REVERT LT SWAP14 0xF6 0xF9 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"949:2808:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6895:191:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6895:191:89;;;;:::i;:::-;;;;;;;;;;;;;;;;7513:214;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7513:214:89;;:::i;:::-;;8159:199;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:199:89;;:::i;1729:99:91:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6789:100:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6789:100:89;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8038:115;;;;;;;;;;;;;:::i;7092:92::-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;3277:255:91:-;;;;;;;;;;;;;:::i;3697:2655:89:-;;;:::i;1496:227:91:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1496:227:91;;;;;;;;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;6895:191::-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8271:59:89;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;1729:99:91:-;1811:10;;;;1729:99;;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;8038:115::-;8128:18;;8038:115;:::o;7092:92::-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;3277:255:91:-;3339:7;3359:16;3377;3395:25;3424:8;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3424:26:91;;;;;;;;;;;;;-1:-1:-1;3424:26:91;;-1:-1:-1;3424:26:91;-1:-1:-1;3467:58:91;3424:26;;;3467:19;:58::i;:::-;3460:65;;;;;3277:255;:::o;3697:2655:89:-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;;4042:4:::1;4000:48;::::0;::::1;::::0;;;:33:::1;:16;:33;::::0;::::1;::::0;:48;;;;;-1:-1:-1;;4000:48:89;;;;;;;-1:-1:-1;4000:33:89;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5978:38;::::0;;;;;;;5989:10;;5978:38:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;;6246:4:::1;6225:27;::::0;::::1;::::0;;;:12:::1;:7;:12;::::0;::::1;::::0;:27;;;;;::::1;::::0;;;;;;;;-1:-1:-1;6225:12:89;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6270:29:89::1;::::0;-1:-1:-1;6286:12:89;6270:15:::1;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;1496:227:91:-;1643:40;1665:17;1643:21;:40::i;:::-;-1:-1:-1;1694:10:91;:22;;;;;;;;;;;;;;;1496:227::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7929:18;:38;;;7982:43;;;;;;;;;;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;3538:217:91:-;3709:19;;:39;;3538:217::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;1834:1437:91:-;1983:43;:21;:9;:21;2005:8;2015:10;1983:21;:43::i;:::-;2038:16;2056;2074:25;2103:8;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2103:26:91;;;;;;;;;;;;;-1:-1:-1;2103:26:91;;-1:-1:-1;2103:26:91;-1:-1:-1;2139:23:91;2165:58;2103:26;;;2165:19;:58::i;:::-;2139:84;;2254:15;2241:9;:28;2233:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3035:14;:31;;;3075:15;3106:9;3129:10;;;;;;;;;;;3153;3177:8;3199;3232:17;3221:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3035:229;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1834:1437;;;;;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3428:18:89;;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3601:33:89;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;;1256:4;1232:43;;;;:15;:43;;;;;;;;;:15;;;;;;:43;;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1232:43:64;:48;;1218:62;1214:183;;;1332:53;;;;;;;;;;1383:1;1332:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:22;1332:53;;;1296:90;;1324:5;;1296:19;:90::i;:::-;1443:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1466:22;1443:57;;;1407:94;;1435:5;;1407:19;:94::i;:::-;1001:507;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:64;3143:56;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IGatewayRouter\",\"name\":\"gatewayRouter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/arbitrum/ArbitrumRootGauge.sol\":\"ArbitrumRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol\":{\"keccak256\":\"0xc534a9120b1e85fdc2e40ae24a5264d4bb6fdbd458fe287fd8fe25a852bebe6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ba7317f70be2cdf2cdf81b1c2178a8297497e7bff697d9a001f7bdb01363d2b\",\"dweb:/ipfs/QmWBysYby5rywAfN6JQ9Dd6gdJf9jwLsQUyBPybnVvXe5z\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/arbitrum/ArbitrumRootGauge.sol\":{\"keccak256\":\"0x374c214f8fd093fabbd208de098bfc6ef6d7dafc3567bd455f19f9706073f72f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://eaa2ced6e8884d9e7a7c3eeffee53e98b42aa4467c10ed0391cd0576e4081754\",\"dweb:/ipfs/QmcUBCnzfJSwzmCigh6t2bCkvFCow9JLC7yFKBTZYKGG2v\"]},\"contracts/gauges/arbitrum/IGatewayRouter.sol\":{\"keccak256\":\"0x18111553a1164746a16d3143d5b8bf2e15f825eefcbe0a987539cebde460a0f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8b5dc6100de63234a9543ff772cfeaa26d004b3838f2173e233ecf4ead0df976\",\"dweb:/ipfs/QmZwLoAmyzXmRF5RoJyb3AHvyTWEuaJNX8oLTXF6k7jD5W\"]}},\"version\":1}"}},"contracts/gauges/arbitrum/ArbitrumRootGaugeFactory.sol":{"ArbitrumRootGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IGatewayRouter","name":"gatewayRouter","type":"address"},{"internalType":"uint64","name":"gasLimit","type":"uint64"},{"internalType":"uint64","name":"gasPrice","type":"uint64"},{"internalType":"uint64","name":"maxSubmissionCost","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"gasLimit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"}],"name":"ArbitrumFeesModified","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getArbitrumFees","outputs":[{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"gasLimit","type":"uint64"},{"internalType":"uint64","name":"gasPrice","type":"uint64"},{"internalType":"uint64","name":"maxSubmissionCost","type":"uint64"}],"name":"setArbitrumFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b50604051620027a5380380620027a583398101604081905261003191610135565b85306001600160a01b031660001b868660405161004d9061010a565b6100589291906101b3565b604051809103906000f080158015610074573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905560805260601b6001600160601b03191660a052600280546001600160401b0319166001600160401b0394851617600160401b600160801b031916680100000000000000009385169390930292909217600160801b600160c01b031916600160801b9190931602919091179055506101e5915050565b611bcd8062000bd883390190565b80516001600160401b038116811461012f57600080fd5b92915050565b60008060008060008060c0878903121561014d578182fd5b8651610158816101cd565b6020880151909650610169816101cd565b604088015190955061017a816101cd565b93506101898860608901610118565b92506101988860808901610118565b91506101a78860a08901610118565b90509295509295509295565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03811681146101e257600080fd5b50565b60805160a05160601c6109cc6200020c600039806102495250806101f852506109cc6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063aaabadc51161005b578063aaabadc5146100e6578063ac8288c0146100ee578063ce3cc8bd14610105578063e9bde6041461012557610088565b80630ecaea731461008d57806339312dee146100b6578063851c1bb3146100be5780638d928af8146100de575b600080fd5b6100a061009b366004610760565b61013a565b6040516100ad919061087c565b60405180910390f35b6100a06101d8565b6100d16100cc3660046107ab565b6101f4565b6040516100ad91906108ce565b6100a0610247565b6100a061026b565b6100f66102f7565b6040516100ad9392919061093a565b610118610113366004610744565b610330565b6040516100ad91906108c3565b610138610133366004610807565b61035b565b005b600080610145610449565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc6879061019c908790879060040161089d565b600060405180830381600087803b1580156101b657600080fd5b505af11580156101ca573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f00000000000000000000000000000000000000000000000000000000000000008260405160200161022992919061084c565b6040516020818303038152906040528051906020012090505b919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610275610247565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ba57600080fd5b505afa1580156102ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f291906107eb565b905090565b60025467ffffffffffffffff80821692680100000000000000008304821692700100000000000000000000000000000000900490911690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6103636104ef565b600280547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff858116919091177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff166801000000000000000085831602177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000918416919091021790556040517f3db8f737ebeecf95c5dc9b279051cab0e7b70a8e3d63148b38faafcf7d42314e9061043c90859085908590610950565b60405180910390a1505050565b60008054819061046e9073ffffffffffffffffffffffffffffffffffffffff16610538565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b600061051e6000357fffffffff00000000000000000000000000000000000000000000000000000000166101f4565b905061053561052d82336105ee565b61019161068b565b50565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610242576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e590610903565b60405180910390fd5b60006105f861026b565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610634939291906108d7565b60206040518083038186803b15801561064c57600080fd5b505afa158015610660573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610684919061078b565b9392505050565b81610699576106998161069d565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610535917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803567ffffffffffffffff811681146101d257600080fd5b600060208284031215610755578081fd5b813561068481610974565b60008060408385031215610772578081fd5b823561077d81610974565b946020939093013593505050565b60006020828403121561079c578081fd5b81518015158114610684578182fd5b6000602082840312156107bc578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610684578182fd5b6000602082840312156107fc578081fd5b815161068481610974565b60008060006060848603121561081b578081fd5b610825858561072c565b9250610834856020860161072c565b9150610843856040860161072c565b90509250925092565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b9283526020830191909152604082015260600190565b67ffffffffffffffff93841681529183166020830152909116604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff8116811461053557600080fdfea2646970667358221220b64cb1ec8ee43367b18e9dce1b64119a3efee5df73f83f33dd5ddd6c3580246864736f6c634300070100336101e06040523480156200001257600080fd5b5060405162001bcd38038062001bcd833981810160405260408110156200003857600080fd5b508051602091820151600160009081556040805163e6dec36f60e01b815290519394929385936001600160a01b0385169263e6dec36f9260048083019392829003018186803b1580156200008b57600080fd5b505afa158015620000a0573d6000803e3d6000fd5b505050506040513d6020811015620000b757600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010057600080fd5b505afa15801562000115573d6000803e3d6000fd5b505050506040513d60208110156200012c57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017557600080fd5b505afa1580156200018a573d6000803e3d6000fd5b505050506040513d6020811015620001a157600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021257600080fd5b505afa15801562000227573d6000803e3d6000fd5b505050506040513d60208110156200023e57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d6020811015620002be57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030557600080fd5b505afa1580156200031a573d6000803e3d6000fd5b505050506040513d60208110156200033157600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200037857600080fd5b505afa1580156200038d573d6000803e3d6000fd5b505050506040513d6020811015620003a457600080fd5b505161016052505060001960025550506040805163c003969960e01b815290516001600160a01b038084169263bda009fe929186169163c003969991600480820192602092909190829003018186803b1580156200040157600080fd5b505afa15801562000416573d6000803e3d6000fd5b505050506040513d60208110156200042d57600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b039092166004830152516024808301926020929190829003018186803b1580156200047557600080fd5b505afa1580156200048a573d6000803e3d6000fd5b505050506040513d6020811015620004a157600080fd5b50516001600160601b0319606091821b81166101805291811b9091166101a05233901b6101c0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c6101c05160601c61164862000585600039806106005280610d1d525080610e40525080610cf15250806108d25250806108b1525080610834528061091e525080610383528061053f52806106d95280610b0d52508061042252806107c2525080610a145250806110765280611173525080610ccf5280610e7d52506116486000f3fe6080604052600436106100d25760003560e01c80639c868ac01161007f578063b024522511610059578063b024522514610265578063c2c4c5c11461027a578063cd6dc68714610282578063d34fb267146102c8576100d2565b80639c868ac0146102265780639f8676711461023b578063ab8f094514610250576100d2565b80631b88094d116100b05780631b88094d1461017f5780634b820093146101bd57806383f5c39b14610211576100d2565b806309400707146100d757806310d3eb041461012957806314e956f514610155575b600080fd5b3480156100e357600080fd5b50610117600480360360208110156100fa57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102dd565b60408051918252519081900360200190f35b34801561013557600080fd5b506101536004803603602081101561014c57600080fd5b503561036b565b005b34801561016157600080fd5b506101176004803603602081101561017857600080fd5b503561041b565b34801561018b57600080fd5b506101946104e9565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c957600080fd5b506101fd600480360360208110156101e057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610506565b604080519115158252519081900360200190f35b34801561021d57600080fd5b5061011761050c565b34801561023257600080fd5b506101fd610512565b34801561024757600080fd5b5061011761051b565b34801561025c57600080fd5b50610153610527565b34801561027157600080fd5b506101176105f8565b6101fd6106b7565b34801561028e57600080fd5b50610153600480360360408110156102a557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610aa4565b3480156102d457600080fd5b50610153610af5565b600073ffffffffffffffffffffffffffffffffffffffff8216301461036357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461040f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61041881610bc3565b50565b60006104e37f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104af57600080fd5b505afa1580156104c3573d6000803e3d6000fd5b505050506040513d60208110156104d957600080fd5b5051600654610c5f565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105cb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ac8288c06040518163ffffffff1660e01b815260040160606040518083038186803b15801561066457600080fd5b505afa158015610678573d6000803e3d6000fd5b505050506040513d606081101561068e57600080fd5b508051602082015160409092015190945090925090506106af838383610c6b565b935050505090565b60006106c1610c71565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461076557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610772610c8a565b905080821015610a9657604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff018110156109a9578481111561086e576109a9565b62093a8081026000806108808361041b565b905082851015801561089657508262093a800185105b1561094f57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008902816108fa57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506109649050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610856565b506002849055600480548301905581158015906109c9575060055460ff16155b15610a9257604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610a5c57600080fd5b505af1158015610a70573d6000803e3d6000fd5b505050506040513d6020811015610a8657600080fd5b50610a92905082610cb5565b5050505b600192505050610503610ffc565b610aad81611003565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610c24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806115bb6034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b91020190565b610c8360026000541415610190611215565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610d1673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611223565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ac8288c06040518163ffffffff1660e01b815260040160606040518083038186803b158015610d8157600080fd5b505afa158015610d95573d6000803e3d6000fd5b505050506040513d6060811015610dab57600080fd5b508051602082015160409092015190945090925090506000610dce848484610c6b565b9050803414610e3e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2ce7d65827f0000000000000000000000000000000000000000000000000000000000000000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16898989896040516020018082815260200180602001828103825260008152602001602001925050506040516020818303038152906040526040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610f8c578181015183820152602001610f74565b50505050905090810190601f168015610fb95780820380516001836020036101000a031916815260200191505b509750505050505050506000604051808303818588803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b50505050505050505050565b6001600055565b6002541561107257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110da57600080fd5b505afa1580156110ee573d6000803e3d6000fd5b505050506040513d602081101561110457600080fd5b505190508061115e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806115ef6024913960400191505060405180910390fd5b600181905561116b610c8a565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111d957600080fd5b505af11580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b505160035561121182610bc3565b5050565b8161121157611211816113f9565b80158015906112d25750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156112a357600080fd5b505afa1580156112b7573d6000803e3d6000fd5b505050506040513d60208110156112cd57600080fd5b505115155b15611367576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611367908490611423565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526113f4908490611423565b505050565b610418817f42414c000000000000000000000000000000000000000000000000000000000061153f565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061148c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161144f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114ee576040519150601f19603f3d011682016040523d82523d6000602084013e6114f3565b606091505b5091509150600082141561150b573d6000803e3d6000fd5b611539815160001480611531575081806020019051602081101561152e57600080fd5b50515b6101a2611215565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212202ddd39149091ef9b57cc92e0e32b27e04fa7e9dc950cd794d3bf20fd109df6f964736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x27A5 CODESIZE SUB DUP1 PUSH3 0x27A5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x31 SWAP2 PUSH2 0x135 JUMP JUMPDEST DUP6 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SHL DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x4D SWAP1 PUSH2 0x10A JUMP JUMPDEST PUSH2 0x58 SWAP3 SWAP2 SWAP1 PUSH2 0x1B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x80 MSTORE PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP5 DUP6 AND OR PUSH1 0x1 PUSH1 0x40 SHL PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH9 0x10000000000000000 SWAP4 DUP6 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH1 0x1 PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 SWAP1 SWAP4 AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x1E5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1BCD DUP1 PUSH3 0xBD8 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x14D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP7 MLOAD PUSH2 0x158 DUP2 PUSH2 0x1CD JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD SWAP1 SWAP7 POP PUSH2 0x169 DUP2 PUSH2 0x1CD JUMP JUMPDEST PUSH1 0x40 DUP9 ADD MLOAD SWAP1 SWAP6 POP PUSH2 0x17A DUP2 PUSH2 0x1CD JUMP JUMPDEST SWAP4 POP PUSH2 0x189 DUP9 PUSH1 0x60 DUP10 ADD PUSH2 0x118 JUMP JUMPDEST SWAP3 POP PUSH2 0x198 DUP9 PUSH1 0x80 DUP10 ADD PUSH2 0x118 JUMP JUMPDEST SWAP2 POP PUSH2 0x1A7 DUP9 PUSH1 0xA0 DUP10 ADD PUSH2 0x118 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x9CC PUSH3 0x20C PUSH1 0x0 CODECOPY DUP1 PUSH2 0x249 MSTORE POP DUP1 PUSH2 0x1F8 MSTORE POP PUSH2 0x9CC PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0xAC8288C0 EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0xE9BDE604 EQ PUSH2 0x125 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xDE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x760 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x87C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH2 0x1D8 JUMP JUMPDEST PUSH2 0xD1 PUSH2 0xCC CALLDATASIZE PUSH1 0x4 PUSH2 0x7AB JUMP JUMPDEST PUSH2 0x1F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8CE JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x247 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x26B JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x2F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x93A JUMP JUMPDEST PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x744 JUMP JUMPDEST PUSH2 0x330 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8C3 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x807 JUMP JUMPDEST PUSH2 0x35B JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x145 PUSH2 0x449 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0x19C SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x89D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x229 SWAP3 SWAP2 SWAP1 PUSH2 0x84C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x275 PUSH2 0x247 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F2 SWAP2 SWAP1 PUSH2 0x7EB JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH9 0x10000000000000000 DUP4 DIV DUP3 AND SWAP3 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x363 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP6 DUP4 AND MUL OR PUSH32 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 SWAP2 DUP5 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x3DB8F737EBEECF95C5DC9B279051CAB0E7B70A8E3D63148B38FAAFCF7D42314E SWAP1 PUSH2 0x43C SWAP1 DUP6 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x950 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x46E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x538 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51E PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1F4 JUMP JUMPDEST SWAP1 POP PUSH2 0x535 PUSH2 0x52D DUP3 CALLER PUSH2 0x5EE JUMP JUMPDEST PUSH2 0x191 PUSH2 0x68B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x242 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP1 PUSH2 0x903 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5F8 PUSH2 0x26B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x634 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x660 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x684 SWAP2 SWAP1 PUSH2 0x78B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x699 JUMPI PUSH2 0x699 DUP2 PUSH2 0x69D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x535 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x755 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x684 DUP2 PUSH2 0x974 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x772 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x77D DUP2 PUSH2 0x974 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x79C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x684 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7BC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x684 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7FC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x684 DUP2 PUSH2 0x974 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x81B JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x825 DUP6 DUP6 PUSH2 0x72C JUMP JUMPDEST SWAP3 POP PUSH2 0x834 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x72C JUMP JUMPDEST SWAP2 POP PUSH2 0x843 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x72C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 0x4C 0xB1 0xEC DUP15 0xE4 CALLER PUSH8 0xB18E9DCE1B64119A RETURNDATACOPY INVALID 0xE5 0xDF PUSH20 0xF83F33DD5DDD6C3580246864736F6C6343000701 STOP CALLER PUSH2 0x1E0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1BCD CODESIZE SUB DUP1 PUSH3 0x1BCD DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 DUP6 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x18A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x227 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x31A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x38D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 PUSH4 0xBDA009FE SWAP3 SWAP2 DUP7 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x416 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x48A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x4A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP2 DUP2 SHL SWAP1 SWAP2 AND PUSH2 0x1A0 MSTORE CALLER SWAP1 SHL PUSH2 0x1C0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1C0 MLOAD PUSH1 0x60 SHR PUSH2 0x1648 PUSH3 0x585 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x600 MSTORE DUP1 PUSH2 0xD1D MSTORE POP DUP1 PUSH2 0xE40 MSTORE POP DUP1 PUSH2 0xCF1 MSTORE POP DUP1 PUSH2 0x8D2 MSTORE POP DUP1 PUSH2 0x8B1 MSTORE POP DUP1 PUSH2 0x834 MSTORE DUP1 PUSH2 0x91E MSTORE POP DUP1 PUSH2 0x383 MSTORE DUP1 PUSH2 0x53F MSTORE DUP1 PUSH2 0x6D9 MSTORE DUP1 PUSH2 0xB0D MSTORE POP DUP1 PUSH2 0x422 MSTORE DUP1 PUSH2 0x7C2 MSTORE POP DUP1 PUSH2 0xA14 MSTORE POP DUP1 PUSH2 0x1076 MSTORE DUP1 PUSH2 0x1173 MSTORE POP DUP1 PUSH2 0xCCF MSTORE DUP1 PUSH2 0xE7D MSTORE POP PUSH2 0x1648 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C868AC0 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x282 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2C8 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x250 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x211 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x155 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x36B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x41B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x4E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x506 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x50C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x512 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x51B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH2 0x527 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x6B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x153 PUSH2 0xAF5 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x363 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x40F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 DUP2 PUSH2 0xBC3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC5F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5CB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAC8288C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x678 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x6AF DUP4 DUP4 DUP4 PUSH2 0xC6B JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C1 PUSH2 0xC71 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x765 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x772 PUSH2 0xC8A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x809 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x9A9 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x86E JUMPI PUSH2 0x9A9 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x880 DUP4 PUSH2 0x41B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x896 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x94F JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x8FA JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x964 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x856 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x9C9 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA70 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA92 SWAP1 POP DUP3 PUSH2 0xCB5 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x503 PUSH2 0xFFC JUMP JUMPDEST PUSH2 0xAAD DUP2 PUSH2 0x1003 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB99 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xC24 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15BB PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0xC83 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xD16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1223 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAC8288C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0xDCE DUP5 DUP5 DUP5 PUSH2 0xC6B JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xE3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2CE7D65 DUP3 PUSH32 0x0 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF8C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF74 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFB9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFF0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x1072 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x115E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15EF PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x116B PUSH2 0xC8A JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x1211 DUP3 PUSH2 0xBC3 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x1211 JUMPI PUSH2 0x1211 DUP2 PUSH2 0x13F9 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x12D2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1367 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1367 SWAP1 DUP5 SWAP1 PUSH2 0x1423 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13F4 SWAP1 DUP5 SWAP1 PUSH2 0x1423 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x418 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x153F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x148C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x144F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x14EE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x14F3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x150B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1539 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1531 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x152E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1215 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212202DDD39149091EF9B57CC92E0E32B27E0 0x4F 0xA7 0xE9 0xDC SWAP6 0xC 0xD7 SWAP5 0xD3 0xBF KECCAK256 REVERT LT SWAP14 0xF6 0xF9 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"973:2283:92:-:0;;;1276:419;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1573:5;1054:4:51;-1:-1:-1;;;;;1038:22:51;1030:31;;1524:6:92;1532:13;1502:44;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;2049:46:46;;1073:14:51::1;::::0;-1:-1:-1;;;;;;1073:14:51;::::1;::::0;1590:9:92::2;:20:::0;;-1:-1:-1;;;;;;1590:20:92::2;-1:-1:-1::0;;;;;1590:20:92;;::::2;;-1:-1:-1::0;;;;;;;;1620:20:92::2;::::0;;;::::2;::::0;;;::::2;::::0;;;::::2;-1:-1:-1::0;;;;;;;;1650:38:92::2;-1:-1:-1::0;;;1650:38:92;;;::::2;;::::0;;;::::2;::::0;;-1:-1:-1;973:2283:92;;-1:-1:-1;;973:2283:92;;;;;;;;;:::o;566:132:-1:-;643:13;;-1:-1;;;;;3262:30;;4520:34;;4510:2;;4568:1;;4558:12;4510:2;628:70;;;;:::o;705:1078::-;;;;;;;971:3;959:9;950:7;946:23;942:33;939:2;;;-1:-1;;978:12;939:2;494:6;488:13;506:48;548:5;506:48;:::i;:::-;1156:2;1236:22;;302:13;1030:89;;-1:-1;320:63;302:13;320:63;:::i;:::-;1305:2;1379:22;;107:13;1164:104;;-1:-1;125:57;107:13;125:57;:::i;:::-;1313:98;-1:-1;1466:63;1521:7;1448:2;1497:22;;1466:63;:::i;:::-;1456:73;;1585:63;1640:7;1566:3;1620:9;1616:22;1585:63;:::i;:::-;1575:73;;1704:63;1759:7;1685:3;1739:9;1735:22;1704:63;:::i;:::-;1694:73;;933:850;;;;;;;;:::o;2164:441::-;-1:-1;;;;;3135:54;;;1885:74;;3135:54;;2591:2;2576:18;;1885:74;2373:2;2358:18;;2344:261::o;3952:165::-;-1:-1;;;;;3135:54;;4035:59;;4025:2;;4108:1;;4098:12;4025:2;4019:98;:::o;:::-;973:2283:92;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":504}],"3611":[{"length":32,"start":585}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c8063aaabadc51161005b578063aaabadc5146100e6578063ac8288c0146100ee578063ce3cc8bd14610105578063e9bde6041461012557610088565b80630ecaea731461008d57806339312dee146100b6578063851c1bb3146100be5780638d928af8146100de575b600080fd5b6100a061009b366004610760565b61013a565b6040516100ad919061087c565b60405180910390f35b6100a06101d8565b6100d16100cc3660046107ab565b6101f4565b6040516100ad91906108ce565b6100a0610247565b6100a061026b565b6100f66102f7565b6040516100ad9392919061093a565b610118610113366004610744565b610330565b6040516100ad91906108c3565b610138610133366004610807565b61035b565b005b600080610145610449565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc6879061019c908790879060040161089d565b600060405180830381600087803b1580156101b657600080fd5b505af11580156101ca573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f00000000000000000000000000000000000000000000000000000000000000008260405160200161022992919061084c565b6040516020818303038152906040528051906020012090505b919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610275610247565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ba57600080fd5b505afa1580156102ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f291906107eb565b905090565b60025467ffffffffffffffff80821692680100000000000000008304821692700100000000000000000000000000000000900490911690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6103636104ef565b600280547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff858116919091177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff166801000000000000000085831602177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000918416919091021790556040517f3db8f737ebeecf95c5dc9b279051cab0e7b70a8e3d63148b38faafcf7d42314e9061043c90859085908590610950565b60405180910390a1505050565b60008054819061046e9073ffffffffffffffffffffffffffffffffffffffff16610538565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b600061051e6000357fffffffff00000000000000000000000000000000000000000000000000000000166101f4565b905061053561052d82336105ee565b61019161068b565b50565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610242576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e590610903565b60405180910390fd5b60006105f861026b565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610634939291906108d7565b60206040518083038186803b15801561064c57600080fd5b505afa158015610660573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610684919061078b565b9392505050565b81610699576106998161069d565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610535917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803567ffffffffffffffff811681146101d257600080fd5b600060208284031215610755578081fd5b813561068481610974565b60008060408385031215610772578081fd5b823561077d81610974565b946020939093013593505050565b60006020828403121561079c578081fd5b81518015158114610684578182fd5b6000602082840312156107bc578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610684578182fd5b6000602082840312156107fc578081fd5b815161068481610974565b60008060006060848603121561081b578081fd5b610825858561072c565b9250610834856020860161072c565b9150610843856040860161072c565b90509250925092565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b9283526020830191909152604082015260600190565b67ffffffffffffffff93841681529183166020830152909116604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff8116811461053557600080fdfea2646970667358221220b64cb1ec8ee43367b18e9dce1b64119a3efee5df73f83f33dd5ddd6c3580246864736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0xAC8288C0 EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0xE9BDE604 EQ PUSH2 0x125 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xDE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x760 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x87C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH2 0x1D8 JUMP JUMPDEST PUSH2 0xD1 PUSH2 0xCC CALLDATASIZE PUSH1 0x4 PUSH2 0x7AB JUMP JUMPDEST PUSH2 0x1F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8CE JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x247 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x26B JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x2F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x93A JUMP JUMPDEST PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x744 JUMP JUMPDEST PUSH2 0x330 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8C3 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x807 JUMP JUMPDEST PUSH2 0x35B JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x145 PUSH2 0x449 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0x19C SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x89D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x229 SWAP3 SWAP2 SWAP1 PUSH2 0x84C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x275 PUSH2 0x247 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F2 SWAP2 SWAP1 PUSH2 0x7EB JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH9 0x10000000000000000 DUP4 DIV DUP3 AND SWAP3 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x363 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP6 DUP4 AND MUL OR PUSH32 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 SWAP2 DUP5 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x3DB8F737EBEECF95C5DC9B279051CAB0E7B70A8E3D63148B38FAAFCF7D42314E SWAP1 PUSH2 0x43C SWAP1 DUP6 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x950 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x46E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x538 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51E PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x1F4 JUMP JUMPDEST SWAP1 POP PUSH2 0x535 PUSH2 0x52D DUP3 CALLER PUSH2 0x5EE JUMP JUMPDEST PUSH2 0x191 PUSH2 0x68B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x242 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP1 PUSH2 0x903 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5F8 PUSH2 0x26B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x634 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x660 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x684 SWAP2 SWAP1 PUSH2 0x78B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x699 JUMPI PUSH2 0x699 DUP2 PUSH2 0x69D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x535 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x755 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x684 DUP2 PUSH2 0x974 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x772 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x77D DUP2 PUSH2 0x974 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x79C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x684 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7BC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x684 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7FC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x684 DUP2 PUSH2 0x974 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x81B JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x825 DUP6 DUP6 PUSH2 0x72C JUMP JUMPDEST SWAP3 POP PUSH2 0x834 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x72C JUMP JUMPDEST SWAP2 POP PUSH2 0x843 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x72C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 0x4C 0xB1 0xEC DUP15 0xE4 CALLER PUSH8 0xB18E9DCE1B64119A RETURNDATACOPY INVALID 0xE5 0xDF PUSH20 0xF83F33DD5DDD6C3580246864736F6C6343000701 STOP CALLER ","sourceMap":"973:2283:92:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2591:228;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;2607:430:46:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1158:79:51:-;;;:::i;1297:109::-;;;:::i;1795:319:92:-;;;:::i;:::-;;;;;;;;;:::i;1507:131:83:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2919:335:92:-;;;;;;:::i;:::-;;:::i;:::-;;2591:228;2671:7;2690:13;2706:9;:7;:9::i;:::-;2725:65;;;;;2690:25;;-1:-1:-1;2725:35:92;;;;;;:65;;2761:9;;2772:17;;2725:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2807:5:92;;-1:-1:-1;;;;2591:228:92;;;;;:::o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;1297:109::-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;1795:319:92:-;2020:9;;;;;;;2050;;;;;;2089:18;;;;;;;1795:319::o;1507:131:83:-;1605:26;;1582:4;1605:26;;;:19;:26;;;;;;;;;1507:131::o;2919:335:92:-;2276:21:46;:19;:21::i;:::-;3075:9:92::1;:20:::0;;;::::1;;::::0;;::::1;::::0;;;::::1;3105::::0;::::1;::::0;;;::::1;;;3135:38:::0;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;3188:59:::1;::::0;::::1;::::0;::::1;::::0;3075:20;;3105;;3135:38;;3188:59:::1;:::i;:::-;;;;;;;;2919:335:::0;;;:::o;1854:214:83:-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;:::-;2420:181;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;1412:178:51;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1516:67;1412:178;-1:-1:-1;;;1412:178:51:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;730:128:-1;796:20;;9077:18;9066:30;;10683:34;;10673:2;;10731:1;;10721:12;865:241;;969:2;957:9;948:7;944:23;940:32;937:2;;;-1:-1;;975:12;937:2;85:6;72:20;97:33;124:5;97:33;:::i;1113:366::-;;;1234:2;1222:9;1213:7;1209:23;1205:32;1202:2;;;-1:-1;;1240:12;1202:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1292:63;1392:2;1431:22;;;;660:20;;-1:-1;;;1196:283::o;1486:257::-;;1598:2;1586:9;1577:7;1573:23;1569:32;1566:2;;;-1:-1;;1604:12;1566:2;223:6;217:13;10178:5;8424:13;8417:21;10156:5;10153:32;10143:2;;-1:-1;;10189:12;1750:239;;1853:2;1841:9;1832:7;1828:23;1824:32;1821:2;;;-1:-1;;1859:12;1821:2;356:6;343:20;8601:66;10300:5;8590:78;10276:5;10273:34;10263:2;;-1:-1;;10311:12;1996:303;;2131:2;2119:9;2110:7;2106:23;2102:32;2099:2;;;-1:-1;;2137:12;2099:2;516:6;510:13;528:53;575:5;528:53;:::i;2306:485::-;;;;2441:2;2429:9;2420:7;2416:23;2412:32;2409:2;;;-1:-1;;2447:12;2409:2;2509:52;2553:7;2529:22;2509:52;:::i;:::-;2499:62;;2616:52;2660:7;2598:2;2640:9;2636:22;2616:52;:::i;:::-;2606:62;;2723:52;2767:7;2705:2;2747:9;2743:22;2723:52;:::i;:::-;2713:62;;2403:388;;;;;:::o;4381:387::-;3100:37;;;8601:66;8590:78;4632:2;4623:12;;3395:56;4732:11;;;4523:245::o;4775:222::-;8871:42;8860:54;;;;2869:37;;4902:2;4887:18;;4873:124::o;5004:333::-;8871:42;8860:54;;;;2869:37;;5323:2;5308:18;;3100:37;5159:2;5144:18;;5130:207::o;5344:210::-;8424:13;;8417:21;2983:34;;5465:2;5450:18;;5436:118::o;5561:222::-;3100:37;;;5688:2;5673:18;;5659:124::o;5790:444::-;3100:37;;;8871:42;8860:54;;;6137:2;6122:18;;2869:37;8860:54;6220:2;6205:18;;2869:37;5973:2;5958:18;;5944:290::o;6769:416::-;6969:2;6983:47;;;4024:2;6954:18;;;8192:19;4060:24;8232:14;;;4040:45;4104:12;;;6940:245::o;7192:444::-;3100:37;;;7539:2;7524:18;;3100:37;;;;7622:2;7607:18;;3100:37;7375:2;7360:18;;7346:290::o;7643:438::-;9077:18;9066:30;;;4320:49;;9066:30;;;7985:2;7970:18;;4320:49;9066:30;;;8067:2;8052:18;;4320:49;7823:2;7808:18;;7794:287::o;9973:117::-;8871:42;10060:5;8860:54;10035:5;10032:35;10022:2;;10081:1;;10071:12"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getActionId(bytes4)":"851c1bb3","getArbitrumFees()":"ac8288c0","getAuthorizer()":"aaabadc5","getGaugeImplementation()":"39312dee","getVault()":"8d928af8","isGaugeFromFactory(address)":"ce3cc8bd","setArbitrumFees(uint64,uint64,uint64)":"e9bde604"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IGatewayRouter\",\"name\":\"gatewayRouter\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasPrice\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxSubmissionCost\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"}],\"name\":\"ArbitrumFeesModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getArbitrumFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasPrice\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxSubmissionCost\",\"type\":\"uint64\"}],\"name\":\"setArbitrumFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Arbitrum.\"},\"getArbitrumFees()\":{\"notice\":\"Set the fees for the Arbitrum side of the bridging transaction\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"},\"setArbitrumFees(uint64,uint64,uint64)\":{\"notice\":\"Set the fees for the Arbitrum side of the bridging transaction\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/arbitrum/ArbitrumRootGaugeFactory.sol\":\"ArbitrumRootGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IArbitrumFeeProvider.sol\":{\"keccak256\":\"0xc534a9120b1e85fdc2e40ae24a5264d4bb6fdbd458fe287fd8fe25a852bebe6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ba7317f70be2cdf2cdf81b1c2178a8297497e7bff697d9a001f7bdb01363d2b\",\"dweb:/ipfs/QmWBysYby5rywAfN6JQ9Dd6gdJf9jwLsQUyBPybnVvXe5z\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/arbitrum/ArbitrumRootGauge.sol\":{\"keccak256\":\"0x374c214f8fd093fabbd208de098bfc6ef6d7dafc3567bd455f19f9706073f72f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://eaa2ced6e8884d9e7a7c3eeffee53e98b42aa4467c10ed0391cd0576e4081754\",\"dweb:/ipfs/QmcUBCnzfJSwzmCigh6t2bCkvFCow9JLC7yFKBTZYKGG2v\"]},\"contracts/gauges/arbitrum/ArbitrumRootGaugeFactory.sol\":{\"keccak256\":\"0xc85d8c6eb1632020c153421bc34439f58f64b508e36f748bc1516292a7a85e3e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ef522ebcb936c43ccafc4fb348f657157e7ba9aa365299f355e527fae6bac899\",\"dweb:/ipfs/QmWbgqKXZ1PLfpfznEwk4EoMF8Nvp5ibynGEHu2Qpi6ZsQ\"]},\"contracts/gauges/arbitrum/IGatewayRouter.sol\":{\"keccak256\":\"0x18111553a1164746a16d3143d5b8bf2e15f825eefcbe0a987539cebde460a0f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8b5dc6100de63234a9543ff772cfeaa26d004b3838f2173e233ecf4ead0df976\",\"dweb:/ipfs/QmZwLoAmyzXmRF5RoJyb3AHvyTWEuaJNX8oLTXF6k7jD5W\"]}},\"version\":1}"}},"contracts/gauges/arbitrum/IGatewayRouter.sol":{"IGatewayRouter":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getGateway","outputs":[{"internalType":"address","name":"gateway","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"outboundTransfer","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getGateway(address)":"bda009fe","outboundTransfer(address,address,uint256,uint256,uint256,bytes)":"d2ce7d65"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getGateway\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"gateway\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"outboundTransfer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/arbitrum/IGatewayRouter.sol\":\"IGatewayRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"contracts/gauges/arbitrum/IGatewayRouter.sol\":{\"keccak256\":\"0x18111553a1164746a16d3143d5b8bf2e15f825eefcbe0a987539cebde460a0f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8b5dc6100de63234a9543ff772cfeaa26d004b3838f2173e233ecf4ead0df976\",\"dweb:/ipfs/QmZwLoAmyzXmRF5RoJyb3AHvyTWEuaJNX8oLTXF6k7jD5W\"]}},\"version\":1}"}},"contracts/gauges/avalanche/AvalancheRootGauge.sol":{"AvalancheRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract ILayerZeroBALProxy","name":"lzBALProxy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getBALProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumBridgeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101c06040523480156200001257600080fd5b506040516200216d3803806200216d8339810160408190526200003591620005a3565b8160016000819055506000816001600160a01b031663e6dec36f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200007a57600080fd5b505afa1580156200008f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b591906200057d565b90506000816001600160a01b031663c00396996040518163ffffffff1660e01b815260040160206040518083038186803b158015620000f357600080fd5b505afa15801562000108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012e91906200057d565b90506000836001600160a01b03166358de9ade6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016c57600080fd5b505afa15801562000181573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a791906200057d565b6001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021657600080fd5b505afa1580156200022b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025191906200057d565b6001600160a01b0316610100816001600160a01b031660601b81525050826001600160a01b031663b87b56166040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a857600080fd5b505afa158015620002bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e39190620005e1565b6101208181525050826001600160a01b03166321609bbf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032557600080fd5b505afa1580156200033a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003609190620005e1565b6101408181525050826001600160a01b0316637efad8e06040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a257600080fd5b505afa158015620003b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003dd9190620005e1565b61016052505060001960025550506001600160601b0319606082901b166101805260408051630857749b60e41b815290516000916001600160a01b0384169163857749b09160048082019260209290919082900301818787803b1580156200044457600080fd5b505af115801562000459573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047f9190620005fa565b836001600160a01b031663c00396996040518163ffffffff1660e01b815260040160206040518083038186803b158015620004b957600080fd5b505afa158015620004ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f491906200057d565b6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200052d57600080fd5b505afa15801562000542573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005689190620005fa565b0360ff16600a0a6101a0525062000636915050565b6000602082840312156200058f578081fd5b81516200059c816200061d565b9392505050565b60008060408385031215620005b6578081fd5b8251620005c3816200061d565b6020840151909250620005d6816200061d565b809150509250929050565b600060208284031215620005f3578081fd5b5051919050565b6000602082840312156200060c578081fd5b815160ff811681146200059c578182fd5b6001600160a01b03811681146200063357600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a051611a6d62000700600039806104685280610e7c52508061028652806109545280610bb95280610c9a5280610d695280610f3b5280610f6252508061073d52508061071c52508061069f528061078952508061032352806104bd528061057a5280610aa652508061038d5280610625525080610878525080611081528061116b52508061091d5280610f195250611a6d6000f3fe6080604052600436106100e85760003560e01c806383f5c39b1161008a578063b024522511610059578063b024522514610232578063c2c4c5c114610247578063cd6dc6871461024f578063d34fb2671461026f576100e8565b806383f5c39b146101de5780639c868ac0146101f35780639f86767114610208578063ab8f09451461021d576100e8565b806314e956f5116100c657806314e956f5146101675780631b88094d146101875780634b8200931461019c5780635e8a8389146101c9576100e8565b806305c2c78d146100ed578063094007071461011857806310d3eb0414610145575b600080fd5b3480156100f957600080fd5b50610102610284565b60405161010f91906116a3565b60405180910390f35b34801561012457600080fd5b5061013861013336600461152b565b6102a9565b60405161010f91906119e0565b34801561015157600080fd5b506101656101603660046115b5565b61030b565b005b34801561017357600080fd5b506101386101823660046115b5565b610386565b34801561019357600080fd5b50610102610444565b3480156101a857600080fd5b506101bc6101b736600461152b565b610460565b60405161010f91906117b7565b3480156101d557600080fd5b50610138610466565b3480156101ea57600080fd5b5061013861048a565b3480156101ff57600080fd5b506101bc610490565b34801561021457600080fd5b50610138610499565b34801561022957600080fd5b506101656104a5565b34801561023e57600080fd5b50610138610541565b6101bc610558565b34801561025b57600080fd5b5061016561026a36600461156a565b61091b565b34801561027b57600080fd5b50610165610a8e565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff82163014610303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611958565b60405180910390fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b61038381610b27565b50565b600061043e7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b81526004016103e6929190611791565b60206040518083038186803b1580156103fe57600080fd5b505afa158015610412573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043691906115cd565b600654610ba9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610514576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600061055361054e610bb5565b610d64565b905090565b6000610562610e30565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b60025460006105de610e49565b90508082101561090d576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e52379061065a9030906004016116a3565b600060405180830381600087803b15801561067457600080fd5b505af1158015610688573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561081657848111156106d957610816565b62093a8081026000806106eb83610386565b905082851015801561070157508262093a800185105b156107ba57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161076557fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506107cf9050565b670de0b6b3a764000062093a80828902020491505b827f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced836040516107ff91906119e0565b60405180910390a2509390930192506001016106c1565b50600284905560048054830190558115801590610836575060055460ff16155b15610909576040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636a627842906108ad9030906004016116a3565b602060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ff91906115cd565b5061090982610e74565b5050505b6001925050506102a661103c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109b857600080fd5b505afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f0919061154e565b73ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117f9565b610a4681611043565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610afd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610b69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611867565b60068190556040517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb290610b9e9083906119e0565b60405180910390a150565b80820390821102900390565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ed629c5c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1d57600080fd5b505afa158015610c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c559190611595565b15610d4f576040517f8cfd8f5c00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690638cfd8f5c90610cd290606a9085906004016119cb565b60206040518083038186803b158015610cea57600080fd5b505afa158015610cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2291906115cd565b9050600181604051602001610d3892919061166e565b6040516020818303038152906040529150506102a6565b506040805160208101909152600081526102a6565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663365260b4606a610db5610db0610444565b611219565b600080886040518663ffffffff1660e01b8152600401610dd995949392919061198f565b604080518083038186803b158015610df057600080fd5b505afa158015610e04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2891906115e5565b509392505050565b610e4260026000541415610190611232565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6000610ea0827f0000000000000000000000000000000000000000000000000000000000000000611240565b905080610ead5750610383565b6060610eb7610bb5565b90506000610ec482610d64565b9050803414610eff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611830565b610f6073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000086611257565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632cdf0b958230606a610fab610db0610444565b60408051606081018252338152600060208201528082018a905290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152611004949392918c918c9190600401611714565b6000604051808303818588803b15801561101d57600080fd5b505af1158015611031573d6000803e3d6000fd5b505050505050505050565b6001600055565b6002541561107d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611921565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e557600080fd5b505afa1580156110f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111d91906115cd565b905080611156576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906118c4565b6001819055611163610e49565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111d157600080fd5b505af11580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120991906115cd565b60035561121582610b27565b5050565b73ffffffffffffffffffffffffffffffffffffffff1690565b8161121557611215816113d3565b60008082848161124c57fe5b069093039392505050565b801580159061130857506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e906112b590309086906004016116c4565b60206040518083038186803b1580156112cd57600080fd5b505afa1580156112e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130591906115cd565b15155b156113af576113af8363095ea7b360e01b84600060405160240161132d9291906116eb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526113fd565b6113ce8363095ea7b360e01b848460405160240161132d929190611791565b505050565b610383817f42414c00000000000000000000000000000000000000000000000000000000006114b0565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114269190611652565b6000604051808303816000865af19150503d8060008114611463576040519150601f19603f3d011682016040523d82523d6000602084013e611468565b606091505b50915091506000821415611480573d6000803e3d6000fd5b6114aa8151600014806114a25750818060200190518101906114a29190611595565b6101a2611232565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006020828403121561153c578081fd5b813561154781611a15565b9392505050565b60006020828403121561155f578081fd5b815161154781611a15565b6000806040838503121561157c578081fd5b823561158781611a15565b946020939093013593505050565b6000602082840312156115a6578081fd5b81518015158114611547578182fd5b6000602082840312156115c6578081fd5b5035919050565b6000602082840312156115de578081fd5b5051919050565b600080604083850312156115f7578182fd5b505080516020909101519092909150565b600081518084526116208160208601602086016119e9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516116648184602087016119e9565b9190910192915050565b60f09290921b7fffff000000000000000000000000000000000000000000000000000000000000168252600282015260220190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808916835261ffff8816602084015286604084015285606084015284608084015260c060a08401528084511660c08401528060208501511660e08401525060408301516060610100840152611784610120840182611608565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526012908201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604082015260600190565b60208082526015908201527f496e76616c6964205772617070657220546f6b656e0000000000000000000000604082015260600190565b6020808252601a908201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604082015260600190565b60208082526034908201527f52656c61746976652077656967687420636170206578636565647320616c6c6f60408201527f776564206162736f6c757465206d6178696d756d000000000000000000000000606082015260800190565b60208082526024908201527f42616c616e636572546f6b656e41646d696e206e6f742079657420616374697660408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252601e908201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604082015260600190565b600061ffff87168252856020830152846040830152831515606083015260a060808301526119c060a0830184611608565b979650505050505050565b61ffff92831681529116602082015260400190565b90815260200190565b60005b83811015611a045781810151838201526020016119ec565b838111156114aa5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461038357600080fdfea2646970667358221220ef03472d8e7790ef76063674dedc8dd461c87c6258cb8f2af640a844c22b0c2e64736f6c63430007010033","opcodes":"PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x216D CODESIZE SUB DUP1 PUSH3 0x216D DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x5A3 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE6DEC36F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xB5 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0039699 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x108 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x12E SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x58DE9ADE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x181 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1A7 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x22B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x251 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB87B5616 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x2E3 SWAP2 SWAP1 PUSH3 0x5E1 JUMP JUMPDEST PUSH2 0x120 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x21609BBF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x33A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x360 SWAP2 SWAP1 PUSH3 0x5E1 JUMP JUMPDEST PUSH2 0x140 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7EFAD8E0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x3DD SWAP2 SWAP1 PUSH3 0x5E1 JUMP JUMPDEST PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH2 0x180 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x857749B PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x857749B0 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x459 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x47F SWAP2 SWAP1 PUSH3 0x5FA JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0039699 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x4CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x4F4 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x542 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x568 SWAP2 SWAP1 PUSH3 0x5FA JUMP JUMPDEST SUB PUSH1 0xFF AND PUSH1 0xA EXP PUSH2 0x1A0 MSTORE POP PUSH3 0x636 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x58F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x59C DUP2 PUSH3 0x61D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x5B6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x5C3 DUP2 PUSH3 0x61D JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x5D6 DUP2 PUSH3 0x61D JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5F3 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x60C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x59C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH2 0x1A6D PUSH3 0x700 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x468 MSTORE DUP1 PUSH2 0xE7C MSTORE POP DUP1 PUSH2 0x286 MSTORE DUP1 PUSH2 0x954 MSTORE DUP1 PUSH2 0xBB9 MSTORE DUP1 PUSH2 0xC9A MSTORE DUP1 PUSH2 0xD69 MSTORE DUP1 PUSH2 0xF3B MSTORE DUP1 PUSH2 0xF62 MSTORE POP DUP1 PUSH2 0x73D MSTORE POP DUP1 PUSH2 0x71C MSTORE POP DUP1 PUSH2 0x69F MSTORE DUP1 PUSH2 0x789 MSTORE POP DUP1 PUSH2 0x323 MSTORE DUP1 PUSH2 0x4BD MSTORE DUP1 PUSH2 0x57A MSTORE DUP1 PUSH2 0xAA6 MSTORE POP DUP1 PUSH2 0x38D MSTORE DUP1 PUSH2 0x625 MSTORE POP DUP1 PUSH2 0x878 MSTORE POP DUP1 PUSH2 0x1081 MSTORE DUP1 PUSH2 0x116B MSTORE POP DUP1 PUSH2 0x91D MSTORE DUP1 PUSH2 0xF19 MSTORE POP PUSH2 0x1A6D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x26F JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x21D JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0x5E8A8389 EQ PUSH2 0x1C9 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x5C2C78D EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x145 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x284 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x152B JUMP JUMPDEST PUSH2 0x2A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x160 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B5 JUMP JUMPDEST PUSH2 0x30B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B5 JUMP JUMPDEST PUSH2 0x386 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x444 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x1B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x152B JUMP JUMPDEST PUSH2 0x460 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x17B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x466 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x48A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x490 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x499 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x4A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x541 JUMP JUMPDEST PUSH2 0x1BC PUSH2 0x558 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0x156A JUMP JUMPDEST PUSH2 0x91B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0xA8E JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x303 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x37A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH2 0x383 DUP2 PUSH2 0xB27 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43E PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E6 SWAP3 SWAP2 SWAP1 PUSH2 0x1791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x412 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x436 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xBA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x514 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x553 PUSH2 0x54E PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0xD64 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x562 PUSH2 0xE30 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x5DE PUSH2 0xE49 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x90D JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x65A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x688 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x816 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x6D9 JUMPI PUSH2 0x816 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x6EB DUP4 PUSH2 0x386 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x701 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x7BA JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x765 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x7CF SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST DUP3 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED DUP4 PUSH1 0x40 MLOAD PUSH2 0x7FF SWAP2 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x6C1 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x836 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x909 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x8AD SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8FF SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST POP PUSH2 0x909 DUP3 PUSH2 0xE74 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x2A6 PUSH2 0x103C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9F0 SWAP2 SWAP1 PUSH2 0x154E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17F9 JUMP JUMPDEST PUSH2 0xA46 DUP2 PUSH2 0x1043 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xAFD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1867 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP1 PUSH2 0xB9E SWAP1 DUP4 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xED629C5C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC31 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC55 SWAP2 SWAP1 PUSH2 0x1595 JUMP JUMPDEST ISZERO PUSH2 0xD4F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8CFD8F5C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x8CFD8F5C SWAP1 PUSH2 0xCD2 SWAP1 PUSH1 0x6A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x19CB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD22 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD38 SWAP3 SWAP2 SWAP1 PUSH2 0x166E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2A6 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x365260B4 PUSH1 0x6A PUSH2 0xDB5 PUSH2 0xDB0 PUSH2 0x444 JUMP JUMPDEST PUSH2 0x1219 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDD9 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x198F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE28 SWAP2 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE42 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA0 DUP3 PUSH32 0x0 PUSH2 0x1240 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xEAD JUMPI POP PUSH2 0x383 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEB7 PUSH2 0xBB5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xEC4 DUP3 PUSH2 0xD64 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xEFF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1830 JUMP JUMPDEST PUSH2 0xF60 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP7 PUSH2 0x1257 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2CDF0B95 DUP3 ADDRESS PUSH1 0x6A PUSH2 0xFAB PUSH2 0xDB0 PUSH2 0x444 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE DUP1 DUP3 ADD DUP11 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP9 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x1004 SWAP5 SWAP4 SWAP3 SWAP2 DUP13 SWAP2 DUP13 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1031 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x107D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1921 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x111D SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1156 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x1163 PUSH2 0xE49 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1209 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST PUSH1 0x3 SSTORE PUSH2 0x1215 DUP3 PUSH2 0xB27 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x1215 JUMPI PUSH2 0x1215 DUP2 PUSH2 0x13D3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 PUSH2 0x124C JUMPI INVALID JUMPDEST MOD SWAP1 SWAP4 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1308 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x12B5 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x16C4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1305 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x13AF JUMPI PUSH2 0x13AF DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x16EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x13FD JUMP JUMPDEST PUSH2 0x13CE DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x1791 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x383 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x14B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1426 SWAP2 SWAP1 PUSH2 0x1652 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1463 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1468 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1480 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x14AA DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x14A2 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x14A2 SWAP2 SWAP1 PUSH2 0x1595 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1232 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x153C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1547 DUP2 PUSH2 0x1A15 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x155F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1547 DUP2 PUSH2 0x1A15 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x157C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1587 DUP2 PUSH2 0x1A15 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15A6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1547 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15C6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15DE JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15F7 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1620 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19E9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1664 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19E9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xF0 SWAP3 SWAP1 SWAP3 SHL PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND DUP3 MSTORE PUSH1 0x2 DUP3 ADD MSTORE PUSH1 0x22 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE PUSH2 0xFFFF DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP7 PUSH1 0x40 DUP5 ADD MSTORE DUP6 PUSH1 0x60 DUP5 ADD MSTORE DUP5 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP5 ADD MSTORE DUP1 DUP5 MLOAD AND PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0xE0 DUP5 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x1784 PUSH2 0x120 DUP5 ADD DUP3 PUSH2 0x1608 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964205772617070657220546F6B656E0000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C61746976652077656967687420636170206578636565647320616C6C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x776564206162736F6C757465206D6178696D756D000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x42616C616E636572546F6B656E41646D696E206E6F7420796574206163746976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6174656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP8 AND DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x19C0 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1608 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A04 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19EC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14AA JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF SUB SELFBALANCE 0x2D DUP15 PUSH24 0x90EF76063674DEDC8DD461C87C6258CB8F2AF640A844C22B 0xC 0x2E PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"3915:6692:94:-:0;;;5605:310;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5694:6;2070:1:63;2175:7;:22;;;;2286:30:89;2339:6;-1:-1:-1;;;;;2339:28:89;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2286:84;;2380:15;2398:10;-1:-1:-1;;;;;2398:27:89;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2380:47;;2437:32;2472:6;-1:-1:-1;;;;;2472:25:89;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2600:34;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;;;;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2644:44;;;;;;2722:32;;;;;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;;;;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2699:55;;2794:39;;;;;;;;-1:-1:-1;2794:37:89;;;;;:39;;;;;;;;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2764:69;;2863:29;;;;;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;;;;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2843:49;;-1:-1:-1;;;3053:7:89;:27;-1:-1:-1;;;5712:24:94;;;-1:-1:-1;5712:24:94;::::1;::::0;5827:27:::1;::::0;;-1:-1:-1;5827:27:94;;;;-1:-1:-1;;;5712:24:94;::::1;::::0;5827:25:::1;::::0;:27:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;5712:24:94;5827:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5786:6;-1:-1:-1::0;;;;;5786:23:94::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5772:50:94::1;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:82;5887:21;;:2;:21;5864:44;::::0;-1:-1:-1;3915:6692:94;;-1:-1:-1;;3915:6692:94;1612:313:-1;;1752:2;1740:9;1731:7;1727:23;1723:32;1720:2;;;-1:-1;;1758:12;1720:2;114:6;108:13;126:58;178:5;126:58;:::i;:::-;1810:99;1714:211;-1:-1;;;1714:211::o;3188:515::-;;;3378:2;3366:9;3357:7;3353:23;3349:32;3346:2;;;-1:-1;;3384:12;3346:2;1247:6;1241:13;1259:63;1316:5;1259:63;:::i;:::-;3577:2;3655:22;;1042:13;3436:104;;-1:-1;1060:61;1042:13;1060:61;:::i;:::-;3585:102;;;;3340:363;;;;;:::o;3710:263::-;;3825:2;3813:9;3804:7;3800:23;3796:32;3793:2;;;-1:-1;;3831:12;3793:2;-1:-1;1412:13;;3787:186;-1:-1;3787:186::o;3980:259::-;;4093:2;4081:9;4072:7;4068:23;4064:32;4061:2;;;-1:-1;;4099:12;4061:2;1557:6;1551:13;5479:4;6913:5;5468:16;6890:5;6887:33;6877:2;;-1:-1;;6924:12;5496:167;-1:-1;5263:54;;5580:60;;5570:2;;5654:1;;5644:12;5570:2;5564:99;:::o;:::-;3915:6692:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":2333},{"length":32,"start":3865}],"14642":[{"length":32,"start":4225},{"length":32,"start":4459}],"14644":[{"length":32,"start":2168}],"14646":[{"length":32,"start":909},{"length":32,"start":1573}],"14648":[{"length":32,"start":803},{"length":32,"start":1213},{"length":32,"start":1402},{"length":32,"start":2726}],"14656":[{"length":32,"start":1695},{"length":32,"start":1929}],"14658":[{"length":32,"start":1820}],"14660":[{"length":32,"start":1853}],"16755":[{"length":32,"start":646},{"length":32,"start":2388},{"length":32,"start":3001},{"length":32,"start":3226},{"length":32,"start":3433},{"length":32,"start":3899},{"length":32,"start":3938}],"16757":[{"length":32,"start":1128},{"length":32,"start":3708}]},"linkReferences":{},"object":"6080604052600436106100e85760003560e01c806383f5c39b1161008a578063b024522511610059578063b024522514610232578063c2c4c5c114610247578063cd6dc6871461024f578063d34fb2671461026f576100e8565b806383f5c39b146101de5780639c868ac0146101f35780639f86767114610208578063ab8f09451461021d576100e8565b806314e956f5116100c657806314e956f5146101675780631b88094d146101875780634b8200931461019c5780635e8a8389146101c9576100e8565b806305c2c78d146100ed578063094007071461011857806310d3eb0414610145575b600080fd5b3480156100f957600080fd5b50610102610284565b60405161010f91906116a3565b60405180910390f35b34801561012457600080fd5b5061013861013336600461152b565b6102a9565b60405161010f91906119e0565b34801561015157600080fd5b506101656101603660046115b5565b61030b565b005b34801561017357600080fd5b506101386101823660046115b5565b610386565b34801561019357600080fd5b50610102610444565b3480156101a857600080fd5b506101bc6101b736600461152b565b610460565b60405161010f91906117b7565b3480156101d557600080fd5b50610138610466565b3480156101ea57600080fd5b5061013861048a565b3480156101ff57600080fd5b506101bc610490565b34801561021457600080fd5b50610138610499565b34801561022957600080fd5b506101656104a5565b34801561023e57600080fd5b50610138610541565b6101bc610558565b34801561025b57600080fd5b5061016561026a36600461156a565b61091b565b34801561027b57600080fd5b50610165610a8e565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff82163014610303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611958565b60405180910390fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b61038381610b27565b50565b600061043e7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b81526004016103e6929190611791565b60206040518083038186803b1580156103fe57600080fd5b505afa158015610412573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043691906115cd565b600654610ba9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610514576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600061055361054e610bb5565b610d64565b905090565b6000610562610e30565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b60025460006105de610e49565b90508082101561090d576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e52379061065a9030906004016116a3565b600060405180830381600087803b15801561067457600080fd5b505af1158015610688573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561081657848111156106d957610816565b62093a8081026000806106eb83610386565b905082851015801561070157508262093a800185105b156107ba57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161076557fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506107cf9050565b670de0b6b3a764000062093a80828902020491505b827f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced836040516107ff91906119e0565b60405180910390a2509390930192506001016106c1565b50600284905560048054830190558115801590610836575060055460ff16155b15610909576040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636a627842906108ad9030906004016116a3565b602060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ff91906115cd565b5061090982610e74565b5050505b6001925050506102a661103c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109b857600080fd5b505afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f0919061154e565b73ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117f9565b610a4681611043565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610afd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610b69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611867565b60068190556040517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb290610b9e9083906119e0565b60405180910390a150565b80820390821102900390565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ed629c5c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1d57600080fd5b505afa158015610c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c559190611595565b15610d4f576040517f8cfd8f5c00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690638cfd8f5c90610cd290606a9085906004016119cb565b60206040518083038186803b158015610cea57600080fd5b505afa158015610cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2291906115cd565b9050600181604051602001610d3892919061166e565b6040516020818303038152906040529150506102a6565b506040805160208101909152600081526102a6565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663365260b4606a610db5610db0610444565b611219565b600080886040518663ffffffff1660e01b8152600401610dd995949392919061198f565b604080518083038186803b158015610df057600080fd5b505afa158015610e04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2891906115e5565b509392505050565b610e4260026000541415610190611232565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6000610ea0827f0000000000000000000000000000000000000000000000000000000000000000611240565b905080610ead5750610383565b6060610eb7610bb5565b90506000610ec482610d64565b9050803414610eff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611830565b610f6073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000086611257565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632cdf0b958230606a610fab610db0610444565b60408051606081018252338152600060208201528082018a905290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152611004949392918c918c9190600401611714565b6000604051808303818588803b15801561101d57600080fd5b505af1158015611031573d6000803e3d6000fd5b505050505050505050565b6001600055565b6002541561107d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611921565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e557600080fd5b505afa1580156110f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111d91906115cd565b905080611156576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906118c4565b6001819055611163610e49565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111d157600080fd5b505af11580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120991906115cd565b60035561121582610b27565b5050565b73ffffffffffffffffffffffffffffffffffffffff1690565b8161121557611215816113d3565b60008082848161124c57fe5b069093039392505050565b801580159061130857506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e906112b590309086906004016116c4565b60206040518083038186803b1580156112cd57600080fd5b505afa1580156112e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130591906115cd565b15155b156113af576113af8363095ea7b360e01b84600060405160240161132d9291906116eb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526113fd565b6113ce8363095ea7b360e01b848460405160240161132d929190611791565b505050565b610383817f42414c00000000000000000000000000000000000000000000000000000000006114b0565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114269190611652565b6000604051808303816000865af19150503d8060008114611463576040519150601f19603f3d011682016040523d82523d6000602084013e611468565b606091505b50915091506000821415611480573d6000803e3d6000fd5b6114aa8151600014806114a25750818060200190518101906114a29190611595565b6101a2611232565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006020828403121561153c578081fd5b813561154781611a15565b9392505050565b60006020828403121561155f578081fd5b815161154781611a15565b6000806040838503121561157c578081fd5b823561158781611a15565b946020939093013593505050565b6000602082840312156115a6578081fd5b81518015158114611547578182fd5b6000602082840312156115c6578081fd5b5035919050565b6000602082840312156115de578081fd5b5051919050565b600080604083850312156115f7578182fd5b505080516020909101519092909150565b600081518084526116208160208601602086016119e9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516116648184602087016119e9565b9190910192915050565b60f09290921b7fffff000000000000000000000000000000000000000000000000000000000000168252600282015260220190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808916835261ffff8816602084015286604084015285606084015284608084015260c060a08401528084511660c08401528060208501511660e08401525060408301516060610100840152611784610120840182611608565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526012908201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604082015260600190565b60208082526015908201527f496e76616c6964205772617070657220546f6b656e0000000000000000000000604082015260600190565b6020808252601a908201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604082015260600190565b60208082526034908201527f52656c61746976652077656967687420636170206578636565647320616c6c6f60408201527f776564206162736f6c757465206d6178696d756d000000000000000000000000606082015260800190565b60208082526024908201527f42616c616e636572546f6b656e41646d696e206e6f742079657420616374697660408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252601e908201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604082015260600190565b600061ffff87168252856020830152846040830152831515606083015260a060808301526119c060a0830184611608565b979650505050505050565b61ffff92831681529116602082015260400190565b90815260200190565b60005b83811015611a045781810151838201526020016119ec565b838111156114aa5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461038357600080fdfea2646970667358221220ef03472d8e7790ef76063674dedc8dd461c87c6258cb8f2af640a844c22b0c2e64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x26F JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x21D JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0x5E8A8389 EQ PUSH2 0x1C9 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x5C2C78D EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x145 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x284 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x152B JUMP JUMPDEST PUSH2 0x2A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x160 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B5 JUMP JUMPDEST PUSH2 0x30B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B5 JUMP JUMPDEST PUSH2 0x386 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x444 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x1B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x152B JUMP JUMPDEST PUSH2 0x460 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x17B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x466 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x48A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x490 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x499 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x4A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x541 JUMP JUMPDEST PUSH2 0x1BC PUSH2 0x558 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0x156A JUMP JUMPDEST PUSH2 0x91B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0xA8E JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x303 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x37A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH2 0x383 DUP2 PUSH2 0xB27 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43E PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E6 SWAP3 SWAP2 SWAP1 PUSH2 0x1791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x412 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x436 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xBA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x514 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x553 PUSH2 0x54E PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0xD64 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x562 PUSH2 0xE30 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x5DE PUSH2 0xE49 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x90D JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x65A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x688 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x816 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x6D9 JUMPI PUSH2 0x816 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x6EB DUP4 PUSH2 0x386 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x701 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x7BA JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x765 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x7CF SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST DUP3 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED DUP4 PUSH1 0x40 MLOAD PUSH2 0x7FF SWAP2 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x6C1 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x836 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x909 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x8AD SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8FF SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST POP PUSH2 0x909 DUP3 PUSH2 0xE74 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x2A6 PUSH2 0x103C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9F0 SWAP2 SWAP1 PUSH2 0x154E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17F9 JUMP JUMPDEST PUSH2 0xA46 DUP2 PUSH2 0x1043 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xAFD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1867 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP1 PUSH2 0xB9E SWAP1 DUP4 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xED629C5C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC31 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC55 SWAP2 SWAP1 PUSH2 0x1595 JUMP JUMPDEST ISZERO PUSH2 0xD4F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8CFD8F5C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x8CFD8F5C SWAP1 PUSH2 0xCD2 SWAP1 PUSH1 0x6A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x19CB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD22 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD38 SWAP3 SWAP2 SWAP1 PUSH2 0x166E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2A6 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x365260B4 PUSH1 0x6A PUSH2 0xDB5 PUSH2 0xDB0 PUSH2 0x444 JUMP JUMPDEST PUSH2 0x1219 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDD9 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x198F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE28 SWAP2 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE42 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA0 DUP3 PUSH32 0x0 PUSH2 0x1240 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xEAD JUMPI POP PUSH2 0x383 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEB7 PUSH2 0xBB5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xEC4 DUP3 PUSH2 0xD64 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xEFF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1830 JUMP JUMPDEST PUSH2 0xF60 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP7 PUSH2 0x1257 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2CDF0B95 DUP3 ADDRESS PUSH1 0x6A PUSH2 0xFAB PUSH2 0xDB0 PUSH2 0x444 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE DUP1 DUP3 ADD DUP11 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP9 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x1004 SWAP5 SWAP4 SWAP3 SWAP2 DUP13 SWAP2 DUP13 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1031 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x107D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1921 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x111D SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1156 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x1163 PUSH2 0xE49 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1209 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST PUSH1 0x3 SSTORE PUSH2 0x1215 DUP3 PUSH2 0xB27 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x1215 JUMPI PUSH2 0x1215 DUP2 PUSH2 0x13D3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 PUSH2 0x124C JUMPI INVALID JUMPDEST MOD SWAP1 SWAP4 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1308 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x12B5 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x16C4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1305 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x13AF JUMPI PUSH2 0x13AF DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x16EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x13FD JUMP JUMPDEST PUSH2 0x13CE DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x1791 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x383 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x14B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1426 SWAP2 SWAP1 PUSH2 0x1652 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1463 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1468 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1480 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x14AA DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x14A2 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x14A2 SWAP2 SWAP1 PUSH2 0x1595 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1232 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x153C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1547 DUP2 PUSH2 0x1A15 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x155F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1547 DUP2 PUSH2 0x1A15 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x157C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1587 DUP2 PUSH2 0x1A15 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15A6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1547 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15C6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15DE JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15F7 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1620 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19E9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1664 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19E9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xF0 SWAP3 SWAP1 SWAP3 SHL PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND DUP3 MSTORE PUSH1 0x2 DUP3 ADD MSTORE PUSH1 0x22 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE PUSH2 0xFFFF DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP7 PUSH1 0x40 DUP5 ADD MSTORE DUP6 PUSH1 0x60 DUP5 ADD MSTORE DUP5 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP5 ADD MSTORE DUP1 DUP5 MLOAD AND PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0xE0 DUP5 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x1784 PUSH2 0x120 DUP5 ADD DUP3 PUSH2 0x1608 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964205772617070657220546F6B656E0000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C61746976652077656967687420636170206578636565647320616C6C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x776564206162736F6C757465206D6178696D756D000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x42616C616E636572546F6B656E41646D696E206E6F7420796574206163746976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6174656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP8 AND DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x19C0 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1608 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A04 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19EC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14AA JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF SUB SELFBALANCE 0x2D DUP15 PUSH24 0x90EF76063674DEDC8DD461C87C6258CB8F2AF640A844C22B 0xC 0x2E PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"3915:6692:94:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6564:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6895:191:89;;;;;;;;;;-1:-1:-1;6895:191:89;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7513:214::-;;;;;;;;;;-1:-1:-1;7513:214:89;;;;;:::i;:::-;;:::i;:::-;;8159:199;;;;;;;;;;-1:-1:-1;8159:199:89;;;;;:::i;:::-;;:::i;6381:97:94:-;;;;;;;;;;;;;:::i;6789:100:89:-;;;;;;;;;;-1:-1:-1;6789:100:89;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6832:108:94:-;;;;;;;;;;;;;:::i;8038:115:89:-;;;;;;;;;;;;;:::i;7092:92::-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;6982:133:94:-;;;;;;;;;;;;;:::i;3697:2655:89:-;;;:::i;5921:418:94:-;;;;;;;;;;-1:-1:-1;5921:418:94;;;;;:::i;:::-;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;6564:99:94:-;6644:11;6564:99;;:::o;6895:191:89:-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;:::i;:::-;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;6381:97:94:-;6461:10;;;;6381:97;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;6832:108:94:-;6913:20;6832:108;:::o;8038:115:89:-;8128:18;;8038:115;:::o;7092:92::-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;:::i;:::-;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6982:133:94:-;7042:7;7068:40;7088:19;:17;:19::i;:::-;7068;:40::i;:::-;7061:47;;6982:133;:::o;3697:2655:89:-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;;;;;;;;;;:::i;:::-;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;:33:::1;:16;:33;::::0;::::1;::::0;:48:::1;::::0;4042:4:::1;::::0;4000:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5989:10;5978:38;6001:14;5978:38;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;:12:::1;:7;:12;::::0;::::1;::::0;:27:::1;::::0;6246:4:::1;::::0;6225:27:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6270:29;6286:12;6270:15;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;5921:418:94:-;6150:9;6119:41;;:11;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;;6111:75;;;;;;;;;;;;:::i;:::-;6259:40;6281:17;6259:21;:40::i;:::-;-1:-1:-1;6310:10:94;:22;;;;;;;;;;;;;;;5921:418::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;:::i;:::-;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;:::i;:::-;7929:18;:38;;;7982:43;;;;;;7950:17;;7982:43;:::i;:::-;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;9357:1248:94:-;9409:12;10326:11;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10322:277;;;10398:70;;;;;10378:17;;10398:27;:11;:27;;;;:70;;4193:3;;10378:17;;10398:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10378:90;;4760:1;10531:9;10489:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10482:59;;;;;10322:277;-1:-1:-1;10579:9:94;;;;;;;;;-1:-1:-1;10579:9:94;;10572:16;;7121:541;7201:7;7403:17;7426:11;:27;;;4193:3;7503:54;7542:14;:12;:14::i;:::-;7503:38;:54::i;:::-;7571:1;7586:5;7605:13;7426:202;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7402:226:94;7121:541;-1:-1:-1;;;7121:541:94:o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;7668:1683:94:-;7741:25;7769:66;7802:10;7814:20;7769:32;:66::i;:::-;7741:94;-1:-1:-1;7908:22:94;7904:59;;7946:7;;;7904:59;7973:26;8002:19;:17;:19::i;:::-;7973:48;;8031:23;8057:34;8077:13;8057:19;:34::i;:::-;8031:60;;8123:15;8110:9;:28;8102:67;;;;;;;;;;;;:::i;:::-;8255:55;:21;:9;:21;8285:11;8299:10;8255:21;:55::i;:::-;9009:11;:20;;;9038:15;9077:4;4193:3;9132:54;9171:14;:12;:14::i;9132:54::-;9255:79;;;;;;;;9295:10;9255:79;;-1:-1:-1;9255:79:94;;;;;;;;;;9009:335;;;;;;;;;;;;;;;9200:10;;9224:17;;9255:79;9009:335;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7668:1683;;;;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;:::i;:::-;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3413:33;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;:::i;:::-;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;1073:137:96:-;1175:27;;;1073:137::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;819:169:96:-;898:7;917:12;941:10;932:6;:19;;;;;;968:13;;;;819:169;-1:-1:-1;;;819:169:96:o;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;:15;;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:19;:90::i;:::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;1407:94::-;1001:507;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;696:241:-1;;800:2;788:9;779:7;775:23;771:32;768:2;;;-1:-1;;806:12;768:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;858:63;762:175;-1:-1;;;762:175::o;944:263::-;;1059:2;1047:9;1038:7;1034:23;1030:32;1027:2;;;-1:-1;;1065:12;1027:2;226:6;220:13;238:33;265:5;238:33;:::i;1214:366::-;;;1335:2;1323:9;1314:7;1310:23;1306:32;1303:2;;;-1:-1;;1341:12;1303:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1393:63;1493:2;1532:22;;;;485:20;;-1:-1;;;1297:283::o;1587:257::-;;1699:2;1687:9;1678:7;1674:23;1670:32;1667:2;;;-1:-1;;1705:12;1667:2;364:6;358:13;18615:5;17014:13;17007:21;18593:5;18590:32;18580:2;;-1:-1;;18626:12;1851:241;;1955:2;1943:9;1934:7;1930:23;1926:32;1923:2;;;-1:-1;;1961:12;1923:2;-1:-1;485:20;;1917:175;-1:-1;1917:175::o;2099:263::-;;2214:2;2202:9;2193:7;2189:23;2185:32;2182:2;;;-1:-1;;2220:12;2182:2;-1:-1;633:13;;2176:186;-1:-1;2176:186::o;2369:399::-;;;2501:2;2489:9;2480:7;2476:23;2472:32;2469:2;;;-1:-1;;2507:12;2469:2;-1:-1;;633:13;;2670:2;2720:22;;;633:13;;;;;-1:-1;2463:305::o;3370:323::-;;3502:5;16046:12;16192:6;16187:3;16180:19;3585:52;3630:6;16229:4;16224:3;16220:14;16229:4;3611:5;3607:16;3585:52;:::i;:::-;18289:2;18269:14;18285:7;18265:28;3649:39;;;;16229:4;3649:39;;3450:243;-1:-1;;3450:243::o;8573:271::-;;4210:5;16046:12;4321:52;4366:6;4361:3;4354:4;4347:5;4343:16;4321:52;:::i;:::-;4385:16;;;;;8707:137;-1:-1;;8707:137::o;8851:387::-;18381:3;18377:15;;;;;;8226:56;;9100:1;9091:11;;3321:37;9201:12;;;8993:245::o;9245:222::-;17283:42;17272:54;;;;2852:45;;9372:2;9357:18;;9343:124::o;9474:333::-;17283:42;17272:54;;;2852:45;;17272:54;;9793:2;9778:18;;2852:45;9629:2;9614:18;;9600:207::o;9814:345::-;17283:42;17272:54;;;;2852:45;;17488:4;17477:16;10145:2;10130:18;;4639:56;9975:2;9960:18;;9946:213::o;10166:948::-;;17283:42;;17276:5;17272:54;2859:3;2852:45;17191:6;8120:5;17180:18;10656:2;10645:9;10641:18;8091:36;3351:5;10739:2;10728:9;10724:18;3321:37;3351:5;10822:2;10811:9;10807:18;3321:37;3351:5;10905:3;10894:9;10890:19;3321:37;10493:3;10943;10932:9;10928:19;10921:49;17283:42;7477:16;7471:23;17272:54;10493:3;10482:9;10478:19;2852:45;17283:42;10656:2;7664:5;7660:16;7654:23;17272:54;7731:14;10482:9;7731:14;2852:45;;10739:2;7827:5;7823:16;7817:23;10822:2;7860:14;10482:9;7860:14;7853:38;7906:71;7387:14;10482:9;7387:14;7958:12;7906:71;:::i;:::-;10976:128;10464:650;-1:-1;;;;;;;;;10464:650::o;11121:333::-;17283:42;17272:54;;;;2852:45;;11440:2;11425:18;;3321:37;11276:2;11261:18;;11247:207::o;11461:210::-;17014:13;;17007:21;3204:34;;11582:2;11567:18;;11553:118::o;11678:416::-;11878:2;11892:47;;;4932:2;11863:18;;;16180:19;4968:20;16220:14;;;4948:41;5008:12;;;11849:245::o;12101:416::-;12301:2;12315:47;;;5259:2;12286:18;;;16180:19;5295:23;16220:14;;;5275:44;5338:12;;;12272:245::o;12524:416::-;12724:2;12738:47;;;5589:2;12709:18;;;16180:19;5625:28;16220:14;;;5605:49;5673:12;;;12695:245::o;12947:416::-;13147:2;13161:47;;;5924:2;13132:18;;;16180:19;5960:34;16220:14;;;5940:55;6029:22;6015:12;;;6008:44;6071:12;;;13118:245::o;13370:416::-;13570:2;13584:47;;;6322:2;13555:18;;;16180:19;6358:34;16220:14;;;6338:55;6427:6;6413:12;;;6406:28;6453:12;;;13541:245::o;13793:416::-;13993:2;14007:47;;;6704:2;13978:18;;;16180:19;6740:21;16220:14;;;6720:42;6781:12;;;13964:245::o;14216:416::-;14416:2;14430:47;;;7032:2;14401:18;;;16180:19;7068:32;16220:14;;;7048:53;7120:12;;;14387:245::o;14639:752::-;;17191:6;8120:5;17180:18;8098:3;8091:36;3351:5;15059:2;15048:9;15044:18;3321:37;17592:24;15150:2;15139:9;15135:18;4492:58;3231:5;17014:13;17007:21;15227:2;15216:9;15212:18;3204:34;14896:3;15264;15253:9;15249:19;15242:49;15305:76;14896:3;14885:9;14881:19;15367:6;15305:76;:::i;:::-;15297:84;14867:524;-1:-1;;;;;;;14867:524::o;15398:325::-;17191:6;17180:18;;;8091:36;;17180:18;;15709:2;15694:18;;8091:36;15549:2;15534:18;;15520:203::o;15730:222::-;3321:37;;;15857:2;15842:18;;15828:124::o;17748:268::-;17813:1;17820:101;17834:6;17831:1;17828:13;17820:101;;;17901:11;;;17895:18;17882:11;;;17875:39;17856:2;17849:10;17820:101;;;17936:6;17933:1;17930:13;17927:2;;;-1:-1;;17813:1;17983:16;;17976:27;17797:219::o;18410:117::-;17283:42;18497:5;17272:54;18472:5;18469:35;18459:2;;18518:1;;18508:12"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getBALProxy()":"05c2c78d","getCappedRelativeWeight(uint256)":"14e956f5","getMinimumBridgeAmount()":"5e8a8389","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract ILayerZeroBALProxy\",\"name\":\"lzBALProxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBALProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumBridgeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Uses LayerZero OFTv2 (Omni Fungible Token V2) proxy contracts to bridge BAL. See https://layerzero.gitbook.io/docs/evm-guides/layerzero-omnichain-contracts/oft/oftv2 for reference.\",\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"constructor\":{\"details\":\"Must be deployed by the AvalancheRootGaugeFactory, or other contract that implements `IAvalancheBridgeLimitsProvider`.\"},\"getBALProxy()\":{\"details\":\"Return the Layer Zero proxy contract for the underlying BAL token.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getMinimumBridgeAmount()\":{\"details\":\"Returns the minimum amount of tokens that can be bridged. Values lower than this one will not even be transferred to the proxy.\"},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"notice\":\"Root Gauge for the Avalanche network.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/avalanche/AvalancheRootGauge.sol\":\"AvalancheRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/avalanche/AvalancheRootGauge.sol\":{\"keccak256\":\"0x43bdf93c991ce12749932136f830478dc8981cd2123591b02b07103c7f4a73d8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0670c48669f090af80c4454a46c5e33d7a499015565cd57854fe9e2d1e9c85a9\",\"dweb:/ipfs/QmVUXzfTTKW2pUYRQ4neK6TmheDSsBazsShvKDLyMUmdiY\"]},\"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol\":{\"keccak256\":\"0xe49df779008ec324de421878d86c9ad9fc2700e47931f8de70460eaacc0e5d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dd6e05a9aeb465123a157098a73625e933ab10fa48c43afd96779289bbb9720c\",\"dweb:/ipfs/Qmd89UuKiLJcrosj2h8e4vM9vTqGdUHpkjQU5np19ZpbUG\"]}},\"version\":1}"},"ILayerZeroBALProxy":{"abi":[{"inputs":[],"name":"PT_SEND","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"bytes32","name":"_toAddress","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_useZro","type":"bool"},{"internalType":"bytes","name":"_adapterParams","type":"bytes"}],"name":"estimateSendFee","outputs":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"zroFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"chainId","type":"uint16"},{"internalType":"uint16","name":"packetType","type":"uint16"}],"name":"minDstGasLookup","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"bytes32","name":"_toAddress","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_minAmount","type":"uint256"},{"components":[{"internalType":"address payable","name":"refundAddress","type":"address"},{"internalType":"address","name":"zroPaymentAddress","type":"address"},{"internalType":"bytes","name":"adapterParams","type":"bytes"}],"internalType":"struct ILayerZeroBALProxy.LzCallParams","name":"_callParams","type":"tuple"}],"name":"sendFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"useCustomAdapterParams","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"PT_SEND()":"4c42899a","estimateSendFee(uint16,bytes32,uint256,bool,bytes)":"365260b4","minDstGasLookup(uint16,uint16)":"8cfd8f5c","sendFrom(address,uint16,bytes32,uint256,uint256,(address,address,bytes))":"2cdf0b95","sharedDecimals()":"857749b0","token()":"fc0c546a","useCustomAdapterParams()":"ed629c5c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PT_SEND\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"_toAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_useZro\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_adapterParams\",\"type\":\"bytes\"}],\"name\":\"estimateSendFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zroFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"packetType\",\"type\":\"uint16\"}],\"name\":\"minDstGasLookup\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"_toAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minAmount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address payable\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zroPaymentAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"adapterParams\",\"type\":\"bytes\"}],\"internalType\":\"struct ILayerZeroBALProxy.LzCallParams\",\"name\":\"_callParams\",\"type\":\"tuple\"}],\"name\":\"sendFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"useCustomAdapterParams\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Partial interface for LayerZero BAL proxy.\",\"kind\":\"dev\",\"methods\":{\"PT_SEND()\":{\"details\":\"Returns packet type to be used in adapter params. It is a constant set to 0.\"},\"estimateSendFee(uint16,bytes32,uint256,bool,bytes)\":{\"details\":\"Estimate fee for sending token `_tokenId` to (`_dstChainId`, `_toAddress`).\",\"params\":{\"_adapterParams\":\"flexible bytes array to indicate messaging adapter services in L0.\",\"_amount\":\"amount of the tokens to transfer.\",\"_dstChainId\":\"L0 defined chain id to send tokens to.\",\"_toAddress\":\"dynamic bytes array with the address you are sending tokens to on dstChain.\",\"_useZro\":\"indicates to use zro to pay L0 fees.\"}},\"minDstGasLookup(uint16,uint16)\":{\"details\":\"Returns minimum gas limit required for the target `chainId` and `packetType`.\"},\"sendFrom(address,uint16,bytes32,uint256,uint256,(address,address,bytes))\":{\"details\":\"Send `_amount` amount of token to (`_dstChainId`, `_toAddress`) from `_from`.\",\"params\":{\"_amount\":\"the quantity of tokens in wei.\",\"_callParams\":\"struct with custom options. - refundAddress: the address LayerZero refunds if too much message fee is sent. - zroPaymentAddress set to address(0x0) if not paying in ZRO (LayerZero Token). - adapterParams is a flexible bytes array used to configure messaging adapter services.\",\"_dstChainId\":\"the destination chain identifier.\",\"_from\":\"the token owner.\",\"_minAmount\":\"the minimum amount of tokens to receive on dstChain.\",\"_toAddress\":\"can be any size depending on the `dstChainId`.\"}},\"sharedDecimals()\":{\"details\":\"Returns the maximum allowed precision (decimals) for proxy transfers.\"},\"token()\":{\"details\":\"Returns the address of the underlying ERC20 token.\"},\"useCustomAdapterParams()\":{\"details\":\"Returns true if custom adapter parameters are activated in the proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/avalanche/AvalancheRootGauge.sol\":\"ILayerZeroBALProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/avalanche/AvalancheRootGauge.sol\":{\"keccak256\":\"0x43bdf93c991ce12749932136f830478dc8981cd2123591b02b07103c7f4a73d8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0670c48669f090af80c4454a46c5e33d7a499015565cd57854fe9e2d1e9c85a9\",\"dweb:/ipfs/QmVUXzfTTKW2pUYRQ4neK6TmheDSsBazsShvKDLyMUmdiY\"]},\"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol\":{\"keccak256\":\"0xe49df779008ec324de421878d86c9ad9fc2700e47931f8de70460eaacc0e5d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dd6e05a9aeb465123a157098a73625e933ab10fa48c43afd96779289bbb9720c\",\"dweb:/ipfs/Qmd89UuKiLJcrosj2h8e4vM9vTqGdUHpkjQU5np19ZpbUG\"]}},\"version\":1}"}},"contracts/gauges/avalanche/AvalancheRootGaugeFactory.sol":{"AvalancheRootGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract ILayerZeroBALProxy","name":"lzBALProxy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b506040516128ce3803806128ce83398101604081905261002f916100bc565b82306001600160a01b031660001b838360405161004b906100af565b610056929190610108565b604051809103906000f080158015610072573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905560805260601b6001600160601b03191660a0525061013a915050565b61216d8061076183390190565b6000806000606084860312156100d0578283fd5b83516100db81610122565b60208501519093506100ec81610122565b60408501519092506100fd81610122565b809150509250925092565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b038116811461013757600080fd5b50565b60805160a05160601c610601610160600039806102055250806101b452506106016000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638d928af8116100505780638d928af8146100c8578063aaabadc5146100d0578063ce3cc8bd146100d857610072565b80630ecaea731461007757806339312dee146100a0578063851c1bb3146100a8575b600080fd5b61008a61008536600461045d565b6100f8565b6040516100979190610514565b60405180910390f35b61008a610194565b6100bb6100b6366004610488565b6101b0565b6040516100979190610566565b61008a610203565b61008a610227565b6100eb6100e636600461043a565b6102b3565b604051610097919061055b565b6000806101036102de565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc6879061015a9087908790600401610535565b600060405180830381600087803b15801561017457600080fd5b505af1158015610188573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016101e59291906104e4565b6040516020818303038152906040528051906020012090505b919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610231610203565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ae91906104c8565b905090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6000805481906103039073ffffffffffffffffffffffffffffffffffffffff16610384565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104319061056f565b60405180910390fd5b60006020828403121561044b578081fd5b8135610456816105a6565b9392505050565b6000806040838503121561046f578081fd5b823561047a816105a6565b946020939093013593505050565b600060208284031215610499578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610456578182fd5b6000602082840312156104d9578081fd5b8151610456816105a6565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b5056fea2646970667358221220347aefad4cd1b181977d6567ad38b357634223726458d22409b65be8d40a7e3564736f6c634300070100336101c06040523480156200001257600080fd5b506040516200216d3803806200216d8339810160408190526200003591620005a3565b8160016000819055506000816001600160a01b031663e6dec36f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200007a57600080fd5b505afa1580156200008f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b591906200057d565b90506000816001600160a01b031663c00396996040518163ffffffff1660e01b815260040160206040518083038186803b158015620000f357600080fd5b505afa15801562000108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012e91906200057d565b90506000836001600160a01b03166358de9ade6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016c57600080fd5b505afa15801562000181573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a791906200057d565b6001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021657600080fd5b505afa1580156200022b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025191906200057d565b6001600160a01b0316610100816001600160a01b031660601b81525050826001600160a01b031663b87b56166040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a857600080fd5b505afa158015620002bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e39190620005e1565b6101208181525050826001600160a01b03166321609bbf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032557600080fd5b505afa1580156200033a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003609190620005e1565b6101408181525050826001600160a01b0316637efad8e06040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a257600080fd5b505afa158015620003b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003dd9190620005e1565b61016052505060001960025550506001600160601b0319606082901b166101805260408051630857749b60e41b815290516000916001600160a01b0384169163857749b09160048082019260209290919082900301818787803b1580156200044457600080fd5b505af115801562000459573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047f9190620005fa565b836001600160a01b031663c00396996040518163ffffffff1660e01b815260040160206040518083038186803b158015620004b957600080fd5b505afa158015620004ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f491906200057d565b6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200052d57600080fd5b505afa15801562000542573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005689190620005fa565b0360ff16600a0a6101a0525062000636915050565b6000602082840312156200058f578081fd5b81516200059c816200061d565b9392505050565b60008060408385031215620005b6578081fd5b8251620005c3816200061d565b6020840151909250620005d6816200061d565b809150509250929050565b600060208284031215620005f3578081fd5b5051919050565b6000602082840312156200060c578081fd5b815160ff811681146200059c578182fd5b6001600160a01b03811681146200063357600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a051611a6d62000700600039806104685280610e7c52508061028652806109545280610bb95280610c9a5280610d695280610f3b5280610f6252508061073d52508061071c52508061069f528061078952508061032352806104bd528061057a5280610aa652508061038d5280610625525080610878525080611081528061116b52508061091d5280610f195250611a6d6000f3fe6080604052600436106100e85760003560e01c806383f5c39b1161008a578063b024522511610059578063b024522514610232578063c2c4c5c114610247578063cd6dc6871461024f578063d34fb2671461026f576100e8565b806383f5c39b146101de5780639c868ac0146101f35780639f86767114610208578063ab8f09451461021d576100e8565b806314e956f5116100c657806314e956f5146101675780631b88094d146101875780634b8200931461019c5780635e8a8389146101c9576100e8565b806305c2c78d146100ed578063094007071461011857806310d3eb0414610145575b600080fd5b3480156100f957600080fd5b50610102610284565b60405161010f91906116a3565b60405180910390f35b34801561012457600080fd5b5061013861013336600461152b565b6102a9565b60405161010f91906119e0565b34801561015157600080fd5b506101656101603660046115b5565b61030b565b005b34801561017357600080fd5b506101386101823660046115b5565b610386565b34801561019357600080fd5b50610102610444565b3480156101a857600080fd5b506101bc6101b736600461152b565b610460565b60405161010f91906117b7565b3480156101d557600080fd5b50610138610466565b3480156101ea57600080fd5b5061013861048a565b3480156101ff57600080fd5b506101bc610490565b34801561021457600080fd5b50610138610499565b34801561022957600080fd5b506101656104a5565b34801561023e57600080fd5b50610138610541565b6101bc610558565b34801561025b57600080fd5b5061016561026a36600461156a565b61091b565b34801561027b57600080fd5b50610165610a8e565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff82163014610303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611958565b60405180910390fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b61038381610b27565b50565b600061043e7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b81526004016103e6929190611791565b60206040518083038186803b1580156103fe57600080fd5b505afa158015610412573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043691906115cd565b600654610ba9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610514576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600061055361054e610bb5565b610d64565b905090565b6000610562610e30565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b60025460006105de610e49565b90508082101561090d576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e52379061065a9030906004016116a3565b600060405180830381600087803b15801561067457600080fd5b505af1158015610688573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561081657848111156106d957610816565b62093a8081026000806106eb83610386565b905082851015801561070157508262093a800185105b156107ba57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161076557fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506107cf9050565b670de0b6b3a764000062093a80828902020491505b827f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced836040516107ff91906119e0565b60405180910390a2509390930192506001016106c1565b50600284905560048054830190558115801590610836575060055460ff16155b15610909576040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636a627842906108ad9030906004016116a3565b602060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ff91906115cd565b5061090982610e74565b5050505b6001925050506102a661103c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109b857600080fd5b505afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f0919061154e565b73ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117f9565b610a4681611043565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610afd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906117c2565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610b69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611867565b60068190556040517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb290610b9e9083906119e0565b60405180910390a150565b80820390821102900390565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ed629c5c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1d57600080fd5b505afa158015610c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c559190611595565b15610d4f576040517f8cfd8f5c00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690638cfd8f5c90610cd290606a9085906004016119cb565b60206040518083038186803b158015610cea57600080fd5b505afa158015610cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2291906115cd565b9050600181604051602001610d3892919061166e565b6040516020818303038152906040529150506102a6565b506040805160208101909152600081526102a6565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663365260b4606a610db5610db0610444565b611219565b600080886040518663ffffffff1660e01b8152600401610dd995949392919061198f565b604080518083038186803b158015610df057600080fd5b505afa158015610e04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2891906115e5565b509392505050565b610e4260026000541415610190611232565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6000610ea0827f0000000000000000000000000000000000000000000000000000000000000000611240565b905080610ead5750610383565b6060610eb7610bb5565b90506000610ec482610d64565b9050803414610eff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611830565b610f6073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000086611257565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632cdf0b958230606a610fab610db0610444565b60408051606081018252338152600060208201528082018a905290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152611004949392918c918c9190600401611714565b6000604051808303818588803b15801561101d57600080fd5b505af1158015611031573d6000803e3d6000fd5b505050505050505050565b6001600055565b6002541561107d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90611921565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e557600080fd5b505afa1580156110f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111d91906115cd565b905080611156576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa906118c4565b6001819055611163610e49565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111d157600080fd5b505af11580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120991906115cd565b60035561121582610b27565b5050565b73ffffffffffffffffffffffffffffffffffffffff1690565b8161121557611215816113d3565b60008082848161124c57fe5b069093039392505050565b801580159061130857506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e906112b590309086906004016116c4565b60206040518083038186803b1580156112cd57600080fd5b505afa1580156112e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130591906115cd565b15155b156113af576113af8363095ea7b360e01b84600060405160240161132d9291906116eb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526113fd565b6113ce8363095ea7b360e01b848460405160240161132d929190611791565b505050565b610383817f42414c00000000000000000000000000000000000000000000000000000000006114b0565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114269190611652565b6000604051808303816000865af19150503d8060008114611463576040519150601f19603f3d011682016040523d82523d6000602084013e611468565b606091505b50915091506000821415611480573d6000803e3d6000fd5b6114aa8151600014806114a25750818060200190518101906114a29190611595565b6101a2611232565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006020828403121561153c578081fd5b813561154781611a15565b9392505050565b60006020828403121561155f578081fd5b815161154781611a15565b6000806040838503121561157c578081fd5b823561158781611a15565b946020939093013593505050565b6000602082840312156115a6578081fd5b81518015158114611547578182fd5b6000602082840312156115c6578081fd5b5035919050565b6000602082840312156115de578081fd5b5051919050565b600080604083850312156115f7578182fd5b505080516020909101519092909150565b600081518084526116208160208601602086016119e9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516116648184602087016119e9565b9190910192915050565b60f09290921b7fffff000000000000000000000000000000000000000000000000000000000000168252600282015260220190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808916835261ffff8816602084015286604084015285606084015284608084015260c060a08401528084511660c08401528060208501511660e08401525060408301516060610100840152611784610120840182611608565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526012908201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604082015260600190565b60208082526015908201527f496e76616c6964205772617070657220546f6b656e0000000000000000000000604082015260600190565b6020808252601a908201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604082015260600190565b60208082526034908201527f52656c61746976652077656967687420636170206578636565647320616c6c6f60408201527f776564206162736f6c757465206d6178696d756d000000000000000000000000606082015260800190565b60208082526024908201527f42616c616e636572546f6b656e41646d696e206e6f742079657420616374697660408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252601e908201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604082015260600190565b600061ffff87168252856020830152846040830152831515606083015260a060808301526119c060a0830184611608565b979650505050505050565b61ffff92831681529116602082015260400190565b90815260200190565b60005b83811015611a045781810151838201526020016119ec565b838111156114aa5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461038357600080fdfea2646970667358221220ef03472d8e7790ef76063674dedc8dd461c87c6258cb8f2af640a844c22b0c2e64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x28CE CODESIZE SUB DUP1 PUSH2 0x28CE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xBC JUMP JUMPDEST DUP3 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x4B SWAP1 PUSH2 0xAF JUMP JUMPDEST PUSH2 0x56 SWAP3 SWAP2 SWAP1 PUSH2 0x108 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x80 MSTORE PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE POP PUSH2 0x13A SWAP2 POP POP JUMP JUMPDEST PUSH2 0x216D DUP1 PUSH2 0x761 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD0 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0xDB DUP2 PUSH2 0x122 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0xEC DUP2 PUSH2 0x122 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0xFD DUP2 PUSH2 0x122 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x601 PUSH2 0x160 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x205 MSTORE POP DUP1 PUSH2 0x1B4 MSTORE POP PUSH2 0x601 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xD8 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xA8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x45D JUMP JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x514 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x194 JUMP JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x488 JUMP JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x203 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x227 JUMP JUMPDEST PUSH2 0xEB PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x43A JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x103 PUSH2 0x2DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0x15A SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x535 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E5 SWAP3 SWAP2 SWAP1 PUSH2 0x4E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x231 PUSH2 0x203 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AE SWAP2 SWAP1 PUSH2 0x4C8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x303 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x384 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x431 SWAP1 PUSH2 0x56F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x44B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x47A DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x499 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x456 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLVALUE PUSH27 0xEFAD4CD1B181977D6567AD38B357634223726458D22409B65BE8D4 EXP PUSH31 0x3564736F6C634300070100336101C06040523480156200001257600080FD5B POP PUSH1 0x40 MLOAD PUSH3 0x216D CODESIZE SUB DUP1 PUSH3 0x216D DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x5A3 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE6DEC36F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xB5 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0039699 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x108 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x12E SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x58DE9ADE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x181 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1A7 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x22B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x251 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB87B5616 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x2E3 SWAP2 SWAP1 PUSH3 0x5E1 JUMP JUMPDEST PUSH2 0x120 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x21609BBF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x33A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x360 SWAP2 SWAP1 PUSH3 0x5E1 JUMP JUMPDEST PUSH2 0x140 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7EFAD8E0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x3DD SWAP2 SWAP1 PUSH3 0x5E1 JUMP JUMPDEST PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH2 0x180 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x857749B PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x857749B0 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x459 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x47F SWAP2 SWAP1 PUSH3 0x5FA JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0039699 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x4CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x4F4 SWAP2 SWAP1 PUSH3 0x57D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x542 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x568 SWAP2 SWAP1 PUSH3 0x5FA JUMP JUMPDEST SUB PUSH1 0xFF AND PUSH1 0xA EXP PUSH2 0x1A0 MSTORE POP PUSH3 0x636 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x58F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x59C DUP2 PUSH3 0x61D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x5B6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x5C3 DUP2 PUSH3 0x61D JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x5D6 DUP2 PUSH3 0x61D JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5F3 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x60C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x59C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH2 0x1A6D PUSH3 0x700 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x468 MSTORE DUP1 PUSH2 0xE7C MSTORE POP DUP1 PUSH2 0x286 MSTORE DUP1 PUSH2 0x954 MSTORE DUP1 PUSH2 0xBB9 MSTORE DUP1 PUSH2 0xC9A MSTORE DUP1 PUSH2 0xD69 MSTORE DUP1 PUSH2 0xF3B MSTORE DUP1 PUSH2 0xF62 MSTORE POP DUP1 PUSH2 0x73D MSTORE POP DUP1 PUSH2 0x71C MSTORE POP DUP1 PUSH2 0x69F MSTORE DUP1 PUSH2 0x789 MSTORE POP DUP1 PUSH2 0x323 MSTORE DUP1 PUSH2 0x4BD MSTORE DUP1 PUSH2 0x57A MSTORE DUP1 PUSH2 0xAA6 MSTORE POP DUP1 PUSH2 0x38D MSTORE DUP1 PUSH2 0x625 MSTORE POP DUP1 PUSH2 0x878 MSTORE POP DUP1 PUSH2 0x1081 MSTORE DUP1 PUSH2 0x116B MSTORE POP DUP1 PUSH2 0x91D MSTORE DUP1 PUSH2 0xF19 MSTORE POP PUSH2 0x1A6D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x26F JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x21D JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0x5E8A8389 EQ PUSH2 0x1C9 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x5C2C78D EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x145 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x284 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x152B JUMP JUMPDEST PUSH2 0x2A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x160 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B5 JUMP JUMPDEST PUSH2 0x30B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B5 JUMP JUMPDEST PUSH2 0x386 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x444 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x1B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x152B JUMP JUMPDEST PUSH2 0x460 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x17B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x466 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x48A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC PUSH2 0x490 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x499 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x4A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x541 JUMP JUMPDEST PUSH2 0x1BC PUSH2 0x558 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0x156A JUMP JUMPDEST PUSH2 0x91B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH2 0xA8E JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x303 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x37A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH2 0x383 DUP2 PUSH2 0xB27 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43E PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E6 SWAP3 SWAP2 SWAP1 PUSH2 0x1791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x412 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x436 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xBA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x514 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x553 PUSH2 0x54E PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0xD64 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x562 PUSH2 0xE30 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x5DE PUSH2 0xE49 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x90D JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x65A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x688 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x816 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x6D9 JUMPI PUSH2 0x816 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x6EB DUP4 PUSH2 0x386 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x701 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x7BA JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x765 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x7CF SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST DUP3 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED DUP4 PUSH1 0x40 MLOAD PUSH2 0x7FF SWAP2 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x6C1 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x836 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x909 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x8AD SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8FF SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST POP PUSH2 0x909 DUP3 PUSH2 0xE74 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x2A6 PUSH2 0x103C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9F0 SWAP2 SWAP1 PUSH2 0x154E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17F9 JUMP JUMPDEST PUSH2 0xA46 DUP2 PUSH2 0x1043 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xAFD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x17C2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1867 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP1 PUSH2 0xB9E SWAP1 DUP4 SWAP1 PUSH2 0x19E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xED629C5C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC31 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC55 SWAP2 SWAP1 PUSH2 0x1595 JUMP JUMPDEST ISZERO PUSH2 0xD4F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8CFD8F5C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x8CFD8F5C SWAP1 PUSH2 0xCD2 SWAP1 PUSH1 0x6A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x19CB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD22 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD38 SWAP3 SWAP2 SWAP1 PUSH2 0x166E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2A6 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x365260B4 PUSH1 0x6A PUSH2 0xDB5 PUSH2 0xDB0 PUSH2 0x444 JUMP JUMPDEST PUSH2 0x1219 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDD9 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x198F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE28 SWAP2 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE42 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA0 DUP3 PUSH32 0x0 PUSH2 0x1240 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xEAD JUMPI POP PUSH2 0x383 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEB7 PUSH2 0xBB5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xEC4 DUP3 PUSH2 0xD64 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xEFF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1830 JUMP JUMPDEST PUSH2 0xF60 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP7 PUSH2 0x1257 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2CDF0B95 DUP3 ADDRESS PUSH1 0x6A PUSH2 0xFAB PUSH2 0xDB0 PUSH2 0x444 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE DUP1 DUP3 ADD DUP11 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP9 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x1004 SWAP5 SWAP4 SWAP3 SWAP2 DUP13 SWAP2 DUP13 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1031 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x107D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x1921 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x111D SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1156 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FA SWAP1 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x1163 PUSH2 0xE49 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1209 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST PUSH1 0x3 SSTORE PUSH2 0x1215 DUP3 PUSH2 0xB27 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x1215 JUMPI PUSH2 0x1215 DUP2 PUSH2 0x13D3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 PUSH2 0x124C JUMPI INVALID JUMPDEST MOD SWAP1 SWAP4 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1308 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x12B5 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x16C4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1305 SWAP2 SWAP1 PUSH2 0x15CD JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x13AF JUMPI PUSH2 0x13AF DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x16EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x13FD JUMP JUMPDEST PUSH2 0x13CE DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x1791 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x383 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x14B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1426 SWAP2 SWAP1 PUSH2 0x1652 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1463 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1468 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1480 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x14AA DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x14A2 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x14A2 SWAP2 SWAP1 PUSH2 0x1595 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1232 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x153C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1547 DUP2 PUSH2 0x1A15 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x155F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1547 DUP2 PUSH2 0x1A15 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x157C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1587 DUP2 PUSH2 0x1A15 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15A6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1547 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15C6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15DE JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15F7 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1620 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19E9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1664 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19E9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xF0 SWAP3 SWAP1 SWAP3 SHL PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND DUP3 MSTORE PUSH1 0x2 DUP3 ADD MSTORE PUSH1 0x22 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE PUSH2 0xFFFF DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP7 PUSH1 0x40 DUP5 ADD MSTORE DUP6 PUSH1 0x60 DUP5 ADD MSTORE DUP5 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP5 ADD MSTORE DUP1 DUP5 MLOAD AND PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0xE0 DUP5 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x1784 PUSH2 0x120 DUP5 ADD DUP3 PUSH2 0x1608 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964205772617070657220546F6B656E0000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C61746976652077656967687420636170206578636565647320616C6C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x776564206162736F6C757465206D6178696D756D000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x42616C616E636572546F6B656E41646D696E206E6F7420796574206163746976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6174656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP8 AND DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x19C0 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1608 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A04 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19EC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14AA JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF SUB SELFBALANCE 0x2D DUP15 PUSH24 0x90EF76063674DEDC8DD461C87C6258CB8F2AF640A844C22B 0xC 0x2E PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"974:1078:95:-:0;;;1060:283;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1272:5;1054:4:51;-1:-1:-1;;;;;1038:22:51;1030:31;;1226:6:95;1234:10;1203:42;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;2049:46:46;;1073:14:51::1;::::0;-1:-1:-1;;;;;;1073:14:51;::::1;::::0;-1:-1:-1;974:1078:95;;-1:-1:-1;;974:1078:95;;;;;;;;;:::o;574:681:-1:-;;;;796:2;784:9;775:7;771:23;767:32;764:2;;;-1:-1;;802:12;764:2;502:6;496:13;514:48;556:5;514:48;:::i;:::-;980:2;1060:22;;310:13;854:89;;-1:-1;328:63;310:13;328:63;:::i;:::-;1129:2;1207:22;;111:13;988:104;;-1:-1;129:61;111:13;129:61;:::i;:::-;1137:102;;;;758:497;;;;;:::o;1644:449::-;-1:-1;;;;;2627:54;;;1361:78;;2627:54;;2079:2;2064:18;;1361:78;1857:2;1842:18;;1828:265::o;3353:173::-;-1:-1;;;;;2627:54;;3440:63;;3430:2;;3517:1;;3507:12;3430:2;3424:102;:::o;:::-;974:1078:95;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":436}],"3611":[{"length":32,"start":517}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80638d928af8116100505780638d928af8146100c8578063aaabadc5146100d0578063ce3cc8bd146100d857610072565b80630ecaea731461007757806339312dee146100a0578063851c1bb3146100a8575b600080fd5b61008a61008536600461045d565b6100f8565b6040516100979190610514565b60405180910390f35b61008a610194565b6100bb6100b6366004610488565b6101b0565b6040516100979190610566565b61008a610203565b61008a610227565b6100eb6100e636600461043a565b6102b3565b604051610097919061055b565b6000806101036102de565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc6879061015a9087908790600401610535565b600060405180830381600087803b15801561017457600080fd5b505af1158015610188573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016101e59291906104e4565b6040516020818303038152906040528051906020012090505b919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610231610203565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ae91906104c8565b905090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6000805481906103039073ffffffffffffffffffffffffffffffffffffffff16610384565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104319061056f565b60405180910390fd5b60006020828403121561044b578081fd5b8135610456816105a6565b9392505050565b6000806040838503121561046f578081fd5b823561047a816105a6565b946020939093013593505050565b600060208284031215610499578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610456578182fd5b6000602082840312156104d9578081fd5b8151610456816105a6565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b5056fea2646970667358221220347aefad4cd1b181977d6567ad38b357634223726458d22409b65be8d40a7e3564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xD8 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xA8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x45D JUMP JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x514 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x194 JUMP JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x488 JUMP JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x203 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x227 JUMP JUMPDEST PUSH2 0xEB PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x43A JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x103 PUSH2 0x2DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0x15A SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x535 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E5 SWAP3 SWAP2 SWAP1 PUSH2 0x4E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x231 PUSH2 0x203 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AE SWAP2 SWAP1 PUSH2 0x4C8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x303 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x384 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x431 SWAP1 PUSH2 0x56F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x44B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x47A DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x499 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x456 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLVALUE PUSH27 0xEFAD4CD1B181977D6567AD38B357634223726458D22409B65BE8D4 EXP PUSH31 0x3564736F6C6343000701003300000000000000000000000000000000000000 ","sourceMap":"974:1078:95:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1821:229;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;2607:430:46:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1158:79:51:-;;;:::i;1297:109::-;;;:::i;1507:131:83:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1821:229:95:-;1901:7;1920:13;1936:9;:7;:9::i;:::-;1955:66;;;;;1920:25;;-1:-1:-1;1955:36:95;;;;;;:66;;1992:9;;2003:17;;1955:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2038:5:95;;1821:229;-1:-1:-1;;;;;;1821:229:95:o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;1297:109::-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;1507:131:83:-;1605:26;;1582:4;1605:26;;;:19;:26;;;;;;;;;1507:131::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;595:241:-1;;699:2;687:9;678:7;674:23;670:32;667:2;;;-1:-1;;705:12;667:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;757:63;661:175;-1:-1;;;661:175::o;843:366::-;;;964:2;952:9;943:7;939:23;935:32;932:2;;;-1:-1;;970:12;932:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1022:63;1122:2;1161:22;;;;525:20;;-1:-1;;;926:283::o;1216:239::-;;1319:2;1307:9;1298:7;1294:23;1290:32;1287:2;;;-1:-1;;1325:12;1287:2;221:6;208:20;6097:66;7462:5;6086:78;7438:5;7435:34;7425:2;;-1:-1;;7473:12;1462:303;;1597:2;1585:9;1576:7;1572:23;1568:32;1565:2;;;-1:-1;;1603:12;1565:2;381:6;375:13;393:53;440:5;393:53;:::i;3224:387::-;2074:37;;;6097:66;6086:78;3475:2;3466:12;;2369:56;3575:11;;;3366:245::o;3618:222::-;6367:42;6356:54;;;;1843:37;;3745:2;3730:18;;3716:124::o;3847:333::-;6367:42;6356:54;;;;1843:37;;4166:2;4151:18;;2074:37;4002:2;3987:18;;3973:207::o;4187:210::-;5920:13;;5913:21;1957:34;;4308:2;4293:18;;4279:118::o;4404:222::-;2074:37;;;4531:2;4516:18;;4502:124::o;5161:416::-;5361:2;5375:47;;;2998:2;5346:18;;;5688:19;3034:24;5728:14;;;3014:45;3078:12;;;5332:245::o;7253:117::-;6367:42;7340:5;6356:54;7315:5;7312:35;7302:2;;7361:1;;7351:12;7302:2;7296:74;:::o"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getGaugeImplementation()":"39312dee","getVault()":"8d928af8","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract ILayerZeroBALProxy\",\"name\":\"lzBALProxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Avalanche.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/avalanche/AvalancheRootGaugeFactory.sol\":\"AvalancheRootGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/avalanche/AvalancheRootGauge.sol\":{\"keccak256\":\"0x43bdf93c991ce12749932136f830478dc8981cd2123591b02b07103c7f4a73d8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0670c48669f090af80c4454a46c5e33d7a499015565cd57854fe9e2d1e9c85a9\",\"dweb:/ipfs/QmVUXzfTTKW2pUYRQ4neK6TmheDSsBazsShvKDLyMUmdiY\"]},\"contracts/gauges/avalanche/AvalancheRootGaugeFactory.sol\":{\"keccak256\":\"0x8337c5fd31a63a6fba259ecd0e231c681dbc6ce52424a27e5ed79b8ac065f6c1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://341d5ab5508717854ebd464208942d48fb0bd71105931c9926b70f1d26be0a1b\",\"dweb:/ipfs/QmPkZo71jMo1Hqkeq8cNmnNZkJUoLNZTPD99XM1Ewp1fBc\"]},\"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol\":{\"keccak256\":\"0xe49df779008ec324de421878d86c9ad9fc2700e47931f8de70460eaacc0e5d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dd6e05a9aeb465123a157098a73625e933ab10fa48c43afd96779289bbb9720c\",\"dweb:/ipfs/Qmd89UuKiLJcrosj2h8e4vM9vTqGdUHpkjQU5np19ZpbUG\"]}},\"version\":1}"}},"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol":{"AvalancheRootGaugeLib":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122098011fadea0d75df45f3c7cf67e4fd9d5f7de4933151be306cfb16777ea4e88564736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP9 ADD 0x1F 0xAD 0xEA 0xD PUSH22 0xDF45F3C7CF67E4FD9D5F7DE4933151BE306CFB16777E LOG4 0xE8 DUP6 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"713:499:96:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122098011fadea0d75df45f3c7cf67e4fd9d5f7de4933151be306cfb16777ea4e88564736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP9 ADD 0x1F 0xAD 0xEA 0xD PUSH22 0xDF45F3C7CF67E4FD9D5F7DE4933151BE306CFB16777E LOG4 0xE8 DUP6 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"713:499:96:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol\":\"AvalancheRootGaugeLib\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol\":{\"keccak256\":\"0xe49df779008ec324de421878d86c9ad9fc2700e47931f8de70460eaacc0e5d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dd6e05a9aeb465123a157098a73625e933ab10fa48c43afd96779289bbb9720c\",\"dweb:/ipfs/Qmd89UuKiLJcrosj2h8e4vM9vTqGdUHpkjQU5np19ZpbUG\"]}},\"version\":1}"}},"contracts/gauges/base/BaseRootGauge.sol":{"BaseRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IL1StandardBridge","name":"baseL1StandardBridge","type":"address"},{"internalType":"address","name":"baseBal","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getBaseBal","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseL1StandardBridge","outputs":[{"internalType":"contract IL1StandardBridge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101c06040523480156200001257600080fd5b50604051620018d8380380620018d8833981810160405260608110156200003857600080fd5b50805160208083015160409384015160016000908155855163e6dec36f60e01b81529551949592949193869391926001600160a01b0385169263e6dec36f926004808301939192829003018186803b1580156200009457600080fd5b505afa158015620000a9573d6000803e3d6000fd5b505050506040513d6020811015620000c057600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d60208110156200013557600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017e57600080fd5b505afa15801562000193573d6000803e3d6000fd5b505050506040513d6020811015620001aa57600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021b57600080fd5b505afa15801562000230573d6000803e3d6000fd5b505050506040513d60208110156200024757600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029b57600080fd5b505afa158015620002b0573d6000803e3d6000fd5b505050506040513d6020811015620002c757600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d60208110156200033a57600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b505161016052505060001960025550506001600160601b0319606092831b811661018052911b166101a0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c61144662000492600039806106635280610d475250806105695280610cb95280610d975250806108a052508061087f52508061080252806108ec5250806103c352806105a352806106a75280610adb52508061046252806107905250806109e2525080610e745280610f71525080610c975280610d1f52506114466000f3fe6080604052600436106100e85760003560e01c80639f8676711161008a578063b4921aa311610059578063b4921aa3146102a5578063c2c4c5c1146102ba578063cd6dc687146102c2578063d34fb26714610308576100e8565b80639f86767114610251578063a267b63114610266578063ab8f09451461027b578063b024522514610290576100e8565b80631b88094d116100c65780631b88094d146101955780634b820093146101d357806383f5c39b146102275780639c868ac01461023c576100e8565b806309400707146100ed57806310d3eb041461013f57806314e956f51461016b575b600080fd5b3480156100f957600080fd5b5061012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661031d565b60408051918252519081900360200190f35b34801561014b57600080fd5b506101696004803603602081101561016257600080fd5b50356103ab565b005b34801561017757600080fd5b5061012d6004803603602081101561018e57600080fd5b503561045b565b3480156101a157600080fd5b506101aa610529565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101df57600080fd5b50610213600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610546565b604080519115158252519081900360200190f35b34801561023357600080fd5b5061012d61054c565b34801561024857600080fd5b50610213610552565b34801561025d57600080fd5b5061012d61055b565b34801561027257600080fd5b506101aa610567565b34801561028757600080fd5b5061016961058b565b34801561029c57600080fd5b5061012d61065c565b3480156102b157600080fd5b506101aa610661565b610213610685565b3480156102ce57600080fd5b50610169600480360360408110156102e557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a72565b34801561031457600080fd5b50610169610ac3565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461044f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045881610b91565b50565b60006105237f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104ef57600080fd5b505afa158015610503573d6000803e3d6000fd5b505050506040513d602081101561051957600080fd5b5051600654610c2d565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461062f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061068f610c39565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461073357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610740610c52565b905080821015610a6457604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b1580156107d757600080fd5b505af11580156107eb573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610977578481111561083c57610977565b62093a80810260008061084e8361045b565b905082851015801561086457508262093a800185105b1561091d57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008902816108c857fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506109329050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610824565b50600284905560048054830190558115801590610997575060055460ff16155b15610a6057604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b505050506040513d6020811015610a5457600080fd5b50610a60905082610c7d565b5050505b600192505050610543610dfa565b610a7b81610e01565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113b96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c4b60026000541415610190611013565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610cde73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611021565b600754604080517f838b252000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015292831660448201526064810184905260006084820181905260c060a483015260c4820181905291517f00000000000000000000000000000000000000000000000000000000000000009093169263838b2520926101048084019391929182900301818387803b158015610ddf57600080fd5b505af1158015610df3573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed857600080fd5b505afa158015610eec573d6000803e3d6000fd5b505050506040513d6020811015610f0257600080fd5b5051905080610f5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113ed6024913960400191505060405180910390fd5b6001819055610f69610c52565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fd757600080fd5b505af1158015610feb573d6000803e3d6000fd5b505050506040513d602081101561100157600080fd5b505160035561100f82610b91565b5050565b8161100f5761100f816111f7565b80158015906110d05750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156110a157600080fd5b505afa1580156110b5573d6000803e3d6000fd5b505050506040513d60208110156110cb57600080fd5b505115155b15611165576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611165908490611221565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111f2908490611221565b505050565b610458817f42414c000000000000000000000000000000000000000000000000000000000061133d565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061128a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161124d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112ec576040519150601f19603f3d011682016040523d82523d6000602084013e6112f1565b606091505b50915091506000821415611309573d6000803e3d6000fd5b61133781516000148061132f575081806020019051602081101561132c57600080fd5b50515b6101a2611013565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122009bd824a5488881b18bb43d9f8eaaec1009a177d10b9c51722c401f507c42d0b64736f6c63430007010033","opcodes":"PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x18D8 CODESIZE SUB DUP1 PUSH3 0x18D8 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE DUP6 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 MLOAD SWAP5 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 DUP7 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x11E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x230 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x323 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP2 SHL AND PUSH2 0x1A0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1446 PUSH3 0x492 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x663 MSTORE DUP1 PUSH2 0xD47 MSTORE POP DUP1 PUSH2 0x569 MSTORE DUP1 PUSH2 0xCB9 MSTORE DUP1 PUSH2 0xD97 MSTORE POP DUP1 PUSH2 0x8A0 MSTORE POP DUP1 PUSH2 0x87F MSTORE POP DUP1 PUSH2 0x802 MSTORE DUP1 PUSH2 0x8EC MSTORE POP DUP1 PUSH2 0x3C3 MSTORE DUP1 PUSH2 0x5A3 MSTORE DUP1 PUSH2 0x6A7 MSTORE DUP1 PUSH2 0xADB MSTORE POP DUP1 PUSH2 0x462 MSTORE DUP1 PUSH2 0x790 MSTORE POP DUP1 PUSH2 0x9E2 MSTORE POP DUP1 PUSH2 0xE74 MSTORE DUP1 PUSH2 0xF71 MSTORE POP DUP1 PUSH2 0xC97 MSTORE DUP1 PUSH2 0xD1F MSTORE POP PUSH2 0x1446 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB4921AA3 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB4921AA3 EQ PUSH2 0x2A5 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x308 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xA267B631 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x290 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x23C JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3AB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x45B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x529 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x546 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x552 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x55B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x567 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0x58B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x65C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x661 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA72 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0xAC3 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x44F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x458 DUP2 PUSH2 0xB91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x523 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x503 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC2D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x62F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x68F PUSH2 0xC39 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x733 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x740 PUSH2 0xC52 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA64 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x977 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x83C JUMPI PUSH2 0x977 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x84E DUP4 PUSH2 0x45B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x864 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x91D JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x8C8 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x932 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x824 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x997 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA60 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA60 SWAP1 POP DUP3 PUSH2 0xC7D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x543 PUSH2 0xDFA JUMP JUMPDEST PUSH2 0xA7B DUP2 PUSH2 0xE01 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13B9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC4B PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1013 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xCDE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1021 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x838B252000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP3 DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP4 ADD MSTORE PUSH1 0xC4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP4 AND SWAP3 PUSH4 0x838B2520 SWAP3 PUSH2 0x104 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13ED PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF69 PUSH2 0xC52 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1001 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x100F DUP3 PUSH2 0xB91 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x100F JUMPI PUSH2 0x100F DUP2 PUSH2 0x11F7 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x10D0 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1165 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1165 SWAP1 DUP5 SWAP1 PUSH2 0x1221 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x11F2 SWAP1 DUP5 SWAP1 PUSH2 0x1221 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x458 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x133D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x128A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x124D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x12EC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x12F1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1309 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1337 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x132F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x132C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1013 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122009BD824A5488881B18BB43D9F8EAAEC1 STOP SWAP11 OR PUSH30 0x10B9C51722C401F507C42D0B64736F6C6343000701003300000000000000 ","sourceMap":"916:2666:97:-:0;;;2440:242;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2440:242:97;;;;;;;;;;;;2070:1:63;2175:7;:22;;;2339:30:89;;-1:-1:-1;2339:30:89;;;;2440:242:97;;;;;;;;2175:7:63;;-1:-1:-1;2339:28:89;;;-1:-1:-1;;2339:30:89;;;;;2440:242:97;;2339:30:89;;;;;:28;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2339:30:89;2398:29;;;-1:-1:-1;2398:29:89;;;;2339:30;;-1:-1:-1;2380:15:89;;-1:-1:-1;2398:27:89;;;-1:-1:-1;;2398:29:89;;;;;2339:30;;2398:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2398:29:89;2472:27;;;-1:-1:-1;2472:27:89;;;;2398:29;;-1:-1:-1;2437:32:89;;-1:-1:-1;2472:25:89;;;;;:27;;;;;2398:29;;2472:27;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2472:27:89;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2472:27;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;2472:27;;2665:23;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2665:23:89;2644:44;;-1:-1:-1;2644:44:89;;;2722:32;;;-1:-1:-1;2722:32:89;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;2665:23;;2722:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2722:32:89;2699:55;;2794:39;;;-1:-1:-1;2794:39:89;;;;-1:-1:-1;2794:37:89;;;-1:-1:-1;;2794:39:89;;;;;2722:32;;2794:39;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:39:89;2764:69;;2863:29;;;-1:-1:-1;2863:29:89;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;2794:39;;2863:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2863:29:89;2843:49;;-1:-1:-1;;;;3053:7:89;:27;-1:-1:-1;;;;;;;;2603:44:97::1;::::0;;;;;::::1;::::0;2657:18;;;::::1;::::0;-1:-1:-1;916:2666:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":3223},{"length":32,"start":3359}],"14642":[{"length":32,"start":3700},{"length":32,"start":3953}],"14644":[{"length":32,"start":2530}],"14646":[{"length":32,"start":1122},{"length":32,"start":1936}],"14648":[{"length":32,"start":963},{"length":32,"start":1443},{"length":32,"start":1703},{"length":32,"start":2779}],"14656":[{"length":32,"start":2050},{"length":32,"start":2284}],"14658":[{"length":32,"start":2175}],"14660":[{"length":32,"start":2208}],"17129":[{"length":32,"start":1385},{"length":32,"start":3257},{"length":32,"start":3479}],"17131":[{"length":32,"start":1635},{"length":32,"start":3399}]},"linkReferences":{},"object":"6080604052600436106100e85760003560e01c80639f8676711161008a578063b4921aa311610059578063b4921aa3146102a5578063c2c4c5c1146102ba578063cd6dc687146102c2578063d34fb26714610308576100e8565b80639f86767114610251578063a267b63114610266578063ab8f09451461027b578063b024522514610290576100e8565b80631b88094d116100c65780631b88094d146101955780634b820093146101d357806383f5c39b146102275780639c868ac01461023c576100e8565b806309400707146100ed57806310d3eb041461013f57806314e956f51461016b575b600080fd5b3480156100f957600080fd5b5061012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661031d565b60408051918252519081900360200190f35b34801561014b57600080fd5b506101696004803603602081101561016257600080fd5b50356103ab565b005b34801561017757600080fd5b5061012d6004803603602081101561018e57600080fd5b503561045b565b3480156101a157600080fd5b506101aa610529565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101df57600080fd5b50610213600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610546565b604080519115158252519081900360200190f35b34801561023357600080fd5b5061012d61054c565b34801561024857600080fd5b50610213610552565b34801561025d57600080fd5b5061012d61055b565b34801561027257600080fd5b506101aa610567565b34801561028757600080fd5b5061016961058b565b34801561029c57600080fd5b5061012d61065c565b3480156102b157600080fd5b506101aa610661565b610213610685565b3480156102ce57600080fd5b50610169600480360360408110156102e557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a72565b34801561031457600080fd5b50610169610ac3565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461044f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045881610b91565b50565b60006105237f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104ef57600080fd5b505afa158015610503573d6000803e3d6000fd5b505050506040513d602081101561051957600080fd5b5051600654610c2d565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461062f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061068f610c39565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461073357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610740610c52565b905080821015610a6457604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b1580156107d757600080fd5b505af11580156107eb573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610977578481111561083c57610977565b62093a80810260008061084e8361045b565b905082851015801561086457508262093a800185105b1561091d57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008902816108c857fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506109329050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610824565b50600284905560048054830190558115801590610997575060055460ff16155b15610a6057604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b505050506040513d6020811015610a5457600080fd5b50610a60905082610c7d565b5050505b600192505050610543610dfa565b610a7b81610e01565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113b96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c4b60026000541415610190611013565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610cde73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611021565b600754604080517f838b252000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015292831660448201526064810184905260006084820181905260c060a483015260c4820181905291517f00000000000000000000000000000000000000000000000000000000000000009093169263838b2520926101048084019391929182900301818387803b158015610ddf57600080fd5b505af1158015610df3573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed857600080fd5b505afa158015610eec573d6000803e3d6000fd5b505050506040513d6020811015610f0257600080fd5b5051905080610f5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113ed6024913960400191505060405180910390fd5b6001819055610f69610c52565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fd757600080fd5b505af1158015610feb573d6000803e3d6000fd5b505050506040513d602081101561100157600080fd5b505160035561100f82610b91565b5050565b8161100f5761100f816111f7565b80158015906110d05750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156110a157600080fd5b505afa1580156110b5573d6000803e3d6000fd5b505050506040513d60208110156110cb57600080fd5b505115155b15611165576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611165908490611221565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111f2908490611221565b505050565b610458817f42414c000000000000000000000000000000000000000000000000000000000061133d565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061128a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161124d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112ec576040519150601f19603f3d011682016040523d82523d6000602084013e6112f1565b606091505b50915091506000821415611309573d6000803e3d6000fd5b61133781516000148061132f575081806020019051602081101561132c57600080fd5b50515b6101a2611013565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122009bd824a5488881b18bb43d9f8eaaec1009a177d10b9c51722c401f507c42d0b64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB4921AA3 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB4921AA3 EQ PUSH2 0x2A5 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x308 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xA267B631 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x290 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x23C JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3AB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x45B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x529 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x546 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x552 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x55B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x567 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0x58B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x65C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x661 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA72 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0xAC3 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x44F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x458 DUP2 PUSH2 0xB91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x523 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x503 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC2D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x62F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x68F PUSH2 0xC39 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x733 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x740 PUSH2 0xC52 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA64 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x977 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x83C JUMPI PUSH2 0x977 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x84E DUP4 PUSH2 0x45B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x864 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x91D JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x8C8 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x932 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x824 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x997 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA60 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA60 SWAP1 POP DUP3 PUSH2 0xC7D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x543 PUSH2 0xDFA JUMP JUMPDEST PUSH2 0xA7B DUP2 PUSH2 0xE01 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13B9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC4B PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1013 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xCDE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1021 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x838B252000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP3 DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP4 ADD MSTORE PUSH1 0xC4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP4 AND SWAP3 PUSH4 0x838B2520 SWAP3 PUSH2 0x104 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13ED PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF69 PUSH2 0xC52 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1001 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x100F DUP3 PUSH2 0xB91 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x100F JUMPI PUSH2 0x100F DUP2 PUSH2 0x11F7 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x10D0 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1165 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1165 SWAP1 DUP5 SWAP1 PUSH2 0x1221 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x11F2 SWAP1 DUP5 SWAP1 PUSH2 0x1221 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x458 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x133D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x128A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x124D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x12EC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x12F1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1309 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1337 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x132F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x132C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1013 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122009BD824A5488881B18BB43D9F8EAAEC1 STOP SWAP11 OR PUSH30 0x10B9C51722C401F507C42D0B64736F6C6343000701003300000000000000 ","sourceMap":"916:2666:97:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6895:191:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6895:191:89;;;;:::i;:::-;;;;;;;;;;;;;;;;7513:214;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7513:214:89;;:::i;:::-;;8159:199;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:199:89;;:::i;2921:99:97:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6789:100:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6789:100:89;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8038:115;;;;;;;;;;;;;:::i;7092:92::-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;3026:122:97:-;;;;;;;;;;;;;:::i;7190:154:89:-;;;;;;;;;;;;;:::i;6394:104::-;;;;;;;;;;;;;:::i;3154:86:97:-;;;;;;;;;;;;;:::i;3697:2655:89:-;;;:::i;2688:227:97:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2688:227:97;;;;;;;;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;6895:191::-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8271:59:89;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;2921:99:97:-;3003:10;;;;2921:99;;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;8038:115::-;8128:18;;8038:115;:::o;7092:92::-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;3026:122:97:-;3120:21;3026:122;:::o;7190:154:89:-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6394:104::-;6464:7;6394:104;:::o;3154:86:97:-;3225:8;3154:86;:::o;3697:2655:89:-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;;4042:4:::1;4000:48;::::0;::::1;::::0;;;:33:::1;:16;:33;::::0;::::1;::::0;:48;;;;;-1:-1:-1;;4000:48:89;;;;;;;-1:-1:-1;4000:33:89;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5978:38;::::0;;;;;;;5989:10;;5978:38:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;;6246:4:::1;6225:27;::::0;::::1;::::0;;;:12:::1;:7;:12;::::0;::::1;::::0;:27;;;;;::::1;::::0;;;;;;;;-1:-1:-1;6225:12:89;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6270:29:89::1;::::0;-1:-1:-1;6286:12:89;6270:15:::1;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;2688:227:97:-;2835:40;2857:17;2835:21;:40::i;:::-;-1:-1:-1;2886:10:97;:22;;;;;;;;;;;;;;;2688:227::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7929:18;:38;;;7982:43;;;;;;;;;;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;3246:334:97:-;3319:65;:21;:9;:21;3349;3373:10;3319:21;:65::i;:::-;3530:10;;3463:110;;;;;;:36;3508:9;3463:110;;;;;;3520:8;3463:110;;;;;;3530:10;;;3463:110;;;;;;;;;;-1:-1:-1;3463:110:97;;;;;;;;;;;;;;;;;;;:21;:36;;;;;;:110;;;;;-1:-1:-1;;3463:110:97;;;;;;-1:-1:-1;3463:36:97;:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3246:334;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3428:18:89;;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3601:33:89;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;;1256:4;1232:43;;;;:15;:43;;;;;;;;;:15;;;;;;:43;;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1232:43:64;:48;;1218:62;1214:183;;;1332:53;;;;;;;;;;1383:1;1332:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:22;1332:53;;;1296:90;;1324:5;;1296:19;:90::i;:::-;1443:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1466:22;1443:57;;;1407:94;;1435:5;;1407:19;:94::i;:::-;1001:507;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:64;3143:56;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getBaseBal()":"b4921aa3","getBaseL1StandardBridge()":"a267b631","getCappedRelativeWeight(uint256)":"14e956f5","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"baseL1StandardBridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseBal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaseBal\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaseL1StandardBridge\",\"outputs\":[{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/base/BaseRootGauge.sol\":\"BaseRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\":{\"keccak256\":\"0x31b489cbd755b3c789115af4cf3d7af2da15f59030345ac29ecf26a033fc806a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2cc164ca032440222b7984aebbad6a46a6c82eef33564d1c6d78408bafab9934\",\"dweb:/ipfs/QmdgixtcWUX8CFhrTkUiAAmSkpMG2FsZnK18QywDhFoFcp\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/base/BaseRootGauge.sol\":{\"keccak256\":\"0xb5d997651688c44dc3a3c4407b573aa082015504fb91f972a367fb20cf64d344\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bcc43b88d1a141d008a00834d61d49363e297e79eb1de45ff37a59fa662dbca\",\"dweb:/ipfs/QmThj1XX6AbX2n2ajDDLRtJvDqpKb7eLh5zFQui92UA57H\"]}},\"version\":1}"}},"contracts/gauges/base/BaseRootGaugeFactory.sol":{"BaseRootGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IL1StandardBridge","name":"baseL1StandardBridge","type":"address"},{"internalType":"address","name":"baseBal","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b5060405161205738038061205783398101604081905261002f916100bf565b83306001600160a01b031660001b84848460405161004c906100b2565b6100589392919061011d565b604051809103906000f080158015610074573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905560805260601b6001600160601b03191660a0525061015892505050565b6118d88061077f83390190565b600080600080608085870312156100d4578384fd5b84516100df81610140565b60208601519094506100f081610140565b604086015190935061010181610140565b606086015190925061011281610140565b939692955090935050565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b038116811461015557600080fd5b50565b60805160a05160601c61060161017e600039806102055250806101b452506106016000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638d928af8116100505780638d928af8146100c8578063aaabadc5146100d0578063ce3cc8bd146100d857610072565b80630ecaea731461007757806339312dee146100a0578063851c1bb3146100a8575b600080fd5b61008a61008536600461045d565b6100f8565b6040516100979190610514565b60405180910390f35b61008a610194565b6100bb6100b6366004610488565b6101b0565b6040516100979190610566565b61008a610203565b61008a610227565b6100eb6100e636600461043a565b6102b3565b604051610097919061055b565b6000806101036102de565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc6879061015a9087908790600401610535565b600060405180830381600087803b15801561017457600080fd5b505af1158015610188573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016101e59291906104e4565b6040516020818303038152906040528051906020012090505b919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610231610203565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ae91906104c8565b905090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6000805481906103039073ffffffffffffffffffffffffffffffffffffffff16610384565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104319061056f565b60405180910390fd5b60006020828403121561044b578081fd5b8135610456816105a6565b9392505050565b6000806040838503121561046f578081fd5b823561047a816105a6565b946020939093013593505050565b600060208284031215610499578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610456578182fd5b6000602082840312156104d9578081fd5b8151610456816105a6565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b5056fea26469706673582212207522df29ff90608b283659dbb7ea1070d62546dfced00d477766e001643f17c364736f6c634300070100336101c06040523480156200001257600080fd5b50604051620018d8380380620018d8833981810160405260608110156200003857600080fd5b50805160208083015160409384015160016000908155855163e6dec36f60e01b81529551949592949193869391926001600160a01b0385169263e6dec36f926004808301939192829003018186803b1580156200009457600080fd5b505afa158015620000a9573d6000803e3d6000fd5b505050506040513d6020811015620000c057600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d60208110156200013557600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017e57600080fd5b505afa15801562000193573d6000803e3d6000fd5b505050506040513d6020811015620001aa57600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021b57600080fd5b505afa15801562000230573d6000803e3d6000fd5b505050506040513d60208110156200024757600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029b57600080fd5b505afa158015620002b0573d6000803e3d6000fd5b505050506040513d6020811015620002c757600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d60208110156200033a57600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b505161016052505060001960025550506001600160601b0319606092831b811661018052911b166101a0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c61144662000492600039806106635280610d475250806105695280610cb95280610d975250806108a052508061087f52508061080252806108ec5250806103c352806105a352806106a75280610adb52508061046252806107905250806109e2525080610e745280610f71525080610c975280610d1f52506114466000f3fe6080604052600436106100e85760003560e01c80639f8676711161008a578063b4921aa311610059578063b4921aa3146102a5578063c2c4c5c1146102ba578063cd6dc687146102c2578063d34fb26714610308576100e8565b80639f86767114610251578063a267b63114610266578063ab8f09451461027b578063b024522514610290576100e8565b80631b88094d116100c65780631b88094d146101955780634b820093146101d357806383f5c39b146102275780639c868ac01461023c576100e8565b806309400707146100ed57806310d3eb041461013f57806314e956f51461016b575b600080fd5b3480156100f957600080fd5b5061012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661031d565b60408051918252519081900360200190f35b34801561014b57600080fd5b506101696004803603602081101561016257600080fd5b50356103ab565b005b34801561017757600080fd5b5061012d6004803603602081101561018e57600080fd5b503561045b565b3480156101a157600080fd5b506101aa610529565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101df57600080fd5b50610213600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610546565b604080519115158252519081900360200190f35b34801561023357600080fd5b5061012d61054c565b34801561024857600080fd5b50610213610552565b34801561025d57600080fd5b5061012d61055b565b34801561027257600080fd5b506101aa610567565b34801561028757600080fd5b5061016961058b565b34801561029c57600080fd5b5061012d61065c565b3480156102b157600080fd5b506101aa610661565b610213610685565b3480156102ce57600080fd5b50610169600480360360408110156102e557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a72565b34801561031457600080fd5b50610169610ac3565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461044f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045881610b91565b50565b60006105237f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104ef57600080fd5b505afa158015610503573d6000803e3d6000fd5b505050506040513d602081101561051957600080fd5b5051600654610c2d565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461062f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061068f610c39565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461073357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610740610c52565b905080821015610a6457604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b1580156107d757600080fd5b505af11580156107eb573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610977578481111561083c57610977565b62093a80810260008061084e8361045b565b905082851015801561086457508262093a800185105b1561091d57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008902816108c857fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506109329050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610824565b50600284905560048054830190558115801590610997575060055460ff16155b15610a6057604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b505050506040513d6020811015610a5457600080fd5b50610a60905082610c7d565b5050505b600192505050610543610dfa565b610a7b81610e01565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113b96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c4b60026000541415610190611013565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610cde73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611021565b600754604080517f838b252000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015292831660448201526064810184905260006084820181905260c060a483015260c4820181905291517f00000000000000000000000000000000000000000000000000000000000000009093169263838b2520926101048084019391929182900301818387803b158015610ddf57600080fd5b505af1158015610df3573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed857600080fd5b505afa158015610eec573d6000803e3d6000fd5b505050506040513d6020811015610f0257600080fd5b5051905080610f5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113ed6024913960400191505060405180910390fd5b6001819055610f69610c52565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fd757600080fd5b505af1158015610feb573d6000803e3d6000fd5b505050506040513d602081101561100157600080fd5b505160035561100f82610b91565b5050565b8161100f5761100f816111f7565b80158015906110d05750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156110a157600080fd5b505afa1580156110b5573d6000803e3d6000fd5b505050506040513d60208110156110cb57600080fd5b505115155b15611165576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611165908490611221565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111f2908490611221565b505050565b610458817f42414c000000000000000000000000000000000000000000000000000000000061133d565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061128a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161124d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112ec576040519150601f19603f3d011682016040523d82523d6000602084013e6112f1565b606091505b50915091506000821415611309573d6000803e3d6000fd5b61133781516000148061132f575081806020019051602081101561132c57600080fd5b50515b6101a2611013565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122009bd824a5488881b18bb43d9f8eaaec1009a177d10b9c51722c401f507c42d0b64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2057 CODESIZE SUB DUP1 PUSH2 0x2057 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xBF JUMP JUMPDEST DUP4 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x4C SWAP1 PUSH2 0xB2 JUMP JUMPDEST PUSH2 0x58 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x11D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x80 MSTORE PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE POP PUSH2 0x158 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x18D8 DUP1 PUSH2 0x77F DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xD4 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 MLOAD PUSH2 0xDF DUP2 PUSH2 0x140 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0xF0 DUP2 PUSH2 0x140 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0x101 DUP2 PUSH2 0x140 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x112 DUP2 PUSH2 0x140 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x601 PUSH2 0x17E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x205 MSTORE POP DUP1 PUSH2 0x1B4 MSTORE POP PUSH2 0x601 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xD8 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xA8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x45D JUMP JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x514 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x194 JUMP JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x488 JUMP JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x203 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x227 JUMP JUMPDEST PUSH2 0xEB PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x43A JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x103 PUSH2 0x2DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0x15A SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x535 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E5 SWAP3 SWAP2 SWAP1 PUSH2 0x4E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x231 PUSH2 0x203 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AE SWAP2 SWAP1 PUSH2 0x4C8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x303 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x384 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x431 SWAP1 PUSH2 0x56F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x44B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x47A DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x499 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x456 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0x22DF29FF90608B283659DBB7EA1070D62546DFCED00D SELFBALANCE PUSH24 0x66E001643F17C364736F6C634300070100336101C0604052 CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x18D8 CODESIZE SUB DUP1 PUSH3 0x18D8 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE DUP6 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 MLOAD SWAP5 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 DUP7 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x11E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x230 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x323 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP2 SHL AND PUSH2 0x1A0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1446 PUSH3 0x492 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x663 MSTORE DUP1 PUSH2 0xD47 MSTORE POP DUP1 PUSH2 0x569 MSTORE DUP1 PUSH2 0xCB9 MSTORE DUP1 PUSH2 0xD97 MSTORE POP DUP1 PUSH2 0x8A0 MSTORE POP DUP1 PUSH2 0x87F MSTORE POP DUP1 PUSH2 0x802 MSTORE DUP1 PUSH2 0x8EC MSTORE POP DUP1 PUSH2 0x3C3 MSTORE DUP1 PUSH2 0x5A3 MSTORE DUP1 PUSH2 0x6A7 MSTORE DUP1 PUSH2 0xADB MSTORE POP DUP1 PUSH2 0x462 MSTORE DUP1 PUSH2 0x790 MSTORE POP DUP1 PUSH2 0x9E2 MSTORE POP DUP1 PUSH2 0xE74 MSTORE DUP1 PUSH2 0xF71 MSTORE POP DUP1 PUSH2 0xC97 MSTORE DUP1 PUSH2 0xD1F MSTORE POP PUSH2 0x1446 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB4921AA3 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB4921AA3 EQ PUSH2 0x2A5 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x308 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xA267B631 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x290 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x23C JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3AB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x45B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x529 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x546 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x552 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x55B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x567 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0x58B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x65C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x661 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA72 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0xAC3 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x44F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x458 DUP2 PUSH2 0xB91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x523 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x503 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC2D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x62F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x68F PUSH2 0xC39 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x733 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x740 PUSH2 0xC52 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA64 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x977 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x83C JUMPI PUSH2 0x977 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x84E DUP4 PUSH2 0x45B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x864 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x91D JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x8C8 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x932 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x824 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x997 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA60 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA60 SWAP1 POP DUP3 PUSH2 0xC7D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x543 PUSH2 0xDFA JUMP JUMPDEST PUSH2 0xA7B DUP2 PUSH2 0xE01 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13B9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC4B PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1013 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xCDE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1021 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x838B252000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP3 DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP4 ADD MSTORE PUSH1 0xC4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP4 AND SWAP3 PUSH4 0x838B2520 SWAP3 PUSH2 0x104 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13ED PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF69 PUSH2 0xC52 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1001 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x100F DUP3 PUSH2 0xB91 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x100F JUMPI PUSH2 0x100F DUP2 PUSH2 0x11F7 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x10D0 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1165 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1165 SWAP1 DUP5 SWAP1 PUSH2 0x1221 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x11F2 SWAP1 DUP5 SWAP1 PUSH2 0x1221 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x458 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x133D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x128A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x124D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x12EC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x12F1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1309 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1337 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x132F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x132C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1013 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122009BD824A5488881B18BB43D9F8EAAEC1 STOP SWAP11 OR PUSH30 0x10B9C51722C401F507C42D0B64736F6C6343000701003300000000000000 ","sourceMap":"902:1135:98:-:0;;;983:351;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1259:5;1054:4:51;-1:-1:-1;;;;;1038:22:51;1030:31;;1186:6:98;1194:20;1216:7;1168:56;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;2049:46:46;;1073:14:51::1;::::0;-1:-1:-1;;;;;;1073:14:51;::::1;::::0;-1:-1:-1;902:1135:98;;-1:-1:-1;;;902:1135:98;;;;;;;;;:::o;709:812:-1:-;;;;;945:3;933:9;924:7;920:23;916:33;913:2;;;-1:-1;;952:12;913:2;637:6;631:13;649:48;691:5;649:48;:::i;:::-;1130:2;1210:22;;445:13;1004:89;;-1:-1;463:63;445:13;463:63;:::i;:::-;1279:2;1354:22;;249:13;1138:104;;-1:-1;267:58;249:13;267:58;:::i;:::-;1423:2;1473:22;;83:13;1287:99;;-1:-1;101:33;83:13;101:33;:::i;:::-;907:614;;;;-1:-1;907:614;;-1:-1;;907:614::o;2024:554::-;-1:-1;;;;;3109:54;;;1744:75;;3109:54;;;2481:2;2466:18;;1744:75;3109:54;;;2564:2;2549:18;;1599:37;2262:2;2247:18;;2233:345::o;3826:117::-;-1:-1;;;;;3109:54;;3885:35;;3875:2;;3934:1;;3924:12;3875:2;3869:74;:::o;:::-;902:1135:98;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":436}],"3611":[{"length":32,"start":517}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80638d928af8116100505780638d928af8146100c8578063aaabadc5146100d0578063ce3cc8bd146100d857610072565b80630ecaea731461007757806339312dee146100a0578063851c1bb3146100a8575b600080fd5b61008a61008536600461045d565b6100f8565b6040516100979190610514565b60405180910390f35b61008a610194565b6100bb6100b6366004610488565b6101b0565b6040516100979190610566565b61008a610203565b61008a610227565b6100eb6100e636600461043a565b6102b3565b604051610097919061055b565b6000806101036102de565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc6879061015a9087908790600401610535565b600060405180830381600087803b15801561017457600080fd5b505af1158015610188573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016101e59291906104e4565b6040516020818303038152906040528051906020012090505b919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610231610203565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ae91906104c8565b905090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6000805481906103039073ffffffffffffffffffffffffffffffffffffffff16610384565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104319061056f565b60405180910390fd5b60006020828403121561044b578081fd5b8135610456816105a6565b9392505050565b6000806040838503121561046f578081fd5b823561047a816105a6565b946020939093013593505050565b600060208284031215610499578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610456578182fd5b6000602082840312156104d9578081fd5b8151610456816105a6565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b5056fea26469706673582212207522df29ff90608b283659dbb7ea1070d62546dfced00d477766e001643f17c364736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xD8 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xA8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x45D JUMP JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x514 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x194 JUMP JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x488 JUMP JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x203 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x227 JUMP JUMPDEST PUSH2 0xEB PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x43A JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x103 PUSH2 0x2DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0x15A SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x535 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E5 SWAP3 SWAP2 SWAP1 PUSH2 0x4E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x231 PUSH2 0x203 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AE SWAP2 SWAP1 PUSH2 0x4C8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x303 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x384 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x431 SWAP1 PUSH2 0x56F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x44B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x47A DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x499 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x456 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x456 DUP2 PUSH2 0x5A6 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0x22DF29FF90608B283659DBB7EA1070D62546DFCED00D SELFBALANCE PUSH24 0x66E001643F17C364736F6C63430007010033000000000000 ","sourceMap":"902:1135:98:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1811:224;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;2607:430:46:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1158:79:51:-;;;:::i;1297:109::-;;;:::i;1507:131:83:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1811:224:98:-;1891:7;1910:13;1926:9;:7;:9::i;:::-;1945:61;;;;;1910:25;;-1:-1:-1;1945:31:98;;;;;;:61;;1977:9;;1988:17;;1945:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2023:5:98;;1811:224;-1:-1:-1;;;;;;1811:224:98:o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;1297:109::-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;1507:131:83:-;1605:26;;1582:4;1605:26;;;:19;:26;;;;;;;;;1507:131::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;595:241:-1;;699:2;687:9;678:7;674:23;670:32;667:2;;;-1:-1;;705:12;667:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;757:63;661:175;-1:-1;;;661:175::o;843:366::-;;;964:2;952:9;943:7;939:23;935:32;932:2;;;-1:-1;;970:12;932:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1022:63;1122:2;1161:22;;;;525:20;;-1:-1;;;926:283::o;1216:239::-;;1319:2;1307:9;1298:7;1294:23;1290:32;1287:2;;;-1:-1;;1325:12;1287:2;221:6;208:20;6097:66;7462:5;6086:78;7438:5;7435:34;7425:2;;-1:-1;;7473:12;1462:303;;1597:2;1585:9;1576:7;1572:23;1568:32;1565:2;;;-1:-1;;1603:12;1565:2;381:6;375:13;393:53;440:5;393:53;:::i;3224:387::-;2074:37;;;6097:66;6086:78;3475:2;3466:12;;2369:56;3575:11;;;3366:245::o;3618:222::-;6367:42;6356:54;;;;1843:37;;3745:2;3730:18;;3716:124::o;3847:333::-;6367:42;6356:54;;;;1843:37;;4166:2;4151:18;;2074:37;4002:2;3987:18;;3973:207::o;4187:210::-;5920:13;;5913:21;1957:34;;4308:2;4293:18;;4279:118::o;4404:222::-;2074:37;;;4531:2;4516:18;;4502:124::o;5161:416::-;5361:2;5375:47;;;2998:2;5346:18;;;5688:19;3034:24;5728:14;;;3014:45;3078:12;;;5332:245::o;7253:117::-;6367:42;7340:5;6356:54;7315:5;7312:35;7302:2;;7361:1;;7351:12;7302:2;7296:74;:::o"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getGaugeImplementation()":"39312dee","getVault()":"8d928af8","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"baseL1StandardBridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseBal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Optimism.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/base/BaseRootGaugeFactory.sol\":\"BaseRootGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\":{\"keccak256\":\"0x31b489cbd755b3c789115af4cf3d7af2da15f59030345ac29ecf26a033fc806a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2cc164ca032440222b7984aebbad6a46a6c82eef33564d1c6d78408bafab9934\",\"dweb:/ipfs/QmdgixtcWUX8CFhrTkUiAAmSkpMG2FsZnK18QywDhFoFcp\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/base/BaseRootGauge.sol\":{\"keccak256\":\"0xb5d997651688c44dc3a3c4407b573aa082015504fb91f972a367fb20cf64d344\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bcc43b88d1a141d008a00834d61d49363e297e79eb1de45ff37a59fa662dbca\",\"dweb:/ipfs/QmThj1XX6AbX2n2ajDDLRtJvDqpKb7eLh5zFQui92UA57H\"]},\"contracts/gauges/base/BaseRootGaugeFactory.sol\":{\"keccak256\":\"0x32d784cf3b2884ebd4dac3f952d8fc8eec689c0059dedca641bfcfcb490bebfc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://974f92159ccd179c8bc49a165f4ba299620dbfc68d5d545b5666947d4354898a\",\"dweb:/ipfs/QmVaHtkQkKoyxswwJ1NcwfgrsYg6XuQaoaJErswarSq8pq\"]}},\"version\":1}"}},"contracts/gauges/ethereum/LiquidityGaugeFactory.sol":{"LiquidityGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161049c38038061049c83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610082565b600060208284031215610065578081fd5b81516001600160a01b038116811461007b578182fd5b9392505050565b61040b806100916000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea26469706673582212203daf8f967dcc867efdfb6d0e2cfdc186bfbc6befe5a6bfc1770da580989a74df64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x49C CODESIZE SUB DUP1 PUSH2 0x49C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x82 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7B JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x40B DUP1 PUSH2 0x91 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATASIZE 0xAF DUP16 SWAP7 PUSH30 0xCC867EFDFB6D0E2CFDC186BFBC6BEFE5A6BFC1770DA580989A74DF64736F PUSH13 0x63430007010033000000000000 ","sourceMap":"876:1072:99:-:0;;;933:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;876:1072:99;;208:325:-1;;354:2;342:9;333:7;329:23;325:32;322:2;;;-1:-1;;360:12;322:2;114:13;;-1:-1;;;;;829:54;;985:66;;975:2;;-1:-1;;1055:12;975:2;412:105;316:217;-1:-1;;;316:217::o;:::-;876:1072:99;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea26469706673582212203daf8f967dcc867efdfb6d0e2cfdc186bfbc6befe5a6bfc1770da580989a74df64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATASIZE 0xAF DUP16 SWAP7 PUSH30 0xCC867EFDFB6D0E2CFDC186BFBC6BEFE5A6BFC1770DA580989A74DF64736F PUSH13 0x63430007010033000000000000 ","sourceMap":"876:1072:99:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1723:223;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;1507:131::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1723:223:99:-;1798:7;1817:13;1833:9;:7;:9::i;:::-;1852:65;;;;;1817:25;;-1:-1:-1;1852:40:99;;;;;;:65;;1893:4;;1899:17;;1852:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1934:5:99;;-1:-1:-1;;;;1723:223:99;;;;;:::o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;1507:131::-;1605:26;;;1582:4;1605:26;;;:19;:26;;;;;;;;1507:131;;;;:::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;5:130:-1;72:20;;3226:42;3215:54;;3419:35;;3409:2;;3468:1;;3458:12;279:241;;383:2;371:9;362:7;358:23;354:32;351:2;;;-1:-1;;389:12;351:2;451:53;496:7;472:22;451:53;:::i;:::-;441:63;345:175;-1:-1;;;345:175::o;527:366::-;;;648:2;636:9;627:7;623:23;619:32;616:2;;;-1:-1;;654:12;616:2;716:53;761:7;737:22;716:53;:::i;:::-;706:63;806:2;845:22;;;;209:20;;-1:-1;;;610:283::o;1582:222::-;3226:42;3215:54;;;;971:37;;1709:2;1694:18;;1680:124::o;1811:333::-;3226:42;3215:54;;;;971:37;;2130:2;2115:18;;1533:37;1966:2;1951:18;;1937:207::o;2151:210::-;3127:13;;3120:21;1085:34;;2272:2;2257:18;;2243:118::o;2368:416::-;2568:2;2582:47;;;1356:2;2553:18;;;2895:19;1392:24;2935:14;;;1372:45;1436:12;;;2539:245::o"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getGaugeImplementation()":"39312dee","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"As anyone can register arbitrary Balancer pools with the Vault, it's impossible to prove onchain that `pool` is a \\\"valid\\\" deployment. Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController. It is possible to deploy multiple gauges for a single pool.\",\"params\":{\"pool\":\"The address of the pool for which to deploy a gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge for a Balancer pool.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ethereum/LiquidityGaugeFactory.sol\":\"LiquidityGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/ethereum/LiquidityGaugeFactory.sol\":{\"keccak256\":\"0xcf22f21f2fcee06675407b96df00fc9167890a19e22bb670908aee9cde9d78e6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://305452e8ea876c922620e55813989a343964ad64644d4b1b991518d895ce7bff\",\"dweb:/ipfs/QmTWvUcehwC9S1kGHtZgdNUSNcp5XcXKm56gteo4orfY8Q\"]}},\"version\":1}"}},"contracts/gauges/ethereum/SingleRecipientGauge.sol":{"SingleRecipientGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"},{"internalType":"bool","name":"feeDistributorRecipient","type":"bool"},{"internalType":"string","name":"version","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRecipientFeeDistributor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101806040523480156200001257600080fd5b5060405162001c3238038062001c32833981810160405260208110156200003857600080fd5b505160408051602081019091526000815281906200005681620003cb565b50600180819055506000816001600160a01b031663e6dec36f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009a57600080fd5b505afa158015620000af573d6000803e3d6000fd5b505050506040513d6020811015620000c657600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010f57600080fd5b505afa15801562000124573d6000803e3d6000fd5b505050506040513d60208110156200013b57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200018457600080fd5b505afa15801562000199573d6000803e3d6000fd5b505050506040513d6020811015620001b057600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200022157600080fd5b505afa15801562000236573d6000803e3d6000fd5b505050506040513d60208110156200024d57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b158015620002a157600080fd5b505afa158015620002b6573d6000803e3d6000fd5b505050506040513d6020811015620002cd57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200031457600080fd5b505afa15801562000329573d6000803e3d6000fd5b505050506040513d60208110156200034057600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038757600080fd5b505afa1580156200039c573d6000803e3d6000fd5b505050506040513d6020811015620003b357600080fd5b50516101605250506000196003555062000480915050565b8051620003e0906000906020840190620003e4565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200042757805160ff191683800117855562000457565b8280016001018555821562000457579182015b82811115620004575782518255916020019190600101906200043a565b506200046592915062000469565b5090565b5b808211156200046557600081556001016200046a565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c61012051610140516101605161171d6200051560003980610ad0525080610aaf525080610a325280610b1c52508061056552806107f652806108d65280610cba52508061060452806109bf525080610c12525080610de35280610ee05250806110b452806110f952806111a3525061171d6000f3fe6080604052600436106100e85760003560e01c806383f5c39b1161008a578063ab8f094511610059578063ab8f0945146103e3578063b0245225146103f8578063c2c4c5c11461040d578063d34fb26714610415576100e8565b806383f5c39b1461038f57806395d666c8146103a45780639c868ac0146103b95780639f867671146103ce576100e8565b806314e956f5116100c657806314e956f5146102495780631b88094d146102735780634b820093146102b157806354fd4d5014610305576100e8565b806306b70aa2146100ed57806309400707146101cd57806310d3eb041461021f575b600080fd5b3480156100f957600080fd5b506101cb6004803603608081101561011057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359160408201351515919081019060808101606082013564010000000081111561015657600080fd5b82018360208201111561016857600080fd5b8035906020019184600183028401116401000000008311171561018a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061042a945050505050565b005b3480156101d957600080fd5b5061020d600480360360208110156101f057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104bf565b60408051918252519081900360200190f35b34801561022b57600080fd5b506101cb6004803603602081101561024257600080fd5b503561054d565b34801561025557600080fd5b5061020d6004803603602081101561026c57600080fd5b50356105fd565b34801561027f57600080fd5b506102886106cb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102bd57600080fd5b506102f1600480360360208110156102d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106e8565b604080519115158252519081900360200190f35b34801561031157600080fd5b5061031a6106ee565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561035457818101518382015260200161033c565b50505050905090810190601f1680156103815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039b57600080fd5b5061020d6107a2565b3480156103b057600080fd5b506102f16107a8565b3480156103c557600080fd5b506102f16107c9565b3480156103da57600080fd5b5061020d6107d2565b3480156103ef57600080fd5b506101cb6107de565b34801561040457600080fd5b5061020d6108af565b6102f16108b4565b34801561042157600080fd5b506101cb610ca2565b61043383610d70565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000841515021790556104b981610f82565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff8216301461054557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060055490565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6105fa81610f95565b50565b60006106c57f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561069157600080fd5b505afa1580156106a5573d6000803e3d6000fd5b505050506040513d60208110156106bb57600080fd5b5051600754611031565b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050905090565b60075490565b60085474010000000000000000000000000000000000000000900460ff1690565b60065460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461088257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b60006108be61103d565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600354600061096f611056565b905080821015610c9457604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b158015610a0657600080fd5b505af1158015610a1a573d6000803e3d6000fd5b505060025460045460019590950194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610ba75784811115610a6c57610ba7565b62093a808102600080610a7e836105fd565b9050828510158015610a9457508262093a800185105b15610b4d57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000890281610af857fe5b04975062093a80819003670de0b6b3a7640000838a02820260028b905560048990557f00000000000000000000000000000000000000000000000000000000000000009098019704939093019250610b629050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610a54565b50600384905560058054830190558115801590610bc7575060065460ff16155b15610c9057604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610c5a57600080fd5b505af1158015610c6e573d6000803e3d6000fd5b505050506040513d6020811015610c8457600080fd5b50610c90905082611081565b5050505b6001925050506106e56111ca565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d4657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60035415610ddf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4757600080fd5b505afa158015610e5b573d6000803e3d6000fd5b505050506040513d6020811015610e7157600080fd5b5051905080610ecb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806116c46024913960400191505060405180910390fd5b6002819055610ed8611056565b6003819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f4657600080fd5b505af1158015610f5a573d6000803e3d6000fd5b505050506040513d6020811015610f7057600080fd5b5051600455610f7e82610f95565b5050565b8051610f7e9060009060208401906115fc565b670de0b6b3a7640000811115610ff6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806116906034913960400191505060405180910390fd5b60078190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b61104f600260015414156101906111d0565b6002600155565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b600061108b6106cb565b90506110956107a8565b15611189576110db73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682846111de565b8073ffffffffffffffffffffffffffffffffffffffff1663338b5dea7f0000000000000000000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561116c57600080fd5b505af1158015611180573d6000803e3d6000fd5b50505050610f7e565b610f7e73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682846113b4565b60018055565b81610f7e57610f7e81611441565b801580159061128d5750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561125e57600080fd5b505afa158015611272573d6000803e3d6000fd5b505050506040513d602081101561128857600080fd5b505115155b15611322576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261132290849061146b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526113af90849061146b565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526113af90849061146b565b6105fa817f42414c0000000000000000000000000000000000000000000000000000000000611581565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106114d457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611497565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611536576040519150601f19603f3d011682016040523d82523d6000602084013e61153b565b606091505b50915091506000821415611553573d6000803e3d6000fd5b6104b9815160001480611579575081806020019051602081101561157657600080fd5b50515b6101a26111d0565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061163d57805160ff191683800117855561166a565b8280016001018555821561166a579182015b8281111561166a57825182559160200191906001019061164f565b5061167692915061167a565b5090565b5b80821115611676576000815560010161167b56fe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a2646970667358221220973f44def5f2f19d45222b55b7017e2ea698584e624d2f66a1d56b2916684fb164736f6c63430007010033","opcodes":"PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1C32 CODESIZE SUB DUP1 PUSH3 0x1C32 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE DUP2 SWAP1 PUSH3 0x56 DUP2 PUSH3 0x3CB JUMP JUMPDEST POP PUSH1 0x1 DUP1 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE6DEC36F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xAF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x124 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x199 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x236 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x329 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x39C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x3 SSTORE POP PUSH3 0x480 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3E0 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x3E4 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x427 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x457 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x457 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x457 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x43A JUMP JUMPDEST POP PUSH3 0x465 SWAP3 SWAP2 POP PUSH3 0x469 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x465 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x46A JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x171D PUSH3 0x515 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xAD0 MSTORE POP DUP1 PUSH2 0xAAF MSTORE POP DUP1 PUSH2 0xA32 MSTORE DUP1 PUSH2 0xB1C MSTORE POP DUP1 PUSH2 0x565 MSTORE DUP1 PUSH2 0x7F6 MSTORE DUP1 PUSH2 0x8D6 MSTORE DUP1 PUSH2 0xCBA MSTORE POP DUP1 PUSH2 0x604 MSTORE DUP1 PUSH2 0x9BF MSTORE POP DUP1 PUSH2 0xC12 MSTORE POP DUP1 PUSH2 0xDE3 MSTORE DUP1 PUSH2 0xEE0 MSTORE POP DUP1 PUSH2 0x10B4 MSTORE DUP1 PUSH2 0x10F9 MSTORE DUP1 PUSH2 0x11A3 MSTORE POP PUSH2 0x171D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x3F8 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x40D JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x415 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x38F JUMPI DUP1 PUSH4 0x95D666C8 EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x3CE JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x305 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x6B70AA2 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x21F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD ISZERO ISZERO SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x42A SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x54D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x6CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31A PUSH2 0x6EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x354 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x33C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x381 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x7A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH2 0x7A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH2 0x7C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x7D2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x7DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x8AF JUMP JUMPDEST PUSH2 0x2F1 PUSH2 0x8B4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0xCA2 JUMP JUMPDEST PUSH2 0x433 DUP4 PUSH2 0xD70 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 DUP5 ISZERO ISZERO MUL OR SWAP1 SSTORE PUSH2 0x4B9 DUP2 PUSH2 0xF82 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x545 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x5 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5FA DUP2 PUSH2 0xF95 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C5 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH2 0x1031 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x798 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x76D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x798 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x77B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x882 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8BE PUSH2 0x103D JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x962 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 PUSH2 0x96F PUSH2 0x1056 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xC94 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA1A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0xBA7 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0xA6C JUMPI PUSH2 0xBA7 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0xA7E DUP4 PUSH2 0x5FD JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xA94 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0xB4D JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0xAF8 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x2 DUP12 SWAP1 SSTORE PUSH1 0x4 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xB62 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0xA54 JUMP JUMPDEST POP PUSH1 0x3 DUP5 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBC7 JUMPI POP PUSH1 0x6 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xC90 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC90 SWAP1 POP DUP3 PUSH2 0x1081 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x6E5 PUSH2 0x11CA JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xD46 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD ISZERO PUSH2 0xDDF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xECB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16C4 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH2 0xED8 PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SSTORE PUSH2 0xF7E DUP3 PUSH2 0xF95 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0xF7E SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x15FC JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xFF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1690 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x104F PUSH1 0x2 PUSH1 0x1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x11D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x108B PUSH2 0x6CB JUMP JUMPDEST SWAP1 POP PUSH2 0x1095 PUSH2 0x7A8 JUMP JUMPDEST ISZERO PUSH2 0x1189 JUMPI PUSH2 0x10DB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 DUP5 PUSH2 0x11DE JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x338B5DEA PUSH32 0x0 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x116C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1180 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xF7E JUMP JUMPDEST PUSH2 0xF7E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 DUP5 PUSH2 0x13B4 JUMP JUMPDEST PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0xF7E JUMPI PUSH2 0xF7E DUP2 PUSH2 0x1441 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x128D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x125E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1272 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1322 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1322 SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13AF SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13AF SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH2 0x5FA DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1581 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x14D4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1497 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1536 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x153B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1553 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x4B9 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1579 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x11D0 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x163D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x166A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x166A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x166A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x164F JUMP JUMPDEST POP PUSH2 0x1676 SWAP3 SWAP2 POP PUSH2 0x167A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1676 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x167B JUMP INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x58221220973F44DEF5F2F19D45222B55B7017E2E 0xA6 SWAP9 PC 0x4E PUSH3 0x4D2F66 LOG1 0xD5 PUSH12 0x2916684FB164736F6C634300 SMOD ADD STOP CALLER ","sourceMap":"986:1485:100:-:0;;;1308:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1308:142:100;949:72:52;;;1308:142:100;949:72:52;;;;;-1:-1:-1;949:72:52;;1308:142:100;;994:20:52;949:72;994:11;:20::i;:::-;949:72;2070:1:63;2175:7;:22;;;;2286:30:89;2339:6;-1:-1:-1;;;;;2339:28:89;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2339:30:89;2398:29;;;-1:-1:-1;2398:29:89;;;;2339:30;;-1:-1:-1;2380:15:89;;-1:-1:-1;2398:27:89;;;-1:-1:-1;;2398:29:89;;;;;2339:30;;2398:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2398:29:89;2472:27;;;-1:-1:-1;2472:27:89;;;;2398:29;;-1:-1:-1;2437:32:89;;-1:-1:-1;2472:25:89;;;;;:27;;;;;2398:29;;2472:27;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2472:27:89;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2472:27;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;2472:27;;2665:23;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2665:23:89;2644:44;;-1:-1:-1;2644:44:89;;;2722:32;;;-1:-1:-1;2722:32:89;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;2665:23;;2722:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2722:32:89;2699:55;;2794:39;;;-1:-1:-1;2794:39:89;;;;-1:-1:-1;2794:37:89;;;-1:-1:-1;;2794:39:89;;;;;2722:32;;2794:39;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:39:89;2764:69;;2863:29;;;-1:-1:-1;2863:29:89;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;2794:39;;2863:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2863:29:89;2843:49;;-1:-1:-1;;;3053:7:89;:27;-1:-1:-1;986:1485:100;;-1:-1:-1;;986:1485:100;1224:94:52;1290:21;;;;:8;;:21;;;;;:::i;:::-;;1224:94;:::o;986:1485:100:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;986:1485:100;;;-1:-1:-1;986:1485:100;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":4276},{"length":32,"start":4345},{"length":32,"start":4515}],"14642":[{"length":32,"start":3555},{"length":32,"start":3808}],"14644":[{"length":32,"start":3090}],"14646":[{"length":32,"start":1540},{"length":32,"start":2495}],"14648":[{"length":32,"start":1381},{"length":32,"start":2038},{"length":32,"start":2262},{"length":32,"start":3258}],"14656":[{"length":32,"start":2610},{"length":32,"start":2844}],"14658":[{"length":32,"start":2735}],"14660":[{"length":32,"start":2768}]},"linkReferences":{},"object":"6080604052600436106100e85760003560e01c806383f5c39b1161008a578063ab8f094511610059578063ab8f0945146103e3578063b0245225146103f8578063c2c4c5c11461040d578063d34fb26714610415576100e8565b806383f5c39b1461038f57806395d666c8146103a45780639c868ac0146103b95780639f867671146103ce576100e8565b806314e956f5116100c657806314e956f5146102495780631b88094d146102735780634b820093146102b157806354fd4d5014610305576100e8565b806306b70aa2146100ed57806309400707146101cd57806310d3eb041461021f575b600080fd5b3480156100f957600080fd5b506101cb6004803603608081101561011057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359160408201351515919081019060808101606082013564010000000081111561015657600080fd5b82018360208201111561016857600080fd5b8035906020019184600183028401116401000000008311171561018a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061042a945050505050565b005b3480156101d957600080fd5b5061020d600480360360208110156101f057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104bf565b60408051918252519081900360200190f35b34801561022b57600080fd5b506101cb6004803603602081101561024257600080fd5b503561054d565b34801561025557600080fd5b5061020d6004803603602081101561026c57600080fd5b50356105fd565b34801561027f57600080fd5b506102886106cb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102bd57600080fd5b506102f1600480360360208110156102d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106e8565b604080519115158252519081900360200190f35b34801561031157600080fd5b5061031a6106ee565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561035457818101518382015260200161033c565b50505050905090810190601f1680156103815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039b57600080fd5b5061020d6107a2565b3480156103b057600080fd5b506102f16107a8565b3480156103c557600080fd5b506102f16107c9565b3480156103da57600080fd5b5061020d6107d2565b3480156103ef57600080fd5b506101cb6107de565b34801561040457600080fd5b5061020d6108af565b6102f16108b4565b34801561042157600080fd5b506101cb610ca2565b61043383610d70565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000841515021790556104b981610f82565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff8216301461054557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060055490565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6105fa81610f95565b50565b60006106c57f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561069157600080fd5b505afa1580156106a5573d6000803e3d6000fd5b505050506040513d60208110156106bb57600080fd5b5051600754611031565b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050905090565b60075490565b60085474010000000000000000000000000000000000000000900460ff1690565b60065460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461088257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b60006108be61103d565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600354600061096f611056565b905080821015610c9457604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b158015610a0657600080fd5b505af1158015610a1a573d6000803e3d6000fd5b505060025460045460019590950194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610ba75784811115610a6c57610ba7565b62093a808102600080610a7e836105fd565b9050828510158015610a9457508262093a800185105b15610b4d57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000890281610af857fe5b04975062093a80819003670de0b6b3a7640000838a02820260028b905560048990557f00000000000000000000000000000000000000000000000000000000000000009098019704939093019250610b629050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610a54565b50600384905560058054830190558115801590610bc7575060065460ff16155b15610c9057604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610c5a57600080fd5b505af1158015610c6e573d6000803e3d6000fd5b505050506040513d6020811015610c8457600080fd5b50610c90905082611081565b5050505b6001925050506106e56111ca565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d4657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60035415610ddf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4757600080fd5b505afa158015610e5b573d6000803e3d6000fd5b505050506040513d6020811015610e7157600080fd5b5051905080610ecb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806116c46024913960400191505060405180910390fd5b6002819055610ed8611056565b6003819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f4657600080fd5b505af1158015610f5a573d6000803e3d6000fd5b505050506040513d6020811015610f7057600080fd5b5051600455610f7e82610f95565b5050565b8051610f7e9060009060208401906115fc565b670de0b6b3a7640000811115610ff6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806116906034913960400191505060405180910390fd5b60078190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b61104f600260015414156101906111d0565b6002600155565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b600061108b6106cb565b90506110956107a8565b15611189576110db73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682846111de565b8073ffffffffffffffffffffffffffffffffffffffff1663338b5dea7f0000000000000000000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561116c57600080fd5b505af1158015611180573d6000803e3d6000fd5b50505050610f7e565b610f7e73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682846113b4565b60018055565b81610f7e57610f7e81611441565b801580159061128d5750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561125e57600080fd5b505afa158015611272573d6000803e3d6000fd5b505050506040513d602081101561128857600080fd5b505115155b15611322576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261132290849061146b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526113af90849061146b565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526113af90849061146b565b6105fa817f42414c0000000000000000000000000000000000000000000000000000000000611581565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106114d457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611497565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611536576040519150601f19603f3d011682016040523d82523d6000602084013e61153b565b606091505b50915091506000821415611553573d6000803e3d6000fd5b6104b9815160001480611579575081806020019051602081101561157657600080fd5b50515b6101a26111d0565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061163d57805160ff191683800117855561166a565b8280016001018555821561166a579182015b8281111561166a57825182559160200191906001019061164f565b5061167692915061167a565b5090565b5b80821115611676576000815560010161167b56fe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a2646970667358221220973f44def5f2f19d45222b55b7017e2ea698584e624d2f66a1d56b2916684fb164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x3F8 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x40D JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x415 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x38F JUMPI DUP1 PUSH4 0x95D666C8 EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x3CE JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x305 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x6B70AA2 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x21F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD ISZERO ISZERO SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x42A SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x54D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x6CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31A PUSH2 0x6EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x354 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x33C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x381 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x7A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH2 0x7A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH2 0x7C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x7D2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x7DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x8AF JUMP JUMPDEST PUSH2 0x2F1 PUSH2 0x8B4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0xCA2 JUMP JUMPDEST PUSH2 0x433 DUP4 PUSH2 0xD70 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 DUP5 ISZERO ISZERO MUL OR SWAP1 SSTORE PUSH2 0x4B9 DUP2 PUSH2 0xF82 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x545 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x5 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5FA DUP2 PUSH2 0xF95 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C5 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH2 0x1031 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x798 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x76D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x798 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x77B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x882 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8BE PUSH2 0x103D JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x962 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 PUSH2 0x96F PUSH2 0x1056 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xC94 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA1A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0xBA7 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0xA6C JUMPI PUSH2 0xBA7 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0xA7E DUP4 PUSH2 0x5FD JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xA94 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0xB4D JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0xAF8 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x2 DUP12 SWAP1 SSTORE PUSH1 0x4 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xB62 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0xA54 JUMP JUMPDEST POP PUSH1 0x3 DUP5 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBC7 JUMPI POP PUSH1 0x6 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xC90 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC90 SWAP1 POP DUP3 PUSH2 0x1081 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x6E5 PUSH2 0x11CA JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xD46 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD ISZERO PUSH2 0xDDF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xECB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16C4 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH2 0xED8 PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SSTORE PUSH2 0xF7E DUP3 PUSH2 0xF95 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0xF7E SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x15FC JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xFF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1690 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x104F PUSH1 0x2 PUSH1 0x1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x11D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x108B PUSH2 0x6CB JUMP JUMPDEST SWAP1 POP PUSH2 0x1095 PUSH2 0x7A8 JUMP JUMPDEST ISZERO PUSH2 0x1189 JUMPI PUSH2 0x10DB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 DUP5 PUSH2 0x11DE JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x338B5DEA PUSH32 0x0 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x116C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1180 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xF7E JUMP JUMPDEST PUSH2 0xF7E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 DUP5 PUSH2 0x13B4 JUMP JUMPDEST PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0xF7E JUMPI PUSH2 0xF7E DUP2 PUSH2 0x1441 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x128D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x125E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1272 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1322 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1322 SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13AF SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13AF SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH2 0x5FA DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1581 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x14D4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1497 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1536 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x153B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1553 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x4B9 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1579 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x11D0 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x163D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x166A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x166A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x166A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x164F JUMP JUMPDEST POP PUSH2 0x1676 SWAP3 SWAP2 POP PUSH2 0x167A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1676 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x167B JUMP INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x58221220973F44DEF5F2F19D45222B55B7017E2E 0xA6 SWAP9 PC 0x4E PUSH3 0x4D2F66 LOG1 0xD5 PUSH12 0x2916684FB164736F6C634300 SMOD ADD STOP CALLER ","sourceMap":"986:1485:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1456:408;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1456:408:100;;-1:-1:-1;1456:408:100;;-1:-1:-1;;;;;1456:408:100:i;:::-;;6895:191:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6895:191:89;;;;:::i;:::-;;;;;;;;;;;;;;;;7513:214;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7513:214:89;;:::i;8159:199::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:199:89;;:::i;1870:97:100:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6789:100:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6789:100:89;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1027:98:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8038:115:89;;;;;;;;;;;;;:::i;1973:112:100:-;;;;;;;;;;;;;:::i;7092:92:89:-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;6394:104::-;;;;;;;;;;;;;:::i;3697:2655::-;;;:::i;7350:157::-;;;;;;;;;;;;;:::i;1456:408:100:-;1694:40;1716:17;1694:21;:40::i;:::-;1745:10;:22;;;;;;;;1777:50;;;;;;;;;;1837:20;1849:7;1837:11;:20::i;:::-;1456:408;;;;:::o;6895:191:89:-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8271:59:89;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;1870:97:100:-;1950:10;;;;1870:97;;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;1027:98:52:-;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:13;;1103:15;;1110:8;;1103:15;;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1027:98;:::o;8038:115:89:-;8128:18;;8038:115;:::o;1973:112:100:-;2054:24;;;;;;;;1973:112::o;7092:92:89:-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6394:104::-;6464:7;6394:104;:::o;3697:2655::-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;;4042:4:::1;4000:48;::::0;::::1;::::0;;;:33:::1;:16;:33;::::0;::::1;::::0;:48;;;;;-1:-1:-1;;4000:48:89;;;;;;;-1:-1:-1;4000:33:89;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;4188:15:::1;::::0;4149:1:::1;4135:15:::0;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5978:38;::::0;;;;;;;5989:10;;5978:38:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;;6246:4:::1;6225:27;::::0;::::1;::::0;;;:12:::1;:7;:12;::::0;::::1;::::0;:27;;;;;::::1;::::0;;;;;;;;-1:-1:-1;6225:12:89;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6270:29:89::1;::::0;-1:-1:-1;6286:12:89;6270:15:::1;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7483:9;:17;;;;;;7350:157::o;3146:545::-;3231:7;;:12;3223:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3428:18:89;;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3601:33:89;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;1224:94:52:-;1290:21;;;;:8;;:21;;;;;:::i;7733:299:89:-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7929:18;:38;;;7982:43;;;;;;;;;;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;2091:378:100:-;2164:17;2184:14;:12;:14::i;:::-;2164:34;;2213:27;:25;:27::i;:::-;2209:254;;;2256:44;:21;:9;:21;2278:9;2289:10;2256:21;:44::i;:::-;2330:9;2314:39;;;2354:9;2365:10;2314:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2209:254;;;2407:45;:22;:9;:22;2430:9;2441:10;2407:22;:45::i;2963:208:63:-;2070:1;3142:22;;2963:208::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;;1256:4;1232:43;;;;:15;:43;;;;;;;;;:15;;;;;;:43;;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1232:43:64;:48;;1218:62;1214:183;;;1332:53;;;;;;;;;;1383:1;1332:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:22;1332:53;;;1296:90;;1324:5;;1296:19;:90::i;:::-;1443:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1466:22;1443:57;;;1407:94;;1435:5;;1407:19;:94::i;:::-;1001:507;;;:::o;1514:214::-;1662:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;1626:19;:95::i;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:64;3143:56;11359:3:31;3134:8:64;:97::i;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256,bool,string)":"06b70aa2","integrate_fraction(address)":"09400707","isRecipientFeeDistributor()":"95d666c8","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"feeDistributorRecipient\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isRecipientFeeDistributor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}},\"version()\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ethereum/SingleRecipientGauge.sol\":\"SingleRecipientGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\":{\"keccak256\":\"0x250e4e6dcde3cf83d4d2822e9593c3138f6518ca95d88a0156a292557605640e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a2596b2242650aade0987677bfee7f4ee1359d588244b03cd1b65542f4f06252\",\"dweb:/ipfs/Qmbrb2Lp6suCPngH9sBzmaDBxET6YD6pBH1T8crGw29Cqi\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0x95fe58d2b75267e6068077264da8f0ce358f0f9e18167ea902bb1d29e9636ad5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8eb074a823f7cd09f9e73f52af4c6d2602b71ec127ca08acb67336f79dfdc79b\",\"dweb:/ipfs/QmbyDXinvkw5P2KBa7menkS6jp8cdWGg1qhAu5CEYi3vdE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/ethereum/SingleRecipientGauge.sol\":{\"keccak256\":\"0x038c254a2fc2c3c1a5114c5e77a7e55e871e93c110d336c140069305a263ff8a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a4201ba41a39d075c7229a314135697976491ce473b4cb94b752689a5d80906\",\"dweb:/ipfs/QmcUfTc42dk64fkhDyt9VE6etGrAawJqdVdgKutX6HuCAS\"]}},\"version\":1}"}},"contracts/gauges/ethereum/SingleRecipientGaugeFactory.sol":{"SingleRecipientGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"string","name":"factoryVersion","type":"string"},{"internalType":"string","name":"productVersion","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"},{"internalType":"bool","name":"feeDistributorRecipient","type":"bool"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProductVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051620025053803806200250583398101604081905261003191610204565b8260405161003e906100c3565b6100489190610282565b604051809103906000f080158015610064573d6000803e3d6000fd5b508261006f816100ac565b50600180546001600160a01b0319166001600160a01b039290921691909117905580516100a39060039060208401906100d1565b50505050610296565b80516100bf9060009060208401906100d1565b5050565b611c3280620008d383390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061011257805160ff191683800117855561013f565b8280016001018555821561013f579182015b8281111561013f578251825591602001919060010190610124565b5061014b92915061014f565b5090565b5b8082111561014b5760008155600101610150565b600082601f830112610174578081fd5b81516001600160401b038082111561018a578283fd5b6040516020601f8401601f19168201810183811183821017156101ab578586fd5b806040525081945083825286818588010111156101c757600080fd5b600092505b838310156101e957858301810151828401820152918201916101cc565b838311156101fa5760008185840101525b5050505092915050565b600080600060608486031215610218578283fd5b83516001600160a01b038116811461022e578384fd5b60208501519093506001600160401b038082111561024a578384fd5b61025687838801610164565b9350604086015191508082111561026b578283fd5b5061027886828701610164565b9150509250925092565b6001600160a01b0391909116815260200190565b61062d80620002a66000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806354fd4d501161005057806354fd4d501461009f57806358e4e2d7146100a7578063ce3cc8bd146100ba57610067565b806318d6186f1461006c57806339312dee1461008a575b600080fd5b6100746100da565b60405161008191906105ad565b60405180910390f35b61009261018e565b604051610081919061053a565b6100746101aa565b6100926100b536600461048d565b610229565b6100cd6100c836600461046b565b6102b7565b60405161008191906105a2565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b820191906000526020600020905b81548152906001019060200180831161016757829003601f168201915b5050505050905090565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b6000806102346102e6565b90508073ffffffffffffffffffffffffffffffffffffffff166306b70aa286868661025d6100da565b6040518563ffffffff1660e01b815260040161027c949392919061055b565b600060405180830381600087803b15801561029657600080fd5b505af11580156102aa573d6000803e3d6000fd5b5092979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff165b919050565b600154600090819061030d9073ffffffffffffffffffffffffffffffffffffffff1661038b565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166102e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610438906105c0565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461046557600080fd5b92915050565b60006020828403121561047c578081fd5b6104868383610441565b9392505050565b6000806000606084860312156104a1578182fd5b6104ab8585610441565b925060208401359150604084013580151581146104c6578182fd5b809150509250925092565b60008151808452815b818110156104f6576020818501810151868301820152016104da565b818111156105075782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8616825284602083015283151560408301526080606083015261059860808301846104d1565b9695505050505050565b901515815260200190565b60006020825261048660208301846104d1565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea26469706673582212200e3ad031883932cd4f567f96a6c34e186b8d6a8aaca794cf036f213311cec5da64736f6c634300070100336101806040523480156200001257600080fd5b5060405162001c3238038062001c32833981810160405260208110156200003857600080fd5b505160408051602081019091526000815281906200005681620003cb565b50600180819055506000816001600160a01b031663e6dec36f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009a57600080fd5b505afa158015620000af573d6000803e3d6000fd5b505050506040513d6020811015620000c657600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010f57600080fd5b505afa15801562000124573d6000803e3d6000fd5b505050506040513d60208110156200013b57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200018457600080fd5b505afa15801562000199573d6000803e3d6000fd5b505050506040513d6020811015620001b057600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200022157600080fd5b505afa15801562000236573d6000803e3d6000fd5b505050506040513d60208110156200024d57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b158015620002a157600080fd5b505afa158015620002b6573d6000803e3d6000fd5b505050506040513d6020811015620002cd57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200031457600080fd5b505afa15801562000329573d6000803e3d6000fd5b505050506040513d60208110156200034057600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038757600080fd5b505afa1580156200039c573d6000803e3d6000fd5b505050506040513d6020811015620003b357600080fd5b50516101605250506000196003555062000480915050565b8051620003e0906000906020840190620003e4565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200042757805160ff191683800117855562000457565b8280016001018555821562000457579182015b82811115620004575782518255916020019190600101906200043a565b506200046592915062000469565b5090565b5b808211156200046557600081556001016200046a565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c61012051610140516101605161171d6200051560003980610ad0525080610aaf525080610a325280610b1c52508061056552806107f652806108d65280610cba52508061060452806109bf525080610c12525080610de35280610ee05250806110b452806110f952806111a3525061171d6000f3fe6080604052600436106100e85760003560e01c806383f5c39b1161008a578063ab8f094511610059578063ab8f0945146103e3578063b0245225146103f8578063c2c4c5c11461040d578063d34fb26714610415576100e8565b806383f5c39b1461038f57806395d666c8146103a45780639c868ac0146103b95780639f867671146103ce576100e8565b806314e956f5116100c657806314e956f5146102495780631b88094d146102735780634b820093146102b157806354fd4d5014610305576100e8565b806306b70aa2146100ed57806309400707146101cd57806310d3eb041461021f575b600080fd5b3480156100f957600080fd5b506101cb6004803603608081101561011057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359160408201351515919081019060808101606082013564010000000081111561015657600080fd5b82018360208201111561016857600080fd5b8035906020019184600183028401116401000000008311171561018a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061042a945050505050565b005b3480156101d957600080fd5b5061020d600480360360208110156101f057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104bf565b60408051918252519081900360200190f35b34801561022b57600080fd5b506101cb6004803603602081101561024257600080fd5b503561054d565b34801561025557600080fd5b5061020d6004803603602081101561026c57600080fd5b50356105fd565b34801561027f57600080fd5b506102886106cb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102bd57600080fd5b506102f1600480360360208110156102d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106e8565b604080519115158252519081900360200190f35b34801561031157600080fd5b5061031a6106ee565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561035457818101518382015260200161033c565b50505050905090810190601f1680156103815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039b57600080fd5b5061020d6107a2565b3480156103b057600080fd5b506102f16107a8565b3480156103c557600080fd5b506102f16107c9565b3480156103da57600080fd5b5061020d6107d2565b3480156103ef57600080fd5b506101cb6107de565b34801561040457600080fd5b5061020d6108af565b6102f16108b4565b34801561042157600080fd5b506101cb610ca2565b61043383610d70565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000841515021790556104b981610f82565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff8216301461054557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060055490565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6105fa81610f95565b50565b60006106c57f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561069157600080fd5b505afa1580156106a5573d6000803e3d6000fd5b505050506040513d60208110156106bb57600080fd5b5051600754611031565b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050905090565b60075490565b60085474010000000000000000000000000000000000000000900460ff1690565b60065460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461088257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b60006108be61103d565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600354600061096f611056565b905080821015610c9457604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b158015610a0657600080fd5b505af1158015610a1a573d6000803e3d6000fd5b505060025460045460019590950194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610ba75784811115610a6c57610ba7565b62093a808102600080610a7e836105fd565b9050828510158015610a9457508262093a800185105b15610b4d57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000890281610af857fe5b04975062093a80819003670de0b6b3a7640000838a02820260028b905560048990557f00000000000000000000000000000000000000000000000000000000000000009098019704939093019250610b629050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610a54565b50600384905560058054830190558115801590610bc7575060065460ff16155b15610c9057604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610c5a57600080fd5b505af1158015610c6e573d6000803e3d6000fd5b505050506040513d6020811015610c8457600080fd5b50610c90905082611081565b5050505b6001925050506106e56111ca565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d4657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60035415610ddf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4757600080fd5b505afa158015610e5b573d6000803e3d6000fd5b505050506040513d6020811015610e7157600080fd5b5051905080610ecb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806116c46024913960400191505060405180910390fd5b6002819055610ed8611056565b6003819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f4657600080fd5b505af1158015610f5a573d6000803e3d6000fd5b505050506040513d6020811015610f7057600080fd5b5051600455610f7e82610f95565b5050565b8051610f7e9060009060208401906115fc565b670de0b6b3a7640000811115610ff6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806116906034913960400191505060405180910390fd5b60078190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b61104f600260015414156101906111d0565b6002600155565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b600061108b6106cb565b90506110956107a8565b15611189576110db73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682846111de565b8073ffffffffffffffffffffffffffffffffffffffff1663338b5dea7f0000000000000000000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561116c57600080fd5b505af1158015611180573d6000803e3d6000fd5b50505050610f7e565b610f7e73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682846113b4565b60018055565b81610f7e57610f7e81611441565b801580159061128d5750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561125e57600080fd5b505afa158015611272573d6000803e3d6000fd5b505050506040513d602081101561128857600080fd5b505115155b15611322576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261132290849061146b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526113af90849061146b565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526113af90849061146b565b6105fa817f42414c0000000000000000000000000000000000000000000000000000000000611581565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106114d457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611497565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611536576040519150601f19603f3d011682016040523d82523d6000602084013e61153b565b606091505b50915091506000821415611553573d6000803e3d6000fd5b6104b9815160001480611579575081806020019051602081101561157657600080fd5b50515b6101a26111d0565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061163d57805160ff191683800117855561166a565b8280016001018555821561166a579182015b8281111561166a57825182559160200191906001019061164f565b5061167692915061167a565b5090565b5b80821115611676576000815560010161167b56fe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a2646970667358221220973f44def5f2f19d45222b55b7017e2ea698584e624d2f66a1d56b2916684fb164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2505 CODESIZE SUB DUP1 PUSH3 0x2505 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x31 SWAP2 PUSH2 0x204 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x3E SWAP1 PUSH2 0xC3 JUMP JUMPDEST PUSH2 0x48 SWAP2 SWAP1 PUSH2 0x282 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x64 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP DUP3 PUSH2 0x6F DUP2 PUSH2 0xAC JUMP JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 MLOAD PUSH2 0xA3 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xD1 JUMP JUMPDEST POP POP POP POP PUSH2 0x296 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xBF SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xD1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1C32 DUP1 PUSH3 0x8D3 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x112 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x13F JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x13F JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x13F JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x124 JUMP JUMPDEST POP PUSH2 0x14B SWAP3 SWAP2 POP PUSH2 0x14F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x150 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x174 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x18A JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND DUP3 ADD DUP2 ADD DUP4 DUP2 GT DUP4 DUP3 LT OR ISZERO PUSH2 0x1AB JUMPI DUP6 DUP7 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP2 SWAP5 POP DUP4 DUP3 MSTORE DUP7 DUP2 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH2 0x1E9 JUMPI DUP6 DUP4 ADD DUP2 ADD MLOAD DUP3 DUP5 ADD DUP3 ADD MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x1CC JUMP JUMPDEST DUP4 DUP4 GT ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP2 DUP6 DUP5 ADD ADD MSTORE JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x218 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x22E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x24A JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x256 DUP8 DUP4 DUP9 ADD PUSH2 0x164 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x26B JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x278 DUP7 DUP3 DUP8 ADD PUSH2 0x164 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x62D DUP1 PUSH3 0x2A6 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x58E4E2D7 EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xBA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x18D6186F EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x5AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x92 PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x53A JUMP JUMPDEST PUSH2 0x74 PUSH2 0x1AA JUMP JUMPDEST PUSH2 0x92 PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x48D JUMP JUMPDEST PUSH2 0x229 JUMP JUMPDEST PUSH2 0xCD PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0x46B JUMP JUMPDEST PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x167 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x234 PUSH2 0x2E6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6B70AA2 DUP7 DUP7 DUP7 PUSH2 0x25D PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27C SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x30D SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x38B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x438 SWAP1 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47C JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x486 DUP4 DUP4 PUSH2 0x441 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4AB DUP6 DUP6 PUSH2 0x441 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4C6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x4DA JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x507 JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP3 MSTORE DUP5 PUSH1 0x20 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x598 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4D1 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x486 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4D1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE GASPRICE 0xD0 BALANCE DUP9 CODECOPY ORIGIN 0xCD 0x4F JUMP PUSH32 0x96A6C34E186B8D6A8AACA794CF036F213311CEC5DA64736F6C63430007010033 PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1C32 CODESIZE SUB DUP1 PUSH3 0x1C32 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE DUP2 SWAP1 PUSH3 0x56 DUP2 PUSH3 0x3CB JUMP JUMPDEST POP PUSH1 0x1 DUP1 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE6DEC36F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xAF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x124 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x199 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x236 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x329 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x39C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x3 SSTORE POP PUSH3 0x480 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3E0 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x3E4 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x427 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x457 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x457 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x457 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x43A JUMP JUMPDEST POP PUSH3 0x465 SWAP3 SWAP2 POP PUSH3 0x469 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x465 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x46A JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x171D PUSH3 0x515 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xAD0 MSTORE POP DUP1 PUSH2 0xAAF MSTORE POP DUP1 PUSH2 0xA32 MSTORE DUP1 PUSH2 0xB1C MSTORE POP DUP1 PUSH2 0x565 MSTORE DUP1 PUSH2 0x7F6 MSTORE DUP1 PUSH2 0x8D6 MSTORE DUP1 PUSH2 0xCBA MSTORE POP DUP1 PUSH2 0x604 MSTORE DUP1 PUSH2 0x9BF MSTORE POP DUP1 PUSH2 0xC12 MSTORE POP DUP1 PUSH2 0xDE3 MSTORE DUP1 PUSH2 0xEE0 MSTORE POP DUP1 PUSH2 0x10B4 MSTORE DUP1 PUSH2 0x10F9 MSTORE DUP1 PUSH2 0x11A3 MSTORE POP PUSH2 0x171D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x3F8 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x40D JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x415 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x38F JUMPI DUP1 PUSH4 0x95D666C8 EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x3CE JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x305 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x6B70AA2 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x21F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD ISZERO ISZERO SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x42A SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x54D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x6CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31A PUSH2 0x6EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x354 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x33C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x381 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x7A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH2 0x7A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F1 PUSH2 0x7C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x7D2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x7DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x8AF JUMP JUMPDEST PUSH2 0x2F1 PUSH2 0x8B4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0xCA2 JUMP JUMPDEST PUSH2 0x433 DUP4 PUSH2 0xD70 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 DUP5 ISZERO ISZERO MUL OR SWAP1 SSTORE PUSH2 0x4B9 DUP2 PUSH2 0xF82 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x545 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x5 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5FA DUP2 PUSH2 0xF95 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C5 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH2 0x1031 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x798 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x76D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x798 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x77B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x882 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8BE PUSH2 0x103D JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x962 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 PUSH2 0x96F PUSH2 0x1056 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xC94 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA1A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0xBA7 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0xA6C JUMPI PUSH2 0xBA7 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0xA7E DUP4 PUSH2 0x5FD JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xA94 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0xB4D JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0xAF8 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x2 DUP12 SWAP1 SSTORE PUSH1 0x4 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xB62 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0xA54 JUMP JUMPDEST POP PUSH1 0x3 DUP5 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBC7 JUMPI POP PUSH1 0x6 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xC90 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC90 SWAP1 POP DUP3 PUSH2 0x1081 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x6E5 PUSH2 0x11CA JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xD46 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD ISZERO PUSH2 0xDDF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xECB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16C4 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH2 0xED8 PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SSTORE PUSH2 0xF7E DUP3 PUSH2 0xF95 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0xF7E SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x15FC JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xFF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1690 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x104F PUSH1 0x2 PUSH1 0x1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x11D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x108B PUSH2 0x6CB JUMP JUMPDEST SWAP1 POP PUSH2 0x1095 PUSH2 0x7A8 JUMP JUMPDEST ISZERO PUSH2 0x1189 JUMPI PUSH2 0x10DB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 DUP5 PUSH2 0x11DE JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x338B5DEA PUSH32 0x0 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x116C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1180 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xF7E JUMP JUMPDEST PUSH2 0xF7E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 DUP5 PUSH2 0x13B4 JUMP JUMPDEST PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST DUP2 PUSH2 0xF7E JUMPI PUSH2 0xF7E DUP2 PUSH2 0x1441 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x128D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x125E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1272 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1322 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1322 SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13AF SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x13AF SWAP1 DUP5 SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH2 0x5FA DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1581 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x14D4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1497 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1536 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x153B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1553 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x4B9 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1579 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x11D0 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x163D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x166A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x166A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x166A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x164F JUMP JUMPDEST POP PUSH2 0x1676 SWAP3 SWAP2 POP PUSH2 0x167A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1676 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x167B JUMP INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x58221220973F44DEF5F2F19D45222B55B7017E2E 0xA6 SWAP9 PC 0x4E PUSH3 0x4D2F66 LOG1 0xD5 PUSH12 0x2916684FB164736F6C634300 SMOD ADD STOP CALLER ","sourceMap":"819:1512:101:-:0;;;928:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1135:6;1110:32;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1069:14:101;994:20:52;1069:14:101;994:11:52;:20::i;:::-;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;1155:32:101;;::::2;::::0;:15:::2;::::0;:32:::2;::::0;::::2;::::0;::::2;:::i;:::-;;928:266:::0;;;819:1512;;1224:94:52;1290:21;;;;:8;;:21;;;;;:::i;:::-;;1224:94;:::o;819:1512:101:-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;819:1512:101;;;-1:-1:-1;819:1512:101;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;207:444:-1;;320:3;313:4;305:6;301:17;297:27;287:2;;-1:-1;;328:12;287:2;362:13;;-1:-1;;;;;2337:30;;;2334:2;;;-1:-1;;2370:12;2334:2;2003;1997:9;2511:4;2443:9;2424:17;;-1:-1;;2420:33;2029:17;;;;2089:34;;;2125:22;;;2086:62;2083:2;;;-1:-1;;2151:12;2083:2;2181:10;2003:2;2170:22;;381:74;;;475:6;468:5;461:21;579:3;2511:4;570:6;503;561:16;;558:25;555:2;;;596:1;;586:12;555:2;3286:1;3277:10;;3293:101;3307:6;3304:1;3301:13;3293:101;;;3374:11;;;;;3368:18;3355:11;;;;;3348:39;3322:10;;;;3293:101;;;3409:6;3406:1;3403:13;3400:2;;;3286:1;2511:4;3465:6;537:5;3456:16;;3449:27;3400:2;;;;;280:371;;;;:::o;659:793::-;;;;858:2;846:9;837:7;833:23;829:32;826:2;;;-1:-1;;864:12;826:2;113:13;;-1:-1;;;;;2821:54;;3586:65;;3576:2;;-1:-1;;3655:12;3576:2;1078;1063:18;;1057:25;916:104;;-1:-1;;;;;;1091:30;;;1088:2;;;-1:-1;;1124:12;1088:2;1154:74;1220:7;1211:6;1200:9;1196:22;1154:74;:::i;:::-;1144:84;;1286:2;1275:9;1271:18;1265:25;1251:39;;1102:18;1302:6;1299:30;1296:2;;;-1:-1;;1332:12;1296:2;;1362:74;1428:7;1419:6;1408:9;1404:22;1362:74;:::i;:::-;1352:84;;;820:632;;;;;:::o;1652:282::-;-1:-1;;;;;2821:54;;;;1560:80;;1809:2;1794:18;;1780:154::o;:::-;819:1512:101;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c806354fd4d501161005057806354fd4d501461009f57806358e4e2d7146100a7578063ce3cc8bd146100ba57610067565b806318d6186f1461006c57806339312dee1461008a575b600080fd5b6100746100da565b60405161008191906105ad565b60405180910390f35b61009261018e565b604051610081919061053a565b6100746101aa565b6100926100b536600461048d565b610229565b6100cd6100c836600461046b565b6102b7565b60405161008191906105a2565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b820191906000526020600020905b81548152906001019060200180831161016757829003601f168201915b5050505050905090565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101845780601f1061015957610100808354040283529160200191610184565b6000806102346102e6565b90508073ffffffffffffffffffffffffffffffffffffffff166306b70aa286868661025d6100da565b6040518563ffffffff1660e01b815260040161027c949392919061055b565b600060405180830381600087803b15801561029657600080fd5b505af11580156102aa573d6000803e3d6000fd5b5092979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff165b919050565b600154600090819061030d9073ffffffffffffffffffffffffffffffffffffffff1661038b565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166102e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610438906105c0565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461046557600080fd5b92915050565b60006020828403121561047c578081fd5b6104868383610441565b9392505050565b6000806000606084860312156104a1578182fd5b6104ab8585610441565b925060208401359150604084013580151581146104c6578182fd5b809150509250925092565b60008151808452815b818110156104f6576020818501810151868301820152016104da565b818111156105075782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8616825284602083015283151560408301526080606083015261059860808301846104d1565b9695505050505050565b901515815260200190565b60006020825261048660208301846104d1565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea26469706673582212200e3ad031883932cd4f567f96a6c34e186b8d6a8aaca794cf036f213311cec5da64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x58E4E2D7 EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xBA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x18D6186F EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x5AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x92 PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x53A JUMP JUMPDEST PUSH2 0x74 PUSH2 0x1AA JUMP JUMPDEST PUSH2 0x92 PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x48D JUMP JUMPDEST PUSH2 0x229 JUMP JUMPDEST PUSH2 0xCD PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0x46B JUMP JUMPDEST PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x167 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x184 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x159 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x184 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x234 PUSH2 0x2E6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6B70AA2 DUP7 DUP7 DUP7 PUSH2 0x25D PUSH2 0xDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27C SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x30D SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x38B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x438 SWAP1 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47C JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x486 DUP4 DUP4 PUSH2 0x441 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4AB DUP6 DUP6 PUSH2 0x441 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4C6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x4DA JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x507 JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP3 MSTORE DUP5 PUSH1 0x20 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x598 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4D1 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x486 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4D1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE GASPRICE 0xD0 BALANCE DUP9 CODECOPY ORIGIN 0xCD 0x4F JUMP PUSH32 0x96A6C34E186B8D6A8AACA794CF036F213311CEC5DA64736F6C63430007010033 ","sourceMap":"819:1512:101:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1200:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;:::-;;;;;;;:::i;1027:98:52:-;;;:::i;1934:395:101:-;;;;;;:::i;:::-;;:::i;1507:131:83:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1200:104:101:-;1282:15;1275:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1250:13;;1275:22;;1282:15;;1275:22;;1282:15;1275:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1200:104;:::o;1309:108:83:-;1390:20;;;;1309:108;:::o;1027:98:52:-;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:13;;1103:15;;1110:8;;1103:15;;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;1934:395:101;2074:7;2093:13;2109:9;:7;:9::i;:::-;2093:25;;2149:5;2128:38;;;2180:9;2203:17;2234:23;2271:19;:17;:19::i;:::-;2128:172;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2317:5:101;;1934:395;-1:-1:-1;;;;;;;1934:395:101:o;1507:131:83:-;1605:26;;;1582:4;1605:26;;;:19;:26;;;;;;;;1507:131;;;;:::o;1854:214::-;1939:20;;1891:7;;;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;:19;:26;;;;;;:33;;;;2000:4;1971:33;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;5:130:-1;72:20;;4575:42;4564:54;;5150:35;;5140:2;;5199:1;;5189:12;5140:2;57:78;;;;:::o;410:241::-;;514:2;502:9;493:7;489:23;485:32;482:2;;;-1:-1;;520:12;482:2;582:53;627:7;603:22;582:53;:::i;:::-;572:63;476:175;-1:-1;;;476:175::o;658:485::-;;;;793:2;781:9;772:7;768:23;764:32;761:2;;;-1:-1;;799:12;761:2;861:53;906:7;882:22;861:53;:::i;:::-;851:63;;951:2;994:9;990:22;340:20;959:63;;1059:2;1099:9;1095:22;206:20;5296:5;4476:13;4469:21;5274:5;5271:32;5261:2;;-1:-1;;5307:12;5261:2;1067:60;;;;755:388;;;;;:::o;1381:347::-;;1526:5;4099:12;4256:6;4251:3;4244:19;-1:-1;4782:101;4796:6;4793:1;4790:13;4782:101;;;4293:4;4863:11;;;;;4857:18;4844:11;;;;;4837:39;4811:10;4782:101;;;4898:6;4895:1;4892:13;4889:2;;;-1:-1;4293:4;4954:6;4288:3;4945:16;;4938:27;4889:2;-1:-1;5074:2;5054:14;5070:7;5050:28;1684:39;;;;4293:4;1684:39;;1473:255;-1:-1;;1473:255::o;2186:222::-;4575:42;4564:54;;;;1221:37;;2313:2;2298:18;;2284:124::o;2415:632::-;;4575:42;4568:5;4564:54;1228:3;1221:37;2167:5;2805:2;2794:9;2790:18;2137:37;1362:5;4476:13;4469:21;2882:2;2871:9;2867:18;1335:34;2640:3;2919:2;2908:9;2904:18;2897:48;2959:78;2640:3;2629:9;2625:19;3023:6;2959:78;:::i;:::-;2951:86;2611:436;-1:-1;;;;;;2611:436::o;3054:210::-;4476:13;;4469:21;1335:34;;3175:2;3160:18;;3146:118::o;3271:310::-;;3418:2;3439:17;3432:47;3493:78;3418:2;3407:9;3403:18;3557:6;3493:78;:::i;3588:416::-;3788:2;3802:47;;;1960:2;3773:18;;;4244:19;1996:24;4284:14;;;1976:45;2040:12;;;3759:245::o"},"methodIdentifiers":{"create(address,uint256,bool)":"58e4e2d7","getGaugeImplementation()":"39312dee","getProductVersion()":"18d6186f","isGaugeFromFactory(address)":"ce3cc8bd","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"factoryVersion\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"productVersion\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"feeDistributorRecipient\",\"type\":\"bool\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProductVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256,bool)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"feeDistributorRecipient\":\"True if the recipient implements the IFeeDistributor interface and should receive tokens via the `depositToken` function.\",\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}},\"version()\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256,bool)\":{\"notice\":\"Deploys a new gauge which sends all of its BAL allowance to a single recipient.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/ethereum/SingleRecipientGaugeFactory.sol\":\"SingleRecipientGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\":{\"keccak256\":\"0x250e4e6dcde3cf83d4d2822e9593c3138f6518ca95d88a0156a292557605640e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a2596b2242650aade0987677bfee7f4ee1359d588244b03cd1b65542f4f06252\",\"dweb:/ipfs/Qmbrb2Lp6suCPngH9sBzmaDBxET6YD6pBH1T8crGw29Cqi\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0x95fe58d2b75267e6068077264da8f0ce358f0f9e18167ea902bb1d29e9636ad5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8eb074a823f7cd09f9e73f52af4c6d2602b71ec127ca08acb67336f79dfdc79b\",\"dweb:/ipfs/QmbyDXinvkw5P2KBa7menkS6jp8cdWGg1qhAu5CEYi3vdE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/ethereum/SingleRecipientGauge.sol\":{\"keccak256\":\"0x038c254a2fc2c3c1a5114c5e77a7e55e871e93c110d336c140069305a263ff8a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a4201ba41a39d075c7229a314135697976491ce473b4cb94b752689a5d80906\",\"dweb:/ipfs/QmcUfTc42dk64fkhDyt9VE6etGrAawJqdVdgKutX6HuCAS\"]},\"contracts/gauges/ethereum/SingleRecipientGaugeFactory.sol\":{\"keccak256\":\"0x8395531df14d64bd32a02a9ec9ea82d24b48dc11eb032679780cb17895082e44\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b9fdf2c73aa6546625bcfb77ff6f68edf6b4a1a7f399a3a6deffadf1ef3c2796\",\"dweb:/ipfs/QmXNE7GtiZvMLstahBrALg7FqZ5jCgZLhNKQMs8dkqAf86\"]}},\"version\":1}"}},"contracts/gauges/gnosis/GnosisRootGauge.sol":{"GnosisRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IGnosisBridge","name":"gnosisBridge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGnosisBridge","outputs":[{"internalType":"contract IGnosisBridge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101a06040523480156200001257600080fd5b50604051620015a6380380620015a6833981810160405260408110156200003857600080fd5b508051602091820151600160009081556040805163e6dec36f60e01b815290519394929385936001600160a01b0385169263e6dec36f9260048083019392829003018186803b1580156200008b57600080fd5b505afa158015620000a0573d6000803e3d6000fd5b505050506040513d6020811015620000b757600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010057600080fd5b505afa15801562000115573d6000803e3d6000fd5b505050506040513d60208110156200012c57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017557600080fd5b505afa1580156200018a573d6000803e3d6000fd5b505050506040513d6020811015620001a157600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021257600080fd5b505afa15801562000227573d6000803e3d6000fd5b505050506040513d60208110156200023e57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d6020811015620002be57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030557600080fd5b505afa1580156200031a573d6000803e3d6000fd5b505050506040513d60208110156200033157600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200037857600080fd5b505afa1580156200038d573d6000803e3d6000fd5b505050506040513d6020811015620003a457600080fd5b505161016052505060001960025550506001600160601b031960609190911b16610180525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c611136620004706000398061061a5280610c775280610d9052508061085c52508061083b5250806107be52806108a85250806103a3528061055f52806106635280610a97525080610442528061074c52508061099e525080610e6f5280610f6c525080610c3b5280610d5752506111366000f3fe6080604052600436106100dd5760003560e01c80639f8676711161007f578063b024522511610059578063b024522514610285578063c2c4c5c11461029a578063cd6dc687146102a2578063d34fb267146102e8576100dd565b80639f86767114610246578063ab8f09451461025b578063ae35ebfb14610270576100dd565b80631b88094d116100bb5780631b88094d1461018a5780634b820093146101c857806383f5c39b1461021c5780639c868ac014610231576100dd565b806309400707146100e257806310d3eb041461013457806314e956f514610160575b600080fd5b3480156100ee57600080fd5b506101226004803603602081101561010557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102fd565b60408051918252519081900360200190f35b34801561014057600080fd5b5061015e6004803603602081101561015757600080fd5b503561038b565b005b34801561016c57600080fd5b506101226004803603602081101561018357600080fd5b503561043b565b34801561019657600080fd5b5061019f610509565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101d457600080fd5b50610208600480360360208110156101eb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610526565b604080519115158252519081900360200190f35b34801561022857600080fd5b5061012261052c565b34801561023d57600080fd5b50610208610532565b34801561025257600080fd5b5061012261053b565b34801561026757600080fd5b5061015e610547565b34801561027c57600080fd5b5061019f610618565b34801561029157600080fd5b5061012261063c565b610208610641565b3480156102ae57600080fd5b5061015e600480360360408110156102c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2e565b3480156102f457600080fd5b5061015e610a7f565b600073ffffffffffffffffffffffffffffffffffffffff8216301461038357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461042f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61043881610b4d565b50565b60006105037f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104cf57600080fd5b505afa1580156104e3573d6000803e3d6000fd5b505050506040513d60208110156104f957600080fd5b5051600654610be9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7f000000000000000000000000000000000000000000000000000000000000000090565b600090565b600061064b610bf5565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106fc610c0e565b905080821015610a2057604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561079357600080fd5b505af11580156107a7573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561093357848111156107f857610933565b62093a80810260008061080a8361043b565b905082851015801561082057508262093a800185105b156108d957828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088457fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ee9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107e0565b50600284905560048054830190558115801590610953575060055460ff16155b15610a1c57604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e657600080fd5b505af11580156109fa573d6000803e3d6000fd5b505050506040513d6020811015610a1057600080fd5b50610a1c905082610c39565b5050505b600192505050610523610df5565b610a3781610dfc565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806110a96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c076002600054141561019061100e565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610cea57600080fd5b505af1158015610cfe573d6000803e3d6000fd5b505050506040513d6020811015610d1457600080fd5b5050600754604080517fad58bdd100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015292831660248201526044810184905290517f00000000000000000000000000000000000000000000000000000000000000009092169163ad58bdd19160648082019260009290919082900301818387803b158015610dda57600080fd5b505af1158015610dee573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e6b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed357600080fd5b505afa158015610ee7573d6000803e3d6000fd5b505050506040513d6020811015610efd57600080fd5b5051905080610f57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110dd6024913960400191505060405180910390fd5b6001819055610f64610c0e565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fd257600080fd5b505af1158015610fe6573d6000803e3d6000fd5b505050506040513d6020811015610ffc57600080fd5b505160035561100a82610b4d565b5050565b8161100a577f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261100a918391610438917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122060a2d08b373e5e014ebd6ba6ff04d22a6ab7995ff241270822bfbd4d528cd79c64736f6c63430007010033","opcodes":"PUSH2 0x1A0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x15A6 CODESIZE SUB DUP1 PUSH3 0x15A6 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 DUP6 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x18A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x227 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x31A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x38D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH2 0x180 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1136 PUSH3 0x470 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x61A MSTORE DUP1 PUSH2 0xC77 MSTORE DUP1 PUSH2 0xD90 MSTORE POP DUP1 PUSH2 0x85C MSTORE POP DUP1 PUSH2 0x83B MSTORE POP DUP1 PUSH2 0x7BE MSTORE DUP1 PUSH2 0x8A8 MSTORE POP DUP1 PUSH2 0x3A3 MSTORE DUP1 PUSH2 0x55F MSTORE DUP1 PUSH2 0x663 MSTORE DUP1 PUSH2 0xA97 MSTORE POP DUP1 PUSH2 0x442 MSTORE DUP1 PUSH2 0x74C MSTORE POP DUP1 PUSH2 0x99E MSTORE POP DUP1 PUSH2 0xE6F MSTORE DUP1 PUSH2 0xF6C MSTORE POP DUP1 PUSH2 0xC3B MSTORE DUP1 PUSH2 0xD57 MSTORE POP PUSH2 0x1136 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2E8 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xAE35EBFB EQ PUSH2 0x270 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x231 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x160 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x38B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x43B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19F PUSH2 0x509 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x52C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x53B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH2 0x547 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19F PUSH2 0x618 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x208 PUSH2 0x641 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH2 0xA7F JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x383 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x42F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x438 DUP2 PUSH2 0xB4D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x503 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xBE9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64B PUSH2 0xBF5 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6FC PUSH2 0xC0E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x933 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI PUSH2 0x933 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x80A DUP4 PUSH2 0x43B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x820 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D9 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x884 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EE SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x953 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA1C SWAP1 POP DUP3 PUSH2 0xC39 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x523 PUSH2 0xDF5 JUMP JUMPDEST PUSH2 0xA37 DUP2 PUSH2 0xDFC JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10A9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC07 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x100E JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH32 0x0 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xAD58BDD100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xAD58BDD1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDEE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE6B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF57 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10DD PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF64 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x100A DUP3 PUSH2 0xB4D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x100A JUMPI PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x100A SWAP2 DUP4 SWAP2 PUSH2 0x438 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122060A2D08B373E5E014EBD6BA6FF04D22A PUSH11 0xB7995FF241270822BFBD4D MSTORE DUP13 0xD7 SWAP13 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"889:1114:102:-:0;;;1140:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1140:139:102;;;;;;;2070:1:63;2175:7;:22;;;1140:139:102;2339:30:89;;-1:-1:-1;2339:30:89;;;;1140:139:102;;;;;;-1:-1:-1;2339:28:89;;;-1:-1:-1;;2339:30:89;;;;;1140:139:102;2339:30:89;;;;;:28;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2339:30:89;2398:29;;;-1:-1:-1;2398:29:89;;;;2339:30;;-1:-1:-1;2380:15:89;;-1:-1:-1;2398:27:89;;;-1:-1:-1;;2398:29:89;;;;;2339:30;;2398:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2398:29:89;2472:27;;;-1:-1:-1;2472:27:89;;;;2398:29;;-1:-1:-1;2437:32:89;;-1:-1:-1;2472:25:89;;;;;:27;;;;;2398:29;;2472:27;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2472:27:89;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2472:27;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;2472:27;;2665:23;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2665:23:89;2644:44;;-1:-1:-1;2644:44:89;;;2722:32;;;-1:-1:-1;2722:32:89;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;2665:23;;2722:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2722:32:89;2699:55;;2794:39;;;-1:-1:-1;2794:39:89;;;;-1:-1:-1;2794:37:89;;;-1:-1:-1;;2794:39:89;;;;;2722:32;;2794:39;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:39:89;2764:69;;2863:29;;;-1:-1:-1;2863:29:89;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;2794:39;;2863:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2863:29:89;2843:49;;-1:-1:-1;;;;3053:7:89;:27;-1:-1:-1;;;;;;;;1244:28:102::1;::::0;;;;;::::1;::::0;-1:-1:-1;889:1114:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":3131},{"length":32,"start":3415}],"14642":[{"length":32,"start":3695},{"length":32,"start":3948}],"14644":[{"length":32,"start":2462}],"14646":[{"length":32,"start":1090},{"length":32,"start":1868}],"14648":[{"length":32,"start":931},{"length":32,"start":1375},{"length":32,"start":1635},{"length":32,"start":2711}],"14656":[{"length":32,"start":1982},{"length":32,"start":2216}],"14658":[{"length":32,"start":2107}],"14660":[{"length":32,"start":2140}],"17544":[{"length":32,"start":1562},{"length":32,"start":3191},{"length":32,"start":3472}]},"linkReferences":{},"object":"6080604052600436106100dd5760003560e01c80639f8676711161007f578063b024522511610059578063b024522514610285578063c2c4c5c11461029a578063cd6dc687146102a2578063d34fb267146102e8576100dd565b80639f86767114610246578063ab8f09451461025b578063ae35ebfb14610270576100dd565b80631b88094d116100bb5780631b88094d1461018a5780634b820093146101c857806383f5c39b1461021c5780639c868ac014610231576100dd565b806309400707146100e257806310d3eb041461013457806314e956f514610160575b600080fd5b3480156100ee57600080fd5b506101226004803603602081101561010557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102fd565b60408051918252519081900360200190f35b34801561014057600080fd5b5061015e6004803603602081101561015757600080fd5b503561038b565b005b34801561016c57600080fd5b506101226004803603602081101561018357600080fd5b503561043b565b34801561019657600080fd5b5061019f610509565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101d457600080fd5b50610208600480360360208110156101eb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610526565b604080519115158252519081900360200190f35b34801561022857600080fd5b5061012261052c565b34801561023d57600080fd5b50610208610532565b34801561025257600080fd5b5061012261053b565b34801561026757600080fd5b5061015e610547565b34801561027c57600080fd5b5061019f610618565b34801561029157600080fd5b5061012261063c565b610208610641565b3480156102ae57600080fd5b5061015e600480360360408110156102c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2e565b3480156102f457600080fd5b5061015e610a7f565b600073ffffffffffffffffffffffffffffffffffffffff8216301461038357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461042f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61043881610b4d565b50565b60006105037f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104cf57600080fd5b505afa1580156104e3573d6000803e3d6000fd5b505050506040513d60208110156104f957600080fd5b5051600654610be9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7f000000000000000000000000000000000000000000000000000000000000000090565b600090565b600061064b610bf5565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106fc610c0e565b905080821015610a2057604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561079357600080fd5b505af11580156107a7573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561093357848111156107f857610933565b62093a80810260008061080a8361043b565b905082851015801561082057508262093a800185105b156108d957828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088457fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ee9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107e0565b50600284905560048054830190558115801590610953575060055460ff16155b15610a1c57604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e657600080fd5b505af11580156109fa573d6000803e3d6000fd5b505050506040513d6020811015610a1057600080fd5b50610a1c905082610c39565b5050505b600192505050610523610df5565b610a3781610dfc565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806110a96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c076002600054141561019061100e565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610cea57600080fd5b505af1158015610cfe573d6000803e3d6000fd5b505050506040513d6020811015610d1457600080fd5b5050600754604080517fad58bdd100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015292831660248201526044810184905290517f00000000000000000000000000000000000000000000000000000000000000009092169163ad58bdd19160648082019260009290919082900301818387803b158015610dda57600080fd5b505af1158015610dee573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e6b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed357600080fd5b505afa158015610ee7573d6000803e3d6000fd5b505050506040513d6020811015610efd57600080fd5b5051905080610f57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110dd6024913960400191505060405180910390fd5b6001819055610f64610c0e565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fd257600080fd5b505af1158015610fe6573d6000803e3d6000fd5b505050506040513d6020811015610ffc57600080fd5b505160035561100a82610b4d565b5050565b8161100a577f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261100a918391610438917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122060a2d08b373e5e014ebd6ba6ff04d22a6ab7995ff241270822bfbd4d528cd79c64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2E8 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xAE35EBFB EQ PUSH2 0x270 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x231 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x160 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x38B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x43B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19F PUSH2 0x509 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x52C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x53B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH2 0x547 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19F PUSH2 0x618 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x208 PUSH2 0x641 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH2 0xA7F JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x383 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x42F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x438 DUP2 PUSH2 0xB4D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x503 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xBE9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64B PUSH2 0xBF5 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6FC PUSH2 0xC0E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x933 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI PUSH2 0x933 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x80A DUP4 PUSH2 0x43B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x820 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D9 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x884 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EE SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x953 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA1C SWAP1 POP DUP3 PUSH2 0xC39 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x523 PUSH2 0xDF5 JUMP JUMPDEST PUSH2 0xA37 DUP2 PUSH2 0xDFC JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10A9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC07 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x100E JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH32 0x0 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xAD58BDD100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xAD58BDD1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDEE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE6B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF57 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10DD PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF64 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x100A DUP3 PUSH2 0xB4D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x100A JUMPI PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x100A SWAP2 DUP4 SWAP2 PUSH2 0x438 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122060A2D08B373E5E014EBD6BA6FF04D22A PUSH11 0xB7995FF241270822BFBD4D MSTORE DUP13 0xD7 SWAP13 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"889:1114:102:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6895:191:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6895:191:89;;;;:::i;:::-;;;;;;;;;;;;;;;;7513:214;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7513:214:89;;:::i;:::-;;8159:199;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:199:89;;:::i;1518:99:102:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6789:100:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6789:100:89;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8038:115;;;;;;;;;;;;;:::i;7092:92::-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;1623:102:102:-;;;;;;;;;;;;;:::i;6394:104:89:-;;;;;;;;;;;;;:::i;3697:2655::-;;;:::i;1285:227:102:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1285:227:102;;;;;;;;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;6895:191::-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8271:59:89;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;1518:99:102:-;1600:10;;;;1518:99;;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;8038:115::-;8128:18;;8038:115;:::o;7092:92::-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;1623:102:102:-;1705:13;1623:102;:::o;6394:104:89:-;6464:7;6394:104;:::o;3697:2655::-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;;4042:4:::1;4000:48;::::0;::::1;::::0;;;:33:::1;:16;:33;::::0;::::1;::::0;:48;;;;;-1:-1:-1;;4000:48:89;;;;;;;-1:-1:-1;4000:33:89;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5978:38;::::0;;;;;;;5989:10;;5978:38:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;;6246:4:::1;6225:27;::::0;::::1;::::0;;;:12:::1;:7;:12;::::0;::::1;::::0;:27;;;;;::::1;::::0;;;;;;;;-1:-1:-1;6225:12:89;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6270:29:89::1;::::0;-1:-1:-1;6286:12:89;6270:15:::1;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;1285:227:102:-;1432:40;1454:17;1432:21;:40::i;:::-;-1:-1:-1;1483:10:102;:22;;;;;;;;;;;;;;;1285:227::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7929:18;:38;;;7982:43;;;;;;;;;;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;1731:270:102:-;1804:9;:17;;;1830:13;1846:10;1804:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1971:10:102;;1934:60;;;;;;:25;1960:9;1934:60;;;;;;1971:10;;;1934:60;;;;;;;;;;;;:13;:25;;;;;;:60;;;;;-1:-1:-1;;1934:60:102;;;;;;;;-1:-1:-1;1934:25:102;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1731:270;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3428:18:89;;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3601:33:89;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;926:101:31:-;995:9;990:34;;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1006:18;;2926;;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getGnosisBridge()":"ae35ebfb","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IGnosisBridge\",\"name\":\"gnosisBridge\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGnosisBridge\",\"outputs\":[{\"internalType\":\"contract IGnosisBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/gnosis/GnosisRootGauge.sol\":\"GnosisRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/gnosis/GnosisRootGauge.sol\":{\"keccak256\":\"0xa6ac34ae2a6984fd9989615125a4112f4ab41d7881846cb16a584b45d88e33da\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f5690b39910ad0615b2398f1eee00cfe03e3c8a4dd29f8565bcbd70281f7f86\",\"dweb:/ipfs/QmeTmFYdosVdTMgUAXVFYKvw64HDGv9KctJBkFJM7Ap76d\"]}},\"version\":1}"},"IGnosisBridge":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"relayTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"relayTokens(address,address,uint256)":"ad58bdd1"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"relayTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/gnosis/GnosisRootGauge.sol\":\"IGnosisBridge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/gnosis/GnosisRootGauge.sol\":{\"keccak256\":\"0xa6ac34ae2a6984fd9989615125a4112f4ab41d7881846cb16a584b45d88e33da\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f5690b39910ad0615b2398f1eee00cfe03e3c8a4dd29f8565bcbd70281f7f86\",\"dweb:/ipfs/QmeTmFYdosVdTMgUAXVFYKvw64HDGv9KctJBkFJM7Ap76d\"]}},\"version\":1}"}},"contracts/gauges/gnosis/GnosisRootGaugeFactory.sol":{"GnosisRootGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IGnosisBridge","name":"gnosisBridge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051611a08380380611a088339818101604052604081101561003357600080fd5b5080516020909101516040518290829061004c906100a8565b6001600160a01b03928316815291166020820152604080519182900301906000f08015801561007f573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055506100b59050565b6115a68061046283390190565b61039e806100c46000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee146100a8578063ce3cc8bd146100b0575b600080fd5b61007f6004803603604081101561005c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356100f7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61007f610195565b6100e3600480360360208110156100c657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101b1565b604080519115158252519081900360200190f35b6000806101026101e0565b90508073ffffffffffffffffffffffffffffffffffffffff1663cd6dc68785856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561017557600080fd5b505af1158015610189573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906102059073ffffffffffffffffffffffffffffffffffffffff16610286565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166101db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015290519081900360640190fdfea2646970667358221220606d3c4682ba28aedd958cabcf1cfec0c7df8a438e6cde8599ed94cca8ba655264736f6c634300070100336101a06040523480156200001257600080fd5b50604051620015a6380380620015a6833981810160405260408110156200003857600080fd5b508051602091820151600160009081556040805163e6dec36f60e01b815290519394929385936001600160a01b0385169263e6dec36f9260048083019392829003018186803b1580156200008b57600080fd5b505afa158015620000a0573d6000803e3d6000fd5b505050506040513d6020811015620000b757600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010057600080fd5b505afa15801562000115573d6000803e3d6000fd5b505050506040513d60208110156200012c57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017557600080fd5b505afa1580156200018a573d6000803e3d6000fd5b505050506040513d6020811015620001a157600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021257600080fd5b505afa15801562000227573d6000803e3d6000fd5b505050506040513d60208110156200023e57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d6020811015620002be57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030557600080fd5b505afa1580156200031a573d6000803e3d6000fd5b505050506040513d60208110156200033157600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200037857600080fd5b505afa1580156200038d573d6000803e3d6000fd5b505050506040513d6020811015620003a457600080fd5b505161016052505060001960025550506001600160601b031960609190911b16610180525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c611136620004706000398061061a5280610c775280610d9052508061085c52508061083b5250806107be52806108a85250806103a3528061055f52806106635280610a97525080610442528061074c52508061099e525080610e6f5280610f6c525080610c3b5280610d5752506111366000f3fe6080604052600436106100dd5760003560e01c80639f8676711161007f578063b024522511610059578063b024522514610285578063c2c4c5c11461029a578063cd6dc687146102a2578063d34fb267146102e8576100dd565b80639f86767114610246578063ab8f09451461025b578063ae35ebfb14610270576100dd565b80631b88094d116100bb5780631b88094d1461018a5780634b820093146101c857806383f5c39b1461021c5780639c868ac014610231576100dd565b806309400707146100e257806310d3eb041461013457806314e956f514610160575b600080fd5b3480156100ee57600080fd5b506101226004803603602081101561010557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102fd565b60408051918252519081900360200190f35b34801561014057600080fd5b5061015e6004803603602081101561015757600080fd5b503561038b565b005b34801561016c57600080fd5b506101226004803603602081101561018357600080fd5b503561043b565b34801561019657600080fd5b5061019f610509565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101d457600080fd5b50610208600480360360208110156101eb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610526565b604080519115158252519081900360200190f35b34801561022857600080fd5b5061012261052c565b34801561023d57600080fd5b50610208610532565b34801561025257600080fd5b5061012261053b565b34801561026757600080fd5b5061015e610547565b34801561027c57600080fd5b5061019f610618565b34801561029157600080fd5b5061012261063c565b610208610641565b3480156102ae57600080fd5b5061015e600480360360408110156102c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2e565b3480156102f457600080fd5b5061015e610a7f565b600073ffffffffffffffffffffffffffffffffffffffff8216301461038357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461042f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61043881610b4d565b50565b60006105037f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104cf57600080fd5b505afa1580156104e3573d6000803e3d6000fd5b505050506040513d60208110156104f957600080fd5b5051600654610be9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7f000000000000000000000000000000000000000000000000000000000000000090565b600090565b600061064b610bf5565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106fc610c0e565b905080821015610a2057604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561079357600080fd5b505af11580156107a7573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561093357848111156107f857610933565b62093a80810260008061080a8361043b565b905082851015801561082057508262093a800185105b156108d957828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088457fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ee9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107e0565b50600284905560048054830190558115801590610953575060055460ff16155b15610a1c57604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e657600080fd5b505af11580156109fa573d6000803e3d6000fd5b505050506040513d6020811015610a1057600080fd5b50610a1c905082610c39565b5050505b600192505050610523610df5565b610a3781610dfc565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806110a96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c076002600054141561019061100e565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610cea57600080fd5b505af1158015610cfe573d6000803e3d6000fd5b505050506040513d6020811015610d1457600080fd5b5050600754604080517fad58bdd100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015292831660248201526044810184905290517f00000000000000000000000000000000000000000000000000000000000000009092169163ad58bdd19160648082019260009290919082900301818387803b158015610dda57600080fd5b505af1158015610dee573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e6b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed357600080fd5b505afa158015610ee7573d6000803e3d6000fd5b505050506040513d6020811015610efd57600080fd5b5051905080610f57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110dd6024913960400191505060405180910390fd5b6001819055610f64610c0e565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fd257600080fd5b505af1158015610fe6573d6000803e3d6000fd5b505050506040513d6020811015610ffc57600080fd5b505160035561100a82610b4d565b5050565b8161100a577f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261100a918391610438917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122060a2d08b373e5e014ebd6ba6ff04d22a6ab7995ff241270822bfbd4d528cd79c64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1A08 CODESIZE SUB DUP1 PUSH2 0x1A08 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x40 MLOAD DUP3 SWAP1 DUP3 SWAP1 PUSH2 0x4C SWAP1 PUSH2 0xA8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x7F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0xB5 SWAP1 POP JUMP JUMPDEST PUSH2 0x15A6 DUP1 PUSH2 0x462 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x39E DUP1 PUSH2 0xC4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xB0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x195 JUMP JUMPDEST PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x102 PUSH2 0x1E0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCD6DC687 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x189 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x205 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x286 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0x6D EXTCODECOPY CHAINID DUP3 0xBA 0x28 0xAE 0xDD SWAP6 DUP13 0xAB 0xCF SHR INVALID 0xC0 0xC7 0xDF DUP11 NUMBER DUP15 PUSH13 0xDE8599ED94CCA8BA655264736F PUSH13 0x634300070100336101A0604052 CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x15A6 CODESIZE SUB DUP1 PUSH3 0x15A6 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 DUP6 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x18A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x227 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x31A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x38D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH2 0x180 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1136 PUSH3 0x470 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x61A MSTORE DUP1 PUSH2 0xC77 MSTORE DUP1 PUSH2 0xD90 MSTORE POP DUP1 PUSH2 0x85C MSTORE POP DUP1 PUSH2 0x83B MSTORE POP DUP1 PUSH2 0x7BE MSTORE DUP1 PUSH2 0x8A8 MSTORE POP DUP1 PUSH2 0x3A3 MSTORE DUP1 PUSH2 0x55F MSTORE DUP1 PUSH2 0x663 MSTORE DUP1 PUSH2 0xA97 MSTORE POP DUP1 PUSH2 0x442 MSTORE DUP1 PUSH2 0x74C MSTORE POP DUP1 PUSH2 0x99E MSTORE POP DUP1 PUSH2 0xE6F MSTORE DUP1 PUSH2 0xF6C MSTORE POP DUP1 PUSH2 0xC3B MSTORE DUP1 PUSH2 0xD57 MSTORE POP PUSH2 0x1136 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2E8 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xAE35EBFB EQ PUSH2 0x270 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x231 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x160 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x38B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x43B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19F PUSH2 0x509 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x52C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x53B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH2 0x547 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19F PUSH2 0x618 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x122 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x208 PUSH2 0x641 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH2 0xA7F JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x383 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x42F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x438 DUP2 PUSH2 0xB4D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x503 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xBE9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64B PUSH2 0xBF5 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6FC PUSH2 0xC0E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x933 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI PUSH2 0x933 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x80A DUP4 PUSH2 0x43B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x820 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D9 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x884 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EE SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x953 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA1C SWAP1 POP DUP3 PUSH2 0xC39 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x523 PUSH2 0xDF5 JUMP JUMPDEST PUSH2 0xA37 DUP2 PUSH2 0xDFC JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10A9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC07 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x100E JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH32 0x0 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xAD58BDD100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xAD58BDD1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDEE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE6B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF57 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10DD PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF64 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x100A DUP3 PUSH2 0xB4D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x100A JUMPI PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x100A SWAP2 DUP4 SWAP2 PUSH2 0x438 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122060A2D08B373E5E014EBD6BA6FF04D22A PUSH11 0xB7995FF241270822BFBD4D MSTORE DUP13 0xD7 SWAP13 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"780:1011:103:-:0;;;838:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;838:216:103;;;;;;;;942:41;838:216;;;;942:41;;;:::i;:::-;-1:-1:-1;;;;;942:41:103;;;;;;;;;;;;;;;;;;;;-1:-1:-1;942:41:103;;;;;;;;;;;;;;;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;-1:-1:-1;780:1011:103;;-1:-1:-1;780:1011:103;;;;;;;;;:::o;:::-;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee146100a8578063ce3cc8bd146100b0575b600080fd5b61007f6004803603604081101561005c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356100f7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61007f610195565b6100e3600480360360208110156100c657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101b1565b604080519115158252519081900360200190f35b6000806101026101e0565b90508073ffffffffffffffffffffffffffffffffffffffff1663cd6dc68785856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561017557600080fd5b505af1158015610189573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906102059073ffffffffffffffffffffffffffffffffffffffff16610286565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166101db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015290519081900360640190fdfea2646970667358221220606d3c4682ba28aedd958cabcf1cfec0c7df8a438e6cde8599ed94cca8ba655264736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0xB0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x195 JUMP JUMPDEST PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x102 PUSH2 0x1E0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCD6DC687 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x189 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x205 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x286 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0x6D EXTCODECOPY CHAINID DUP3 0xBA 0x28 0xAE 0xDD SWAP6 DUP13 0xAB 0xCF SHR INVALID 0xC0 0xC7 0xDF DUP11 NUMBER DUP15 PUSH13 0xDE8599ED94CCA8BA655264736F PUSH13 0x63430007010033000000000000 ","sourceMap":"780:1011:103:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1563:226;;;;;;;;;;;;;;;;-1:-1:-1;1563:226:103;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1309:108:83;;;:::i;1507:131::-;;;;;;;;;;;;;;;;-1:-1:-1;1507:131:83;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1563:226:103;1643:7;1662:13;1678:9;:7;:9::i;:::-;1662:25;;1713:5;1697:33;;;1731:9;1742:17;1697:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1777:5:103;;1563:226;-1:-1:-1;;;;;;1563:226:103:o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;1507:131::-;1605:26;;;1582:4;1605:26;;;:19;:26;;;;;;;;1507:131;;;;:::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getGaugeImplementation()":"39312dee","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IGnosisBridge\",\"name\":\"gnosisBridge\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge (18-decimal FP value from 0 to 1)\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Gnosis.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/gnosis/GnosisRootGaugeFactory.sol\":\"GnosisRootGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/gnosis/GnosisRootGauge.sol\":{\"keccak256\":\"0xa6ac34ae2a6984fd9989615125a4112f4ab41d7881846cb16a584b45d88e33da\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f5690b39910ad0615b2398f1eee00cfe03e3c8a4dd29f8565bcbd70281f7f86\",\"dweb:/ipfs/QmeTmFYdosVdTMgUAXVFYKvw64HDGv9KctJBkFJM7Ap76d\"]},\"contracts/gauges/gnosis/GnosisRootGaugeFactory.sol\":{\"keccak256\":\"0x47d16caf1ab7cb93b915a4303e3d36fcbbb72cc45624044f406c9be84d54069f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://55cefada40d7cee13b3d4dbcd0d20b7447fb5f03e328e6fa010bda1d3b6fefe0\",\"dweb:/ipfs/QmX7MQRALiKBTKK4VkLXbXS4PC6HegMQowgEpXNhU9LjJD\"]}},\"version\":1}"}},"contracts/gauges/optimistic/OptimisticRootGauge.sol":{"OptimisticRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IL1StandardBridge","name":"optimismL1StandardBridge","type":"address"},{"internalType":"address","name":"optimismBal","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NETWORK","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOptimismBal","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOptimismBridge","outputs":[{"internalType":"contract IL1StandardBridge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"},{"internalType":"string","name":"targetNetwork","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101e06040523480156200001257600080fd5b5060405162001c5238038062001c52833981810160405260608110156200003857600080fd5b50805160208083015160409384015160016000908155855163e6dec36f60e01b81529551949592949193869391926001600160a01b0385169263e6dec36f926004808301939192829003018186803b1580156200009457600080fd5b505afa158015620000a9573d6000803e3d6000fd5b505050506040513d6020811015620000c057600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d60208110156200013557600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017e57600080fd5b505afa15801562000193573d6000803e3d6000fd5b505050506040513d6020811015620001aa57600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021b57600080fd5b505afa15801562000230573d6000803e3d6000fd5b505050506040513d60208110156200024757600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029b57600080fd5b505afa158015620002b0573d6000803e3d6000fd5b505050506040513d6020811015620002c757600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d60208110156200033a57600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b505161016052505060001960025550506001600160601b0319606092831b81166101805290821b166101a05233901b6101c0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c6101c05160601c6117ab620004a760003980611175525080610696528061113052508061066c52806110ac52806110d3525080610ad2525080610ab1525080610a345280610b1e5250806104e752806107f952806108d95280610cbc52508061058652806109c2525080610c14525080610e8d5280610f8a52508061108a528061110f52506117ab6000f3fe6080604052600436106100f35760003560e01c806383f5c39b1161008a578063ab8f094511610059578063ab8f0945146103fa578063b02452251461040f578063c2c4c5c114610424578063d34fb2671461042c576100f3565b806383f5c39b146103315780638759e6d1146103465780639c868ac0146103d05780639f867671146103e5576100f3565b80632d8411af116100c65780632d8411af146101de5780634b820093146101f357806360b630c41461024757806381d609561461025c576100f3565b806309400707146100f857806310d3eb041461014a57806314e956f5146101765780631b88094d146101a0575b600080fd5b34801561010457600080fd5b506101386004803603602081101561011b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610441565b60408051918252519081900360200190f35b34801561015657600080fd5b506101746004803603602081101561016d57600080fd5b50356104cf565b005b34801561018257600080fd5b506101386004803603602081101561019957600080fd5b503561057f565b3480156101ac57600080fd5b506101b561064d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101ea57600080fd5b506101b561066a565b3480156101ff57600080fd5b506102336004803603602081101561021657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661068e565b604080519115158252519081900360200190f35b34801561025357600080fd5b506101b5610694565b34801561026857600080fd5b506101746004803603606081101561027f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156102bc57600080fd5b8201836020820111156102ce57600080fd5b803590602001918460018302840111640100000000831117156102f057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106b8945050505050565b34801561033d57600080fd5b5061013861071a565b34801561035257600080fd5b5061035b610720565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039557818101518382015260200161037d565b50505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103dc57600080fd5b506102336107cc565b3480156103f157600080fd5b506101386107d5565b34801561040657600080fd5b506101746107e1565b34801561041b57600080fd5b506101386108b2565b6102336108b7565b34801561043857600080fd5b50610174610ca4565b600073ffffffffffffffffffffffffffffffffffffffff821630146104c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461057357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61057c81610d72565b50565b60006106477f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561061357600080fd5b505afa158015610627573d6000803e3d6000fd5b505050506040513d602081101561063d57600080fd5b5051600654610e0e565b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff165b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106c182610e1a565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8516179055805161071490600790602084019061168a565b50505050565b60065490565b6007805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156107c45780601f10610799576101008083540402835291602001916107c4565b820191906000526020600020905b8154815290600101906020018083116107a757829003601f168201915b505050505081565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461088557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b60006108c161102c565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610972611045565b905080821015610c9657604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610ba95784811115610a6e57610ba9565b62093a808102600080610a808361057f565b9050828510158015610a9657508262093a800185105b15610b4f57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000890281610afa57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f00000000000000000000000000000000000000000000000000000000000000009098019704939093019250610b649050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610a56565b50600284905560048054830190558115801590610bc9575060055460ff16155b15610c9257604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610c5c57600080fd5b505af1158015610c70573d6000803e3d6000fd5b505050506040513d6020811015610c8657600080fd5b50610c92905082611070565b5050505b6001925050506106676112e4565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d4857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061171e6034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b60025415610e8957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ef157600080fd5b505afa158015610f05573d6000803e3d6000fd5b505050506040513d6020811015610f1b57600080fd5b5051905080610f75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806117526024913960400191505060405180910390fd5b6001819055610f82611045565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610ff057600080fd5b505af1158015611004573d6000803e3d6000fd5b505050506040513d602081101561101a57600080fd5b505160035561102882610d72565b5050565b61103e600260005414156101906112eb565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6110d173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836112f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663838b25207f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a0566e726040518163ffffffff1660e01b815260040160206040518083038186803b1580156111d957600080fd5b505afa1580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16815273ffffffffffffffffffffffffffffffffffffffff96871660048201529486166024860152929094166044840152606483015263ffffffff909216608482015260c060a4820152600260c48201527f307800000000000000000000000000000000000000000000000000000000000060e4820152905161010480830192600092919082900301818387803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b5050505050565b6001600055565b8161102857611028816114cf565b80158015906113a85750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d60208110156113a357600080fd5b505115155b1561143d576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261143d9084906114f9565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526114ca9084906114f9565b505050565b61057c817f42414c000000000000000000000000000000000000000000000000000000000061160f565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061156257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611525565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115c4576040519150601f19603f3d011682016040523d82523d6000602084013e6115c9565b606091505b509150915060008214156115e1573d6000803e3d6000fd5b610714815160001480611607575081806020019051602081101561160457600080fd5b50515b6101a26112eb565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116cb57805160ff19168380011785556116f8565b828001600101855582156116f8579182015b828111156116f85782518255916020019190600101906116dd565b50611704929150611708565b5090565b5b80821115611704576000815560010161170956fe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122032b577cafe255b968523d7e91f990f1a920451e7e6bc8cef6ae63ff4dd2e92bf64736f6c63430007010033","opcodes":"PUSH2 0x1E0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1C52 CODESIZE SUB DUP1 PUSH3 0x1C52 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE DUP6 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 MLOAD SWAP5 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 DUP7 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x11E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x230 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x323 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP1 DUP3 SHL AND PUSH2 0x1A0 MSTORE CALLER SWAP1 SHL PUSH2 0x1C0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1C0 MLOAD PUSH1 0x60 SHR PUSH2 0x17AB PUSH3 0x4A7 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1175 MSTORE POP DUP1 PUSH2 0x696 MSTORE DUP1 PUSH2 0x1130 MSTORE POP DUP1 PUSH2 0x66C MSTORE DUP1 PUSH2 0x10AC MSTORE DUP1 PUSH2 0x10D3 MSTORE POP DUP1 PUSH2 0xAD2 MSTORE POP DUP1 PUSH2 0xAB1 MSTORE POP DUP1 PUSH2 0xA34 MSTORE DUP1 PUSH2 0xB1E MSTORE POP DUP1 PUSH2 0x4E7 MSTORE DUP1 PUSH2 0x7F9 MSTORE DUP1 PUSH2 0x8D9 MSTORE DUP1 PUSH2 0xCBC MSTORE POP DUP1 PUSH2 0x586 MSTORE DUP1 PUSH2 0x9C2 MSTORE POP DUP1 PUSH2 0xC14 MSTORE POP DUP1 PUSH2 0xE8D MSTORE DUP1 PUSH2 0xF8A MSTORE POP DUP1 PUSH2 0x108A MSTORE DUP1 PUSH2 0x110F MSTORE POP PUSH2 0x17AB PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x40F JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x424 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x42C JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0x8759E6D1 EQ PUSH2 0x346 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x3E5 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x2D8411AF GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x2D8411AF EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x60B630C4 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x81D60956 EQ PUSH2 0x25C JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x1A0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x441 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4CF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x57F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x64D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x66A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x68E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x253 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x694 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x6B8 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x71A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35B PUSH2 0x720 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x395 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3C2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x7CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x7D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH2 0x7E1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x8B2 JUMP JUMPDEST PUSH2 0x233 PUSH2 0x8B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH2 0xCA4 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x4C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x573 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x57C DUP2 PUSH2 0xD72 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x647 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x627 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xE0E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6C1 DUP3 PUSH2 0xE1A JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND OR SWAP1 SSTORE DUP1 MLOAD PUSH2 0x714 SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7C4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x799 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7C4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7A7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x885 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C1 PUSH2 0x102C JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x965 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x972 PUSH2 0x1045 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0xBA9 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0xA6E JUMPI PUSH2 0xBA9 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0xA80 DUP4 PUSH2 0x57F JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xA96 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0xB4F JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0xAFA JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xB64 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0xA56 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBC9 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xC92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC70 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC92 SWAP1 POP DUP3 PUSH2 0x1070 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x667 PUSH2 0x12E4 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xD48 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xDD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x171E PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE89 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF05 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF75 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1752 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF82 PUSH2 0x1045 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1004 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x101A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x1028 DUP3 PUSH2 0xD72 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x103E PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0x10D1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x12F9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x838B2520 PUSH32 0x0 PUSH32 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA0566E72 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP10 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP5 DUP7 AND PUSH1 0x24 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP5 AND PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0xC4 DUP3 ADD MSTORE PUSH32 0x3078000000000000000000000000000000000000000000000000000000000000 PUSH1 0xE4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST DUP2 PUSH2 0x1028 JUMPI PUSH2 0x1028 DUP2 PUSH2 0x14CF JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x13A8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x143D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x143D SWAP1 DUP5 SWAP1 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x14CA SWAP1 DUP5 SWAP1 PUSH2 0x14F9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x57C DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x160F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1562 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1525 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x15C4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x15C9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x15E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x714 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1607 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x12EB JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x16CB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x16F8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x16F8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x16F8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x16DD JUMP JUMPDEST POP PUSH2 0x1704 SWAP3 SWAP2 POP PUSH2 0x1708 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1704 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1709 JUMP INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122032B577CAFE255B968523D7E91F990F1A SWAP3 DIV MLOAD 0xE7 0xE6 0xBC DUP13 0xEF PUSH11 0xE63FF4DD2E92BF64736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"1012:1910:104:-:0;;;1484:324;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1484:324:104;;;;;;;;;;;;2070:1:63;2175:7;:22;;;2339:30:89;;-1:-1:-1;2339:30:89;;;;1484:324:104;;;;;;;;2175:7:63;;-1:-1:-1;2339:28:89;;;-1:-1:-1;;2339:30:89;;;;;1484:324:104;;2339:30:89;;;;;:28;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2339:30:89;2398:29;;;-1:-1:-1;2398:29:89;;;;2339:30;;-1:-1:-1;2380:15:89;;-1:-1:-1;2398:27:89;;;-1:-1:-1;;2398:29:89;;;;;2339:30;;2398:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2398:29:89;2472:27;;;-1:-1:-1;2472:27:89;;;;2398:29;;-1:-1:-1;2437:32:89;;-1:-1:-1;2472:25:89;;;;;:27;;;;;2398:29;;2472:27;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2472:27:89;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2472:27;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;2472:27;;2665:23;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2665:23:89;2644:44;;-1:-1:-1;2644:44:89;;;2722:32;;;-1:-1:-1;2722:32:89;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;2665:23;;2722:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2722:32:89;2699:55;;2794:39;;;-1:-1:-1;2794:39:89;;;;-1:-1:-1;2794:37:89;;;-1:-1:-1;;2794:39:89;;;;;2722:32;;2794:39;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:39:89;2764:69;;2863:29;;;-1:-1:-1;2863:29:89;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;2794:39;;2863:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2863:29:89;2843:49;;-1:-1:-1;;;;3053:7:89;:27;-1:-1:-1;;;;;;;;1655:52:104::1;::::0;;;;;::::1;::::0;1717:26;;;;::::1;::::0;1790:10:::1;1753:48:::0;::::1;;::::0;-1:-1:-1;1012:1910:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":4234},{"length":32,"start":4367}],"14642":[{"length":32,"start":3725},{"length":32,"start":3978}],"14644":[{"length":32,"start":3092}],"14646":[{"length":32,"start":1414},{"length":32,"start":2498}],"14648":[{"length":32,"start":1255},{"length":32,"start":2041},{"length":32,"start":2265},{"length":32,"start":3260}],"14656":[{"length":32,"start":2612},{"length":32,"start":2846}],"14658":[{"length":32,"start":2737}],"14660":[{"length":32,"start":2770}],"17686":[{"length":32,"start":1644},{"length":32,"start":4268},{"length":32,"start":4307}],"17688":[{"length":32,"start":1686},{"length":32,"start":4400}],"17690":[{"length":32,"start":4469}]},"linkReferences":{},"object":"6080604052600436106100f35760003560e01c806383f5c39b1161008a578063ab8f094511610059578063ab8f0945146103fa578063b02452251461040f578063c2c4c5c114610424578063d34fb2671461042c576100f3565b806383f5c39b146103315780638759e6d1146103465780639c868ac0146103d05780639f867671146103e5576100f3565b80632d8411af116100c65780632d8411af146101de5780634b820093146101f357806360b630c41461024757806381d609561461025c576100f3565b806309400707146100f857806310d3eb041461014a57806314e956f5146101765780631b88094d146101a0575b600080fd5b34801561010457600080fd5b506101386004803603602081101561011b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610441565b60408051918252519081900360200190f35b34801561015657600080fd5b506101746004803603602081101561016d57600080fd5b50356104cf565b005b34801561018257600080fd5b506101386004803603602081101561019957600080fd5b503561057f565b3480156101ac57600080fd5b506101b561064d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101ea57600080fd5b506101b561066a565b3480156101ff57600080fd5b506102336004803603602081101561021657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661068e565b604080519115158252519081900360200190f35b34801561025357600080fd5b506101b5610694565b34801561026857600080fd5b506101746004803603606081101561027f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156102bc57600080fd5b8201836020820111156102ce57600080fd5b803590602001918460018302840111640100000000831117156102f057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106b8945050505050565b34801561033d57600080fd5b5061013861071a565b34801561035257600080fd5b5061035b610720565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039557818101518382015260200161037d565b50505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103dc57600080fd5b506102336107cc565b3480156103f157600080fd5b506101386107d5565b34801561040657600080fd5b506101746107e1565b34801561041b57600080fd5b506101386108b2565b6102336108b7565b34801561043857600080fd5b50610174610ca4565b600073ffffffffffffffffffffffffffffffffffffffff821630146104c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461057357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61057c81610d72565b50565b60006106477f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561061357600080fd5b505afa158015610627573d6000803e3d6000fd5b505050506040513d602081101561063d57600080fd5b5051600654610e0e565b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff165b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106c182610e1a565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8516179055805161071490600790602084019061168a565b50505050565b60065490565b6007805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156107c45780601f10610799576101008083540402835291602001916107c4565b820191906000526020600020905b8154815290600101906020018083116107a757829003601f168201915b505050505081565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461088557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b60006108c161102c565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610972611045565b905080821015610c9657604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610ba95784811115610a6e57610ba9565b62093a808102600080610a808361057f565b9050828510158015610a9657508262093a800185105b15610b4f57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000890281610afa57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f00000000000000000000000000000000000000000000000000000000000000009098019704939093019250610b649050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610a56565b50600284905560048054830190558115801590610bc9575060055460ff16155b15610c9257604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610c5c57600080fd5b505af1158015610c70573d6000803e3d6000fd5b505050506040513d6020811015610c8657600080fd5b50610c92905082611070565b5050505b6001925050506106676112e4565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d4857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061171e6034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b60025415610e8957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ef157600080fd5b505afa158015610f05573d6000803e3d6000fd5b505050506040513d6020811015610f1b57600080fd5b5051905080610f75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806117526024913960400191505060405180910390fd5b6001819055610f82611045565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610ff057600080fd5b505af1158015611004573d6000803e3d6000fd5b505050506040513d602081101561101a57600080fd5b505160035561102882610d72565b5050565b61103e600260005414156101906112eb565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6110d173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836112f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663838b25207f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a0566e726040518163ffffffff1660e01b815260040160206040518083038186803b1580156111d957600080fd5b505afa1580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16815273ffffffffffffffffffffffffffffffffffffffff96871660048201529486166024860152929094166044840152606483015263ffffffff909216608482015260c060a4820152600260c48201527f307800000000000000000000000000000000000000000000000000000000000060e4820152905161010480830192600092919082900301818387803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b5050505050565b6001600055565b8161102857611028816114cf565b80158015906113a85750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d60208110156113a357600080fd5b505115155b1561143d576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261143d9084906114f9565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526114ca9084906114f9565b505050565b61057c817f42414c000000000000000000000000000000000000000000000000000000000061160f565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061156257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611525565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115c4576040519150601f19603f3d011682016040523d82523d6000602084013e6115c9565b606091505b509150915060008214156115e1573d6000803e3d6000fd5b610714815160001480611607575081806020019051602081101561160457600080fd5b50515b6101a26112eb565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116cb57805160ff19168380011785556116f8565b828001600101855582156116f8579182015b828111156116f85782518255916020019190600101906116dd565b50611704929150611708565b5090565b5b80821115611704576000815560010161170956fe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122032b577cafe255b968523d7e91f990f1a920451e7e6bc8cef6ae63ff4dd2e92bf64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x40F JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x424 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x42C JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0x8759E6D1 EQ PUSH2 0x346 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x3E5 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x2D8411AF GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x2D8411AF EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x60B630C4 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x81D60956 EQ PUSH2 0x25C JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x1A0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x441 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4CF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x57F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x64D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x66A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x68E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x253 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x694 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x6B8 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x71A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35B PUSH2 0x720 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x395 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3C2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x7CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x7D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH2 0x7E1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x8B2 JUMP JUMPDEST PUSH2 0x233 PUSH2 0x8B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH2 0xCA4 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x4C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x573 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x57C DUP2 PUSH2 0xD72 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x647 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x627 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xE0E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6C1 DUP3 PUSH2 0xE1A JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND OR SWAP1 SSTORE DUP1 MLOAD PUSH2 0x714 SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7C4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x799 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7C4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7A7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x885 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C1 PUSH2 0x102C JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x965 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x972 PUSH2 0x1045 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0xBA9 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0xA6E JUMPI PUSH2 0xBA9 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0xA80 DUP4 PUSH2 0x57F JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xA96 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0xB4F JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0xAFA JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xB64 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0xA56 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBC9 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xC92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC70 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC92 SWAP1 POP DUP3 PUSH2 0x1070 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x667 PUSH2 0x12E4 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xD48 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xDD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x171E PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE89 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF05 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF75 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1752 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF82 PUSH2 0x1045 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1004 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x101A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x1028 DUP3 PUSH2 0xD72 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x103E PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0x10D1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x12F9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x838B2520 PUSH32 0x0 PUSH32 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA0566E72 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP10 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP5 DUP7 AND PUSH1 0x24 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP5 AND PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0xC4 DUP3 ADD MSTORE PUSH32 0x3078000000000000000000000000000000000000000000000000000000000000 PUSH1 0xE4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST DUP2 PUSH2 0x1028 JUMPI PUSH2 0x1028 DUP2 PUSH2 0x14CF JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x13A8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x143D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x143D SWAP1 DUP5 SWAP1 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x14CA SWAP1 DUP5 SWAP1 PUSH2 0x14F9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x57C DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x160F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1562 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1525 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x15C4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x15C9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x15E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x714 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1607 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x12EB JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x16CB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x16F8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x16F8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x16F8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x16DD JUMP JUMPDEST POP PUSH2 0x1704 SWAP3 SWAP2 POP PUSH2 0x1708 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1704 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1709 JUMP INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122032B577CAFE255B968523D7E91F990F1A SWAP3 DIV MLOAD 0xE7 0xE6 0xBC DUP13 0xEF PUSH11 0xE63FF4DD2E92BF64736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"1012:1910:104:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6895:191:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6895:191:89;;;;:::i;:::-;;;;;;;;;;;;;;;;7513:214;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7513:214:89;;:::i;:::-;;8159:199;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:199:89;;:::i;2139:99:104:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2244:120;;;;;;;;;;;;;:::i;6789:100:89:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6789:100:89;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2370:94:104;;;;;;;;;;;;;:::i;1814:319::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1814:319:104;;-1:-1:-1;1814:319:104;;-1:-1:-1;;;;;1814:319:104:i;8038:115:89:-;;;;;;;;;;;;;:::i;1150:21:104:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7092:92:89;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;6394:104::-;;;;;;;;;;;;;:::i;3697:2655::-;;;:::i;7350:157::-;;;;;;;;;;;;;:::i;6895:191::-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8271:59:89;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;2139:99:104:-;2221:10;;;;2139:99;;:::o;2244:120::-;2332:25;2244:120;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;2370:94:104:-;2445:12;2370:94;:::o;1814:319::-;2020:40;2042:17;2020:21;:40::i;:::-;2071:10;:22;;;;;;;;;;2103:23;;;;:7;;:23;;;;;:::i;:::-;;1814:319;;;:::o;8038:115:89:-;8128:18;;8038:115;:::o;1150:21:104:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7092:92:89:-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6394:104::-;6464:7;6394:104;:::o;3697:2655::-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;;4042:4:::1;4000:48;::::0;::::1;::::0;;;:33:::1;:16;:33;::::0;::::1;::::0;:48;;;;;-1:-1:-1;;4000:48:89;;;;;;;-1:-1:-1;4000:33:89;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5978:38;::::0;;;;;;;5989:10;;5978:38:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;;6246:4:::1;6225:27;::::0;::::1;::::0;;;:12:::1;:7;:12;::::0;::::1;::::0;:27;;;;;::::1;::::0;;;;;;;;-1:-1:-1;6225:12:89;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6270:29:89::1;::::0;-1:-1:-1;6286:12:89;6270:15:::1;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7929:18;:38;;;7982:43;;;;;;;;;;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3428:18:89;;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3601:33:89;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;2470:450:104:-;2543:69;:21;:9;:21;2573:25;2601:10;2543:21;:69::i;:::-;2695:25;:40;;;2757:9;2781:12;2807:10;;;;;;;;;;;2831;2855:8;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2855:30:104;2695:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2695:218:104;;;;;;;-1:-1:-1;2695:218:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2470:450;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;;1256:4;1232:43;;;;:15;:43;;;;;;;;;:15;;;;;;:43;;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1232:43:64;:48;;1218:62;1214:183;;;1332:53;;;;;;;;;;1383:1;1332:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:22;1332:53;;;1296:90;;1324:5;;1296:19;:90::i;:::-;1443:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1466:22;1443:57;;;1407:94;;1435:5;;1407:19;:94::i;:::-;1001:507;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:64;3143:56;11359:3:31;3134:8:64;:97::i;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","NETWORK()":"8759e6d1","checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getOptimismBal()":"60b630c4","getOptimismBridge()":"2d8411af","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256,string)":"81d60956","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"optimismL1StandardBridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"optimismBal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOptimismBal\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOptimismBridge\",\"outputs\":[{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"targetNetwork\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/optimistic/OptimisticRootGauge.sol\":\"OptimisticRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\":{\"keccak256\":\"0x31b489cbd755b3c789115af4cf3d7af2da15f59030345ac29ecf26a033fc806a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2cc164ca032440222b7984aebbad6a46a6c82eef33564d1c6d78408bafab9934\",\"dweb:/ipfs/QmdgixtcWUX8CFhrTkUiAAmSkpMG2FsZnK18QywDhFoFcp\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol\":{\"keccak256\":\"0x1208fef15dbb96160469c256a19f69d7f7f4798882a3504252ad25f89e36afcb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://556fc28a88f4798c5dd23cb4b25d8640bb0175e85d6a3093ec185e1d096e2924\",\"dweb:/ipfs/QmTyxuE1mPRSbn6XHm52qcHj78QrMUpXNHUUF3ZdENtQXU\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/optimistic/OptimisticRootGauge.sol\":{\"keccak256\":\"0x49a4656b91215987409a8f933c1fc9dd11782866ac7ffd220bbeb2af8b0a6e49\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6fbcd6e8b58c267106bcbf54a0d8d08d1e00a631f14e746146c66cd19e58e2e\",\"dweb:/ipfs/QmUBPQfUgBUA5V6frWox6zCQWMJsQFZABARgte15MXM5zM\"]}},\"version\":1}"}},"contracts/gauges/optimistic/OptimisticRootGaugeFactory.sol":{"OptimisticRootGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IL1StandardBridge","name":"optimismL1StandardBridge","type":"address"},{"internalType":"address","name":"optimismBal","type":"address"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"string","name":"targetNetwork","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"gasLimit","type":"uint256"}],"name":"OptimismGasLimitModified","type":"event"},{"inputs":[],"name":"NETWORK","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOptimismGasLimit","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"gasLimit","type":"uint32"}],"name":"setOptimismGasLimit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c06040523480156200001157600080fd5b5060405162002a3e38038062002a3e833981016040819052620000349162000193565b85306001600160a01b031660001b8686866040516200005390620000e9565b6200006193929190620002cb565b604051809103906000f0801580156200007e573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905560805260601b6001600160601b03191660a0526003805463ffffffff191663ffffffff84161790558051620000dc906002906020840190620000f7565b5050505050505062000307565b611c528062000dec83390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013a57805160ff19168380011785556200016a565b828001600101855582156200016a579182015b828111156200016a5782518255916020019190600101906200014d565b50620001789291506200017c565b5090565b5b808211156200017857600081556001016200017d565b60008060008060008060c08789031215620001ac578182fd5b8651620001b981620002ee565b80965050602080880151620001ce81620002ee565b6040890151909650620001e181620002ee565b6060890151909550620001f481620002ee565b608089015190945063ffffffff811681146200020e578384fd5b60a08901519093506001600160401b03808211156200022b578384fd5b818a0191508a601f8301126200023f578384fd5b8151818111156200024e578485fd5b604051601f8201601f19168101850183811182821017156200026e578687fd5b60405281815283820185018d101562000285578586fd5b8592505b81831015620002a8578383018501518184018601529184019162000289565b81831115620002b957858583830101525b80955050505050509295509295509295565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b03811681146200030457600080fd5b50565b60805160a05160601c610abe6200032e600039806103215250806102275250610abe6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80638d928af811610076578063aaabadc51161005b578063aaabadc51461012b578063bf5fa77214610133578063ce3cc8bd14610148576100a3565b80638d928af81461010e578063a0566e7214610116576100a3565b80630ecaea73146100a857806339312dee146100d1578063851c1bb3146100d95780638759e6d1146100f9575b600080fd5b6100bb6100b6366004610778565b610168565b6040516100c89190610873565b60405180910390f35b6100bb610207565b6100ec6100e73660046107c3565b610223565b6040516100c8919061096c565b610101610276565b6040516100c891906109a1565b6100bb61031f565b61011e610343565b6040516100c89190610a49565b6100bb61034f565b61014661014136600461081f565b6103db565b005b61015b61015636600461075c565b61044e565b6040516100c89190610961565b600080610173610479565b6040517f81d6095600000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906381d60956906101cd9087908790600290600401610894565b600060405180830381600087803b1580156101e757600080fd5b505af11580156101fb573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610258929190610843565b6040516020818303038152906040528051906020012090505b919050565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f810184900484028201840190925281815292918301828280156103175780601f106102ec57610100808354040283529160200191610317565b820191906000526020600020905b8154815290600101906020018083116102fa57829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000090565b60035463ffffffff1690565b600061035961031f565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561039e57600080fd5b505afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190610803565b905090565b6103e361051f565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83161790556040517f7c1820748876489d9c02f32c788d21f7a0719b00e777eca80532dd5d77c481ce90610443908390610a49565b60405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60008054819061049e9073ffffffffffffffffffffffffffffffffffffffff16610568565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b600061054e6000357fffffffff0000000000000000000000000000000000000000000000000000000016610223565b905061056561055d823361061e565b6101916106bb565b50565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590610a12565b60405180910390fd5b600061062861034f565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161066493929190610975565b60206040518083038186803b15801561067c57600080fd5b505afa158015610690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b491906107a3565b9392505050565b816106c9576106c9816106cd565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610565917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b60006020828403121561076d578081fd5b81356106b481610a66565b6000806040838503121561078a578081fd5b823561079581610a66565b946020939093013593505050565b6000602082840312156107b4578081fd5b815180151581146106b4578182fd5b6000602082840312156107d4578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106b4578182fd5b600060208284031215610814578081fd5b81516106b481610a66565b600060208284031215610830578081fd5b813563ffffffff811681146106b4578182fd5b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60006060820173ffffffffffffffffffffffffffffffffffffffff8616835260208581850152606060408501528285546001808216600081146108de576001811461091a57610952565b607f600284041686527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316608089015260a088019350610952565b6002830480875261092a8a610a5a565b885b828110156109485781548b82016080015290840190870161092c565b8a01608001955050505b50919998505050505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6000602080835283518082850152825b818110156109cd578581018301518582016040015282016109b1565b818111156109de5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b63ffffffff91909116815260200190565b60009081526020902090565b73ffffffffffffffffffffffffffffffffffffffff8116811461056557600080fdfea2646970667358221220e24746db362b70ad2a4093f27f1f654d83f347aa4cef59e4a3502c26cc6bf27464736f6c634300070100336101e06040523480156200001257600080fd5b5060405162001c5238038062001c52833981810160405260608110156200003857600080fd5b50805160208083015160409384015160016000908155855163e6dec36f60e01b81529551949592949193869391926001600160a01b0385169263e6dec36f926004808301939192829003018186803b1580156200009457600080fd5b505afa158015620000a9573d6000803e3d6000fd5b505050506040513d6020811015620000c057600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d60208110156200013557600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017e57600080fd5b505afa15801562000193573d6000803e3d6000fd5b505050506040513d6020811015620001aa57600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021b57600080fd5b505afa15801562000230573d6000803e3d6000fd5b505050506040513d60208110156200024757600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029b57600080fd5b505afa158015620002b0573d6000803e3d6000fd5b505050506040513d6020811015620002c757600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d60208110156200033a57600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b505161016052505060001960025550506001600160601b0319606092831b81166101805290821b166101a05233901b6101c0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c6101c05160601c6117ab620004a760003980611175525080610696528061113052508061066c52806110ac52806110d3525080610ad2525080610ab1525080610a345280610b1e5250806104e752806107f952806108d95280610cbc52508061058652806109c2525080610c14525080610e8d5280610f8a52508061108a528061110f52506117ab6000f3fe6080604052600436106100f35760003560e01c806383f5c39b1161008a578063ab8f094511610059578063ab8f0945146103fa578063b02452251461040f578063c2c4c5c114610424578063d34fb2671461042c576100f3565b806383f5c39b146103315780638759e6d1146103465780639c868ac0146103d05780639f867671146103e5576100f3565b80632d8411af116100c65780632d8411af146101de5780634b820093146101f357806360b630c41461024757806381d609561461025c576100f3565b806309400707146100f857806310d3eb041461014a57806314e956f5146101765780631b88094d146101a0575b600080fd5b34801561010457600080fd5b506101386004803603602081101561011b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610441565b60408051918252519081900360200190f35b34801561015657600080fd5b506101746004803603602081101561016d57600080fd5b50356104cf565b005b34801561018257600080fd5b506101386004803603602081101561019957600080fd5b503561057f565b3480156101ac57600080fd5b506101b561064d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101ea57600080fd5b506101b561066a565b3480156101ff57600080fd5b506102336004803603602081101561021657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661068e565b604080519115158252519081900360200190f35b34801561025357600080fd5b506101b5610694565b34801561026857600080fd5b506101746004803603606081101561027f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156102bc57600080fd5b8201836020820111156102ce57600080fd5b803590602001918460018302840111640100000000831117156102f057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106b8945050505050565b34801561033d57600080fd5b5061013861071a565b34801561035257600080fd5b5061035b610720565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039557818101518382015260200161037d565b50505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103dc57600080fd5b506102336107cc565b3480156103f157600080fd5b506101386107d5565b34801561040657600080fd5b506101746107e1565b34801561041b57600080fd5b506101386108b2565b6102336108b7565b34801561043857600080fd5b50610174610ca4565b600073ffffffffffffffffffffffffffffffffffffffff821630146104c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461057357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61057c81610d72565b50565b60006106477f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561061357600080fd5b505afa158015610627573d6000803e3d6000fd5b505050506040513d602081101561063d57600080fd5b5051600654610e0e565b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff165b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106c182610e1a565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8516179055805161071490600790602084019061168a565b50505050565b60065490565b6007805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156107c45780601f10610799576101008083540402835291602001916107c4565b820191906000526020600020905b8154815290600101906020018083116107a757829003601f168201915b505050505081565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461088557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b60006108c161102c565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b6002546000610972611045565b905080821015610c9657604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff01811015610ba95784811115610a6e57610ba9565b62093a808102600080610a808361057f565b9050828510158015610a9657508262093a800185105b15610b4f57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000890281610afa57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f00000000000000000000000000000000000000000000000000000000000000009098019704939093019250610b649050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a250939093019250600101610a56565b50600284905560048054830190558115801590610bc9575060055460ff16155b15610c9257604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b158015610c5c57600080fd5b505af1158015610c70573d6000803e3d6000fd5b505050506040513d6020811015610c8657600080fd5b50610c92905082611070565b5050505b6001925050506106676112e4565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d4857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061171e6034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b60025415610e8957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ef157600080fd5b505afa158015610f05573d6000803e3d6000fd5b505050506040513d6020811015610f1b57600080fd5b5051905080610f75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806117526024913960400191505060405180910390fd5b6001819055610f82611045565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610ff057600080fd5b505af1158015611004573d6000803e3d6000fd5b505050506040513d602081101561101a57600080fd5b505160035561102882610d72565b5050565b61103e600260005414156101906112eb565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6110d173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836112f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663838b25207f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a0566e726040518163ffffffff1660e01b815260040160206040518083038186803b1580156111d957600080fd5b505afa1580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16815273ffffffffffffffffffffffffffffffffffffffff96871660048201529486166024860152929094166044840152606483015263ffffffff909216608482015260c060a4820152600260c48201527f307800000000000000000000000000000000000000000000000000000000000060e4820152905161010480830192600092919082900301818387803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b5050505050565b6001600055565b8161102857611028816114cf565b80158015906113a85750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d60208110156113a357600080fd5b505115155b1561143d576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261143d9084906114f9565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526114ca9084906114f9565b505050565b61057c817f42414c000000000000000000000000000000000000000000000000000000000061160f565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061156257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611525565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115c4576040519150601f19603f3d011682016040523d82523d6000602084013e6115c9565b606091505b509150915060008214156115e1573d6000803e3d6000fd5b610714815160001480611607575081806020019051602081101561160457600080fd5b50515b6101a26112eb565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116cb57805160ff19168380011785556116f8565b828001600101855582156116f8579182015b828111156116f85782518255916020019190600101906116dd565b50611704929150611708565b5090565b5b80821115611704576000815560010161170956fe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a264697066735822122032b577cafe255b968523d7e91f990f1a920451e7e6bc8cef6ae63ff4dd2e92bf64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2A3E CODESIZE SUB DUP1 PUSH3 0x2A3E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x193 JUMP JUMPDEST DUP6 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SHL DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH3 0x53 SWAP1 PUSH3 0xE9 JUMP JUMPDEST PUSH3 0x61 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x2CB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x7E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x80 MSTORE PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE PUSH1 0x3 DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF DUP5 AND OR SWAP1 SSTORE DUP1 MLOAD PUSH3 0xDC SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0xF7 JUMP JUMPDEST POP POP POP POP POP POP POP PUSH3 0x307 JUMP JUMPDEST PUSH2 0x1C52 DUP1 PUSH3 0xDEC DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x13A JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x16A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x16A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x16A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x14D JUMP JUMPDEST POP PUSH3 0x178 SWAP3 SWAP2 POP PUSH3 0x17C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x178 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x17D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x1AC JUMPI DUP2 DUP3 REVERT JUMPDEST DUP7 MLOAD PUSH3 0x1B9 DUP2 PUSH3 0x2EE JUMP JUMPDEST DUP1 SWAP7 POP POP PUSH1 0x20 DUP1 DUP9 ADD MLOAD PUSH3 0x1CE DUP2 PUSH3 0x2EE JUMP JUMPDEST PUSH1 0x40 DUP10 ADD MLOAD SWAP1 SWAP7 POP PUSH3 0x1E1 DUP2 PUSH3 0x2EE JUMP JUMPDEST PUSH1 0x60 DUP10 ADD MLOAD SWAP1 SWAP6 POP PUSH3 0x1F4 DUP2 PUSH3 0x2EE JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD SWAP1 SWAP5 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0x20E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0xA0 DUP10 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x22B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x23F JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x24E JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD DUP6 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x26E JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP14 LT ISZERO PUSH3 0x285 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 SWAP3 POP JUMPDEST DUP2 DUP4 LT ISZERO PUSH3 0x2A8 JUMPI DUP4 DUP4 ADD DUP6 ADD MLOAD DUP2 DUP5 ADD DUP7 ADD MSTORE SWAP2 DUP5 ADD SWAP2 PUSH3 0x289 JUMP JUMPDEST DUP2 DUP4 GT ISZERO PUSH3 0x2B9 JUMPI DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x304 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0xABE PUSH3 0x32E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x321 MSTORE POP DUP1 PUSH2 0x227 MSTORE POP PUSH2 0xABE PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0xBF5FA772 EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x148 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0xA0566E72 EQ PUSH2 0x116 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x8759E6D1 EQ PUSH2 0xF9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x873 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBB PUSH2 0x207 JUMP JUMPDEST PUSH2 0xEC PUSH2 0xE7 CALLDATASIZE PUSH1 0x4 PUSH2 0x7C3 JUMP JUMPDEST PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x96C JUMP JUMPDEST PUSH2 0x101 PUSH2 0x276 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0xBB PUSH2 0x31F JUMP JUMPDEST PUSH2 0x11E PUSH2 0x343 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xA49 JUMP JUMPDEST PUSH2 0xBB PUSH2 0x34F JUMP JUMPDEST PUSH2 0x146 PUSH2 0x141 CALLDATASIZE PUSH1 0x4 PUSH2 0x81F JUMP JUMPDEST PUSH2 0x3DB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH2 0x156 CALLDATASIZE PUSH1 0x4 PUSH2 0x75C JUMP JUMPDEST PUSH2 0x44E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x961 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x173 PUSH2 0x479 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x81D6095600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x81D60956 SWAP1 PUSH2 0x1CD SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x4 ADD PUSH2 0x894 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x258 SWAP3 SWAP2 SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x317 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2EC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x317 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2FA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x359 PUSH2 0x31F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x803 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3E3 PUSH2 0x51F JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 AND PUSH4 0xFFFFFFFF DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x7C1820748876489D9C02F32C788D21F7A0719B00E777ECA80532DD5D77C481CE SWAP1 PUSH2 0x443 SWAP1 DUP4 SWAP1 PUSH2 0xA49 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x49E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x568 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54E PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x223 JUMP JUMPDEST SWAP1 POP PUSH2 0x565 PUSH2 0x55D DUP3 CALLER PUSH2 0x61E JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6BB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x271 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x615 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x628 PUSH2 0x34F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x664 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x975 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x690 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6B4 SWAP2 SWAP1 PUSH2 0x7A3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x6C9 JUMPI PUSH2 0x6C9 DUP2 PUSH2 0x6CD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x565 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x76D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6B4 DUP2 PUSH2 0xA66 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x78A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x795 DUP2 PUSH2 0xA66 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7B4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x6B4 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7D4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x6B4 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x814 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x6B4 DUP2 PUSH2 0xA66 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x830 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x6B4 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP4 MSTORE PUSH1 0x20 DUP6 DUP2 DUP6 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE DUP3 DUP6 SLOAD PUSH1 0x1 DUP1 DUP3 AND PUSH1 0x0 DUP2 EQ PUSH2 0x8DE JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x91A JUMPI PUSH2 0x952 JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP5 DIV AND DUP7 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP4 AND PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD SWAP4 POP PUSH2 0x952 JUMP JUMPDEST PUSH1 0x2 DUP4 DIV DUP1 DUP8 MSTORE PUSH2 0x92A DUP11 PUSH2 0xA5A JUMP JUMPDEST DUP9 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x948 JUMPI DUP2 SLOAD DUP12 DUP3 ADD PUSH1 0x80 ADD MSTORE SWAP1 DUP5 ADD SWAP1 DUP8 ADD PUSH2 0x92C JUMP JUMPDEST DUP11 ADD PUSH1 0x80 ADD SWAP6 POP POP POP JUMPDEST POP SWAP2 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x9CD JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x9B1 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x9DE JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x565 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE2 SELFBALANCE CHAINID 0xDB CALLDATASIZE 0x2B PUSH17 0xAD2A4093F27F1F654D83F347AA4CEF59E4 LOG3 POP 0x2C 0x26 0xCC PUSH12 0xF27464736F6C634300070100 CALLER PUSH2 0x1E0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1C52 CODESIZE SUB DUP1 PUSH3 0x1C52 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE DUP6 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 MLOAD SWAP5 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 DUP7 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x11E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x230 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x323 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP1 DUP3 SHL AND PUSH2 0x1A0 MSTORE CALLER SWAP1 SHL PUSH2 0x1C0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1C0 MLOAD PUSH1 0x60 SHR PUSH2 0x17AB PUSH3 0x4A7 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1175 MSTORE POP DUP1 PUSH2 0x696 MSTORE DUP1 PUSH2 0x1130 MSTORE POP DUP1 PUSH2 0x66C MSTORE DUP1 PUSH2 0x10AC MSTORE DUP1 PUSH2 0x10D3 MSTORE POP DUP1 PUSH2 0xAD2 MSTORE POP DUP1 PUSH2 0xAB1 MSTORE POP DUP1 PUSH2 0xA34 MSTORE DUP1 PUSH2 0xB1E MSTORE POP DUP1 PUSH2 0x4E7 MSTORE DUP1 PUSH2 0x7F9 MSTORE DUP1 PUSH2 0x8D9 MSTORE DUP1 PUSH2 0xCBC MSTORE POP DUP1 PUSH2 0x586 MSTORE DUP1 PUSH2 0x9C2 MSTORE POP DUP1 PUSH2 0xC14 MSTORE POP DUP1 PUSH2 0xE8D MSTORE DUP1 PUSH2 0xF8A MSTORE POP DUP1 PUSH2 0x108A MSTORE DUP1 PUSH2 0x110F MSTORE POP PUSH2 0x17AB PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x40F JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x424 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x42C JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0x8759E6D1 EQ PUSH2 0x346 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x3E5 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x2D8411AF GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x2D8411AF EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x60B630C4 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x81D60956 EQ PUSH2 0x25C JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x1A0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x441 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4CF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x57F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x64D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x66A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x68E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x253 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x694 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x6B8 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x71A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35B PUSH2 0x720 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x395 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3C2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x7CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x7D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH2 0x7E1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x8B2 JUMP JUMPDEST PUSH2 0x233 PUSH2 0x8B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH2 0xCA4 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x4C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x573 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x57C DUP2 PUSH2 0xD72 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x647 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x627 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xE0E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6C1 DUP3 PUSH2 0xE1A JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND OR SWAP1 SSTORE DUP1 MLOAD PUSH2 0x714 SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7C4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x799 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7C4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7A7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x885 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C1 PUSH2 0x102C JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x965 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x972 PUSH2 0x1045 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0xBA9 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0xA6E JUMPI PUSH2 0xBA9 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0xA80 DUP4 PUSH2 0x57F JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xA96 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0xB4F JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0xAFA JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xB64 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0xA56 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBC9 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xC92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC70 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC92 SWAP1 POP DUP3 PUSH2 0x1070 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x667 PUSH2 0x12E4 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xD48 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xDD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x171E PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE89 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF05 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF75 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1752 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF82 PUSH2 0x1045 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1004 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x101A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x1028 DUP3 PUSH2 0xD72 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x103E PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0x10D1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x12F9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x838B2520 PUSH32 0x0 PUSH32 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA0566E72 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP10 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP5 DUP7 AND PUSH1 0x24 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP5 AND PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0xC4 DUP3 ADD MSTORE PUSH32 0x3078000000000000000000000000000000000000000000000000000000000000 PUSH1 0xE4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST DUP2 PUSH2 0x1028 JUMPI PUSH2 0x1028 DUP2 PUSH2 0x14CF JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x13A8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x143D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x143D SWAP1 DUP5 SWAP1 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x14CA SWAP1 DUP5 SWAP1 PUSH2 0x14F9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x57C DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x160F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1562 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1525 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x15C4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x15C9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x15E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x714 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1607 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x12EB JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x16CB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x16F8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x16F8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x16F8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x16DD JUMP JUMPDEST POP PUSH2 0x1704 SWAP3 SWAP2 POP PUSH2 0x1708 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1704 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1709 JUMP INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x5822122032B577CAFE255B968523D7E91F990F1A SWAP3 DIV MLOAD 0xE7 0xE6 0xBC DUP13 0xEF PUSH11 0xE63FF4DD2E92BF64736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"908:1920:105:-:0;;;1188:441;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1548:5;1054:4:51;-1:-1:-1;;;;;1038:22:51;1030:31;;1467:6:105;1475:24;1501:11;1443:70;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;2049:46:46;;1073:14:51::1;::::0;-1:-1:-1;;;;;;1073:14:51;::::1;::::0;1569:9:105::2;:20:::0;;-1:-1:-1;;1569:20:105::2;;::::0;::::2;;::::0;;1599:23;;::::2;::::0;:7:::2;::::0;:23:::2;::::0;::::2;::::0;::::2;:::i;:::-;;1188:441:::0;;;;;;908:1920;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;908:1920:105;;;-1:-1:-1;908:1920:105;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;1301:1183:-1;;;;;;;1580:3;1568:9;1559:7;1555:23;1551:33;1548:2;;;-1:-1;;1587:12;1548:2;637:6;631:13;649:48;691:5;649:48;:::i;:::-;1639:89;;;;1765:2;;1849:9;1845:22;445:13;463:63;520:5;463:63;:::i;:::-;1914:2;1989:22;;249:13;1773:104;;-1:-1;267:58;249:13;267:58;:::i;:::-;2058:2;2108:22;;83:13;1922:99;;-1:-1;101:33;83:13;101:33;:::i;:::-;2177:3;2227:22;;1239:13;2066:74;;-1:-1;4802:10;4791:22;;6447:34;;6437:2;;-1:-1;;6485:12;6437:2;2317:3;2302:19;;2296:26;2186:73;;-1:-1;;;;;;2331:30;;;2328:2;;;-1:-1;;2364:12;2328:2;2451:6;2440:9;2436:22;;;823:3;816:4;808:6;804:17;800:27;790:2;;-1:-1;;831:12;790:2;871:6;865:13;2342:18;3947:6;3944:30;3941:2;;;-1:-1;;3977:12;3941:2;1914;3604:9;4050;4031:17;;-1:-1;;4027:33;3636:17;;;;3696:34;;;3732:22;;;3693:62;3690:2;;;-1:-1;;3758:12;3690:2;1914;3777:22;964:21;;;1064:16;;;;;1061:25;-1:-1;1058:2;;;-1:-1;;1089:12;1058:2;-1:-1;5533:10;;5549:101;5563:6;5560:1;5557:13;5549:101;;;5630:11;;;;;5624:18;5611:11;;;;;5604:39;5578:10;;;;5549:101;;;5665:6;5662:1;5659:13;5656:2;;;-1:-1;1765:2;5721:6;1040:5;5712:16;;5705:27;5656:2;2384:84;;;;;;;;1542:942;;;;;;;;:::o;2987:554::-;-1:-1;;;;;4664:54;;;2707:75;;4664:54;;;3444:2;3429:18;;2707:75;4664:54;;;3527:2;3512:18;;2562:37;3225:2;3210:18;;3196:345::o;5753:117::-;-1:-1;;;;;4664:54;;5812:35;;5802:2;;5861:1;;5851:12;5802:2;5796:74;:::o;:::-;908:1920:105;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3060":[{"length":32,"start":551}],"3611":[{"length":32,"start":801}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a35760003560e01c80638d928af811610076578063aaabadc51161005b578063aaabadc51461012b578063bf5fa77214610133578063ce3cc8bd14610148576100a3565b80638d928af81461010e578063a0566e7214610116576100a3565b80630ecaea73146100a857806339312dee146100d1578063851c1bb3146100d95780638759e6d1146100f9575b600080fd5b6100bb6100b6366004610778565b610168565b6040516100c89190610873565b60405180910390f35b6100bb610207565b6100ec6100e73660046107c3565b610223565b6040516100c8919061096c565b610101610276565b6040516100c891906109a1565b6100bb61031f565b61011e610343565b6040516100c89190610a49565b6100bb61034f565b61014661014136600461081f565b6103db565b005b61015b61015636600461075c565b61044e565b6040516100c89190610961565b600080610173610479565b6040517f81d6095600000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906381d60956906101cd9087908790600290600401610894565b600060405180830381600087803b1580156101e757600080fd5b505af11580156101fb573d6000803e3d6000fd5b50929695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610258929190610843565b6040516020818303038152906040528051906020012090505b919050565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f810184900484028201840190925281815292918301828280156103175780601f106102ec57610100808354040283529160200191610317565b820191906000526020600020905b8154815290600101906020018083116102fa57829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000090565b60035463ffffffff1690565b600061035961031f565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561039e57600080fd5b505afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190610803565b905090565b6103e361051f565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83161790556040517f7c1820748876489d9c02f32c788d21f7a0719b00e777eca80532dd5d77c481ce90610443908390610a49565b60405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60008054819061049e9073ffffffffffffffffffffffffffffffffffffffff16610568565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b600061054e6000357fffffffff0000000000000000000000000000000000000000000000000000000016610223565b905061056561055d823361061e565b6101916106bb565b50565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590610a12565b60405180910390fd5b600061062861034f565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161066493929190610975565b60206040518083038186803b15801561067c57600080fd5b505afa158015610690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b491906107a3565b9392505050565b816106c9576106c9816106cd565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610565917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b60006020828403121561076d578081fd5b81356106b481610a66565b6000806040838503121561078a578081fd5b823561079581610a66565b946020939093013593505050565b6000602082840312156107b4578081fd5b815180151581146106b4578182fd5b6000602082840312156107d4578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106b4578182fd5b600060208284031215610814578081fd5b81516106b481610a66565b600060208284031215610830578081fd5b813563ffffffff811681146106b4578182fd5b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60006060820173ffffffffffffffffffffffffffffffffffffffff8616835260208581850152606060408501528285546001808216600081146108de576001811461091a57610952565b607f600284041686527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316608089015260a088019350610952565b6002830480875261092a8a610a5a565b885b828110156109485781548b82016080015290840190870161092c565b8a01608001955050505b50919998505050505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6000602080835283518082850152825b818110156109cd578581018301518582016040015282016109b1565b818111156109de5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526016908201527f455243313136373a20637265617465206661696c656400000000000000000000604082015260600190565b63ffffffff91909116815260200190565b60009081526020902090565b73ffffffffffffffffffffffffffffffffffffffff8116811461056557600080fdfea2646970667358221220e24746db362b70ad2a4093f27f1f654d83f347aa4cef59e4a3502c26cc6bf27464736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xAAABADC5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0xBF5FA772 EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x148 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0xA0566E72 EQ PUSH2 0x116 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0xECAEA73 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x8759E6D1 EQ PUSH2 0xF9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x873 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBB PUSH2 0x207 JUMP JUMPDEST PUSH2 0xEC PUSH2 0xE7 CALLDATASIZE PUSH1 0x4 PUSH2 0x7C3 JUMP JUMPDEST PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x96C JUMP JUMPDEST PUSH2 0x101 PUSH2 0x276 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0xBB PUSH2 0x31F JUMP JUMPDEST PUSH2 0x11E PUSH2 0x343 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xA49 JUMP JUMPDEST PUSH2 0xBB PUSH2 0x34F JUMP JUMPDEST PUSH2 0x146 PUSH2 0x141 CALLDATASIZE PUSH1 0x4 PUSH2 0x81F JUMP JUMPDEST PUSH2 0x3DB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH2 0x156 CALLDATASIZE PUSH1 0x4 PUSH2 0x75C JUMP JUMPDEST PUSH2 0x44E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x961 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x173 PUSH2 0x479 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x81D6095600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x81D60956 SWAP1 PUSH2 0x1CD SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x4 ADD PUSH2 0x894 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x258 SWAP3 SWAP2 SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x317 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2EC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x317 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2FA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x359 PUSH2 0x31F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x803 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3E3 PUSH2 0x51F JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 AND PUSH4 0xFFFFFFFF DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x7C1820748876489D9C02F32C788D21F7A0719B00E777ECA80532DD5D77C481CE SWAP1 PUSH2 0x443 SWAP1 DUP4 SWAP1 PUSH2 0xA49 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x49E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x568 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54E PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x223 JUMP JUMPDEST SWAP1 POP PUSH2 0x565 PUSH2 0x55D DUP3 CALLER PUSH2 0x61E JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6BB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x271 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x615 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x628 PUSH2 0x34F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x664 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x975 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x690 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6B4 SWAP2 SWAP1 PUSH2 0x7A3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x6C9 JUMPI PUSH2 0x6C9 DUP2 PUSH2 0x6CD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x565 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x76D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6B4 DUP2 PUSH2 0xA66 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x78A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x795 DUP2 PUSH2 0xA66 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7B4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x6B4 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7D4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x6B4 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x814 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x6B4 DUP2 PUSH2 0xA66 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x830 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x6B4 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP4 MSTORE PUSH1 0x20 DUP6 DUP2 DUP6 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE DUP3 DUP6 SLOAD PUSH1 0x1 DUP1 DUP3 AND PUSH1 0x0 DUP2 EQ PUSH2 0x8DE JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x91A JUMPI PUSH2 0x952 JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP5 DIV AND DUP7 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP4 AND PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD SWAP4 POP PUSH2 0x952 JUMP JUMPDEST PUSH1 0x2 DUP4 DIV DUP1 DUP8 MSTORE PUSH2 0x92A DUP11 PUSH2 0xA5A JUMP JUMPDEST DUP9 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x948 JUMPI DUP2 SLOAD DUP12 DUP3 ADD PUSH1 0x80 ADD MSTORE SWAP1 DUP5 ADD SWAP1 DUP8 ADD PUSH2 0x92C JUMP JUMPDEST DUP11 ADD PUSH1 0x80 ADD SWAP6 POP POP POP JUMPDEST POP SWAP2 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x9CD JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x9B1 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x9DE JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x565 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE2 SELFBALANCE CHAINID 0xDB CALLDATASIZE 0x2B PUSH17 0xAD2A4093F27F1F654D83F347AA4CEF59E4 LOG3 POP 0x2C 0x26 0xCC PUSH12 0xF27464736F6C634300070100 CALLER ","sourceMap":"908:1920:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2319:239;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;2607:430:46:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1074:21:105:-;;;:::i;:::-;;;;;;;:::i;1158:79:51:-;;;:::i;1738:104:105:-;;;:::i;:::-;;;;;;;:::i;1297:109:51:-;;;:::i;2663:163:105:-;;;;;;:::i;:::-;;:::i;:::-;;1507:131:83;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2319:239:105:-;2399:7;2418:13;2434:9;:7;:9::i;:::-;2453:76;;;;;2418:25;;-1:-1:-1;2453:37:105;;;;;;:76;;2491:9;;2502:17;;2521:7;;2453:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2546:5:105;;2319:239;-1:-1:-1;;;;;;2319:239:105:o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;2607:430:46:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;;:::o;1074:21:105:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1158:79:51:-;1224:6;1158:79;:::o;1738:104:105:-;1826:9;;;;1738:104;:::o;1297:109:51:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;2663:163:105:-;2276:21:46;:19;:21::i;:::-;2750:9:105::1;:20:::0;;;::::1;;::::0;::::1;;::::0;;2785:34:::1;::::0;::::1;::::0;::::1;::::0;2750:20;;2785:34:::1;:::i;:::-;;;;;;;;2663:163:::0;:::o;1507:131:83:-;1605:26;;1582:4;1605:26;;;:19;:26;;;;;;;;;1507:131::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;2420:181:46:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:31;2524:8:46;:70::i;:::-;2420:181;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;1412:178:51;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1516:67;1412:178;-1:-1:-1;;;1412:178:51:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;865:241:-1;;969:2;957:9;948:7;944:23;940:32;937:2;;;-1:-1;;975:12;937:2;85:6;72:20;97:33;124:5;97:33;:::i;1113:366::-;;;1234:2;1222:9;1213:7;1209:23;1205:32;1202:2;;;-1:-1;;1240:12;1202:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1292:63;1392:2;1431:22;;;;660:20;;-1:-1;;;1196:283::o;1486:257::-;;1598:2;1586:9;1577:7;1573:23;1569:32;1566:2;;;-1:-1;;1604:12;1566:2;223:6;217:13;11993:5;9865:13;9858:21;11971:5;11968:32;11958:2;;-1:-1;;12004:12;1750:239;;1853:2;1841:9;1832:7;1828:23;1824:32;1821:2;;;-1:-1;;1859:12;1821:2;356:6;343:20;10042:66;12115:5;10031:78;12091:5;12088:34;12078:2;;-1:-1;;12126:12;1996:303;;2131:2;2119:9;2110:7;2106:23;2102:32;2099:2;;;-1:-1;;2137:12;2099:2;516:6;510:13;528:53;575:5;528:53;:::i;2306:239::-;;2409:2;2397:9;2388:7;2384:23;2380:32;2377:2;;;-1:-1;;2415:12;2377:2;809:6;796:20;10518:10;12525:5;10507:22;12501:5;12498:34;12488:2;;-1:-1;;12536:12;5462:387;2854:37;;;10042:66;10031:78;5713:2;5704:12;;3149:56;5813:11;;;5604:245::o;5856:222::-;10312:42;10301:54;;;;2623:37;;5983:2;5968:18;;5954:124::o;6085:526::-;;6285:2;6274:9;6270:18;10312:42;9781:5;10301:54;2630:3;2623:37;6449:2;2884:5;6449:2;6438:9;6434:18;2854:37;6285:2;6486;6475:9;6471:18;6464:48;-1:-1;4051:5;4045:12;4085:1;;4074:9;4070:17;4098:1;4093:248;;;;4352:1;4347:402;;;;4063:686;;4093:248;4171:4;4167:1;4156:9;4152:17;4148:28;9640:3;9633:19;4295:9;4284;4280:25;9673:14;6274:9;9673:14;4268:38;4320:14;6274:9;4320:14;4313:21;;4093:248;;4347:402;4416:1;4405:9;4401:17;9645:6;9640:3;9633:19;4525:38;4557:5;4525:38;:::i;:::-;-1:-1;4587:130;4601:6;4598:1;4595:13;4587:130;;;4660:14;;4647:11;;;9673:14;4647:11;4640:35;4694:15;;;;4616:12;;4587:130;;;4731:11;;9673:14;4731:11;;-1:-1;;;4063:686;-1:-1;6518:83;;6256:355;-1:-1;;;;;;;;;6256:355::o;6618:210::-;9865:13;;9858:21;2737:34;;6739:2;6724:18;;6710:118::o;6835:222::-;2854:37;;;6962:2;6947:18;;6933:124::o;7064:444::-;2854:37;;;10312:42;10301:54;;;7411:2;7396:18;;2623:37;10301:54;7494:2;7479:18;;2623:37;7247:2;7232:18;;7218:290::o;8043:310::-;;8190:2;;8211:17;8204:47;3698:5;9488:12;9645:6;8190:2;8179:9;8175:18;9633:19;-1:-1;11318:101;11332:6;11329:1;11326:13;11318:101;;;11399:11;;;;;11393:18;11380:11;;;9673:14;11380:11;11373:39;11347:10;;11318:101;;;11434:6;11431:1;11428:13;11425:2;;;-1:-1;9673:14;11490:6;8179:9;11481:16;;11474:27;11425:2;-1:-1;11771:2;11751:14;11767:7;11747:28;3856:39;;;;9673:14;3856:39;;8161:192;-1:-1;;;8161:192::o;8360:416::-;8560:2;8574:47;;;4988:2;8545:18;;;9633:19;5024:24;9673:14;;;5004:45;5068:12;;;8531:245::o;8783:220::-;10518:10;10507:22;;;;5284:49;;8909:2;8894:18;;8880:123::o;9235:158::-;;9330:14;;;9372:4;9359:18;;;9289:104::o;11788:117::-;10312:42;11875:5;10301:54;11850:5;11847:35;11837:2;;11896:1;;11886:12"},"methodIdentifiers":{"NETWORK()":"8759e6d1","create(address,uint256)":"0ecaea73","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getGaugeImplementation()":"39312dee","getOptimismGasLimit()":"a0566e72","getVault()":"8d928af8","isGaugeFromFactory(address)":"ce3cc8bd","setOptimismGasLimit(uint32)":"bf5fa772"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"optimismL1StandardBridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"optimismBal\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"targetNetwork\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"OptimismGasLimitModified\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"NETWORK\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOptimismGasLimit\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"setOptimismGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Optimism.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"getOptimismGasLimit()\":{\"notice\":\"Returns the gas limit for the Optimism side of the bridging transaction\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"},\"setOptimismGasLimit(uint32)\":{\"notice\":\"Set the gas limit for the Optimism side of the bridging transaction\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/optimistic/OptimisticRootGaugeFactory.sol\":\"OptimisticRootGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\":{\"keccak256\":\"0x31b489cbd755b3c789115af4cf3d7af2da15f59030345ac29ecf26a033fc806a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2cc164ca032440222b7984aebbad6a46a6c82eef33564d1c6d78408bafab9934\",\"dweb:/ipfs/QmdgixtcWUX8CFhrTkUiAAmSkpMG2FsZnK18QywDhFoFcp\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOptimismGasLimitProvider.sol\":{\"keccak256\":\"0x1208fef15dbb96160469c256a19f69d7f7f4798882a3504252ad25f89e36afcb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://556fc28a88f4798c5dd23cb4b25d8640bb0175e85d6a3093ec185e1d096e2924\",\"dweb:/ipfs/QmTyxuE1mPRSbn6XHm52qcHj78QrMUpXNHUUF3ZdENtQXU\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/optimistic/OptimisticRootGauge.sol\":{\"keccak256\":\"0x49a4656b91215987409a8f933c1fc9dd11782866ac7ffd220bbeb2af8b0a6e49\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a6fbcd6e8b58c267106bcbf54a0d8d08d1e00a631f14e746146c66cd19e58e2e\",\"dweb:/ipfs/QmUBPQfUgBUA5V6frWox6zCQWMJsQFZABARgte15MXM5zM\"]},\"contracts/gauges/optimistic/OptimisticRootGaugeFactory.sol\":{\"keccak256\":\"0x2effb8012be2216f347ba6dda70f472454e61d1bbb312473d5210031774b0231\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b359ac9a83c52e88a8c6cb0edb13ec6b67c57df23bda4dba9bb22de3745e1770\",\"dweb:/ipfs/QmcodHXmN8vwSt8qotWFDARFhpeuL3wnYms4qYLxBkX2pA\"]}},\"version\":1}"}},"contracts/gauges/polygon/PolygonRootGauge.sol":{"IPolygonRootChainManager":{"abi":[{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"bytes","name":"depositData","type":"bytes"}],"name":"depositFor","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"depositFor(address,address,bytes)":"e3dec8fb"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"depositData\",\"type\":\"bytes\"}],\"name\":\"depositFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/polygon/PolygonRootGauge.sol\":\"IPolygonRootChainManager\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/polygon/PolygonRootGauge.sol\":{\"keccak256\":\"0x418782ff451d6b456c7034f4e4a7422bc5271d1b3176e81c2e1674ed7157c996\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94feb7b4d835cc765583eb0cb6b0536c1156df31e6f511ee35b91d29a0911d31\",\"dweb:/ipfs/QmUqgKGSoDV8vEtmspPVyszFGz6PcbhUuDzbG2SwssKwWx\"]}},\"version\":1}"},"PolygonRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IPolygonRootChainManager","name":"polygonRootChainManager","type":"address"},{"internalType":"address","name":"polygonERC20Predicate","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPolygonBridge","outputs":[{"internalType":"contract IPolygonRootChainManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPolygonERC20Predicate","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101c06040523480156200001257600080fd5b506040516200191338038062001913833981810160405260608110156200003857600080fd5b50805160208083015160409384015160016000908155855163e6dec36f60e01b81529551949592949193869391926001600160a01b0385169263e6dec36f926004808301939192829003018186803b1580156200009457600080fd5b505afa158015620000a9573d6000803e3d6000fd5b505050506040513d6020811015620000c057600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d60208110156200013557600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017e57600080fd5b505afa15801562000193573d6000803e3d6000fd5b505050506040513d6020811015620001aa57600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021b57600080fd5b505afa15801562000230573d6000803e3d6000fd5b505050506040513d60208110156200024757600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029b57600080fd5b505afa158015620002b0573d6000803e3d6000fd5b505050506040513d6020811015620002c757600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d60208110156200033a57600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b505161016052505060001960025550506001600160601b0319606092831b811661018052911b166101a0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c6114866200048d60003980610b6f5280610cb9525080610b4b5280610d7d5250806108585250806108375250806107ba52806108a45250806103c3528061057f528061065f5280610a93525080610462528061074852508061099a525080610eb45280610fb1525080610c975280610d4252506114866000f3fe6080604052600436106100e85760003560e01c80639f8676711161008a578063cd6dc68711610059578063cd6dc68714610298578063d34fb267146102de578063fe022cc9146102f3578063fe33859e14610308576100e8565b80639f86767114610251578063ab8f094514610266578063b02452251461027b578063c2c4c5c114610290576100e8565b80631b88094d116100c65780631b88094d146101955780634b820093146101d357806383f5c39b146102275780639c868ac01461023c576100e8565b806309400707146100ed57806310d3eb041461013f57806314e956f51461016b575b600080fd5b3480156100f957600080fd5b5061012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661031d565b60408051918252519081900360200190f35b34801561014b57600080fd5b506101696004803603602081101561016257600080fd5b50356103ab565b005b34801561017757600080fd5b5061012d6004803603602081101561018e57600080fd5b503561045b565b3480156101a157600080fd5b506101aa610529565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101df57600080fd5b50610213600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610546565b604080519115158252519081900360200190f35b34801561023357600080fd5b5061012d61054c565b34801561024857600080fd5b50610213610552565b34801561025d57600080fd5b5061012d61055b565b34801561027257600080fd5b50610169610567565b34801561028757600080fd5b5061012d610638565b61021361063d565b3480156102a457600080fd5b50610169600480360360408110156102bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2a565b3480156102ea57600080fd5b50610169610a7b565b3480156102ff57600080fd5b506101aa610b49565b34801561031457600080fd5b506101aa610b6d565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461044f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045881610b91565b50565b60006105237f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104ef57600080fd5b505afa158015610503573d6000803e3d6000fd5b505050506040513d602081101561051957600080fd5b5051600654610c2d565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461060b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b6000610647610c39565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106f8610c52565b905080821015610a1c57604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561078f57600080fd5b505af11580156107a3573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561092f57848111156107f45761092f565b62093a8081026000806108068361045b565b905082851015801561081c57508262093a800185105b156108d557828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088057fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ea9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107dc565b5060028490556004805483019055811580159061094f575060055460ff16155b15610a1857604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e257600080fd5b505af11580156109f6573d6000803e3d6000fd5b505050506040513d6020811015610a0c57600080fd5b50610a18905082610c7d565b5050505b600192505050610543610e3a565b610a3381610e41565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b1f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b670de0b6b3a7640000811115610bf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113f96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c4b60026000541415610190611053565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610cde73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611061565b600754604080516020808201859052825180830382018152828401938490527fe3dec8fb0000000000000000000000000000000000000000000000000000000090935273ffffffffffffffffffffffffffffffffffffffff938416604483018181527f00000000000000000000000000000000000000000000000000000000000000008087166064860152606060848601908152865160a487015286517f00000000000000000000000000000000000000000000000000000000000000009098169763e3dec8fb9794969295919260c4019185019080838360005b83811015610dd1578181015183820152602001610db9565b50505050905090810190601f168015610dfe5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610e1f57600080fd5b505af1158015610e33573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610eb057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1857600080fd5b505afa158015610f2c573d6000803e3d6000fd5b505050506040513d6020811015610f4257600080fd5b5051905080610f9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061142d6024913960400191505060405180910390fd5b6001819055610fa9610c52565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561101757600080fd5b505af115801561102b573d6000803e3d6000fd5b505050506040513d602081101561104157600080fd5b505160035561104f82610b91565b5050565b8161104f5761104f81611237565b80158015906111105750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156110e157600080fd5b505afa1580156110f5573d6000803e3d6000fd5b505050506040513d602081101561110b57600080fd5b505115155b156111a5576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111a5908490611261565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611232908490611261565b505050565b610458817f42414c000000000000000000000000000000000000000000000000000000000061137d565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112ca57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161128d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461132c576040519150601f19603f3d011682016040523d82523d6000602084013e611331565b606091505b50915091506000821415611349573d6000803e3d6000fd5b61137781516000148061136f575081806020019051602081101561136c57600080fd5b50515b6101a2611053565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212201dc7239744aba90b833a63fd22cc413726251c81a392d512e27f8749515e0aed64736f6c63430007010033","opcodes":"PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1913 CODESIZE SUB DUP1 PUSH3 0x1913 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE DUP6 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 MLOAD SWAP5 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 DUP7 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x11E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x230 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x323 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP2 SHL AND PUSH2 0x1A0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1486 PUSH3 0x48D PUSH1 0x0 CODECOPY DUP1 PUSH2 0xB6F MSTORE DUP1 PUSH2 0xCB9 MSTORE POP DUP1 PUSH2 0xB4B MSTORE DUP1 PUSH2 0xD7D MSTORE POP DUP1 PUSH2 0x858 MSTORE POP DUP1 PUSH2 0x837 MSTORE POP DUP1 PUSH2 0x7BA MSTORE DUP1 PUSH2 0x8A4 MSTORE POP DUP1 PUSH2 0x3C3 MSTORE DUP1 PUSH2 0x57F MSTORE DUP1 PUSH2 0x65F MSTORE DUP1 PUSH2 0xA93 MSTORE POP DUP1 PUSH2 0x462 MSTORE DUP1 PUSH2 0x748 MSTORE POP DUP1 PUSH2 0x99A MSTORE POP DUP1 PUSH2 0xEB4 MSTORE DUP1 PUSH2 0xFB1 MSTORE POP DUP1 PUSH2 0xC97 MSTORE DUP1 PUSH2 0xD42 MSTORE POP PUSH2 0x1486 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xCD6DC687 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0xFE022CC9 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xFE33859E EQ PUSH2 0x308 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x290 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x23C JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3AB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x45B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x529 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x546 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x552 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x55B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0x567 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x638 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x63D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0xA7B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0xB49 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0xB6D JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x44F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x458 DUP2 PUSH2 0xB91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x523 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x503 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC2D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x60B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x647 PUSH2 0xC39 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6F8 PUSH2 0xC52 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x78F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x92F JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F4 JUMPI PUSH2 0x92F JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x806 DUP4 PUSH2 0x45B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x81C JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D5 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x880 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EA SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7DC JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x94F JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA18 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA18 SWAP1 POP DUP3 PUSH2 0xC7D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x543 PUSH2 0xE3A JUMP JUMPDEST PUSH2 0xA33 DUP2 PUSH2 0xE41 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB1F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13F9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC4B PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1053 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xCDE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1061 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE DUP3 DUP5 ADD SWAP4 DUP5 SWAP1 MSTORE PUSH32 0xE3DEC8FB00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x44 DUP4 ADD DUP2 DUP2 MSTORE PUSH32 0x0 DUP1 DUP8 AND PUSH1 0x64 DUP7 ADD MSTORE PUSH1 0x60 PUSH1 0x84 DUP7 ADD SWAP1 DUP2 MSTORE DUP7 MLOAD PUSH1 0xA4 DUP8 ADD MSTORE DUP7 MLOAD PUSH32 0x0 SWAP1 SWAP9 AND SWAP8 PUSH4 0xE3DEC8FB SWAP8 SWAP5 SWAP7 SWAP3 SWAP6 SWAP2 SWAP3 PUSH1 0xC4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDD1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDB9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDFE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE33 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xEB0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x142D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xFA9 PUSH2 0xC52 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x102B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1041 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x104F DUP3 PUSH2 0xB91 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x104F JUMPI PUSH2 0x104F DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1110 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x11A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x11A5 SWAP1 DUP5 SWAP1 PUSH2 0x1261 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1232 SWAP1 DUP5 SWAP1 PUSH2 0x1261 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x458 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x137D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x12CA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x128D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x132C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1331 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1349 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1377 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x136F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1053 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212201DC7239744ABA90B833A63FD22CC4137 0x26 0x25 SHR DUP2 LOG3 SWAP3 0xD5 SLT 0xE2 PUSH32 0x8749515E0AED64736F6C63430007010033000000000000000000000000000000 ","sourceMap":"987:1629:106:-:0;;;1334:300;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1334:300:106;;;;;;;;;;;;2070:1:63;2175:7;:22;;;2339:30:89;;-1:-1:-1;2339:30:89;;;;1334:300:106;;;;;;;;2175:7:63;;-1:-1:-1;2339:28:89;;;-1:-1:-1;;2339:30:89;;;;;1334:300:106;;2339:30:89;;;;;:28;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2339:30:89;2398:29;;;-1:-1:-1;2398:29:89;;;;2339:30;;-1:-1:-1;2380:15:89;;-1:-1:-1;2398:27:89;;;-1:-1:-1;;2398:29:89;;;;;2339:30;;2398:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2398:29:89;2472:27;;;-1:-1:-1;2472:27:89;;;;2398:29;;-1:-1:-1;2437:32:89;;-1:-1:-1;2472:25:89;;;;;:27;;;;;2398:29;;2472:27;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2472:27:89;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2472:27;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;2472:27;;2665:23;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2665:23:89;2644:44;;-1:-1:-1;2644:44:89;;;2722:32;;;-1:-1:-1;2722:32:89;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;2665:23;;2722:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2722:32:89;2699:55;;2794:39;;;-1:-1:-1;2794:39:89;;;;-1:-1:-1;2794:37:89;;;-1:-1:-1;;2794:39:89;;;;;2722:32;;2794:39;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:39:89;2764:69;;2863:29;;;-1:-1:-1;2863:29:89;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;2794:39;;2863:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2863:29:89;2843:49;;-1:-1:-1;;;;3053:7:89;:27;-1:-1:-1;;;;;;;;1521:50:106::1;::::0;;;;;::::1;::::0;1581:46;;;::::1;::::0;-1:-1:-1;987:1629:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":3223},{"length":32,"start":3394}],"14642":[{"length":32,"start":3764},{"length":32,"start":4017}],"14644":[{"length":32,"start":2458}],"14646":[{"length":32,"start":1122},{"length":32,"start":1864}],"14648":[{"length":32,"start":963},{"length":32,"start":1407},{"length":32,"start":1631},{"length":32,"start":2707}],"14656":[{"length":32,"start":1978},{"length":32,"start":2212}],"14658":[{"length":32,"start":2103}],"14660":[{"length":32,"start":2136}],"17936":[{"length":32,"start":2891},{"length":32,"start":3453}],"17938":[{"length":32,"start":2927},{"length":32,"start":3257}]},"linkReferences":{},"object":"6080604052600436106100e85760003560e01c80639f8676711161008a578063cd6dc68711610059578063cd6dc68714610298578063d34fb267146102de578063fe022cc9146102f3578063fe33859e14610308576100e8565b80639f86767114610251578063ab8f094514610266578063b02452251461027b578063c2c4c5c114610290576100e8565b80631b88094d116100c65780631b88094d146101955780634b820093146101d357806383f5c39b146102275780639c868ac01461023c576100e8565b806309400707146100ed57806310d3eb041461013f57806314e956f51461016b575b600080fd5b3480156100f957600080fd5b5061012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661031d565b60408051918252519081900360200190f35b34801561014b57600080fd5b506101696004803603602081101561016257600080fd5b50356103ab565b005b34801561017757600080fd5b5061012d6004803603602081101561018e57600080fd5b503561045b565b3480156101a157600080fd5b506101aa610529565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101df57600080fd5b50610213600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610546565b604080519115158252519081900360200190f35b34801561023357600080fd5b5061012d61054c565b34801561024857600080fd5b50610213610552565b34801561025d57600080fd5b5061012d61055b565b34801561027257600080fd5b50610169610567565b34801561028757600080fd5b5061012d610638565b61021361063d565b3480156102a457600080fd5b50610169600480360360408110156102bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2a565b3480156102ea57600080fd5b50610169610a7b565b3480156102ff57600080fd5b506101aa610b49565b34801561031457600080fd5b506101aa610b6d565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461044f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045881610b91565b50565b60006105237f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104ef57600080fd5b505afa158015610503573d6000803e3d6000fd5b505050506040513d602081101561051957600080fd5b5051600654610c2d565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461060b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b6000610647610c39565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106f8610c52565b905080821015610a1c57604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561078f57600080fd5b505af11580156107a3573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561092f57848111156107f45761092f565b62093a8081026000806108068361045b565b905082851015801561081c57508262093a800185105b156108d557828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088057fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ea9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107dc565b5060028490556004805483019055811580159061094f575060055460ff16155b15610a1857604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e257600080fd5b505af11580156109f6573d6000803e3d6000fd5b505050506040513d6020811015610a0c57600080fd5b50610a18905082610c7d565b5050505b600192505050610543610e3a565b610a3381610e41565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b1f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b670de0b6b3a7640000811115610bf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113f96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c4b60026000541415610190611053565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610cde73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611061565b600754604080516020808201859052825180830382018152828401938490527fe3dec8fb0000000000000000000000000000000000000000000000000000000090935273ffffffffffffffffffffffffffffffffffffffff938416604483018181527f00000000000000000000000000000000000000000000000000000000000000008087166064860152606060848601908152865160a487015286517f00000000000000000000000000000000000000000000000000000000000000009098169763e3dec8fb9794969295919260c4019185019080838360005b83811015610dd1578181015183820152602001610db9565b50505050905090810190601f168015610dfe5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610e1f57600080fd5b505af1158015610e33573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610eb057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1857600080fd5b505afa158015610f2c573d6000803e3d6000fd5b505050506040513d6020811015610f4257600080fd5b5051905080610f9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061142d6024913960400191505060405180910390fd5b6001819055610fa9610c52565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561101757600080fd5b505af115801561102b573d6000803e3d6000fd5b505050506040513d602081101561104157600080fd5b505160035561104f82610b91565b5050565b8161104f5761104f81611237565b80158015906111105750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156110e157600080fd5b505afa1580156110f5573d6000803e3d6000fd5b505050506040513d602081101561110b57600080fd5b505115155b156111a5576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111a5908490611261565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611232908490611261565b505050565b610458817f42414c000000000000000000000000000000000000000000000000000000000061137d565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112ca57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161128d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461132c576040519150601f19603f3d011682016040523d82523d6000602084013e611331565b606091505b50915091506000821415611349573d6000803e3d6000fd5b61137781516000148061136f575081806020019051602081101561136c57600080fd5b50515b6101a2611053565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212201dc7239744aba90b833a63fd22cc413726251c81a392d512e27f8749515e0aed64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xCD6DC687 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0xFE022CC9 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xFE33859E EQ PUSH2 0x308 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x290 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x23C JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3AB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x45B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x529 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x546 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x552 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x55B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0x567 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x638 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x63D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0xA7B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0xB49 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0xB6D JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x44F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x458 DUP2 PUSH2 0xB91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x523 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x503 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC2D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x60B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x647 PUSH2 0xC39 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6F8 PUSH2 0xC52 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x78F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x92F JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F4 JUMPI PUSH2 0x92F JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x806 DUP4 PUSH2 0x45B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x81C JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D5 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x880 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EA SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7DC JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x94F JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA18 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA18 SWAP1 POP DUP3 PUSH2 0xC7D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x543 PUSH2 0xE3A JUMP JUMPDEST PUSH2 0xA33 DUP2 PUSH2 0xE41 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB1F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13F9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC4B PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1053 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xCDE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1061 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE DUP3 DUP5 ADD SWAP4 DUP5 SWAP1 MSTORE PUSH32 0xE3DEC8FB00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x44 DUP4 ADD DUP2 DUP2 MSTORE PUSH32 0x0 DUP1 DUP8 AND PUSH1 0x64 DUP7 ADD MSTORE PUSH1 0x60 PUSH1 0x84 DUP7 ADD SWAP1 DUP2 MSTORE DUP7 MLOAD PUSH1 0xA4 DUP8 ADD MSTORE DUP7 MLOAD PUSH32 0x0 SWAP1 SWAP9 AND SWAP8 PUSH4 0xE3DEC8FB SWAP8 SWAP5 SWAP7 SWAP3 SWAP6 SWAP2 SWAP3 PUSH1 0xC4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDD1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDB9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDFE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE33 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xEB0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x142D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xFA9 PUSH2 0xC52 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x102B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1041 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x104F DUP3 PUSH2 0xB91 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x104F JUMPI PUSH2 0x104F DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1110 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x11A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x11A5 SWAP1 DUP5 SWAP1 PUSH2 0x1261 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1232 SWAP1 DUP5 SWAP1 PUSH2 0x1261 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x458 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x137D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x12CA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x128D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x132C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1331 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1349 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1377 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x136F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1053 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212201DC7239744ABA90B833A63FD22CC4137 0x26 0x25 SHR DUP2 LOG3 SWAP3 0xD5 SLT 0xE2 PUSH32 0x8749515E0AED64736F6C63430007010033000000000000000000000000000000 ","sourceMap":"987:1629:106:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6895:191:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6895:191:89;;;;:::i;:::-;;;;;;;;;;;;;;;;7513:214;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7513:214:89;;:::i;:::-;;8159:199;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:199:89;;:::i;1873:99:106:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6789:100:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6789:100:89;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8038:115;;;;;;;;;;;;;:::i;7092:92::-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;6394:104::-;;;;;;;;;;;;;:::i;3697:2655::-;;;:::i;1640:227:106:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1640:227:106;;;;;;;;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;1978:125:106:-;;;;;;;;;;;;;:::i;2109:114::-;;;;;;;;;;;;;:::i;6895:191:89:-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8271:59:89;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;1873:99:106:-;1955:10;;;;1873:99;;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;8038:115::-;8128:18;;8038:115;:::o;7092:92::-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6394:104::-;6464:7;6394:104;:::o;3697:2655::-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;;4042:4:::1;4000:48;::::0;::::1;::::0;;;:33:::1;:16;:33;::::0;::::1;::::0;:48;;;;;-1:-1:-1;;4000:48:89;;;;;;;-1:-1:-1;4000:33:89;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5978:38;::::0;;;;;;;5989:10;;5978:38:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;;6246:4:::1;6225:27;::::0;::::1;::::0;;;:12:::1;:7;:12;::::0;::::1;::::0;:27;;;;;::::1;::::0;;;;;;;;-1:-1:-1;6225:12:89;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6270:29:89::1;::::0;-1:-1:-1;6286:12:89;6270:15:::1;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;1640:227:106:-;1787:40;1809:17;1787:21;:40::i;:::-;-1:-1:-1;1838:10:106;:22;;;;;;;;;;;;;;;1640:227::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7483:9;:17;;;;;;7350:157::o;1978:125:106:-;2072:24;1978:125;:::o;2109:114::-;2194:22;2109:114;:::o;7733:299:89:-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7929:18;:38;;;7982:43;;;;;;;;;;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;2229:385:106:-;2386:57;:21;:9;:21;2408:22;2432:10;2386:21;:57::i;:::-;2561:10;;2584:22;;;;;;;;;;;;;;;;;;;;;;;;;;2525:82;;;;:35;2561:10;;;2525:82;;;;;;2573:9;2525:82;;;;;;;;;;;;;;;;;;;;;;:24;:35;;;;;;2561:10;;2573:9;;2525:82;;;;;;;;;;;-1:-1:-1;2525:82:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2229:385;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3428:18:89;;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3601:33:89;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;;1256:4;1232:43;;;;:15;:43;;;;;;;;;:15;;;;;;:43;;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1232:43:64;:48;;1218:62;1214:183;;;1332:53;;;;;;;;;;1383:1;1332:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:22;1332:53;;;1296:90;;1324:5;;1296:19;:90::i;:::-;1443:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1466:22;1443:57;;;1407:94;;1435:5;;1407:19;:94::i;:::-;1001:507;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:64;3143:56;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getPolygonBridge()":"fe022cc9","getPolygonERC20Predicate()":"fe33859e","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IPolygonRootChainManager\",\"name\":\"polygonRootChainManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"polygonERC20Predicate\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPolygonBridge\",\"outputs\":[{\"internalType\":\"contract IPolygonRootChainManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPolygonERC20Predicate\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/polygon/PolygonRootGauge.sol\":\"PolygonRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/polygon/PolygonRootGauge.sol\":{\"keccak256\":\"0x418782ff451d6b456c7034f4e4a7422bc5271d1b3176e81c2e1674ed7157c996\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94feb7b4d835cc765583eb0cb6b0536c1156df31e6f511ee35b91d29a0911d31\",\"dweb:/ipfs/QmUqgKGSoDV8vEtmspPVyszFGz6PcbhUuDzbG2SwssKwWx\"]}},\"version\":1}"}},"contracts/gauges/polygon/PolygonRootGaugeFactory.sol":{"PolygonRootGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IPolygonRootChainManager","name":"polygonRootChainManager","type":"address"},{"internalType":"address","name":"polygonERC20Predicate","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051611e51380380611e5183398101604081905261002f9161009d565b82828260405161003e90610090565b61004a939291906100e9565b604051809103906000f080158015610066573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905550610124915050565b6119138061053e83390190565b6000806000606084860312156100b1578283fd5b83516100bc8161010c565b60208501519093506100cd8161010c565b60408501519092506100de8161010c565b809150509250925092565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b038116811461012157600080fd5b50565b61040b806101336000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea26469706673582212201a7bd22332439b7fab0fc7651a4bc3291ab2e0f7fedd5c6e63baeec14e55e14064736f6c634300070100336101c06040523480156200001257600080fd5b506040516200191338038062001913833981810160405260608110156200003857600080fd5b50805160208083015160409384015160016000908155855163e6dec36f60e01b81529551949592949193869391926001600160a01b0385169263e6dec36f926004808301939192829003018186803b1580156200009457600080fd5b505afa158015620000a9573d6000803e3d6000fd5b505050506040513d6020811015620000c057600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d60208110156200013557600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017e57600080fd5b505afa15801562000193573d6000803e3d6000fd5b505050506040513d6020811015620001aa57600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021b57600080fd5b505afa15801562000230573d6000803e3d6000fd5b505050506040513d60208110156200024757600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029b57600080fd5b505afa158015620002b0573d6000803e3d6000fd5b505050506040513d6020811015620002c757600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d60208110156200033a57600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b505161016052505060001960025550506001600160601b0319606092831b811661018052911b166101a0525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c6114866200048d60003980610b6f5280610cb9525080610b4b5280610d7d5250806108585250806108375250806107ba52806108a45250806103c3528061057f528061065f5280610a93525080610462528061074852508061099a525080610eb45280610fb1525080610c975280610d4252506114866000f3fe6080604052600436106100e85760003560e01c80639f8676711161008a578063cd6dc68711610059578063cd6dc68714610298578063d34fb267146102de578063fe022cc9146102f3578063fe33859e14610308576100e8565b80639f86767114610251578063ab8f094514610266578063b02452251461027b578063c2c4c5c114610290576100e8565b80631b88094d116100c65780631b88094d146101955780634b820093146101d357806383f5c39b146102275780639c868ac01461023c576100e8565b806309400707146100ed57806310d3eb041461013f57806314e956f51461016b575b600080fd5b3480156100f957600080fd5b5061012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661031d565b60408051918252519081900360200190f35b34801561014b57600080fd5b506101696004803603602081101561016257600080fd5b50356103ab565b005b34801561017757600080fd5b5061012d6004803603602081101561018e57600080fd5b503561045b565b3480156101a157600080fd5b506101aa610529565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101df57600080fd5b50610213600480360360208110156101f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610546565b604080519115158252519081900360200190f35b34801561023357600080fd5b5061012d61054c565b34801561024857600080fd5b50610213610552565b34801561025d57600080fd5b5061012d61055b565b34801561027257600080fd5b50610169610567565b34801561028757600080fd5b5061012d610638565b61021361063d565b3480156102a457600080fd5b50610169600480360360408110156102bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2a565b3480156102ea57600080fd5b50610169610a7b565b3480156102ff57600080fd5b506101aa610b49565b34801561031457600080fd5b506101aa610b6d565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461044f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045881610b91565b50565b60006105237f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104ef57600080fd5b505afa158015610503573d6000803e3d6000fd5b505050506040513d602081101561051957600080fd5b5051600654610c2d565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461060b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b6000610647610c39565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106f8610c52565b905080821015610a1c57604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561078f57600080fd5b505af11580156107a3573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561092f57848111156107f45761092f565b62093a8081026000806108068361045b565b905082851015801561081c57508262093a800185105b156108d557828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088057fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ea9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107dc565b5060028490556004805483019055811580159061094f575060055460ff16155b15610a1857604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e257600080fd5b505af11580156109f6573d6000803e3d6000fd5b505050506040513d6020811015610a0c57600080fd5b50610a18905082610c7d565b5050505b600192505050610543610e3a565b610a3381610e41565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b1f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b670de0b6b3a7640000811115610bf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113f96034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c4b60026000541415610190611053565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610cde73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611061565b600754604080516020808201859052825180830382018152828401938490527fe3dec8fb0000000000000000000000000000000000000000000000000000000090935273ffffffffffffffffffffffffffffffffffffffff938416604483018181527f00000000000000000000000000000000000000000000000000000000000000008087166064860152606060848601908152865160a487015286517f00000000000000000000000000000000000000000000000000000000000000009098169763e3dec8fb9794969295919260c4019185019080838360005b83811015610dd1578181015183820152602001610db9565b50505050905090810190601f168015610dfe5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610e1f57600080fd5b505af1158015610e33573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610eb057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1857600080fd5b505afa158015610f2c573d6000803e3d6000fd5b505050506040513d6020811015610f4257600080fd5b5051905080610f9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061142d6024913960400191505060405180910390fd5b6001819055610fa9610c52565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561101757600080fd5b505af115801561102b573d6000803e3d6000fd5b505050506040513d602081101561104157600080fd5b505160035561104f82610b91565b5050565b8161104f5761104f81611237565b80158015906111105750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156110e157600080fd5b505afa1580156110f5573d6000803e3d6000fd5b505050506040513d602081101561110b57600080fd5b505115155b156111a5576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111a5908490611261565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611232908490611261565b505050565b610458817f42414c000000000000000000000000000000000000000000000000000000000061137d565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112ca57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161128d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461132c576040519150601f19603f3d011682016040523d82523d6000602084013e611331565b606091505b50915091506000821415611349573d6000803e3d6000fd5b61137781516000148061136f575081806020019051602081101561136c57600080fd5b50515b6101a2611053565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212201dc7239744aba90b833a63fd22cc413726251c81a392d512e27f8749515e0aed64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1E51 CODESIZE SUB DUP1 PUSH2 0x1E51 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x9D JUMP JUMPDEST DUP3 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x3E SWAP1 PUSH2 0x90 JUMP JUMPDEST PUSH2 0x4A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x66 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x124 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1913 DUP1 PUSH2 0x53E DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xB1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0xBC DUP2 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0xCD DUP2 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0xDE DUP2 PUSH2 0x10C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x40B DUP1 PUSH2 0x133 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BYTE PUSH28 0xD22332439B7FAB0FC7651A4BC3291AB2E0F7FEDD5C6E63BAEEC14E55 0xE1 BLOCKHASH PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1913 CODESIZE SUB DUP1 PUSH3 0x1913 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE DUP6 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 MLOAD SWAP5 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 DUP7 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x11E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x230 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x323 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP2 SHL AND PUSH2 0x1A0 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1486 PUSH3 0x48D PUSH1 0x0 CODECOPY DUP1 PUSH2 0xB6F MSTORE DUP1 PUSH2 0xCB9 MSTORE POP DUP1 PUSH2 0xB4B MSTORE DUP1 PUSH2 0xD7D MSTORE POP DUP1 PUSH2 0x858 MSTORE POP DUP1 PUSH2 0x837 MSTORE POP DUP1 PUSH2 0x7BA MSTORE DUP1 PUSH2 0x8A4 MSTORE POP DUP1 PUSH2 0x3C3 MSTORE DUP1 PUSH2 0x57F MSTORE DUP1 PUSH2 0x65F MSTORE DUP1 PUSH2 0xA93 MSTORE POP DUP1 PUSH2 0x462 MSTORE DUP1 PUSH2 0x748 MSTORE POP DUP1 PUSH2 0x99A MSTORE POP DUP1 PUSH2 0xEB4 MSTORE DUP1 PUSH2 0xFB1 MSTORE POP DUP1 PUSH2 0xC97 MSTORE DUP1 PUSH2 0xD42 MSTORE POP PUSH2 0x1486 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xCD6DC687 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0xFE022CC9 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xFE33859E EQ PUSH2 0x308 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x290 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x23C JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3AB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x45B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x529 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x546 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x54C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x213 PUSH2 0x552 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x55B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0x567 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12D PUSH2 0x638 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x63D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x169 PUSH2 0xA7B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0xB49 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0xB6D JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x44F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x458 DUP2 PUSH2 0xB91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x523 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x503 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xC2D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x60B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x647 PUSH2 0xC39 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6F8 PUSH2 0xC52 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x78F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x92F JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F4 JUMPI PUSH2 0x92F JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x806 DUP4 PUSH2 0x45B JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x81C JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D5 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x880 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EA SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7DC JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x94F JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA18 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA18 SWAP1 POP DUP3 PUSH2 0xC7D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x543 PUSH2 0xE3A JUMP JUMPDEST PUSH2 0xA33 DUP2 PUSH2 0xE41 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB1F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13F9 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC4B PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x1053 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xCDE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0x1061 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP6 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB DUP3 ADD DUP2 MSTORE DUP3 DUP5 ADD SWAP4 DUP5 SWAP1 MSTORE PUSH32 0xE3DEC8FB00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x44 DUP4 ADD DUP2 DUP2 MSTORE PUSH32 0x0 DUP1 DUP8 AND PUSH1 0x64 DUP7 ADD MSTORE PUSH1 0x60 PUSH1 0x84 DUP7 ADD SWAP1 DUP2 MSTORE DUP7 MLOAD PUSH1 0xA4 DUP8 ADD MSTORE DUP7 MLOAD PUSH32 0x0 SWAP1 SWAP9 AND SWAP8 PUSH4 0xE3DEC8FB SWAP8 SWAP5 SWAP7 SWAP3 SWAP6 SWAP2 SWAP3 PUSH1 0xC4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDD1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDB9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDFE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE33 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xEB0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x142D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xFA9 PUSH2 0xC52 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x102B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1041 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0x104F DUP3 PUSH2 0xB91 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0x104F JUMPI PUSH2 0x104F DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1110 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x11A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x11A5 SWAP1 DUP5 SWAP1 PUSH2 0x1261 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1232 SWAP1 DUP5 SWAP1 PUSH2 0x1261 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x458 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x137D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x12CA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x128D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x132C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1331 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1349 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1377 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x136F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1053 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212201DC7239744ABA90B833A63FD22CC4137 0x26 0x25 SHR DUP2 LOG3 SWAP3 0xD5 SLT 0xE2 PUSH32 0x8749515E0AED64736F6C63430007010033000000000000000000000000000000 ","sourceMap":"815:1086:107:-:0;;;874:322;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1074:6;1082:23;1107:21;1053:76;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;-1:-1:-1;815:1086:107;;-1:-1:-1;;815:1086:107;;;;;;;;;:::o;556:663:-1:-;;;;769:2;757:9;748:7;744:23;740:32;737:2;;;-1:-1;;775:12;737:2;260:6;254:13;272:63;329:5;272:63;:::i;:::-;968:2;1052:22;;459:13;827:104;;-1:-1;477:67;459:13;477:67;:::i;:::-;1121:2;1171:22;;83:13;976:108;;-1:-1;101:33;83:13;101:33;:::i;:::-;1129:74;;;;731:488;;;;;:::o;1740:572::-;-1:-1;;;;;2739:54;;;1447:80;;2739:54;;;2215:2;2200:18;;1447:80;2739:54;;;2298:2;2283:18;;1297:37;1987:2;1972:18;;1958:354::o;3483:117::-;-1:-1;;;;;2739:54;;3542:35;;3532:2;;3591:1;;3581:12;3532:2;3526:74;:::o;:::-;815:1086:107;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea26469706673582212201a7bd22332439b7fab0fc7651a4bc3291ab2e0f7fedd5c6e63baeec14e55e14064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BYTE PUSH28 0xD22332439B7FAB0FC7651A4BC3291AB2E0F7FEDD5C6E63BAEEC14E55 0xE1 BLOCKHASH PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"815:1086:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1672:227;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;1507:131::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1672:227:107:-;1752:7;1771:13;1787:9;:7;:9::i;:::-;1806:64;;;;;1771:25;;-1:-1:-1;1806:34:107;;;;;;:64;;1841:9;;1852:17;;1806:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1887:5:107;;-1:-1:-1;;;;1672:227:107;;;;;:::o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;1507:131::-;1605:26;;;1582:4;1605:26;;;:19;:26;;;;;;;;1507:131;;;;:::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;5:130:-1;72:20;;3226:42;3215:54;;3419:35;;3409:2;;3468:1;;3458:12;279:241;;383:2;371:9;362:7;358:23;354:32;351:2;;;-1:-1;;389:12;351:2;451:53;496:7;472:22;451:53;:::i;:::-;441:63;345:175;-1:-1;;;345:175::o;527:366::-;;;648:2;636:9;627:7;623:23;619:32;616:2;;;-1:-1;;654:12;616:2;716:53;761:7;737:22;716:53;:::i;:::-;706:63;806:2;845:22;;;;209:20;;-1:-1;;;610:283::o;1582:222::-;3226:42;3215:54;;;;971:37;;1709:2;1694:18;;1680:124::o;1811:333::-;3226:42;3215:54;;;;971:37;;2130:2;2115:18;;1533:37;1966:2;1951:18;;1937:207::o;2151:210::-;3127:13;;3120:21;1085:34;;2272:2;2257:18;;2243:118::o;2368:416::-;2568:2;2582:47;;;1356:2;2553:18;;;2895:19;1392:24;2935:14;;;1372:45;1436:12;;;2539:245::o"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getGaugeImplementation()":"39312dee","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IPolygonRootChainManager\",\"name\":\"polygonRootChainManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"polygonERC20Predicate\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Polygon.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/polygon/PolygonRootGaugeFactory.sol\":\"PolygonRootGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/polygon/PolygonRootGauge.sol\":{\"keccak256\":\"0x418782ff451d6b456c7034f4e4a7422bc5271d1b3176e81c2e1674ed7157c996\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94feb7b4d835cc765583eb0cb6b0536c1156df31e6f511ee35b91d29a0911d31\",\"dweb:/ipfs/QmUqgKGSoDV8vEtmspPVyszFGz6PcbhUuDzbG2SwssKwWx\"]},\"contracts/gauges/polygon/PolygonRootGaugeFactory.sol\":{\"keccak256\":\"0xf308ffa4d4ed84755542fa343a42ff6e1e8e5181492a78ff4d4bbd302b3f6e8e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e0d3c31702078219cf0111d4b6bab4656eea96ca864f442f543a6e00a3471d5a\",\"dweb:/ipfs/QmWFbdKyq1KBTwYTzLyDYKgjuApY2ZQn9b1AzxctHNPV1p\"]}},\"version\":1}"}},"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol":{"IPolygonZkEVMBridge":{"abi":[{"inputs":[{"internalType":"uint32","name":"destinationNetwork","type":"uint32"},{"internalType":"address","name":"destinationAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"forceUpdateGlobalExitRoot","type":"bool"},{"internalType":"bytes","name":"permitData","type":"bytes"}],"name":"bridgeAsset","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"bridgeAsset(uint32,address,uint256,address,bool,bytes)":"cd586579"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"forceUpdateGlobalExitRoot\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"permitData\",\"type\":\"bytes\"}],\"name\":\"bridgeAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol\":\"IPolygonZkEVMBridge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol\":{\"keccak256\":\"0xd9c7da32d4ddaf6e32a41af727737a1283fef2792d7f1f06a5eeed4d51e46683\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e84183dbe59c339d19689101bef9c96d0dea0fb459b84fa92196c46c53092382\",\"dweb:/ipfs/QmSb3CzCmonxYztH2unTccSaXkdQv3KyYY1ThP1saLeT3S\"]}},\"version\":1}"},"PolygonZkEVMRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IPolygonZkEVMBridge","name":"polygonZkEVMBridge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPolygonZkEVMBridge","outputs":[{"internalType":"contract IPolygonZkEVMBridge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101a06040523480156200001257600080fd5b506040516200185138038062001851833981810160405260408110156200003857600080fd5b508051602091820151600160009081556040805163e6dec36f60e01b815290519394929385936001600160a01b0385169263e6dec36f9260048083019392829003018186803b1580156200008b57600080fd5b505afa158015620000a0573d6000803e3d6000fd5b505050506040513d6020811015620000b757600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010057600080fd5b505afa15801562000115573d6000803e3d6000fd5b505050506040513d60208110156200012c57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017557600080fd5b505afa1580156200018a573d6000803e3d6000fd5b505050506040513d6020811015620001a157600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021257600080fd5b505afa15801562000227573d6000803e3d6000fd5b505050506040513d60208110156200023e57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d6020811015620002be57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030557600080fd5b505afa1580156200031a573d6000803e3d6000fd5b505050506040513d60208110156200033157600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200037857600080fd5b505afa1580156200038d573d6000803e3d6000fd5b505050506040513d6020811015620003a457600080fd5b505161016052505060001960025550506001600160601b031960609190911b16610180525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6113e162000470600039806102ff5280610c755280610d3252508061085c52508061083b5250806107be52806108a85250806103c8528061058352806106635280610a97525080610467528061074c52508061099e525080610e0f5280610f0c525080610c535280610cf352506113e16000f3fe6080604052600436106100dd5760003560e01c80639c868ac01161007f578063b024522511610059578063b024522514610285578063c2c4c5c11461029a578063cd6dc687146102a2578063d34fb267146102e8576100dd565b80639c868ac0146102465780639f8676711461025b578063ab8f094514610270576100dd565b806314e956f5116100bb57806314e956f51461019e5780631b88094d146101c85780634b820093146101dd57806383f5c39b14610231576100dd565b806304ceb300146100e2578063094007071461012057806310d3eb0414610172575b600080fd5b3480156100ee57600080fd5b506100f76102fd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561012c57600080fd5b506101606004803603602081101561014357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610322565b60408051918252519081900360200190f35b34801561017e57600080fd5b5061019c6004803603602081101561019557600080fd5b50356103b0565b005b3480156101aa57600080fd5b50610160600480360360208110156101c157600080fd5b5035610460565b3480156101d457600080fd5b506100f761052e565b3480156101e957600080fd5b5061021d6004803603602081101561020057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661054a565b604080519115158252519081900360200190f35b34801561023d57600080fd5b50610160610550565b34801561025257600080fd5b5061021d610556565b34801561026757600080fd5b5061016061055f565b34801561027c57600080fd5b5061019c61056b565b34801561029157600080fd5b5061016061063c565b61021d610641565b3480156102ae57600080fd5b5061019c600480360360408110156102c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2e565b3480156102f457600080fd5b5061019c610a7f565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461045457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045d81610b4d565b50565b60006105287f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104f457600080fd5b505afa158015610508573d6000803e3d6000fd5b505050506040513d602081101561051e57600080fd5b5051600654610be9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461060f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b600061064b610bf5565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106fc610c0e565b905080821015610a2057604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561079357600080fd5b505af11580156107a7573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561093357848111156107f857610933565b62093a80810260008061080a83610460565b905082851015801561082057508262093a800185105b156108d957828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088457fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ee9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107e0565b50600284905560048054830190558115801590610953575060055460ff16155b15610a1c57604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e657600080fd5b505af11580156109fa573d6000803e3d6000fd5b505050506040513d6020811015610a1057600080fd5b50610a1c905082610c39565b5050505b60019250505061031f610d95565b610a3781610d9c565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113546034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c0760026000541415610190610fae565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610c9a73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610fbc565b600754604080517fcd58657900000000000000000000000000000000000000000000000000000000815260016004820181905273ffffffffffffffffffffffffffffffffffffffff9384166024830152604482018590527f000000000000000000000000000000000000000000000000000000000000000084166064830152608482015260c060a4820152600060c4820181905291517f00000000000000000000000000000000000000000000000000000000000000009093169263cd586579926101048084019391929182900301818387803b158015610d7a57600080fd5b505af1158015610d8e573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7357600080fd5b505afa158015610e87573d6000803e3d6000fd5b505050506040513d6020811015610e9d57600080fd5b5051905080610ef7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113886024913960400191505060405180910390fd5b6001819055610f04610c0e565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f7257600080fd5b505af1158015610f86573d6000803e3d6000fd5b505050506040513d6020811015610f9c57600080fd5b5051600355610faa82610b4d565b5050565b81610faa57610faa81611192565b801580159061106b5750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561103c57600080fd5b505afa158015611050573d6000803e3d6000fd5b505050506040513d602081101561106657600080fd5b505115155b15611100576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111009084906111bc565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261118d9084906111bc565b505050565b61045d817f42414c00000000000000000000000000000000000000000000000000000000006112d8565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061122557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016111e8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611287576040519150601f19603f3d011682016040523d82523d6000602084013e61128c565b606091505b509150915060008214156112a4573d6000803e3d6000fd5b6112d28151600014806112ca57508180602001905160208110156112c757600080fd5b50515b6101a2610fae565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212204d2be520c1e062061f05e17498249fcf846d480e9c2984ef57e16a8948fb86eb64736f6c63430007010033","opcodes":"PUSH2 0x1A0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1851 CODESIZE SUB DUP1 PUSH3 0x1851 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 DUP6 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x18A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x227 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x31A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x38D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH2 0x180 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x13E1 PUSH3 0x470 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2FF MSTORE DUP1 PUSH2 0xC75 MSTORE DUP1 PUSH2 0xD32 MSTORE POP DUP1 PUSH2 0x85C MSTORE POP DUP1 PUSH2 0x83B MSTORE POP DUP1 PUSH2 0x7BE MSTORE DUP1 PUSH2 0x8A8 MSTORE POP DUP1 PUSH2 0x3C8 MSTORE DUP1 PUSH2 0x583 MSTORE DUP1 PUSH2 0x663 MSTORE DUP1 PUSH2 0xA97 MSTORE POP DUP1 PUSH2 0x467 MSTORE DUP1 PUSH2 0x74C MSTORE POP DUP1 PUSH2 0x99E MSTORE POP DUP1 PUSH2 0xE0F MSTORE DUP1 PUSH2 0xF0C MSTORE POP DUP1 PUSH2 0xC53 MSTORE DUP1 PUSH2 0xCF3 MSTORE POP PUSH2 0x13E1 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C868AC0 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2E8 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x270 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x231 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x4CEB300 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x172 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x322 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3B0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x460 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x52E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x54A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x550 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x556 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x55F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH2 0x56B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x21D PUSH2 0x641 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH2 0xA7F JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x454 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x45D DUP2 PUSH2 0xB4D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x508 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xBE9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x60F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64B PUSH2 0xBF5 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6FC PUSH2 0xC0E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x933 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI PUSH2 0x933 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x80A DUP4 PUSH2 0x460 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x820 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D9 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x884 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EE SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x953 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA1C SWAP1 POP DUP3 PUSH2 0xC39 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x31F PUSH2 0xD95 JUMP JUMPDEST PUSH2 0xA37 DUP2 PUSH2 0xD9C JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1354 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC07 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xFAE JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xC9A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0xFBC JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xCD58657900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 DUP5 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xC4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP4 AND SWAP3 PUSH4 0xCD586579 SWAP3 PUSH2 0x104 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE87 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xEF7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1388 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF04 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0xFAA DUP3 PUSH2 0xB4D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0xFAA JUMPI PUSH2 0xFAA DUP2 PUSH2 0x1192 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x106B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x103C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1050 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1066 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1100 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1100 SWAP1 DUP5 SWAP1 PUSH2 0x11BC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x118D SWAP1 DUP5 SWAP1 PUSH2 0x11BC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x45D DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x12D8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1225 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x11E8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1287 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x128C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x12A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x12D2 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x12CA JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0xFAE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212204D2BE520C1E062061F05E17498249FCF DUP5 PUSH14 0x480E9C2984EF57E16A8948FB86EB PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1246:1527:108:-:0;;;1656:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1656:163:108;;;;;;;2070:1:63;2175:7;:22;;;1656:163:108;2339:30:89;;-1:-1:-1;2339:30:89;;;;1656:163:108;;;;;;-1:-1:-1;2339:28:89;;;-1:-1:-1;;2339:30:89;;;;;1656:163:108;2339:30:89;;;;;:28;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2339:30:89;2398:29;;;-1:-1:-1;2398:29:89;;;;2339:30;;-1:-1:-1;2380:15:89;;-1:-1:-1;2398:27:89;;;-1:-1:-1;;2398:29:89;;;;;2339:30;;2398:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2398:29:89;2472:27;;;-1:-1:-1;2472:27:89;;;;2398:29;;-1:-1:-1;2437:32:89;;-1:-1:-1;2472:25:89;;;;;:27;;;;;2398:29;;2472:27;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2472:27:89;-1:-1:-1;;2510:20:89;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;2665:23:89;;;;2472:27;;-1:-1:-1;;2600:34:89;;;2665:21;;:23;;;;;2472:27;;2665:23;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2665:23:89;2644:44;;-1:-1:-1;2644:44:89;;;2722:32;;;-1:-1:-1;2722:32:89;;;;-1:-1:-1;2722:30:89;;;;;:32;;;;;2665:23;;2722:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2722:32:89;2699:55;;2794:39;;;-1:-1:-1;2794:39:89;;;;-1:-1:-1;2794:37:89;;;-1:-1:-1;;2794:39:89;;;;;2722:32;;2794:39;;;;;;;:37;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2794:39:89;2764:69;;2863:29;;;-1:-1:-1;2863:29:89;;;;-1:-1:-1;2863:27:89;;;;;:29;;;;;2794:39;;2863:29;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2863:29:89;2843:49;;-1:-1:-1;;;;3053:7:89;:27;-1:-1:-1;;;;;;;;1772:40:108::1;::::0;;;;;::::1;::::0;-1:-1:-1;1246:1527:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":3155},{"length":32,"start":3315}],"14642":[{"length":32,"start":3599},{"length":32,"start":3852}],"14644":[{"length":32,"start":2462}],"14646":[{"length":32,"start":1127},{"length":32,"start":1868}],"14648":[{"length":32,"start":968},{"length":32,"start":1411},{"length":32,"start":1635},{"length":32,"start":2711}],"14656":[{"length":32,"start":1982},{"length":32,"start":2216}],"14658":[{"length":32,"start":2107}],"14660":[{"length":32,"start":2140}],"18117":[{"length":32,"start":767},{"length":32,"start":3189},{"length":32,"start":3378}]},"linkReferences":{},"object":"6080604052600436106100dd5760003560e01c80639c868ac01161007f578063b024522511610059578063b024522514610285578063c2c4c5c11461029a578063cd6dc687146102a2578063d34fb267146102e8576100dd565b80639c868ac0146102465780639f8676711461025b578063ab8f094514610270576100dd565b806314e956f5116100bb57806314e956f51461019e5780631b88094d146101c85780634b820093146101dd57806383f5c39b14610231576100dd565b806304ceb300146100e2578063094007071461012057806310d3eb0414610172575b600080fd5b3480156100ee57600080fd5b506100f76102fd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561012c57600080fd5b506101606004803603602081101561014357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610322565b60408051918252519081900360200190f35b34801561017e57600080fd5b5061019c6004803603602081101561019557600080fd5b50356103b0565b005b3480156101aa57600080fd5b50610160600480360360208110156101c157600080fd5b5035610460565b3480156101d457600080fd5b506100f761052e565b3480156101e957600080fd5b5061021d6004803603602081101561020057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661054a565b604080519115158252519081900360200190f35b34801561023d57600080fd5b50610160610550565b34801561025257600080fd5b5061021d610556565b34801561026757600080fd5b5061016061055f565b34801561027c57600080fd5b5061019c61056b565b34801561029157600080fd5b5061016061063c565b61021d610641565b3480156102ae57600080fd5b5061019c600480360360408110156102c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2e565b3480156102f457600080fd5b5061019c610a7f565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461045457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045d81610b4d565b50565b60006105287f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104f457600080fd5b505afa158015610508573d6000803e3d6000fd5b505050506040513d602081101561051e57600080fd5b5051600654610be9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461060f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b600061064b610bf5565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106fc610c0e565b905080821015610a2057604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561079357600080fd5b505af11580156107a7573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561093357848111156107f857610933565b62093a80810260008061080a83610460565b905082851015801561082057508262093a800185105b156108d957828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088457fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ee9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107e0565b50600284905560048054830190558115801590610953575060055460ff16155b15610a1c57604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e657600080fd5b505af11580156109fa573d6000803e3d6000fd5b505050506040513d6020811015610a1057600080fd5b50610a1c905082610c39565b5050505b60019250505061031f610d95565b610a3781610d9c565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113546034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c0760026000541415610190610fae565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610c9a73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610fbc565b600754604080517fcd58657900000000000000000000000000000000000000000000000000000000815260016004820181905273ffffffffffffffffffffffffffffffffffffffff9384166024830152604482018590527f000000000000000000000000000000000000000000000000000000000000000084166064830152608482015260c060a4820152600060c4820181905291517f00000000000000000000000000000000000000000000000000000000000000009093169263cd586579926101048084019391929182900301818387803b158015610d7a57600080fd5b505af1158015610d8e573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7357600080fd5b505afa158015610e87573d6000803e3d6000fd5b505050506040513d6020811015610e9d57600080fd5b5051905080610ef7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113886024913960400191505060405180910390fd5b6001819055610f04610c0e565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f7257600080fd5b505af1158015610f86573d6000803e3d6000fd5b505050506040513d6020811015610f9c57600080fd5b5051600355610faa82610b4d565b5050565b81610faa57610faa81611192565b801580159061106b5750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561103c57600080fd5b505afa158015611050573d6000803e3d6000fd5b505050506040513d602081101561106657600080fd5b505115155b15611100576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111009084906111bc565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261118d9084906111bc565b505050565b61045d817f42414c00000000000000000000000000000000000000000000000000000000006112d8565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061122557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016111e8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611287576040519150601f19603f3d011682016040523d82523d6000602084013e61128c565b606091505b509150915060008214156112a4573d6000803e3d6000fd5b6112d28151600014806112ca57508180602001905160208110156112c757600080fd5b50515b6101a2610fae565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212204d2be520c1e062061f05e17498249fcf846d480e9c2984ef57e16a8948fb86eb64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C868AC0 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2E8 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x270 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x231 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x4CEB300 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x172 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x322 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3B0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x460 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x52E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x54A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x550 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x556 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x55F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH2 0x56B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x21D PUSH2 0x641 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH2 0xA7F JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x454 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x45D DUP2 PUSH2 0xB4D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x508 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xBE9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x60F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64B PUSH2 0xBF5 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6FC PUSH2 0xC0E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x933 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI PUSH2 0x933 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x80A DUP4 PUSH2 0x460 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x820 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D9 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x884 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EE SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x953 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA1C SWAP1 POP DUP3 PUSH2 0xC39 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x31F PUSH2 0xD95 JUMP JUMPDEST PUSH2 0xA37 DUP2 PUSH2 0xD9C JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1354 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC07 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xFAE JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xC9A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0xFBC JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xCD58657900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 DUP5 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xC4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP4 AND SWAP3 PUSH4 0xCD586579 SWAP3 PUSH2 0x104 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE87 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xEF7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1388 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF04 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0xFAA DUP3 PUSH2 0xB4D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0xFAA JUMPI PUSH2 0xFAA DUP2 PUSH2 0x1192 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x106B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x103C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1050 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1066 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1100 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1100 SWAP1 DUP5 SWAP1 PUSH2 0x11BC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x118D SWAP1 DUP5 SWAP1 PUSH2 0x11BC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x45D DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x12D8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1225 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x11E8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1287 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x128C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x12A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x12D2 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x12CA JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0xFAE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212204D2BE520C1E062061F05E17498249FCF DUP5 PUSH14 0x480E9C2984EF57E16A8948FB86EB PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1246:1527:108:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2163:120;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6895:191:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6895:191:89;;;;:::i;:::-;;;;;;;;;;;;;;;;7513:214;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7513:214:89;;:::i;:::-;;8159:199;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:199:89;;:::i;2058:99:108:-;;;;;;;;;;;;;:::i;6789:100:89:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6789:100:89;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8038:115;;;;;;;;;;;;;:::i;7092:92::-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;6394:104::-;;;;;;;;;;;;;:::i;3697:2655::-;;;:::i;1825:227:108:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1825:227:108;;;;;;;;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;2163:120:108:-;2257:19;2163:120;;:::o;6895:191:89:-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8271:59:89;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;2058:99:108:-;2140:10;;;;2058:99;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;8038:115::-;8128:18;;8038:115;:::o;7092:92::-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6394:104::-;6464:7;6394:104;:::o;3697:2655::-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;;4042:4:::1;4000:48;::::0;::::1;::::0;;;:33:::1;:16;:33;::::0;::::1;::::0;:48;;;;;-1:-1:-1;;4000:48:89;;;;;;;-1:-1:-1;4000:33:89;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5978:38;::::0;;;;;;;5989:10;;5978:38:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;;6246:4:::1;6225:27;::::0;::::1;::::0;;;:12:::1;:7;:12;::::0;::::1;::::0;:27;;;;;::::1;::::0;;;;;;;;-1:-1:-1;6225:12:89;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6270:29:89::1;::::0;-1:-1:-1;6286:12:89;6270:15:::1;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;1825:227:108:-;1972:40;1994:17;1972:21;:40::i;:::-;-1:-1:-1;2023:10:108;:22;;;;;;;;;;;;;;;1825:227::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7929:18;:38;;;7982:43;;;;;;;;;;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;2289:482:108:-;2362:63;:21;:9;:21;2392:19;2414:10;2362:21;:63::i;:::-;2628:10;;2547:217;;;;;;1448:1;2547:217;;;;;;:31;2628:10;;;2547:217;;;;;;;;;;2684:9;2547:217;;;;;;;;;;;;;;;-1:-1:-1;2547:217:108;;;;;;;;:19;:31;;;;;;:217;;;;;-1:-1:-1;;2547:217:108;;;;;;-1:-1:-1;2547:31:108;:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2289:482;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3428:18:89;;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3601:33:89;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;;1256:4;1232:43;;;;:15;:43;;;;;;;;;:15;;;;;;:43;;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1232:43:64;:48;;1218:62;1214:183;;;1332:53;;;;;;;;;;1383:1;1332:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:22;1332:53;;;1296:90;;1324:5;;1296:19;:90::i;:::-;1443:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1466:22;1443:57;;;1407:94;;1435:5;;1407:19;:94::i;:::-;1001:507;;;:::o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:64;3143:56;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o;1692:3378:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","checkpoint()":"c2c4c5c1","getCappedRelativeWeight(uint256)":"14e956f5","getPolygonZkEVMBridge()":"04ceb300","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IPolygonZkEVMBridge\",\"name\":\"polygonZkEVMBridge\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPolygonZkEVMBridge\",\"outputs\":[{\"internalType\":\"contract IPolygonZkEVMBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Documentation is at https://zkevm.polygon.technology/docs/category/zkevm-bridge.\",\"kind\":\"dev\",\"methods\":{\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"notice\":\"Root Gauge for the Polygon zkEVM network.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol\":\"PolygonZkEVMRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol\":{\"keccak256\":\"0xd9c7da32d4ddaf6e32a41af727737a1283fef2792d7f1f06a5eeed4d51e46683\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e84183dbe59c339d19689101bef9c96d0dea0fb459b84fa92196c46c53092382\",\"dweb:/ipfs/QmSb3CzCmonxYztH2unTccSaXkdQv3KyYY1ThP1saLeT3S\"]}},\"version\":1}"}},"contracts/gauges/zkevm/PolygonZkEVMRootGaugeFactory.sol":{"PolygonZkEVMRootGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IPolygonZkEVMBridge","name":"zkEVMBridge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051611d70380380611d7083398101604081905261002f9161009a565b818160405161003d9061008d565b6100489291906100d3565b604051809103906000f080158015610064573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055506101059050565b6118518061051f83390190565b600080604083850312156100ac578182fd5b82516100b7816100ed565b60208401519092506100c8816100ed565b809150509250929050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b038116811461010257600080fd5b50565b61040b806101146000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea2646970667358221220ba7be6c83fb39bb8f489c573440768d1afa055febb8516eb3e9f8b4e2b446ebb64736f6c634300070100336101a06040523480156200001257600080fd5b506040516200185138038062001851833981810160405260408110156200003857600080fd5b508051602091820151600160009081556040805163e6dec36f60e01b815290519394929385936001600160a01b0385169263e6dec36f9260048083019392829003018186803b1580156200008b57600080fd5b505afa158015620000a0573d6000803e3d6000fd5b505050506040513d6020811015620000b757600080fd5b50516040805163c003969960e01b815290519192506000916001600160a01b0384169163c0039699916004808301926020929190829003018186803b1580156200010057600080fd5b505afa15801562000115573d6000803e3d6000fd5b505050506040513d60208110156200012c57600080fd5b505160408051632c6f4d6f60e11b815290519192506000916001600160a01b038616916358de9ade916004808301926020929190829003018186803b1580156200017557600080fd5b505afa1580156200018a573d6000803e3d6000fd5b505050506040513d6020811015620001a157600080fd5b50516001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021257600080fd5b505afa15801562000227573d6000803e3d6000fd5b505050506040513d60208110156200023e57600080fd5b505160601b6001600160601b0319166101005260408051635c3dab0b60e11b815290516001600160a01b0385169163b87b5616916004808301926020929190829003018186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d6020811015620002be57600080fd5b505161012052604080516321609bbf60e01b815290516001600160a01b038516916321609bbf916004808301926020929190829003018186803b1580156200030557600080fd5b505afa1580156200031a573d6000803e3d6000fd5b505050506040513d60208110156200033157600080fd5b505161014052604080516303f7d6c760e51b815290516001600160a01b03851691637efad8e0916004808301926020929190829003018186803b1580156200037857600080fd5b505afa1580156200038d573d6000803e3d6000fd5b505050506040513d6020811015620003a457600080fd5b505161016052505060001960025550506001600160601b031960609190911b16610180525060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6113e162000470600039806102ff5280610c755280610d3252508061085c52508061083b5250806107be52806108a85250806103c8528061058352806106635280610a97525080610467528061074c52508061099e525080610e0f5280610f0c525080610c535280610cf352506113e16000f3fe6080604052600436106100dd5760003560e01c80639c868ac01161007f578063b024522511610059578063b024522514610285578063c2c4c5c11461029a578063cd6dc687146102a2578063d34fb267146102e8576100dd565b80639c868ac0146102465780639f8676711461025b578063ab8f094514610270576100dd565b806314e956f5116100bb57806314e956f51461019e5780631b88094d146101c85780634b820093146101dd57806383f5c39b14610231576100dd565b806304ceb300146100e2578063094007071461012057806310d3eb0414610172575b600080fd5b3480156100ee57600080fd5b506100f76102fd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561012c57600080fd5b506101606004803603602081101561014357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610322565b60408051918252519081900360200190f35b34801561017e57600080fd5b5061019c6004803603602081101561019557600080fd5b50356103b0565b005b3480156101aa57600080fd5b50610160600480360360208110156101c157600080fd5b5035610460565b3480156101d457600080fd5b506100f761052e565b3480156101e957600080fd5b5061021d6004803603602081101561020057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661054a565b604080519115158252519081900360200190f35b34801561023d57600080fd5b50610160610550565b34801561025257600080fd5b5061021d610556565b34801561026757600080fd5b5061016061055f565b34801561027c57600080fd5b5061019c61056b565b34801561029157600080fd5b5061016061063c565b61021d610641565b3480156102ae57600080fd5b5061019c600480360360408110156102c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a2e565b3480156102f457600080fd5b5061019c610a7f565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff821630146103a857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604482015290519081900360640190fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461045457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b61045d81610b4d565b50565b60006105287f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156104f457600080fd5b505afa158015610508573d6000803e3d6000fd5b505050506040513d602081101561051e57600080fd5b5051600654610be9565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b60065490565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461060f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b600061064b610bf5565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b60025460006106fc610c0e565b905080821015610a2057604080517f615e5237000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163615e523791602480830192600092919082900301818387803b15801561079357600080fd5b505af11580156107a7573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561093357848111156107f857610933565b62093a80810260008061080a83610460565b905082851015801561082057508262093a800185105b156108d957828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161088457fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506108ee9050565b670de0b6b3a764000062093a80828902020491505b60408051838152905184917f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced919081900360200190a2509390930192506001016107e0565b50600284905560048054830190558115801590610953575060055460ff16155b15610a1c57604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691636a6278429160248083019260209291908290030181600087803b1580156109e657600080fd5b505af11580156109fa573d6000803e3d6000fd5b505050506040513d6020811015610a1057600080fd5b50610a1c905082610c39565b5050505b60019250505061031f610d95565b610a3781610d9c565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610bae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806113546034913960400191505060405180910390fd5b60068190556040805182815290517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb29181900360200190a150565b80820390821102900390565b610c0760026000541415610190610fae565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b610c9a73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610fbc565b600754604080517fcd58657900000000000000000000000000000000000000000000000000000000815260016004820181905273ffffffffffffffffffffffffffffffffffffffff9384166024830152604482018590527f000000000000000000000000000000000000000000000000000000000000000084166064830152608482015260c060a4820152600060c4820181905291517f00000000000000000000000000000000000000000000000000000000000000009093169263cd586579926101048084019391929182900301818387803b158015610d7a57600080fd5b505af1158015610d8e573d6000803e3d6000fd5b5050505050565b6001600055565b60025415610e0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7357600080fd5b505afa158015610e87573d6000803e3d6000fd5b505050506040513d6020811015610e9d57600080fd5b5051905080610ef7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113886024913960400191505060405180910390fd5b6001819055610f04610c0e565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f7257600080fd5b505af1158015610f86573d6000803e3d6000fd5b505050506040513d6020811015610f9c57600080fd5b5051600355610faa82610b4d565b5050565b81610faa57610faa81611192565b801580159061106b5750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561103c57600080fd5b505afa158015611050573d6000803e3d6000fd5b505050506040513d602081101561106657600080fd5b505115155b15611100576040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526111009084906111bc565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261118d9084906111bc565b505050565b61045d817f42414c00000000000000000000000000000000000000000000000000000000006112d8565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061122557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016111e8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611287576040519150601f19603f3d011682016040523d82523d6000602084013e61128c565b606091505b509150915060008214156112a4573d6000803e3d6000fd5b6112d28151600014806112ca57508180602001905160208110156112c757600080fd5b50515b6101a2610fae565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe52656c61746976652077656967687420636170206578636565647320616c6c6f776564206162736f6c757465206d6178696d756d42616c616e636572546f6b656e41646d696e206e6f742079657420616374697661746564a26469706673582212204d2be520c1e062061f05e17498249fcf846d480e9c2984ef57e16a8948fb86eb64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D70 CODESIZE SUB DUP1 PUSH2 0x1D70 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x9A JUMP JUMPDEST DUP2 DUP2 PUSH1 0x40 MLOAD PUSH2 0x3D SWAP1 PUSH2 0x8D JUMP JUMPDEST PUSH2 0x48 SWAP3 SWAP2 SWAP1 PUSH2 0xD3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x64 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x105 SWAP1 POP JUMP JUMPDEST PUSH2 0x1851 DUP1 PUSH2 0x51F DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xAC JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0xB7 DUP2 PUSH2 0xED JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0xC8 DUP2 PUSH2 0xED JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x40B DUP1 PUSH2 0x114 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA PUSH28 0xE6C83FB39BB8F489C573440768D1AFA055FEBB8516EB3E9F8B4E2B44 PUSH15 0xBB64736F6C634300070100336101A0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1851 CODESIZE SUB DUP1 PUSH3 0x1851 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6DEC36F PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 DUP6 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xE6DEC36F SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC0039699 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xC0039699 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2C6F4D6F PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x58DE9ADE SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x18A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x227 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x100 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5C3DAB0B PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xB87B5616 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x120 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x21609BBF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x21609BBF SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x31A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x140 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3F7D6C7 PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x7EFAD8E0 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x38D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH2 0x180 MSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x13E1 PUSH3 0x470 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2FF MSTORE DUP1 PUSH2 0xC75 MSTORE DUP1 PUSH2 0xD32 MSTORE POP DUP1 PUSH2 0x85C MSTORE POP DUP1 PUSH2 0x83B MSTORE POP DUP1 PUSH2 0x7BE MSTORE DUP1 PUSH2 0x8A8 MSTORE POP DUP1 PUSH2 0x3C8 MSTORE DUP1 PUSH2 0x583 MSTORE DUP1 PUSH2 0x663 MSTORE DUP1 PUSH2 0xA97 MSTORE POP DUP1 PUSH2 0x467 MSTORE DUP1 PUSH2 0x74C MSTORE POP DUP1 PUSH2 0x99E MSTORE POP DUP1 PUSH2 0xE0F MSTORE DUP1 PUSH2 0xF0C MSTORE POP DUP1 PUSH2 0xC53 MSTORE DUP1 PUSH2 0xCF3 MSTORE POP PUSH2 0x13E1 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C868AC0 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x2E8 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x270 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x231 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x4CEB300 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x172 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x322 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3B0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x460 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0x52E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x54A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x550 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x556 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x55F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH2 0x56B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x160 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x21D PUSH2 0x641 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C PUSH2 0xA7F JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x3A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x454 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x45D DUP2 PUSH2 0xB4D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x508 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 SLOAD PUSH2 0xBE9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x60F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64B PUSH2 0xBF5 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x6EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x6FC PUSH2 0xC0E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xA20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x615E5237 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x933 JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI PUSH2 0x933 JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x80A DUP4 PUSH2 0x460 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x820 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x8D9 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x884 JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x8EE SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x953 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xA1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x6A627842 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA1C SWAP1 POP DUP3 PUSH2 0xC39 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x31F PUSH2 0xD95 JUMP JUMPDEST PUSH2 0xA37 DUP2 PUSH2 0xD9C JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xBAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1354 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xC07 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xFAE JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH2 0xC9A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0xFBC JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xCD58657900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 DUP5 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xC4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP4 AND SWAP3 PUSH4 0xCD586579 SWAP3 PUSH2 0x104 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xE0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE87 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xEF7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1388 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xF04 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SSTORE PUSH2 0xFAA DUP3 PUSH2 0xB4D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH2 0xFAA JUMPI PUSH2 0xFAA DUP2 PUSH2 0x1192 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x106B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x103C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1050 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1066 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1100 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1100 SWAP1 DUP5 SWAP1 PUSH2 0x11BC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x118D SWAP1 DUP5 SWAP1 PUSH2 0x11BC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x45D DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x12D8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1225 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x11E8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1287 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x128C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x12A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x12D2 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x12CA JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0xFAE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID MSTORE PUSH6 0x6C6174697665 KECCAK256 PUSH24 0x656967687420636170206578636565647320616C6C6F7765 PUSH5 0x206162736F PUSH13 0x757465206D6178696D756D4261 PUSH13 0x616E636572546F6B656E41646D PUSH10 0x6E206E6F742079657420 PUSH2 0x6374 PUSH10 0x7661746564A264697066 PUSH20 0x582212204D2BE520C1E062061F05E17498249FCF DUP5 PUSH14 0x480E9C2984EF57E16A8948FB86EB PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"820:1006:109:-:0;;;884:226;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1019:6;1027:11;993:46;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;-1:-1:-1;820:1006:109;;-1:-1:-1;820:1006:109;;;;;;;;;:::o;405:517:-1:-;;;596:2;584:9;575:7;571:23;567:32;564:2;;;-1:-1;;602:12;564:2;119:6;113:13;131:63;188:5;131:63;:::i;:::-;795:2;874:22;;313:13;654:104;;-1:-1;331:62;313:13;331:62;:::i;:::-;803:103;;;;558:364;;;;;:::o;1313:451::-;-1:-1;;;;;2186:54;;;1030:80;;2186:54;;1750:2;1735:18;;1030:80;1527:2;1512:18;;1498:266::o;2915:177::-;-1:-1;;;;;2186:54;;3004:65;;2994:2;;3083:1;;3073:12;2994:2;2988:104;:::o;:::-;820:1006:109;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea2646970667358221220ba7be6c83fb39bb8f489c573440768d1afa055febb8516eb3e9f8b4e2b446ebb64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA PUSH28 0xE6C83FB39BB8F489C573440768D1AFA055FEBB8516EB3E9F8B4E2B44 PUSH15 0xBB64736F6C63430007010033000000 ","sourceMap":"820:1006:109:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1592:232;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;1507:131::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1592:232:109:-;1672:7;1691:13;1707:9;:7;:9::i;:::-;1726:69;;;;;1691:25;;-1:-1:-1;1726:39:109;;;;;;:69;;1766:9;;1777:17;;1726:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1812:5:109;;-1:-1:-1;;;;1592:232:109;;;;;:::o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;1507:131::-;1605:26;;;1582:4;1605:26;;;:19;:26;;;;;;;;1507:131;;;;:::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;5:130:-1;72:20;;3226:42;3215:54;;3419:35;;3409:2;;3468:1;;3458:12;279:241;;383:2;371:9;362:7;358:23;354:32;351:2;;;-1:-1;;389:12;351:2;451:53;496:7;472:22;451:53;:::i;:::-;441:63;345:175;-1:-1;;;345:175::o;527:366::-;;;648:2;636:9;627:7;623:23;619:32;616:2;;;-1:-1;;654:12;616:2;716:53;761:7;737:22;716:53;:::i;:::-;706:63;806:2;845:22;;;;209:20;;-1:-1;;;610:283::o;1582:222::-;3226:42;3215:54;;;;971:37;;1709:2;1694:18;;1680:124::o;1811:333::-;3226:42;3215:54;;;;971:37;;2130:2;2115:18;;1533:37;1966:2;1951:18;;1937:207::o;2151:210::-;3127:13;;3120:21;1085:34;;2272:2;2257:18;;2243:118::o;2368:416::-;2568:2;2582:47;;;1356:2;2553:18;;;2895:19;1392:24;2935:14;;;1372:45;1436:12;;;2539:245::o"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getGaugeImplementation()":"39312dee","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IPolygonZkEVMBridge\",\"name\":\"zkEVMBridge\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"details\":\"Care must be taken to ensure that gauges deployed from this factory are suitable before they are added to the GaugeController.\",\"params\":{\"recipient\":\"The address to receive BAL minted from the gauge\",\"relativeWeightCap\":\"The relative weight cap for the created gauge\"},\"returns\":{\"_0\":\"The address of the deployed gauge\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Deploys a new gauge which bridges all of its BAL allowance to a single recipient on Polygon ZkEVM.\"},\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/gauges/zkevm/PolygonZkEVMRootGaugeFactory.sol\":\"PolygonZkEVMRootGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/zkevm/PolygonZkEVMRootGauge.sol\":{\"keccak256\":\"0xd9c7da32d4ddaf6e32a41af727737a1283fef2792d7f1f06a5eeed4d51e46683\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e84183dbe59c339d19689101bef9c96d0dea0fb459b84fa92196c46c53092382\",\"dweb:/ipfs/QmSb3CzCmonxYztH2unTccSaXkdQv3KyYY1ThP1saLeT3S\"]},\"contracts/gauges/zkevm/PolygonZkEVMRootGaugeFactory.sol\":{\"keccak256\":\"0x4db826b7e9e490706a1961f82c98a227f5f96e530bfe6f1ce018c77d2e6b5439\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://df71668298057c298d0c307c86b0207ea66a9a4762efeec7fed42745a6b95489\",\"dweb:/ipfs/QmTwiQioJmCGdp8AUFvwJTwPoaJvcFHadbhenkhZcAYy4B\"]}},\"version\":1}"}},"contracts/test/MockAvalancheRootGauge.sol":{"MockAvalancheRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract ILayerZeroBALProxy","name":"lzBALProxy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"bridge","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getBALProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumBridgeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101c06040523480156200001257600080fd5b5060405162002182380380620021828339810160408190526200003591620005a7565b81818160016000819055506000816001600160a01b031663e6dec36f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200007c57600080fd5b505afa15801562000091573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b7919062000581565b90506000816001600160a01b031663c00396996040518163ffffffff1660e01b815260040160206040518083038186803b158015620000f557600080fd5b505afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000130919062000581565b90506000836001600160a01b03166358de9ade6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016e57600080fd5b505afa15801562000183573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a9919062000581565b6001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021857600080fd5b505afa1580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000253919062000581565b6001600160a01b0316610100816001600160a01b031660601b81525050826001600160a01b031663b87b56166040518163ffffffff1660e01b815260040160206040518083038186803b158015620002aa57600080fd5b505afa158015620002bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e59190620005e5565b6101208181525050826001600160a01b03166321609bbf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032757600080fd5b505afa1580156200033c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003629190620005e5565b6101408181525050826001600160a01b0316637efad8e06040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a457600080fd5b505afa158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df9190620005e5565b61016052505060001960025550506001600160601b0319606082901b166101805260408051630857749b60e41b815290516000916001600160a01b0384169163857749b09160048082019260209290919082900301818787803b1580156200044657600080fd5b505af11580156200045b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004819190620005fe565b836001600160a01b031663c00396996040518163ffffffff1660e01b815260040160206040518083038186803b158015620004bb57600080fd5b505afa158015620004d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f6919062000581565b6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200052f57600080fd5b505afa15801562000544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200056a9190620005fe565b0360ff16600a0a6101a052506200063a9350505050565b60006020828403121562000593578081fd5b8151620005a08162000621565b9392505050565b60008060408385031215620005ba578081fd5b8251620005c78162000621565b6020840151909250620005da8162000621565b809150509250929050565b600060208284031215620005f7578081fd5b5051919050565b60006020828403121562000610578081fd5b815160ff81168114620005a0578182fd5b6001600160a01b03811681146200063757600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a051611a7e62000704600039806104865280610be45250806102a4528061097b5280610ca35280610cca5280610dad5280610e8e5280610f5d5250806107645250806107435250806106c652806107b052508061034152806104e452806105a15280610acd5250806103ab528061064c52508061089f5250806110a852806111925250806109445280610c815250611a7e6000f3fe6080604052600436106100f35760003560e01c806390fd50b31161008a578063b024522511610059578063b024522514610250578063c2c4c5c114610265578063cd6dc6871461026d578063d34fb2671461028d576100f3565b806390fd50b3146101fe5780639c868ac0146102115780639f86767114610226578063ab8f09451461023b576100f3565b80631b88094d116100c65780631b88094d146101925780634b820093146101a75780635e8a8389146101d457806383f5c39b146101e9576100f3565b806305c2c78d146100f8578063094007071461012357806310d3eb041461015057806314e956f514610172575b600080fd5b34801561010457600080fd5b5061010d6102a2565b60405161011a91906116b4565b60405180910390f35b34801561012f57600080fd5b5061014361013e36600461153c565b6102c7565b60405161011a91906119f1565b34801561015c57600080fd5b5061017061016b3660046115c6565b610329565b005b34801561017e57600080fd5b5061014361018d3660046115c6565b6103a4565b34801561019e57600080fd5b5061010d610462565b3480156101b357600080fd5b506101c76101c236600461153c565b61047e565b60405161011a91906117c8565b3480156101e057600080fd5b50610143610484565b3480156101f557600080fd5b506101436104a8565b61017061020c3660046115c6565b6104ae565b34801561021d57600080fd5b506101c76104b7565b34801561023257600080fd5b506101436104c0565b34801561024757600080fd5b506101706104cc565b34801561025c57600080fd5b50610143610568565b6101c761057f565b34801561027957600080fd5b5061017061028836600461157b565b610942565b34801561029957600080fd5b50610170610ab5565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff82163014610321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611969565b60405180910390fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610398576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b6103a181610b4e565b50565b600061045c7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b81526004016104049291906117a2565b60206040518083038186803b15801561041c57600080fd5b505afa158015610430573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045491906115de565b600654610bd0565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b60065490565b6103a181610bdc565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461053b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600061057a610575610da9565b610f58565b905090565b600061058961101f565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b6002546000610605611038565b905080821015610934576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e5237906106819030906004016116b4565b600060405180830381600087803b15801561069b57600080fd5b505af11580156106af573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561083d57848111156107005761083d565b62093a808102600080610712836103a4565b905082851015801561072857508262093a800185105b156107e157828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161078c57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506107f69050565b670de0b6b3a764000062093a80828902020491505b827f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced8360405161082691906119f1565b60405180910390a2509390930192506001016106e8565b5060028490556004805483019055811580159061085d575060055460ff16155b15610930576040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636a627842906108d49030906004016116b4565b602060405180830381600087803b1580156108ee57600080fd5b505af1158015610902573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092691906115de565b5061093082610bdc565b5050505b6001925050506102c4611063565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109df57600080fd5b505afa1580156109f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a17919061155f565b73ffffffffffffffffffffffffffffffffffffffff1614610a64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103189061180a565b610a6d8161106a565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610b90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611878565b60068190556040517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb290610bc59083906119f1565b60405180910390a150565b80820390821102900390565b6000610c08827f0000000000000000000000000000000000000000000000000000000000000000611240565b905080610c1557506103a1565b6060610c1f610da9565b90506000610c2c82610f58565b9050803414610c67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611841565b610cc873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000086611257565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632cdf0b958230606a610d18610d13610462565b6113d3565b60408051606081018252338152600060208201528082018a905290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152610d71949392918c918c9190600401611725565b6000604051808303818588803b158015610d8a57600080fd5b505af1158015610d9e573d6000803e3d6000fd5b505050505050505050565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ed629c5c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e1157600080fd5b505afa158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4991906115a6565b15610f43576040517f8cfd8f5c00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690638cfd8f5c90610ec690606a9085906004016119dc565b60206040518083038186803b158015610ede57600080fd5b505afa158015610ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1691906115de565b9050600181604051602001610f2c92919061167f565b6040516020818303038152906040529150506102c4565b506040805160208101909152600081526102c4565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663365260b4606a610fa4610d13610462565b600080886040518663ffffffff1660e01b8152600401610fc89594939291906119a0565b604080518083038186803b158015610fdf57600080fd5b505afa158015610ff3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101791906115f6565b509392505050565b611031600260005414156101906113ec565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6001600055565b600254156110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611932565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561110c57600080fd5b505afa158015611120573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114491906115de565b90508061117d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906118d5565b600181905561118a611038565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111f857600080fd5b505af115801561120c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123091906115de565b60035561123c82610b4e565b5050565b60008082848161124c57fe5b069093039392505050565b801580159061130857506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e906112b590309086906004016116d5565b60206040518083038186803b1580156112cd57600080fd5b505afa1580156112e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130591906115de565b15155b156113af576113af8363095ea7b360e01b84600060405160240161132d9291906116fc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526113fa565b6113ce8363095ea7b360e01b848460405160240161132d9291906117a2565b505050565b73ffffffffffffffffffffffffffffffffffffffff1690565b8161123c5761123c816114ad565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114239190611663565b6000604051808303816000865af19150503d8060008114611460576040519150601f19603f3d011682016040523d82523d6000602084013e611465565b606091505b5091509150600082141561147d573d6000803e3d6000fd5b6114a781516000148061149f57508180602001905181019061149f91906115a6565b6101a26113ec565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526103a1917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b60006020828403121561154d578081fd5b813561155881611a26565b9392505050565b600060208284031215611570578081fd5b815161155881611a26565b6000806040838503121561158d578081fd5b823561159881611a26565b946020939093013593505050565b6000602082840312156115b7578081fd5b81518015158114611558578182fd5b6000602082840312156115d7578081fd5b5035919050565b6000602082840312156115ef578081fd5b5051919050565b60008060408385031215611608578182fd5b505080516020909101519092909150565b600081518084526116318160208601602086016119fa565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516116758184602087016119fa565b9190910192915050565b60f09290921b7fffff000000000000000000000000000000000000000000000000000000000000168252600282015260220190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808916835261ffff8816602084015286604084015285606084015284608084015260c060a08401528084511660c08401528060208501511660e08401525060408301516060610100840152611795610120840182611619565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526012908201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604082015260600190565b60208082526015908201527f496e76616c6964205772617070657220546f6b656e0000000000000000000000604082015260600190565b6020808252601a908201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604082015260600190565b60208082526034908201527f52656c61746976652077656967687420636170206578636565647320616c6c6f60408201527f776564206162736f6c757465206d6178696d756d000000000000000000000000606082015260800190565b60208082526024908201527f42616c616e636572546f6b656e41646d696e206e6f742079657420616374697660408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252601e908201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604082015260600190565b600061ffff87168252856020830152846040830152831515606083015260a060808301526119d160a0830184611619565b979650505050505050565b61ffff92831681529116602082015260400190565b90815260200190565b60005b83811015611a155781810151838201526020016119fd565b838111156114a75750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146103a157600080fdfea264697066735822122045e258a731eb579a717c8fe2e4d03e5f91038db2fc3d39d39697674d7734fd9464736f6c63430007010033","opcodes":"PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2182 CODESIZE SUB DUP1 PUSH3 0x2182 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x5A7 JUMP JUMPDEST DUP2 DUP2 DUP2 PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE6DEC36F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x91 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xB7 SWAP2 SWAP1 PUSH3 0x581 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0039699 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x10A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x130 SWAP2 SWAP1 PUSH3 0x581 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x58DE9ADE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x183 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1A9 SWAP2 SWAP1 PUSH3 0x581 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x22D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x253 SWAP2 SWAP1 PUSH3 0x581 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB87B5616 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x2E5 SWAP2 SWAP1 PUSH3 0x5E5 JUMP JUMPDEST PUSH2 0x120 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x21609BBF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x33C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x362 SWAP2 SWAP1 PUSH3 0x5E5 JUMP JUMPDEST PUSH2 0x140 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7EFAD8E0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3B9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x3DF SWAP2 SWAP1 PUSH3 0x5E5 JUMP JUMPDEST PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH2 0x180 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x857749B PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x857749B0 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x45B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x481 SWAP2 SWAP1 PUSH3 0x5FE JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0039699 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x4D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x4F6 SWAP2 SWAP1 PUSH3 0x581 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x52F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x544 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x56A SWAP2 SWAP1 PUSH3 0x5FE JUMP JUMPDEST SUB PUSH1 0xFF AND PUSH1 0xA EXP PUSH2 0x1A0 MSTORE POP PUSH3 0x63A SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x593 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x5A0 DUP2 PUSH3 0x621 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x5BA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x5C7 DUP2 PUSH3 0x621 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x5DA DUP2 PUSH3 0x621 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5F7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x610 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x5A0 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH2 0x1A7E PUSH3 0x704 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x486 MSTORE DUP1 PUSH2 0xBE4 MSTORE POP DUP1 PUSH2 0x2A4 MSTORE DUP1 PUSH2 0x97B MSTORE DUP1 PUSH2 0xCA3 MSTORE DUP1 PUSH2 0xCCA MSTORE DUP1 PUSH2 0xDAD MSTORE DUP1 PUSH2 0xE8E MSTORE DUP1 PUSH2 0xF5D MSTORE POP DUP1 PUSH2 0x764 MSTORE POP DUP1 PUSH2 0x743 MSTORE POP DUP1 PUSH2 0x6C6 MSTORE DUP1 PUSH2 0x7B0 MSTORE POP DUP1 PUSH2 0x341 MSTORE DUP1 PUSH2 0x4E4 MSTORE DUP1 PUSH2 0x5A1 MSTORE DUP1 PUSH2 0xACD MSTORE POP DUP1 PUSH2 0x3AB MSTORE DUP1 PUSH2 0x64C MSTORE POP DUP1 PUSH2 0x89F MSTORE POP DUP1 PUSH2 0x10A8 MSTORE DUP1 PUSH2 0x1192 MSTORE POP DUP1 PUSH2 0x944 MSTORE DUP1 PUSH2 0xC81 MSTORE POP PUSH2 0x1A7E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90FD50B3 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x28D JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x90FD50B3 EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x23B JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x5E8A8389 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x1E9 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x5C2C78D EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x172 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x153C JUMP JUMPDEST PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x19F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x329 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x18D CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x3A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x462 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C7 PUSH2 0x1C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x153C JUMP JUMPDEST PUSH2 0x47E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x17C8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x484 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x4A8 JUMP JUMPDEST PUSH2 0x170 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x4AE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C7 PUSH2 0x4B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x4C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0x4CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x568 JUMP JUMPDEST PUSH2 0x1C7 PUSH2 0x57F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0x157B JUMP JUMPDEST PUSH2 0x942 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0xAB5 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x321 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1969 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x398 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH2 0x3A1 DUP2 PUSH2 0xB4E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45C PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x404 SWAP3 SWAP2 SWAP1 PUSH2 0x17A2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x430 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x454 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xBD0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3A1 DUP2 PUSH2 0xBDC JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x53B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x57A PUSH2 0x575 PUSH2 0xDA9 JUMP JUMPDEST PUSH2 0xF58 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x589 PUSH2 0x101F JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5F8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x605 PUSH2 0x1038 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x934 JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x681 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x83D JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x700 JUMPI PUSH2 0x83D JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x712 DUP4 PUSH2 0x3A4 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x728 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x7E1 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x78C JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x7F6 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST DUP3 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED DUP4 PUSH1 0x40 MLOAD PUSH2 0x826 SWAP2 SWAP1 PUSH2 0x19F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x6E8 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x85D JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x930 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x8D4 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x902 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x926 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST POP PUSH2 0x930 DUP3 PUSH2 0xBDC JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x2C4 PUSH2 0x1063 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA17 SWAP2 SWAP1 PUSH2 0x155F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x180A JUMP JUMPDEST PUSH2 0xA6D DUP2 PUSH2 0x106A JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB24 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xB90 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1878 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP1 PUSH2 0xBC5 SWAP1 DUP4 SWAP1 PUSH2 0x19F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC08 DUP3 PUSH32 0x0 PUSH2 0x1240 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xC15 JUMPI POP PUSH2 0x3A1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC1F PUSH2 0xDA9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC2C DUP3 PUSH2 0xF58 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xC67 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1841 JUMP JUMPDEST PUSH2 0xCC8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP7 PUSH2 0x1257 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2CDF0B95 DUP3 ADDRESS PUSH1 0x6A PUSH2 0xD18 PUSH2 0xD13 PUSH2 0x462 JUMP JUMPDEST PUSH2 0x13D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE DUP1 DUP3 ADD DUP11 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP9 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xD71 SWAP5 SWAP4 SWAP3 SWAP2 DUP13 SWAP2 DUP13 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1725 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xED629C5C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE25 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE49 SWAP2 SWAP1 PUSH2 0x15A6 JUMP JUMPDEST ISZERO PUSH2 0xF43 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8CFD8F5C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x8CFD8F5C SWAP1 PUSH2 0xEC6 SWAP1 PUSH1 0x6A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x19DC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEF2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF16 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF2C SWAP3 SWAP2 SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2C4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x2C4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x365260B4 PUSH1 0x6A PUSH2 0xFA4 PUSH2 0xD13 PUSH2 0x462 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFC8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1017 SWAP2 SWAP1 PUSH2 0x15F6 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1031 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x13EC JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x10A4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1932 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x110C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1120 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1144 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x117D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x18D5 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x118A PUSH2 0x1038 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x120C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1230 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST PUSH1 0x3 SSTORE PUSH2 0x123C DUP3 PUSH2 0xB4E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 PUSH2 0x124C JUMPI INVALID JUMPDEST MOD SWAP1 SWAP4 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1308 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x12B5 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x16D5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1305 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x13AF JUMPI PUSH2 0x13AF DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x16FC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x13CE DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x17A2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x123C JUMPI PUSH2 0x123C DUP2 PUSH2 0x14AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1423 SWAP2 SWAP1 PUSH2 0x1663 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1460 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1465 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x147D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x14A7 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x149F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x149F SWAP2 SWAP1 PUSH2 0x15A6 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x13EC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x3A1 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x154D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1558 DUP2 PUSH2 0x1A26 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1570 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1558 DUP2 PUSH2 0x1A26 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x158D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1598 DUP2 PUSH2 0x1A26 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15B7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1558 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15D7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15EF JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1608 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1631 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19FA JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1675 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19FA JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xF0 SWAP3 SWAP1 SWAP3 SHL PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND DUP3 MSTORE PUSH1 0x2 DUP3 ADD MSTORE PUSH1 0x22 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE PUSH2 0xFFFF DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP7 PUSH1 0x40 DUP5 ADD MSTORE DUP6 PUSH1 0x60 DUP5 ADD MSTORE DUP5 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP5 ADD MSTORE DUP1 DUP5 MLOAD AND PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0xE0 DUP5 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x1795 PUSH2 0x120 DUP5 ADD DUP3 PUSH2 0x1619 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964205772617070657220546F6B656E0000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C61746976652077656967687420636170206578636565647320616C6C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x776564206162736F6C757465206D6178696D756D000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x42616C616E636572546F6B656E41646D696E206E6F7420796574206163746976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6174656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP8 AND DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x19D1 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1619 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A15 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19FD JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14A7 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASLIMIT 0xE2 PC 0xA7 BALANCE 0xEB JUMPI SWAP11 PUSH18 0x7C8FE2E4D03E5F91038DB2FC3D39D3969767 0x4D PUSH24 0x34FD9464736F6C6343000701003300000000000000000000 ","sourceMap":"942:656:110:-:0;;;1002:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1095:6;1103:10;5694:6:94;2070:1:63;2175:7;:22;;;;2286:30:89;2339:6;-1:-1:-1;;;;;2339:28:89;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2286:84;;2380:15;2398:10;-1:-1:-1;;;;;2398:27:89;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2380:47;;2437:32;2472:6;-1:-1:-1;;;;;2472:25:89;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;2510:20:89;;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;;;2665:23:89;;;;2437:62;;-1:-1:-1;;;;;;2600:34:89;;;2665:21;;:23;;;;;;;;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2644:44:89;;;-1:-1:-1;;;;;2644:44:89;;;;;;;2722:10;-1:-1:-1;;;;;2722:30:89;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2699:55;;;;;;2794:10;-1:-1:-1;;;;;2794:37:89;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2764:69;;;;;;2863:10;-1:-1:-1;;;;;2863:27:89;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2843:49;;-1:-1:-1;;;;3053:7:89;:27;-1:-1:-1;;;;;;;;5712:24:94::1;::::0;;;;::::1;::::0;5827:27:::1;::::0;;-1:-1:-1;;;5827:27:94;;;;5746:23:::1;::::0;-1:-1:-1;;;;;5712:24:94;::::1;::::0;5827:25:::1;::::0;:27:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;5746:23;5712:24;5827:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5786:6;-1:-1:-1::0;;;;;5786:23:94::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5772:50:94::1;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:82;5887:21;;:2;:21;5864:44;::::0;-1:-1:-1;942:656:110;;-1:-1:-1;;;;942:656:110;1612:313:-1;;1752:2;1740:9;1731:7;1727:23;1723:32;1720:2;;;-1:-1;;1758:12;1720:2;114:6;108:13;126:58;178:5;126:58;:::i;:::-;1810:99;1714:211;-1:-1;;;1714:211::o;3188:515::-;;;3378:2;3366:9;3357:7;3353:23;3349:32;3346:2;;;-1:-1;;3384:12;3346:2;1247:6;1241:13;1259:63;1316:5;1259:63;:::i;:::-;3577:2;3655:22;;1042:13;3436:104;;-1:-1;1060:61;1042:13;1060:61;:::i;:::-;3585:102;;;;3340:363;;;;;:::o;3710:263::-;;3825:2;3813:9;3804:7;3800:23;3796:32;3793:2;;;-1:-1;;3831:12;3793:2;-1:-1;1412:13;;3787:186;-1:-1;3787:186::o;3980:259::-;;4093:2;4081:9;4072:7;4068:23;4064:32;4061:2;;;-1:-1;;4099:12;4061:2;1557:6;1551:13;5479:4;6913:5;5468:16;6890:5;6887:33;6877:2;;-1:-1;;6924:12;5496:167;-1:-1;;;;;5263:54;;5580:60;;5570:2;;5654:1;;5644:12;5570:2;5564:99;:::o;:::-;942:656:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":2372},{"length":32,"start":3201}],"14642":[{"length":32,"start":4264},{"length":32,"start":4498}],"14644":[{"length":32,"start":2207}],"14646":[{"length":32,"start":939},{"length":32,"start":1612}],"14648":[{"length":32,"start":833},{"length":32,"start":1252},{"length":32,"start":1441},{"length":32,"start":2765}],"14656":[{"length":32,"start":1734},{"length":32,"start":1968}],"14658":[{"length":32,"start":1859}],"14660":[{"length":32,"start":1892}],"16755":[{"length":32,"start":676},{"length":32,"start":2427},{"length":32,"start":3235},{"length":32,"start":3274},{"length":32,"start":3501},{"length":32,"start":3726},{"length":32,"start":3933}],"16757":[{"length":32,"start":1158},{"length":32,"start":3044}]},"linkReferences":{},"object":"6080604052600436106100f35760003560e01c806390fd50b31161008a578063b024522511610059578063b024522514610250578063c2c4c5c114610265578063cd6dc6871461026d578063d34fb2671461028d576100f3565b806390fd50b3146101fe5780639c868ac0146102115780639f86767114610226578063ab8f09451461023b576100f3565b80631b88094d116100c65780631b88094d146101925780634b820093146101a75780635e8a8389146101d457806383f5c39b146101e9576100f3565b806305c2c78d146100f8578063094007071461012357806310d3eb041461015057806314e956f514610172575b600080fd5b34801561010457600080fd5b5061010d6102a2565b60405161011a91906116b4565b60405180910390f35b34801561012f57600080fd5b5061014361013e36600461153c565b6102c7565b60405161011a91906119f1565b34801561015c57600080fd5b5061017061016b3660046115c6565b610329565b005b34801561017e57600080fd5b5061014361018d3660046115c6565b6103a4565b34801561019e57600080fd5b5061010d610462565b3480156101b357600080fd5b506101c76101c236600461153c565b61047e565b60405161011a91906117c8565b3480156101e057600080fd5b50610143610484565b3480156101f557600080fd5b506101436104a8565b61017061020c3660046115c6565b6104ae565b34801561021d57600080fd5b506101c76104b7565b34801561023257600080fd5b506101436104c0565b34801561024757600080fd5b506101706104cc565b34801561025c57600080fd5b50610143610568565b6101c761057f565b34801561027957600080fd5b5061017061028836600461157b565b610942565b34801561029957600080fd5b50610170610ab5565b7f00000000000000000000000000000000000000000000000000000000000000005b90565b600073ffffffffffffffffffffffffffffffffffffffff82163014610321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611969565b60405180910390fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610398576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b6103a181610b4e565b50565b600061045c7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b81526004016104049291906117a2565b60206040518083038186803b15801561041c57600080fd5b505afa158015610430573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045491906115de565b600654610bd0565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b50600190565b7f000000000000000000000000000000000000000000000000000000000000000090565b60065490565b6103a181610bdc565b60055460ff1690565b670de0b6b3a764000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461053b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600061057a610575610da9565b610f58565b905090565b600061058961101f565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b6002546000610605611038565b905080821015610934576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e5237906106819030906004016116b4565b600060405180830381600087803b15801561069b57600080fd5b505af11580156106af573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561083d57848111156107005761083d565b62093a808102600080610712836103a4565b905082851015801561072857508262093a800185105b156107e157828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161078c57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506107f69050565b670de0b6b3a764000062093a80828902020491505b827f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced8360405161082691906119f1565b60405180910390a2509390930192506001016106e8565b5060028490556004805483019055811580159061085d575060055460ff16155b15610930576040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636a627842906108d49030906004016116b4565b602060405180830381600087803b1580156108ee57600080fd5b505af1158015610902573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092691906115de565b5061093082610bdc565b5050505b6001925050506102c4611063565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109df57600080fd5b505afa1580156109f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a17919061155f565b73ffffffffffffffffffffffffffffffffffffffff1614610a64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103189061180a565b610a6d8161106a565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906117d3565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610b90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611878565b60068190556040517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb290610bc59083906119f1565b60405180910390a150565b80820390821102900390565b6000610c08827f0000000000000000000000000000000000000000000000000000000000000000611240565b905080610c1557506103a1565b6060610c1f610da9565b90506000610c2c82610f58565b9050803414610c67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611841565b610cc873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000086611257565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632cdf0b958230606a610d18610d13610462565b6113d3565b60408051606081018252338152600060208201528082018a905290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152610d71949392918c918c9190600401611725565b6000604051808303818588803b158015610d8a57600080fd5b505af1158015610d9e573d6000803e3d6000fd5b505050505050505050565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ed629c5c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e1157600080fd5b505afa158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4991906115a6565b15610f43576040517f8cfd8f5c00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690638cfd8f5c90610ec690606a9085906004016119dc565b60206040518083038186803b158015610ede57600080fd5b505afa158015610ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1691906115de565b9050600181604051602001610f2c92919061167f565b6040516020818303038152906040529150506102c4565b506040805160208101909152600081526102c4565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663365260b4606a610fa4610d13610462565b600080886040518663ffffffff1660e01b8152600401610fc89594939291906119a0565b604080518083038186803b158015610fdf57600080fd5b505afa158015610ff3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101791906115f6565b509392505050565b611031600260005414156101906113ec565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6001600055565b600254156110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031890611932565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561110c57600080fd5b505afa158015611120573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114491906115de565b90508061117d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610318906118d5565b600181905561118a611038565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111f857600080fd5b505af115801561120c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123091906115de565b60035561123c82610b4e565b5050565b60008082848161124c57fe5b069093039392505050565b801580159061130857506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e906112b590309086906004016116d5565b60206040518083038186803b1580156112cd57600080fd5b505afa1580156112e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130591906115de565b15155b156113af576113af8363095ea7b360e01b84600060405160240161132d9291906116fc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526113fa565b6113ce8363095ea7b360e01b848460405160240161132d9291906117a2565b505050565b73ffffffffffffffffffffffffffffffffffffffff1690565b8161123c5761123c816114ad565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114239190611663565b6000604051808303816000865af19150503d8060008114611460576040519150601f19603f3d011682016040523d82523d6000602084013e611465565b606091505b5091509150600082141561147d573d6000803e3d6000fd5b6114a781516000148061149f57508180602001905181019061149f91906115a6565b6101a26113ec565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526103a1917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b60006020828403121561154d578081fd5b813561155881611a26565b9392505050565b600060208284031215611570578081fd5b815161155881611a26565b6000806040838503121561158d578081fd5b823561159881611a26565b946020939093013593505050565b6000602082840312156115b7578081fd5b81518015158114611558578182fd5b6000602082840312156115d7578081fd5b5035919050565b6000602082840312156115ef578081fd5b5051919050565b60008060408385031215611608578182fd5b505080516020909101519092909150565b600081518084526116318160208601602086016119fa565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516116758184602087016119fa565b9190910192915050565b60f09290921b7fffff000000000000000000000000000000000000000000000000000000000000168252600282015260220190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808916835261ffff8816602084015286604084015285606084015284608084015260c060a08401528084511660c08401528060208501511660e08401525060408301516060610100840152611795610120840182611619565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526012908201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604082015260600190565b60208082526015908201527f496e76616c6964205772617070657220546f6b656e0000000000000000000000604082015260600190565b6020808252601a908201527f496e636f7272656374206d73672e76616c756520706173736564000000000000604082015260600190565b60208082526034908201527f52656c61746976652077656967687420636170206578636565647320616c6c6f60408201527f776564206162736f6c757465206d6178696d756d000000000000000000000000606082015260800190565b60208082526024908201527f42616c616e636572546f6b656e41646d696e206e6f742079657420616374697660408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252601e908201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604082015260600190565b600061ffff87168252856020830152846040830152831515606083015260a060808301526119d160a0830184611619565b979650505050505050565b61ffff92831681529116602082015260400190565b90815260200190565b60005b83811015611a155781810151838201526020016119fd565b838111156114a75750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146103a157600080fdfea264697066735822122045e258a731eb579a717c8fe2e4d03e5f91038db2fc3d39d39697674d7734fd9464736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90FD50B3 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB0245225 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x28D JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x90FD50B3 EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x9F867671 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x23B JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x1B88094D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x5E8A8389 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x1E9 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x5C2C78D EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x9400707 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x172 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x153C JUMP JUMPDEST PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x19F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x329 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x18D CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x3A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x462 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C7 PUSH2 0x1C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x153C JUMP JUMPDEST PUSH2 0x47E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x17C8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x484 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x4A8 JUMP JUMPDEST PUSH2 0x170 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x4AE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C7 PUSH2 0x4B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x4C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0x4CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x568 JUMP JUMPDEST PUSH2 0x1C7 PUSH2 0x57F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0x157B JUMP JUMPDEST PUSH2 0x942 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x170 PUSH2 0xAB5 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x321 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1969 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x398 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH2 0x3A1 DUP2 PUSH2 0xB4E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45C PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x404 SWAP3 SWAP2 SWAP1 PUSH2 0x17A2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x430 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x454 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xBD0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3A1 DUP2 PUSH2 0xBDC JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x53B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x57A PUSH2 0x575 PUSH2 0xDA9 JUMP JUMPDEST PUSH2 0xF58 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x589 PUSH2 0x101F JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5F8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x605 PUSH2 0x1038 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x934 JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x681 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x83D JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x700 JUMPI PUSH2 0x83D JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x712 DUP4 PUSH2 0x3A4 JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x728 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x7E1 JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x78C JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x7F6 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST DUP3 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED DUP4 PUSH1 0x40 MLOAD PUSH2 0x826 SWAP2 SWAP1 PUSH2 0x19F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x6E8 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x85D JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x930 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x8D4 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x902 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x926 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST POP PUSH2 0x930 DUP3 PUSH2 0xBDC JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x2C4 PUSH2 0x1063 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA17 SWAP2 SWAP1 PUSH2 0x155F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x180A JUMP JUMPDEST PUSH2 0xA6D DUP2 PUSH2 0x106A JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xB24 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xB90 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1878 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP1 PUSH2 0xBC5 SWAP1 DUP4 SWAP1 PUSH2 0x19F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC08 DUP3 PUSH32 0x0 PUSH2 0x1240 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xC15 JUMPI POP PUSH2 0x3A1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC1F PUSH2 0xDA9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC2C DUP3 PUSH2 0xF58 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE EQ PUSH2 0xC67 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1841 JUMP JUMPDEST PUSH2 0xCC8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP7 PUSH2 0x1257 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2CDF0B95 DUP3 ADDRESS PUSH1 0x6A PUSH2 0xD18 PUSH2 0xD13 PUSH2 0x462 JUMP JUMPDEST PUSH2 0x13D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE DUP1 DUP3 ADD DUP11 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP9 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xD71 SWAP5 SWAP4 SWAP3 SWAP2 DUP13 SWAP2 DUP13 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1725 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xED629C5C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE25 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE49 SWAP2 SWAP1 PUSH2 0x15A6 JUMP JUMPDEST ISZERO PUSH2 0xF43 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8CFD8F5C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x8CFD8F5C SWAP1 PUSH2 0xEC6 SWAP1 PUSH1 0x6A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x19DC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEF2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF16 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF2C SWAP3 SWAP2 SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2C4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x2C4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x365260B4 PUSH1 0x6A PUSH2 0xFA4 PUSH2 0xD13 PUSH2 0x462 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFC8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1017 SWAP2 SWAP1 PUSH2 0x15F6 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1031 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x13EC JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0x10A4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x1932 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x110C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1120 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1144 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x117D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x318 SWAP1 PUSH2 0x18D5 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0x118A PUSH2 0x1038 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x120C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1230 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST PUSH1 0x3 SSTORE PUSH2 0x123C DUP3 PUSH2 0xB4E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 PUSH2 0x124C JUMPI INVALID JUMPDEST MOD SWAP1 SWAP4 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1308 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x12B5 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x16D5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1305 SWAP2 SWAP1 PUSH2 0x15DE JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x13AF JUMPI PUSH2 0x13AF DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x16FC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x13CE DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x132D SWAP3 SWAP2 SWAP1 PUSH2 0x17A2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x123C JUMPI PUSH2 0x123C DUP2 PUSH2 0x14AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1423 SWAP2 SWAP1 PUSH2 0x1663 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1460 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1465 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x147D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x14A7 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x149F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x149F SWAP2 SWAP1 PUSH2 0x15A6 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x13EC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x3A1 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x154D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1558 DUP2 PUSH2 0x1A26 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1570 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1558 DUP2 PUSH2 0x1A26 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x158D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1598 DUP2 PUSH2 0x1A26 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15B7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1558 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15D7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15EF JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1608 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1631 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19FA JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1675 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19FA JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xF0 SWAP3 SWAP1 SWAP3 SHL PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND DUP3 MSTORE PUSH1 0x2 DUP3 ADD MSTORE PUSH1 0x22 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE PUSH2 0xFFFF DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP7 PUSH1 0x40 DUP5 ADD MSTORE DUP6 PUSH1 0x60 DUP5 ADD MSTORE DUP5 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP5 ADD MSTORE DUP1 DUP5 MLOAD AND PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0xE0 DUP5 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x1795 PUSH2 0x120 DUP5 ADD DUP3 PUSH2 0x1619 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964205772617070657220546F6B656E0000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F7272656374206D73672E76616C756520706173736564000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C61746976652077656967687420636170206578636565647320616C6C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x776564206162736F6C757465206D6178696D756D000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x42616C616E636572546F6B656E41646D696E206E6F7420796574206163746976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6174656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP8 AND DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x19D1 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1619 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A15 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19FD JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14A7 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASLIMIT 0xE2 PC 0xA7 BALANCE 0xEB JUMPI SWAP11 PUSH18 0x7C8FE2E4D03E5F91038DB2FC3D39D3969767 0x4D PUSH24 0x34FD9464736F6C6343000701003300000000000000000000 ","sourceMap":"942:656:110:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6564:99:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6895:191:89;;;;;;;;;;-1:-1:-1;6895:191:89;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7513:214::-;;;;;;;;;;-1:-1:-1;7513:214:89;;;;;:::i;:::-;;:::i;:::-;;8159:199;;;;;;;;;;-1:-1:-1;8159:199:89;;;;;:::i;:::-;;:::i;6381:97:94:-;;;;;;;;;;;;;:::i;6789:100:89:-;;;;;;;;;;-1:-1:-1;6789:100:89;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6832:108:94:-;;;;;;;;;;;;;:::i;8038:115:89:-;;;;;;;;;;;;;:::i;1499:97:110:-;;;;;;:::i;:::-;;:::i;7092:92:89:-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;7190:154::-;;;;;;;;;;;;;:::i;6982:133:94:-;;;;;;;;;;;;;:::i;3697:2655:89:-;;;:::i;5921:418:94:-;;;;;;;;;;-1:-1:-1;5921:418:94;;;;;:::i;:::-;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;6564:99:94:-;6644:11;6564:99;;:::o;6895:191:89:-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;:::i;:::-;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;6381:97:94:-;6461:10;;;;6381:97;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;6832:108:94:-;6913:20;6832:108;:::o;8038:115:89:-;8128:18;;8038:115;:::o;1499:97:110:-;1562:27;1578:10;1562:15;:27::i;7092:92:89:-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;7190:154::-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;:::i;:::-;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6982:133:94:-;7042:7;7068:40;7088:19;:17;:19::i;:::-;7068;:40::i;:::-;7061:47;;6982:133;:::o;3697:2655:89:-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;;;;;;;;;;:::i;:::-;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;:33:::1;:16;:33;::::0;::::1;::::0;:48:::1;::::0;4042:4:::1;::::0;4000:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5989:10;5978:38;6001:14;5978:38;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;:12:::1;:7;:12;::::0;::::1;::::0;:27:::1;::::0;6246:4:::1;::::0;6225:27:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6270:29;6286:12;6270:15;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;5921:418:94:-;6150:9;6119:41;;:11;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;;6111:75;;;;;;;;;;;;:::i;:::-;6259:40;6281:17;6259:21;:40::i;:::-;-1:-1:-1;6310:10:94;:22;;;;;;;;;;;;;;;5921:418::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;:::i;:::-;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;:::i;:::-;7929:18;:38;;;7982:43;;;;;;7950:17;;7982:43;:::i;:::-;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;7668:1683:94:-;7741:25;7769:66;7802:10;7814:20;7769:32;:66::i;:::-;7741:94;-1:-1:-1;7908:22:94;7904:59;;7946:7;;;7904:59;7973:26;8002:19;:17;:19::i;:::-;7973:48;;8031:23;8057:34;8077:13;8057:19;:34::i;:::-;8031:60;;8123:15;8110:9;:28;8102:67;;;;;;;;;;;;:::i;:::-;8255:55;:21;:9;:21;8285:11;8299:10;8255:21;:55::i;:::-;9009:11;:20;;;9038:15;9077:4;4193:3;9132:54;9171:14;:12;:14::i;:::-;9132:38;:54::i;:::-;9255:79;;;;;;;;9295:10;9255:79;;-1:-1:-1;9255:79:94;;;;;;;;;;9009:335;;;;;;;;;;;;;;;9200:10;;9224:17;;9255:79;9009:335;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7668:1683;;;;:::o;9357:1248::-;9409:12;10326:11;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10322:277;;;10398:70;;;;;10378:17;;10398:27;:11;:27;;;;:70;;4193:3;;10378:17;;10398:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10378:90;;4760:1;10531:9;10489:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10482:59;;;;;10322:277;-1:-1:-1;10579:9:94;;;;;;;;;-1:-1:-1;10579:9:94;;10572:16;;7121:541;7201:7;7403:17;7426:11;:27;;;4193:3;7503:54;7542:14;:12;:14::i;7503:54::-;7571:1;7586:5;7605:13;7426:202;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7402:226:94;7121:541;-1:-1:-1;;;7121:541:94:o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;:::i;:::-;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3413:33;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;:::i;:::-;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;819:169:96:-;898:7;917:12;941:10;932:6;:19;;;;;;968:13;;;;819:169;-1:-1:-1;;;819:169:96:o;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;:15;;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:19;:90::i;:::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;1407:94::-;1001:507;;;:::o;1073:137:96:-;1175:27;;;1073:137::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o;1459:126:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;696:241:-1;;800:2;788:9;779:7;775:23;771:32;768:2;;;-1:-1;;806:12;768:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;858:63;762:175;-1:-1;;;762:175::o;944:263::-;;1059:2;1047:9;1038:7;1034:23;1030:32;1027:2;;;-1:-1;;1065:12;1027:2;226:6;220:13;238:33;265:5;238:33;:::i;1214:366::-;;;1335:2;1323:9;1314:7;1310:23;1306:32;1303:2;;;-1:-1;;1341:12;1303:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1393:63;1493:2;1532:22;;;;485:20;;-1:-1;;;1297:283::o;1587:257::-;;1699:2;1687:9;1678:7;1674:23;1670:32;1667:2;;;-1:-1;;1705:12;1667:2;364:6;358:13;18615:5;17014:13;17007:21;18593:5;18590:32;18580:2;;-1:-1;;18626:12;1851:241;;1955:2;1943:9;1934:7;1930:23;1926:32;1923:2;;;-1:-1;;1961:12;1923:2;-1:-1;485:20;;1917:175;-1:-1;1917:175::o;2099:263::-;;2214:2;2202:9;2193:7;2189:23;2185:32;2182:2;;;-1:-1;;2220:12;2182:2;-1:-1;633:13;;2176:186;-1:-1;2176:186::o;2369:399::-;;;2501:2;2489:9;2480:7;2476:23;2472:32;2469:2;;;-1:-1;;2507:12;2469:2;-1:-1;;633:13;;2670:2;2720:22;;;633:13;;;;;-1:-1;2463:305::o;3370:323::-;;3502:5;16046:12;16192:6;16187:3;16180:19;3585:52;3630:6;16229:4;16224:3;16220:14;16229:4;3611:5;3607:16;3585:52;:::i;:::-;18289:2;18269:14;18285:7;18265:28;3649:39;;;;16229:4;3649:39;;3450:243;-1:-1;;3450:243::o;8573:271::-;;4210:5;16046:12;4321:52;4366:6;4361:3;4354:4;4347:5;4343:16;4321:52;:::i;:::-;4385:16;;;;;8707:137;-1:-1;;8707:137::o;8851:387::-;18381:3;18377:15;;;;;;8226:56;;9100:1;9091:11;;3321:37;9201:12;;;8993:245::o;9245:222::-;17283:42;17272:54;;;;2852:45;;9372:2;9357:18;;9343:124::o;9474:333::-;17283:42;17272:54;;;2852:45;;17272:54;;9793:2;9778:18;;2852:45;9629:2;9614:18;;9600:207::o;9814:345::-;17283:42;17272:54;;;;2852:45;;17488:4;17477:16;10145:2;10130:18;;4639:56;9975:2;9960:18;;9946:213::o;10166:948::-;;17283:42;;17276:5;17272:54;2859:3;2852:45;17191:6;8120:5;17180:18;10656:2;10645:9;10641:18;8091:36;3351:5;10739:2;10728:9;10724:18;3321:37;3351:5;10822:2;10811:9;10807:18;3321:37;3351:5;10905:3;10894:9;10890:19;3321:37;10493:3;10943;10932:9;10928:19;10921:49;17283:42;7477:16;7471:23;17272:54;10493:3;10482:9;10478:19;2852:45;17283:42;10656:2;7664:5;7660:16;7654:23;17272:54;7731:14;10482:9;7731:14;2852:45;;10739:2;7827:5;7823:16;7817:23;10822:2;7860:14;10482:9;7860:14;7853:38;7906:71;7387:14;10482:9;7387:14;7958:12;7906:71;:::i;:::-;10976:128;10464:650;-1:-1;;;;;;;;;10464:650::o;11121:333::-;17283:42;17272:54;;;;2852:45;;11440:2;11425:18;;3321:37;11276:2;11261:18;;11247:207::o;11461:210::-;17014:13;;17007:21;3204:34;;11582:2;11567:18;;11553:118::o;11678:416::-;11878:2;11892:47;;;4932:2;11863:18;;;16180:19;4968:20;16220:14;;;4948:41;5008:12;;;11849:245::o;12101:416::-;12301:2;12315:47;;;5259:2;12286:18;;;16180:19;5295:23;16220:14;;;5275:44;5338:12;;;12272:245::o;12524:416::-;12724:2;12738:47;;;5589:2;12709:18;;;16180:19;5625:28;16220:14;;;5605:49;5673:12;;;12695:245::o;12947:416::-;13147:2;13161:47;;;5924:2;13132:18;;;16180:19;5960:34;16220:14;;;5940:55;6029:22;6015:12;;;6008:44;6071:12;;;13118:245::o;13370:416::-;13570:2;13584:47;;;6322:2;13555:18;;;16180:19;6358:34;16220:14;;;6338:55;6427:6;6413:12;;;6406:28;6453:12;;;13541:245::o;13793:416::-;13993:2;14007:47;;;6704:2;13978:18;;;16180:19;6740:21;16220:14;;;6720:42;6781:12;;;13964:245::o;14216:416::-;14416:2;14430:47;;;7032:2;14401:18;;;16180:19;7068:32;16220:14;;;7048:53;7120:12;;;14387:245::o;14639:752::-;;17191:6;8120:5;17180:18;8098:3;8091:36;3351:5;15059:2;15048:9;15044:18;3321:37;17592:24;15150:2;15139:9;15135:18;4492:58;3231:5;17014:13;17007:21;15227:2;15216:9;15212:18;3204:34;14896:3;15264;15253:9;15249:19;15242:49;15305:76;14896:3;14885:9;14881:19;15367:6;15305:76;:::i;:::-;15297:84;14867:524;-1:-1;;;;;;;14867:524::o;15398:325::-;17191:6;17180:18;;;8091:36;;17180:18;;15709:2;15694:18;;8091:36;15549:2;15534:18;;15520:203::o;15730:222::-;3321:37;;;15857:2;15842:18;;15828:124::o;17748:268::-;17813:1;17820:101;17834:6;17831:1;17828:13;17820:101;;;17901:11;;;17895:18;17882:11;;;17875:39;17856:2;17849:10;17820:101;;;17936:6;17933:1;17930:13;17927:2;;;-1:-1;;17813:1;17983:16;;17976:27;17797:219::o;18410:117::-;17283:42;18497:5;17272:54;18472:5;18469:35;18459:2;;18518:1;;18508:12"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","bridge(uint256)":"90fd50b3","checkpoint()":"c2c4c5c1","getBALProxy()":"05c2c78d","getCappedRelativeWeight(uint256)":"14e956f5","getMinimumBridgeAmount()":"5e8a8389","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract ILayerZeroBALProxy\",\"name\":\"lzBALProxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"bridge\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBALProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumBridgeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is used by the Avalanche Root Gauge deployment task in the deployments repo, and is referenced there. Do not delete.\",\"kind\":\"dev\",\"methods\":{\"bridge(uint256)\":{\"details\":\"It would be very difficult to contrive a fork test that set the mintAmount to a precise value, so the bridge limits are best tested with a mock and unit tests. It must be payable to send ETH to pay for gas in the child chain.\",\"params\":{\"mintAmount\":\"Amount to be bridged\"}},\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getBALProxy()\":{\"details\":\"Return the Layer Zero proxy contract for the underlying BAL token.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getMinimumBridgeAmount()\":{\"details\":\"Returns the minimum amount of tokens that can be bridged. Values lower than this one will not even be transferred to the proxy.\"},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockAvalancheRootGauge.sol\":\"MockAvalancheRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/avalanche/AvalancheRootGauge.sol\":{\"keccak256\":\"0x43bdf93c991ce12749932136f830478dc8981cd2123591b02b07103c7f4a73d8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0670c48669f090af80c4454a46c5e33d7a499015565cd57854fe9e2d1e9c85a9\",\"dweb:/ipfs/QmVUXzfTTKW2pUYRQ4neK6TmheDSsBazsShvKDLyMUmdiY\"]},\"contracts/gauges/avalanche/AvalancheRootGaugeLib.sol\":{\"keccak256\":\"0xe49df779008ec324de421878d86c9ad9fc2700e47931f8de70460eaacc0e5d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dd6e05a9aeb465123a157098a73625e933ab10fa48c43afd96779289bbb9720c\",\"dweb:/ipfs/Qmd89UuKiLJcrosj2h8e4vM9vTqGdUHpkjQU5np19ZpbUG\"]},\"contracts/test/MockAvalancheRootGauge.sol\":{\"keccak256\":\"0xfe5f303523607bee8cc8a4c29cf9289cd57f41b0c0c4f726cd6de8ade2be5569\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e71d345dce247401106a01c20ce453b7093feffe66c009f769eaecd28abf957\",\"dweb:/ipfs/QmSRS18tEyu2MA9YeYWECuzVB4hYdvTEhDqVLHT2WpyMS8\"]}},\"version\":1}"}},"contracts/test/MockBalancerMinter.sol":{"MockBalancerMinter":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"MintFor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"gauges","type":"address[]"},{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"MintForMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"uint256","name":"minted","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"bool","name":"approval","type":"bool"}],"name":"MinterApprovalSet","type":"event"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"allowed_to_mint_for","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getMinterApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"mintManyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mint_for","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[8]","name":"gauges","type":"address[8]"}],"name":"mint_many","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setMinted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"}],"name":"setMinterApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"setMinterApprovalWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mintForReturn","type":"uint256"}],"name":"setMockMintFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mintForManyReturn","type":"uint256"}],"name":"setMockMintForMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"toggle_approve_mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"61010060405234801561001157600080fd5b506040516110d43803806110d48339818101604052602081101561003457600080fd5b5051604080518082018252600f81526e2130b630b731b2b91026b4b73a32b960891b602082810191825283518085019094526001808552603160f81b918501918252600055915190206080529051902060a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526001600160601b031960609190911b1660e05260805160a05160c05160e05160601c610fde6100f660003980610897525080610ca4525080610ce6525080610cc55250610fde6000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806390193b7c116100b2578063c003969911610081578063dd289d6011610066578063dd289d60146104f2578063e96ff98314610525578063ed24911d1461054257610136565b8063c003969914610463578063c65427941461049457610136565b806390193b7c146103f657806395c3d17c14610429578063a0990033146102bb578063a51e19041461044657610136565b80633c543bc6116101095780636a627842116100ee5780636a6278421461034d5780637504a15d146103805780638b752bb0146103bb57610136565b80633c543bc6146102bb578063484935a21461030a57610136565b80630de54ba01461013b57806327f18ae314610178578063397ada21146101b35780633b9f738414610235575b600080fd5b6101766004803603604081101561015157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135151561054a565b005b6101766004803603604081101561018e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610559565b610223600480360360208110156101c957600080fd5b8101906020810181356401000000008111156101e457600080fd5b8201836020820111156101f657600080fd5b8035906020019184602083028401116401000000008311171561021857600080fd5b5090925090506105ae565b60408051918252519081900360200190f35b6102236004803603604081101561024b57600080fd5b81019060208101813564010000000081111561026657600080fd5b82018360208201111561027857600080fd5b8035906020019184602083028401116401000000008311171561029a57600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff166105d3565b6102f6600480360360408110156102d157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610682565b604080519115158252519081900360200190f35b6101766004803603606081101561032057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356106bd565b6102236004803603602081101561036357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106cd565b6102236004803603604081101561039657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166106f0565b610223600480360360408110156103d157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661078d565b6102236004803603602081101561040c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107c5565b6101766004803603602081101561043f57600080fd5b50356107ed565b610176600480360361010081101561045d57600080fd5b506107f2565b61046b610895565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610176600480360360e08110156104aa57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101351515916040820135169060608101359060ff6080820135169060a08101359060c001356108b9565b6101766004803603602081101561050857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661096b565b6101766004803603602081101561053b57600080fd5b50356109ab565b6102236109b0565b6105558233836109bf565b5050565b610561610a5b565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156105a6576105a48282610a74565b505b610555610ad0565b60006105b8610a5b565b6105c3838333610ad7565b90506105cd610ad0565b92915050565b60006105dd610a5b565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff16610666576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610f866023913960400191505060405180910390fd5b610671848484610ad7565b905061067b610ad0565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260036020908152604080832093909416825291909152205460ff1690565b6106c8838383610b83565b505050565b60006106d7610a5b565b6106e18233610a74565b90506106eb610ad0565b919050565b60006106fa610a5b565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff16610783576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610f866023913960400191505060405180910390fd5b6105c38383610a74565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b600455565b6107fa610a5b565b60005b600881101561088957600082826008811061081457fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561085057610889565b61088082826008811061085f57fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1633610a74565b506001016107fd565b50610892610ad0565b50565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007fc87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd81538088886108e7896107c5565b6040805160208082019690965273ffffffffffffffffffffffffffffffffffffffff909416848201529115156060840152608083015260a08083018990528151808403909101815260c0909201905280519101209050610956868261094d878787610bfa565b886101f8610c39565b6109618887896109bf565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020908152604080832033845290915290205461089290829060ff161561054a565b600555565b60006109ba610ca0565b905090565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291519293927fa3ffb51320bbca4e61e7423e3c97dd7bd7e31b6ea7429eb26ef92780e84572a09281900390910190a3505050565b610a6d60026000541415610190610d6b565b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff80851682528316602082015281516000927fe79957009f47ab19e55b0de47f86d50b7aa34415b86803b58042231fddb55ca1928290030190a15060045492915050565b6001600055565b60007f21f839751f19294048b530b9f94549c7e8191986f1d59d75f002b051401014c084848460405180806020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858582818152602001925060200280828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909201829003965090945050505050a1506005549392505050565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526002602090815260408083209487168084529482529182902085905581519384528301849052805191927f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0929081900390910190a2505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610c4485610d79565b9050610c5a610c54878387610de0565b83610d6b565b610c69428410156101b8610d6b565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600160208190526040909120805490910190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610d0d610ef2565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816105555761055581610ef6565b6000610d83610ca0565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000610df282516041146101b9610d6b565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610e6b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610ee657508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610892917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572a2646970667358221220d3cdce698f2534e91682210b305526a0aaa62723f547610a317c0fc0c63e7b7e64736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x10D4 CODESIZE SUB DUP1 PUSH2 0x10D4 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xF DUP2 MSTORE PUSH15 0x2130B630B731B2B91026B4B73A32B9 PUSH1 0x89 SHL PUSH1 0x20 DUP3 DUP2 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x1 DUP1 DUP6 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP2 DUP6 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 SSTORE SWAP2 MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xA0 MSTORE PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0xFDE PUSH2 0xF6 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x897 MSTORE POP DUP1 PUSH2 0xCA4 MSTORE POP DUP1 PUSH2 0xCE6 MSTORE POP DUP1 PUSH2 0xCC5 MSTORE POP PUSH2 0xFDE PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x136 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90193B7C GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xC0039699 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xDD289D60 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDD289D60 EQ PUSH2 0x4F2 JUMPI DUP1 PUSH4 0xE96FF983 EQ PUSH2 0x525 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x542 JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0xC0039699 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0xC6542794 EQ PUSH2 0x494 JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0x90193B7C EQ PUSH2 0x3F6 JUMPI DUP1 PUSH4 0x95C3D17C EQ PUSH2 0x429 JUMPI DUP1 PUSH4 0xA0990033 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0xA51E1904 EQ PUSH2 0x446 JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x6A627842 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0x7504A15D EQ PUSH2 0x380 JUMPI DUP1 PUSH4 0x8B752BB0 EQ PUSH2 0x3BB JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x484935A2 EQ PUSH2 0x30A JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0xDE54BA0 EQ PUSH2 0x13B JUMPI DUP1 PUSH4 0x27F18AE3 EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x397ADA21 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x3B9F7384 EQ PUSH2 0x235 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x54A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x559 JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5D3 JUMP JUMPDEST PUSH2 0x2F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x682 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6BD JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6CD JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x6F0 JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x78D JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7C5 JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7ED JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x46B PUSH2 0x895 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x8B9 JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x508 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x96B JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9AB JUMP JUMPDEST PUSH2 0x223 PUSH2 0x9B0 JUMP JUMPDEST PUSH2 0x555 DUP3 CALLER DUP4 PUSH2 0x9BF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x561 PUSH2 0xA5B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5A6 JUMPI PUSH2 0x5A4 DUP3 DUP3 PUSH2 0xA74 JUMP JUMPDEST POP JUMPDEST PUSH2 0x555 PUSH2 0xAD0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B8 PUSH2 0xA5B JUMP JUMPDEST PUSH2 0x5C3 DUP4 DUP4 CALLER PUSH2 0xAD7 JUMP JUMPDEST SWAP1 POP PUSH2 0x5CD PUSH2 0xAD0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DD PUSH2 0xA5B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x666 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF86 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x671 DUP5 DUP5 DUP5 PUSH2 0xAD7 JUMP JUMPDEST SWAP1 POP PUSH2 0x67B PUSH2 0xAD0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6C8 DUP4 DUP4 DUP4 PUSH2 0xB83 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D7 PUSH2 0xA5B JUMP JUMPDEST PUSH2 0x6E1 DUP3 CALLER PUSH2 0xA74 JUMP JUMPDEST SWAP1 POP PUSH2 0x6EB PUSH2 0xAD0 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FA PUSH2 0xA5B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x783 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF86 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5C3 DUP4 DUP4 PUSH2 0xA74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH2 0x7FA PUSH2 0xA5B JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x889 JUMPI PUSH1 0x0 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x814 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x850 JUMPI PUSH2 0x889 JUMP JUMPDEST PUSH2 0x880 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x85F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0xA74 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x7FD JUMP JUMPDEST POP PUSH2 0x892 PUSH2 0xAD0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xC87351A089BBDC3B2B9299D2CE29F08FD982826B275B3642939A2F7FDD815380 DUP9 DUP9 PUSH2 0x8E7 DUP10 PUSH2 0x7C5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP10 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH2 0x956 DUP7 DUP3 PUSH2 0x94D DUP8 DUP8 DUP8 PUSH2 0xBFA JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x961 DUP9 DUP8 DUP10 PUSH2 0x9BF JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x892 SWAP1 DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x54A JUMP JUMPDEST PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BA PUSH2 0xCA0 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xA3FFB51320BBCA4E61E7423E3C97DD7BD7E31B6EA7429EB26EF92780E84572A0 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xA6D PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x0 SWAP3 PUSH32 0xE79957009F47AB19E55B0DE47F86D50B7AA34415B86803B58042231FDDB55CA1 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP PUSH1 0x4 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x21F839751F19294048B530B9F94549C7E8191986F1D59D75F002B051401014C0 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP6 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP7 POP SWAP1 SWAP5 POP POP POP POP POP LOG1 POP PUSH1 0x5 SLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE DUP4 ADD DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 PUSH32 0x9D228D69B5FDB8D273A2336F8FB8612D039631024EA9BF09C424A9503AA078F0 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC44 DUP6 PUSH2 0xD79 JUMP JUMPDEST SWAP1 POP PUSH2 0xC5A PUSH2 0xC54 DUP8 DUP4 DUP8 PUSH2 0xDE0 JUMP JUMPDEST DUP4 PUSH2 0xD6B JUMP JUMPDEST PUSH2 0xC69 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xD6B JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xD0D PUSH2 0xEF2 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x555 JUMPI PUSH2 0x555 DUP2 PUSH2 0xEF6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD83 PUSH2 0xCA0 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF2 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xEE6 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x892 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID NUMBER PUSH2 0x6C6C PUSH6 0x72206E6F7420 PUSH2 0x6C6C PUSH16 0x77656420746F206D696E7420666F7220 PUSH22 0x736572A2646970667358221220D3CDCE698F2534E916 DUP3 0x21 SIGNEXTEND ADDRESS SSTORE 0x26 LOG0 0xAA 0xA6 0x27 0x23 CREATE2 SELFBALANCE PUSH2 0xA31 PUSH29 0xFC0C63E7B7E64736F6C63430007010033000000000000000000000000 ","sourceMap":"1182:1169:111:-:0;;;1415:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1415:136:111;1821:152:66;;;;;;;;;;;-1:-1:-1;;;1415:136:111;1821:152:66;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1821:152:66;;;;;;-1:-1:-1;2175:22:63;2100::58;;;;2085:37;;2150:25;;;;2132:43;;2198:95;2185:108;;-1:-1:-1;;;;;;1952:14:66::1;::::0;;;;;::::1;::::0;1182:1169:111;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"5935":[{"length":32,"start":3269}],"5937":[{"length":32,"start":3302}],"5939":[{"length":32,"start":3236}],"7437":[{"length":32,"start":2199}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101365760003560e01c806390193b7c116100b2578063c003969911610081578063dd289d6011610066578063dd289d60146104f2578063e96ff98314610525578063ed24911d1461054257610136565b8063c003969914610463578063c65427941461049457610136565b806390193b7c146103f657806395c3d17c14610429578063a0990033146102bb578063a51e19041461044657610136565b80633c543bc6116101095780636a627842116100ee5780636a6278421461034d5780637504a15d146103805780638b752bb0146103bb57610136565b80633c543bc6146102bb578063484935a21461030a57610136565b80630de54ba01461013b57806327f18ae314610178578063397ada21146101b35780633b9f738414610235575b600080fd5b6101766004803603604081101561015157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135151561054a565b005b6101766004803603604081101561018e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610559565b610223600480360360208110156101c957600080fd5b8101906020810181356401000000008111156101e457600080fd5b8201836020820111156101f657600080fd5b8035906020019184602083028401116401000000008311171561021857600080fd5b5090925090506105ae565b60408051918252519081900360200190f35b6102236004803603604081101561024b57600080fd5b81019060208101813564010000000081111561026657600080fd5b82018360208201111561027857600080fd5b8035906020019184602083028401116401000000008311171561029a57600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff166105d3565b6102f6600480360360408110156102d157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610682565b604080519115158252519081900360200190f35b6101766004803603606081101561032057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356106bd565b6102236004803603602081101561036357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106cd565b6102236004803603604081101561039657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166106f0565b610223600480360360408110156103d157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661078d565b6102236004803603602081101561040c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107c5565b6101766004803603602081101561043f57600080fd5b50356107ed565b610176600480360361010081101561045d57600080fd5b506107f2565b61046b610895565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610176600480360360e08110156104aa57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101351515916040820135169060608101359060ff6080820135169060a08101359060c001356108b9565b6101766004803603602081101561050857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661096b565b6101766004803603602081101561053b57600080fd5b50356109ab565b6102236109b0565b6105558233836109bf565b5050565b610561610a5b565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156105a6576105a48282610a74565b505b610555610ad0565b60006105b8610a5b565b6105c3838333610ad7565b90506105cd610ad0565b92915050565b60006105dd610a5b565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff16610666576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610f866023913960400191505060405180910390fd5b610671848484610ad7565b905061067b610ad0565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260036020908152604080832093909416825291909152205460ff1690565b6106c8838383610b83565b505050565b60006106d7610a5b565b6106e18233610a74565b90506106eb610ad0565b919050565b60006106fa610a5b565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff16610783576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610f866023913960400191505060405180910390fd5b6105c38383610a74565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b600455565b6107fa610a5b565b60005b600881101561088957600082826008811061081457fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561085057610889565b61088082826008811061085f57fe5b602002013573ffffffffffffffffffffffffffffffffffffffff1633610a74565b506001016107fd565b50610892610ad0565b50565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007fc87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd81538088886108e7896107c5565b6040805160208082019690965273ffffffffffffffffffffffffffffffffffffffff909416848201529115156060840152608083015260a08083018990528151808403909101815260c0909201905280519101209050610956868261094d878787610bfa565b886101f8610c39565b6109618887896109bf565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020908152604080832033845290915290205461089290829060ff161561054a565b600555565b60006109ba610ca0565b905090565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291519293927fa3ffb51320bbca4e61e7423e3c97dd7bd7e31b6ea7429eb26ef92780e84572a09281900390910190a3505050565b610a6d60026000541415610190610d6b565b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff80851682528316602082015281516000927fe79957009f47ab19e55b0de47f86d50b7aa34415b86803b58042231fddb55ca1928290030190a15060045492915050565b6001600055565b60007f21f839751f19294048b530b9f94549c7e8191986f1d59d75f002b051401014c084848460405180806020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858582818152602001925060200280828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909201829003965090945050505050a1506005549392505050565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526002602090815260408083209487168084529482529182902085905581519384528301849052805191927f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0929081900390910190a2505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610c4485610d79565b9050610c5a610c54878387610de0565b83610d6b565b610c69428410156101b8610d6b565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600160208190526040909120805490910190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610d0d610ef2565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816105555761055581610ef6565b6000610d83610ca0565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000610df282516041146101b9610d6b565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610e6b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610ee657508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610892917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572a2646970667358221220d3cdce698f2534e91682210b305526a0aaa62723f547610a317c0fc0c63e7b7e64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x136 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90193B7C GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xC0039699 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xDD289D60 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDD289D60 EQ PUSH2 0x4F2 JUMPI DUP1 PUSH4 0xE96FF983 EQ PUSH2 0x525 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x542 JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0xC0039699 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0xC6542794 EQ PUSH2 0x494 JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0x90193B7C EQ PUSH2 0x3F6 JUMPI DUP1 PUSH4 0x95C3D17C EQ PUSH2 0x429 JUMPI DUP1 PUSH4 0xA0990033 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0xA51E1904 EQ PUSH2 0x446 JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x6A627842 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0x7504A15D EQ PUSH2 0x380 JUMPI DUP1 PUSH4 0x8B752BB0 EQ PUSH2 0x3BB JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0x3C543BC6 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x484935A2 EQ PUSH2 0x30A JUMPI PUSH2 0x136 JUMP JUMPDEST DUP1 PUSH4 0xDE54BA0 EQ PUSH2 0x13B JUMPI DUP1 PUSH4 0x27F18AE3 EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x397ADA21 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x3B9F7384 EQ PUSH2 0x235 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x54A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x559 JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5D3 JUMP JUMPDEST PUSH2 0x2F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x682 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6BD JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6CD JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x6F0 JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x78D JUMP JUMPDEST PUSH2 0x223 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7C5 JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7ED JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x46B PUSH2 0x895 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x8B9 JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x508 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x96B JUMP JUMPDEST PUSH2 0x176 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9AB JUMP JUMPDEST PUSH2 0x223 PUSH2 0x9B0 JUMP JUMPDEST PUSH2 0x555 DUP3 CALLER DUP4 PUSH2 0x9BF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x561 PUSH2 0xA5B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5A6 JUMPI PUSH2 0x5A4 DUP3 DUP3 PUSH2 0xA74 JUMP JUMPDEST POP JUMPDEST PUSH2 0x555 PUSH2 0xAD0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B8 PUSH2 0xA5B JUMP JUMPDEST PUSH2 0x5C3 DUP4 DUP4 CALLER PUSH2 0xAD7 JUMP JUMPDEST SWAP1 POP PUSH2 0x5CD PUSH2 0xAD0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DD PUSH2 0xA5B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x666 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF86 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x671 DUP5 DUP5 DUP5 PUSH2 0xAD7 JUMP JUMPDEST SWAP1 POP PUSH2 0x67B PUSH2 0xAD0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6C8 DUP4 DUP4 DUP4 PUSH2 0xB83 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D7 PUSH2 0xA5B JUMP JUMPDEST PUSH2 0x6E1 DUP3 CALLER PUSH2 0xA74 JUMP JUMPDEST SWAP1 POP PUSH2 0x6EB PUSH2 0xAD0 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FA PUSH2 0xA5B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x783 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF86 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5C3 DUP4 DUP4 PUSH2 0xA74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH2 0x7FA PUSH2 0xA5B JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x8 DUP2 LT ISZERO PUSH2 0x889 JUMPI PUSH1 0x0 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x814 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x850 JUMPI PUSH2 0x889 JUMP JUMPDEST PUSH2 0x880 DUP3 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x85F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0xA74 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x7FD JUMP JUMPDEST POP PUSH2 0x892 PUSH2 0xAD0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xC87351A089BBDC3B2B9299D2CE29F08FD982826B275B3642939A2F7FDD815380 DUP9 DUP9 PUSH2 0x8E7 DUP10 PUSH2 0x7C5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP5 DUP3 ADD MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP10 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 POP PUSH2 0x956 DUP7 DUP3 PUSH2 0x94D DUP8 DUP8 DUP8 PUSH2 0xBFA JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x961 DUP9 DUP8 DUP10 PUSH2 0x9BF JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x892 SWAP1 DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x54A JUMP JUMPDEST PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BA PUSH2 0xCA0 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xA3FFB51320BBCA4E61E7423E3C97DD7BD7E31B6EA7429EB26EF92780E84572A0 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xA6D PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x0 SWAP3 PUSH32 0xE79957009F47AB19E55B0DE47F86D50B7AA34415B86803B58042231FDDB55CA1 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP PUSH1 0x4 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x21F839751F19294048B530B9F94549C7E8191986F1D59D75F002B051401014C0 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP6 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP7 POP SWAP1 SWAP5 POP POP POP POP POP LOG1 POP PUSH1 0x5 SLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE DUP4 ADD DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 PUSH32 0x9D228D69B5FDB8D273A2336F8FB8612D039631024EA9BF09C424A9503AA078F0 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC44 DUP6 PUSH2 0xD79 JUMP JUMPDEST SWAP1 POP PUSH2 0xC5A PUSH2 0xC54 DUP8 DUP4 DUP8 PUSH2 0xDE0 JUMP JUMPDEST DUP4 PUSH2 0xD6B JUMP JUMPDEST PUSH2 0xC69 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xD6B JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xD0D PUSH2 0xEF2 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x555 JUMPI PUSH2 0x555 DUP2 PUSH2 0xEF6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD83 PUSH2 0xCA0 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF2 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xEE6 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x892 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID NUMBER PUSH2 0x6C6C PUSH6 0x72206E6F7420 PUSH2 0x6C6C PUSH16 0x77656420746F206D696E7420666F7220 PUSH22 0x736572A2646970667358221220D3CDCE698F2534E916 DUP3 0x21 SIGNEXTEND ADDRESS SSTORE 0x26 LOG0 0xAA 0xA6 0x27 0x23 CREATE2 SELFBALANCE PUSH2 0xA31 PUSH29 0xFC0C63E7B7E64736F6C63430007010033000000000000000000000000 ","sourceMap":"1182:1169:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3440:139:66;;;;;;;;;;;;;;;;-1:-1:-1;3440:139:66;;;;;;;;;;;:::i;:::-;;5582:178;;;;;;;;;;;;;;;;-1:-1:-1;5582:178:66;;;;;;;;;;;:::i;2324:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2324:150:66;;-1:-1:-1;2324:150:66;-1:-1:-1;2324:150:66;:::i;:::-;;;;;;;;;;;;;;;;2788:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2788:251:66;-1:-1:-1;2788:251:66;;;;:::i;3251:147::-;;;;;;;;;;;;;;;;-1:-1:-1;3251:147:66;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1791:156:111;;;;;;;;;;;;;;;;-1:-1:-1;1791:156:111;;;;;;;;;;;;;;;;;;:::i;2153:129:66:-;;;;;;;;;;;;;;;;-1:-1:-1;2153:129:66;;;;:::i;2516:230::-;;;;;;;;;;;;;;;;-1:-1:-1;2516:230:66;;;;;;;;;;;:::i;3081:128::-;;;;;;;;;;;;;;;;-1:-1:-1;3081:128:66;;;;;;;;;;;:::i;1303:121:47:-;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:47;;;;:::i;1557:103:111:-;;;;;;;;;;;;;;;;-1:-1:-1;1557:103:111;;:::i;5278:262:66:-;;;;;;;;;;;;;;;;-1:-1:-1;5278:262:66;:::i;2015:96::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3621:541;;;;;;;;;;;;;;;;-1:-1:-1;3621:541:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5802:142::-;;;;;;;;;;;;;;;;-1:-1:-1;5802:142:66;;;;:::i;1666:119:111:-;;;;;;;;;;;;;;;;-1:-1:-1;1666:119:111;;:::i;1184:113:47:-;;;:::i;3440:139:66:-;3524:48;3543:6;3551:10;3563:8;3524:18;:48::i;:::-;3440:139;;:::o;5582:178::-;2613:20:63;:18;:20::i;:::-;5689:10:66::1;5674:26;::::0;;;:14:::1;:26;::::0;;;;;;;::::1;:32:::0;::::1;::::0;;;;;;;;::::1;;5670:84;;;5722:21;5731:5;5738:4;5722:8;:21::i;:::-;;5670:84;2654:19:63::0;:17;:19::i;2324:150:66:-;2409:7;2613:20:63;:18;:20::i;:::-;2435:32:66::1;2448:6;;2456:10;2435:12;:32::i;:::-;2428:39;;2654:19:63::0;:17;:19::i;:::-;2324:150:66;;;;:::o;2788:251::-;2890:7;2613:20:63;:18;:20::i;:::-;2932:10:66::1;2917:26;::::0;;;:14:::1;:26;::::0;;;;;;;::::1;:32:::0;::::1;::::0;;;;;;;;::::1;;2909:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3006:26;3019:6;;3027:4;3006:12;:26::i;:::-;2999:33;;2654:19:63::0;:17;:19::i;:::-;2788:251:66;;;;;:::o;3251:147::-;3363:22;;;;3340:4;3363:22;;;:14;:22;;;;;;;;:28;;;;;;;;;;;;;;;3251:147::o;1791:156:111:-;1910:30;1921:4;1927:5;1934;1910:10;:30::i;:::-;1791:156;;;:::o;2153:129:66:-;2222:7;2613:20:63;:18;:20::i;:::-;2248:27:66::1;2257:5;2264:10;2248:8;:27::i;:::-;2241:34;;2654:19:63::0;:17;:19::i;:::-;2153:129:66;;;:::o;2516:230::-;2602:7;2613:20:63;:18;:20::i;:::-;2644:10:66::1;2629:26;::::0;;;:14:::1;:26;::::0;;;;;;;::::1;:32:::0;::::1;::::0;;;;;;;;::::1;;2621:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2718:21;2727:5;2734:4;2718:8;:21::i;3081:128::-:0;3182:13;;;;3156:7;3182:13;;;:7;:13;;;;;;;;:20;;;;;;;;;;;;;3081:128::o;1303:121:47:-;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;1557:103:111:-;1623:14;:30;1557:103::o;5278:262:66:-;2613:20:63;:18;:20::i;:::-;5371:9:66::1;5366:168;5390:1;5386;:5;5366:168;;;5437:1;5416:6:::0;5423:1;5416:9:::1;::::0;::::1;;;;;;;;;;;:23;;;5412:67;;;5459:5;;5412:67;5492:31;5501:6;5508:1;5501:9;;;;;;;;;;;;;5512:10;5492:8;:31::i;:::-;-1:-1:-1::0;5393:3:66::1;;5366:168;;;;2654:19:63::0;:17;:19::i;:::-;5278:262:66;:::o;2015:96::-;2098:6;2015:96;:::o;3621:541::-;3845:18;1618:105;3931:6;3939:8;3949:18;3962:4;3949:12;:18::i;:::-;3889:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3866:122;;;;;;-1:-1:-1;3999:103:66;4021:4;3866:122;4039:26;4057:1;4060;4063;4039:17;:26::i;:::-;4067:8;13190:3:31;3999:21:66;:103::i;:::-;4113:42;4132:6;4140:4;4146:8;4113:18;:42::i;:::-;3621:541;;;;;;;;:::o;5802:142::-;5902:22;;;;;;;:14;:22;;;;;;;;5925:10;5902:34;;;;;;;;5875:62;;5893:6;;5902:34;;5901:35;5875:17;:62::i;1666:119:111:-;1740:18;:38;1666:119::o;1184:113:47:-;1244:7;1270:20;:18;:20::i;:::-;1263:27;;1184:113;:::o;4168:223:66:-;4289:22;;;;;;;;:14;:22;;;;;;;;:28;;;;;;;;;;;;;:39;;;;;;;;;;;;;4343:41;;;;;;;4289:22;;:28;4343:41;;;;;;;;;;4168:223;;;:::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;1980:169:111:-;2091:20;;;;;;;;;;;;;;;;;2054;;2091;;;;;;;;-1:-1:-1;2128:14:111;;1980:169;;;;:::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;2155:194:111:-;2245:20;2282:25;2294:6;;2302:4;2282:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2282:25:111;;-1:-1:-1;;;;;2282:25:111;-1:-1:-1;2324:18:111;;2155:194;;;;;:::o;4424:189:66:-;4537:13;;;;;;;;:7;:13;;;;;;;;:20;;;;;;;;;;;;;:28;;;4580:26;;;;;;;;;;;;4537:13;;4580:26;;;;;;;;;;;4424:189;;;:::o;3803:419:47:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:47;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:47:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:31;2487:8:47;:63::i;:::-;-1:-1:-1;;;2884:19:47;;;;;;;;2907:1;2884:19;;;;;;;;:24;;;;;;;-1:-1:-1;;1701:1214:47:o;2386:188:58:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;3199:183:58:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:47:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:31;3082:8:47;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:47;;;;;;-1:-1:-1;;3728:30:47;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:47:o;3433:187:58:-;3595:9;;3570:44::o;1459:126:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"allowed_to_mint_for(address,address)":"a0990033","getBalancerToken()":"c0039699","getDomainSeparator()":"ed24911d","getMinterApproval(address,address)":"3c543bc6","getNextNonce(address)":"90193b7c","mint(address)":"6a627842","mintFor(address,address)":"7504a15d","mintMany(address[])":"397ada21","mintManyFor(address[],address)":"3b9f7384","mint_for(address,address)":"27f18ae3","mint_many(address[8])":"a51e1904","minted(address,address)":"8b752bb0","setMinted(address,address,uint256)":"484935a2","setMinterApproval(address,bool)":"0de54ba0","setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)":"c6542794","setMockMintFor(uint256)":"95c3d17c","setMockMintForMany(uint256)":"e96ff983","toggle_approve_mint(address)":"dd289d60"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"MintFor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"MintForMany\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"MinterApprovalSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed_to_mint_for\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinterApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"mintMany\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintManyFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mint_for\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[8]\",\"name\":\"gauges\",\"type\":\"address[8]\"}],\"name\":\"mint_many\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"minted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setMinted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMinterApprovalWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintForReturn\",\"type\":\"uint256\"}],\"name\":\"setMockMintFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintForManyReturn\",\"type\":\"uint256\"}],\"name\":\"setMockMintForMany\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"toggle_approve_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"mint(address)\":{\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\"}},\"mintFor(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mintMany(address[])\":{\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"mintManyFor(address[],address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\",\"user\":\"Address to mint to\"}},\"mint_for(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mint_many(address[8])\":{\"details\":\"This function is not recommended as `mintMany()` is more flexible and gas efficient\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowed_to_mint_for(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"},\"getMinterApproval(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"mint(address)\":{\"notice\":\"Mint everything which belongs to `msg.sender` and send to them\"},\"mintFor(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mintMany(address[])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"mintManyFor(address[],address)\":{\"notice\":\"Mint tokens for `user` across multiple gauges\"},\"mint_for(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mint_many(address[8])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"minted(address,address)\":{\"notice\":\"The total number of tokens minted for `user` from `gauge`\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on your behalf\"},\"setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing them.\"},\"toggle_approve_mint(address)\":{\"notice\":\"Toggle whether `minter` is approved to mint tokens for `user`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockBalancerMinter.sol\":\"MockBalancerMinter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/BalancerMinter.sol\":{\"keccak256\":\"0xbacdfde61937f9cea9166c7e492ac8d65261fb6bdfb621f1f258852799204cc8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3e68da1f25c0211654bb0b04c4ac1a789cb3dfabd7f5db54d6bfbeb49414e0c\",\"dweb:/ipfs/QmRnvBWovj9HNZsEfvrZpbJcs3K7ikwrY8fkX68F7rdxQK\"]},\"contracts/test/MockBalancerMinter.sol\":{\"keccak256\":\"0xf27f93e3a43cc0cdc17ea32eb265ba1046e0b9294747cd9e9bc0de823a8bb0ad\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c1077ef45b45c101b0024874f798ce9df435994c4d35971e0c2dc007110208c9\",\"dweb:/ipfs/Qmd3JbwD7cFCnmA2DmDk5YdELhLeX7NyfNUiEsDNyhqhd4\"]}},\"version\":1}"}},"contracts/test/MockBalancerTokenAdmin.sol":{"MockBalancerTokenAdmin":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IBalancerToken","name":"balancerToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"INITIAL_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"future_epoch_time_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startEpochTimeWrite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161037f38038061037f8339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b039384166001600160a01b03199182161782556001805494909316931692909217905542600255670353c226d6c6f5806080819052906102eb9061009490398061018752506102eb6000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80638d928af811610076578063b26b238e1161005b578063b26b238e14610161578063b87b561614610169578063c003969914610171576100be565b80638d928af814610130578063a228bced14610161576100be565b806340c10f19116100a757806340c10f19146100e55780634dbac733146101205780637efad8e014610128576100be565b806321609bbf146100c35780632c4e722e146100dd575b600080fd5b6100cb610179565b60408051918252519081900360200190f35b6100cb610185565b61011e600480360360408110156100fb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356101a9565b005b6100cb610240565b6100cb61024c565b610138610258565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100cb610274565b6100cb610283565b61013861028b565b671080e992061ab30081565b7f000000000000000000000000000000000000000000000000000000000000000090565b600154604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052915191909216916340c10f1991604480830192600092919082900301818387803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505050565b670353c226d6c6f58081565b670de0b6b3a764000081565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b600061027e6102a7565b905090565b6301e1338081565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60028054600101908190559056fea2646970667358221220f7cd3486b54306f60df95188077fe0b32e09e2e4b0108860f117100e29f6be4864736f6c63430007010033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x37F CODESIZE SUB DUP1 PUSH2 0x37F DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP5 SWAP1 SWAP4 AND SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE TIMESTAMP PUSH1 0x2 SSTORE PUSH8 0x353C226D6C6F580 PUSH1 0x80 DUP2 SWAP1 MSTORE SWAP1 PUSH2 0x2EB SWAP1 PUSH2 0x94 SWAP1 CODECOPY DUP1 PUSH2 0x187 MSTORE POP PUSH2 0x2EB PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xB26B238E GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xB26B238E EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0xB87B5616 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x171 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0xA228BCED EQ PUSH2 0x161 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0x4DBAC733 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x7EFAD8E0 EQ PUSH2 0x128 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x21609BBF EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0xDD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB PUSH2 0x179 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH2 0x185 JUMP JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1A9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xCB PUSH2 0x240 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x24C JUMP JUMPDEST PUSH2 0x138 PUSH2 0x258 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH2 0x274 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x283 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x28B JUMP JUMPDEST PUSH8 0x1080E992061AB300 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x238 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH8 0x353C226D6C6F580 DUP2 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27E PUSH2 0x2A7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH4 0x1E13380 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF7 0xCD CALLVALUE DUP7 0xB5 NUMBER MOD 0xF6 0xD 0xF9 MLOAD DUP9 SMOD PUSH32 0xE0B32E09E2E4B0108860F117100E29F6BE4864736F6C63430007010033000000 ","sourceMap":"1037:1515:112:-:0;;;1535:254;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1535:254:112;;;;;;;1601:6;:14;;-1:-1:-1;;;;;1601:14:112;;;-1:-1:-1;;;;;;1601:14:112;;;;;;-1:-1:-1;1625:30:112;;;;;;;;;;;;;;1737:15;1719;:33;1114:34;1762:20;;;;1114:34;1037:1515;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"18427":[{"length":32,"start":391}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100be5760003560e01c80638d928af811610076578063b26b238e1161005b578063b26b238e14610161578063b87b561614610169578063c003969914610171576100be565b80638d928af814610130578063a228bced14610161576100be565b806340c10f19116100a757806340c10f19146100e55780634dbac733146101205780637efad8e014610128576100be565b806321609bbf146100c35780632c4e722e146100dd575b600080fd5b6100cb610179565b60408051918252519081900360200190f35b6100cb610185565b61011e600480360360408110156100fb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356101a9565b005b6100cb610240565b6100cb61024c565b610138610258565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100cb610274565b6100cb610283565b61013861028b565b671080e992061ab30081565b7f000000000000000000000000000000000000000000000000000000000000000090565b600154604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052915191909216916340c10f1991604480830192600092919082900301818387803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505050565b670353c226d6c6f58081565b670de0b6b3a764000081565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b600061027e6102a7565b905090565b6301e1338081565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60028054600101908190559056fea2646970667358221220f7cd3486b54306f60df95188077fe0b32e09e2e4b0108860f117100e29f6be4864736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xB26B238E GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xB26B238E EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0xB87B5616 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x171 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0xA228BCED EQ PUSH2 0x161 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0x4DBAC733 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x7EFAD8E0 EQ PUSH2 0x128 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x21609BBF EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0xDD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB PUSH2 0x179 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH2 0x185 JUMP JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1A9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xCB PUSH2 0x240 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x24C JUMP JUMPDEST PUSH2 0x138 PUSH2 0x258 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH2 0x274 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x283 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x28B JUMP JUMPDEST PUSH8 0x1080E992061AB300 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x238 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH8 0x353C226D6C6F580 DUP2 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27E PUSH2 0x2A7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH4 0x1E13380 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF7 0xCD CALLVALUE DUP7 0xB5 NUMBER MOD 0xF6 0xD 0xF9 MLOAD DUP9 SMOD PUSH32 0xE0B32E09E2E4B0108860F117100E29F6BE4864736F6C63430007010033000000 ","sourceMap":"1037:1515:112:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1237:72;;;:::i;:::-;;;;;;;;;;;;;;;;2243:77;;;:::i;2451:99::-;;;;;;;;;;;;;;;;-1:-1:-1;2451:99:112;;;;;;;;;:::i;:::-;;1075:73;;;:::i;1336:47::-;;;:::i;1795:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1993:95;;;:::i;1177:54::-;;;:::i;1882:105::-;;;:::i;1237:72::-;1290:19;1237:72;:::o;2243:77::-;2308:5;2243:77;:::o;2451:99::-;2512:14;;:31;;;;;;:14;:31;;;;;;;;;;;;;;;:14;;;;;:19;;:31;;;;;:14;;:31;;;;;;;:14;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2451:99;;:::o;1075:73::-;1114:34;1075:73;:::o;1336:47::-;1379:4;1336:47;:::o;1795:81::-;1838:6;1863;;;1795:81;:::o;1993:95::-;2042:7;2068:13;:11;:13::i;:::-;2061:20;;1993:95;:::o;1177:54::-;1223:8;1177:54;:::o;1882:105::-;1966:14;;;;1882:105;:::o;2326:119::-;2386:15;:20;;2405:1;2386:20;;;;;2326:119;:::o"},"methodIdentifiers":{"INITIAL_RATE()":"4dbac733","RATE_DENOMINATOR()":"7efad8e0","RATE_REDUCTION_COEFFICIENT()":"21609bbf","RATE_REDUCTION_TIME()":"b87b5616","future_epoch_time_write()":"b26b238e","getBalancerToken()":"c0039699","getVault()":"8d928af8","mint(address,uint256)":"40c10f19","rate()":"2c4e722e","startEpochTimeWrite()":"a228bced"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IBalancerToken\",\"name\":\"balancerToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"INITIAL_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_COEFFICIENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"future_epoch_time_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startEpochTimeWrite\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is an incomplete implementation of the token admin. It provides just enough functionality to be able to instantiate Liquidity and Stakeless gauges.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockBalancerTokenAdmin.sol\":\"MockBalancerTokenAdmin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"contracts/test/MockBalancerTokenAdmin.sol\":{\"keccak256\":\"0x97c802518b495a73f92a57d1cfb88878eb25053340409b1ee28e9c834c9ce428\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fe8ec06d5b8e4366ef92e4b2c40a11fa4fb11b649bfb9fa967d819975c110cf5\",\"dweb:/ipfs/QmeZVigTbTtbrBmiqbxLShngeL5phrZwq5UWv6taPKzAeA\"]}},\"version\":1}"}},"contracts/test/MockBaseRootGauge.sol":{"MockBaseRootGauge":{"abi":[{"inputs":[{"internalType":"contract IMainnetBalancerMinter","name":"minter","type":"address"},{"internalType":"contract IL1StandardBridge","name":"baseBridge","type":"address"},{"internalType":"address","name":"baseBAL","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"periodTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"periodEmissions","type":"uint256"}],"name":"Checkpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[],"name":"MAX_RELATIVE_WEIGHT_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"bridge","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getBaseBal","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseL1StandardBridge","outputs":[{"internalType":"contract IL1StandardBridge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBridgeCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101c06040523480156200001257600080fd5b50604051620019f1380380620019f183398101604081905262000035916200043a565b8282828260016000819055506000816001600160a01b031663e6dec36f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200007d57600080fd5b505afa15801562000092573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b8919062000414565b90506000816001600160a01b031663c00396996040518163ffffffff1660e01b815260040160206040518083038186803b158015620000f657600080fd5b505afa1580156200010b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000131919062000414565b90506000836001600160a01b03166358de9ade6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016f57600080fd5b505afa15801562000184573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001aa919062000414565b6001600160601b0319606084811b821660805285811b821660a05286811b821660c05282901b1660e052604080516303e1469160e61b815290519192506001600160a01b0383169163f851a44091600480820192602092909190829003018186803b1580156200021957600080fd5b505afa1580156200022e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000254919062000414565b6001600160a01b0316610100816001600160a01b031660601b81525050826001600160a01b031663b87b56166040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ab57600080fd5b505afa158015620002c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e691906200048d565b6101208181525050826001600160a01b03166321609bbf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032857600080fd5b505afa1580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036391906200048d565b6101408181525050826001600160a01b0316637efad8e06040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a557600080fd5b505afa158015620003ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e091906200048d565b61016052505060001960025550506001600160601b0319606092831b811661018052911b166101a05250620004bf92505050565b60006020828403121562000426578081fd5b81516200043381620004a6565b9392505050565b6000806000606084860312156200044f578182fd5b83516200045c81620004a6565b60208501519093506200046f81620004a6565b60408501519092506200048281620004a6565b809150509250925092565b6000602082840312156200049f578081fd5b5051919050565b6001600160a01b0381168114620004bc57600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205161014051610160516101805160601c6101a05160601c611479620005786000398061054b5280610b995250806104865280610ae45280610b495250806107525250806107315250806106b4528061079e52508061031c52806104c0528061058f5280610999525080610386528061063a52508061088d525080610c875280610d71525080610ac25280610b7752506114796000f3fe6080604052600436106100f35760003560e01c80639f8676711161008a578063b4921aa311610059578063b4921aa314610250578063c2c4c5c114610265578063cd6dc6871461026d578063d34fb2671461028d576100f3565b80639f867671146101fc578063a267b63114610211578063ab8f094514610226578063b02452251461023b576100f3565b80634b820093116100c65780634b8200931461019257806383f5c39b146101bf57806390fd50b3146101d45780639c868ac0146101e7576100f3565b806309400707146100f857806310d3eb041461012e57806314e956f5146101505780631b88094d14610170575b600080fd5b34801561010457600080fd5b5061011861011336600461110f565b6102a2565b604051610125919061143a565b60405180910390f35b34801561013a57600080fd5b5061014e61014936600461117b565b610304565b005b34801561015c57600080fd5b5061011861016b36600461117b565b61037f565b34801561017c57600080fd5b5061018561043d565b60405161012591906111e4565b34801561019e57600080fd5b506101b26101ad36600461110f565b61045a565b60405161012591906112d0565b3480156101cb57600080fd5b50610118610460565b61014e6101e236600461117b565b610466565b3480156101f357600080fd5b506101b261046f565b34801561020857600080fd5b50610118610478565b34801561021d57600080fd5b50610185610484565b34801561023257600080fd5b5061014e6104a8565b34801561024757600080fd5b50610118610544565b34801561025c57600080fd5b50610185610549565b6101b261056d565b34801561027957600080fd5b5061014e610288366004611131565b610930565b34801561029957600080fd5b5061014e610981565b600073ffffffffffffffffffffffffffffffffffffffff821630146102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390611403565b60405180910390fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610373576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b61037c81610a1a565b50565b60006104377f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b81526004016103df9291906112aa565b60206040518083038186803b1580156103f757600080fd5b505afa15801561040b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042f9190611193565b600654610a9c565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b61037c81610aa8565b60055460ff1690565b670de0b6b3a764000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610577610bfe565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b60025460006105f3610c17565b905080821015610922576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e52379061066f9030906004016111e4565b600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561082b57848111156106ee5761082b565b62093a8081026000806107008361037f565b905082851015801561071657508262093a800185105b156107cf57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161077a57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506107e49050565b670de0b6b3a764000062093a80828902020491505b827f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced83604051610814919061143a565b60405180910390a2509390930192506001016106d6565b5060028490556004805483019055811580159061084b575060055460ff16155b1561091e576040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636a627842906108c29030906004016111e4565b602060405180830381600087803b1580156108dc57600080fd5b505af11580156108f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109149190611193565b5061091e82610aa8565b5050505b600192505050610457610c42565b61093981610c49565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610a5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390611312565b60068190556040517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb290610a9190839061143a565b60405180910390a150565b80820390821102900390565b610b0973ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610e1f565b6007546040517f838b252000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169263838b252092610bc9927f0000000000000000000000000000000000000000000000000000000000000000927f000000000000000000000000000000000000000000000000000000000000000092911690879060009060040161122c565b600060405180830381600087803b158015610be357600080fd5b505af1158015610bf7573d6000803e3d6000fd5b5050505050565b610c1060026000541415610190610f9b565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6001600055565b60025415610c83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906113cc565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ceb57600080fd5b505afa158015610cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d239190611193565b905080610d5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f39061136f565b6001819055610d69610c17565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610dd757600080fd5b505af1158015610deb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0f9190611193565b600355610e1b82610a1a565b5050565b8015801590610ed057506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e90610e7d9030908690600401611205565b60206040518083038186803b158015610e9557600080fd5b505afa158015610ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecd9190611193565b15155b15610f7757610f778363095ea7b360e01b846000604051602401610ef5929190611281565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610fa9565b610f968363095ea7b360e01b8484604051602401610ef59291906112aa565b505050565b81610e1b57610e1b8161105c565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610fd291906111ab565b6000604051808303816000865af19150503d806000811461100f576040519150601f19603f3d011682016040523d82523d6000602084013e611014565b606091505b5091509150600082141561102c573d6000803e3d6000fd5b61105681516000148061104e57508180602001905181019061104e919061115b565b6101a2610f9b565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261037c917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461043757600080fd5b600060208284031215611120578081fd5b61112a83836110eb565b9392505050565b60008060408385031215611143578081fd5b61114d84846110eb565b946020939093013593505050565b60006020828403121561116c578081fd5b8151801515811461112a578182fd5b60006020828403121561118c578081fd5b5035919050565b6000602082840312156111a4578081fd5b5051919050565b60008251815b818110156111cb57602081860181015185830152016111b1565b818111156111d95782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff95861681529385166020850152919093166040830152606082019290925263ffffffff909116608082015260c060a0820181905260009082015260e00190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526012908201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604082015260600190565b60208082526034908201527f52656c61746976652077656967687420636170206578636565647320616c6c6f60408201527f776564206162736f6c757465206d6178696d756d000000000000000000000000606082015260800190565b60208082526024908201527f42616c616e636572546f6b656e41646d696e206e6f742079657420616374697660408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252601e908201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604082015260600190565b9081526020019056fea2646970667358221220280da2d21d6bcbbce103388707ac33cebd037d8e2e012b250c0e9a2c7949775164736f6c63430007010033","opcodes":"PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x19F1 CODESIZE SUB DUP1 PUSH3 0x19F1 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x43A JUMP JUMPDEST DUP3 DUP3 DUP3 DUP3 PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE6DEC36F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x92 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xB8 SWAP2 SWAP1 PUSH3 0x414 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0039699 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x10B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x131 SWAP2 SWAP1 PUSH3 0x414 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x58DE9ADE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x16F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x184 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1AA SWAP2 SWAP1 PUSH3 0x414 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP7 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xF851A440 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x219 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x22E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x254 SWAP2 SWAP1 PUSH3 0x414 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB87B5616 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x2E6 SWAP2 SWAP1 PUSH3 0x48D JUMP JUMPDEST PUSH2 0x120 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x21609BBF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x33D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x363 SWAP2 SWAP1 PUSH3 0x48D JUMP JUMPDEST PUSH2 0x140 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7EFAD8E0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x3E0 SWAP2 SWAP1 PUSH3 0x48D JUMP JUMPDEST PUSH2 0x160 MSTORE POP POP PUSH1 0x0 NOT PUSH1 0x2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x180 MSTORE SWAP2 SHL AND PUSH2 0x1A0 MSTORE POP PUSH3 0x4BF SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x426 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x433 DUP2 PUSH3 0x4A6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x44F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x45C DUP2 PUSH3 0x4A6 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x46F DUP2 PUSH3 0x4A6 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x482 DUP2 PUSH3 0x4A6 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x49F JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x4BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0x1479 PUSH3 0x578 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x54B MSTORE DUP1 PUSH2 0xB99 MSTORE POP DUP1 PUSH2 0x486 MSTORE DUP1 PUSH2 0xAE4 MSTORE DUP1 PUSH2 0xB49 MSTORE POP DUP1 PUSH2 0x752 MSTORE POP DUP1 PUSH2 0x731 MSTORE POP DUP1 PUSH2 0x6B4 MSTORE DUP1 PUSH2 0x79E MSTORE POP DUP1 PUSH2 0x31C MSTORE DUP1 PUSH2 0x4C0 MSTORE DUP1 PUSH2 0x58F MSTORE DUP1 PUSH2 0x999 MSTORE POP DUP1 PUSH2 0x386 MSTORE DUP1 PUSH2 0x63A MSTORE POP DUP1 PUSH2 0x88D MSTORE POP DUP1 PUSH2 0xC87 MSTORE DUP1 PUSH2 0xD71 MSTORE POP DUP1 PUSH2 0xAC2 MSTORE DUP1 PUSH2 0xB77 MSTORE POP PUSH2 0x1479 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB4921AA3 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB4921AA3 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x28D JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0xA267B631 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x23B JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x4B820093 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0x90FD50B3 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x1E7 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x170 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x110F JUMP JUMPDEST PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x143A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0x117B JUMP JUMPDEST PUSH2 0x304 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0x117B JUMP JUMPDEST PUSH2 0x37F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x185 PUSH2 0x43D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x11E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B2 PUSH2 0x1AD CALLDATASIZE PUSH1 0x4 PUSH2 0x110F JUMP JUMPDEST PUSH2 0x45A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x12D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x460 JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x117B JUMP JUMPDEST PUSH2 0x466 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B2 PUSH2 0x46F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x478 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x185 PUSH2 0x484 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x4A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x544 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x185 PUSH2 0x549 JUMP JUMPDEST PUSH2 0x1B2 PUSH2 0x56D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0x1131 JUMP JUMPDEST PUSH2 0x930 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x981 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x1403 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x373 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0x37C DUP2 PUSH2 0xA1A JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x437 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DF SWAP3 SWAP2 SWAP1 PUSH2 0x12AA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x40B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x42F SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xA9C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x37C DUP2 PUSH2 0xAA8 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x517 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x577 PUSH2 0xBFE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5E6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x5F3 PUSH2 0xC17 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x922 JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x66F SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x11E4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x82B JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x6EE JUMPI PUSH2 0x82B JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x700 DUP4 PUSH2 0x37F JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x716 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x7CF JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x77A JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x7E4 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST DUP3 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED DUP4 PUSH1 0x40 MLOAD PUSH2 0x814 SWAP2 SWAP1 PUSH2 0x143A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x6D6 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x84B JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x91E JUMPI PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x8C2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x11E4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8F0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x914 SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST POP PUSH2 0x91E DUP3 PUSH2 0xAA8 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x457 PUSH2 0xC42 JUMP JUMPDEST PUSH2 0x939 DUP2 PUSH2 0xC49 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x9F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xA5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x1312 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP1 PUSH2 0xA91 SWAP1 DUP4 SWAP1 PUSH2 0x143A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xB09 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0xE1F JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x838B252000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND SWAP3 PUSH4 0x838B2520 SWAP3 PUSH2 0xBC9 SWAP3 PUSH32 0x0 SWAP3 PUSH32 0x0 SWAP3 SWAP2 AND SWAP1 DUP8 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x122C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC10 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xF9B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xC83 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x13CC JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCFF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD23 SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xD5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x136F JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xD69 PUSH2 0xC17 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE0F SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST PUSH1 0x3 SSTORE PUSH2 0xE1B DUP3 PUSH2 0xA1A JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xED0 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0xE7D SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1205 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xECD SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xF77 JUMPI PUSH2 0xF77 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xEF5 SWAP3 SWAP2 SWAP1 PUSH2 0x1281 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0xFA9 JUMP JUMPDEST PUSH2 0xF96 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xEF5 SWAP3 SWAP2 SWAP1 PUSH2 0x12AA JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xE1B JUMPI PUSH2 0xE1B DUP2 PUSH2 0x105C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xFD2 SWAP2 SWAP1 PUSH2 0x11AB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x100F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1014 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x102C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1056 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x104E JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x104E SWAP2 SWAP1 PUSH2 0x115B JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0xF9B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x37C SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1120 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x112A DUP4 DUP4 PUSH2 0x10EB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1143 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x114D DUP5 DUP5 PUSH2 0x10EB JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x112A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x118C JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11A4 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x11CB JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x11B1 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x11D9 JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 DUP6 AND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C61746976652077656967687420636170206578636565647320616C6C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x776564206162736F6C757465206D6178696D756D000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x42616C616E636572546F6B656E41646D696E206E6F7420796574206163746976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6174656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 0xD LOG2 0xD2 SAR PUSH12 0xCBBCE103388707AC33CEBD03 PUSH30 0x8E2E012B250C0E9A2C7949775164736F6C63430007010033000000000000 ","sourceMap":"927:696:113:-:0;;;977:227;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1111:6;1119:10;1131:7;2585:6:97;2070:1:63;2175:7;:22;;;;2286:30:89;2339:6;-1:-1:-1;;;;;2339:28:89;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2286:84;;2380:15;2398:10;-1:-1:-1;;;;;2398:27:89;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2380:47;;2437:32;2472:6;-1:-1:-1;;;;;2472:25:89;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;2510:20:89;;;;;;;;2540:24;;;;;;;2574:16;;;;;;;2600:34;;;;;;2665:23;;;-1:-1:-1;;;2665:23:89;;;;2437:62;;-1:-1:-1;;;;;;2600:34:89;;;2665:21;;:23;;;;;;;;;;;;;;;2600:34;2665:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2644:44:89;;;-1:-1:-1;;;;;2644:44:89;;;;;;;2722:10;-1:-1:-1;;;;;2722:30:89;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2699:55;;;;;;2794:10;-1:-1:-1;;;;;2794:37:89;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2764:69;;;;;;2863:10;-1:-1:-1;;;;;2863:27:89;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2843:49;;-1:-1:-1;;;;3053:7:89;:27;-1:-1:-1;;;;;;;;2603:44:97::1;::::0;;;;;::::1;::::0;2657:18;;;::::1;::::0;-1:-1:-1;927:696:113;;-1:-1:-1;;;927:696:113;1439:313:-1;;1579:2;1567:9;1558:7;1554:23;1550:32;1547:2;;;-1:-1;;1585:12;1547:2;255:6;249:13;267:58;319:5;267:58;:::i;:::-;1637:99;1541:211;-1:-1;;;1541:211::o;2715:645::-;;;;2919:2;2907:9;2898:7;2894:23;2890:32;2887:2;;;-1:-1;;2925:12;2887:2;1211:6;1205:13;1223:63;1280:5;1223:63;:::i;:::-;3118:2;3193:22;;1009:13;2977:104;;-1:-1;1027:58;1009:13;1027:58;:::i;:::-;3262:2;3312:22;;83:13;3126:99;;-1:-1;101:33;83:13;101:33;:::i;:::-;3270:74;;;;2881:479;;;;;:::o;3367:263::-;;3482:2;3470:9;3461:7;3457:23;3453:32;3450:2;;;-1:-1;;3488:12;3450:2;-1:-1;1376:13;;3444:186;-1:-1;3444:186::o;4683:117::-;-1:-1;;;;;4538:54;;4742:35;;4732:2;;4791:1;;4781:12;4732:2;4726:74;:::o;:::-;927:696:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14640":[{"length":32,"start":2754},{"length":32,"start":2935}],"14642":[{"length":32,"start":3207},{"length":32,"start":3441}],"14644":[{"length":32,"start":2189}],"14646":[{"length":32,"start":902},{"length":32,"start":1594}],"14648":[{"length":32,"start":796},{"length":32,"start":1216},{"length":32,"start":1423},{"length":32,"start":2457}],"14656":[{"length":32,"start":1716},{"length":32,"start":1950}],"14658":[{"length":32,"start":1841}],"14660":[{"length":32,"start":1874}],"17129":[{"length":32,"start":1158},{"length":32,"start":2788},{"length":32,"start":2889}],"17131":[{"length":32,"start":1355},{"length":32,"start":2969}]},"linkReferences":{},"object":"6080604052600436106100f35760003560e01c80639f8676711161008a578063b4921aa311610059578063b4921aa314610250578063c2c4c5c114610265578063cd6dc6871461026d578063d34fb2671461028d576100f3565b80639f867671146101fc578063a267b63114610211578063ab8f094514610226578063b02452251461023b576100f3565b80634b820093116100c65780634b8200931461019257806383f5c39b146101bf57806390fd50b3146101d45780639c868ac0146101e7576100f3565b806309400707146100f857806310d3eb041461012e57806314e956f5146101505780631b88094d14610170575b600080fd5b34801561010457600080fd5b5061011861011336600461110f565b6102a2565b604051610125919061143a565b60405180910390f35b34801561013a57600080fd5b5061014e61014936600461117b565b610304565b005b34801561015c57600080fd5b5061011861016b36600461117b565b61037f565b34801561017c57600080fd5b5061018561043d565b60405161012591906111e4565b34801561019e57600080fd5b506101b26101ad36600461110f565b61045a565b60405161012591906112d0565b3480156101cb57600080fd5b50610118610460565b61014e6101e236600461117b565b610466565b3480156101f357600080fd5b506101b261046f565b34801561020857600080fd5b50610118610478565b34801561021d57600080fd5b50610185610484565b34801561023257600080fd5b5061014e6104a8565b34801561024757600080fd5b50610118610544565b34801561025c57600080fd5b50610185610549565b6101b261056d565b34801561027957600080fd5b5061014e610288366004611131565b610930565b34801561029957600080fd5b5061014e610981565b600073ffffffffffffffffffffffffffffffffffffffff821630146102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390611403565b60405180910390fd5b505060045490565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610373576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b61037c81610a1a565b50565b60006104377f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9430856040518363ffffffff1660e01b81526004016103df9291906112aa565b60206040518083038186803b1580156103f757600080fd5b505afa15801561040b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042f9190611193565b600654610a9c565b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff165b90565b50600190565b60065490565b61037c81610aa8565b60055460ff1690565b670de0b6b3a764000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610577610bfe565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b60025460006105f3610c17565b905080821015610922576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e52379061066f9030906004016111e4565b600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b5050600180546003549590910194909250600091507f000000000000000000000000000000000000000000000000000000000000000001845b8560ff0181101561082b57848111156106ee5761082b565b62093a8081026000806107008361037f565b905082851015801561071657508262093a800185105b156107cf57828503670de0b6b3a764000082890282020492507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089028161077a57fe5b04975062093a80819003670de0b6b3a7640000838a02820260018b905560038990557f000000000000000000000000000000000000000000000000000000000000000090980197049390930192506107e49050565b670de0b6b3a764000062093a80828902020491505b827f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced83604051610814919061143a565b60405180910390a2509390930192506001016106d6565b5060028490556004805483019055811580159061084b575060055460ff16155b1561091e576040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636a627842906108c29030906004016111e4565b602060405180830381600087803b1580156108dc57600080fd5b505af11580156108f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109149190611193565b5061091e82610aa8565b5050505b600192505050610457610c42565b61093981610c49565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906112db565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b670de0b6b3a7640000811115610a5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390611312565b60068190556040517f13e45870490f54cea50d245930d12102c72b502641ef6850d0b15a8c92decfb290610a9190839061143a565b60405180910390a150565b80820390821102900390565b610b0973ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610e1f565b6007546040517f838b252000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169263838b252092610bc9927f0000000000000000000000000000000000000000000000000000000000000000927f000000000000000000000000000000000000000000000000000000000000000092911690879060009060040161122c565b600060405180830381600087803b158015610be357600080fd5b505af1158015610bf7573d6000803e3d6000fd5b5050505050565b610c1060026000541415610190610f9b565b6002600055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62093a8042040190565b6001600055565b60025415610c83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906113cc565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632c4e722e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ceb57600080fd5b505afa158015610cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d239190611193565b905080610d5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f39061136f565b6001819055610d69610c17565b6002819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a228bced6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610dd757600080fd5b505af1158015610deb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0f9190611193565b600355610e1b82610a1a565b5050565b8015801590610ed057506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e90610e7d9030908690600401611205565b60206040518083038186803b158015610e9557600080fd5b505afa158015610ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecd9190611193565b15155b15610f7757610f778363095ea7b360e01b846000604051602401610ef5929190611281565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610fa9565b610f968363095ea7b360e01b8484604051602401610ef59291906112aa565b505050565b81610e1b57610e1b8161105c565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610fd291906111ab565b6000604051808303816000865af19150503d806000811461100f576040519150601f19603f3d011682016040523d82523d6000602084013e611014565b606091505b5091509150600082141561102c573d6000803e3d6000fd5b61105681516000148061104e57508180602001905181019061104e919061115b565b6101a2610f9b565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261037c917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461043757600080fd5b600060208284031215611120578081fd5b61112a83836110eb565b9392505050565b60008060408385031215611143578081fd5b61114d84846110eb565b946020939093013593505050565b60006020828403121561116c578081fd5b8151801515811461112a578182fd5b60006020828403121561118c578081fd5b5035919050565b6000602082840312156111a4578081fd5b5051919050565b60008251815b818110156111cb57602081860181015185830152016111b1565b818111156111d95782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff95861681529385166020850152919093166040830152606082019290925263ffffffff909116608082015260c060a0820181905260009082015260e00190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526012908201527f53454e4445525f4e4f545f414c4c4f5745440000000000000000000000000000604082015260600190565b60208082526034908201527f52656c61746976652077656967687420636170206578636565647320616c6c6f60408201527f776564206162736f6c757465206d6178696d756d000000000000000000000000606082015260800190565b60208082526024908201527f42616c616e636572546f6b656e41646d696e206e6f742079657420616374697660408201527f6174656400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f416c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6020808252601e908201527f47617567652063616e206f6e6c79206d696e7420666f7220697473656c660000604082015260600190565b9081526020019056fea2646970667358221220280da2d21d6bcbbce103388707ac33cebd037d8e2e012b250c0e9a2c7949775164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F867671 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB4921AA3 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB4921AA3 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x28D JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x9F867671 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0xA267B631 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0xB0245225 EQ PUSH2 0x23B JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x4B820093 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0x90FD50B3 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x1E7 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x1B88094D EQ PUSH2 0x170 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x110F JUMP JUMPDEST PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x143A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0x117B JUMP JUMPDEST PUSH2 0x304 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0x117B JUMP JUMPDEST PUSH2 0x37F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x185 PUSH2 0x43D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x11E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B2 PUSH2 0x1AD CALLDATASIZE PUSH1 0x4 PUSH2 0x110F JUMP JUMPDEST PUSH2 0x45A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x12D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x460 JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x117B JUMP JUMPDEST PUSH2 0x466 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B2 PUSH2 0x46F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x478 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x185 PUSH2 0x484 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x4A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x544 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x185 PUSH2 0x549 JUMP JUMPDEST PUSH2 0x1B2 PUSH2 0x56D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0x1131 JUMP JUMPDEST PUSH2 0x930 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x981 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ADDRESS EQ PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x1403 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x373 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0x37C DUP2 PUSH2 0xA1A JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x437 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3078C94 ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DF SWAP3 SWAP2 SWAP1 PUSH2 0x12AA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x40B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x42F SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xA9C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x37C DUP2 PUSH2 0xAA8 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x517 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x577 PUSH2 0xBFE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x5E6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 PUSH2 0x5F3 PUSH2 0xC17 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x922 JUMPI PUSH1 0x40 MLOAD PUSH32 0x615E523700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x615E5237 SWAP1 PUSH2 0x66F SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x11E4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x3 SLOAD SWAP6 SWAP1 SWAP2 ADD SWAP5 SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH32 0x0 ADD DUP5 JUMPDEST DUP6 PUSH1 0xFF ADD DUP2 LT ISZERO PUSH2 0x82B JUMPI DUP5 DUP2 GT ISZERO PUSH2 0x6EE JUMPI PUSH2 0x82B JUMP JUMPDEST PUSH3 0x93A80 DUP2 MUL PUSH1 0x0 DUP1 PUSH2 0x700 DUP4 PUSH2 0x37F JUMP JUMPDEST SWAP1 POP DUP3 DUP6 LT ISZERO DUP1 ISZERO PUSH2 0x716 JUMPI POP DUP3 PUSH3 0x93A80 ADD DUP6 LT JUMPDEST ISZERO PUSH2 0x7CF JUMPI DUP3 DUP6 SUB PUSH8 0xDE0B6B3A7640000 DUP3 DUP10 MUL DUP3 MUL DIV SWAP3 POP PUSH32 0x0 PUSH32 0x0 DUP10 MUL DUP2 PUSH2 0x77A JUMPI INVALID JUMPDEST DIV SWAP8 POP PUSH3 0x93A80 DUP2 SWAP1 SUB PUSH8 0xDE0B6B3A7640000 DUP4 DUP11 MUL DUP3 MUL PUSH1 0x1 DUP12 SWAP1 SSTORE PUSH1 0x3 DUP10 SWAP1 SSTORE PUSH32 0x0 SWAP1 SWAP9 ADD SWAP8 DIV SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x7E4 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH3 0x93A80 DUP3 DUP10 MUL MUL DIV SWAP2 POP JUMPDEST DUP3 PUSH32 0x21D81D5D656869E8CE3BA8D65526A2F0DBBCD3D36F5F9999EB7C84360E45ECED DUP4 PUSH1 0x40 MLOAD PUSH2 0x814 SWAP2 SWAP1 PUSH2 0x143A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP SWAP4 SWAP1 SWAP4 ADD SWAP3 POP PUSH1 0x1 ADD PUSH2 0x6D6 JUMP JUMPDEST POP PUSH1 0x2 DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP4 ADD SWAP1 SSTORE DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x84B JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x91E JUMPI PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x8C2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x11E4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8F0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x914 SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST POP PUSH2 0x91E DUP3 PUSH2 0xAA8 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x457 PUSH2 0xC42 JUMP JUMPDEST PUSH2 0x939 DUP2 PUSH2 0xC49 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x9F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0xA5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x1312 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x13E45870490F54CEA50D245930D12102C72B502641EF6850D0B15A8C92DECFB2 SWAP1 PUSH2 0xA91 SWAP1 DUP4 SWAP1 PUSH2 0x143A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xB09 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0x0 DUP4 PUSH2 0xE1F JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x838B252000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND SWAP3 PUSH4 0x838B2520 SWAP3 PUSH2 0xBC9 SWAP3 PUSH32 0x0 SWAP3 PUSH32 0x0 SWAP3 SWAP2 AND SWAP1 DUP8 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x122C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC10 PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xF9B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x93A80 TIMESTAMP DIV ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD ISZERO PUSH2 0xC83 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x13CC JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2C4E722E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCFF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD23 SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xD5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0x136F JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH2 0xD69 PUSH2 0xC17 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA228BCED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE0F SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST PUSH1 0x3 SSTORE PUSH2 0xE1B DUP3 PUSH2 0xA1A JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xED0 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0xE7D SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1205 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xECD SWAP2 SWAP1 PUSH2 0x1193 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xF77 JUMPI PUSH2 0xF77 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xEF5 SWAP3 SWAP2 SWAP1 PUSH2 0x1281 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0xFA9 JUMP JUMPDEST PUSH2 0xF96 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xEF5 SWAP3 SWAP2 SWAP1 PUSH2 0x12AA JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xE1B JUMPI PUSH2 0xE1B DUP2 PUSH2 0x105C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xFD2 SWAP2 SWAP1 PUSH2 0x11AB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x100F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1014 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x102C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1056 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x104E JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x104E SWAP2 SWAP1 PUSH2 0x115B JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0xF9B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x37C SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1120 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x112A DUP4 DUP4 PUSH2 0x10EB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1143 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x114D DUP5 DUP5 PUSH2 0x10EB JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x112A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x118C JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11A4 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x11CB JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x11B1 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x11D9 JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 DUP6 AND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x53454E4445525F4E4F545F414C4C4F5745440000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C61746976652077656967687420636170206578636565647320616C6C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x776564206162736F6C757465206D6178696D756D000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x42616C616E636572546F6B656E41646D696E206E6F7420796574206163746976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6174656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x47617567652063616E206F6E6C79206D696E7420666F7220697473656C660000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 0xD LOG2 0xD2 SAR PUSH12 0xCBBCE103388707AC33CEBD03 PUSH30 0x8E2E012B250C0E9A2C7949775164736F6C63430007010033000000000000 ","sourceMap":"927:696:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6895:191:89;;;;;;;;;;-1:-1:-1;6895:191:89;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7513:214;;;;;;;;;;-1:-1:-1;7513:214:89;;;;;:::i;:::-;;:::i;:::-;;8159:199;;;;;;;;;;-1:-1:-1;8159:199:89;;;;;:::i;:::-;;:::i;2921:99:97:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6789:100:89:-;;;;;;;;;;-1:-1:-1;6789:100:89;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8038:115::-;;;;;;;;;;;;;:::i;1524:97:113:-;;;;;;:::i;:::-;;:::i;7092:92:89:-;;;;;;;;;;;;;:::i;1387:54::-;;;;;;;;;;;;;:::i;3026:122:97:-;;;;;;;;;;;;;:::i;7190:154:89:-;;;;;;;;;;;;;:::i;6394:104::-;;;;;;;;;;;;;:::i;3154:86:97:-;;;;;;;;;;;;;:::i;3697:2655:89:-;;;:::i;2688:227:97:-;;;;;;;;;;-1:-1:-1;2688:227:97;;;;;:::i;:::-;;:::i;7350:157:89:-;;;;;;;;;;;;;:::i;6895:191::-;6969:7;6996:21;;;7012:4;6996:21;6988:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;7069:10:89;;;6895:191::o;7513:214::-;7606:10;:41;7628:18;7606:41;;7598:72;;;;;;;;;;;;:::i;:::-;7680:40;7702:17;7680:21;:40::i;:::-;7513:214;:::o;8159:199::-;8236:7;8262:89;8271:16;:38;;;8318:4;8325;8271:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8332:18;;8262:8;:89::i;:::-;8255:96;8159:199;-1:-1:-1;;8159:199:89:o;2921:99:97:-;3003:10;;;;2921:99;;:::o;6789:100:89:-;-1:-1:-1;6878:4:89;;6789:100::o;8038:115::-;8128:18;;8038:115;:::o;1524:97:113:-;1587:27;1603:10;1587:15;:27::i;7092:92:89:-;7168:9;;;;7092:92;:::o;1387:54::-;1437:4;1387:54;:::o;3026:122:97:-;3120:21;3026:122;:::o;7190:154:89:-;7247:10;:41;7269:18;7247:41;;7239:72;;;;;;;;;;;;:::i;:::-;7321:9;:16;;;;7333:4;7321:16;;;7190:154::o;6394:104::-;6464:7;6394:104;:::o;3154:86:97:-;3225:8;3154:86;:::o;3697:2655:89:-;3767:4;2613:20:63;:18;:20::i;:::-;3791:10:89::1;:41;3813:18;3791:41;;3783:72;;;;;;;;;;;;:::i;:::-;3886:7;::::0;3865:18:::1;3927:16;:14;:16::i;:::-;3903:40;;3971:13;3958:10;:26;3954:2370;;;4000:48;::::0;;;;:33:::1;:16;:33;::::0;::::1;::::0;:48:::1;::::0;4042:4:::1;::::0;4000:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4078:5:89::1;::::0;;4188:15:::1;::::0;4135;;;::::1;::::0;4078:5;;-1:-1:-1;4063:12:89::1;::::0;-1:-1:-1;4206:20:89::1;4188:38;4135:15:::0;4240:1839:::1;4273:10;4286:3;4273:16;4269:1;:20;4240:1839;;;4322:13;4318:1;:17;4314:28;;;4337:5;;4314:28;4386:7;4382:11:::0;::::1;4361:18;::::0;4477:35:::1;4382:11:::0;4477:23:::1;:35::i;:::-;4455:57;;4552:10;4535:13;:27;;:67;;;;;4582:10;4595:7;4582:20;4566:13;:36;4535:67;4531:1424;;;5181:26:::0;;::::1;5294:6;5247:18:::0;;::::1;:43:::0;::::1;5246:54;5229:71;;5409:27;5388:17;5381:4;:24;5380:56;;;;;;::::0;-1:-1:-1;5564:7:89::1;:32:::0;;::::1;5680:6;5637:18:::0;;::::1;:39:::0;::::1;5709:5;:12:::0;;;5743:15:::1;:31:::0;;;5813:20:::1;5796:37:::0;;::::1;::::0;5636:50:::1;5618:68:::0;;;::::1;::::0;-1:-1:-1;4531:1424:89::1;::::0;-1:-1:-1;4531:1424:89::1;;5930:6;5919:7;5898:18:::0;;::::1;:28;5897:39;5880:56;;4531:1424;5989:10;5978:38;6001:14;5978:38;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;6034:30:89;;;::::1;::::0;-1:-1:-1;4291:3:89::1;;4240:1839;;;-1:-1:-1::0;6093:7:89::1;:23:::0;;;6130:10:::1;:26:::0;;;::::1;::::0;;6175:16;;;;;:30:::1;;-1:-1:-1::0;6196:9:89::1;::::0;::::1;;6195:10;6175:30;6171:143;;;6225:27;::::0;;;;:12:::1;:7;:12;::::0;::::1;::::0;:27:::1;::::0;6246:4:::1;::::0;6225:27:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6270:29;6286:12;6270:15;:29::i;:::-;3954:2370;;;;6341:4;6334:11;;;;2654:19:63::0;:17;:19::i;2688:227:97:-;2835:40;2857:17;2835:21;:40::i;:::-;-1:-1:-1;2886:10:97;:22;;;;;;;;;;;;;;;2688:227::o;7350:157:89:-;7409:10;:41;7431:18;7409:41;;7401:72;;;;;;;;;;;;:::i;:::-;7483:9;:17;;;;;;7350:157::o;7733:299::-;1437:4;7818:17;:44;;7810:109;;;;;;;;;;;;:::i;:::-;7929:18;:38;;;7982:43;;;;;;7950:17;;7982:43;:::i;:::-;;;;;;;;7733:299;:::o;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;3246:334:97:-;3319:65;:21;:9;:21;3349;3373:10;3319:21;:65::i;:::-;3530:10;;3463:110;;;;;:36;:21;:36;;;;;:110;;3508:9;;3520:8;;3530:10;;;3542;;3530;;3463:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3246:334;:::o;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;6504:167:89:-;6633:31;6652:7;6634:15;:25;6633:31;;6504:167::o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;3146:545:89:-;3231:7;;:12;3223:44;;;;;;;;;;;;:::i;:::-;3413:12;3428:11;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3413:33;-1:-1:-1;3464:9:89;3456:58;;;;;;;;;;;;:::i;:::-;3525:5;:12;;;3557:16;:14;:16::i;:::-;3547:7;:26;;;;3601:11;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3583:15;:51;3644:40;3666:17;3644:21;:40::i;:::-;3146:545;;:::o;1001:507:64:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:64;;;;;:15;;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:19;:90::i;:::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;1407:94::-;1001:507;;;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;2324:914:64:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:31;3134:8:64;:97::i;:::-;2324:914;;;;:::o;1459:126:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;5:130:-1;72:20;;11401:42;11390:54;;12491:35;;12481:2;;12540:1;;12530:12;555:241;;659:2;647:9;638:7;634:23;630:32;627:2;;;-1:-1;;665:12;627:2;727:53;772:7;748:22;727:53;:::i;:::-;717:63;621:175;-1:-1;;;621:175::o;803:366::-;;;924:2;912:9;903:7;899:23;895:32;892:2;;;-1:-1;;930:12;892:2;992:53;1037:7;1013:22;992:53;:::i;:::-;982:63;1082:2;1121:22;;;;344:20;;-1:-1;;;886:283::o;1176:257::-;;1288:2;1276:9;1267:7;1263:23;1259:32;1256:2;;;-1:-1;;1294:12;1256:2;223:6;217:13;12637:5;11302:13;11295:21;12615:5;12612:32;12602:2;;-1:-1;;12648:12;1440:241;;1544:2;1532:9;1523:7;1519:23;1515:32;1512:2;;;-1:-1;;1550:12;1512:2;-1:-1;344:20;;1506:175;-1:-1;1506:175::o;1688:263::-;;1803:2;1791:9;1782:7;1778:23;1774:32;1771:2;;;-1:-1;;1809:12;1771:2;-1:-1;492:13;;1765:186;-1:-1;1765:186::o;5160:271::-;;2349:5;10601:12;-1:-1;12228:101;12242:6;12239:1;12236:13;12228:101;;;2493:4;12309:11;;;;;12303:18;12290:11;;;12283:39;12257:10;12228:101;;;12344:6;12341:1;12338:13;12335:2;;;-1:-1;12400:6;12395:3;12391:16;12384:27;12335:2;-1:-1;2524:16;;;;;5294:137;-1:-1;;5294:137::o;5438:222::-;11401:42;11390:54;;;;2029:37;;5565:2;5550:18;;5536:124::o;5667:333::-;11401:42;11390:54;;;2029:37;;11390:54;;5986:2;5971:18;;2029:37;5822:2;5807:18;;5793:207::o;6007:968::-;11401:42;11390:54;;;2029:37;;11390:54;;;6509:2;6494:18;;2029:37;11390:54;;;;6592:2;6577:18;;2029:37;6675:2;6660:18;;4994:37;;;;11607:10;11596:22;;;6756:3;6741:19;;5112:36;6344:3;6794;6779:19;;6772:49;;;-1:-1;6329:19;;;10745;10785:14;;;6315:660::o;6982:345::-;11401:42;11390:54;;;;2029:37;;11701:4;11690:16;7313:2;7298:18;;2812:56;7143:2;7128:18;;7114:213::o;7334:333::-;11401:42;11390:54;;;;2029:37;;7653:2;7638:18;;4994:37;7489:2;7474:18;;7460:207::o;7674:210::-;11302:13;;11295:21;2143:34;;7795:2;7780:18;;7766:118::o;8170:416::-;8370:2;8384:47;;;3105:2;8355:18;;;10745:19;3141:20;10785:14;;;3121:41;3181:12;;;8341:245::o;8593:416::-;8793:2;8807:47;;;3432:2;8778:18;;;10745:19;3468:34;10785:14;;;3448:55;3537:22;3523:12;;;3516:44;3579:12;;;8764:245::o;9016:416::-;9216:2;9230:47;;;3830:2;9201:18;;;10745:19;3866:34;10785:14;;;3846:55;3935:6;3921:12;;;3914:28;3961:12;;;9187:245::o;9439:416::-;9639:2;9653:47;;;4481:2;9624:18;;;10745:19;4517:21;10785:14;;;4497:42;4558:12;;;9610:245::o;9862:416::-;10062:2;10076:47;;;4809:2;10047:18;;;10745:19;4845:32;10785:14;;;4825:53;4897:12;;;10033:245::o;10285:222::-;4994:37;;;10412:2;10397:18;;10383:124::o"},"methodIdentifiers":{"MAX_RELATIVE_WEIGHT_CAP()":"9f867671","bridge(uint256)":"90fd50b3","checkpoint()":"c2c4c5c1","getBaseBal()":"b4921aa3","getBaseL1StandardBridge()":"a267b631","getCappedRelativeWeight(uint256)":"14e956f5","getRecipient()":"1b88094d","getRelativeWeightCap()":"83f5c39b","getTotalBridgeCost()":"b0245225","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMainnetBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"baseBridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseBAL\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"periodTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"periodEmissions\",\"type\":\"uint256\"}],\"name\":\"Checkpoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RELATIVE_WEIGHT_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"bridge\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaseBal\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaseL1StandardBridge\",\"outputs\":[{\"internalType\":\"contract IL1StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBridgeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is used by the Base Root Gauge deployment task in the deployments repo, and is referenced there. Do not delete.\",\"kind\":\"dev\",\"methods\":{\"bridge(uint256)\":{\"details\":\"It would be very difficult to contrive a fork test that set the mintAmount to a precise value, so the bridge limits are best tested with a mock and unit tests. It must be payable to send ETH to pay for gas in the child chain.\",\"params\":{\"mintAmount\":\"Amount to be bridged\"}},\"checkpoint()\":{\"details\":\"Performs a checkpoint, computing how much should be minted for the gauge.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"getRecipient()\":{\"details\":\"Returns the address that will receive the incentives (either the L2 gauge, or a mainnet address).\"},\"getTotalBridgeCost()\":{\"details\":\"Returns total ETH bridge cost (post mint action) in wei. Each `checkpoint` should receive this exact amount to work. Some stakeless gauges don't actually need ETH to work; in those cases the cost will be 0.\"},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockBaseRootGauge.sol\":\"MockBaseRootGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL1StandardBridge.sol\":{\"keccak256\":\"0x31b489cbd755b3c789115af4cf3d7af2da15f59030345ac29ecf26a033fc806a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2cc164ca032440222b7984aebbad6a46a6c82eef33564d1c6d78408bafab9934\",\"dweb:/ipfs/QmdgixtcWUX8CFhrTkUiAAmSkpMG2FsZnK18QywDhFoFcp\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILMGetters.sol\":{\"keccak256\":\"0x8c416ad4dc06f46cc00f3ed0359fd86dc2a79e2eb9e95442d00430dd945df6a8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d87e4a217c66d9364ded6748c45d817237e5fb5b899900b7ac56ee9a407952eb\",\"dweb:/ipfs/QmTVeoVJkfjCsvqZUXBykEztMzxM6VvppF2MzGaGscjobW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IMainnetBalancerMinter.sol\":{\"keccak256\":\"0xc9de1a87144826a98f18db07d37d945de51e594bd583694ee7c4732f97d33d91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c18acb5af5b07d2ceaada770d972fb642f0371473ddbd2fd1774a61e79b87437\",\"dweb:/ipfs/Qmd54HuDSKZWKPHmaR3d8bjX9n1BJujvjjkmUtRbPCRknQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakelessGauge.sol\":{\"keccak256\":\"0x61057e6fb723c83aa040702ee57bd3237eeec21f2114f043c409b9239d0963b2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2be89880d0db9bceb1e937c5c027a5d300133f9d78d5f3bd057a9104b94c096\",\"dweb:/ipfs/QmeVbbpoUkuXBQ6qx8jwZbitfUqpPmgYH8VRmGCLpUeQAQ\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/gauges/StakelessGauge.sol\":{\"keccak256\":\"0x045c099bd28415d1727765e814d2adc401820dbb1a4c814e00e6a22073fc1379\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bb98e2691e9311b03b062bebbfcf6ff901176033df40ac87e706906d2f407d9\",\"dweb:/ipfs/QmQq3c1dH5A8cNgvPiE2zVGf6J9FTquxLFJBoN6aJAXNcx\"]},\"contracts/gauges/base/BaseRootGauge.sol\":{\"keccak256\":\"0xb5d997651688c44dc3a3c4407b573aa082015504fb91f972a367fb20cf64d344\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bcc43b88d1a141d008a00834d61d49363e297e79eb1de45ff37a59fa662dbca\",\"dweb:/ipfs/QmThj1XX6AbX2n2ajDDLRtJvDqpKb7eLh5zFQui92UA57H\"]},\"contracts/test/MockBaseRootGauge.sol\":{\"keccak256\":\"0x8072abaf812051a22fd48284cf83f2074bf070c539a5612bc7d89cee4a0fceef\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3271fb89d591873e88f3fe8b861f6e267b0c5f6cfafeb8cba0e3ba3bd2a6567a\",\"dweb:/ipfs/QmdB68Fu9RKNSoxvPjfeZAP7mje2jv56Tw3Fc8heZPzYoz\"]}},\"version\":1}"}},"contracts/test/MockChildChainGauge.sol":{"MockChildChainGauge":{"abi":[{"inputs":[{"internalType":"string","name":"_version","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"UserCheckpoint","type":"event"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"string","name":"_version","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lp_token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"checkpointStep","type":"uint256"}],"name":"setMockCheckpointStep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ILiquidityGaugeFactory","name":"_factory","type":"address"}],"name":"setMockFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516108a53803806108a583398101604081905261002f916100dc565b8051610042906002906020840190610049565b5050610196565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061008a57805160ff19168380011785556100b7565b828001600101855582156100b7579182015b828111156100b757825182559160200191906001019061009c565b506100c39291506100c7565b5090565b5b808211156100c357600081556001016100c8565b600060208083850312156100ee578182fd5b82516001600160401b0380821115610104578384fd5b818501915085601f830112610117578384fd5b815181811115610125578485fd5b604051601f8201601f1916810185018381118282101715610144578687fd5b604052818152838201850188101561015a578586fd5b8592505b8183101561017b578383018501518184018601529184019161015e565b8183111561018b57858583830101525b979650505050505050565b610700806101a56000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806382c630661161005b57806382c630661461010057806383d9ddb014610115578063c45a015514610128578063f399e22e1461013057610088565b8063094007071461008d5780634b820093146100b657806354fd4d50146100d6578063554fc806146100eb575b600080fd5b6100a061009b366004610502565b610143565b6040516100ad919061069f565b60405180910390f35b6100c96100c4366004610502565b61016b565b6040516100ad9190610623565b6100de610209565b6040516100ad919061062e565b6100fe6100f93660046105ea565b6102b2565b005b6101086102b7565b6040516100ad9190610602565b6100fe610123366004610502565b6102d3565b61010861031a565b6100fe61013e36600461051e565b610336565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b60035473ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081205490916101a0919061039c565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600460205260409081902091909155517f0103c5dd597c7d8e78094c4dc6d76c405761e7dcd771d4a4826d5e1c484d8c3f906101f9908490610602565b60405180910390a1506001919050565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f810184900484028201840190925281815292918301828280156102aa5780601f1061027f576101008083540402835291602001916102aa565b820191906000526020600020905b81548152906001019060200180831161028d57829003601f168201915b505050505081565b600355565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff84167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556001805490911633179055805161039790600290602084019061046f565b505050565b60008282016103ae84821015836103b5565b9392505050565b816103c3576103c3816103c7565b5050565b6103f1817f42414c00000000000000000000000000000000000000000000000000000000006103f4565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106104b057805160ff19168380011785556104dd565b828001600101855582156104dd579182015b828111156104dd5782518255916020019190600101906104c2565b506104e99291506104ed565b5090565b5b808211156104e957600081556001016104ee565b600060208284031215610513578081fd5b81356103ae816106a8565b60008060408385031215610530578081fd5b823561053b816106a8565b915060208381013567ffffffffffffffff80821115610558578384fd5b818601915086601f83011261056b578384fd5b813581811115610579578485fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011682010181811084821117156105b6578687fd5b60405281815283820185018910156105cc578586fd5b81858501868301378585838301015280955050505050509250929050565b6000602082840312156105fb578081fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b6000602080835283518082850152825b8181101561065a5785810183015185820160400152820161063e565b8181111561066b5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff811681146103f157600080fdfea26469706673582212205c308ee2592f4bdf030b623706bee6ab9c75edc92d5d7e6a111a6ff2f05d487b64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x8A5 CODESIZE SUB DUP1 PUSH2 0x8A5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xDC JUMP JUMPDEST DUP1 MLOAD PUSH2 0x42 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x49 JUMP JUMPDEST POP POP PUSH2 0x196 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x8A JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xB7 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xB7 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xB7 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x9C JUMP JUMPDEST POP PUSH2 0xC3 SWAP3 SWAP2 POP PUSH2 0xC7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xC8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x104 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x117 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x125 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD DUP6 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x144 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP9 LT ISZERO PUSH2 0x15A JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 SWAP3 POP JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x17B JUMPI DUP4 DUP4 ADD DUP6 ADD MLOAD DUP2 DUP5 ADD DUP7 ADD MSTORE SWAP2 DUP5 ADD SWAP2 PUSH2 0x15E JUMP JUMPDEST DUP2 DUP4 GT ISZERO PUSH2 0x18B JUMPI DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x700 DUP1 PUSH2 0x1A5 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x82C63066 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x82C63066 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x83D9DDB0 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0xF399E22E EQ PUSH2 0x130 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0x554FC806 EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x502 JUMP JUMPDEST PUSH2 0x143 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC9 PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x502 JUMP JUMPDEST PUSH2 0x16B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x623 JUMP JUMPDEST PUSH2 0xDE PUSH2 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x62E JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EA JUMP JUMPDEST PUSH2 0x2B2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x108 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x602 JUMP JUMPDEST PUSH2 0xFE PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x502 JUMP JUMPDEST PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x31A JUMP JUMPDEST PUSH2 0xFE PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x51E JUMP JUMPDEST PUSH2 0x336 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x1A0 SWAP2 SWAP1 PUSH2 0x39C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x103C5DD597C7D8E78094C4DC6D76C405761E7DCD771D4A4826D5E1C484D8C3F SWAP1 PUSH2 0x1F9 SWAP1 DUP5 SWAP1 PUSH2 0x602 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2AA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x27F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2AA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x28D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND CALLER OR SWAP1 SSTORE DUP1 MLOAD PUSH2 0x397 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x46F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x3AE DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x3B5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x3C3 JUMPI PUSH2 0x3C3 DUP2 PUSH2 0x3C7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3F1 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x3F4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x4B0 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x4DD JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x4DD JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4DD JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x4C2 JUMP JUMPDEST POP PUSH2 0x4E9 SWAP3 SWAP2 POP PUSH2 0x4ED JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x4E9 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x513 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3AE DUP2 PUSH2 0x6A8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x530 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x53B DUP2 PUSH2 0x6A8 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x558 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x56B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x579 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x5B6 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP10 LT ISZERO PUSH2 0x5CC JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5FB JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x65A JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x63E JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x66B JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5C ADDRESS DUP15 0xE2 MSIZE 0x2F 0x4B 0xDF SUB SIGNEXTEND PUSH3 0x3706BE 0xE6 0xAB SWAP13 PUSH22 0xEDC92D5D7E6A111A6FF2F05D487B64736F6C63430007 ADD STOP CALLER ","sourceMap":"1044:1252:114:-:0;;;1441:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1487:18;;;;:7;;:18;;;;;:::i;:::-;;1441:71;1044:1252;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1044:1252:114;;;-1:-1:-1;1044:1252:114;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;458:362:-1;;583:2;;571:9;562:7;558:23;554:32;551:2;;;-1:-1;;589:12;551:2;634:24;;-1:-1;;;;;667:30;;;664:2;;;-1:-1;;700:12;664:2;787:6;776:9;772:22;;;119:3;112:4;104:6;100:17;96:27;86:2;;-1:-1;;127:12;86:2;167:6;161:13;678:18;1226:6;1223:30;1220:2;;;-1:-1;;1256:12;1220:2;889;883:9;1329;1310:17;;-1:-1;;1306:33;915:17;;;;975:34;;;1011:22;;;972:62;969:2;;;-1:-1;;1037:12;969:2;889;1056:22;260:21;;;360:16;;;;;357:25;-1:-1;354:2;;;-1:-1;;385:12;354:2;-1:-1;1476:10;;1492:101;1506:6;1503:1;1500:13;1492:101;;;1573:11;;;;;1567:18;1554:11;;;;;1547:39;1521:10;;;;1492:101;;;1608:6;1605:1;1602:13;1599:2;;;-1:-1;583:2;1664:6;336:5;1655:16;;1648:27;1599:2;720:84;545:275;-1:-1;;;;;;;545:275::o;:::-;1044:1252:114;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c806382c630661161005b57806382c630661461010057806383d9ddb014610115578063c45a015514610128578063f399e22e1461013057610088565b8063094007071461008d5780634b820093146100b657806354fd4d50146100d6578063554fc806146100eb575b600080fd5b6100a061009b366004610502565b610143565b6040516100ad919061069f565b60405180910390f35b6100c96100c4366004610502565b61016b565b6040516100ad9190610623565b6100de610209565b6040516100ad919061062e565b6100fe6100f93660046105ea565b6102b2565b005b6101086102b7565b6040516100ad9190610602565b6100fe610123366004610502565b6102d3565b61010861031a565b6100fe61013e36600461051e565b610336565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b60035473ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081205490916101a0919061039c565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600460205260409081902091909155517f0103c5dd597c7d8e78094c4dc6d76c405761e7dcd771d4a4826d5e1c484d8c3f906101f9908490610602565b60405180910390a1506001919050565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f810184900484028201840190925281815292918301828280156102aa5780601f1061027f576101008083540402835291602001916102aa565b820191906000526020600020905b81548152906001019060200180831161028d57829003601f168201915b505050505081565b600355565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff84167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556001805490911633179055805161039790600290602084019061046f565b505050565b60008282016103ae84821015836103b5565b9392505050565b816103c3576103c3816103c7565b5050565b6103f1817f42414c00000000000000000000000000000000000000000000000000000000006103f4565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106104b057805160ff19168380011785556104dd565b828001600101855582156104dd579182015b828111156104dd5782518255916020019190600101906104c2565b506104e99291506104ed565b5090565b5b808211156104e957600081556001016104ee565b600060208284031215610513578081fd5b81356103ae816106a8565b60008060408385031215610530578081fd5b823561053b816106a8565b915060208381013567ffffffffffffffff80821115610558578384fd5b818601915086601f83011261056b578384fd5b813581811115610579578485fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011682010181811084821117156105b6578687fd5b60405281815283820185018910156105cc578586fd5b81858501868301378585838301015280955050505050509250929050565b6000602082840312156105fb578081fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b6000602080835283518082850152825b8181101561065a5785810183015185820160400152820161063e565b8181111561066b5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff811681146103f157600080fdfea26469706673582212205c308ee2592f4bdf030b623706bee6ab9c75edc92d5d7e6a111a6ff2f05d487b64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x82C63066 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x82C63066 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x83D9DDB0 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0xF399E22E EQ PUSH2 0x130 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0x554FC806 EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x502 JUMP JUMPDEST PUSH2 0x143 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC9 PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x502 JUMP JUMPDEST PUSH2 0x16B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x623 JUMP JUMPDEST PUSH2 0xDE PUSH2 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x62E JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EA JUMP JUMPDEST PUSH2 0x2B2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x108 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x602 JUMP JUMPDEST PUSH2 0xFE PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x502 JUMP JUMPDEST PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x31A JUMP JUMPDEST PUSH2 0xFE PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x51E JUMP JUMPDEST PUSH2 0x336 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x1A0 SWAP2 SWAP1 PUSH2 0x39C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x103C5DD597C7D8E78094C4DC6D76C405761E7DCD771D4A4826D5E1C484D8C3F SWAP1 PUSH2 0x1F9 SWAP1 DUP5 SWAP1 PUSH2 0x602 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2AA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x27F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2AA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x28D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND CALLER OR SWAP1 SSTORE DUP1 MLOAD PUSH2 0x397 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x46F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x3AE DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x3B5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x3C3 JUMPI PUSH2 0x3C3 DUP2 PUSH2 0x3C7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3F1 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x3F4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x4B0 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x4DD JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x4DD JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4DD JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x4C2 JUMP JUMPDEST POP PUSH2 0x4E9 SWAP3 SWAP2 POP PUSH2 0x4ED JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x4E9 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x513 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3AE DUP2 PUSH2 0x6A8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x530 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x53B DUP2 PUSH2 0x6A8 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x558 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x56B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x579 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x5B6 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP10 LT ISZERO PUSH2 0x5CC JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5FB JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x65A JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x63E JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x66B JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5C ADDRESS DUP15 0xE2 MSIZE 0x2F 0x4B 0xDF SUB SIGNEXTEND PUSH3 0x3706BE 0xE6 0xAB SWAP13 PUSH22 0xEDC92D5D7E6A111A6FF2F05D487B64736F6C63430007 ADD STOP CALLER ","sourceMap":"1044:1252:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1940:131;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2077:217;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1306:30::-;;;:::i;:::-;;;;;;;:::i;1714:113::-;;;;;;:::i;:::-;;:::i;:::-;;1225:23;;;:::i;:::-;;;;;;;:::i;1833:101::-;;;;;;:::i;:::-;;:::i;1254:46::-;;;:::i;1518:190::-;;;;;;:::i;:::-;;:::i;1940:131::-;2040:24;;2014:7;2040:24;;;:18;:24;;;;;;;1940:131::o;2077:217::-;2215:15;;2186:24;;;2143:4;2186:24;;;:18;:24;;;;;;2143:4;;2186:45;;:24;:28;:45::i;:::-;2159:24;;;;;;;:18;:24;;;;;;;:72;;;;2246:20;;;;;2178:4;;2246:20;:::i;:::-;;;;;;;;-1:-1:-1;2283:4:114;2077:217;;;:::o;1306:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1714:113::-;1788:15;:32;1714:113::o;1225:23::-;;;;;;:::o;1833:101::-;1909:7;:18;;;;;;;;;;;;;;;1833:101::o;1254:46::-;;;;;;:::o;1518:190::-;1604:8;:15;;;;;;;;;;;;;;1629:44;;;;;1662:10;1629:44;;;1683:18;;;;:7;;:18;;;;;:::i;:::-;;1518:190;;:::o;966:167:65:-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:65:o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;927:241;;1031:2;1019:9;1010:7;1006:23;1002:32;999:2;;;-1:-1;;1037:12;999:2;85:6;72:20;97:33;124:5;97:33;:::i;1175:472::-;;;1306:2;1294:9;1285:7;1281:23;1277:32;1274:2;;;-1:-1;;1312:12;1274:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1364:63;-1:-1;1492:2;1477:18;;;1464:32;1516:18;1505:30;;;1502:2;;;-1:-1;;1538:12;1502:2;1614:6;1603:9;1599:22;;;442:3;435:4;427:6;423:17;419:27;409:2;;-1:-1;;450:12;409:2;497:6;484:20;1516:18;4788:6;4785:30;4782:2;;;-1:-1;;4818:12;4782:2;1306;4445:9;1492:2;4891:9;435:4;4876:6;4872:17;4868:33;4481:6;4477:17;;4588:6;4576:10;4573:22;1516:18;4540:10;4537:34;4534:62;4531:2;;;-1:-1;;4599:12;4531:2;1306;4618:22;590:21;;;690:16;;;;;687:25;-1:-1;684:2;;;-1:-1;;715:12;684:2;6222:6;1492:2;632:6;628:17;1492:2;666:5;662:16;6199:30;-1:-1;1492:2;6269:6;666:5;6260:16;;6253:27;1558:73;;;;;;;;1268:379;;;;;:::o;1962:241::-;;2066:2;2054:9;2045:7;2041:23;2037:32;2034:2;;;-1:-1;;2072:12;2034:2;-1:-1;857:20;;2028:175;-1:-1;2028:175::o;3108:222::-;5673:42;5662:54;;;;2281:37;;3235:2;3220:18;;3206:124::o;3337:210::-;5446:13;;5439:21;2395:34;;3458:2;3443:18;;3429:118::o;3843:310::-;;3990:2;;4011:17;4004:47;2779:5;5069:12;5226:6;3990:2;3979:9;3975:18;5214:19;-1:-1;6367:101;6381:6;6378:1;6375:13;6367:101;;;6448:11;;;;;6442:18;6429:11;;;5254:14;6429:11;6422:39;6396:10;;6367:101;;;6483:6;6480:1;6477:13;6474:2;;;-1:-1;5254:14;6539:6;3979:9;6530:16;;6523:27;6474:2;-1:-1;6659:2;6639:14;6655:7;6635:28;2937:39;;;;5254:14;2937:39;;3961:192;-1:-1;;;3961:192::o;4160:222::-;3059:37;;;4287:2;4272:18;;4258:124::o;6676:117::-;5673:42;6763:5;5662:54;6738:5;6735:35;6725:2;;6784:1;;6774:12"},"methodIdentifiers":{"factory()":"c45a0155","initialize(address,string)":"f399e22e","integrate_fraction(address)":"09400707","lp_token()":"82c63066","setMockCheckpointStep(uint256)":"554fc806","setMockFactory(address)":"83d9ddb0","user_checkpoint(address)":"4b820093","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_version\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"UserCheckpoint\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_version\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lp_token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"checkpointStep\",\"type\":\"uint256\"}],\"name\":\"setMockCheckpointStep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILiquidityGaugeFactory\",\"name\":\"_factory\",\"type\":\"address\"}],\"name\":\"setMockFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}}},\"stateVariables\":{\"version\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"factory()\":{\"notice\":\"Returns gauge factory address.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"user_checkpoint(address)\":{\"notice\":\"Records a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockChildChainGauge.sol\":\"MockChildChainGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IChildChainGauge.sol\":{\"keccak256\":\"0xffafd017b9f43c8cc47f59e85e8a5354e4028110fb6c7fdbaeb569018f35e4d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bf250a0d068a2c8203dda057beabbf49705114e51086e885d7dc283a0cf3a249\",\"dweb:/ipfs/QmTBZvND9qY9k4EQYkfA9hYVSP3DxaXgKwuvDAQFDfxic2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/test/MockChildChainGauge.sol\":{\"keccak256\":\"0xb7f02645480aa1502732a231a795e03f9c3a88be7e989b4c12459ce2d1fd2ac9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21bd94586c9793e17d5a8b124492287cba0cdb75f58acc4ca7bf70c61bac490a\",\"dweb:/ipfs/QmNnfH3Jwuzrn9hCH8udgaKkzKRA8tM1A5JgqAzf4tyaF3\"]}},\"version\":1}"}},"contracts/test/MockGaugeController.sol":{"MockGaugeController":{"abi":[{"inputs":[{"internalType":"contract IVotingEscrow","name":"votingEscrow","type":"address"},{"internalType":"contract IAuthorizerAdaptor","name":"authorizerAdaptor","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"int128","name":"gauge_type","type":"int128"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"}],"name":"NewGauge","type":"event"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"int128","name":"gaugeType","type":"int128"}],"name":"add_gauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"add_type","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"contract IAuthorizerAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int128","name":"","type":"int128"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"change_type_weight","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkpoint_gauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"gauge_exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"gauge_relative_weight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"gauge_types","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"n_gauge_types","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"uint256","name":"weight","type":"uint256"}],"name":"setGaugeWeight","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bias","type":"uint256"}],"name":"setGaugeWeightBias","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"time_weight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"voting_escrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161091f38038061091f8339818101604052604081101561003357600080fd5b508051602090910151600680546001600160a01b039384166001600160a01b031991821617909155600580549390921692169190911790556108a58061007a6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639fba03a11161008c578063db1ca26011610066578063db1ca2601461033d578063dfe0503114610363578063f851a44014610394578063fc0c546a1461039c576100ea565b80639fba03a1146102b7578063a4d7a250146102bf578063d3078c9414610304576100ea565b806361df1bf9116100c857806361df1bf9146101aa57806372a5d062146101f15780638d57bba41461020e57806392d0d23214610247576100ea565b80633a04f900146100ef5780633f9095b71461012d578063615e523714610177575b600080fd5b61012b6004803603604081101561010557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135600f0b6103a4565b005b6101606004803603602081101561014357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610543565b60408051600f9290920b8252519081900360200190f35b61012b6004803603602081101561018d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105ed565b6101dd600480360360208110156101c057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105f0565b604080519115158252519081900360200190f35b61012b6004803603602081101561020757600080fd5b503561061b565b61012b6004803603604081101561022457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610697565b61012b6004803603604081101561025d57600080fd5b81019060208101813564010000000081111561027857600080fd5b82018360208201111561028a57600080fd5b803590602001918460018302840111640100000000831117156102ac57600080fd5b91935091503561073e565b61016061078a565b6102f2600480360360208110156102d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610793565b60408051918252519081900360200190f35b6102f26004803603604081101561031a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610799565b61012b6004803603604081101561035357600080fd5b508035600f0b90602001356107c9565b61036b6107cd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61036b6107e9565b61036b610805565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff1615610423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061082d6022913960400191505060405180910390fd5b600081600f0b121580156104425750600054600f90810b810b9082900b125b6104ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e76616c696420676175676520747970650000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600081815260016020818152604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092558151938452600f85900b9084015282810191909152517ffd55b3191f9c9dd92f4f134dd700e7d76f6a0c836a08687023d6d38f03ebd8779181900360600190a15050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081205460ff166105c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061084f6021913960400191505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902054600f0b90565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b670de0b6b3a764000081111561069257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4269617320746f6f206869676800000000000000000000000000000000000000604482015290519081900360640190fd5b600455565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061080b6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260036020526040902055565b505060008054600f81810b600101900b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090911617905550565b600054600f0b90565b50600090565b60045473ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260409020540192915050565b5050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60009056fe476175676520646f6573206e6f74206578697374206f6e20636f6e74726f6c6c6572476175676520616c726561647920657869737473206f6e20636f6e74726f6c6c6572476175676520646f65736e2774206578697374206f6e20636f6e74726f6c6c6572a264697066735822122074967dfb0b58688f62394147de190dcd9e863320793058a65093d9bde77954fc64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x91F CODESIZE SUB DUP1 PUSH2 0x91F DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP4 SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x8A5 DUP1 PUSH2 0x7A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9FBA03A1 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDB1CA260 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDB1CA260 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0xDFE05031 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x39C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x9FBA03A1 EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0xA4D7A250 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0xD3078C94 EQ PUSH2 0x304 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x61DF1BF9 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x61DF1BF9 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x72A5D062 EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x8D57BBA4 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x92D0D232 EQ PUSH2 0x247 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x3A04F900 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x3F9095B7 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x615E5237 EQ PUSH2 0x177 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x3A4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x543 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xF SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5ED JUMP JUMPDEST PUSH2 0x1DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x61B JUMP JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x697 JUMP JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x28A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH2 0x73E JUMP JUMPDEST PUSH2 0x160 PUSH2 0x78A JUMP JUMPDEST PUSH2 0x2F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x793 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x799 JUMP JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0xF SIGNEXTEND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7C9 JUMP JUMPDEST PUSH2 0x36B PUSH2 0x7CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36B PUSH2 0x7E9 JUMP JUMPDEST PUSH2 0x36B PUSH2 0x805 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x423 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x82D PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xF SIGNEXTEND SLT ISZERO DUP1 ISZERO PUSH2 0x442 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xF SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 DUP3 SWAP1 SIGNEXTEND SLT JUMPDEST PUSH2 0x4AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676520747970650000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE PUSH1 0xF DUP6 SWAP1 SIGNEXTEND SWAP1 DUP5 ADD MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xFD55B3191F9C9DD92F4F134DD700E7D76F6A0C836A08687023D6D38F03EBD877 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x5C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x84F PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0x692 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4269617320746F6F206869676800000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x715 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x80B PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xF DUP2 DUP2 SIGNEXTEND PUSH1 0x1 ADD SWAP1 SIGNEXTEND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP INVALID SELFBALANCE PUSH2 0x7567 PUSH6 0x20646F657320 PUSH15 0x6F74206578697374206F6E20636F6E PUSH21 0x726F6C6C6572476175676520616C72656164792065 PUSH25 0x69737473206F6E20636F6E74726F6C6C657247617567652064 PUSH16 0x65736E2774206578697374206F6E2063 PUSH16 0x6E74726F6C6C6572A264697066735822 SLT KECCAK256 PUSH21 0x967DFB0B58688F62394147DE190DCD9E8633207930 PC 0xA6 POP SWAP4 0xD9 0xBD 0xE7 PUSH26 0x54FC64736F6C6343000701003300000000000000000000000000 ","sourceMap":"979:2538:115:-:0;;;1556:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1556:158:115;;;;;;;1644:13;:28;;-1:-1:-1;;;;;1644:28:115;;;-1:-1:-1;;;;;;1644:28:115;;;;;;;1682:5;:25;;;;;;;;;;;;;;979:2538;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639fba03a11161008c578063db1ca26011610066578063db1ca2601461033d578063dfe0503114610363578063f851a44014610394578063fc0c546a1461039c576100ea565b80639fba03a1146102b7578063a4d7a250146102bf578063d3078c9414610304576100ea565b806361df1bf9116100c857806361df1bf9146101aa57806372a5d062146101f15780638d57bba41461020e57806392d0d23214610247576100ea565b80633a04f900146100ef5780633f9095b71461012d578063615e523714610177575b600080fd5b61012b6004803603604081101561010557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135600f0b6103a4565b005b6101606004803603602081101561014357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610543565b60408051600f9290920b8252519081900360200190f35b61012b6004803603602081101561018d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105ed565b6101dd600480360360208110156101c057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105f0565b604080519115158252519081900360200190f35b61012b6004803603602081101561020757600080fd5b503561061b565b61012b6004803603604081101561022457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610697565b61012b6004803603604081101561025d57600080fd5b81019060208101813564010000000081111561027857600080fd5b82018360208201111561028a57600080fd5b803590602001918460018302840111640100000000831117156102ac57600080fd5b91935091503561073e565b61016061078a565b6102f2600480360360208110156102d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610793565b60408051918252519081900360200190f35b6102f26004803603604081101561031a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610799565b61012b6004803603604081101561035357600080fd5b508035600f0b90602001356107c9565b61036b6107cd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61036b6107e9565b61036b610805565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff1615610423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061082d6022913960400191505060405180910390fd5b600081600f0b121580156104425750600054600f90810b810b9082900b125b6104ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e76616c696420676175676520747970650000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600081815260016020818152604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092558151938452600f85900b9084015282810191909152517ffd55b3191f9c9dd92f4f134dd700e7d76f6a0c836a08687023d6d38f03ebd8779181900360600190a15050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081205460ff166105c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061084f6021913960400191505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902054600f0b90565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b670de0b6b3a764000081111561069257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4269617320746f6f206869676800000000000000000000000000000000000000604482015290519081900360640190fd5b600455565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061080b6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260036020526040902055565b505060008054600f81810b600101900b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090911617905550565b600054600f0b90565b50600090565b60045473ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260409020540192915050565b5050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60009056fe476175676520646f6573206e6f74206578697374206f6e20636f6e74726f6c6c6572476175676520616c726561647920657869737473206f6e20636f6e74726f6c6c6572476175676520646f65736e2774206578697374206f6e20636f6e74726f6c6c6572a264697066735822122074967dfb0b58688f62394147de190dcd9e863320793058a65093d9bde77954fc64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9FBA03A1 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDB1CA260 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDB1CA260 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0xDFE05031 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x39C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x9FBA03A1 EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0xA4D7A250 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0xD3078C94 EQ PUSH2 0x304 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x61DF1BF9 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x61DF1BF9 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x72A5D062 EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x8D57BBA4 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x92D0D232 EQ PUSH2 0x247 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x3A04F900 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x3F9095B7 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x615E5237 EQ PUSH2 0x177 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x3A4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x160 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x543 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xF SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5ED JUMP JUMPDEST PUSH2 0x1DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x61B JUMP JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x697 JUMP JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x28A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH2 0x73E JUMP JUMPDEST PUSH2 0x160 PUSH2 0x78A JUMP JUMPDEST PUSH2 0x2F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x793 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x799 JUMP JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0xF SIGNEXTEND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7C9 JUMP JUMPDEST PUSH2 0x36B PUSH2 0x7CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36B PUSH2 0x7E9 JUMP JUMPDEST PUSH2 0x36B PUSH2 0x805 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x423 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x82D PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xF SIGNEXTEND SLT ISZERO DUP1 ISZERO PUSH2 0x442 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xF SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 DUP3 SWAP1 SIGNEXTEND SLT JUMPDEST PUSH2 0x4AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C696420676175676520747970650000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE DUP2 MLOAD SWAP4 DUP5 MSTORE PUSH1 0xF DUP6 SWAP1 SIGNEXTEND SWAP1 DUP5 ADD MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH32 0xFD55B3191F9C9DD92F4F134DD700E7D76F6A0C836A08687023D6D38F03EBD877 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x5C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x84F PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 GT ISZERO PUSH2 0x692 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4269617320746F6F206869676800000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x715 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x80B PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xF DUP2 DUP2 SIGNEXTEND PUSH1 0x1 ADD SWAP1 SIGNEXTEND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP INVALID SELFBALANCE PUSH2 0x7567 PUSH6 0x20646F657320 PUSH15 0x6F74206578697374206F6E20636F6E PUSH21 0x726F6C6C6572476175676520616C72656164792065 PUSH25 0x69737473206F6E20636F6E74726F6C6C657247617567652064 PUSH16 0x65736E2774206578697374206F6E2063 PUSH16 0x6E74726F6C6C6572A264697066735822 SLT KECCAK256 PUSH21 0x967DFB0B58688F62394147DE190DCD9E8633207930 PC 0xA6 POP SWAP4 0xD9 0xBD 0xE7 PUSH26 0x54FC64736F6C6343000701003300000000000000000000000000 ","sourceMap":"979:2538:115:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2026:317;;;;;;;;;;;;;;;;-1:-1:-1;2026:317:115;;;;;;;;;;;:::i;:::-;;1829:191;;;;;;;;;;;;;;;;-1:-1:-1;1829:191:115;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;2549:117;;;;;;;;;;;;;;;;-1:-1:-1;2549:117:115;;;;:::i;2965:::-;;;;;;;;;;;;;;;;-1:-1:-1;2965:117:115;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3274:139;;;;;;;;;;;;;;;;-1:-1:-1;3274:139:115;;:::i;3088:180::-;;;;;;;;;;;;;;;;-1:-1:-1;3088:180:115;;;;;;;;;:::i;2349:98::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2349:98:115;-1:-1:-1;2349:98:115;;:::i;1720:103::-;;;:::i;3419:96::-;;;;;;;;;;;;;;;;-1:-1:-1;3419:96:115;;;;:::i;:::-;;;;;;;;;;;;;;;;2672:154;;;;;;;;;;;;;;;;-1:-1:-1;2672:154:115;;;;;;;;;:::i;2832:127::-;;;;;;;;;;;;;;;;-1:-1:-1;2832:127:115;;;;;;;;;:::i;1357:43::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1259:40;;;:::i;2453:90::-;;;:::i;2026:317::-;2115:18;;;;;;;:11;:18;;;;;;;;2114:19;2106:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2203:1;2190:9;:14;;;;:44;;;;-1:-1:-1;2220:14:115;;;;;;2208:26;;;;;;;2190:44;2182:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2267:18;;;;;;;2288:4;2267:18;;;;;;;;:25;;;;;;;;;;2307:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2026:317;;:::o;1829:191::-;1923:18;;;1897:6;1923:18;;;:11;:18;;;;;;;;1915:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1996:17:115;;;;;;:10;:17;;;;;;;;;1829:191::o;2549:117::-;;:::o;2965:::-;3057:18;;3034:4;3057:18;;;:11;:18;;;;;;;;;2965:117::o;3274:139::-;3351:4;3343;:12;;3335:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3383:16;:23;3274:139::o;3088:180::-;3170:18;;;;;;;:11;:18;;;;;;;;3162:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3237:15;;;;;;;;:8;:15;;;;;:24;3088:180::o;2349:98::-;-1:-1:-1;;2421:14:115;:19;;;;;;2439:1;2421:19;;;;;;;;;;;;-1:-1:-1;2349:98:115:o;1720:103::-;1777:6;1802:14;;;1720:103;:::o;3419:96::-;-1:-1:-1;3481:7:115;;3419:96::o;2672:154::-;2803:16;;2785:15;;;2759:7;2785:15;;;:8;:15;;;;;;:34;2672:154;;;;:::o;2832:127::-;;;:::o;1357:43::-;;;;;;:::o;1259:40::-;;;;;;:::o;2453:90::-;2502:6;2453:90;:::o"},"methodIdentifiers":{"add_gauge(address,int128)":"3a04f900","add_type(string,uint256)":"92d0d232","admin()":"f851a440","change_type_weight(int128,uint256)":"db1ca260","checkpoint_gauge(address)":"615e5237","gauge_exists(address)":"61df1bf9","gauge_relative_weight(address,uint256)":"d3078c94","gauge_types(address)":"3f9095b7","n_gauge_types()":"9fba03a1","setGaugeWeight(address,uint256)":"8d57bba4","setGaugeWeightBias(uint256)":"72a5d062","time_weight(address)":"a4d7a250","token()":"fc0c546a","voting_escrow()":"dfe05031"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"votingEscrow\",\"type\":\"address\"},{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"authorizerAdaptor\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"gauge_type\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"NewGauge\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"int128\",\"name\":\"gaugeType\",\"type\":\"int128\"}],\"name\":\"add_gauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"add_type\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"change_type_weight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"checkpoint_gauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"gauge_exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gauge_relative_weight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"gauge_types\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n_gauge_types\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"setGaugeWeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bias\",\"type\":\"uint256\"}],\"name\":\"setGaugeWeightBias\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"time_weight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"voting_escrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockGaugeController.sol\":\"MockGaugeController\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xb8c6bc4d13c706b762556f941a6554788c1692dca998b02e3a92956b9eaac4fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faba20fac37786866db38c90ef282f256316bcb5003b536d7aec0b1147c052df\",\"dweb:/ipfs/QmTGrSaaNtZt8mnRSzjCWSi59GxEp4ho7hi3LHJboBoiwG\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"contracts/test/MockGaugeController.sol\":{\"keccak256\":\"0x43ca32f14a91a8c5cd2f04907d3dabbd5d70636a7fc8d5c816aec396f77cea8a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://05b40ade64f14ac2cbb4a517df9209967172030a4835ebd9adc88476b0f192ab\",\"dweb:/ipfs/Qmdodi7a66uMyWLgA1PF8JGkJrH72yNmiitsM45qMtFNMX\"]}},\"version\":1}"}},"contracts/test/MockL2LayerZeroDelegation.sol":{"MockL2LayerZeroDelegation":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"OnVeBalBridged","type":"event"},{"anonymous":false,"inputs":[],"name":"OnVeBalSupplyUpdate","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"onVeBalBridged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"onVeBalSupplyUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806396345fb5146037578063df130bfe14603f575b600080fd5b603d606f565b005b603d60048036036020811015605357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16609a565b6040517f1a1847013e2565a8419e50f84464bc78e81a9b06e839cc6196ef88138d4435a990600090a1565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f75e2797830269bd4ffcd50158cc60532b40559a46a0b17249e0a325628d0500e9181900360200190a15056fea2646970667358221220c26c160d41e6876536d3f2977b30b669f150e2b913e3f8087fbd1d0e4a469ded64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96345FB5 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xDF130BFE EQ PUSH1 0x3F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x6F JUMP JUMPDEST STOP JUMPDEST PUSH1 0x3D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x9A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1A1847013E2565A8419E50F84464BC78E81A9B06E839CC6196EF88138D4435A9 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x75E2797830269BD4FFCD50158CC60532B40559A46A0B17249E0A325628D0500E SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 PUSH13 0x160D41E6876536D3F2977B30B6 PUSH10 0xF150E2B913E3F8087FBD SAR 0xE 0x4A CHAINID SWAP14 0xED PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"807:339:116:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060325760003560e01c806396345fb5146037578063df130bfe14603f575b600080fd5b603d606f565b005b603d60048036036020811015605357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16609a565b6040517f1a1847013e2565a8419e50f84464bc78e81a9b06e839cc6196ef88138d4435a990600090a1565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f75e2797830269bd4ffcd50158cc60532b40559a46a0b17249e0a325628d0500e9181900360200190a15056fea2646970667358221220c26c160d41e6876536d3f2977b30b669f150e2b913e3f8087fbd1d0e4a469ded64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96345FB5 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xDF130BFE EQ PUSH1 0x3F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x6F JUMP JUMPDEST STOP JUMPDEST PUSH1 0x3D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x9A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1A1847013E2565A8419E50F84464BC78E81A9B06E839CC6196EF88138D4435A9 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x75E2797830269BD4FFCD50158CC60532B40559A46A0B17249E0A325628D0500E SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 PUSH13 0x160D41E6876536D3F2977B30B6 PUSH10 0xF150E2B913E3F8087FBD SAR 0xE 0x4A CHAINID SWAP14 0xED PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"807:339:116:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1052:92;;;:::i;:::-;;948:98;;;;;;;;;;;;;;;;-1:-1:-1;948:98:116;;;;:::i;1052:92::-;1116:21;;;;;;;1052:92::o;948:98::-;1019:20;;;;;;;;;;;;;;;;;;;948:98;:::o"},"methodIdentifiers":{"onVeBalBridged(address)":"df130bfe","onVeBalSupplyUpdate()":"96345fb5"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"OnVeBalBridged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"OnVeBalSupplyUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"onVeBalBridged\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onVeBalSupplyUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onVeBalBridged(address)\":{\"params\":{\"user\":\"The user whose veBAL balance was updated.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onVeBalBridged(address)\":{\"notice\":\"Called whenever the veBAL balance of a user is updated in a L2 chain.\"},\"onVeBalSupplyUpdate()\":{\"notice\":\"Called whenever the total veBAL supply is updated in a L2 chain.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockL2LayerZeroDelegation.sol\":\"MockL2LayerZeroDelegation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IL2LayerZeroDelegation.sol\":{\"keccak256\":\"0xbeed8a8a1802aede5aa6670554125c5938ea06fc5a96c1b75dbc93d1dd586048\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5cf7cef349eba6938df4d8993dcab2b16775b2daf0cc0d5ad71d91f27221eb00\",\"dweb:/ipfs/QmS22HyJFUggLjLx9WABDcMPq6XqC3f4Q23NrKv6CmnkL5\"]},\"contracts/test/MockL2LayerZeroDelegation.sol\":{\"keccak256\":\"0xeb53095183fc013b781e9142635328c9839decfedfe4da22e2a8490df838e2b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dcba70090390a85e97a0b083ab6f9da551f590702134d51561a28757c498a824\",\"dweb:/ipfs/QmVJeNiWFVqtw2o3e3taXu6ErFkk9pStSnaJxBhQLpsPEG\"]}},\"version\":1}"}},"contracts/test/MockLiquidityGauge.sol":{"MockLiquidityGauge":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lp_token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5061041a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806383f5c39b11610076578063ab8f09451161005b578063ab8f09451461014f578063cd6dc68714610157578063d34fb2671461016a576100be565b806383f5c39b1461013f5780639c868ac014610147576100be565b806314e956f5116100a757806314e956f5146101015780634b8200931461010f57806382c630661461012a576100be565b806309400707146100c357806310d3eb04146100ec575b600080fd5b6100d66100d136600461034b565b610172565b6040516100e391906103db565b60405180910390f35b6100ff6100fa366004610397565b610184565b005b6100d66100d1366004610397565b61011d6100d136600461034b565b6040516100e391906103d0565b610132610192565b6040516100e391906103af565b6100d66101ae565b61011d6101be565b6100ff6101df565b6100ff61016536600461036d565b610220565b6100ff610268565b600061017f6103e6610292565b919050565b61018f6103e6610292565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60006101bb6103e6610292565b90565b60005474010000000000000000000000000000000000000000900460ff1690565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261018f917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461034557600080fd5b92915050565b60006020828403121561035c578081fd5b6103668383610321565b9392505050565b6000806040838503121561037f578081fd5b6103898484610321565b946020939093013593505050565b6000602082840312156103a8578081fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b9081526020019056fea2646970667358221220531bab4ff4892ba099430b749f656a77ebc6e324b0e4d8732cc32667555427a764736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41A DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x16A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x147 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x82C63066 EQ PUSH2 0x12A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x34B JUMP JUMPDEST PUSH2 0x172 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x397 JUMP JUMPDEST PUSH2 0x184 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x397 JUMP JUMPDEST PUSH2 0x11D PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x34B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x192 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x3AF JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x1AE JUMP JUMPDEST PUSH2 0x11D PUSH2 0x1BE JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1DF JUMP JUMPDEST PUSH2 0xFF PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0x36D JUMP JUMPDEST PUSH2 0x220 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17F PUSH2 0x3E6 PUSH2 0x292 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18F PUSH2 0x3E6 PUSH2 0x292 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BB PUSH2 0x3E6 PUSH2 0x292 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x18F SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x35C JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x366 DUP4 DUP4 PUSH2 0x321 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x389 DUP5 DUP5 PUSH2 0x321 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A8 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 SHL 0xAB 0x4F DELEGATECALL DUP10 0x2B LOG0 SWAP10 NUMBER SIGNEXTEND PUSH21 0x9F656A77EBC6E324B0E4D8732CC32667555427A764 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"964:1385:117:-:0;;;1127:78;;;;;;;;;;964:1385;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100be5760003560e01c806383f5c39b11610076578063ab8f09451161005b578063ab8f09451461014f578063cd6dc68714610157578063d34fb2671461016a576100be565b806383f5c39b1461013f5780639c868ac014610147576100be565b806314e956f5116100a757806314e956f5146101015780634b8200931461010f57806382c630661461012a576100be565b806309400707146100c357806310d3eb04146100ec575b600080fd5b6100d66100d136600461034b565b610172565b6040516100e391906103db565b60405180910390f35b6100ff6100fa366004610397565b610184565b005b6100d66100d1366004610397565b61011d6100d136600461034b565b6040516100e391906103d0565b610132610192565b6040516100e391906103af565b6100d66101ae565b61011d6101be565b6100ff6101df565b6100ff61016536600461036d565b610220565b6100ff610268565b600061017f6103e6610292565b919050565b61018f6103e6610292565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60006101bb6103e6610292565b90565b60005474010000000000000000000000000000000000000000900460ff1690565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261018f917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461034557600080fd5b92915050565b60006020828403121561035c578081fd5b6103668383610321565b9392505050565b6000806040838503121561037f578081fd5b6103898484610321565b946020939093013593505050565b6000602082840312156103a8578081fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b9081526020019056fea2646970667358221220531bab4ff4892ba099430b749f656a77ebc6e324b0e4d8732cc32667555427a764736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x83F5C39B GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xAB8F0945 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xAB8F0945 EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0xCD6DC687 EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0xD34FB267 EQ PUSH2 0x16A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x83F5C39B EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x9C868AC0 EQ PUSH2 0x147 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x14E956F5 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x14E956F5 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x4B820093 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x82C63066 EQ PUSH2 0x12A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x9400707 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x10D3EB04 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x34B JUMP JUMPDEST PUSH2 0x172 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x397 JUMP JUMPDEST PUSH2 0x184 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x397 JUMP JUMPDEST PUSH2 0x11D PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x34B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x192 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x3AF JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x1AE JUMP JUMPDEST PUSH2 0x11D PUSH2 0x1BE JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1DF JUMP JUMPDEST PUSH2 0xFF PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0x36D JUMP JUMPDEST PUSH2 0x220 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17F PUSH2 0x3E6 PUSH2 0x292 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18F PUSH2 0x3E6 PUSH2 0x292 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BB PUSH2 0x3E6 PUSH2 0x292 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x18F SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x35C JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x366 DUP4 DUP4 PUSH2 0x321 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x389 DUP5 DUP5 PUSH2 0x321 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A8 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 SHL 0xAB 0x4F DELEGATECALL DUP10 0x2B LOG0 SWAP10 NUMBER SIGNEXTEND PUSH21 0x9F656A77EBC6E324B0E4D8732CC32667555427A764 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"964:1385:117:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1725:124;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1979:108;;;;;;:::i;:::-;;:::i;:::-;;2218:129;;;;;;:::i;1855:118::-;;;;;;:::i;:::-;;;;;;;:::i;1069:23::-;;;:::i;:::-;;;;;;;:::i;2093:119::-;;;:::i;1301:92::-;;;:::i;1399:72::-;;;:::i;1211:84::-;;;;;;:::i;:::-;;:::i;1477:75::-;;;:::i;1725:124::-;1794:7;1813:29;15034:3:31;1813:7:117;:29::i;:::-;1725:124;;;:::o;1979:108::-;2051:29;15034:3:31;2051:7:117;:29::i;:::-;1979:108;:::o;1069:23::-;;;;;;:::o;2093:119::-;2157:7;2176:29;15034:3:31;2176:7:117;:29::i;:::-;2093:119;:::o;1301:92::-;1354:4;1377:9;;;;;;;1301:92::o;1399:72::-;1448:9;:16;;;;;;;;1399:72::o;1211:84::-;-1:-1:-1;1273:8:117;:15;;;;;;;;;;;;;;;1211:84::o;1477:75::-;1540:5;1528:17;;;;;;1477:75::o;1459:126:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;5:130:-1;72:20;;2437:42;2426:54;;2630:35;;2620:2;;2679:1;;2669:12;2620:2;57:78;;;;:::o;279:241::-;;383:2;371:9;362:7;358:23;354:32;351:2;;;-1:-1;;389:12;351:2;451:53;496:7;472:22;451:53;:::i;:::-;441:63;345:175;-1:-1;;;345:175::o;527:366::-;;;648:2;636:9;627:7;623:23;619:32;616:2;;;-1:-1;;654:12;616:2;716:53;761:7;737:22;716:53;:::i;:::-;706:63;806:2;845:22;;;;209:20;;-1:-1;;;610:283::o;900:241::-;;1004:2;992:9;983:7;979:23;975:32;972:2;;;-1:-1;;1010:12;972:2;-1:-1;209:20;;966:175;-1:-1;966:175::o;1499:222::-;2437:42;2426:54;;;;1219:37;;1626:2;1611:18;;1597:124::o;1728:210::-;2338:13;;2331:21;1333:34;;1849:2;1834:18;;1820:118::o;1945:222::-;1450:37;;;2072:2;2057:18;;2043:124::o"},"methodIdentifiers":{"getCappedRelativeWeight(uint256)":"14e956f5","getRelativeWeightCap()":"83f5c39b","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","lp_token()":"82c63066","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lp_token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockLiquidityGauge.sol\":\"MockLiquidityGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"contracts/test/MockLiquidityGauge.sol\":{\"keccak256\":\"0xef3ca6d2d7a3b00181955304573c5f94004a578e48c90544b19798bdbb7cb90c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a105a00bc3cc25f8cd98e787bd33b48539203652defc2d25a2797649bd97eb77\",\"dweb:/ipfs/QmTGFhVcWSiFYidJTmuiszWPpy48xXAHrzR29L2rXkj1E4\"]}},\"version\":1}"}},"contracts/test/MockLiquidityGaugeFactory.sol":{"MockLiquidityGaugeFactory":{"abi":[{"inputs":[{"internalType":"contract MockLiquidityGauge","name":"gaugeImplementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161049c38038061049c83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610082565b600060208284031215610065578081fd5b81516001600160a01b038116811461007b578182fd5b9392505050565b61040b806100916000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea264697066735822122009086b9a47d335444965b77eb2e1745de3726edaff743d11492cddf481d18ca064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x49C CODESIZE SUB DUP1 PUSH2 0x49C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x82 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7B JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x40B DUP1 PUSH2 0x91 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD ADDMOD PUSH12 0x9A47D335444965B77EB2E174 0x5D 0xE3 PUSH19 0x6EDAFF743D11492CDDF481D18CA064736F6C63 NUMBER STOP SMOD ADD STOP CALLER ","sourceMap":"824:453:118:-:0;;;885:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1153:20:83;:42;;-1:-1:-1;;;;;;1153:42:83;-1:-1:-1;;;;;1153:42:83;;;;;;;;;;824:453:118;;202:319:-1;;345:2;333:9;324:7;320:23;316:32;313:2;;;-1:-1;;351:12;313:2;111:13;;-1:-1;;;;;814:54;;967:63;;957:2;;-1:-1;;1034:12;957:2;403:102;307:214;-1:-1;;;307:214::o;:::-;824:453:118;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c80630ecaea731461004657806339312dee1461006f578063ce3cc8bd14610077575b600080fd5b610059610054366004610322565b610097565b604051610066919061034c565b60405180910390f35b610059610135565b61008a610085366004610300565b610151565b6040516100669190610393565b6000806100a2610180565b6040517fcd6dc68700000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063cd6dc687906100f9908790879060040161036d565b600060405180830381600087803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b509293505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b919050565b6000805481906101a59073ffffffffffffffffffffffffffffffffffffffff16610226565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555192935090917faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c09190a2905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d39061039e565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461012f57600080fd5b600060208284031215610311578081fd5b61031b83836102dc565b9392505050565b60008060408385031215610334578081fd5b61033e84846102dc565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60208082526016908201527f455243313136373a20637265617465206661696c65640000000000000000000060408201526060019056fea264697066735822122009086b9a47d335444965b77eb2e1745de3726edaff743d11492cddf481d18ca064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xECAEA73 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x39312DEE EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xCE3CC8BD EQ PUSH2 0x77 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x135 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x300 JUMP JUMPDEST PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xCD6DC68700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0xCD6DC687 SWAP1 PUSH2 0xF9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x1A5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x226 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0xAA98436D09D130AF48DE49867AF8B723BBBEBB0D737638B5FE8F1BF31BBB71C0 SWAP2 SWAP1 LOG2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP3 PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x17B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D3 SWAP1 PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x311 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x31B DUP4 DUP4 PUSH2 0x2DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x334 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP5 PUSH2 0x2DC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD ADDMOD PUSH12 0x9A47D335444965B77EB2E174 0x5D 0xE3 PUSH19 0x6EDAFF743D11492CDDF481D18CA064736F6C63 NUMBER STOP SMOD ADD STOP CALLER ","sourceMap":"824:453:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1054:221;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:108:83;;;:::i;1507:131::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1054:221:118:-;1129:7;1148:13;1164:9;:7;:9::i;:::-;1184:61;;;;;1148:25;;-1:-1:-1;1184:36:118;;;;;;:61;;1221:4;;1227:17;;1184:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1263:5:118;;-1:-1:-1;;;;1054:221:118;;;;;:::o;1309:108:83:-;1364:7;1390:20;;;1309:108;:::o;1507:131::-;1605:26;;;1582:4;1605:26;;;:19;:26;;;;;;;;1507:131;;;;:::o;1854:214::-;1891:7;1939:20;;1891:7;;1926:34;;1939:20;;1926:12;:34::i;:::-;1971:26;;;;;;;2000:4;1971:26;;;;;;;;:33;;;;;;;;;;2019:19;1910:50;;-1:-1:-1;1971:26:83;;2019:19;;1971:26;2019:19;2056:5;-1:-1:-1;1854:214:83;:::o;1001:515:57:-;1058:16;1126:4;1120:11;1156:66;1151:3;1144:79;1269:14;1263:4;1259:25;1252:4;1247:3;1243:14;1236:49;1321:66;1314:4;1309:3;1305:14;1298:90;1428:4;1423:3;1420:1;1413:20;1401:32;-1:-1:-1;;1460:22:57;;;1452:57;;;;;;;;;;;;:::i;:::-;;;;;;;;5:130:-1;72:20;;3226:42;3215:54;;3419:35;;3409:2;;3468:1;;3458:12;279:241;;383:2;371:9;362:7;358:23;354:32;351:2;;;-1:-1;;389:12;351:2;451:53;496:7;472:22;451:53;:::i;:::-;441:63;345:175;-1:-1;;;345:175::o;527:366::-;;;648:2;636:9;627:7;623:23;619:32;616:2;;;-1:-1;;654:12;616:2;716:53;761:7;737:22;716:53;:::i;:::-;706:63;806:2;845:22;;;;209:20;;-1:-1;;;610:283::o;1582:222::-;3226:42;3215:54;;;;971:37;;1709:2;1694:18;;1680:124::o;1811:333::-;3226:42;3215:54;;;;971:37;;2130:2;2115:18;;1533:37;1966:2;1951:18;;1937:207::o;2151:210::-;3127:13;;3120:21;1085:34;;2272:2;2257:18;;2243:118::o;2368:416::-;2568:2;2582:47;;;1356:2;2553:18;;;2895:19;1392:24;2935:14;;;1372:45;1436:12;;;2539:245::o"},"methodIdentifiers":{"create(address,uint256)":"0ecaea73","getGaugeImplementation()":"39312dee","isGaugeFromFactory(address)":"ce3cc8bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract MockLiquidityGauge\",\"name\":\"gaugeImplementation\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"GaugeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"isGaugeFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getGaugeImplementation()\":{\"notice\":\"Returns the address of the implementation used for gauge deployments.\"},\"isGaugeFromFactory(address)\":{\"notice\":\"Returns true if `gauge` was created by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockLiquidityGaugeFactory.sol\":\"MockLiquidityGaugeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGaugeFactory.sol\":{\"keccak256\":\"0xc5b6bd0aad8bd55488aedae7364ebba361d1867f9c9829df1791bfbee6c680ea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://109bd780c0c06b5cd6d214441f1dd30934b285374305c606326409907eb2a122\",\"dweb:/ipfs/Qmf7USSdCnHbN8vDG6QupfW1aBKuArzDiMrsPvZCB3XSAW\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Clones.sol\":{\"keccak256\":\"0x0ef386c5d211024ce07fd77245128db56fdfd2aae7e5e4232b72fb0cecb6be03\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f09b20288f085f7a2ce289a8b1676d2d873e76a25929fbd9328e2d722225b5\",\"dweb:/ipfs/QmbVW5u6dSXsTBb66tKHS9QN5RPonEcpNzAjJ1nBe8UVRi\"]},\"contracts/gauges/BaseGaugeFactory.sol\":{\"keccak256\":\"0xbbb4ae47e7443f5a1b16f33d100818ddce826d40537032e6a8d1fecc13a0d4fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21b1ef6b2862a405bd6f132c19629ef6b1b773d8b7412e17baf167f85b894507\",\"dweb:/ipfs/QmNvUtYo65vi4PcoHdQTXYZfn2G7azQDY4vYayzBSRpPDG\"]},\"contracts/test/MockLiquidityGauge.sol\":{\"keccak256\":\"0xef3ca6d2d7a3b00181955304573c5f94004a578e48c90544b19798bdbb7cb90c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a105a00bc3cc25f8cd98e787bd33b48539203652defc2d25a2797649bd97eb77\",\"dweb:/ipfs/QmTGFhVcWSiFYidJTmuiszWPpy48xXAHrzR29L2rXkj1E4\"]},\"contracts/test/MockLiquidityGaugeFactory.sol\":{\"keccak256\":\"0x7e97a46a4467c17cf5f0e8900f8a754020bf6d0f0b33d03e754dd5dcc1e447de\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://759ec75a82c6dd64407aa5d629bae10630e0e81ed9a808d98c93a0bd3b9a1955\",\"dweb:/ipfs/QmS5GSxhPv74rirybikWEUnD74pK3gmdyszWS4f5ALbYCe\"]}},\"version\":1}"}},"contracts/test/MockOmniVotingEscrow.sol":{"MockOmniVotingEscrow":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint16","name":"chainId","type":"uint16"},{"indexed":false,"internalType":"address","name":"refundAddress","type":"address"},{"indexed":false,"internalType":"address","name":"zroPaymentAddress","type":"address"},{"indexed":false,"internalType":"bytes","name":"adapterParams","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"SendUserBalance","type":"event"},{"inputs":[{"internalType":"uint16","name":"chainId","type":"uint16"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"estimateSendUserBalance","outputs":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"zroFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"address payable","name":"_refundAddress","type":"address"},{"internalType":"address","name":"_zroPaymentAddress","type":"address"},{"internalType":"bytes","name":"_adapterParams","type":"bytes"}],"name":"sendUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"setNativeFee","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50610416806100206000396000f3fe6080604052600436106100345760003560e01c80634a7594891461003957806365d092d01461004e578063916c4eb514610085575b600080fd5b61004c610047366004610137565b6100a5565b005b34801561005a57600080fd5b5061006e61006936600461023a565b6100ed565b60405161007c9291906103ad565b60405180910390f35b34801561009157600080fd5b5061004c6100a03660046102ca565b61010a565b7f85696fbeb1aa174e49750d531d1e0ee0892390f9f64b05d24692355e1d5700ef8585858585346040516100de969594939291906102f6565b60405180910390a15050505050565b50505061ffff166000908152602081905260409020546001549091565b61ffff16600090815260208190526040902055565b803561ffff8116811461013157600080fd5b92915050565b600080600080600060a0868803121561014e578081fd5b8535610159816103bb565b945060206101698888830161011f565b94506040870135610179816103bb565b93506060870135610189816103bb565b9250608087013567ffffffffffffffff808211156101a5578384fd5b818901915089601f8301126101b8578384fd5b8135818111156101c6578485fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610203578687fd5b60405281815283820185018c1015610219578586fd5b81858501868301378585838301015280955050505050509295509295909350565b6000806000806060858703121561024f578384fd5b610259868661011f565b93506020850135801515811461026d578384fd5b9250604085013567ffffffffffffffff80821115610289578384fd5b818701915087601f83011261029c578384fd5b8135818111156102aa578485fd5b8860208285010111156102bb578485fd5b95989497505060200194505050565b600080604083850312156102dc578182fd5b823591506102ed846020850161011f565b90509250929050565b600073ffffffffffffffffffffffffffffffffffffffff8089168352602061ffff8916818501528188166040850152818716606085015260c06080850152855191508160c0850152825b8281101561035c5786810182015185820160e001528101610340565b8281111561036d578360e084870101525b505060a083019390935250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160e00195945050505050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff811681146103dd57600080fd5b5056fea2646970667358221220b0a6c11d0302990d1b1e561fff607f6f8476397a8cec543d4017d1a33f08edad64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x416 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4A759489 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0x65D092D0 EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0x916C4EB5 EQ PUSH2 0x85 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4C PUSH2 0x47 CALLDATASIZE PUSH1 0x4 PUSH2 0x137 JUMP JUMPDEST PUSH2 0xA5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6E PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0x23A JUMP JUMPDEST PUSH2 0xED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C SWAP3 SWAP2 SWAP1 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C PUSH2 0xA0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CA JUMP JUMPDEST PUSH2 0x10A JUMP JUMPDEST PUSH32 0x85696FBEB1AA174E49750D531D1E0EE0892390F9F64B05D24692355E1D5700EF DUP6 DUP6 DUP6 DUP6 DUP6 CALLVALUE PUSH1 0x40 MLOAD PUSH2 0xDE SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST POP POP POP PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 SLOAD SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x14E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x159 DUP2 PUSH2 0x3BB JUMP JUMPDEST SWAP5 POP PUSH1 0x20 PUSH2 0x169 DUP9 DUP9 DUP4 ADD PUSH2 0x11F JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x179 DUP2 PUSH2 0x3BB JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x189 DUP2 PUSH2 0x3BB JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1A5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1B8 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1C6 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x203 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP13 LT ISZERO PUSH2 0x219 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x24F JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x259 DUP7 DUP7 PUSH2 0x11F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x26D JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x289 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2AA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2BB JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2DC JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2ED DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x11F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE PUSH1 0x20 PUSH2 0xFFFF DUP10 AND DUP2 DUP6 ADD MSTORE DUP2 DUP9 AND PUSH1 0x40 DUP6 ADD MSTORE DUP2 DUP8 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0xC0 PUSH1 0x80 DUP6 ADD MSTORE DUP6 MLOAD SWAP2 POP DUP2 PUSH1 0xC0 DUP6 ADD MSTORE DUP3 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x35C JUMPI DUP7 DUP2 ADD DUP3 ADD MLOAD DUP6 DUP3 ADD PUSH1 0xE0 ADD MSTORE DUP2 ADD PUSH2 0x340 JUMP JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x36D JUMPI DUP4 PUSH1 0xE0 DUP5 DUP8 ADD ADD MSTORE JUMPDEST POP POP PUSH1 0xA0 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0xE0 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 0xA6 0xC1 SAR SUB MUL SWAP10 0xD SHL 0x1E JUMP 0x1F SELFDESTRUCT PUSH1 0x7F PUSH16 0x8476397A8CEC543D4017D1A33F08EDAD PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"836:1058:119:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100345760003560e01c80634a7594891461003957806365d092d01461004e578063916c4eb514610085575b600080fd5b61004c610047366004610137565b6100a5565b005b34801561005a57600080fd5b5061006e61006936600461023a565b6100ed565b60405161007c9291906103ad565b60405180910390f35b34801561009157600080fd5b5061004c6100a03660046102ca565b61010a565b7f85696fbeb1aa174e49750d531d1e0ee0892390f9f64b05d24692355e1d5700ef8585858585346040516100de969594939291906102f6565b60405180910390a15050505050565b50505061ffff166000908152602081905260409020546001549091565b61ffff16600090815260208190526040902055565b803561ffff8116811461013157600080fd5b92915050565b600080600080600060a0868803121561014e578081fd5b8535610159816103bb565b945060206101698888830161011f565b94506040870135610179816103bb565b93506060870135610189816103bb565b9250608087013567ffffffffffffffff808211156101a5578384fd5b818901915089601f8301126101b8578384fd5b8135818111156101c6578485fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610203578687fd5b60405281815283820185018c1015610219578586fd5b81858501868301378585838301015280955050505050509295509295909350565b6000806000806060858703121561024f578384fd5b610259868661011f565b93506020850135801515811461026d578384fd5b9250604085013567ffffffffffffffff80821115610289578384fd5b818701915087601f83011261029c578384fd5b8135818111156102aa578485fd5b8860208285010111156102bb578485fd5b95989497505060200194505050565b600080604083850312156102dc578182fd5b823591506102ed846020850161011f565b90509250929050565b600073ffffffffffffffffffffffffffffffffffffffff8089168352602061ffff8916818501528188166040850152818716606085015260c06080850152855191508160c0850152825b8281101561035c5786810182015185820160e001528101610340565b8281111561036d578360e084870101525b505060a083019390935250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160e00195945050505050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff811681146103dd57600080fd5b5056fea2646970667358221220b0a6c11d0302990d1b1e561fff607f6f8476397a8cec543d4017d1a33f08edad64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4A759489 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0x65D092D0 EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0x916C4EB5 EQ PUSH2 0x85 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4C PUSH2 0x47 CALLDATASIZE PUSH1 0x4 PUSH2 0x137 JUMP JUMPDEST PUSH2 0xA5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6E PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0x23A JUMP JUMPDEST PUSH2 0xED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C SWAP3 SWAP2 SWAP1 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C PUSH2 0xA0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CA JUMP JUMPDEST PUSH2 0x10A JUMP JUMPDEST PUSH32 0x85696FBEB1AA174E49750D531D1E0EE0892390F9F64B05D24692355E1D5700EF DUP6 DUP6 DUP6 DUP6 DUP6 CALLVALUE PUSH1 0x40 MLOAD PUSH2 0xDE SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST POP POP POP PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 SLOAD SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0xFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x14E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x159 DUP2 PUSH2 0x3BB JUMP JUMPDEST SWAP5 POP PUSH1 0x20 PUSH2 0x169 DUP9 DUP9 DUP4 ADD PUSH2 0x11F JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x179 DUP2 PUSH2 0x3BB JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x189 DUP2 PUSH2 0x3BB JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1A5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1B8 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1C6 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x203 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP13 LT ISZERO PUSH2 0x219 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x24F JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x259 DUP7 DUP7 PUSH2 0x11F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x26D JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x289 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2AA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2BB JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2DC JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2ED DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x11F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE PUSH1 0x20 PUSH2 0xFFFF DUP10 AND DUP2 DUP6 ADD MSTORE DUP2 DUP9 AND PUSH1 0x40 DUP6 ADD MSTORE DUP2 DUP8 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0xC0 PUSH1 0x80 DUP6 ADD MSTORE DUP6 MLOAD SWAP2 POP DUP2 PUSH1 0xC0 DUP6 ADD MSTORE DUP3 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x35C JUMPI DUP7 DUP2 ADD DUP3 ADD MLOAD DUP6 DUP3 ADD PUSH1 0xE0 ADD MSTORE DUP2 ADD PUSH2 0x340 JUMP JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x36D JUMPI DUP4 PUSH1 0xE0 DUP5 DUP8 ADD ADD MSTORE JUMPDEST POP POP PUSH1 0xA0 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0xE0 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 0xA6 0xC1 SAR SUB MUL SWAP10 0xD SHL 0x1E JUMP 0x1F SELFDESTRUCT PUSH1 0x7F PUSH16 0x8476397A8CEC543D4017D1A33F08EDAD PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"836:1058:119:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1431:341;;;;;;:::i;:::-;;:::i;:::-;;1203:222;;;;;;;;;;-1:-1:-1;1203:222:119;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1778:114;;;;;;;;;;-1:-1:-1;1778:114:119;;;;;:::i;:::-;;:::i;1431:341::-;1667:98;1683:5;1690:11;1703:14;1719:18;1739:14;1755:9;1667:98;;;;;;;;;;;:::i;:::-;;;;;;;;1431:341;;;;;:::o;1203:222::-;-1:-1:-1;;;1389:19:119;;1336:17;1389:19;;;;;;;;;;;1410:7;;1389:19;;1203:222::o;1778:114::-;1854:19;;:10;:19;;;;;;;;;;:31;1778:114::o;1233:128:-1:-;1299:20;;6695:6;6684:18;;8276:34;;8266:2;;8324:1;;8314:12;8266:2;1284:77;;;;:::o;1505:861::-;;;;;;1693:3;1681:9;1672:7;1668:23;1664:33;1661:2;;;-1:-1;;1700:12;1661:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1752:63;-1:-1;1852:2;1870:52;1914:7;1890:22;;;1870:52;:::i;:::-;1860:62;;1959:2;2010:9;2006:22;217:20;242:41;277:5;242:41;:::i;:::-;1967:71;-1:-1;2075:2;2114:22;;72:20;97:33;72:20;97:33;:::i;:::-;2083:63;-1:-1;2211:3;2196:19;;2183:33;2236:18;2225:30;;;2222:2;;;-1:-1;;2258:12;2222:2;2333:6;2322:9;2318:22;;;886:3;879:4;871:6;867:17;863:27;853:2;;-1:-1;;894:12;853:2;941:6;928:20;2236:18;5835:6;5832:30;5829:2;;;-1:-1;;5865:12;5829:2;1959;5493:9;1852:2;5938:9;879:4;5923:6;5919:17;5915:33;5529:6;5525:17;;5636:6;5624:10;5621:22;2236:18;5588:10;5585:34;5582:62;5579:2;;;-1:-1;;5647:12;5579:2;1959;5666:22;1033:21;;;1133:16;;;;;1130:25;-1:-1;1127:2;;;-1:-1;;1158:12;1127:2;7382:6;1852:2;1075:6;1071:17;1852:2;1109:5;1105:16;7359:30;-1:-1;1852:2;7429:6;1109:5;7420:16;;7413:27;2278:72;;;;;;;;1655:711;;;;;;;;:::o;2373:607::-;;;;;2526:2;2514:9;2505:7;2501:23;2497:32;2494:2;;;-1:-1;;2532:12;2494:2;2594:52;2638:7;2614:22;2594:52;:::i;:::-;2584:62;;2683:2;2723:9;2719:22;359:20;8181:5;6597:13;6590:21;8159:5;8156:32;8146:2;;-1:-1;;8192:12;8146:2;2691:60;-1:-1;2816:2;2801:18;;2788:32;2840:18;2829:30;;;2826:2;;;-1:-1;;2862:12;2826:2;2947:6;2936:9;2932:22;;;554:3;547:4;539:6;535:17;531:27;521:2;;-1:-1;;562:12;521:2;605:6;592:20;2840:18;624:6;621:30;618:2;;;-1:-1;;654:12;618:2;749:3;2683:2;729:17;690:6;715:32;;712:41;709:2;;;-1:-1;;756:12;709:2;2488:492;;;;-1:-1;;2683:2;686:17;;-1:-1;;;2488:492::o;2987:364::-;;;3107:2;3095:9;3086:7;3082:23;3078:32;3075:2;;;-1:-1;;3113:12;3075:2;1448:6;1435:20;3165:63;;3283:52;3327:7;3265:2;3307:9;3303:22;3283:52;:::i;:::-;3273:62;;3069:282;;;;;:::o;4214:876::-;;6787:42;;6780:5;6776:54;3585:3;3578:37;4668:2;6695:6;4075:5;6684:18;4668:2;4657:9;4653:18;4046:36;6787:42;6780:5;6776:54;4759:2;4748:9;4744:18;3437:58;6787:42;6780:5;6776:54;4842:2;4831:9;4827:18;3578:37;4505:3;4879;4868:9;4864:19;4857:49;3769:5;6115:12;3723:52;;6271:6;4505:3;4494:9;4490:19;6259;-1:-1;7527:101;7541:6;7538:1;7535:13;7527:101;;;7608:11;;;;;7602:18;7589:11;;;6299:14;7589:11;7582:39;7556:10;;7527:101;;;7643:6;7640:1;7637:13;7634:2;;;-1:-1;6299:14;7699:6;4494:9;7690:16;;7683:27;7634:2;-1:-1;;5075:3;5060:19;;4165:37;;;;-1:-1;7819:2;7799:14;;;;7815:7;7795:28;3926:39;6299:14;3926:39;;4476:614;-1:-1;;;;;4476:614::o;5097:333::-;4165:37;;;5416:2;5401:18;;4165:37;5252:2;5237:18;;5223:207::o;7836:117::-;6787:42;7923:5;6776:54;7898:5;7895:35;7885:2;;7944:1;;7934:12;7885:2;7879:74;:::o"},"methodIdentifiers":{"estimateSendUserBalance(uint16,bool,bytes)":"65d092d0","sendUserBalance(address,uint16,address,address,bytes)":"4a759489","setNativeFee(uint256,uint16)":"916c4eb5"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zroPaymentAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"adapterParams\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SendUserBalance\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"estimateSendUserBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zroFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_dstChainId\",\"type\":\"uint16\"},{\"internalType\":\"address payable\",\"name\":\"_refundAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zroPaymentAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_adapterParams\",\"type\":\"bytes\"}],\"name\":\"sendUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"}],\"name\":\"setNativeFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockOmniVotingEscrow.sol\":\"MockOmniVotingEscrow\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IOmniVotingEscrow.sol\":{\"keccak256\":\"0xd15a09a7f4b4cca895c325a5d4f5469d368ea95fcf81139c6f9b7a6ff98ebf58\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f5ee21f5ff34cf4f4fb65bbef37229a84cce97e7ae2c46f26b6b5356db04fa56\",\"dweb:/ipfs/Qmc5Lukprx5rxNq4om9uyJR1jiNVFMxQxbWQrpGuZhGtsW\"]},\"contracts/test/MockOmniVotingEscrow.sol\":{\"keccak256\":\"0x7337c295f9b7c881358899393268e3cc3d89930be059c065cce40f14e95d860f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af2bf48c67cd9b0509da9df1c1502c77d3cdb11c8281f3bd71a02491aa3f26a1\",\"dweb:/ipfs/QmXmhchZZUstZZCqs4f8QUdekEoD89QF49XzXBQ62w8YC9\"]}},\"version\":1}"}},"contracts/test/MockRewardTokenDistributor.sol":{"MockRewardTokenDistributor":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"add_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claim_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"claimable_reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"claimable_reward_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit_reward_token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"reward_data","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"period_finish","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"last_update","type":"uint256"},{"internalType":"uint256","name":"integral","type":"uint256"}],"internalType":"struct IRewardTokenDistributor.Reward","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"set_reward_distributor","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506108f1806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806359b7e4091161005b57806359b7e409146100a257806384e9bd7e1461010b57806393f7aa671461011e578063e8de0d4d1461013157610088565b8063058a3a241461008d57806333fd6f74146100a257806348e9c65e146100cb57806354c49fe9146100eb575b600080fd5b6100a061009b3660046106be565b610144565b005b6100b56100b0366004610666565b61019a565b6040516100c29190610890565b60405180910390f35b6100de6100d9366004610643565b6101a2565b6040516100c29190610832565b6100fe6100f93660046106fb565b61021e565b6040516100c2919061077d565b6100a0610119366004610643565b61024b565b6100a061012c3660046106d0565b61024e565b6100a061013f3660046106be565b6102e0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260096020526040902060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b600092915050565b6101aa6105e1565b5073ffffffffffffffffffffffffffffffffffffffff908116600090815260096020908152604091829020825160c08101845281548516815260018201549094169184019190915260028101549183019190915260038101546060830152600481015460808301526005015460a082015290565b60006001826008811061022d57fe5b015473ffffffffffffffffffffffffffffffffffffffff1692915050565b50565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600960205260409020600101541633146102ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b1906107d5565b60405180910390fd5b6102dc73ffffffffffffffffffffffffffffffffffffffff83163330846103f6565b5050565b816001600054600881106102f057fe5b01805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556040805160c0810182528584168082528585166020808401918252600084860181815260608601828152426080880190815260a08801848152968452600990945296822095518654908a1690891617865592516001868101805492909a1691909816179097559051600284015592516003830155915160048201559051600590910155815401908190556008116102dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b19061079e565b610499846323b872dd60e01b8585856040516024016104179392919061074c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261049f565b50505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516104c89190610713565b6000604051808303816000865af19150503d8060008114610505576040519150601f19603f3d011682016040523d82523d6000602084013e61050a565b606091505b50915091506000821415610522573d6000803e3d6000fd5b610499815160001480610544575081806020019051810190610544919061069e565b6101a2816102dc577f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526102dc91839161024b917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b6040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b600060208284031215610654578081fd5b813561065f81610899565b9392505050565b60008060408385031215610678578081fd5b823561068381610899565b9150602083013561069381610899565b809150509250929050565b6000602082840312156106af578081fd5b8151801515811461065f578182fd5b60008060408385031215610678578182fd5b600080604083850312156106e2578182fd5b82356106ed81610899565b946020939093013593505050565b60006020828403121561070c578081fd5b5035919050565b60008251815b818110156107335760208186018101518583015201610719565b818111156107415782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60208082526016908201527f546f6f206d616e792072657761726420746f6b656e7300000000000000000000604082015260600190565b60208082526023908201527f4f6e6c792063616c6c61626c652062792072657761726420646973747269627560408201527f746f720000000000000000000000000000000000000000000000000000000000606082015260800190565b600060c08201905073ffffffffffffffffffffffffffffffffffffffff8084511683528060208501511660208401525060408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461024b57600080fdfea26469706673582212201215b1c8ac1f22b70b665261ab87532f7adc97f1567a544ad839670915ac3e9964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8F1 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x59B7E409 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x59B7E409 EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x84E9BD7E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0x93F7AA67 EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xE8DE0D4D EQ PUSH2 0x131 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x58A3A24 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x33FD6F74 EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x48E9C65E EQ PUSH2 0xCB JUMPI DUP1 PUSH4 0x54C49FE9 EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x144 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB5 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x666 JUMP JUMPDEST PUSH2 0x19A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC2 SWAP2 SWAP1 PUSH2 0x890 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDE PUSH2 0xD9 CALLDATASIZE PUSH1 0x4 PUSH2 0x643 JUMP JUMPDEST PUSH2 0x1A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC2 SWAP2 SWAP1 PUSH2 0x832 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x6FB JUMP JUMPDEST PUSH2 0x21E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC2 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x643 JUMP JUMPDEST PUSH2 0x24B JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x12C CALLDATASIZE PUSH1 0x4 PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x24E JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x13F CALLDATASIZE PUSH1 0x4 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x2E0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x5E1 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0xC0 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP6 AND DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP1 SWAP5 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 ADD SLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x5 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x22D JUMPI INVALID JUMPDEST ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD AND CALLER EQ PUSH2 0x2BA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B1 SWAP1 PUSH2 0x7D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2DC PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x3F6 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x0 SLOAD PUSH1 0x8 DUP2 LT PUSH2 0x2F0 JUMPI INVALID JUMPDEST ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE DUP6 DUP5 AND DUP1 DUP3 MSTORE DUP6 DUP6 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP5 DUP7 ADD DUP2 DUP2 MSTORE PUSH1 0x60 DUP7 ADD DUP3 DUP2 MSTORE TIMESTAMP PUSH1 0x80 DUP9 ADD SWAP1 DUP2 MSTORE PUSH1 0xA0 DUP9 ADD DUP5 DUP2 MSTORE SWAP7 DUP5 MSTORE PUSH1 0x9 SWAP1 SWAP5 MSTORE SWAP7 DUP3 KECCAK256 SWAP6 MLOAD DUP7 SLOAD SWAP1 DUP11 AND SWAP1 DUP10 AND OR DUP7 SSTORE SWAP3 MLOAD PUSH1 0x1 DUP7 DUP2 ADD DUP1 SLOAD SWAP3 SWAP1 SWAP11 AND SWAP2 SWAP1 SWAP9 AND OR SWAP1 SWAP8 SSTORE SWAP1 MLOAD PUSH1 0x2 DUP5 ADD SSTORE SWAP3 MLOAD PUSH1 0x3 DUP4 ADD SSTORE SWAP2 MLOAD PUSH1 0x4 DUP3 ADD SSTORE SWAP1 MLOAD PUSH1 0x5 SWAP1 SWAP2 ADD SSTORE DUP2 SLOAD ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x8 GT PUSH2 0x2DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B1 SWAP1 PUSH2 0x79E JUMP JUMPDEST PUSH2 0x499 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x417 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x49F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x4C8 SWAP2 SWAP1 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x505 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x50A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x522 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x499 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x544 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x544 SWAP2 SWAP1 PUSH2 0x69E JUMP JUMPDEST PUSH2 0x1A2 DUP2 PUSH2 0x2DC JUMPI PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x2DC SWAP2 DUP4 SWAP2 PUSH2 0x24B SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x654 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x65F DUP2 PUSH2 0x899 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x678 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x683 DUP2 PUSH2 0x899 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x693 DUP2 PUSH2 0x899 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6AF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x65F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x678 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6E2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x6ED DUP2 PUSH2 0x899 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x70C JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x733 JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x719 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x741 JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x546F6F206D616E792072657761726420746F6B656E7300000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C792063616C6C61626C6520627920726577617264206469737472696275 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x746F720000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 MLOAD AND DUP4 MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT ISZERO 0xB1 0xC8 0xAC 0x1F 0x22 0xB7 SIGNEXTEND PUSH7 0x5261AB87532F7A 0xDC SWAP8 CALL JUMP PUSH27 0x544AD839670915AC3E9964736F6C63430007010033000000000000 ","sourceMap":"1202:1815:120:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c806359b7e4091161005b57806359b7e409146100a257806384e9bd7e1461010b57806393f7aa671461011e578063e8de0d4d1461013157610088565b8063058a3a241461008d57806333fd6f74146100a257806348e9c65e146100cb57806354c49fe9146100eb575b600080fd5b6100a061009b3660046106be565b610144565b005b6100b56100b0366004610666565b61019a565b6040516100c29190610890565b60405180910390f35b6100de6100d9366004610643565b6101a2565b6040516100c29190610832565b6100fe6100f93660046106fb565b61021e565b6040516100c2919061077d565b6100a0610119366004610643565b61024b565b6100a061012c3660046106d0565b61024e565b6100a061013f3660046106be565b6102e0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260096020526040902060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b600092915050565b6101aa6105e1565b5073ffffffffffffffffffffffffffffffffffffffff908116600090815260096020908152604091829020825160c08101845281548516815260018201549094169184019190915260028101549183019190915260038101546060830152600481015460808301526005015460a082015290565b60006001826008811061022d57fe5b015473ffffffffffffffffffffffffffffffffffffffff1692915050565b50565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600960205260409020600101541633146102ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b1906107d5565b60405180910390fd5b6102dc73ffffffffffffffffffffffffffffffffffffffff83163330846103f6565b5050565b816001600054600881106102f057fe5b01805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556040805160c0810182528584168082528585166020808401918252600084860181815260608601828152426080880190815260a08801848152968452600990945296822095518654908a1690891617865592516001868101805492909a1691909816179097559051600284015592516003830155915160048201559051600590910155815401908190556008116102dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b19061079e565b610499846323b872dd60e01b8585856040516024016104179392919061074c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261049f565b50505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516104c89190610713565b6000604051808303816000865af19150503d8060008114610505576040519150601f19603f3d011682016040523d82523d6000602084013e61050a565b606091505b50915091506000821415610522573d6000803e3d6000fd5b610499815160001480610544575081806020019051810190610544919061069e565b6101a2816102dc577f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526102dc91839161024b917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b6040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b600060208284031215610654578081fd5b813561065f81610899565b9392505050565b60008060408385031215610678578081fd5b823561068381610899565b9150602083013561069381610899565b809150509250929050565b6000602082840312156106af578081fd5b8151801515811461065f578182fd5b60008060408385031215610678578182fd5b600080604083850312156106e2578182fd5b82356106ed81610899565b946020939093013593505050565b60006020828403121561070c578081fd5b5035919050565b60008251815b818110156107335760208186018101518583015201610719565b818111156107415782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60208082526016908201527f546f6f206d616e792072657761726420746f6b656e7300000000000000000000604082015260600190565b60208082526023908201527f4f6e6c792063616c6c61626c652062792072657761726420646973747269627560408201527f746f720000000000000000000000000000000000000000000000000000000000606082015260800190565b600060c08201905073ffffffffffffffffffffffffffffffffffffffff8084511683528060208501511660208401525060408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461024b57600080fdfea26469706673582212201215b1c8ac1f22b70b665261ab87532f7adc97f1567a544ad839670915ac3e9964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x59B7E409 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x59B7E409 EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x84E9BD7E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0x93F7AA67 EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xE8DE0D4D EQ PUSH2 0x131 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x58A3A24 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x33FD6F74 EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x48E9C65E EQ PUSH2 0xCB JUMPI DUP1 PUSH4 0x54C49FE9 EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x144 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB5 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x666 JUMP JUMPDEST PUSH2 0x19A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC2 SWAP2 SWAP1 PUSH2 0x890 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDE PUSH2 0xD9 CALLDATASIZE PUSH1 0x4 PUSH2 0x643 JUMP JUMPDEST PUSH2 0x1A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC2 SWAP2 SWAP1 PUSH2 0x832 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x6FB JUMP JUMPDEST PUSH2 0x21E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC2 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x643 JUMP JUMPDEST PUSH2 0x24B JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x12C CALLDATASIZE PUSH1 0x4 PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x24E JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x13F CALLDATASIZE PUSH1 0x4 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x2E0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x5E1 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0xC0 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP6 AND DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP1 SWAP5 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 ADD SLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x5 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0x8 DUP2 LT PUSH2 0x22D JUMPI INVALID JUMPDEST ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD AND CALLER EQ PUSH2 0x2BA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B1 SWAP1 PUSH2 0x7D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2DC PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x3F6 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x0 SLOAD PUSH1 0x8 DUP2 LT PUSH2 0x2F0 JUMPI INVALID JUMPDEST ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE DUP6 DUP5 AND DUP1 DUP3 MSTORE DUP6 DUP6 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP5 DUP7 ADD DUP2 DUP2 MSTORE PUSH1 0x60 DUP7 ADD DUP3 DUP2 MSTORE TIMESTAMP PUSH1 0x80 DUP9 ADD SWAP1 DUP2 MSTORE PUSH1 0xA0 DUP9 ADD DUP5 DUP2 MSTORE SWAP7 DUP5 MSTORE PUSH1 0x9 SWAP1 SWAP5 MSTORE SWAP7 DUP3 KECCAK256 SWAP6 MLOAD DUP7 SLOAD SWAP1 DUP11 AND SWAP1 DUP10 AND OR DUP7 SSTORE SWAP3 MLOAD PUSH1 0x1 DUP7 DUP2 ADD DUP1 SLOAD SWAP3 SWAP1 SWAP11 AND SWAP2 SWAP1 SWAP9 AND OR SWAP1 SWAP8 SSTORE SWAP1 MLOAD PUSH1 0x2 DUP5 ADD SSTORE SWAP3 MLOAD PUSH1 0x3 DUP4 ADD SSTORE SWAP2 MLOAD PUSH1 0x4 DUP3 ADD SSTORE SWAP1 MLOAD PUSH1 0x5 SWAP1 SWAP2 ADD SSTORE DUP2 SLOAD ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x8 GT PUSH2 0x2DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B1 SWAP1 PUSH2 0x79E JUMP JUMPDEST PUSH2 0x499 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x417 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x49F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x4C8 SWAP2 SWAP1 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x505 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x50A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x522 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x499 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x544 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x544 SWAP2 SWAP1 PUSH2 0x69E JUMP JUMPDEST PUSH2 0x1A2 DUP2 PUSH2 0x2DC JUMPI PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x2DC SWAP2 DUP4 SWAP2 PUSH2 0x24B SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x654 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x65F DUP2 PUSH2 0x899 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x678 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x683 DUP2 PUSH2 0x899 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x693 DUP2 PUSH2 0x899 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6AF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x65F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x678 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6E2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x6ED DUP2 PUSH2 0x899 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x70C JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x733 JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x719 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x741 JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x546F6F206D616E792072657761726420746F6B656E7300000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C792063616C6C61626C6520627920726577617264206469737472696275 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x746F720000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 MLOAD AND DUP4 MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT ISZERO 0xB1 0xC8 0xAC 0x1F 0x22 0xB7 SIGNEXTEND PUSH7 0x5261AB87532F7A 0xDC SWAP8 CALL JUMP PUSH27 0x544AD839670915AC3E9964736F6C63430007010033000000000000 ","sourceMap":"1202:1815:120:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2160:158;;;;;;:::i;:::-;;:::i;:::-;;2783:110;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1555:124;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1427:122::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2658:119::-;;;;;;:::i;:::-;;:::i;2324:328::-;;;;;;:::i;:::-;;:::i;1685:469::-;;;;;;:::i;:::-;;:::i;2160:158::-;2261:24;;;;;;;;:11;:24;;;;;:36;;:50;;;;;;;;;;;2160:158::o;2783:110::-;2859:7;2783:110;;;;:::o;1555:124::-;1622:13;;:::i;:::-;-1:-1:-1;1654:18:120;;;;;;;;:11;:18;;;;;;;;;1647:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1555:124::o;1427:122::-;1497:6;1522:13;1536:5;1522:20;;;;;;;;;;;;1427:122;-1:-1:-1;;1427:122:120:o;2658:119::-;;:::o;2324:328::-;2426:50;:24;;;;;;;:11;:24;;;;;:36;;;;2466:10;2426:50;2418:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;2526:63;:28;;;2555:10;2575:4;2582:6;2526:28;:63::i;:::-;2324:328;;:::o;1685:469::-;1804:11;1774:13;1788:12;;1774:27;;;;;;;;:41;;;;;;;;;;;;;;1852:206;;;;;;;;;;;;;;;;;;;;;;;;1774:27;1852:206;;;;;;;;;;;;2007:15;1852:206;;;;;;;;;;;;1825:24;;;:11;:24;;;;;;:233;;;;;;;;;;;;;;;1774:41;1825:233;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2069:17;;;;;;;2119:1;-1:-1:-1;2096:51:120;;;;;;;;;;;;:::i;1734:250:64:-;1872:105;1900:5;1931:27;;;1960:4;1966:2;1970:5;1908:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1872:19;:105::i;:::-;1734:250;;;;:::o;2324:914::-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:31;995:9;990:34;;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1006:18;;2926;;1506:28;;;;1783:14;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;581:241::-;;685:2;673:9;664:7;660:23;656:32;653:2;;;-1:-1;;691:12;653:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;743:63;647:175;-1:-1;;;647:175::o;829:366::-;;;950:2;938:9;929:7;925:23;921:32;918:2;;;-1:-1;;956:12;918:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1008:63;-1:-1;1108:2;1147:22;;72:20;97:33;72:20;97:33;:::i;:::-;1116:63;;;;912:283;;;;;:::o;1202:257::-;;1314:2;1302:9;1293:7;1289:23;1285:32;1282:2;;;-1:-1;;1320:12;1282:2;223:6;217:13;9996:5;8880:13;8873:21;9974:5;9971:32;9961:2;;-1:-1;;10007:12;1744:396;;;1880:2;1868:9;1859:7;1855:23;1851:32;1848:2;;;-1:-1;;1886:12;2147:396;;;2283:2;2271:9;2262:7;2258:23;2254:32;2251:2;;;-1:-1;;2289:12;2251:2;372:6;359:20;384:48;426:5;384:48;:::i;:::-;2341:78;2456:2;2495:22;;;;511:20;;-1:-1;;;2245:298::o;2550:241::-;;2654:2;2642:9;2633:7;2629:23;2625:32;2622:2;;;-1:-1;;2660:12;2622:2;-1:-1;511:20;;2616:175;-1:-1;2616:175::o;5874:271::-;;3188:5;8350:12;-1:-1;9587:101;9601:6;9598:1;9595:13;9587:101;;;3332:4;9668:11;;;;;9662:18;9649:11;;;9642:39;9616:10;9587:101;;;9703:6;9700:1;9697:13;9694:2;;;-1:-1;9759:6;9754:3;9750:16;9743:27;9694:2;-1:-1;3363:16;;;;;6008:137;-1:-1;;6008:137::o;6152:444::-;9092:42;9081:54;;;2859:37;;9081:54;;;;6499:2;6484:18;;2859:37;6582:2;6567:18;;5705:37;;;;6335:2;6320:18;;6306:290::o;6603:252::-;9092:42;9081:54;;;;3467:65;;6745:2;6730:18;;6716:139::o;6862:416::-;7062:2;7076:47;;;3932:2;7047:18;;;8648:19;3968:24;8688:14;;;3948:45;4012:12;;;7033:245::o;7285:416::-;7485:2;7499:47;;;4263:2;7470:18;;;8648:19;4299:34;8688:14;;;4279:55;4368:5;4354:12;;;4347:27;4393:12;;;7456:245::o;7708:319::-;;7883:3;7872:9;7868:19;7860:27;;9092:42;;4718:16;4712:23;9081:54;3474:3;3467:65;9092:42;4905:4;4898:5;4894:16;4888:23;9081:54;4905:4;4969:3;4965:14;2859:37;;5068:4;5061:5;5057:16;5051:23;5068:4;5132:3;5128:14;5705:37;5222:4;5215:5;5211:16;5205:23;5222:4;5286:3;5282:14;5705:37;5383:4;5376:5;5372:16;5366:23;5383:4;5447:3;5443:14;5705:37;5541:4;5534:5;5530:16;5524:23;5541:4;5605:3;5601:14;5705:37;7854:173;;;;:::o;8034:222::-;5705:37;;;8161:2;8146:18;;8132:124::o;9791:117::-;9092:42;9878:5;9081:54;9853:5;9850:35;9840:2;;9899:1;;9889:12"},"methodIdentifiers":{"add_reward(address,address)":"e8de0d4d","claim_rewards(address)":"84e9bd7e","claimable_reward(address,address)":"33fd6f74","claimable_reward_write(address,address)":"59b7e409","deposit_reward_token(address,uint256)":"93f7aa67","reward_data(address)":"48e9c65e","reward_tokens(uint256)":"54c49fe9","set_reward_distributor(address,address)":"058a3a24"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"add_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claim_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"claimable_reward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"claimable_reward_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit_reward_token\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"reward_data\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"period_finish\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_update\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"integral\",\"type\":\"uint256\"}],\"internalType\":\"struct IRewardTokenDistributor.Reward\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"set_reward_distributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is designed to mock LiquidityGaugeV5's interface for distributing external tokens.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockRewardTokenDistributor.sol\":\"MockRewardTokenDistributor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/test/MockRewardTokenDistributor.sol\":{\"keccak256\":\"0x0928cd88a5f3c86b54e281c34013da5133d91bee18222e53b1d8f17290773896\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3615801365dd7ccb3e4e83be1e6eb8249a32f86eee33dcfbf96c73859f9af9c6\",\"dweb:/ipfs/QmW43qmvDH3TntyFriMDZNxS1qpyjZxBzNHRQynSnmkisj\"]}},\"version\":1}"}},"contracts/test/MockVeDelegation.sol":{"MockVeDelegation":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"adjusted_balance_of","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5060c28061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806318160ddd146037578063bbf7408a14604f575b600080fd5b603d607f565b60408051918252519081900360200190f35b603d60048036036020811015606357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166085565b60015490565b506000549056fea2646970667358221220b8f9c72576ea50b94eaed5b70ca16a15bd0ce584a57f94e1bca9722e94bf0fd664736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC2 DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x18160DDD EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xBBF7408A EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x7F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x85 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x0 SLOAD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 0xF9 0xC7 0x25 PUSH23 0xEA50B94EAED5B70CA16A15BD0CE584A57F94E1BCA9722E SWAP5 0xBF 0xF 0xD6 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"976:349:121:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060325760003560e01c806318160ddd146037578063bbf7408a14604f575b600080fd5b603d607f565b60408051918252519081900360200190f35b603d60048036036020811015606357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166085565b60015490565b506000549056fea2646970667358221220b8f9c72576ea50b94eaed5b70ca16a15bd0ce584a57f94e1bca9722e94bf0fd664736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x18160DDD EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xBBF7408A EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x7F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x85 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x0 SLOAD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 0xF9 0xC7 0x25 PUSH23 0xEA50B94EAED5B70CA16A15BD0CE584A57F94E1BCA9722E SWAP5 0xBF 0xF 0xD6 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"976:349:121:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:100;;;:::i;:::-;;;;;;;;;;;;;;;;1098:119;;;;;;;;;;;;;;;;-1:-1:-1;1098:119:121;;;;:::i;1223:100::-;1304:12;;1223:100;:::o;1098:119::-;-1:-1:-1;1168:7:121;1194:16;;1098:119::o"},"methodIdentifiers":{"adjusted_balance_of(address)":"bbf7408a","totalSupply()":"18160ddd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"adjusted_balance_of\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockVeDelegation.sol\":\"MockVeDelegation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVeDelegation.sol\":{\"keccak256\":\"0xd4ebf4ceca6fa99ec2149d60b36084674621ae87e8a7786b23501749da8cc581\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7dd20ed7be933a3d8ec0be284b8f7f123e69ecb29731e35f70c371eb4f5e26c8\",\"dweb:/ipfs/QmfPp5sBxn92hg32fPFTDBB5kuHP9qU4jN3bSfip8uCnQ6\"]},\"contracts/test/MockVeDelegation.sol\":{\"keccak256\":\"0xfc1c35b3d0e48a08011eb19c269fb041cc1a86f15360437765cefa5cb6e5a8e5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f0bf6d0c01caf98958d2dfacc7fbb7e31d72234c66ca2382a15de01deb83a91a\",\"dweb:/ipfs/QmXW2RjHEDQSjFaYWSGtGBVV1AHR2js4WAHNUg8r28mPWa\"]}},\"version\":1}"}},"contracts/test/MockVotingEscrow.sol":{"MockVotingEscrow":{"abi":[{"inputs":[{"internalType":"contract ISmartWalletChecker","name":"smartWalletChecker","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"locked__end","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"point_history","outputs":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"}],"name":"setBalanceOf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_epoch","type":"uint256"}],"name":"setEpoch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"setLockedEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_epoch","type":"uint256"},{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"point","type":"tuple"}],"name":"setPointHistory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"_epoch","type":"uint256"}],"name":"setUserPointEpoch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"_epoch","type":"uint256"},{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"point","type":"tuple"}],"name":"setUserPointHistory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"smart_wallet_checker","outputs":[{"internalType":"contract ISmartWalletChecker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_point_epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"user_point_history","outputs":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161072538038061072583398101604081905261002f91610054565b600680546001600160a01b0319166001600160a01b0392909216919091179055610082565b600060208284031215610065578081fd5b81516001600160a01b038116811461007b578182fd5b9392505050565b610694806100916000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80637175d4f71161008c578063af8de87111610066578063af8de871146101ae578063b46310f6146101c1578063b67672ab146101d4578063d1febfb9146101e7576100df565b80637175d4f71461017e578063900cf0cf14610193578063adc635891461019b576100df565b806336aeef2a116100bd57806336aeef2a146101455780633dc6f15b1461015857806370a082311461016b576100df565b8063010ae757146100e45780630ceb2cef1461010d57806328d09d4714610122575b600080fd5b6100f76100f2366004610544565b6101fa565b6040516101049190610655565b60405180910390f35b61012061011b3660046105cd565b61020c565b005b610135610130366004610566565b610211565b6040516101049493929190610632565b610120610153366004610566565b610257565b610120610166366004610566565b610280565b6100f7610179366004610544565b6102a9565b6101866102bb565b6040516101049190610611565b6100f76102d7565b6100f76101a9366004610544565b6102dd565b6101206101bc366004610590565b6102ef565b6101206101cf366004610566565b6103a1565b6101206101e23660046105e5565b6103ca565b6101356101f53660046105cd565b61045b565b60036020526000908152604090205481565b600055565b60026020818152600093845260408085209091529183529120805460018201549190920154600f83810b937001000000000000000000000000000000009004900b919084565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260046020526040902055565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260036020526040902055565b60056020526000908152604090205481565b60065473ffffffffffffffffffffffffffffffffffffffff1690565b60005481565b60046020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600260208181526040808420948452938152918390208451815493860151600f90810b6fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029290910b81167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951694909417909316929092178255918301516001820155606090920151910155565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260056020526040902055565b6000918252600160208181526040938490208351815492850151600f90810b6fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029290910b81167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941693909317909216919091178155928201519083015560600151600290910155565b6001602081905260009182526040909120805491810154600290910154600f83810b937001000000000000000000000000000000009004900b919084565b803573ffffffffffffffffffffffffffffffffffffffff811681146104bd57600080fd5b92915050565b8035600f81900b81146104bd57600080fd5b6000608082840312156104e6578081fd5b6040516080810181811067ffffffffffffffff82111715610505578283fd5b60405290508061051584846104c3565b815261052484602085016104c3565b602082015260408301356040820152606083013560608201525092915050565b600060208284031215610555578081fd5b61055f8383610499565b9392505050565b60008060408385031215610578578081fd5b6105828484610499565b946020939093013593505050565b600080600060c084860312156105a4578081fd5b6105ae8585610499565b9250602084013591506105c485604086016104d5565b90509250925092565b6000602082840312156105de578081fd5b5035919050565b60008060a083850312156105f7578182fd5b8235915061060884602085016104d5565b90509250929050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600f94850b81529290930b60208301526040820152606081019190915260800190565b9081526020019056fea2646970667358221220f3cbf8db68092eff52f28c08f8d4fdac36aa8e04af61c65aab42c94cc2fa827964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x725 CODESIZE SUB DUP1 PUSH2 0x725 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x82 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7B JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x694 DUP1 PUSH2 0x91 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7175D4F7 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xAF8DE871 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xAF8DE871 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0xB46310F6 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0xB67672AB EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0xD1FEBFB9 EQ PUSH2 0x1E7 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x7175D4F7 EQ PUSH2 0x17E JUMPI DUP1 PUSH4 0x900CF0CF EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0xADC63589 EQ PUSH2 0x19B JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x36AEEF2A GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x36AEEF2A EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0x3DC6F15B EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x16B JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x10AE757 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0xCEB2CEF EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x28D09D47 EQ PUSH2 0x122 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0x544 JUMP JUMPDEST PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x655 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x5CD JUMP JUMPDEST PUSH2 0x20C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x135 PUSH2 0x130 CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x211 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x632 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x153 CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x257 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x166 CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x280 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x179 CALLDATASIZE PUSH1 0x4 PUSH2 0x544 JUMP JUMPDEST PUSH2 0x2A9 JUMP JUMPDEST PUSH2 0x186 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x611 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x2D7 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x1A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x544 JUMP JUMPDEST PUSH2 0x2DD JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1BC CALLDATASIZE PUSH1 0x4 PUSH2 0x590 JUMP JUMPDEST PUSH2 0x2EF JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1CF CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x3A1 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST PUSH2 0x135 PUSH2 0x1F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x5CD JUMP JUMPDEST PUSH2 0x45B JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 SWAP1 SWAP2 MSTORE SWAP2 DUP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH1 0xF DUP4 DUP2 SIGNEXTEND SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV SWAP1 SIGNEXTEND SWAP2 SWAP1 DUP5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP5 DUP5 MSTORE SWAP4 DUP2 MSTORE SWAP2 DUP4 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SLOAD SWAP4 DUP7 ADD MLOAD PUSH1 0xF SWAP1 DUP2 SIGNEXTEND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP2 SIGNEXTEND DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR DUP3 SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD SWAP2 ADD SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP4 DUP5 SWAP1 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP3 DUP6 ADD MLOAD PUSH1 0xF SWAP1 DUP2 SIGNEXTEND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP2 SIGNEXTEND DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR DUP2 SSTORE SWAP3 DUP3 ADD MLOAD SWAP1 DUP4 ADD SSTORE PUSH1 0x60 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP2 DUP2 ADD SLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH1 0xF DUP4 DUP2 SIGNEXTEND SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV SWAP1 SIGNEXTEND SWAP2 SWAP1 DUP5 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E6 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x505 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP1 POP DUP1 PUSH2 0x515 DUP5 DUP5 PUSH2 0x4C3 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x524 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x4C3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x555 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x55F DUP4 DUP4 PUSH2 0x499 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x578 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x582 DUP5 DUP5 PUSH2 0x499 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5A4 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x5AE DUP6 DUP6 PUSH2 0x499 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x5C4 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x4D5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5DE JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xA0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F7 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x608 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x4D5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0xF SWAP5 DUP6 SIGNEXTEND DUP2 MSTORE SWAP3 SWAP1 SWAP4 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN 0xCB 0xF8 0xDB PUSH9 0x92EFF52F28C08F8D4 REVERT 0xAC CALLDATASIZE 0xAA DUP15 DIV 0xAF PUSH2 0xC65A 0xAB TIMESTAMP 0xC9 0x4C 0xC2 STATICCALL DUP3 PUSH26 0x64736F6C63430007010033000000000000000000000000000000 ","sourceMap":"1227:1538:122:-:0;;;1784:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1846:19;:40;;-1:-1:-1;;;;;;1846:40:122;-1:-1:-1;;;;;1846:40:122;;;;;;;;;;1227:1538;;202:319:-1;;345:2;333:9;324:7;320:23;316:32;313:2;;;-1:-1;;351:12;313:2;111:13;;-1:-1;;;;;814:54;;967:63;;957:2;;-1:-1;;1034:12;957:2;403:102;307:214;-1:-1;;;307:214::o;:::-;1227:1538:122;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100df5760003560e01c80637175d4f71161008c578063af8de87111610066578063af8de871146101ae578063b46310f6146101c1578063b67672ab146101d4578063d1febfb9146101e7576100df565b80637175d4f71461017e578063900cf0cf14610193578063adc635891461019b576100df565b806336aeef2a116100bd57806336aeef2a146101455780633dc6f15b1461015857806370a082311461016b576100df565b8063010ae757146100e45780630ceb2cef1461010d57806328d09d4714610122575b600080fd5b6100f76100f2366004610544565b6101fa565b6040516101049190610655565b60405180910390f35b61012061011b3660046105cd565b61020c565b005b610135610130366004610566565b610211565b6040516101049493929190610632565b610120610153366004610566565b610257565b610120610166366004610566565b610280565b6100f7610179366004610544565b6102a9565b6101866102bb565b6040516101049190610611565b6100f76102d7565b6100f76101a9366004610544565b6102dd565b6101206101bc366004610590565b6102ef565b6101206101cf366004610566565b6103a1565b6101206101e23660046105e5565b6103ca565b6101356101f53660046105cd565b61045b565b60036020526000908152604090205481565b600055565b60026020818152600093845260408085209091529183529120805460018201549190920154600f83810b937001000000000000000000000000000000009004900b919084565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260046020526040902055565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260036020526040902055565b60056020526000908152604090205481565b60065473ffffffffffffffffffffffffffffffffffffffff1690565b60005481565b60046020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600260208181526040808420948452938152918390208451815493860151600f90810b6fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029290910b81167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951694909417909316929092178255918301516001820155606090920151910155565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260056020526040902055565b6000918252600160208181526040938490208351815492850151600f90810b6fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029290910b81167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941693909317909216919091178155928201519083015560600151600290910155565b6001602081905260009182526040909120805491810154600290910154600f83810b937001000000000000000000000000000000009004900b919084565b803573ffffffffffffffffffffffffffffffffffffffff811681146104bd57600080fd5b92915050565b8035600f81900b81146104bd57600080fd5b6000608082840312156104e6578081fd5b6040516080810181811067ffffffffffffffff82111715610505578283fd5b60405290508061051584846104c3565b815261052484602085016104c3565b602082015260408301356040820152606083013560608201525092915050565b600060208284031215610555578081fd5b61055f8383610499565b9392505050565b60008060408385031215610578578081fd5b6105828484610499565b946020939093013593505050565b600080600060c084860312156105a4578081fd5b6105ae8585610499565b9250602084013591506105c485604086016104d5565b90509250925092565b6000602082840312156105de578081fd5b5035919050565b60008060a083850312156105f7578182fd5b8235915061060884602085016104d5565b90509250929050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600f94850b81529290930b60208301526040820152606081019190915260800190565b9081526020019056fea2646970667358221220f3cbf8db68092eff52f28c08f8d4fdac36aa8e04af61c65aab42c94cc2fa827964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7175D4F7 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xAF8DE871 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xAF8DE871 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0xB46310F6 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0xB67672AB EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0xD1FEBFB9 EQ PUSH2 0x1E7 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x7175D4F7 EQ PUSH2 0x17E JUMPI DUP1 PUSH4 0x900CF0CF EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0xADC63589 EQ PUSH2 0x19B JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x36AEEF2A GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x36AEEF2A EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0x3DC6F15B EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x16B JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x10AE757 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0xCEB2CEF EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x28D09D47 EQ PUSH2 0x122 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0x544 JUMP JUMPDEST PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x655 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x5CD JUMP JUMPDEST PUSH2 0x20C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x135 PUSH2 0x130 CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x211 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x632 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x153 CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x257 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x166 CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x280 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x179 CALLDATASIZE PUSH1 0x4 PUSH2 0x544 JUMP JUMPDEST PUSH2 0x2A9 JUMP JUMPDEST PUSH2 0x186 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x611 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x2D7 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x1A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x544 JUMP JUMPDEST PUSH2 0x2DD JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1BC CALLDATASIZE PUSH1 0x4 PUSH2 0x590 JUMP JUMPDEST PUSH2 0x2EF JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1CF CALLDATASIZE PUSH1 0x4 PUSH2 0x566 JUMP JUMPDEST PUSH2 0x3A1 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST PUSH2 0x135 PUSH2 0x1F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x5CD JUMP JUMPDEST PUSH2 0x45B JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 SWAP1 SWAP2 MSTORE SWAP2 DUP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH1 0xF DUP4 DUP2 SIGNEXTEND SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV SWAP1 SIGNEXTEND SWAP2 SWAP1 DUP5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP5 DUP5 MSTORE SWAP4 DUP2 MSTORE SWAP2 DUP4 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SLOAD SWAP4 DUP7 ADD MLOAD PUSH1 0xF SWAP1 DUP2 SIGNEXTEND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP2 SIGNEXTEND DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR DUP3 SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD SWAP2 ADD SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP4 DUP5 SWAP1 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP3 DUP6 ADD MLOAD PUSH1 0xF SWAP1 DUP2 SIGNEXTEND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP2 SIGNEXTEND DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR DUP2 SSTORE SWAP3 DUP3 ADD MLOAD SWAP1 DUP4 ADD SSTORE PUSH1 0x60 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP2 DUP2 ADD SLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH1 0xF DUP4 DUP2 SIGNEXTEND SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV SWAP1 SIGNEXTEND SWAP2 SWAP1 DUP5 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E6 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x505 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP1 POP DUP1 PUSH2 0x515 DUP5 DUP5 PUSH2 0x4C3 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x524 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x4C3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x555 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x55F DUP4 DUP4 PUSH2 0x499 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x578 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x582 DUP5 DUP5 PUSH2 0x499 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5A4 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x5AE DUP6 DUP6 PUSH2 0x499 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x5C4 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x4D5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5DE JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xA0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F7 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x608 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x4D5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0xF SWAP5 DUP6 SIGNEXTEND DUP2 MSTORE SWAP3 SWAP1 SWAP4 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN 0xCB 0xF8 0xDB PUSH9 0x92EFF52F28C08F8D4 REVERT 0xAC CALLDATASIZE 0xAA DUP15 DIV 0xAF PUSH2 0xC65A 0xAB TIMESTAMP 0xC9 0x4C 0xC2 STATICCALL DUP3 PUSH26 0x64736F6C63430007010033000000000000000000000000000000 ","sourceMap":"1227:1538:122:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1519:51;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2024:74;;;;;;:::i;:::-;;:::i;:::-;;1406:85;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;2555:98::-;;;;;;:::i;:::-;;:::i;2240:114::-;;;;;;:::i;:::-;;:::i;1679:44::-;;;;;;:::i;:::-;;:::i;1899:119::-;;;:::i;:::-;;;;;;;:::i;1259:20::-;;;:::i;1603:46::-;;;;;;:::i;:::-;;:::i;2360:189::-;;;;;;:::i;:::-;;:::i;2659:104::-;;;;;;:::i;:::-;;:::i;2104:130::-;;;;;;:::i;:::-;;:::i;1308:60::-;;;;;;:::i;:::-;;:::i;1519:51::-;;;;;;;;;;;;;:::o;2024:74::-;2077:5;:14;2024:74::o;1406:85::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2555:98::-;2623:17;;;;;;;;:11;:17;;;;;:23;2555:98::o;2240:114::-;2316:22;;;;;;;;:16;:22;;;;;:31;2240:114::o;1679:44::-;;;;;;;;;;;;;:::o;1899:119::-;1992:19;;;;1899:119;:::o;1259:20::-;;;;:::o;1603:46::-;;;;;;;;;;;;;:::o;2360:189::-;2502:24;;;;;;;;:18;:24;;;;;;;;:32;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:189::o;2659:104::-;2731:15;;;;;;;;:9;:15;;;;;:25;2659:104::o;2104:130::-;2198:21;;;;:13;:21;;;;;;;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2104:130::o;1308:60::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;5060:42;5049:54;;5580:35;;5570:2;;5629:1;;5619:12;5570:2;57:78;;;;:::o;142:128::-;208:20;;4965:2;4954:21;;;5703:34;;5693:2;;5751:1;;5741:12;310:749;;422:4;410:9;405:3;401:19;397:30;394:2;;;-1:-1;;430:12;394:2;4594;4588:9;422:4;4624:6;4620:17;4731:6;4719:10;4716:22;4695:18;4683:10;4680:34;4677:62;4674:2;;;-1:-1;;4742:12;4674:2;4594;4761:22;449:29;-1:-1;449:29;560:48;604:3;580:22;560:48;:::i;:::-;542:16;535:74;704:48;748:3;671:2;728:9;724:22;704:48;:::i;:::-;671:2;690:5;686:16;679:74;4594:2;870:9;866:22;1133:20;4594:2;831:5;827:16;820:75;955:2;1013:9;1009:22;1133:20;955:2;974:5;970:16;963:75;;388:671;;;;:::o;1203:241::-;;1307:2;1295:9;1286:7;1282:23;1278:32;1275:2;;;-1:-1;;1313:12;1275:2;1375:53;1420:7;1396:22;1375:53;:::i;:::-;1365:63;1269:175;-1:-1;;;1269:175::o;1451:366::-;;;1572:2;1560:9;1551:7;1547:23;1543:32;1540:2;;;-1:-1;;1578:12;1540:2;1640:53;1685:7;1661:22;1640:53;:::i;:::-;1630:63;1730:2;1769:22;;;;1133:20;;-1:-1;;;1534:283::o;1824:538::-;;;;1985:3;1973:9;1964:7;1960:23;1956:33;1953:2;;;-1:-1;;1992:12;1953:2;2054:53;2099:7;2075:22;2054:53;:::i;:::-;2044:63;;2144:2;2187:9;2183:22;1133:20;2152:63;;2270:76;2338:7;2252:2;2318:9;2314:22;2270:76;:::i;:::-;2260:86;;1947:415;;;;;:::o;2369:241::-;;2473:2;2461:9;2452:7;2448:23;2444:32;2441:2;;;-1:-1;;2479:12;2441:2;-1:-1;1133:20;;2435:175;-1:-1;2435:175::o;2617:413::-;;;2761:3;2749:9;2740:7;2736:23;2732:33;2729:2;;;-1:-1;;2768:12;2729:2;2851:22;1133:20;2820:63;;2938:76;3006:7;2920:2;2986:9;2982:22;2938:76;:::i;:::-;2928:86;;2723:307;;;;;:::o;3463:278::-;5060:42;5049:54;;;;3136:78;;3618:2;3603:18;;3589:152::o;3748:548::-;4965:2;4954:21;;;3295:36;;4954:21;;;;4116:2;4101:18;;3295:36;4199:2;4184:18;;3414:37;4282:2;4267:18;;3414:37;;;;3955:3;3940:19;;3926:370::o;4303:222::-;3414:37;;;4430:2;4415:18;;4401:124::o"},"methodIdentifiers":{"balanceOf(address)":"70a08231","epoch()":"900cf0cf","locked__end(address)":"adc63589","point_history(uint256)":"d1febfb9","setBalanceOf(address,uint256)":"b46310f6","setEpoch(uint256)":"0ceb2cef","setLockedEnd(address,uint256)":"36aeef2a","setPointHistory(uint256,(int128,int128,uint256,uint256))":"b67672ab","setUserPointEpoch(address,uint256)":"3dc6f15b","setUserPointHistory(address,uint256,(int128,int128,uint256,uint256))":"af8de871","smart_wallet_checker()":"7175d4f7","user_point_epoch(address)":"010ae757","user_point_history(address,uint256)":"28d09d47"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ISmartWalletChecker\",\"name\":\"smartWalletChecker\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"locked__end\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"point_history\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"name\":\"setBalanceOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_epoch\",\"type\":\"uint256\"}],\"name\":\"setEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"setLockedEnd\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_epoch\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"point\",\"type\":\"tuple\"}],\"name\":\"setPointHistory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_epoch\",\"type\":\"uint256\"}],\"name\":\"setUserPointEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_epoch\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"point\",\"type\":\"tuple\"}],\"name\":\"setUserPointHistory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"smart_wallet_checker\",\"outputs\":[{\"internalType\":\"contract ISmartWalletChecker\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"user_point_epoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"user_point_history\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Mock voting escrow with setters to manipulate its inner state. Points are represented as mappings just for convenience, while keeping the same API for the public members as the real voting escrow.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockVotingEscrow.sol\":\"MockVotingEscrow\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"contracts/test/MockVotingEscrow.sol\":{\"keccak256\":\"0x419f627988047649de222995db37fef8b3cd20f0b2d7b8cfcd353080a73974d0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cd783011c0e024d61a623eda2bbc3d0d298409e8e22135310d0167370fd93ce7\",\"dweb:/ipfs/Qme4cd3kYtSMsChx7xxH8YmDmcafAQgw5o1fy2pduLR8dj\"]}},\"version\":1}"}},"contracts/test/TestAccessControl.sol":{"TestAccessControl":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.\",\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestAccessControl.sol\":\"TestAccessControl\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"contracts/test/TestAccessControl.sol\":{\"keccak256\":\"0xd7e1e3bdde3a149dfc57de01e4d2fef1a3624af436ae95dfe444d8bfb25772b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1f209648a170f1cb287cc462a78a1733e027c14026bb052a4b8eb372c97d665\",\"dweb:/ipfs/QmYCg7YsmwzAzxLChiek7kFysvqNvSTi6wCeGvwGiYCksT\"]}},\"version\":1}"}},"contracts/test/TestBalancerToken.sol":{"TestBalancerToken":{"abi":[{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Snapshot","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNAPSHOT_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b5060405162001c1738038062001c17833981810160405260608110156200003757600080fd5b8151602083018051604051929492938301929190846401000000008211156200005f57600080fd5b9083019060208201858111156200007557600080fd5b82516401000000008111828201881017156200009057600080fd5b82525081516020918201929091019080838360005b83811015620000bf578181015183820152602001620000a5565b50505050905090810190601f168015620000ed5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011157600080fd5b9083019060208201858111156200012757600080fd5b82516401000000008111828201881017156200014257600080fd5b82525081516020918201929091019080838360005b838110156200017157818101518382015260200162000157565b50505050905090810190601f1680156200019f5780820380516001836020036101000a031916815260200191505b506040525050508180604051806040016040528060018152602001603160f81b81525084848160049080519060200190620001dc929190620003d2565b508051620001f2906005906020840190620003d2565b50506006805460ff1916601290811790915583516020948501206080528251929093019190912060a052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526200024d9150620002bb565b6200025a600084620002d1565b620002867f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a684620002d1565b620002b27f5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f84620002d1565b5050506200046e565b6006805460ff191660ff92909216919091179055565b620002dd8282620002e1565b5050565b6000828152602081815260409091206200030691839062000d7862000348821b17901c565b15620002dd5760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000620003568383620003b1565b620003a757508154600180820184556000848152602080822090930180546001600160a01b0319166001600160a01b03861690811790915585549082528286019093526040902091909155620003ab565b5060005b92915050565b6001600160a01b031660009081526001919091016020526040902054151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200041557805160ff191683800117855562000445565b8280016001018555821562000445579182015b828111156200044557825182559160200191906001019062000428565b506200045392915062000457565b5090565b5b8082111562000453576000815560010162000458565b60805160a05160c05161177c6200049b60003980611251525080611293525080611272525061177c6000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637ecebe0011610104578063a457c2d7116100a2578063d539139311610071578063d5391393146105ed578063d547741f146105f5578063dd62ed3e14610621578063ed24911d1461064f576101da565b8063a457c2d714610527578063a9059cbb14610553578063ca15c8731461057f578063d505accf1461059c576101da565b806391d14854116100de57806391d14854146104e357806395d89b411461050f5780639711715a14610517578063a217fddf1461051f576101da565b80637ecebe00146104585780639010d07c1461047e57806390193b7c146104bd576101da565b80633644e5151161017c57806342966c681161014b57806342966c68146103e15780637028e2cd146103fe57806370a082311461040657806379cc67901461042c576101da565b80633644e5151461035557806336568abe1461035d578063395093511461038957806340c10f19146103b5576101da565b806323b872dd116101b857806323b872dd146102b6578063248a9ca3146102ec5780632f2ff15d14610309578063313ce56714610337576101da565b806306fdde03146101df578063095ea7b31461025c57806318160ddd1461029c575b600080fd5b6101e7610657565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102886004803603604081101561027257600080fd5b506001600160a01b03813516906020013561070b565b604080519115158252519081900360200190f35b6102a4610722565b60408051918252519081900360200190f35b610288600480360360608110156102cc57600080fd5b506001600160a01b03813581169160208101359091169060400135610728565b6102a46004803603602081101561030257600080fd5b503561077c565b6103356004803603604081101561031f57600080fd5b50803590602001356001600160a01b0316610791565b005b61033f610810565b6040805160ff9092168252519081900360200190f35b6102a4610819565b6103356004803603604081101561037357600080fd5b50803590602001356001600160a01b0316610828565b6102886004803603604081101561039f57600080fd5b506001600160a01b038135169060200135610893565b610335600480360360408110156103cb57600080fd5b506001600160a01b0381351690602001356108c9565b610335600480360360208110156103f757600080fd5b5035610968565b6102a4610975565b6102a46004803603602081101561041c57600080fd5b50356001600160a01b0316610999565b6103356004803603604081101561044257600080fd5b506001600160a01b0381351690602001356109b4565b6102a46004803603602081101561046e57600080fd5b50356001600160a01b03166109ea565b6104a16004803603604081101561049457600080fd5b50803590602001356109f5565b604080516001600160a01b039092168252519081900360200190f35b6102a4600480360360208110156104d357600080fd5b50356001600160a01b0316610a14565b610288600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a2f565b6101e7610a47565b610335610ac6565b6102a4610b91565b6102886004803603604081101561053d57600080fd5b506001600160a01b038135169060200135610b96565b6102886004803603604081101561056957600080fd5b506001600160a01b038135169060200135610bcf565b6102a46004803603602081101561059557600080fd5b5035610bdc565b610335600480360360e08110156105b257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610bf3565b6102a4610cae565b6103356004803603604081101561060b57600080fd5b50803590602001356001600160a01b0316610cd2565b6102a46004803603604081101561063757600080fd5b506001600160a01b0381358116916020013516610d43565b6102a4610d6e565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107015780601f106106d657610100808354040283529160200191610701565b820191906000526020600020905b8154815290600101906020018083116106e457829003601f168201915b5050505050905090565b6000610718338484610df3565b5060015b92915050565b60035490565b6000610735848484610e55565b6001600160a01b03841660009081526002602090815260408083203380855292529091205461077291869161076d908661019e610f3f565b610df3565b5060019392505050565b60009081526020819052604090206002015490565b6000828152602081905260409020600201546107ad9033610a2f565b610802576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806116b9602f913960400191505060405180910390fd5b61080c8282610f55565b5050565b60065460ff1690565b6000610823610d6e565b905090565b6001600160a01b0381163314610889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611718602f913960400191505060405180910390fd5b61080c8282610fae565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161071891859061076d9086611007565b6108f37f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610a2f565b61095e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e54455200000000000000000000000000000000000000000000604482015290519081900360640190fd5b61080c8282611019565b61097233826110ba565b50565b7f5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f81565b6001600160a01b031660009081526001602052604090205490565b60006109ce826101a16109c78633610d43565b9190610f3f565b90506109db833383610df3565b6109e583836110ba565b505050565b600061071c82610a14565b6000828152602081905260408120610a0d9083611176565b9392505050565b6001600160a01b031660009081526007602052604090205490565b6000828152602081905260408120610a0d9083611192565b60058054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107015780601f106106d657610100808354040283529160200191610701565b610af07f5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f33610a2f565b610b5b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f534e415053484f545445520000000000000000000000000000000000604482015290519081900360640190fd5b604080516000815290517f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb679181900360200190a1565b600081565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161071891859061076d908661019f610f3f565b6000610718338484610e55565b600081815260208190526040812061071c906111b3565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610c228c610a14565b8960405160200180878152602001866001600160a01b03168152602001856001600160a01b031681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610c998882610c908787876111b7565b886101f86111f6565b610ca4888888610df3565b5050505050505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b600082815260208190526040902060020154610cee9033610a2f565b610889576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806116e86030913960400191505060405180910390fd5b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600061082361124d565b6000610d848383611192565b610deb57508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386169081179091558554908252828601909352604090209190915561071c565b50600061071c565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610e6c6001600160a01b038416151561019861130b565b610e836001600160a01b038316151561019961130b565b610e8e8383836109e5565b6001600160a01b038316600090815260016020526040902054610eb490826101a0610f3f565b6001600160a01b038085166000908152600160205260408082209390935590841681522054610ee39082611007565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610f4e848411158361130b565b5050900390565b6000828152602081905260409020610f6d9082610d78565b1561080c5760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000828152602081905260409020610fc69082611319565b1561080c5760405133906001600160a01b0383169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000828201610a0d848210158361130b565b611025600083836109e5565b61103f61103a82611034610722565b90611007565b611493565b6001600160a01b0382166000908152600160205260409020546110629082611007565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6110d16001600160a01b038316151561019b61130b565b6110dd826000836109e5565b6001600160a01b03821660009081526001602052604090205461110390826101b2610f3f565b6001600160a01b03831660009081526001602052604090205561113161103a8261112b610722565b90611498565b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b8154600090611188908310606461130b565b610a0d83836114a6565b6001600160a01b031660009081526001919091016020526040902054151590565b5490565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000611201856114d3565b905061121761121187838761153a565b8361130b565b611226428410156101b861130b565b5050506001600160a01b039092166000908152600760205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006112ba611625565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b8161080c5761080c81611629565b6001600160a01b038116600090815260018301602052604081205480156114895783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191018082146113fb57600086600001828154811061137a57fe5b60009182526020909120015487546001600160a01b03909116915081908890859081106113a357fe5b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0394851617905592909116815260018881019092526040902090830190555b855486908061140657fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559092019092556001600160a01b038716825260018881019091526040822091909155935061071c92505050565b600091505061071c565b600355565b6000610a0d83836001610f3f565b60008260000182815481106114b757fe5b6000918252602090912001546001600160a01b03169392505050565b60006114dd61124d565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061154c82516041146101b961130b565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156115c5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906116195750876001600160a01b0316816001600160a01b0316145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610972917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a264697066735822122048ad74f0d0e050b9891cc0579e4ab63cec31ef728daeb07662c8785d794e368d64736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1C17 CODESIZE SUB DUP1 PUSH3 0x1C17 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xBF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xED JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x171 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x157 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x19F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP POP DUP2 DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP5 DUP5 DUP2 PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x1DC SWAP3 SWAP2 SWAP1 PUSH3 0x3D2 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1F2 SWAP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x3D2 JUMP JUMPDEST POP POP PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP4 MLOAD PUSH1 0x20 SWAP5 DUP6 ADD KECCAK256 PUSH1 0x80 MSTORE DUP3 MLOAD SWAP3 SWAP1 SWAP4 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0xA0 MSTORE POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH3 0x24D SWAP2 POP PUSH3 0x2BB JUMP JUMPDEST PUSH3 0x25A PUSH1 0x0 DUP5 PUSH3 0x2D1 JUMP JUMPDEST PUSH3 0x286 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP5 PUSH3 0x2D1 JUMP JUMPDEST PUSH3 0x2B2 PUSH32 0x5FDBD35E8DA83EE755D5E62A539E5ED7F47126ABEDE0B8B10F9EA43DC6EED07F DUP5 PUSH3 0x2D1 JUMP JUMPDEST POP POP POP PUSH3 0x46E JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x2DD DUP3 DUP3 PUSH3 0x2E1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH3 0x306 SWAP2 DUP4 SWAP1 PUSH3 0xD78 PUSH3 0x348 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST ISZERO PUSH3 0x2DD JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x356 DUP4 DUP4 PUSH3 0x3B1 JUMP JUMPDEST PUSH3 0x3A7 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH3 0x3AB JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x415 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x445 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x445 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x445 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x428 JUMP JUMPDEST POP PUSH3 0x453 SWAP3 SWAP2 POP PUSH3 0x457 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x453 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x458 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0x177C PUSH3 0x49B PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1251 MSTORE POP DUP1 PUSH2 0x1293 MSTORE POP DUP1 PUSH2 0x1272 MSTORE POP PUSH2 0x177C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD5391393 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x621 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x64F JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x527 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x553 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x59C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x50F JUMPI DUP1 PUSH4 0x9711715A EQ PUSH2 0x517 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x51F JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x458 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x47E JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x4BD JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x42966C68 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x7028E2CD EQ PUSH2 0x3FE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x42C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x35D JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3B5 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x2EC JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x337 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x29C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E7 PUSH2 0x657 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x221 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x24E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0x722 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x728 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x77C JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x791 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33F PUSH2 0x810 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0x819 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x828 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x893 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x968 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x975 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x999 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9B4 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9EA JUMP JUMPDEST PUSH2 0x4A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9F5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA14 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0xA47 JUMP JUMPDEST PUSH2 0x335 PUSH2 0xAC6 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0xB91 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB96 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x569 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBCF JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xBF3 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCD2 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xD43 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0xD6E JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x701 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x701 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6E4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x718 CALLER DUP5 DUP5 PUSH2 0xDF3 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x735 DUP5 DUP5 DUP5 PUSH2 0xE55 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x772 SWAP2 DUP7 SWAP2 PUSH2 0x76D SWAP1 DUP7 PUSH2 0x19E PUSH2 0xF3F JUMP JUMPDEST PUSH2 0xDF3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x7AD SWAP1 CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x802 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16B9 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x80C DUP3 DUP3 PUSH2 0xF55 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x823 PUSH2 0xD6E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x889 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1718 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x80C DUP3 DUP3 PUSH2 0xFAE JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x718 SWAP2 DUP6 SWAP1 PUSH2 0x76D SWAP1 DUP7 PUSH2 0x1007 JUMP JUMPDEST PUSH2 0x8F3 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x95E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4D494E54455200000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x80C DUP3 DUP3 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x972 CALLER DUP3 PUSH2 0x10BA JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x5FDBD35E8DA83EE755D5E62A539E5ED7F47126ABEDE0B8B10F9EA43DC6EED07F DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9CE DUP3 PUSH2 0x1A1 PUSH2 0x9C7 DUP7 CALLER PUSH2 0xD43 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xF3F JUMP JUMPDEST SWAP1 POP PUSH2 0x9DB DUP4 CALLER DUP4 PUSH2 0xDF3 JUMP JUMPDEST PUSH2 0x9E5 DUP4 DUP4 PUSH2 0x10BA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71C DUP3 PUSH2 0xA14 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xA0D SWAP1 DUP4 PUSH2 0x1176 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xA0D SWAP1 DUP4 PUSH2 0x1192 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x701 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x701 JUMP JUMPDEST PUSH2 0xAF0 PUSH32 0x5FDBD35E8DA83EE755D5E62A539E5ED7F47126ABEDE0B8B10F9EA43DC6EED07F CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0xB5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F534E415053484F545445520000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x8030E83B04D87BEF53480E26263266D6CA66863AA8506ACA6F2559D18AA1CB67 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x718 SWAP2 DUP6 SWAP1 PUSH2 0x76D SWAP1 DUP7 PUSH2 0x19F PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x718 CALLER DUP5 DUP5 PUSH2 0xE55 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x71C SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xC22 DUP13 PUSH2 0xA14 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xC99 DUP9 DUP3 PUSH2 0xC90 DUP8 DUP8 DUP8 PUSH2 0x11B7 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0x11F6 JUMP JUMPDEST PUSH2 0xCA4 DUP9 DUP9 DUP9 PUSH2 0xDF3 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xCEE SWAP1 CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x889 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16E8 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x823 PUSH2 0x124D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD84 DUP4 DUP4 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0xDEB JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x71C JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x71C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xE6C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x130B JUMP JUMPDEST PUSH2 0xE83 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x130B JUMP JUMPDEST PUSH2 0xE8E DUP4 DUP4 DUP4 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xEB4 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xEE3 SWAP1 DUP3 PUSH2 0x1007 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF4E DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x130B JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xF6D SWAP1 DUP3 PUSH2 0xD78 JUMP JUMPDEST ISZERO PUSH2 0x80C JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xFC6 SWAP1 DUP3 PUSH2 0x1319 JUMP JUMPDEST ISZERO PUSH2 0x80C JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xA0D DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x130B JUMP JUMPDEST PUSH2 0x1025 PUSH1 0x0 DUP4 DUP4 PUSH2 0x9E5 JUMP JUMPDEST PUSH2 0x103F PUSH2 0x103A DUP3 PUSH2 0x1034 PUSH2 0x722 JUMP JUMPDEST SWAP1 PUSH2 0x1007 JUMP JUMPDEST PUSH2 0x1493 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1062 SWAP1 DUP3 PUSH2 0x1007 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x10D1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x130B JUMP JUMPDEST PUSH2 0x10DD DUP3 PUSH1 0x0 DUP4 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1103 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1131 PUSH2 0x103A DUP3 PUSH2 0x112B PUSH2 0x722 JUMP JUMPDEST SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1188 SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0x130B JUMP JUMPDEST PUSH2 0xA0D DUP4 DUP4 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1201 DUP6 PUSH2 0x14D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1217 PUSH2 0x1211 DUP8 DUP4 DUP8 PUSH2 0x153A JUMP JUMPDEST DUP4 PUSH2 0x130B JUMP JUMPDEST PUSH2 0x1226 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x130B JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x12BA PUSH2 0x1625 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x80C JUMPI PUSH2 0x80C DUP2 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1489 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x13FB JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x137A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x13A3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x1406 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x71C SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x71C JUMP JUMPDEST PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA0D DUP4 DUP4 PUSH1 0x1 PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x14B7 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14DD PUSH2 0x124D JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x154C DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x130B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1619 JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x972 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID COINBASE PUSH4 0x63657373 NUMBER PUSH16 0x6E74726F6C3A2073656E646572206D75 PUSH20 0x7420626520616E2061646D696E20746F20677261 PUSH15 0x74416363657373436F6E74726F6C3A KECCAK256 PUSH20 0x656E646572206D75737420626520616E2061646D PUSH10 0x6E20746F207265766F6B PUSH6 0x416363657373 NUMBER PUSH16 0x6E74726F6C3A2063616E206F6E6C7920 PUSH19 0x656E6F756E636520726F6C657320666F722073 PUSH6 0x6C66A2646970 PUSH7 0x735822122048AD PUSH21 0xF0D0E050B9891CC0579E4AB63CEC31EF728DAEB076 PUSH3 0xC8785D PUSH26 0x4E368D64736F6C63430007010033000000000000000000000000 ","sourceMap":"991:876:124:-:0;;;1254:301;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1254:301:124;;;;;;;;;;-1:-1:-1;1254:301:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1254:301:124;;;;;;;;;;-1:-1:-1;1254:301:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1385:4;1301::61;2020:280:58;;;;;;;;;;;;;-1:-1:-1;;;2020:280:58;;;1359:4:124;1365:6;2126:5:59;2118;:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2141:17:59;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:59;:14;;-1:-1:-1;;2168:14:59;2180:2;2168:14;;;;;;2100:22:58;;;;;;;2085:37;;2150:25;;;;;;;;;;2132:43;;-1:-1:-1;2198:95:58;2185:108;;1401:18:124::2;::::0;-1:-1:-1;1401:14:124::2;:18::i;:::-;1429:37;1934:4:123;1460:5:124::0;1429:10:::2;:37::i;:::-;1476:30;1118:24;1500:5:::0;1476:10:::2;:30::i;:::-;1516:32;1188:26;1542:5:::0;1516:10:::2;:32::i;:::-;1254:301:::0;;;991:876;;10570:88:59;10630:9;:21;;-1:-1:-1;;10630:21:59;;;;;;;;;;;;10570:88::o;6821:110:123:-;6899:25;6910:4;6916:7;6899:10;:25::i;:::-;6821:110;;:::o;7258:182::-;7331:6;:12;;;;;;;;;;;:33;;7356:7;;7331:24;;;;;:33;;:::i;:::-;7327:107;;;7385:38;;7412:10;;-1:-1:-1;;;;;7385:38:123;;;7397:4;;7385:38;;;;;7258:182;;:::o;1851:410:62:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:62;;;;;;;;-1:-1:-1;1978:23:62;;;;;;;;;;;;-1:-1:-1;;;;;;1978:23:62;-1:-1:-1;;;;;1978:23:62;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:62;1937:318;1851:410;;;;:::o;3977:134::-;-1:-1:-1;;;;;4080:19:62;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;991:876:124:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;991:876:124;;;-1:-1:-1;991:876:124;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"5935":[{"length":32,"start":4722}],"5937":[{"length":32,"start":4755}],"5939":[{"length":32,"start":4689}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101da5760003560e01c80637ecebe0011610104578063a457c2d7116100a2578063d539139311610071578063d5391393146105ed578063d547741f146105f5578063dd62ed3e14610621578063ed24911d1461064f576101da565b8063a457c2d714610527578063a9059cbb14610553578063ca15c8731461057f578063d505accf1461059c576101da565b806391d14854116100de57806391d14854146104e357806395d89b411461050f5780639711715a14610517578063a217fddf1461051f576101da565b80637ecebe00146104585780639010d07c1461047e57806390193b7c146104bd576101da565b80633644e5151161017c57806342966c681161014b57806342966c68146103e15780637028e2cd146103fe57806370a082311461040657806379cc67901461042c576101da565b80633644e5151461035557806336568abe1461035d578063395093511461038957806340c10f19146103b5576101da565b806323b872dd116101b857806323b872dd146102b6578063248a9ca3146102ec5780632f2ff15d14610309578063313ce56714610337576101da565b806306fdde03146101df578063095ea7b31461025c57806318160ddd1461029c575b600080fd5b6101e7610657565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102886004803603604081101561027257600080fd5b506001600160a01b03813516906020013561070b565b604080519115158252519081900360200190f35b6102a4610722565b60408051918252519081900360200190f35b610288600480360360608110156102cc57600080fd5b506001600160a01b03813581169160208101359091169060400135610728565b6102a46004803603602081101561030257600080fd5b503561077c565b6103356004803603604081101561031f57600080fd5b50803590602001356001600160a01b0316610791565b005b61033f610810565b6040805160ff9092168252519081900360200190f35b6102a4610819565b6103356004803603604081101561037357600080fd5b50803590602001356001600160a01b0316610828565b6102886004803603604081101561039f57600080fd5b506001600160a01b038135169060200135610893565b610335600480360360408110156103cb57600080fd5b506001600160a01b0381351690602001356108c9565b610335600480360360208110156103f757600080fd5b5035610968565b6102a4610975565b6102a46004803603602081101561041c57600080fd5b50356001600160a01b0316610999565b6103356004803603604081101561044257600080fd5b506001600160a01b0381351690602001356109b4565b6102a46004803603602081101561046e57600080fd5b50356001600160a01b03166109ea565b6104a16004803603604081101561049457600080fd5b50803590602001356109f5565b604080516001600160a01b039092168252519081900360200190f35b6102a4600480360360208110156104d357600080fd5b50356001600160a01b0316610a14565b610288600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a2f565b6101e7610a47565b610335610ac6565b6102a4610b91565b6102886004803603604081101561053d57600080fd5b506001600160a01b038135169060200135610b96565b6102886004803603604081101561056957600080fd5b506001600160a01b038135169060200135610bcf565b6102a46004803603602081101561059557600080fd5b5035610bdc565b610335600480360360e08110156105b257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610bf3565b6102a4610cae565b6103356004803603604081101561060b57600080fd5b50803590602001356001600160a01b0316610cd2565b6102a46004803603604081101561063757600080fd5b506001600160a01b0381358116916020013516610d43565b6102a4610d6e565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107015780601f106106d657610100808354040283529160200191610701565b820191906000526020600020905b8154815290600101906020018083116106e457829003601f168201915b5050505050905090565b6000610718338484610df3565b5060015b92915050565b60035490565b6000610735848484610e55565b6001600160a01b03841660009081526002602090815260408083203380855292529091205461077291869161076d908661019e610f3f565b610df3565b5060019392505050565b60009081526020819052604090206002015490565b6000828152602081905260409020600201546107ad9033610a2f565b610802576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806116b9602f913960400191505060405180910390fd5b61080c8282610f55565b5050565b60065460ff1690565b6000610823610d6e565b905090565b6001600160a01b0381163314610889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611718602f913960400191505060405180910390fd5b61080c8282610fae565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161071891859061076d9086611007565b6108f37f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610a2f565b61095e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e54455200000000000000000000000000000000000000000000604482015290519081900360640190fd5b61080c8282611019565b61097233826110ba565b50565b7f5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f81565b6001600160a01b031660009081526001602052604090205490565b60006109ce826101a16109c78633610d43565b9190610f3f565b90506109db833383610df3565b6109e583836110ba565b505050565b600061071c82610a14565b6000828152602081905260408120610a0d9083611176565b9392505050565b6001600160a01b031660009081526007602052604090205490565b6000828152602081905260408120610a0d9083611192565b60058054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107015780601f106106d657610100808354040283529160200191610701565b610af07f5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f33610a2f565b610b5b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f534e415053484f545445520000000000000000000000000000000000604482015290519081900360640190fd5b604080516000815290517f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb679181900360200190a1565b600081565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161071891859061076d908661019f610f3f565b6000610718338484610e55565b600081815260208190526040812061071c906111b3565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610c228c610a14565b8960405160200180878152602001866001600160a01b03168152602001856001600160a01b031681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610c998882610c908787876111b7565b886101f86111f6565b610ca4888888610df3565b5050505050505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b600082815260208190526040902060020154610cee9033610a2f565b610889576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806116e86030913960400191505060405180910390fd5b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600061082361124d565b6000610d848383611192565b610deb57508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386169081179091558554908252828601909352604090209190915561071c565b50600061071c565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610e6c6001600160a01b038416151561019861130b565b610e836001600160a01b038316151561019961130b565b610e8e8383836109e5565b6001600160a01b038316600090815260016020526040902054610eb490826101a0610f3f565b6001600160a01b038085166000908152600160205260408082209390935590841681522054610ee39082611007565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610f4e848411158361130b565b5050900390565b6000828152602081905260409020610f6d9082610d78565b1561080c5760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000828152602081905260409020610fc69082611319565b1561080c5760405133906001600160a01b0383169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000828201610a0d848210158361130b565b611025600083836109e5565b61103f61103a82611034610722565b90611007565b611493565b6001600160a01b0382166000908152600160205260409020546110629082611007565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6110d16001600160a01b038316151561019b61130b565b6110dd826000836109e5565b6001600160a01b03821660009081526001602052604090205461110390826101b2610f3f565b6001600160a01b03831660009081526001602052604090205561113161103a8261112b610722565b90611498565b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b8154600090611188908310606461130b565b610a0d83836114a6565b6001600160a01b031660009081526001919091016020526040902054151590565b5490565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000611201856114d3565b905061121761121187838761153a565b8361130b565b611226428410156101b861130b565b5050506001600160a01b039092166000908152600760205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006112ba611625565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b8161080c5761080c81611629565b6001600160a01b038116600090815260018301602052604081205480156114895783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191018082146113fb57600086600001828154811061137a57fe5b60009182526020909120015487546001600160a01b03909116915081908890859081106113a357fe5b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0394851617905592909116815260018881019092526040902090830190555b855486908061140657fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559092019092556001600160a01b038716825260018881019091526040822091909155935061071c92505050565b600091505061071c565b600355565b6000610a0d83836001610f3f565b60008260000182815481106114b757fe5b6000918252602090912001546001600160a01b03169392505050565b60006114dd61124d565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061154c82516041146101b961130b565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156115c5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906116195750876001600160a01b0316816001600160a01b0316145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610972917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a264697066735822122048ad74f0d0e050b9891cc0579e4ab63cec31ef728daeb07662c8785d794e368d64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD5391393 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x621 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x64F JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x527 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x553 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x59C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x50F JUMPI DUP1 PUSH4 0x9711715A EQ PUSH2 0x517 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x51F JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x458 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x47E JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x4BD JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x42966C68 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x7028E2CD EQ PUSH2 0x3FE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x42C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x35D JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3B5 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x2EC JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x337 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x29C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E7 PUSH2 0x657 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x221 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x24E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0x722 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x728 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x77C JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x791 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33F PUSH2 0x810 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0x819 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x828 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x893 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x968 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x975 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x999 JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9B4 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9EA JUMP JUMPDEST PUSH2 0x4A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9F5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA14 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0xA47 JUMP JUMPDEST PUSH2 0x335 PUSH2 0xAC6 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0xB91 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB96 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x569 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBCF JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xBF3 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0x335 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCD2 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xD43 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0xD6E JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x701 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x701 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6E4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x718 CALLER DUP5 DUP5 PUSH2 0xDF3 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x735 DUP5 DUP5 DUP5 PUSH2 0xE55 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x772 SWAP2 DUP7 SWAP2 PUSH2 0x76D SWAP1 DUP7 PUSH2 0x19E PUSH2 0xF3F JUMP JUMPDEST PUSH2 0xDF3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x7AD SWAP1 CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x802 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16B9 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x80C DUP3 DUP3 PUSH2 0xF55 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x823 PUSH2 0xD6E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x889 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1718 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x80C DUP3 DUP3 PUSH2 0xFAE JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x718 SWAP2 DUP6 SWAP1 PUSH2 0x76D SWAP1 DUP7 PUSH2 0x1007 JUMP JUMPDEST PUSH2 0x8F3 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x95E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4D494E54455200000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x80C DUP3 DUP3 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x972 CALLER DUP3 PUSH2 0x10BA JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x5FDBD35E8DA83EE755D5E62A539E5ED7F47126ABEDE0B8B10F9EA43DC6EED07F DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9CE DUP3 PUSH2 0x1A1 PUSH2 0x9C7 DUP7 CALLER PUSH2 0xD43 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xF3F JUMP JUMPDEST SWAP1 POP PUSH2 0x9DB DUP4 CALLER DUP4 PUSH2 0xDF3 JUMP JUMPDEST PUSH2 0x9E5 DUP4 DUP4 PUSH2 0x10BA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71C DUP3 PUSH2 0xA14 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xA0D SWAP1 DUP4 PUSH2 0x1176 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xA0D SWAP1 DUP4 PUSH2 0x1192 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x701 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x701 JUMP JUMPDEST PUSH2 0xAF0 PUSH32 0x5FDBD35E8DA83EE755D5E62A539E5ED7F47126ABEDE0B8B10F9EA43DC6EED07F CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0xB5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F534E415053484F545445520000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x8030E83B04D87BEF53480E26263266D6CA66863AA8506ACA6F2559D18AA1CB67 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x718 SWAP2 DUP6 SWAP1 PUSH2 0x76D SWAP1 DUP7 PUSH2 0x19F PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x718 CALLER DUP5 DUP5 PUSH2 0xE55 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x71C SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xC22 DUP13 PUSH2 0xA14 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xC99 DUP9 DUP3 PUSH2 0xC90 DUP8 DUP8 DUP8 PUSH2 0x11B7 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0x11F6 JUMP JUMPDEST PUSH2 0xCA4 DUP9 DUP9 DUP9 PUSH2 0xDF3 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xCEE SWAP1 CALLER PUSH2 0xA2F JUMP JUMPDEST PUSH2 0x889 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16E8 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x823 PUSH2 0x124D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD84 DUP4 DUP4 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0xDEB JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x71C JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x71C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xE6C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x130B JUMP JUMPDEST PUSH2 0xE83 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x130B JUMP JUMPDEST PUSH2 0xE8E DUP4 DUP4 DUP4 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xEB4 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xEE3 SWAP1 DUP3 PUSH2 0x1007 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF4E DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x130B JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xF6D SWAP1 DUP3 PUSH2 0xD78 JUMP JUMPDEST ISZERO PUSH2 0x80C JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xFC6 SWAP1 DUP3 PUSH2 0x1319 JUMP JUMPDEST ISZERO PUSH2 0x80C JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xA0D DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x130B JUMP JUMPDEST PUSH2 0x1025 PUSH1 0x0 DUP4 DUP4 PUSH2 0x9E5 JUMP JUMPDEST PUSH2 0x103F PUSH2 0x103A DUP3 PUSH2 0x1034 PUSH2 0x722 JUMP JUMPDEST SWAP1 PUSH2 0x1007 JUMP JUMPDEST PUSH2 0x1493 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1062 SWAP1 DUP3 PUSH2 0x1007 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x10D1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x130B JUMP JUMPDEST PUSH2 0x10DD DUP3 PUSH1 0x0 DUP4 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1103 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1131 PUSH2 0x103A DUP3 PUSH2 0x112B PUSH2 0x722 JUMP JUMPDEST SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1188 SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0x130B JUMP JUMPDEST PUSH2 0xA0D DUP4 DUP4 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1201 DUP6 PUSH2 0x14D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1217 PUSH2 0x1211 DUP8 DUP4 DUP8 PUSH2 0x153A JUMP JUMPDEST DUP4 PUSH2 0x130B JUMP JUMPDEST PUSH2 0x1226 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x130B JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x12BA PUSH2 0x1625 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x80C JUMPI PUSH2 0x80C DUP2 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1489 JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x13FB JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x137A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x13A3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x1406 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x71C SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x71C JUMP JUMPDEST PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA0D DUP4 DUP4 PUSH1 0x1 PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x14B7 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14DD PUSH2 0x124D JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x154C DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x130B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1619 JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x972 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID COINBASE PUSH4 0x63657373 NUMBER PUSH16 0x6E74726F6C3A2073656E646572206D75 PUSH20 0x7420626520616E2061646D696E20746F20677261 PUSH15 0x74416363657373436F6E74726F6C3A KECCAK256 PUSH20 0x656E646572206D75737420626520616E2061646D PUSH10 0x6E20746F207265766F6B PUSH6 0x416363657373 NUMBER PUSH16 0x6E74726F6C3A2063616E206F6E6C7920 PUSH19 0x656E6F756E636520726F6C657320666F722073 PUSH6 0x6C66A2646970 PUSH7 0x735822122048AD PUSH21 0xF0D0E050B9891CC0579E4AB63CEC31EF728DAEB076 PUSH3 0xC8785D PUSH26 0x4E368D64736F6C63430007010033000000000000000000000000 ","sourceMap":"991:876:124:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4857:164:59;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5488:386:59;;;;;;;;;;;;;;;;;:::i;4521:112:123:-;;;;;;;;;;;;;;;;-1:-1:-1;4521:112:123;;:::i;4883:221::-;;;;;;;;;;;;;;;;-1:-1:-1;4883:221:123;;;;;;-1:-1:-1;;;;;4883:221:123;;:::i;:::-;;3156:81:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2243:113:61;;;:::i;6053:203:123:-;;;;;;;;;;;;;;;;-1:-1:-1;6053:203:123;;;;;;-1:-1:-1;;;;;6053:203:123;;:::i;6269:211:59:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6269:211:59;;;;;;;;:::i;1561:164:124:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1561:164:124;;;;;;;;:::i;473:87:60:-;;;;;;;;;;;;;;;;-1:-1:-1;473:87:60;;:::i;1148:66:124:-;;;:::i;4022:117:59:-;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:59;-1:-1:-1;;;;;4022:117:59;;:::i;866:283:60:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;866:283:60;;;;;;;;:::i;2006:113:61:-;;;;;;;;;;;;;;;;-1:-1:-1;2006:113:61;-1:-1:-1;;;;;2006:113:61;;:::i;4204:136:123:-;;;;;;;;;;;;;;;;-1:-1:-1;4204:136:123;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;4204:136:123;;;;;;;;;;;;;;1303:121:47;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:47;-1:-1:-1;;;;;1303:121:47;;:::i;3112:137:123:-;;;;;;;;;;;;;;;;-1:-1:-1;3112:137:123;;;;;;-1:-1:-1;;;;;3112:137:123;;:::i;2448:85:59:-;;;:::i;1731:134:124:-;;;:::i;1889:49:123:-;;;:::i;6967:312:59:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6967:312:59;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4342:170:59;;;;;;;;:::i;3417:125:123:-;;;;;;;;;;;;;;;;-1:-1:-1;3417:125:123;;:::i;1437:508:61:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1437:508:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1080:62:124:-;;;:::i;5338:224:123:-;;;;;;;;;;;;;;;;-1:-1:-1;5338:224:123;;;;;;-1:-1:-1;;;;;5338:224:123;;:::i;4570:149:59:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4570:149:59;;;;;;;;;;:::i;1184:113:47:-;;;:::i;2254:81:59:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:59;4857:164;;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;-1:-1:-1;;;;;5752:19:59;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:31;5752:35:59;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:59;5488:386;;;;;:::o;4521:112:123:-;4578:7;4604:12;;;;;;;;;;:22;;;;4521:112::o;4883:221::-;4974:6;:12;;;;;;;;;;:22;;;4966:43;;4998:10;4966:7;:43::i;:::-;4958:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5072:25;5083:4;5089:7;5072:10;:25::i;:::-;4883:221;;:::o;3156:81:59:-;3221:9;;;;3156:81;:::o;2243:113:61:-;2303:7;2329:20;:18;:20::i;:::-;2322:27;;2243:113;:::o;6053:203:123:-;-1:-1:-1;;;;;6139:21:123;;6150:10;6139:21;6131:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6223:26;6235:4;6241:7;6223:11;:26::i;6269:211:59:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6403:32:59;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;1561:164:124:-;1637:32;1118:24;1658:10;1637:7;:32::i;:::-;1629:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:24;1700:9;1711:6;1694:5;:24::i;473:87:60:-;528:25;534:10;546:6;528:5;:25::i;:::-;473:87;:::o;1148:66:124:-;1188:26;1148:66;:::o;4022:117:59:-;-1:-1:-1;;;;;4114:18:59;4088:7;4114:18;;;:9;:18;;;;;;;4022:117::o;866:283:60:-;942:26;971:79;1006:6;11299:3:31;971:30:60;981:7;990:10;971:9;:30::i;:::-;:34;:79;:34;:79::i;:::-;942:108;;1061:49;1070:7;1079:10;1091:18;1061:8;:49::i;:::-;1120:22;1126:7;1135:6;1120:5;:22::i;:::-;866:283;;;:::o;2006:113:61:-;2067:7;2093:19;2106:5;2093:12;:19::i;4204:136:123:-;4277:7;4303:12;;;;;;;;;;:30;;4327:5;4303:23;:30::i;:::-;4296:37;4204:136;-1:-1:-1;;;4204:136:123:o;1303:121:47:-;-1:-1:-1;;;;;1398:19:47;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;3112:137:123:-;3181:4;3204:12;;;;;;;;;;:38;;3234:7;3204:29;:38::i;2448:85:59:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;1731:134:124;1778:34;1188:26;1801:10;1778:7;:34::i;:::-;1770:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1847:11;;;1856:1;1847:11;;;;;;;;;;;;;1731:134::o;1889:49:123:-;1934:4;1889:49;:::o;6967:312:59:-;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7143:32:59;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:31;7143:36:59;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;3417:125:123:-;3480:7;3506:12;;;;;;;;;;:29;;:27;:29::i;1437:508:61:-;1645:18;921:109;1718:5;1725:7;1734:5;1741:19;1754:5;1741:12;:19::i;:::-;1762:8;1689:82;;;;;;;;;;;-1:-1:-1;;;;;1689:82:61;;;;;;-1:-1:-1;;;;;1689:82:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:115;;;;;;1645:136;;1792:104;1814:5;1821:10;1833:26;1851:1;1854;1857;1833:17;:26::i;:::-;1861:8;13190:3:31;1792:21:61;:104::i;:::-;1907:31;1916:5;1923:7;1932:5;1907:8;:31::i;:::-;1437:508;;;;;;;;:::o;1080:62:124:-;1118:24;1080:62;:::o;5338:224:123:-;5430:6;:12;;;;;;;;;;:22;;;5422:43;;5454:10;5422:7;:43::i;:::-;5414:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4570:149:59;-1:-1:-1;;;;;4685:18:59;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1184:113:47:-;1244:7;1270:20;:18;:20::i;1851:410:62:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:62;;;;;;;;-1:-1:-1;1978:23:62;;;;;;;;;;;;;;-1:-1:-1;;;;;1978:23:62;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:62;2232:12;;10034:213:59;-1:-1:-1;;;;;10157:18:59;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;-1:-1:-1;;;;;7889:20:59;;;;10687:3:31;7880:8:59;:71::i;:::-;7961:72;-1:-1:-1;;;;;7970:23:59;;;;10755:3:31;7961:8:59;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;-1:-1:-1;;;;;8122:17:59;;;;;;:9;:17;;;;;;:68;;8144:6;11233:3:31;8122:21:59;:68::i;:::-;-1:-1:-1;;;;;8102:17:59;;;;;;;:9;:17;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;-1:-1:-1;;;;;8200:20:59;;;;;;;:9;:20;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:65:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:65;;;1816:206::o;7258:182:123:-;7331:6;:12;;;;;;;;;;:33;;7356:7;7331:24;:33::i;:::-;7327:107;;;7385:38;;7412:10;;-1:-1:-1;;;;;7385:38:123;;;7397:4;;7385:38;;;;;7258:182;;:::o;7446:186::-;7520:6;:12;;;;;;;;;;:36;;7548:7;7520:27;:36::i;:::-;7516:110;;;7577:38;;7604:10;;-1:-1:-1;;;;;7577:38:123;;;7589:4;;7577:38;;;;;7446:186;;:::o;966:167:65:-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;8583:297:59:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;-1:-1:-1;;;;;8791:18:59;;;;;;:9;:18;;;;;;:30;;8814:6;8791:22;:30::i;:::-;-1:-1:-1;;;;;8770:18:59;;;;;;:9;:18;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;-1:-1:-1;;;;;9284:21:59;;;;10885:3:31;9275:8:59;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;-1:-1:-1;;;;;9435:18:59;;;;;;:9;:18;;;;;;:65;;9458:6;12329:3:31;9435:22:59;:65::i;:::-;-1:-1:-1;;;;;9414:18:59;;;;;;:9;:18;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;-1:-1:-1;;;;;9567:37:59;;;;;;;;;;;;9200:411;;:::o;4648:199:62:-;4750:18;;4722:7;;4741:58;;4750:26;-1:-1:-1;5662:3:31;4741:8:62;:58::i;:::-;4816:24;4829:3;4834:5;4816:12;:24::i;3977:134::-;-1:-1:-1;;;;;4080:19:62;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;4192:114::-;4281:18;;4192:114::o;3803:419:47:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:47;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:47:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:31;2487:8:47;:63::i;:::-;-1:-1:-1;;;;;;;;2884:19:47;;;;;;;:10;:19;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:47:o;2386:188:58:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2483:83:58;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;2429:1467:62:-;-1:-1:-1;;;;;2639:19:62;;2502:4;2639:19;;;:12;;;:19;;;;;;2673:15;;2669:1221;;3114:18;;3066:14;;;;;3114:22;3236:26;;;3232:389;;3282:17;3302:3;:11;;3314:9;3302:22;;;;;;;;;;;;;;;;;;3424:26;;-1:-1:-1;;;;;3302:22:62;;;;-1:-1:-1;3302:22:62;;3424:3;;3436:13;;3424:26;;;;;;;;;;;;;;;;;;:38;;;;-1:-1:-1;;;;;3424:38:62;;;;;;3536:23;;;;;;-1:-1:-1;3536:12:62;;;:23;;;;;;3562:17;;;3536:43;;3232:389;3699:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3791:19:62;;;;3699:17;3791:12;;;:19;;;;;;3784:26;;;;3699:17;-1:-1:-1;3825:11:62;;-1:-1:-1;;;3825:11:62;2669:1221;3874:5;3867:12;;;;;3870:94:59;3937:12;:20;3870:94::o;1404:121:65:-;1462:7;1488:30;1492:1;1495;5194::31;1488:3:65;:30::i;5212:135:62:-;5296:7;5322:3;:11;;5334:5;5322:18;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5322:18:62;;5212:135;-1:-1:-1;;;5212:135:62:o;3199:183:58:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:47:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:31;3082:8:47;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:47;;;;;;-1:-1:-1;;;;;;;3728:30:47;;;;;;:61;;;3782:7;-1:-1:-1;;;;;3762:27:47;:16;-1:-1:-1;;;;;3762:27:47;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:47:o;3433:187:58:-;3595:9;;3570:44::o;1459:126:31:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DOMAIN_SEPARATOR()":"3644e515","MINTER_ROLE()":"d5391393","SNAPSHOT_ROLE()":"7028e2cd","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","snapshot()":"9711715a","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Snapshot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNAPSHOT_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestBalancerToken.sol\":\"TestBalancerToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/test/TestAccessControl.sol\":{\"keccak256\":\"0xd7e1e3bdde3a149dfc57de01e4d2fef1a3624af436ae95dfe444d8bfb25772b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1f209648a170f1cb287cc462a78a1733e027c14026bb052a4b8eb372c97d665\",\"dweb:/ipfs/QmYCg7YsmwzAzxLChiek7kFysvqNvSTi6wCeGvwGiYCksT\"]},\"contracts/test/TestBalancerToken.sol\":{\"keccak256\":\"0x42c98a8bdc6fdad15f90bb2944c47afc1cbdb5b347047ff05301e73fd7485385\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1a87bf1323acdbb16eaf4615e1ee37e8e4e7f40a63a2c681e613ee88a57d151f\",\"dweb:/ipfs/QmRX15CoExSnvQB6SXrBC2ee48nfpb3JzvVPXAbdj99Jn9\"]}},\"version\":1}"}},"contracts/test/TestFeeDistributor.sol":{"TestFeeDistributor":{"abi":[{"inputs":[{"internalType":"contract IVotingEscrow","name":"votingEscrow","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"OnlyCallerOptIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastCheckpointTimestamp","type":"uint256"}],"name":"TokenCheckpointed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"userTokenTimeCursor","type":"uint256"}],"name":"TokensClaimed","type":"event"},{"inputs":[],"name":"checkpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"checkpointToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"checkpointTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkpointUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"claimToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"claimTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"depositTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenLastBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getTokensDistributedInWeek","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getTotalSupplyAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getUserBalanceAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserLastEpochCheckpointed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getUserTokenTimeCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotingEscrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isOnlyCallerEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setOnlyCallerCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"setOnlyCallerCheckWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101206040523480156200001257600080fd5b50604051620027af380380620027af8339810160408190526200003591620001d5565b604080518082018252600e81526d2332b2a234b9ba3934b13aba37b960911b602080830191825283518085019094526001808552603160f81b9185019182529251909120608052915190912060a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526002556001600160601b0319606083901b1660e0528181620000ca81620001c9565b90506000620000d942620001c9565b905080821015620001075760405162461bcd60e51b8152600401620000fe9062000228565b60405180910390fd5b80821415620001b55760405163bd85b03960e01b81526000906001600160a01b0385169063bd85b0399062000141908590600401620002a5565b60206040518083038186803b1580156200015a57600080fd5b505afa1580156200016f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019591906200020f565b11620001b55760405162461bcd60e51b8152600401620000fe906200025d565b5061010081905260035550620002ae915050565b62093a80908190040290565b60008060408385031215620001e8578182fd5b82516001600160a01b0381168114620001ff578283fd5b6020939093015192949293505050565b60006020828403121562000221578081fd5b5051919050565b6020808252818101527f43616e6e6f74207374617274206265666f72652063757272656e74207765656b604082015260600190565b60208082526028908201527f5a65726f20746f74616c20737570706c7920726573756c747320696e206c6f736040820152677420746f6b656e7360c01b606082015260800190565b90815260200190565b60805160a05160c05160e05160601c610100516124916200031e6000398061097b5280610acd5280610b325280610e8852508061035c52806108aa5280610a3d5280610c3852806113a1528061145b52806118955250806117665250806117a852508061178752506124916000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806388720467116100e3578063ca31879d1161008c578063e811f44b11610066578063e811f44b1461032c578063ed24911d1461033f578063fcaa54ee146103475761018d565b8063ca31879d146102f3578063d3dc4ca114610306578063de681faf146103195761018d565b8063a1648aa5116100bd578063a1648aa5146102b8578063acbc1428146102d8578063c2c4c5c1146102eb5761018d565b8063887204671461027257806390193b7c14610292578063905d10ac146102a55761018d565b80633902b9bc116101455780638050a7ee1161011f5780638050a7ee1461024457806382aa5ad414610257578063876e69a11461025f5761018d565b80633902b9bc1461020b5780634f3c50901461021e5780637b8d6221146102315761018d565b80632308805b116101765780632308805b146101c5578063286d5e7f146101e5578063338b5dea146101f85761018d565b806308b0308a1461019257806314866e08146101b0575b600080fd5b61019a61035a565b6040516101a79190612187565b60405180910390f35b6101c36101be366004611dec565b61037e565b005b6101d86101d3366004611dec565b61039a565b6040516101a7919061225f565b6101d86101f3366004611dec565b6103db565b6101c3610206366004611f62565b61041c565b6101c3610219366004611dec565b61045b565b6101d861022c366004612105565b61046e565b6101c361023f366004611fcd565b610480565b6101d8610252366004611f2a565b610556565b6101d861056b565b6101d861026d366004611dec565b610571565b610285610280366004611e08565b6105a2565b6040516101a7919061221c565b6101d86102a0366004611dec565b610685565b6101c36102b3366004611f8d565b6106a0565b6102cb6102c6366004611dec565b6106d5565b6040516101a79190612254565b6101d86102e6366004611dec565b6106f3565b6101c3610724565b6101d8610301366004611f2a565b61073e565b6101d8610314366004611f62565b610786565b6101d8610327366004611f62565b6107ae565b6101c361033a366004612036565b6107d6565b6101d86107e0565b6101c3610355366004611e5b565b6107ef565b7f000000000000000000000000000000000000000000000000000000000000000090565b610386610860565b61038f81610877565b610397610e06565b50565b6001600160a01b031660009081526005602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b6001600160a01b031660009081526007602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b610424610860565b61042f826000610e0d565b6104446001600160a01b038316333084611210565b61044f826001610e0d565b610457610e06565b5050565b610463610860565b61038f816001610e0d565b60009081526004602052604090205490565b610488610860565b61049283826112b3565b8260005b81811015610546576104c98686838181106104ad57fe5b90506020020160208101906104c29190611dec565b6000610e0d565b61051333308686858181106104da57fe5b905060200201358989868181106104ed57fe5b90506020020160208101906105029190611dec565b6001600160a01b0316929190611210565b61053e86868381811061052257fe5b90506020020160208101906105379190611dec565b6001610e0d565b600101610496565b5050610550610e06565b50505050565b600061056283836112c0565b90505b92915050565b60035490565b6001600160a01b031660009081526007602052604090205468010000000000000000900467ffffffffffffffff1690565b60606105ac610860565b836105b68161133e565b6105be611376565b6105c785610877565b8260608167ffffffffffffffff811180156105e157600080fd5b5060405190808252806020026020018201604052801561060b578160200160208202803683370190505b50905060005b82811015610671576106288787838181106104ad57fe5b6106528888888481811061063857fe5b905060200201602081019061064d9190611dec565b611506565b82828151811061065e57fe5b6020908102919091010152600101610611565b509250505061067e610e06565b9392505050565b6001600160a01b031660009081526020819052604090205490565b6106a8610860565b8060005b818110156106cb576106c384848381811061052257fe5b6001016106ac565b5050610457610e06565b6001600160a01b031660009081526001602052604090205460ff1690565b6001600160a01b031660009081526005602052604090205468010000000000000000900467ffffffffffffffff1690565b61072c610860565b610734611376565b61073c610e06565b565b6000610748610860565b826107528161133e565b61075a611376565b61076384610877565b61076e836000610e0d565b600061077a8585611506565b92505050610565610e06565b6001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6001600160a01b03919091166000908152600860209081526040808320938352929052205490565b61039733826116e2565b60006107ea611762565b905090565b60007fbd291ffccec065968fe20c5f8debdad73ab50837733f357eeae8814178015a90848461081d87610685565b6040516020016108309493929190612268565b6040516020818303038152906040528051906020012090506108568482846101f86117ff565b61055084846116e2565b61087160028054141561019061182c565b60028055565b6040517f010ae7570000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063010ae757906108df908590600401612187565b60206040518083038186803b1580156108f757600080fd5b505afa15801561090b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092f919061211d565b90508061093c5750610397565b6001600160a01b0382166000908152600760205260408120805490916801000000000000000090910467ffffffffffffffff1690816109a9576109a2857f000000000000000000000000000000000000000000000000000000000000000060008761183a565b90506109fc565b4282106109b95750505050610397565b50815470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16601481850311156109fc576109f98583838761183a565b90505b80610a05575060015b610a0d611d63565b6040517f28d09d470000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610a749089908690600401612203565b60806040518083038186803b158015610a8c57600080fd5b505afa158015610aa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac491906120ae565b905082610b98577f00000000000000000000000000000000000000000000000000000000000000004211610b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490612388565b60405180910390fd5b610b637f0000000000000000000000000000000000000000000000000000000000000000610b5e836040015161194e565b61195e565b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff821617855592505b610ba0611d63565b60005b6032811015610d6b5782604001518510158015610bc05750868411155b15610cc75760018401935082915086841115610c085760405180608001604052806000600f0b81526020016000600f0b81526020016000815260200160008152509250610cc2565b6040517f28d09d470000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610c6f908b908890600401612203565b60806040518083038186803b158015610c8757600080fd5b505afa158015610c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbf91906120ae565b92505b610d63565b428510610cd357610d6b565b6000826040015186039050600081846020015102600f0b8460000151600f0b13610cfe576000610d0f565b81846020015102846000015103600f0b5b905080158015610d1e57508886115b15610d3557610d2c4261194e565b96505050610d6b565b6001600160a01b038a1660009081526008602090815260408083208a84529091529020555062093a80909401935b600101610ba3565b505083546fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9290920167ffffffffffffffff90811670010000000000000000000000000000000002929092177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff1668010000000000000000939092169290920217909155505050565b6001600255565b6001600160a01b0382166000908152600560205260408120805490916801000000000000000090910467ffffffffffffffff169081610ee457429150610e524261196a565b83547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff919091161783557f00000000000000000000000000000000000000000000000000000000000000004211610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490612388565b610f36565b814203905083610f36576000610ef98361196a565b610f024261196a565b14905060006201518042610f154261194e565b03109050818015610f24575080155b15610f33575050505050610457565b50505b82547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff16021783556040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038716906370a0823190610fbb903090600401612187565b60206040518083038186803b158015610fd357600080fd5b505afa158015610fe7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100b919061211d565b845490915060009061104490839070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611976565b905080611055575050505050610457565b6fffffffffffffffffffffffffffffffff82111561109f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490612351565b84546fffffffffffffffffffffffffffffffff80841670010000000000000000000000000000000002911617855560006110d88561196a565b6001600160a01b038916600090815260066020526040812091925090815b60148110156111c8578362093a8001925082421015611166578615801561111c57508742145b1561113a576000848152602083905260409020805486019055611161565b8688420386028161114757fe5b600086815260208590526040902080549290910490910190555b6111c8565b8615801561117357508783145b156111915760008481526020839052604090208054860190556111b8565b8688840386028161119e57fe5b600086815260208590526040902080549290910490910190555b91965086925082916001016110f6565b507f9b7f1a85a4c9b4e59e1b6527d9969c50cdfb3a1a467d0c4a51fb0ed8bf07f1308a85896040516111fc93929190612330565b60405180910390a150505050505050505050565b610550846323b872dd60e01b8585856040516024016112319392919061219b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611984565b610457818314606761182c565b6001600160a01b03808316600090815260096020908152604080832093851683529290529081205480156112f5579050610565565b6001600160a01b03808516600090815260076020908152604080832054938716835260059091529020546113369167ffffffffffffffff908116911661195e565b949350505050565b6001600160a01b03811660009081526001602052604090205460ff161561039757610397336001600160a01b0383161461019161182c565b60035460006113844261196a565b90508082118061139357504281145b1561139f57505061073c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c2c4c5c16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156113fa57600080fd5b505af115801561140e573d6000803e3d6000fd5b5050505060005b60148110156114ff578183111561142b576114ff565b6040517fbd85b0390000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd85b0399061149090869060040161225f565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e0919061211d565b60008481526004602052604090205562093a8090920191600101611415565b5050600355565b6001600160a01b03811660009081526005602052604081208161152985856112c0565b6003546001600160a01b0387166000908152600760205260408120549293509161159c9161157691611571919068010000000000000000900467ffffffffffffffff16611a24565b61194e565b84546115979068010000000000000000900467ffffffffffffffff1661196a565b611a24565b6001600160a01b038087166000908152600660209081526040808320938b16835260089091528120929350909190805b6014811015611620578486106115e157611620565b6000868152600460209081526040808320548683528184205492889052922054028161160957fe5b62093a8097909701960491909101906001016115cc565b506001600160a01b03808a166000908152600960209081526040808320938c1683529290522085905580156116d65785546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000808304821684900382160291161786556116986001600160a01b0389168a83611a30565b7fff097c7d8b1957a4ff09ef1361b5fb54dcede3941ba836d0beb9d10bec725de6898983886040516116cd94939291906121da565b60405180910390a15b98975050505050505050565b6001600160a01b0382166000908152600160205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016831515179055517fac9874a7a931a3f5c9f202c6d9cf40de5d21506993c9f9c38ca8265add89584c9061175690849084906121bf565b60405180910390a15050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006117cf611a54565b306040516020016117e495949392919061228e565b60405160208183030381529060405280519060200120905090565b6105508484847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85611a58565b816104575761045781611aaf565b60008282825b60808110156119425781831061185557611942565b6002828401810104611865611d63565b6040517f28d09d470000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906328d09d47906118cc908d908690600401612203565b60806040518083038186803b1580156118e457600080fd5b505afa1580156118f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191c91906120ae565b90508881604001511161193157819450611938565b6001820393505b5050600101611840565b50909695505050505050565b600061056562093a7f830161196a565b80820390821002900390565b62093a80908190040290565b600061056283836001611ad9565b60006060836001600160a01b0316836040516119a09190612135565b6000604051808303816000865af19150503d80600081146119dd576040519150601f19603f3d011682016040523d82523d6000602084013e6119e2565b606091505b509150915060008214156119fa573d6000803e3d6000fd5b610550815160001480611a1c575081806020019051810190611a1c9190612052565b6101a261182c565b80820390821102900390565b611a4f8363a9059cbb60e01b8484604051602401611231929190612203565b505050565b4690565b6000611a6385611aef565b9050611a79611a73878387611b28565b8361182c565b611a88428410156101b861182c565b5050506001600160a01b039092166000908152602081905260409020805460010190555050565b610397817f42414c0000000000000000000000000000000000000000000000000000000000611c16565b6000611ae8848411158361182c565b5050900390565b6000611af9611762565b82604051602001611b0b929190612151565b604051602081830303815290604052805190602001209050919050565b6000611b3c846001600160a01b0316611c91565b15611c04576040517f1626ba7e00000000000000000000000000000000000000000000000000000000808252906001600160a01b03861690631626ba7e90611b8a90879087906004016122ba565b60206040518083038186803b158015611ba257600080fd5b505afa158015611bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bda919061206e565b7fffffffff000000000000000000000000000000000000000000000000000000001614905061067e565b611c0f848484611c97565b905061067e565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b3b151590565b6000611ca982516041146101b961182c565b60208281015160408085015160608601518251600080825295019283905292939092811a91600190611ce2908990859088908890612312565b6020604051602081039080840390855afa158015611d04573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906116d65750876001600160a01b0316816001600160a01b03161498975050505050505050565b60405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525090565b60008083601f840112611da2578182fd5b50813567ffffffffffffffff811115611db9578182fd5b6020830191508360208083028501011115611dd357600080fd5b9250929050565b8051600f81900b811461056557600080fd5b600060208284031215611dfd578081fd5b813561067e81612438565b600080600060408486031215611e1c578182fd5b8335611e2781612438565b9250602084013567ffffffffffffffff811115611e42578283fd5b611e4e86828701611d91565b9497909650939450505050565b600080600060608486031215611e6f578283fd5b8335611e7a81612438565b9250602084810135611e8b8161244d565b9250604085013567ffffffffffffffff80821115611ea7578384fd5b818701915087601f830112611eba578384fd5b813581811115611ec8578485fd5b611ef8847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016123e5565b91508082528884828501011115611f0d578485fd5b808484018584013784848284010152508093505050509250925092565b60008060408385031215611f3c578182fd5b8235611f4781612438565b91506020830135611f5781612438565b809150509250929050565b60008060408385031215611f74578182fd5b8235611f7f81612438565b946020939093013593505050565b60008060208385031215611f9f578182fd5b823567ffffffffffffffff811115611fb5578283fd5b611fc185828601611d91565b90969095509350505050565b60008060008060408587031215611fe2578081fd5b843567ffffffffffffffff80821115611ff9578283fd5b61200588838901611d91565b9096509450602087013591508082111561201d578283fd5b5061202a87828801611d91565b95989497509550505050565b600060208284031215612047578081fd5b813561067e8161244d565b600060208284031215612063578081fd5b815161067e8161244d565b60006020828403121561207f578081fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461067e578182fd5b6000608082840312156120bf578081fd5b6120c960806123e5565b6120d38484611dda565b81526120e28460208501611dda565b602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612116578081fd5b5035919050565b60006020828403121561212e578081fd5b5051919050565b6000825161214781846020870161240c565b9190910192915050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561194257835183529284019291840191600101612238565b901515815260200190565b90815260200190565b9384526001600160a01b0392909216602084015215156040830152606082015260800190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b60008382526040602083015282518060408401526122df81606085016020870161240c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b93845260ff9290921660208401526040830152606082015260800190565b6001600160a01b039390931683526020830191909152604082015260600190565b6020808252601e908201527f4d6178696d756d20746f6b656e2062616c616e63652065786365656465640000604082015260600190565b60208082526024908201527f46656520646973747269627574696f6e20686173206e6f74207374617274656460408201527f2079657400000000000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff8111828210171561240457600080fd5b604052919050565b60005b8381101561242757818101518382015260200161240f565b838111156105505750506000910152565b6001600160a01b038116811461039757600080fd5b801515811461039757600080fdfea26469706673582212202d70ab73116986917a5e903c96ac6fc54acbc4ae72ef90b05c76ae9f48cc9ba164736f6c63430007010033","opcodes":"PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x27AF CODESIZE SUB DUP1 PUSH3 0x27AF DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x1D5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x2332B2A234B9BA3934B13ABA37B9 PUSH1 0x91 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x1 DUP1 DUP6 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP2 DUP6 ADD SWAP2 DUP3 MSTORE SWAP3 MLOAD SWAP1 SWAP2 KECCAK256 PUSH1 0x80 MSTORE SWAP2 MLOAD SWAP1 SWAP2 KECCAK256 PUSH1 0xA0 MSTORE PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0xE0 MSTORE DUP2 DUP2 PUSH3 0xCA DUP2 PUSH3 0x1C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xD9 TIMESTAMP PUSH3 0x1C9 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH3 0x107 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xFE SWAP1 PUSH3 0x228 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 EQ ISZERO PUSH3 0x1B5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xBD85B039 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBD85B039 SWAP1 PUSH3 0x141 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH3 0x2A5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x16F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x195 SWAP2 SWAP1 PUSH3 0x20F JUMP JUMPDEST GT PUSH3 0x1B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xFE SWAP1 PUSH3 0x25D JUMP JUMPDEST POP PUSH2 0x100 DUP2 SWAP1 MSTORE PUSH1 0x3 SSTORE POP PUSH3 0x2AE SWAP2 POP POP JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1E8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1FF JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x221 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x43616E6E6F74207374617274206265666F72652063757272656E74207765656B PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x5A65726F20746F74616C20737570706C7920726573756C747320696E206C6F73 PUSH1 0x40 DUP3 ADD MSTORE PUSH8 0x7420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH2 0x2491 PUSH3 0x31E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x97B MSTORE DUP1 PUSH2 0xACD MSTORE DUP1 PUSH2 0xB32 MSTORE DUP1 PUSH2 0xE88 MSTORE POP DUP1 PUSH2 0x35C MSTORE DUP1 PUSH2 0x8AA MSTORE DUP1 PUSH2 0xA3D MSTORE DUP1 PUSH2 0xC38 MSTORE DUP1 PUSH2 0x13A1 MSTORE DUP1 PUSH2 0x145B MSTORE DUP1 PUSH2 0x1895 MSTORE POP DUP1 PUSH2 0x1766 MSTORE POP DUP1 PUSH2 0x17A8 MSTORE POP DUP1 PUSH2 0x1787 MSTORE POP PUSH2 0x2491 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x88720467 GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0xCA31879D GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE811F44B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xE811F44B EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x33F JUMPI DUP1 PUSH4 0xFCAA54EE EQ PUSH2 0x347 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0xCA31879D EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xD3DC4CA1 EQ PUSH2 0x306 JUMPI DUP1 PUSH4 0xDE681FAF EQ PUSH2 0x319 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0xA1648AA5 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xA1648AA5 EQ PUSH2 0x2B8 JUMPI DUP1 PUSH4 0xACBC1428 EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x2EB JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x88720467 EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0x905D10AC EQ PUSH2 0x2A5 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x3902B9BC GT PUSH2 0x145 JUMPI DUP1 PUSH4 0x8050A7EE GT PUSH2 0x11F JUMPI DUP1 PUSH4 0x8050A7EE EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x82AA5AD4 EQ PUSH2 0x257 JUMPI DUP1 PUSH4 0x876E69A1 EQ PUSH2 0x25F JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x3902B9BC EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x4F3C5090 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x7B8D6221 EQ PUSH2 0x231 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x2308805B GT PUSH2 0x176 JUMPI DUP1 PUSH4 0x2308805B EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0x286D5E7F EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x338B5DEA EQ PUSH2 0x1F8 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x14866E08 EQ PUSH2 0x1B0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A PUSH2 0x35A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x2187 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C3 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x37E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D8 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x225F JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x3DB JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F62 JUMP JUMPDEST PUSH2 0x41C JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x219 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x45B JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x22C CALLDATASIZE PUSH1 0x4 PUSH2 0x2105 JUMP JUMPDEST PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x23F CALLDATASIZE PUSH1 0x4 PUSH2 0x1FCD JUMP JUMPDEST PUSH2 0x480 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x252 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x56B JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x26D CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x571 JUMP JUMPDEST PUSH2 0x285 PUSH2 0x280 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E08 JUMP JUMPDEST PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x221C JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x2A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x685 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x2B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F8D JUMP JUMPDEST PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x2CB PUSH2 0x2C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x6D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x2254 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x2E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x724 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x301 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x73E JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x314 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F62 JUMP JUMPDEST PUSH2 0x786 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x327 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F62 JUMP JUMPDEST PUSH2 0x7AE JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x33A CALLDATASIZE PUSH1 0x4 PUSH2 0x2036 JUMP JUMPDEST PUSH2 0x7D6 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x355 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E5B JUMP JUMPDEST PUSH2 0x7EF JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x386 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x38F DUP2 PUSH2 0x877 JUMP JUMPDEST PUSH2 0x397 PUSH2 0xE06 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x424 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x42F DUP3 PUSH1 0x0 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x444 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x44F DUP3 PUSH1 0x1 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x457 PUSH2 0xE06 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x463 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x38F DUP2 PUSH1 0x1 PUSH2 0xE0D JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x488 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x492 DUP4 DUP3 PUSH2 0x12B3 JUMP JUMPDEST DUP3 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x546 JUMPI PUSH2 0x4C9 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x4AD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4C2 SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x513 CALLER ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x4DA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP10 DUP10 DUP7 DUP2 DUP2 LT PUSH2 0x4ED JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x502 SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x53E DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x522 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x537 SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH1 0x1 PUSH2 0xE0D JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x496 JUMP JUMPDEST POP POP PUSH2 0x550 PUSH2 0xE06 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x562 DUP4 DUP4 PUSH2 0x12C0 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5AC PUSH2 0x860 JUMP JUMPDEST DUP4 PUSH2 0x5B6 DUP2 PUSH2 0x133E JUMP JUMPDEST PUSH2 0x5BE PUSH2 0x1376 JUMP JUMPDEST PUSH2 0x5C7 DUP6 PUSH2 0x877 JUMP JUMPDEST DUP3 PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x60B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x671 JUMPI PUSH2 0x628 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x4AD JUMPI INVALID JUMPDEST PUSH2 0x652 DUP9 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x638 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x64D SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x1506 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x65E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x611 JUMP JUMPDEST POP SWAP3 POP POP POP PUSH2 0x67E PUSH2 0xE06 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6A8 PUSH2 0x860 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6CB JUMPI PUSH2 0x6C3 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x522 JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x6AC JUMP JUMPDEST POP POP PUSH2 0x457 PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x72C PUSH2 0x860 JUMP JUMPDEST PUSH2 0x734 PUSH2 0x1376 JUMP JUMPDEST PUSH2 0x73C PUSH2 0xE06 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x748 PUSH2 0x860 JUMP JUMPDEST DUP3 PUSH2 0x752 DUP2 PUSH2 0x133E JUMP JUMPDEST PUSH2 0x75A PUSH2 0x1376 JUMP JUMPDEST PUSH2 0x763 DUP5 PUSH2 0x877 JUMP JUMPDEST PUSH2 0x76E DUP4 PUSH1 0x0 PUSH2 0xE0D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77A DUP6 DUP6 PUSH2 0x1506 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x565 PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x397 CALLER DUP3 PUSH2 0x16E2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7EA PUSH2 0x1762 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xBD291FFCCEC065968FE20C5F8DEBDAD73AB50837733F357EEAE8814178015A90 DUP5 DUP5 PUSH2 0x81D DUP8 PUSH2 0x685 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x830 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2268 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x856 DUP5 DUP3 DUP5 PUSH2 0x1F8 PUSH2 0x17FF JUMP JUMPDEST PUSH2 0x550 DUP5 DUP5 PUSH2 0x16E2 JUMP JUMPDEST PUSH2 0x871 PUSH1 0x2 DUP1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x2 DUP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x10AE75700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x10AE757 SWAP1 PUSH2 0x8DF SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2187 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x90B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x92F SWAP2 SWAP1 PUSH2 0x211D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x93C JUMPI POP PUSH2 0x397 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0x9A9 JUMPI PUSH2 0x9A2 DUP6 PUSH32 0x0 PUSH1 0x0 DUP8 PUSH2 0x183A JUMP JUMPDEST SWAP1 POP PUSH2 0x9FC JUMP JUMPDEST TIMESTAMP DUP3 LT PUSH2 0x9B9 JUMPI POP POP POP POP PUSH2 0x397 JUMP JUMPDEST POP DUP2 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 DUP2 DUP6 SUB GT ISZERO PUSH2 0x9FC JUMPI PUSH2 0x9F9 DUP6 DUP4 DUP4 DUP8 PUSH2 0x183A JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH2 0xA05 JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0xA0D PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xA74 SWAP1 DUP10 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2203 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAC4 SWAP2 SWAP1 PUSH2 0x20AE JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0xB98 JUMPI PUSH32 0x0 TIMESTAMP GT PUSH2 0xB2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB24 SWAP1 PUSH2 0x2388 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB63 PUSH32 0x0 PUSH2 0xB5E DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x194E JUMP JUMPDEST PUSH2 0x195E JUMP JUMPDEST DUP5 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND OR DUP6 SSTORE SWAP3 POP JUMPDEST PUSH2 0xBA0 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x32 DUP2 LT ISZERO PUSH2 0xD6B JUMPI DUP3 PUSH1 0x40 ADD MLOAD DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xBC0 JUMPI POP DUP7 DUP5 GT ISZERO JUMPDEST ISZERO PUSH2 0xCC7 JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP DUP3 SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0xC08 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP PUSH2 0xCC2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xC6F SWAP1 DUP12 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2203 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC9B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCBF SWAP2 SWAP1 PUSH2 0x20AE JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH2 0xD63 JUMP JUMPDEST TIMESTAMP DUP6 LT PUSH2 0xCD3 JUMPI PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 ADD MLOAD DUP7 SUB SWAP1 POP PUSH1 0x0 DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL PUSH1 0xF SIGNEXTEND DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xF SIGNEXTEND SGT PUSH2 0xCFE JUMPI PUSH1 0x0 PUSH2 0xD0F JUMP JUMPDEST DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL DUP5 PUSH1 0x0 ADD MLOAD SUB PUSH1 0xF SIGNEXTEND JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0xD1E JUMPI POP DUP9 DUP7 GT JUMPDEST ISZERO PUSH2 0xD35 JUMPI PUSH2 0xD2C TIMESTAMP PUSH2 0x194E JUMP JUMPDEST SWAP7 POP POP POP PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE POP PUSH3 0x93A80 SWAP1 SWAP5 ADD SWAP4 JUMPDEST PUSH1 0x1 ADD PUSH2 0xBA3 JUMP JUMPDEST POP POP DUP4 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 ADD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP3 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SWAP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0xEE4 JUMPI TIMESTAMP SWAP2 POP PUSH2 0xE52 TIMESTAMP PUSH2 0x196A JUMP JUMPDEST DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR DUP4 SSTORE PUSH32 0x0 TIMESTAMP GT PUSH2 0xEDF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB24 SWAP1 PUSH2 0x2388 JUMP JUMPDEST PUSH2 0xF36 JUMP JUMPDEST DUP2 TIMESTAMP SUB SWAP1 POP DUP4 PUSH2 0xF36 JUMPI PUSH1 0x0 PUSH2 0xEF9 DUP4 PUSH2 0x196A JUMP JUMPDEST PUSH2 0xF02 TIMESTAMP PUSH2 0x196A JUMP JUMPDEST EQ SWAP1 POP PUSH1 0x0 PUSH3 0x15180 TIMESTAMP PUSH2 0xF15 TIMESTAMP PUSH2 0x194E JUMP JUMPDEST SUB LT SWAP1 POP DUP2 DUP1 ISZERO PUSH2 0xF24 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xF33 JUMPI POP POP POP POP POP PUSH2 0x457 JUMP JUMPDEST POP POP JUMPDEST DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 TIMESTAMP PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xFBB SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2187 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x100B SWAP2 SWAP1 PUSH2 0x211D JUMP JUMPDEST DUP5 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1044 SWAP1 DUP4 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1976 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1055 JUMPI POP POP POP POP POP PUSH2 0x457 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x109F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB24 SWAP1 PUSH2 0x2351 JUMP JUMPDEST DUP5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP2 AND OR DUP6 SSTORE PUSH1 0x0 PUSH2 0x10D8 DUP6 PUSH2 0x196A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP3 POP SWAP1 DUP2 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x11C8 JUMPI DUP4 PUSH3 0x93A80 ADD SWAP3 POP DUP3 TIMESTAMP LT ISZERO PUSH2 0x1166 JUMPI DUP7 ISZERO DUP1 ISZERO PUSH2 0x111C JUMPI POP DUP8 TIMESTAMP EQ JUMPDEST ISZERO PUSH2 0x113A JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x1161 JUMP JUMPDEST DUP7 DUP9 TIMESTAMP SUB DUP7 MUL DUP2 PUSH2 0x1147 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH2 0x11C8 JUMP JUMPDEST DUP7 ISZERO DUP1 ISZERO PUSH2 0x1173 JUMPI POP DUP8 DUP4 EQ JUMPDEST ISZERO PUSH2 0x1191 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x11B8 JUMP JUMPDEST DUP7 DUP9 DUP5 SUB DUP7 MUL DUP2 PUSH2 0x119E JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST SWAP2 SWAP7 POP DUP7 SWAP3 POP DUP3 SWAP2 PUSH1 0x1 ADD PUSH2 0x10F6 JUMP JUMPDEST POP PUSH32 0x9B7F1A85A4C9B4E59E1B6527D9969C50CDFB3A1A467D0C4A51FB0ED8BF07F130 DUP11 DUP6 DUP10 PUSH1 0x40 MLOAD PUSH2 0x11FC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2330 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x550 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1231 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x219B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1984 JUMP JUMPDEST PUSH2 0x457 DUP2 DUP4 EQ PUSH1 0x67 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x12F5 JUMPI SWAP1 POP PUSH2 0x565 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP8 AND DUP4 MSTORE PUSH1 0x5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x1336 SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND PUSH2 0x195E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x397 JUMPI PUSH2 0x397 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ PUSH2 0x191 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 PUSH2 0x1384 TIMESTAMP PUSH2 0x196A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT DUP1 PUSH2 0x1393 JUMPI POP TIMESTAMP DUP2 EQ JUMPDEST ISZERO PUSH2 0x139F JUMPI POP POP PUSH2 0x73C JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC2C4C5C1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x140E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x14FF JUMPI DUP2 DUP4 GT ISZERO PUSH2 0x142B JUMPI PUSH2 0x14FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xBD85B039 SWAP1 PUSH2 0x1490 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x225F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14E0 SWAP2 SWAP1 PUSH2 0x211D JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH3 0x93A80 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1415 JUMP JUMPDEST POP POP PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 PUSH2 0x1529 DUP6 DUP6 PUSH2 0x12C0 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP2 PUSH2 0x159C SWAP2 PUSH2 0x1576 SWAP2 PUSH2 0x1571 SWAP2 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1A24 JUMP JUMPDEST PUSH2 0x194E JUMP JUMPDEST DUP5 SLOAD PUSH2 0x1597 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x196A JUMP JUMPDEST PUSH2 0x1A24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SWAP3 SWAP4 POP SWAP1 SWAP2 SWAP1 DUP1 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x1620 JUMPI DUP5 DUP7 LT PUSH2 0x15E1 JUMPI PUSH2 0x1620 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP7 DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD SWAP3 DUP9 SWAP1 MSTORE SWAP3 KECCAK256 SLOAD MUL DUP2 PUSH2 0x1609 JUMPI INVALID JUMPDEST PUSH3 0x93A80 SWAP8 SWAP1 SWAP8 ADD SWAP7 DIV SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x15CC JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP6 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x16D6 JUMPI DUP6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP5 SWAP1 SUB DUP3 AND MUL SWAP2 AND OR DUP7 SSTORE PUSH2 0x1698 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP11 DUP4 PUSH2 0x1A30 JUMP JUMPDEST PUSH32 0xFF097C7D8B1957A4FF09EF1361B5FB54DCEDE3941BA836D0BEB9D10BEC725DE6 DUP10 DUP10 DUP4 DUP9 PUSH1 0x40 MLOAD PUSH2 0x16CD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x21DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0xAC9874A7A931A3F5C9F202C6D9CF40DE5D21506993C9F9C38CA8265ADD89584C SWAP1 PUSH2 0x1756 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x21BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x17CF PUSH2 0x1A54 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x17E4 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x228E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x550 DUP5 DUP5 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 PUSH2 0x1A58 JUMP JUMPDEST DUP2 PUSH2 0x457 JUMPI PUSH2 0x457 DUP2 PUSH2 0x1AAF JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP3 JUMPDEST PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1942 JUMPI DUP2 DUP4 LT PUSH2 0x1855 JUMPI PUSH2 0x1942 JUMP JUMPDEST PUSH1 0x2 DUP3 DUP5 ADD DUP2 ADD DIV PUSH2 0x1865 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0x18CC SWAP1 DUP14 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2203 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x191C SWAP2 SWAP1 PUSH2 0x20AE JUMP JUMPDEST SWAP1 POP DUP9 DUP2 PUSH1 0x40 ADD MLOAD GT PUSH2 0x1931 JUMPI DUP2 SWAP5 POP PUSH2 0x1938 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1840 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x565 PUSH3 0x93A7F DUP4 ADD PUSH2 0x196A JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 LT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x562 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1AD9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x19A0 SWAP2 SWAP1 PUSH2 0x2135 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x19DD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x19E2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x19FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x550 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1A1C JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1A1C SWAP2 SWAP1 PUSH2 0x2052 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x182C JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x1A4F DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1231 SWAP3 SWAP2 SWAP1 PUSH2 0x2203 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A63 DUP6 PUSH2 0x1AEF JUMP JUMPDEST SWAP1 POP PUSH2 0x1A79 PUSH2 0x1A73 DUP8 DUP4 DUP8 PUSH2 0x1B28 JUMP JUMPDEST DUP4 PUSH2 0x182C JUMP JUMPDEST PUSH2 0x1A88 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x182C JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x397 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1C16 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AE8 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x182C JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AF9 PUSH2 0x1762 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1B0B SWAP3 SWAP2 SWAP1 PUSH2 0x2151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B3C DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C91 JUMP JUMPDEST ISZERO PUSH2 0x1C04 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP1 DUP3 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x1626BA7E SWAP1 PUSH2 0x1B8A SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x22BA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BDA SWAP2 SWAP1 PUSH2 0x206E JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ SWAP1 POP PUSH2 0x67E JUMP JUMPDEST PUSH2 0x1C0F DUP5 DUP5 DUP5 PUSH2 0x1C97 JUMP JUMPDEST SWAP1 POP PUSH2 0x67E JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CA9 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x20 DUP3 DUP2 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD DUP3 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP6 ADD SWAP3 DUP4 SWAP1 MSTORE SWAP3 SWAP4 SWAP1 SWAP3 DUP2 BYTE SWAP2 PUSH1 0x1 SWAP1 PUSH2 0x1CE2 SWAP1 DUP10 SWAP1 DUP6 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x2312 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x16D6 JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1DA2 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1DB9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1DD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x565 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DFD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x67E DUP2 PUSH2 0x2438 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1E1C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1E27 DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E42 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1E4E DUP7 DUP3 DUP8 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1E6F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1E7A DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 DUP2 ADD CALLDATALOAD PUSH2 0x1E8B DUP2 PUSH2 0x244D JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1EA7 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1EBA JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1EC8 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1EF8 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x23E5 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP9 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1F0D JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY DUP5 DUP5 DUP3 DUP5 ADD ADD MSTORE POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F3C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1F47 DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1F57 DUP2 PUSH2 0x2438 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F74 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1F7F DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F9F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1FB5 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1FC1 DUP6 DUP3 DUP7 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1FE2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1FF9 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2005 DUP9 DUP4 DUP10 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x201D JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x202A DUP8 DUP3 DUP9 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2047 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x67E DUP2 PUSH2 0x244D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2063 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x67E DUP2 PUSH2 0x244D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x207F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x67E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20BF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x20C9 PUSH1 0x80 PUSH2 0x23E5 JUMP JUMPDEST PUSH2 0x20D3 DUP5 DUP5 PUSH2 0x1DDA JUMP JUMPDEST DUP2 MSTORE PUSH2 0x20E2 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1DDA JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2116 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x212E JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2147 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x240C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1942 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2238 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x22DF DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x240C JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6178696D756D20746F6B656E2062616C616E63652065786365656465640000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x46656520646973747269627574696F6E20686173206E6F742073746172746564 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2079657400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2427 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x240F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x550 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D PUSH17 0xAB73116986917A5E903C96AC6FC54ACBC4 0xAE PUSH19 0xEF90B05C76AE9F48CC9BA164736F6C63430007 ADD STOP CALLER ","sourceMap":"797:369:125:-:0;;;849:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2020:280:58;;;;;;;;;;;-1:-1:-1;;;2020:280:58;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2020:280:58;;;;;;2100:22;;;;;2085:37;;2150:25;;;;;2132:43;;2198:95;2185:108;;2175:7:63;:22;-1:-1:-1;;;;;;3661:28:82::1;::::0;;;;::::1;::::0;923:12:125;937:9;3712:30:82::1;937:9:125::0;3712:19:82::1;:30::i;:::-;3700:42:::0;-1:-1:-1;3752:19:82::1;3774:36;3794:15;3774:19;:36::i;:::-;3752:58;;3841:11;3828:9;:24;;3820:69;;;;-1:-1:-1::0;;;3820:69:82::1;;;;;;;:::i;:::-;;;;;;;;;3916:11;3903:9;:24;3899:434;;;4236:37;::::0;-1:-1:-1;;;4236:37:82;;4276:1:::1;::::0;-1:-1:-1;;;;;4236:24:82;::::1;::::0;::::1;::::0;:37:::1;::::0;4261:11;;4236:37:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;4228:94;;;;-1:-1:-1::0;;;4228:94:82::1;;;;;;;:::i;:::-;-1:-1:-1::0;4342:22:82::1;::::0;;;4374:11:::1;:23:::0;-1:-1:-1;797:369:125;;-1:-1:-1;;797:369:125;29871:196:82;30042:7;30030:19;;;;30029:31;;29871:196::o;331:443:-1:-;;;485:2;473:9;464:7;460:23;456:32;453:2;;;-1:-1;;491:12;453:2;105:13;;-1:-1;;;;;3425:54;;3651:57;;3641:2;;-1:-1;;3712:12;3641:2;676;726:22;;;;268:13;543:96;;268:13;;-1:-1;;;447:327::o;781:263::-;;896:2;884:9;875:7;871:23;867:32;864:2;;;-1:-1;;902:12;864:2;-1:-1;268:13;;858:186;-1:-1;858:186::o;1898:416::-;2098:2;2112:47;;;2083:18;;;3077:19;1312:34;3117:14;;;1292:55;1366:12;;;2069:245::o;2321:416::-;2521:2;2535:47;;;1617:2;2506:18;;;3077:19;1653:34;3117:14;;;1633:55;-1:-1;;;1708:12;;;1701:32;1752:12;;;2492:245::o;2744:222::-;1849:37;;;2871:2;2856:18;;2842:124::o;:::-;797:369:125;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"5935":[{"length":32,"start":6023}],"5937":[{"length":32,"start":6056}],"5939":[{"length":32,"start":5990}],"12390":[{"length":32,"start":860},{"length":32,"start":2218},{"length":32,"start":2621},{"length":32,"start":3128},{"length":32,"start":5025},{"length":32,"start":5211},{"length":32,"start":6293}],"12392":[{"length":32,"start":2427},{"length":32,"start":2765},{"length":32,"start":2866},{"length":32,"start":3720}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061018d5760003560e01c806388720467116100e3578063ca31879d1161008c578063e811f44b11610066578063e811f44b1461032c578063ed24911d1461033f578063fcaa54ee146103475761018d565b8063ca31879d146102f3578063d3dc4ca114610306578063de681faf146103195761018d565b8063a1648aa5116100bd578063a1648aa5146102b8578063acbc1428146102d8578063c2c4c5c1146102eb5761018d565b8063887204671461027257806390193b7c14610292578063905d10ac146102a55761018d565b80633902b9bc116101455780638050a7ee1161011f5780638050a7ee1461024457806382aa5ad414610257578063876e69a11461025f5761018d565b80633902b9bc1461020b5780634f3c50901461021e5780637b8d6221146102315761018d565b80632308805b116101765780632308805b146101c5578063286d5e7f146101e5578063338b5dea146101f85761018d565b806308b0308a1461019257806314866e08146101b0575b600080fd5b61019a61035a565b6040516101a79190612187565b60405180910390f35b6101c36101be366004611dec565b61037e565b005b6101d86101d3366004611dec565b61039a565b6040516101a7919061225f565b6101d86101f3366004611dec565b6103db565b6101c3610206366004611f62565b61041c565b6101c3610219366004611dec565b61045b565b6101d861022c366004612105565b61046e565b6101c361023f366004611fcd565b610480565b6101d8610252366004611f2a565b610556565b6101d861056b565b6101d861026d366004611dec565b610571565b610285610280366004611e08565b6105a2565b6040516101a7919061221c565b6101d86102a0366004611dec565b610685565b6101c36102b3366004611f8d565b6106a0565b6102cb6102c6366004611dec565b6106d5565b6040516101a79190612254565b6101d86102e6366004611dec565b6106f3565b6101c3610724565b6101d8610301366004611f2a565b61073e565b6101d8610314366004611f62565b610786565b6101d8610327366004611f62565b6107ae565b6101c361033a366004612036565b6107d6565b6101d86107e0565b6101c3610355366004611e5b565b6107ef565b7f000000000000000000000000000000000000000000000000000000000000000090565b610386610860565b61038f81610877565b610397610e06565b50565b6001600160a01b031660009081526005602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b6001600160a01b031660009081526007602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b610424610860565b61042f826000610e0d565b6104446001600160a01b038316333084611210565b61044f826001610e0d565b610457610e06565b5050565b610463610860565b61038f816001610e0d565b60009081526004602052604090205490565b610488610860565b61049283826112b3565b8260005b81811015610546576104c98686838181106104ad57fe5b90506020020160208101906104c29190611dec565b6000610e0d565b61051333308686858181106104da57fe5b905060200201358989868181106104ed57fe5b90506020020160208101906105029190611dec565b6001600160a01b0316929190611210565b61053e86868381811061052257fe5b90506020020160208101906105379190611dec565b6001610e0d565b600101610496565b5050610550610e06565b50505050565b600061056283836112c0565b90505b92915050565b60035490565b6001600160a01b031660009081526007602052604090205468010000000000000000900467ffffffffffffffff1690565b60606105ac610860565b836105b68161133e565b6105be611376565b6105c785610877565b8260608167ffffffffffffffff811180156105e157600080fd5b5060405190808252806020026020018201604052801561060b578160200160208202803683370190505b50905060005b82811015610671576106288787838181106104ad57fe5b6106528888888481811061063857fe5b905060200201602081019061064d9190611dec565b611506565b82828151811061065e57fe5b6020908102919091010152600101610611565b509250505061067e610e06565b9392505050565b6001600160a01b031660009081526020819052604090205490565b6106a8610860565b8060005b818110156106cb576106c384848381811061052257fe5b6001016106ac565b5050610457610e06565b6001600160a01b031660009081526001602052604090205460ff1690565b6001600160a01b031660009081526005602052604090205468010000000000000000900467ffffffffffffffff1690565b61072c610860565b610734611376565b61073c610e06565b565b6000610748610860565b826107528161133e565b61075a611376565b61076384610877565b61076e836000610e0d565b600061077a8585611506565b92505050610565610e06565b6001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6001600160a01b03919091166000908152600860209081526040808320938352929052205490565b61039733826116e2565b60006107ea611762565b905090565b60007fbd291ffccec065968fe20c5f8debdad73ab50837733f357eeae8814178015a90848461081d87610685565b6040516020016108309493929190612268565b6040516020818303038152906040528051906020012090506108568482846101f86117ff565b61055084846116e2565b61087160028054141561019061182c565b60028055565b6040517f010ae7570000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063010ae757906108df908590600401612187565b60206040518083038186803b1580156108f757600080fd5b505afa15801561090b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092f919061211d565b90508061093c5750610397565b6001600160a01b0382166000908152600760205260408120805490916801000000000000000090910467ffffffffffffffff1690816109a9576109a2857f000000000000000000000000000000000000000000000000000000000000000060008761183a565b90506109fc565b4282106109b95750505050610397565b50815470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16601481850311156109fc576109f98583838761183a565b90505b80610a05575060015b610a0d611d63565b6040517f28d09d470000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610a749089908690600401612203565b60806040518083038186803b158015610a8c57600080fd5b505afa158015610aa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac491906120ae565b905082610b98577f00000000000000000000000000000000000000000000000000000000000000004211610b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490612388565b60405180910390fd5b610b637f0000000000000000000000000000000000000000000000000000000000000000610b5e836040015161194e565b61195e565b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff821617855592505b610ba0611d63565b60005b6032811015610d6b5782604001518510158015610bc05750868411155b15610cc75760018401935082915086841115610c085760405180608001604052806000600f0b81526020016000600f0b81526020016000815260200160008152509250610cc2565b6040517f28d09d470000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906328d09d4790610c6f908b908890600401612203565b60806040518083038186803b158015610c8757600080fd5b505afa158015610c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbf91906120ae565b92505b610d63565b428510610cd357610d6b565b6000826040015186039050600081846020015102600f0b8460000151600f0b13610cfe576000610d0f565b81846020015102846000015103600f0b5b905080158015610d1e57508886115b15610d3557610d2c4261194e565b96505050610d6b565b6001600160a01b038a1660009081526008602090815260408083208a84529091529020555062093a80909401935b600101610ba3565b505083546fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9290920167ffffffffffffffff90811670010000000000000000000000000000000002929092177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff1668010000000000000000939092169290920217909155505050565b6001600255565b6001600160a01b0382166000908152600560205260408120805490916801000000000000000090910467ffffffffffffffff169081610ee457429150610e524261196a565b83547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff919091161783557f00000000000000000000000000000000000000000000000000000000000000004211610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490612388565b610f36565b814203905083610f36576000610ef98361196a565b610f024261196a565b14905060006201518042610f154261194e565b03109050818015610f24575080155b15610f33575050505050610457565b50505b82547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff16021783556040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038716906370a0823190610fbb903090600401612187565b60206040518083038186803b158015610fd357600080fd5b505afa158015610fe7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100b919061211d565b845490915060009061104490839070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611976565b905080611055575050505050610457565b6fffffffffffffffffffffffffffffffff82111561109f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490612351565b84546fffffffffffffffffffffffffffffffff80841670010000000000000000000000000000000002911617855560006110d88561196a565b6001600160a01b038916600090815260066020526040812091925090815b60148110156111c8578362093a8001925082421015611166578615801561111c57508742145b1561113a576000848152602083905260409020805486019055611161565b8688420386028161114757fe5b600086815260208590526040902080549290910490910190555b6111c8565b8615801561117357508783145b156111915760008481526020839052604090208054860190556111b8565b8688840386028161119e57fe5b600086815260208590526040902080549290910490910190555b91965086925082916001016110f6565b507f9b7f1a85a4c9b4e59e1b6527d9969c50cdfb3a1a467d0c4a51fb0ed8bf07f1308a85896040516111fc93929190612330565b60405180910390a150505050505050505050565b610550846323b872dd60e01b8585856040516024016112319392919061219b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611984565b610457818314606761182c565b6001600160a01b03808316600090815260096020908152604080832093851683529290529081205480156112f5579050610565565b6001600160a01b03808516600090815260076020908152604080832054938716835260059091529020546113369167ffffffffffffffff908116911661195e565b949350505050565b6001600160a01b03811660009081526001602052604090205460ff161561039757610397336001600160a01b0383161461019161182c565b60035460006113844261196a565b90508082118061139357504281145b1561139f57505061073c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c2c4c5c16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156113fa57600080fd5b505af115801561140e573d6000803e3d6000fd5b5050505060005b60148110156114ff578183111561142b576114ff565b6040517fbd85b0390000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd85b0399061149090869060040161225f565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e0919061211d565b60008481526004602052604090205562093a8090920191600101611415565b5050600355565b6001600160a01b03811660009081526005602052604081208161152985856112c0565b6003546001600160a01b0387166000908152600760205260408120549293509161159c9161157691611571919068010000000000000000900467ffffffffffffffff16611a24565b61194e565b84546115979068010000000000000000900467ffffffffffffffff1661196a565b611a24565b6001600160a01b038087166000908152600660209081526040808320938b16835260089091528120929350909190805b6014811015611620578486106115e157611620565b6000868152600460209081526040808320548683528184205492889052922054028161160957fe5b62093a8097909701960491909101906001016115cc565b506001600160a01b03808a166000908152600960209081526040808320938c1683529290522085905580156116d65785546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000808304821684900382160291161786556116986001600160a01b0389168a83611a30565b7fff097c7d8b1957a4ff09ef1361b5fb54dcede3941ba836d0beb9d10bec725de6898983886040516116cd94939291906121da565b60405180910390a15b98975050505050505050565b6001600160a01b0382166000908152600160205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016831515179055517fac9874a7a931a3f5c9f202c6d9cf40de5d21506993c9f9c38ca8265add89584c9061175690849084906121bf565b60405180910390a15050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006117cf611a54565b306040516020016117e495949392919061228e565b60405160208183030381529060405280519060200120905090565b6105508484847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85611a58565b816104575761045781611aaf565b60008282825b60808110156119425781831061185557611942565b6002828401810104611865611d63565b6040517f28d09d470000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906328d09d47906118cc908d908690600401612203565b60806040518083038186803b1580156118e457600080fd5b505afa1580156118f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191c91906120ae565b90508881604001511161193157819450611938565b6001820393505b5050600101611840565b50909695505050505050565b600061056562093a7f830161196a565b80820390821002900390565b62093a80908190040290565b600061056283836001611ad9565b60006060836001600160a01b0316836040516119a09190612135565b6000604051808303816000865af19150503d80600081146119dd576040519150601f19603f3d011682016040523d82523d6000602084013e6119e2565b606091505b509150915060008214156119fa573d6000803e3d6000fd5b610550815160001480611a1c575081806020019051810190611a1c9190612052565b6101a261182c565b80820390821102900390565b611a4f8363a9059cbb60e01b8484604051602401611231929190612203565b505050565b4690565b6000611a6385611aef565b9050611a79611a73878387611b28565b8361182c565b611a88428410156101b861182c565b5050506001600160a01b039092166000908152602081905260409020805460010190555050565b610397817f42414c0000000000000000000000000000000000000000000000000000000000611c16565b6000611ae8848411158361182c565b5050900390565b6000611af9611762565b82604051602001611b0b929190612151565b604051602081830303815290604052805190602001209050919050565b6000611b3c846001600160a01b0316611c91565b15611c04576040517f1626ba7e00000000000000000000000000000000000000000000000000000000808252906001600160a01b03861690631626ba7e90611b8a90879087906004016122ba565b60206040518083038186803b158015611ba257600080fd5b505afa158015611bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bda919061206e565b7fffffffff000000000000000000000000000000000000000000000000000000001614905061067e565b611c0f848484611c97565b905061067e565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b3b151590565b6000611ca982516041146101b961182c565b60208281015160408085015160608601518251600080825295019283905292939092811a91600190611ce2908990859088908890612312565b6020604051602081039080840390855afa158015611d04573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906116d65750876001600160a01b0316816001600160a01b03161498975050505050505050565b60405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525090565b60008083601f840112611da2578182fd5b50813567ffffffffffffffff811115611db9578182fd5b6020830191508360208083028501011115611dd357600080fd5b9250929050565b8051600f81900b811461056557600080fd5b600060208284031215611dfd578081fd5b813561067e81612438565b600080600060408486031215611e1c578182fd5b8335611e2781612438565b9250602084013567ffffffffffffffff811115611e42578283fd5b611e4e86828701611d91565b9497909650939450505050565b600080600060608486031215611e6f578283fd5b8335611e7a81612438565b9250602084810135611e8b8161244d565b9250604085013567ffffffffffffffff80821115611ea7578384fd5b818701915087601f830112611eba578384fd5b813581811115611ec8578485fd5b611ef8847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016123e5565b91508082528884828501011115611f0d578485fd5b808484018584013784848284010152508093505050509250925092565b60008060408385031215611f3c578182fd5b8235611f4781612438565b91506020830135611f5781612438565b809150509250929050565b60008060408385031215611f74578182fd5b8235611f7f81612438565b946020939093013593505050565b60008060208385031215611f9f578182fd5b823567ffffffffffffffff811115611fb5578283fd5b611fc185828601611d91565b90969095509350505050565b60008060008060408587031215611fe2578081fd5b843567ffffffffffffffff80821115611ff9578283fd5b61200588838901611d91565b9096509450602087013591508082111561201d578283fd5b5061202a87828801611d91565b95989497509550505050565b600060208284031215612047578081fd5b813561067e8161244d565b600060208284031215612063578081fd5b815161067e8161244d565b60006020828403121561207f578081fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461067e578182fd5b6000608082840312156120bf578081fd5b6120c960806123e5565b6120d38484611dda565b81526120e28460208501611dda565b602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612116578081fd5b5035919050565b60006020828403121561212e578081fd5b5051919050565b6000825161214781846020870161240c565b9190910192915050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561194257835183529284019291840191600101612238565b901515815260200190565b90815260200190565b9384526001600160a01b0392909216602084015215156040830152606082015260800190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b60008382526040602083015282518060408401526122df81606085016020870161240c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b93845260ff9290921660208401526040830152606082015260800190565b6001600160a01b039390931683526020830191909152604082015260600190565b6020808252601e908201527f4d6178696d756d20746f6b656e2062616c616e63652065786365656465640000604082015260600190565b60208082526024908201527f46656520646973747269627574696f6e20686173206e6f74207374617274656460408201527f2079657400000000000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff8111828210171561240457600080fd5b604052919050565b60005b8381101561242757818101518382015260200161240f565b838111156105505750506000910152565b6001600160a01b038116811461039757600080fd5b801515811461039757600080fdfea26469706673582212202d70ab73116986917a5e903c96ac6fc54acbc4ae72ef90b05c76ae9f48cc9ba164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x88720467 GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0xCA31879D GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xE811F44B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xE811F44B EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x33F JUMPI DUP1 PUSH4 0xFCAA54EE EQ PUSH2 0x347 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0xCA31879D EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xD3DC4CA1 EQ PUSH2 0x306 JUMPI DUP1 PUSH4 0xDE681FAF EQ PUSH2 0x319 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0xA1648AA5 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xA1648AA5 EQ PUSH2 0x2B8 JUMPI DUP1 PUSH4 0xACBC1428 EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xC2C4C5C1 EQ PUSH2 0x2EB JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x88720467 EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0x905D10AC EQ PUSH2 0x2A5 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x3902B9BC GT PUSH2 0x145 JUMPI DUP1 PUSH4 0x8050A7EE GT PUSH2 0x11F JUMPI DUP1 PUSH4 0x8050A7EE EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x82AA5AD4 EQ PUSH2 0x257 JUMPI DUP1 PUSH4 0x876E69A1 EQ PUSH2 0x25F JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x3902B9BC EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x4F3C5090 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x7B8D6221 EQ PUSH2 0x231 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x2308805B GT PUSH2 0x176 JUMPI DUP1 PUSH4 0x2308805B EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0x286D5E7F EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x338B5DEA EQ PUSH2 0x1F8 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x8B0308A EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x14866E08 EQ PUSH2 0x1B0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A PUSH2 0x35A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x2187 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C3 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x37E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D8 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x225F JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x3DB JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F62 JUMP JUMPDEST PUSH2 0x41C JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x219 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x45B JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x22C CALLDATASIZE PUSH1 0x4 PUSH2 0x2105 JUMP JUMPDEST PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x23F CALLDATASIZE PUSH1 0x4 PUSH2 0x1FCD JUMP JUMPDEST PUSH2 0x480 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x252 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x56B JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x26D CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x571 JUMP JUMPDEST PUSH2 0x285 PUSH2 0x280 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E08 JUMP JUMPDEST PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x221C JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x2A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x685 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x2B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F8D JUMP JUMPDEST PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x2CB PUSH2 0x2C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x6D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x2254 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x2E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x724 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x301 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x73E JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x314 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F62 JUMP JUMPDEST PUSH2 0x786 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x327 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F62 JUMP JUMPDEST PUSH2 0x7AE JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x33A CALLDATASIZE PUSH1 0x4 PUSH2 0x2036 JUMP JUMPDEST PUSH2 0x7D6 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x355 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E5B JUMP JUMPDEST PUSH2 0x7EF JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x386 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x38F DUP2 PUSH2 0x877 JUMP JUMPDEST PUSH2 0x397 PUSH2 0xE06 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x424 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x42F DUP3 PUSH1 0x0 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x444 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x44F DUP3 PUSH1 0x1 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x457 PUSH2 0xE06 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x463 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x38F DUP2 PUSH1 0x1 PUSH2 0xE0D JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x488 PUSH2 0x860 JUMP JUMPDEST PUSH2 0x492 DUP4 DUP3 PUSH2 0x12B3 JUMP JUMPDEST DUP3 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x546 JUMPI PUSH2 0x4C9 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x4AD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4C2 SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x513 CALLER ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x4DA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP10 DUP10 DUP7 DUP2 DUP2 LT PUSH2 0x4ED JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x502 SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x53E DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x522 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x537 SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH1 0x1 PUSH2 0xE0D JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x496 JUMP JUMPDEST POP POP PUSH2 0x550 PUSH2 0xE06 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x562 DUP4 DUP4 PUSH2 0x12C0 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5AC PUSH2 0x860 JUMP JUMPDEST DUP4 PUSH2 0x5B6 DUP2 PUSH2 0x133E JUMP JUMPDEST PUSH2 0x5BE PUSH2 0x1376 JUMP JUMPDEST PUSH2 0x5C7 DUP6 PUSH2 0x877 JUMP JUMPDEST DUP3 PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x60B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x671 JUMPI PUSH2 0x628 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x4AD JUMPI INVALID JUMPDEST PUSH2 0x652 DUP9 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x638 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x64D SWAP2 SWAP1 PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x1506 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x65E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x611 JUMP JUMPDEST POP SWAP3 POP POP POP PUSH2 0x67E PUSH2 0xE06 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6A8 PUSH2 0x860 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6CB JUMPI PUSH2 0x6C3 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x522 JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x6AC JUMP JUMPDEST POP POP PUSH2 0x457 PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x72C PUSH2 0x860 JUMP JUMPDEST PUSH2 0x734 PUSH2 0x1376 JUMP JUMPDEST PUSH2 0x73C PUSH2 0xE06 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x748 PUSH2 0x860 JUMP JUMPDEST DUP3 PUSH2 0x752 DUP2 PUSH2 0x133E JUMP JUMPDEST PUSH2 0x75A PUSH2 0x1376 JUMP JUMPDEST PUSH2 0x763 DUP5 PUSH2 0x877 JUMP JUMPDEST PUSH2 0x76E DUP4 PUSH1 0x0 PUSH2 0xE0D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77A DUP6 DUP6 PUSH2 0x1506 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x565 PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x397 CALLER DUP3 PUSH2 0x16E2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7EA PUSH2 0x1762 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xBD291FFCCEC065968FE20C5F8DEBDAD73AB50837733F357EEAE8814178015A90 DUP5 DUP5 PUSH2 0x81D DUP8 PUSH2 0x685 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x830 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2268 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x856 DUP5 DUP3 DUP5 PUSH2 0x1F8 PUSH2 0x17FF JUMP JUMPDEST PUSH2 0x550 DUP5 DUP5 PUSH2 0x16E2 JUMP JUMPDEST PUSH2 0x871 PUSH1 0x2 DUP1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x2 DUP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x10AE75700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x10AE757 SWAP1 PUSH2 0x8DF SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2187 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x90B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x92F SWAP2 SWAP1 PUSH2 0x211D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x93C JUMPI POP PUSH2 0x397 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0x9A9 JUMPI PUSH2 0x9A2 DUP6 PUSH32 0x0 PUSH1 0x0 DUP8 PUSH2 0x183A JUMP JUMPDEST SWAP1 POP PUSH2 0x9FC JUMP JUMPDEST TIMESTAMP DUP3 LT PUSH2 0x9B9 JUMPI POP POP POP POP PUSH2 0x397 JUMP JUMPDEST POP DUP2 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 DUP2 DUP6 SUB GT ISZERO PUSH2 0x9FC JUMPI PUSH2 0x9F9 DUP6 DUP4 DUP4 DUP8 PUSH2 0x183A JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH2 0xA05 JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0xA0D PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xA74 SWAP1 DUP10 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2203 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAC4 SWAP2 SWAP1 PUSH2 0x20AE JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0xB98 JUMPI PUSH32 0x0 TIMESTAMP GT PUSH2 0xB2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB24 SWAP1 PUSH2 0x2388 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB63 PUSH32 0x0 PUSH2 0xB5E DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x194E JUMP JUMPDEST PUSH2 0x195E JUMP JUMPDEST DUP5 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND OR DUP6 SSTORE SWAP3 POP JUMPDEST PUSH2 0xBA0 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x32 DUP2 LT ISZERO PUSH2 0xD6B JUMPI DUP3 PUSH1 0x40 ADD MLOAD DUP6 LT ISZERO DUP1 ISZERO PUSH2 0xBC0 JUMPI POP DUP7 DUP5 GT ISZERO JUMPDEST ISZERO PUSH2 0xCC7 JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP DUP3 SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0xC08 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP PUSH2 0xCC2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0xC6F SWAP1 DUP12 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2203 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC9B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCBF SWAP2 SWAP1 PUSH2 0x20AE JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH2 0xD63 JUMP JUMPDEST TIMESTAMP DUP6 LT PUSH2 0xCD3 JUMPI PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 ADD MLOAD DUP7 SUB SWAP1 POP PUSH1 0x0 DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL PUSH1 0xF SIGNEXTEND DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xF SIGNEXTEND SGT PUSH2 0xCFE JUMPI PUSH1 0x0 PUSH2 0xD0F JUMP JUMPDEST DUP2 DUP5 PUSH1 0x20 ADD MLOAD MUL DUP5 PUSH1 0x0 ADD MLOAD SUB PUSH1 0xF SIGNEXTEND JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0xD1E JUMPI POP DUP9 DUP7 GT JUMPDEST ISZERO PUSH2 0xD35 JUMPI PUSH2 0xD2C TIMESTAMP PUSH2 0x194E JUMP JUMPDEST SWAP7 POP POP POP PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE POP PUSH3 0x93A80 SWAP1 SWAP5 ADD SWAP4 JUMPDEST PUSH1 0x1 ADD PUSH2 0xBA3 JUMP JUMPDEST POP POP DUP4 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 ADD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP3 SWAP1 SWAP3 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SWAP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0xEE4 JUMPI TIMESTAMP SWAP2 POP PUSH2 0xE52 TIMESTAMP PUSH2 0x196A JUMP JUMPDEST DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR DUP4 SSTORE PUSH32 0x0 TIMESTAMP GT PUSH2 0xEDF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB24 SWAP1 PUSH2 0x2388 JUMP JUMPDEST PUSH2 0xF36 JUMP JUMPDEST DUP2 TIMESTAMP SUB SWAP1 POP DUP4 PUSH2 0xF36 JUMPI PUSH1 0x0 PUSH2 0xEF9 DUP4 PUSH2 0x196A JUMP JUMPDEST PUSH2 0xF02 TIMESTAMP PUSH2 0x196A JUMP JUMPDEST EQ SWAP1 POP PUSH1 0x0 PUSH3 0x15180 TIMESTAMP PUSH2 0xF15 TIMESTAMP PUSH2 0x194E JUMP JUMPDEST SUB LT SWAP1 POP DUP2 DUP1 ISZERO PUSH2 0xF24 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xF33 JUMPI POP POP POP POP POP PUSH2 0x457 JUMP JUMPDEST POP POP JUMPDEST DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 TIMESTAMP PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR DUP4 SSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xFBB SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2187 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x100B SWAP2 SWAP1 PUSH2 0x211D JUMP JUMPDEST DUP5 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1044 SWAP1 DUP4 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1976 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1055 JUMPI POP POP POP POP POP PUSH2 0x457 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x109F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB24 SWAP1 PUSH2 0x2351 JUMP JUMPDEST DUP5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP2 AND OR DUP6 SSTORE PUSH1 0x0 PUSH2 0x10D8 DUP6 PUSH2 0x196A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP3 POP SWAP1 DUP2 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x11C8 JUMPI DUP4 PUSH3 0x93A80 ADD SWAP3 POP DUP3 TIMESTAMP LT ISZERO PUSH2 0x1166 JUMPI DUP7 ISZERO DUP1 ISZERO PUSH2 0x111C JUMPI POP DUP8 TIMESTAMP EQ JUMPDEST ISZERO PUSH2 0x113A JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x1161 JUMP JUMPDEST DUP7 DUP9 TIMESTAMP SUB DUP7 MUL DUP2 PUSH2 0x1147 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST PUSH2 0x11C8 JUMP JUMPDEST DUP7 ISZERO DUP1 ISZERO PUSH2 0x1173 JUMPI POP DUP8 DUP4 EQ JUMPDEST ISZERO PUSH2 0x1191 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE PUSH2 0x11B8 JUMP JUMPDEST DUP7 DUP9 DUP5 SUB DUP7 MUL DUP2 PUSH2 0x119E JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP1 SWAP2 ADD SWAP1 SSTORE JUMPDEST SWAP2 SWAP7 POP DUP7 SWAP3 POP DUP3 SWAP2 PUSH1 0x1 ADD PUSH2 0x10F6 JUMP JUMPDEST POP PUSH32 0x9B7F1A85A4C9B4E59E1B6527D9969C50CDFB3A1A467D0C4A51FB0ED8BF07F130 DUP11 DUP6 DUP10 PUSH1 0x40 MLOAD PUSH2 0x11FC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2330 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x550 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1231 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x219B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1984 JUMP JUMPDEST PUSH2 0x457 DUP2 DUP4 EQ PUSH1 0x67 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x12F5 JUMPI SWAP1 POP PUSH2 0x565 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP8 AND DUP4 MSTORE PUSH1 0x5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x1336 SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND PUSH2 0x195E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x397 JUMPI PUSH2 0x397 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ PUSH2 0x191 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 PUSH2 0x1384 TIMESTAMP PUSH2 0x196A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT DUP1 PUSH2 0x1393 JUMPI POP TIMESTAMP DUP2 EQ JUMPDEST ISZERO PUSH2 0x139F JUMPI POP POP PUSH2 0x73C JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC2C4C5C1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x140E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x14FF JUMPI DUP2 DUP4 GT ISZERO PUSH2 0x142B JUMPI PUSH2 0x14FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD85B03900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xBD85B039 SWAP1 PUSH2 0x1490 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x225F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14E0 SWAP2 SWAP1 PUSH2 0x211D JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH3 0x93A80 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1415 JUMP JUMPDEST POP POP PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 PUSH2 0x1529 DUP6 DUP6 PUSH2 0x12C0 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP2 PUSH2 0x159C SWAP2 PUSH2 0x1576 SWAP2 PUSH2 0x1571 SWAP2 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1A24 JUMP JUMPDEST PUSH2 0x194E JUMP JUMPDEST DUP5 SLOAD PUSH2 0x1597 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x196A JUMP JUMPDEST PUSH2 0x1A24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SWAP3 SWAP4 POP SWAP1 SWAP2 SWAP1 DUP1 JUMPDEST PUSH1 0x14 DUP2 LT ISZERO PUSH2 0x1620 JUMPI DUP5 DUP7 LT PUSH2 0x15E1 JUMPI PUSH2 0x1620 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP7 DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD SWAP3 DUP9 SWAP1 MSTORE SWAP3 KECCAK256 SLOAD MUL DUP2 PUSH2 0x1609 JUMPI INVALID JUMPDEST PUSH3 0x93A80 SWAP8 SWAP1 SWAP8 ADD SWAP7 DIV SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x15CC JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP6 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x16D6 JUMPI DUP6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP5 SWAP1 SUB DUP3 AND MUL SWAP2 AND OR DUP7 SSTORE PUSH2 0x1698 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP11 DUP4 PUSH2 0x1A30 JUMP JUMPDEST PUSH32 0xFF097C7D8B1957A4FF09EF1361B5FB54DCEDE3941BA836D0BEB9D10BEC725DE6 DUP10 DUP10 DUP4 DUP9 PUSH1 0x40 MLOAD PUSH2 0x16CD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x21DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0xAC9874A7A931A3F5C9F202C6D9CF40DE5D21506993C9F9C38CA8265ADD89584C SWAP1 PUSH2 0x1756 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x21BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x17CF PUSH2 0x1A54 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x17E4 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x228E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x550 DUP5 DUP5 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 PUSH2 0x1A58 JUMP JUMPDEST DUP2 PUSH2 0x457 JUMPI PUSH2 0x457 DUP2 PUSH2 0x1AAF JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP3 JUMPDEST PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1942 JUMPI DUP2 DUP4 LT PUSH2 0x1855 JUMPI PUSH2 0x1942 JUMP JUMPDEST PUSH1 0x2 DUP3 DUP5 ADD DUP2 ADD DIV PUSH2 0x1865 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x28D09D4700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x28D09D47 SWAP1 PUSH2 0x18CC SWAP1 DUP14 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2203 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x191C SWAP2 SWAP1 PUSH2 0x20AE JUMP JUMPDEST SWAP1 POP DUP9 DUP2 PUSH1 0x40 ADD MLOAD GT PUSH2 0x1931 JUMPI DUP2 SWAP5 POP PUSH2 0x1938 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1840 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x565 PUSH3 0x93A7F DUP4 ADD PUSH2 0x196A JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 LT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH3 0x93A80 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x562 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1AD9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x19A0 SWAP2 SWAP1 PUSH2 0x2135 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x19DD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x19E2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x19FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x550 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1A1C JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1A1C SWAP2 SWAP1 PUSH2 0x2052 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x182C JUMP JUMPDEST DUP1 DUP3 SUB SWAP1 DUP3 GT MUL SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x1A4F DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1231 SWAP3 SWAP2 SWAP1 PUSH2 0x2203 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A63 DUP6 PUSH2 0x1AEF JUMP JUMPDEST SWAP1 POP PUSH2 0x1A79 PUSH2 0x1A73 DUP8 DUP4 DUP8 PUSH2 0x1B28 JUMP JUMPDEST DUP4 PUSH2 0x182C JUMP JUMPDEST PUSH2 0x1A88 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x182C JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x397 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1C16 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AE8 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x182C JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AF9 PUSH2 0x1762 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1B0B SWAP3 SWAP2 SWAP1 PUSH2 0x2151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B3C DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C91 JUMP JUMPDEST ISZERO PUSH2 0x1C04 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP1 DUP3 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x1626BA7E SWAP1 PUSH2 0x1B8A SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x22BA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BDA SWAP2 SWAP1 PUSH2 0x206E JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ SWAP1 POP PUSH2 0x67E JUMP JUMPDEST PUSH2 0x1C0F DUP5 DUP5 DUP5 PUSH2 0x1C97 JUMP JUMPDEST SWAP1 POP PUSH2 0x67E JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CA9 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x20 DUP3 DUP2 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD DUP3 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP6 ADD SWAP3 DUP4 SWAP1 MSTORE SWAP3 SWAP4 SWAP1 SWAP3 DUP2 BYTE SWAP2 PUSH1 0x1 SWAP1 PUSH2 0x1CE2 SWAP1 DUP10 SWAP1 DUP6 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x2312 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x16D6 JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1DA2 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1DB9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1DD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x565 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DFD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x67E DUP2 PUSH2 0x2438 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1E1C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1E27 DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E42 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1E4E DUP7 DUP3 DUP8 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1E6F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1E7A DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 DUP2 ADD CALLDATALOAD PUSH2 0x1E8B DUP2 PUSH2 0x244D JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1EA7 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1EBA JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1EC8 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1EF8 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x23E5 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP9 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1F0D JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY DUP5 DUP5 DUP3 DUP5 ADD ADD MSTORE POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F3C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1F47 DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1F57 DUP2 PUSH2 0x2438 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F74 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1F7F DUP2 PUSH2 0x2438 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F9F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1FB5 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1FC1 DUP6 DUP3 DUP7 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1FE2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1FF9 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2005 DUP9 DUP4 DUP10 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x201D JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x202A DUP8 DUP3 DUP9 ADD PUSH2 0x1D91 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2047 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x67E DUP2 PUSH2 0x244D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2063 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x67E DUP2 PUSH2 0x244D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x207F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x67E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20BF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x20C9 PUSH1 0x80 PUSH2 0x23E5 JUMP JUMPDEST PUSH2 0x20D3 DUP5 DUP5 PUSH2 0x1DDA JUMP JUMPDEST DUP2 MSTORE PUSH2 0x20E2 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1DDA JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2116 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x212E JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2147 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x240C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1942 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2238 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x22DF DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x240C JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6178696D756D20746F6B656E2062616C616E63652065786365656465640000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x46656520646973747269627574696F6E20686173206E6F742073746172746564 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2079657400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2427 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x240F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x550 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D PUSH17 0xAB73116986917A5E903C96AC6FC54ACBC4 0xAE PUSH19 0xEF90B05C76AE9F48CC9BA164736F6C63430007 ADD STOP CALLER ","sourceMap":"797:369:125:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4489:111:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10104:114;;;;;;:::i;:::-;;:::i;:::-;;7175:140;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1018:146:125:-;;;;;;:::i;:::-;;:::i;8423:236:82:-;;;;;;:::i;:::-;;:::i;10738:116::-;;;;;;:::i;:::-;;:::i;6938:144::-;;;;;;:::i;:::-;;:::i;9022:463::-;;;;;;:::i;:::-;;:::i;5712:161::-;;;;;;:::i;:::-;;:::i;4720:101::-;;;:::i;5000:133::-;;;;;;:::i;:::-;;:::i;12773:569::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1303:121:47:-;;;;;;:::i;:::-;;:::i;11190:246:82:-;;;;;;:::i;:::-;;:::i;2247:131:49:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5329:136:82:-;;;;;;:::i;:::-;;:::i;9725:94::-;;;:::i;11950:360::-;;;;;;:::i;:::-;;:::i;7606:166::-;;;;;;:::i;:::-;;:::i;6363:173::-;;;;;;:::i;:::-;;:::i;1551:117:49:-;;;;;;:::i;:::-;;:::i;1184:113:47:-;;;:::i;1674:398:49:-;;;;;;:::i;:::-;;:::i;4489:111:82:-;4580:13;4489:111;:::o;10104:114::-;2613:20:63;:18;:20::i;:::-;10183:28:82::1;10206:4;10183:22;:28::i;:::-;2654:19:63::0;:17;:19::i;:::-;10104:114:82;:::o;7175:140::-;-1:-1:-1;;;;;7276:18:82;7250:7;7276:18;;;:11;:18;;;;;:32;;;;;;;7175:140::o;1018:146:125:-;-1:-1:-1;;;;;1119:16:125;1093:7;1119:16;;;:10;:16;;;;;:38;;;;;;;1018:146::o;8423:236:82:-;2613:20:63;:18;:20::i;:::-;8516:30:82::1;8533:5;8540;8516:16;:30::i;:::-;8556:57;-1:-1:-1::0;;;;;8556:22:82;::::1;8579:10;8599:4;8606:6:::0;8556:22:::1;:57::i;:::-;8623:29;8640:5;8647:4;8623:16;:29::i;:::-;2654:19:63::0;:17;:19::i;:::-;8423:236:82;;:::o;10738:116::-;2613:20:63;:18;:20::i;:::-;10818:29:82::1;10835:5;10842:4;10818:16;:29::i;6938:144::-:0;7024:7;7050:25;;;:14;:25;;;;;;;6938:144::o;9022:463::-;2613:20:63;:18;:20::i;:::-;9140:66:82::1;9176:6:::0;9191:7;9140:35:::1;:66::i;:::-;9234:6:::0;9217:14:::1;9257:222;9281:6;9277:1;:10;9257:222;;;9308:34;9325:6;;9332:1;9325:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;9336:5;9308:16;:34::i;:::-;9356:65;9383:10;9403:4;9410:7;;9418:1;9410:10;;;;;;;;;;;;;9356:6;;9363:1;9356:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9356:26:82::1;::::0;:65;;:26:::1;:65::i;:::-;9435:33;9452:6;;9459:1;9452:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;9463:4;9435:16;:33::i;:::-;9289:3;;9257:222;;;;2643:1:63;2654:19:::0;:17;:19::i;:::-;9022:463:82;;;;:::o;5712:161::-;5804:7;5830:36;5854:4;5860:5;5830:23;:36::i;:::-;5823:43;;5712:161;;;;;:::o;4720:101::-;4803:11;;4720:101;:::o;5000:133::-;-1:-1:-1;;;;;5099:16:82;5073:7;5099:16;;;:10;:16;;;;;:27;;;;;;;5000:133::o;12773:569::-;12939:16;2613:20:63;:18;:20::i;:::-;12916:4:82::1;1508:19:49;1522:4;1508:13;:19::i;:::-;12971:24:82::2;:22;:24::i;:::-;13005:28;13028:4;13005:22;:28::i;:::-;13067:6:::0;13090:24:::2;13067:6:::0;13117:27:::2;::::0;::::2;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;13117:27:82::2;;13090:54;;13159:9;13154:157;13178:12;13174:1;:16;13154:157;;;13211:34;13228:6;;13235:1;13228:9;;;;;;13211:34;13272:28;13284:4;13290:6;;13297:1;13290:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;13272:11;:28::i;:::-;13259:7;13267:1;13259:10;;;;;;;;;::::0;;::::2;::::0;;;;;:41;13192:3:::2;;13154:157;;;-1:-1:-1::0;13328:7:82;-1:-1:-1;;2643:1:63::1;2654:19:::0;:17;:19::i;:::-;12773:569:82;;;;;:::o;1303:121:47:-;-1:-1:-1;;;;;1398:19:47;1372:7;1398:19;;;;;;;;;;;;1303:121::o;11190:246:82:-;2613:20:63;:18;:20::i;:::-;11306:6:82;11283:20:::1;11329:101;11353:12;11349:1;:16;11329:101;;;11386:33;11403:6;;11410:1;11403:9;;;;;;11386:33;11367:3;;11329:101;;;;2643:1:63;2654:19:::0;:17;:19::i;2247:131:49:-;-1:-1:-1;;;;;2345:26:49;2322:4;2345:26;;;:20;:26;;;;;;;;;2247:131::o;5329:136:82:-;-1:-1:-1;;;;;5429:18:82;5403:7;5429:18;;;:11;:18;;;;;:29;;;;;;;5329:136::o;9725:94::-;2613:20:63;:18;:20::i;:::-;9788:24:82::1;:22;:24::i;:::-;2654:19:63::0;:17;:19::i;:::-;9725:94:82:o;11950:360::-;12103:7;2613:20:63;:18;:20::i;:::-;12080:4:82::1;1508:19:49;1522:4;1508:13;:19::i;:::-;12126:24:82::2;:22;:24::i;:::-;12160:28;12183:4;12160:22;:28::i;:::-;12198:30;12215:5;12222;12198:16;:30::i;:::-;12239:14;12256:24;12268:4;12274:5;12256:11;:24::i;:::-;12239:41:::0;-1:-1:-1;;2643:1:63::1;2654:19:::0;:17;:19::i;7606:166:82:-;-1:-1:-1;;;;;7733:21:82;;;;7707:7;7733:21;;;:14;:21;;;;;;;;:32;;;;;;;;;7606:166::o;6363:173::-;-1:-1:-1;;;;;6489:29:82;;;;6463:7;6489:29;;;:23;:29;;;;;;;;:40;;;;;;;;;6363:173::o;1551:117:49:-;1621:40;1641:10;1653:7;1621:19;:40::i;1184:113:47:-;1244:7;1270:20;:18;:20::i;:::-;1263:27;;1184:113;:::o;1674:398:49:-;1825:18;1144:86;1900:4;1906:7;1915:18;1928:4;1915:12;:18::i;:::-;1856:78;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1846:89;;;;;;1825:110;;1945:76;1967:4;1973:10;1985:9;13190:3:31;1945:21:49;:76::i;:::-;2031:34;2051:4;2057:7;2031:19;:34::i;2686:271:63:-;2809:48;2113:1;2818:7;;:19;;10214:3:31;2809:8:63;:48::i;:::-;2113:1;2932:18;;2686:271::o;20783:6075:82:-;20871:36;;;;;20848:20;;-1:-1:-1;;;;;20871:13:82;:30;;;;:36;;20902:4;;20871:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20848:59;-1:-1:-1;21042:17:82;21038:30;;21061:7;;;21038:30;-1:-1:-1;;;;;21108:16:82;;21078:27;21108:16;;;:10;:16;;;;;21338:20;;21108:16;;21338:20;;;;;;;;21396:1576;;21534:58;21558:4;21564:10;21576:1;21579:12;21534:23;:58::i;:::-;21522:70;;21396:1576;;;21651:15;21627:20;:39;21623:416;;22018:7;;;;;;21623:416;-1:-1:-1;22125:31:82;;;;;;;22837:2;22810:24;;;:29;22806:156;;;22871:76;22895:4;22901:20;22923:9;22934:12;22871:23;:76::i;:::-;22859:88;;22806:156;23082:14;23078:58;;-1:-1:-1;23124:1:82;23078:58;23146:40;;:::i;:::-;23189:49;;;;;-1:-1:-1;;;;;23189:13:82;:32;;;;:49;;23222:4;;23228:9;;23189:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23146:92;-1:-1:-1;23513:25:82;23509:349;;23638:10;23620:15;:28;23612:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;23726:57;23735:10;23747:35;23765:13;:16;;;23747:17;:35::i;:::-;23726:8;:57::i;:::-;23797:50;;;;;;;;;;;-1:-1:-1;23509:349:82;24068:43;;:::i;:::-;24126:9;24121:2279;24145:2;24141:1;:6;24121:2279;;;24196:13;:16;;;24172:20;:40;;:69;;;;;24229:12;24216:9;:25;;24172:69;24168:2222;;;24731:1;24718:14;;;;24769:13;24750:32;;24816:12;24804:9;:24;24800:230;;;24868:31;;;;;;;;24888:1;24868:31;;;;;;24891:1;24868:31;;;;;;24894:1;24868:31;;;;24897:1;24868:31;;;24852:47;;24800:230;;;24962:49;;;;;-1:-1:-1;;;;;24962:13:82;:32;;;;:49;;24995:4;;25001:9;;24962:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24946:65;;24800:230;24168:2222;;;25296:15;25272:20;:39;25268:349;;25593:5;;25268:349;25635:9;25677:16;:19;;;25654:20;:42;25635:62;;25715:19;25786:2;25761:16;:22;;;:27;25737:51;;:16;:21;;;:51;;;:158;;25894:1;25737:158;;;25868:2;25843:16;:22;;;:27;25819:16;:21;;;:51;25811:60;;25737:158;25715:180;-1:-1:-1;25992:16:82;;:44;;;;;26024:12;26012:9;:24;25992:44;25988:175;;;26083:34;26101:15;26083:17;:34::i;:::-;26060:57;;26139:5;;;;25988:175;-1:-1:-1;;;;;26260:29:82;;;;;;:23;:29;;;;;;;;:51;;;;;;;;:65;-1:-1:-1;26368:7:82;26344:31;;;;24168:2222;24149:3;;24121:2279;;;-1:-1:-1;;26735:55:82;;;;26776:13;;;;;26735:55;;;;;;;;;;26800:51;;;;;;;;;;;;;;;-1:-1:-1;;;20783:6075:82:o;2963:208:63:-;2070:1;3142:7;:22;2963:208::o;15951:4718:82:-;-1:-1:-1;;;;;16054:18:82;;16022:29;16054:18;;;:11;:18;;;;;16106:21;;16054:18;;16106:21;;;;;;;;16178:1820;;16433:15;16417:31;;16492:36;16512:15;16492:19;:36::i;:::-;16462:67;;;;;;;;;;;;16648:10;16630:15;:28;16622:77;;;;;;;;;;;;:::i;:::-;16178:1820;;;16774:13;16756:15;:31;16730:57;;16807:5;16802:1186;;17170:32;17265:34;17285:13;17265:19;:34::i;:::-;17205:36;17225:15;17205:19;:36::i;:::-;:94;17170:129;;17551:21;17630:6;17612:15;17575:34;17593:15;17575:17;:34::i;:::-;:52;:61;17551:85;;17877:27;:48;;;;;17909:16;17908:17;17877:48;17873:101;;;17949:7;;;;;;;17873:101;16802:1186;;;18008:47;;;;;18039:15;18008:47;;;;;;18089:30;;;;;-1:-1:-1;;;;;;;18089:15:82;;;;;:30;;18113:4;;18089:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18178:24;;18066:53;;-1:-1:-1;18129:29:82;;18161:42;;18066:53;;18178:24;;;;;18161:16;:42::i;:::-;18129:74;-1:-1:-1;18217:26:82;18213:39;;18245:7;;;;;;;18213:39;18285:17;18269:33;;;18261:76;;;;;;;;;;;;:::i;:::-;18347:48;;;;;;;;;;;;;:24;18436:34;18456:13;18436:19;:34::i;:::-;-1:-1:-1;;;;;18778:21:82;;18480:16;18778:21;;;:14;:21;;;;;18406:64;;-1:-1:-1;18480:16:82;;18809:1776;18833:2;18829:1;:6;18809:1776;;;18930:19;18952:7;18930:29;18919:40;;18995:8;18977:15;:26;18973:1405;;;19144:28;;:64;;;;;19195:13;19176:15;:32;19144:64;19140:459;;;19232:34;;;;;;;;;;;:59;;;;;;19140:459;;;19557:23;19515:13;19497:15;:31;19472:21;:57;19471:109;;;;;19409:34;;;;;;;;;;;:171;;19471:109;;;;19409:171;;;;;19140:459;19695:5;;18973:1405;19863:28;;:57;;;;;19907:13;19895:8;:25;19863:57;19859:505;;;20012:34;;;;;;;;;;;:59;;;;;;19859:505;;;20322:23;20280:13;20269:8;:24;20244:21;:50;20243:102;;;;;20181:34;;;;;;;;;;;:164;;20243:102;;;;20181:164;;;;;19859:505;20522:8;;-1:-1:-1;20522:8:82;;-1:-1:-1;20522:8:82;;18837:3;;18809:1776;;;;20600:62;20618:5;20625:21;20648:13;20600:62;;;;;;;;:::i;:::-;;;;;;;;15951:4718;;;;;;;;;;:::o;1734:250:64:-;1872:105;1900:5;1931:27;;;1960:4;1966:2;1970:5;1908:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1872:19;:105::i;920:131:48:-;998:46;1012:1;1007;:6;5826:3:31;998:8:48;:46::i;28204:507:82:-;-1:-1:-1;;;;;28332:26:82;;;28288:7;28332:26;;;:20;:26;;;;;;;;:33;;;;;;;;;;;;28379:18;;28375:45;;28406:14;-1:-1:-1;28399:21:82;;28375:45;-1:-1:-1;;;;;28647:16:82;;;;;;;:10;:16;;;;;;;;:26;28675:18;;;;;:11;:18;;;;;:28;28638:66;;28647:26;;;;;28675:28;28638:8;:66::i;:::-;28631:73;28204:507;-1:-1:-1;;;;28204:507:82:o;2384:178:49:-;-1:-1:-1;;;;;2448:26:49;;;;;;:20;:26;;;;;;;;2444:112;;;2490:55;2499:10;-1:-1:-1;;;;;2499:18:49;;;10270:3:31;2490:8:49;:55::i;26970:1024:82:-;27054:11;;27023:28;27095:36;27115:15;27095:19;:36::i;:::-;27075:56;;27249:9;27226:20;:32;:64;;;;27275:15;27262:9;:28;27226:64;27222:183;;;27388:7;;;;27222:183;27415:13;-1:-1:-1;;;;;27415:24:82;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27560:9;27555:310;27579:2;27575:1;:6;27555:310;;;27629:9;27606:20;:32;27602:43;;;27640:5;;27602:43;27699:47;;;;;-1:-1:-1;;;;;27699:13:82;:25;;;;:47;;27725:20;;27699:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27660:36;;;;:14;:36;;;;;:86;27847:7;27823:31;;;;27583:3;;27555:310;;;-1:-1:-1;;27953:11:82;:34;26970:1024::o;13530:2283::-;-1:-1:-1;;;;;13648:18:82;;13597:7;13648:18;;;:11;:18;;;;;13597:7;13711:36;13735:4;13660:5;13711:23;:36::i;:::-;14490:11;;-1:-1:-1;;;;;14503:16:82;;14410:28;14503:16;;;:10;:16;;;;;:27;13676:71;;-1:-1:-1;14410:28:82;14441:157;;14463:69;;14481:50;;14490:11;14503:27;;;;;14481:8;:50::i;:::-;14463:17;:69::i;:::-;14566:21;;14546:42;;14566:21;;;;;14546:19;:42::i;:::-;14441:8;:157::i;:::-;-1:-1:-1;;;;;14661:21:82;;;14609:49;14661:21;;;:14;:21;;;;;;;;14753:29;;;;;:23;:29;;;;;14410:188;;-1:-1:-1;14661:21:82;;14753:29;14609:49;14817:446;14841:2;14837:1;:6;14817:446;;;14984:20;14956:24;:48;14952:59;;15006:5;;14952:59;15163:40;;;;:14;:40;;;;;;;;;15095:48;;;;;;;15053:39;;;;;;;:90;15163:40;15052:151;;;;15245:7;15217:35;;;;;15052:151;15026:177;;;;;14845:3;;14817:446;;;-1:-1:-1;;;;;;15371:26:82;;;;;;;:20;:26;;;;;;;;:33;;;;;;;;;:60;;;15446:10;;15442:341;;15613:24;;;;;;;;;:33;;;15578:69;;;;;;;;15661:32;-1:-1:-1;;;;;15661:18:82;;15680:4;15640:6;15661:18;:32::i;:::-;15712:60;15726:4;15732:5;15739:6;15747:24;15712:60;;;;;;;;;:::i;:::-;;;;;;;;15442:341;15800:6;13530:2283;-1:-1:-1;;;;;;;;13530:2283:82:o;2078:163:49:-;-1:-1:-1;;;;;2153:26:49;;;;;;:20;:26;;;;;;;:36;;;;;;;;;;2204:30;;;;;2153:26;;:36;;2204:30;:::i;:::-;;;;;;;;2078:163;;:::o;2386:188:58:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;1430:265:47:-;1605:83;1627:7;1636:10;1648:9;1659:17;1678:9;1605:21;:83::i;926:101:31:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;28827:919:82:-;28998:7;29031:12;29067;28998:7;29175:545;29199:3;29195:1;:7;29175:545;;;29234:3;29227;:10;29223:21;;29239:5;;29223:21;29442:1;29425:9;;;:13;;29424:19;29457:29;;:::i;:::-;29489:43;;;;;-1:-1:-1;;;;;29489:13:82;:32;;;;:43;;29522:4;;29528:3;;29489:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29457:75;;29559:9;29550:2;:5;;;:18;29546:164;;29594:3;29588:9;;29546:164;;;29694:1;29688:3;:7;29682:13;;29546:164;-1:-1:-1;;29204:3:82;;29175:545;;;-1:-1:-1;29736:3:82;;28827:919;-1:-1:-1;;;;;;28827:919:82:o;30186:212::-;30254:7;30347:44;30367:23;;;30347:19;:44::i;1922:228:55:-;2113:9;;;2124:8;;;2109:24;2102:32;;;2078:66::o;29871:196:82:-;30042:7;30030:19;;;;30029:31;;29871:196::o;1404:121:65:-;1462:7;1488:30;1492:1;1495;5194::31;1488:3:65;:30::i;2324:914:64:-;2626:12;2640:23;2667:5;-1:-1:-1;;;;;2667:10:64;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:31;3134:8:64;:97::i;2233:217:55:-;2413:9;;;2424:8;;;2409:24;2402:32;;;2378:66::o;1514:214:64:-;1626:95;1654:5;1685:23;;;1710:2;1714:5;1662:58;;;;;;;;;:::i;1626:95::-;1514:214;;;:::o;3433:187:58:-;3595:9;;3570:44::o;1701:1214:47:-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:31;2487:8:47;:63::i;:::-;-1:-1:-1;;;;;;;;2884:19:47;;;:10;:19;;;;;;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:47:o;1459:126:31:-;1506:28;1514:9;1506:28;:7;:28::i;1816:206:65:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:65;;;1816:206::o;3199:183:58:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;1045:414:50:-;1199:4;1219:20;:7;-1:-1:-1;;;;;1219:18:50;;:20::i;:::-;1215:238;;;1262:53;;1319:34;1262:53;;;1319:34;-1:-1:-1;;;;;1262:34:50;;;1319;;1262:53;;1297:6;;1305:9;;1262:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:91;;;;-1:-1:-1;1255:98:50;;1215:238;1391:51;1415:7;1424:6;1432:9;1391:23;:51::i;:::-;1384:58;;;;1692:3378:31;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1031:433:56;1403:20;1449:8;;;1031:433::o;2921:876:47:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:31;3082:8:47;:60::i;:::-;3427:4;3412:20;;;3406:27;3472:4;3457:20;;;3451:27;3525:4;3510:20;;3504:27;3579:26;;3153:9;3579:26;;;;;;;;;3406:27;;3451;;3496:36;;;3579:26;;;;3589:6;;3496:36;;3406:27;;3451;;3579:26;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:47;;;;;;-1:-1:-1;;;;;;;3728:30:47;;;;;;:61;;;3782:7;-1:-1:-1;;;;;3762:27:47;:16;-1:-1:-1;;;;;3762:27:47;;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:47:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;168:367::-;;;313:3;306:4;298:6;294:17;290:27;280:2;;-1:-1;;321:12;280:2;-1:-1;351:20;;391:18;380:30;;377:2;;;-1:-1;;413:12;377:2;457:4;449:6;445:17;433:29;;508:3;457:4;;492:6;488:17;449:6;474:32;;471:41;468:2;;;525:1;;515:12;468:2;273:262;;;;;:::o;1942:132::-;2019:13;;23087:2;23076:21;;;25194:34;;25184:2;;25242:1;;25232:12;3203:241;;3307:2;3295:9;3286:7;3282:23;3278:32;3275:2;;;-1:-1;;3313:12;3275:2;85:6;72:20;97:33;124:5;97:33;:::i;3451:552::-;;;;3622:2;3610:9;3601:7;3597:23;3593:32;3590:2;;;-1:-1;;3628:12;3590:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3680:63;-1:-1;3808:2;3793:18;;3780:32;3832:18;3821:30;;3818:2;;;-1:-1;;3854:12;3818:2;3892:95;3979:7;3970:6;3959:9;3955:22;3892:95;:::i;:::-;3584:419;;3874:113;;-1:-1;3874:113;;-1:-1;;;;3584:419::o;4010:589::-;;;;4154:2;4142:9;4133:7;4129:23;4125:32;4122:2;;;-1:-1;;4160:12;4122:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4212:63;-1:-1;4312:2;4348:22;;;985:20;1010:30;985:20;1010:30;:::i;:::-;4320:60;-1:-1;4445:2;4430:18;;4417:32;4469:18;4458:30;;;4455:2;;;-1:-1;;4491:12;4455:2;4566:6;4555:9;4551:22;;;1428:3;1421:4;1413:6;1409:17;1405:27;1395:2;;-1:-1;;1436:12;1395:2;1483:6;1470:20;4469:18;20907:6;20904:30;20901:2;;;-1:-1;;20937:12;20901:2;1505:64;4312:2;21010:9;1421:4;20995:6;20991:17;20987:33;21068:15;1505:64;:::i;:::-;1496:73;;1589:6;1582:5;1575:21;1693:3;4312:2;1684:6;1617;1675:16;;1672:25;1669:2;;;-1:-1;;1700:12;1669:2;24083:6;4312:2;1617:6;1613:17;4312:2;1651:5;1647:16;24060:30;-1:-1;4312:2;24130:6;1651:5;24121:16;;24114:27;;4511:72;;;;;;4116:483;;;;;:::o;4606:396::-;;;4742:2;4730:9;4721:7;4717:23;4713:32;4710:2;;;-1:-1;;4748:12;4710:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4800:63;-1:-1;4900:2;4954:22;;1857:20;1882:48;1857:20;1882:48;:::i;:::-;4908:78;;;;4704:298;;;;;:::o;5009:366::-;;;5130:2;5118:9;5109:7;5105:23;5101:32;5098:2;;;-1:-1;;5136:12;5098:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5188:63;5288:2;5327:22;;;;2992:20;;-1:-1;;;5092:283::o;5382:427::-;;;5536:2;5524:9;5515:7;5511:23;5507:32;5504:2;;;-1:-1;;5542:12;5504:2;5600:17;5587:31;5638:18;5630:6;5627:30;5624:2;;;-1:-1;;5660:12;5624:2;5698:95;5785:7;5776:6;5765:9;5761:22;5698:95;:::i;:::-;5680:113;;;;-1:-1;5498:311;-1:-1;;;;5498:311::o;5816:708::-;;;;;6022:2;6010:9;6001:7;5997:23;5993:32;5990:2;;;-1:-1;;6028:12;5990:2;6086:17;6073:31;6124:18;;6116:6;6113:30;6110:2;;;-1:-1;;6146:12;6110:2;6184:95;6271:7;6262:6;6251:9;6247:22;6184:95;:::i;:::-;6166:113;;-1:-1;6166:113;-1:-1;6344:2;6329:18;;6316:32;;-1:-1;6357:30;;;6354:2;;;-1:-1;;6390:12;6354:2;;6428:80;6500:7;6491:6;6480:9;6476:22;6428:80;:::i;:::-;5984:540;;;;-1:-1;6410:98;-1:-1;;;;5984:540::o;6531:235::-;;6632:2;6620:9;6611:7;6607:23;6603:32;6600:2;;;-1:-1;;6638:12;6600:2;998:6;985:20;1010:30;1034:5;1010:30;:::i;6773:257::-;;6885:2;6873:9;6864:7;6860:23;6856:32;6853:2;;;-1:-1;;6891:12;6853:2;1133:6;1127:13;1145:30;1169:5;1145:30;:::i;7037:261::-;;7151:2;7139:9;7130:7;7126:23;7122:32;7119:2;;;-1:-1;;7157:12;7119:2;1270:6;1264:13;22823:66;24945:5;22812:78;24921:5;24918:34;24908:2;;-1:-1;;24956:12;7986:310;;8124:3;8112:9;8103:7;8099:23;8095:33;8092:2;;;-1:-1;;8131:12;8092:2;2273:20;8124:3;2273:20;:::i;:::-;2375:59;2430:3;2406:22;2375:59;:::i;:::-;2357:16;2350:85;2530:59;2585:3;2497:2;2565:9;2561:22;2530:59;:::i;:::-;2497:2;2516:5;2512:16;2505:85;2649:2;2718:9;2714:22;3140:13;2649:2;2668:5;2664:16;2657:86;2803:2;2872:9;2868:22;3140:13;2803:2;2822:5;2818:16;2811:86;8183:97;;;;8086:210;;;;:::o;8303:241::-;;8407:2;8395:9;8386:7;8382:23;8378:32;8375:2;;;-1:-1;;8413:12;8375:2;-1:-1;2992:20;;8369:175;-1:-1;8369:175::o;8551:263::-;;8666:2;8654:9;8645:7;8641:23;8637:32;8634:2;;;-1:-1;;8672:12;8634:2;-1:-1;3140:13;;8628:186;-1:-1;8628:186::o;12767:271::-;;10752:5;21361:12;10863:52;10908:6;10903:3;10896:4;10889:5;10885:16;10863:52;:::i;:::-;10927:16;;;;;12901:137;-1:-1;;12901:137::o;13045:659::-;11591:66;11571:87;;11556:1;11677:11;;10034:37;;;;13556:12;;;10034:37;13667:12;;;13290:414::o;13711:222::-;-1:-1;;;;;23171:54;;;;9074:37;;13838:2;13823:18;;13809:124::o;13940:444::-;-1:-1;;;;;23171:54;;;9074:37;;23171:54;;;;14287:2;14272:18;;9074:37;14370:2;14355:18;;10034:37;;;;14123:2;14108:18;;14094:290::o;14391:321::-;-1:-1;;;;;23171:54;;;;9074:37;;22646:13;22639:21;14698:2;14683:18;;9917:34;14540:2;14525:18;;14511:201::o;14719:586::-;-1:-1;;;;;23171:54;;;9074:37;;23171:54;;;;15125:2;15110:18;;11041:65;15208:2;15193:18;;10034:37;15291:2;15276:18;;10034:37;;;;14945:3;14930:19;;14916:389::o;15312:333::-;-1:-1;;;;;23171:54;;;;9074:37;;15631:2;15616:18;;10034:37;15467:2;15452:18;;15438:207::o;15652:370::-;15829:2;15843:47;;;21361:12;;15814:18;;;21764:19;;;15652:370;;15829:2;21215:14;;;;21804;;;;15652:370;9562:260;9587:6;9584:1;9581:13;9562:260;;;9648:13;;10034:37;;21619:14;;;;8975;;;;9609:1;9602:9;9562:260;;16029:210;22646:13;;22639:21;9917:34;;16150:2;16135:18;;16121:118::o;16246:222::-;10034:37;;;16373:2;16358:18;;16344:124::o;16475:544::-;10034:37;;;-1:-1;;;;;23171:54;;;;16845:2;16830:18;;9074:37;22646:13;22639:21;16922:2;16907:18;;9917:34;17005:2;16990:18;;10034:37;16680:3;16665:19;;16651:368::o;17026:668::-;10034:37;;;17430:2;17415:18;;10034:37;;;;17513:2;17498:18;;10034:37;;;;17596:2;17581:18;;10034:37;-1:-1;;;;;23171:54;17679:3;17664:19;;9074:37;17265:3;17250:19;;17236:458::o;17701:417::-;;10064:5;10041:3;10034:37;17874:2;17992;17981:9;17977:18;17970:48;10384:5;21361:12;21776:6;17874:2;17863:9;17859:18;21764:19;10477:52;10522:6;21804:14;17863:9;21804:14;17992:2;10503:5;10499:16;10477:52;:::i;:::-;24601:2;24581:14;24597:7;24577:28;10541:39;;;;21804:14;10541:39;;17845:273;-1:-1;;;17845:273::o;18125:548::-;10034:37;;;23387:4;23376:16;;;;18493:2;18478:18;;12720:35;18576:2;18561:18;;10034:37;18659:2;18644:18;;10034:37;18332:3;18317:19;;18303:370::o;18680:474::-;-1:-1;;;;;23171:54;;;;11041:65;;19057:2;19042:18;;10034:37;;;;19140:2;19125:18;;10034:37;18878:2;18863:18;;18849:305::o;19434:416::-;19634:2;19648:47;;;11927:2;19619:18;;;21764:19;11963:32;21804:14;;;11943:53;12015:12;;;19605:245::o;19857:416::-;20057:2;20071:47;;;12266:2;20042:18;;;21764:19;12302:34;21804:14;;;12282:55;12371:6;12357:12;;;12350:28;12397:12;;;20028:245::o;20509:256::-;20571:2;20565:9;20597:17;;;20672:18;20657:34;;20693:22;;;20654:62;20651:2;;;20729:1;;20719:12;20651:2;20571;20738:22;20549:216;;-1:-1;20549:216::o;24156:268::-;24221:1;24228:101;24242:6;24239:1;24236:13;24228:101;;;24309:11;;;24303:18;24290:11;;;24283:39;24264:2;24257:10;24228:101;;;24344:6;24341:1;24338:13;24335:2;;;-1:-1;;24221:1;24391:16;;24384:27;24205:219::o;24618:117::-;-1:-1;;;;;24705:5;23171:54;24680:5;24677:35;24667:2;;24726:1;;24716:12;24742:111;24823:5;22646:13;22639:21;24801:5;24798:32;24788:2;;24844:1;;24834:12"},"methodIdentifiers":{"checkpoint()":"c2c4c5c1","checkpointToken(address)":"3902b9bc","checkpointTokens(address[])":"905d10ac","checkpointUser(address)":"14866e08","claimToken(address,address)":"ca31879d","claimTokens(address,address[])":"88720467","depositToken(address,uint256)":"338b5dea","depositTokens(address[],uint256[])":"7b8d6221","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","getTimeCursor()":"82aa5ad4","getTokenLastBalance(address)":"2308805b","getTokenTimeCursor(address)":"acbc1428","getTokensDistributedInWeek(address,uint256)":"d3dc4ca1","getTotalSupplyAtTimestamp(uint256)":"4f3c5090","getUserBalanceAtTimestamp(address,uint256)":"de681faf","getUserLastEpochCheckpointed(address)":"286d5e7f","getUserTimeCursor(address)":"876e69a1","getUserTokenTimeCursor(address,address)":"8050a7ee","getVotingEscrow()":"08b0308a","isOnlyCallerEnabled(address)":"a1648aa5","setOnlyCallerCheck(bool)":"e811f44b","setOnlyCallerCheckWithSignature(address,bool,bytes)":"fcaa54ee"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"votingEscrow\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"OnlyCallerOptIn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastCheckpointTimestamp\",\"type\":\"uint256\"}],\"name\":\"TokenCheckpointed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"userTokenTimeCursor\",\"type\":\"uint256\"}],\"name\":\"TokensClaimed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"checkpointToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"checkpointTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"checkpointUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"depositTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenLastBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getTokensDistributedInWeek\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getTotalSupplyAtTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getUserBalanceAtTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserLastEpochCheckpointed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getUserTokenTimeCursor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotingEscrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isOnlyCallerEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setOnlyCallerCheck\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"setOnlyCallerCheckWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkpointToken(address)\":{\"details\":\"Any `token` balance held by the FeeDistributor above that which is returned by `getTokenLastBalance` will be distributed evenly across the time period since `token` was last checkpointed. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\",\"params\":{\"token\":\"- The ERC20 token address to be checkpointed.\"}},\"checkpointTokens(address[])\":{\"details\":\"A version of `checkpointToken` which supports checkpointing multiple tokens. See `checkpointToken` for more details.\",\"params\":{\"tokens\":\"- An array of ERC20 token addresses to be checkpointed.\"}},\"checkpointUser(address)\":{\"params\":{\"user\":\"- The address of the user to be checkpointed.\"}},\"claimToken(address,address)\":{\"details\":\"It's not necessary to explicitly checkpoint before calling this function, it will ensure the FeeDistributor is up to date before calculating the amount of tokens to be claimed.\",\"params\":{\"token\":\"- The ERC20 token address to be claimed.\",\"user\":\"- The user on behalf of which to claim.\"},\"returns\":{\"_0\":\"The amount of `token` sent to `user` as a result of claiming.\"}},\"claimTokens(address,address[])\":{\"details\":\"A version of `claimToken` which supports claiming multiple `tokens` on behalf of `user`. See `claimToken` for more details.\",\"params\":{\"tokens\":\"- An array of ERC20 token addresses to be claimed.\",\"user\":\"- The user on behalf of which to claim.\"},\"returns\":{\"_0\":\"An array of the amounts of each token in `tokens` sent to `user` as a result of claiming.\"}},\"depositToken(address,uint256)\":{\"details\":\"Sending tokens directly to the FeeDistributor instead of using `depositToken` may result in tokens being retroactively distributed to past weeks, or for the distribution to carry over to future weeks. If for some reason `depositToken` cannot be called, in order to ensure that all tokens are correctly distributed manually call `checkpointToken` before and after the token transfer.\",\"params\":{\"amount\":\"- The amount of tokens to deposit.\",\"token\":\"- The ERC20 token address to distribute.\"}},\"depositTokens(address[],uint256[])\":{\"details\":\"A version of `depositToken` which supports depositing multiple `tokens` at once. See `depositToken` for more details.\",\"params\":{\"amounts\":\"- An array of token amounts to deposit.\",\"tokens\":\"- An array of ERC20 token addresses to distribute.\"}},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getTokenTimeCursor(address)\":{\"params\":{\"token\":\"- The ERC20 token address to query.\"}},\"getTokensDistributedInWeek(address,uint256)\":{\"params\":{\"timestamp\":\"- The timestamp corresponding to the beginning of the week of interest.\",\"token\":\"- The ERC20 token address to query.\"}},\"getTotalSupplyAtTimestamp(uint256)\":{\"details\":\"Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values. This function requires the contract to have been checkpointed past `timestamp` so that the supply is cached.\",\"params\":{\"timestamp\":\"- The timestamp at which to read the cached total supply at.\"}},\"getUserBalanceAtTimestamp(address,uint256)\":{\"details\":\"Only timestamps which fall on Thursdays 00:00:00 UTC will return correct values. This function requires `user` to have been checkpointed past `timestamp` so that their balance is cached.\",\"params\":{\"timestamp\":\"- The timestamp at which to read the `user`'s cached balance at.\",\"user\":\"- The address of the user of which to read the cached balance of.\"}},\"getUserTimeCursor(address)\":{\"params\":{\"user\":\"- The address of the user to query.\"}},\"getUserTokenTimeCursor(address,address)\":{\"params\":{\"token\":\"- The ERC20 token address to query.\",\"user\":\"- The address of the user to query.\"}},\"isOnlyCallerEnabled(address)\":{\"details\":\"Returns true if caller verification is enabled for the given user, false otherwise.\"},\"setOnlyCallerCheck(bool)\":{\"details\":\"Enables / disables verification mechanism for caller.\",\"params\":{\"enabled\":\"- True if caller verification shall be enabled, false otherwise.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"checkpoint()\":{\"notice\":\"Caches the total supply of veBAL at the beginning of each week. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\"},\"checkpointToken(address)\":{\"notice\":\"Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\"},\"checkpointTokens(address[])\":{\"notice\":\"Assigns any newly-received tokens held by the FeeDistributor to weekly distributions.\"},\"checkpointUser(address)\":{\"notice\":\"Caches the user's balance of veBAL at the beginning of each week. This function will be called automatically before claiming tokens to ensure the contract is properly updated.\"},\"claimToken(address,address)\":{\"notice\":\"Claims all pending distributions of the provided token for a user.\"},\"claimTokens(address,address[])\":{\"notice\":\"Claims a number of tokens on behalf of a user.\"},\"depositToken(address,uint256)\":{\"notice\":\"Deposits tokens to be distributed in the current week.\"},\"depositTokens(address[],uint256[])\":{\"notice\":\"Deposits tokens to be distributed in the current week.\"},\"getTimeCursor()\":{\"notice\":\"Returns the global time cursor representing the most earliest uncheckpointed week.\"},\"getTokenLastBalance(address)\":{\"notice\":\"Returns the FeeDistributor's cached balance of `token`.\"},\"getTokenTimeCursor(address)\":{\"notice\":\"Returns the token-level time cursor storing the timestamp at up to which tokens have been distributed.\"},\"getTokensDistributedInWeek(address,uint256)\":{\"notice\":\"Returns the amount of `token` which the FeeDistributor received in the week beginning at `timestamp`.\"},\"getTotalSupplyAtTimestamp(uint256)\":{\"notice\":\"Returns the cached total supply of veBAL as of the provided timestamp.\"},\"getUserBalanceAtTimestamp(address,uint256)\":{\"notice\":\"Returns the user's cached balance of veBAL as of the provided timestamp.\"},\"getUserTimeCursor(address)\":{\"notice\":\"Returns the user-level time cursor representing the most earliest uncheckpointed week.\"},\"getUserTokenTimeCursor(address,address)\":{\"notice\":\"Returns the user-level time cursor storing the timestamp of the latest token distribution claimed.\"},\"getVotingEscrow()\":{\"notice\":\"Returns the VotingEscrow (veBAL) token contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestFeeDistributor.sol\":\"TestFeeDistributor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IFeeDistributor.sol\":{\"keccak256\":\"0x250e4e6dcde3cf83d4d2822e9593c3138f6518ca95d88a0156a292557605640e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a2596b2242650aade0987677bfee7f4ee1359d588244b03cd1b65542f4f06252\",\"dweb:/ipfs/Qmbrb2Lp6suCPngH9sBzmaDBxET6YD6pBH1T8crGw29Cqi\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ISmartWalletChecker.sol\":{\"keccak256\":\"0xf26107dc26b3424b7323058a9bc6b30620ec7c5769157918f5793028535fd263\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cfbea9ba78c0b93130966c57b165b6f4979429ef215447c79f986f07a1b801e\",\"dweb:/ipfs/QmdrGNHrJCPtFtueuciNgkdZoZozS3ivHSPQUqwYGmXvi3\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0xccca7deaf747b7e359fa7019960c3023a1377f1de1b73d9bc565daa94f0688fa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://034dfe08fd7647dcf4c2b0b73b2a68a2210cee4f383a0062d8139f18b986bb3a\",\"dweb:/ipfs/Qmcb6ZvTC3kLLY19hVCXBxbirx2K9tmPuM6XEmS1yrUKNo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IOptionalOnlyCaller.sol\":{\"keccak256\":\"0x7bab0494ee39fb988722edd20b3e5ff747b4acfe93a62d0726c5d63ae3f6e472\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://23e1d154f2fa589cbfa51338c285cf1862edcd6172fdbb26db17a6fcf9581ee2\",\"dweb:/ipfs/Qmbu8wgFjYqZvvv84MKbLiHMSKv3THZuFHCjRchPHLjCdY\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC1271.sol\":{\"keccak256\":\"0xf82dab09a38bfdaf0983b69829de462c62359bc0bfaa37c4447408d93bd367c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d0172b678ca594e95b7e5d881fd1280b3792052861ca98d77fa6194b524d188\",\"dweb:/ipfs/QmZ3bYEGTrfruXNYAzuFjJeg9Hx6UQw8ZyBzyM72BVGXfT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/OptionalOnlyCaller.sol\":{\"keccak256\":\"0xc3a9b8d78e475f0290fa6f660b63f42ed4834dfcb61d7935b4b034fd31ef33f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1793575373e2214ceee3aecbd68b8b1a3ff24070b63bf36acb5d7e2bbb700d71\",\"dweb:/ipfs/QmVGYzndTDp2z25g6WqPze1PV5okh7MGBkP3XL2CTggAcM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SignaturesValidator.sol\":{\"keccak256\":\"0x028adc486d4df66cfc3157049ebd2772f1033be7159b27173225459d8d833e93\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5a67c6db6916df2ace5765995f45bf03e9ed07dd6e6164a196642ba4d52aa8b4\",\"dweb:/ipfs/QmYkhoC75YFywYqQPCMbj9iWyauVLczE7Db2NLisJR2vqu\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/fee-distribution/FeeDistributor.sol\":{\"keccak256\":\"0xe46c05028895d98f78543b5e663f1f6331a9cee360423b556d5b66a68e391c5d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f21b55c0384a5f1bfd07e1df0c9717f4780bfc726dce026e017d978f3a8c267e\",\"dweb:/ipfs/QmeY8aCe487s6xcq2LNED6hRxR6dJCGzp43wVbPNmQpbCf\"]},\"contracts/test/TestFeeDistributor.sol\":{\"keccak256\":\"0xe96b39cc6a4a66e0bc04cb6f50635851562911489d829e63885ba690c4155a1c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://191e414ae74468cb1e8c1e160cd4d4df7dea724d29134323b87b9906b0bcb169\",\"dweb:/ipfs/QmfYUo6qVupFCMU2FDqz2GSfaPs66iVgsWF2dVzivgN7Lx\"]}},\"version\":1}"}}}}}
\ No newline at end of file
diff --git a/tasks/20240522-fraxtal-root-gauge-factory/index.ts b/tasks/20240522-fraxtal-root-gauge-factory/index.ts
new file mode 100644
index 00000000..8feb1f59
--- /dev/null
+++ b/tasks/20240522-fraxtal-root-gauge-factory/index.ts
@@ -0,0 +1,25 @@
+import { Task, TaskRunOptions } from '@src';
+import { FraxtalRootGaugeFactoryDeployment } from './input';
+
+export default async (task: Task, { force, from }: TaskRunOptions = {}): Promise => {
+ const input = task.input() as FraxtalRootGaugeFactoryDeployment;
+
+ const args = [
+ input.Vault,
+ input.BalancerMinter,
+ input.L1StandardBridge,
+ input.FraxtalBAL,
+ input.GasLimit,
+ input.Network,
+ ];
+
+ const factory = await task.deployAndVerify('OptimisticRootGaugeFactory', args, from, force);
+
+ const implementation = await factory.getGaugeImplementation();
+ await task.verify('OptimisticRootGauge', implementation, [
+ input.BalancerMinter,
+ input.L1StandardBridge,
+ input.FraxtalBAL,
+ ]);
+ await task.save({ FraxtalRootGauge: implementation });
+};
diff --git a/tasks/20240522-fraxtal-root-gauge-factory/input.ts b/tasks/20240522-fraxtal-root-gauge-factory/input.ts
new file mode 100644
index 00000000..5275db89
--- /dev/null
+++ b/tasks/20240522-fraxtal-root-gauge-factory/input.ts
@@ -0,0 +1,27 @@
+import { Task, TaskMode } from '@src';
+
+export type FraxtalRootGaugeFactoryDeployment = {
+ Vault: string;
+ BalancerMinter: string;
+ FraxtalBAL: string;
+ L1StandardBridge: string;
+ GasLimit: number;
+ Network: string;
+};
+
+const Tokens = new Task('00000000-tokens', TaskMode.READ_ONLY);
+const Vault = new Task('20210418-vault', TaskMode.READ_ONLY);
+const BalancerMinter = new Task('20220325-gauge-controller', TaskMode.READ_ONLY);
+
+export default {
+ mainnet: {
+ Vault,
+ BalancerMinter,
+ FraxtalBAL: Tokens.output({ network: 'fraxtal' }).BAL,
+ // Deposit TX sample: https://etherscan.io/tx/0xbbff35c8add8d11f2fac562731ec9dab58582c3a14b64580d01b8c757fc976bd
+ L1StandardBridge: '0x34C0bD5877A5Ee7099D0f5688D65F4bB9158BDE2',
+ // Value taken from TX sample directly.
+ GasLimit: 200000,
+ Network: 'Fraxtal',
+ },
+};
diff --git a/tasks/20240522-fraxtal-root-gauge-factory/readme.md b/tasks/20240522-fraxtal-root-gauge-factory/readme.md
new file mode 100644
index 00000000..e4a0e7fa
--- /dev/null
+++ b/tasks/20240522-fraxtal-root-gauge-factory/readme.md
@@ -0,0 +1,11 @@
+# 2024-05-22 - Fraxtal Root Gauge Factory
+
+Deployment of the `OptimisticRootGaugeFactory`, for stakeless gauges that bridge funds to their Fraxtal counterparts.
+The code that manages the bridge is the same as in [`OptimismRootGaugeFactory` V2](../20220823-optimism-root-gauge-factory-v2/), but this deployment points to the [Fraxtal OP Stack Bridge](https://docs.frax.com/fraxtal/tools/bridges#fraxtal-op-stack-bridge).
+
+It also has a `NETWORK` getter set in the factory, which helps to identify the target network.
+
+## Useful Files
+
+- [`OptimisticRootGauge` artifact](./artifact/OptimisticRootGauge.json)
+- [`OptimisticRootGaugeFactory` artifact](./artifact/OptimisticRootGaugeFactory.json)
diff --git a/tasks/20240522-fraxtal-root-gauge-factory/test/task.fork.ts b/tasks/20240522-fraxtal-root-gauge-factory/test/task.fork.ts
new file mode 100644
index 00000000..88018970
--- /dev/null
+++ b/tasks/20240522-fraxtal-root-gauge-factory/test/task.fork.ts
@@ -0,0 +1,343 @@
+import hre, { ethers } from 'hardhat';
+import { expect } from 'chai';
+import { Contract } from 'ethers';
+
+import { BigNumber, fp, FP_ONE } from '@helpers/numbers';
+import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/dist/src/signer-with-address';
+import { advanceTime, currentTimestamp, currentWeekTimestamp, DAY, MONTH, WEEK } from '@helpers/time';
+import * as expectEvent from '@helpers/expectEvent';
+
+import { expectEqualWithError } from '@helpers/relativeError';
+import { MAX_UINT256, ZERO_ADDRESS } from '@helpers/constants';
+import { range } from 'lodash';
+import { expectTransferEvent } from '@helpers/expectTransfer';
+import { actionId } from '@helpers/models/misc/actions';
+
+import { describeForkTest, getSigner, impersonate, getForkedNetwork, Task, TaskMode } from '@src';
+import { WeightedPoolEncoder } from '@helpers/models/pools/weighted/encoder';
+
+describeForkTest('FraxtalRootGaugeFactory', 'mainnet', 19928000, function () {
+ let veBALHolder: SignerWithAddress,
+ admin: SignerWithAddress,
+ recipient: SignerWithAddress,
+ daoMultisig: SignerWithAddress;
+ let factory: Contract, gauge: Contract;
+ let vault: Contract,
+ authorizer: Contract,
+ adaptorEntrypoint: Contract,
+ BALTokenAdmin: Contract,
+ gaugeController: Contract,
+ gaugeAdder: Contract;
+ let veBAL: Contract, bal80weth20Pool: Contract;
+ let BAL: string;
+
+ let task: Task;
+ let fraxtalBAL: string;
+ let fraxtalL1Bridge: string;
+ let gasLimit: BigNumber;
+
+ const DAO_MULTISIG = '0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f';
+ const VEBAL_POOL = '0x5c6ee304399dbdb9c8ef030ab642b10820db8f56';
+ const VAULT_BOUNTY = fp(1000);
+ const BRIDGE_INTERFACE = new ethers.utils.Interface([
+ 'event ERC20DepositInitiated(address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256 _amount, bytes _data)',
+ ]);
+
+ const weightCap = fp(0.001);
+
+ before('run task', async () => {
+ task = new Task('20240522-fraxtal-root-gauge-factory', TaskMode.TEST, getForkedNetwork(hre));
+ ({ FraxtalBAL: fraxtalBAL, L1StandardBridge: fraxtalL1Bridge, GasLimit: gasLimit } = task.input());
+ await task.run({ force: true });
+ factory = await task.deployedInstance('OptimisticRootGaugeFactory');
+ });
+
+ before('advance time', async () => {
+ // This causes all voting cooldowns to expire, letting the veBAL holder vote again
+ await advanceTime(DAY * 12);
+ });
+
+ before('setup accounts', async () => {
+ admin = await getSigner(0);
+ recipient = await getSigner(1);
+
+ daoMultisig = await impersonate(DAO_MULTISIG, fp(100));
+ // Since the veBAL holder is synthetic, we do not need to start the test advancing the time to reset the voting
+ // power. Moreover, since the block number is close to the present at this point, advancing days breaks the first
+ // weight check for the gauge (i.e. before the very first gauge checkpoint), which would make the 'bridge & mint'
+ // test unnecessarily complex later on.
+ //
+ // Specifically, `gauge_relative_weight` returns 0 before the first gauge checkpoint, even when there are votes,
+ // which would cause the "vote for gauge" test to fail: and we cannot checkpoint it manually there, since the next
+ // "mint and bridge" needs to test for zero emissions and do its own checkpoint.
+ veBALHolder = await impersonate((await getSigner(2)).address, VAULT_BOUNTY.add(fp(5))); // plus gas
+ });
+
+ before('setup contracts', async () => {
+ const vaultTask = new Task('20210418-vault', TaskMode.READ_ONLY, getForkedNetwork(hre));
+ vault = await vaultTask.deployedInstance('Vault');
+
+ // Need to get the original Authorizer (getting it from the Vault at this block will yield the AuthorizerWithAdaptorValidation)
+ const authorizerTask = new Task('20210418-authorizer', TaskMode.READ_ONLY, getForkedNetwork(hre));
+ authorizer = await authorizerTask.deployedInstance('Authorizer');
+
+ const adaptorEntrypointTask = new Task('20221124-authorizer-adaptor-entrypoint', TaskMode.READ_ONLY, 'mainnet');
+ adaptorEntrypoint = await adaptorEntrypointTask.deployedInstance('AuthorizerAdaptorEntrypoint');
+
+ const gaugeAdderTask = new Task('20230519-gauge-adder-v4', TaskMode.READ_ONLY, getForkedNetwork(hre));
+ gaugeAdder = await gaugeAdderTask.deployedInstance('GaugeAdder');
+
+ const balancerTokenAdminTask = new Task('20220325-balancer-token-admin', TaskMode.READ_ONLY, getForkedNetwork(hre));
+ BALTokenAdmin = await balancerTokenAdminTask.deployedInstance('BalancerTokenAdmin');
+
+ BAL = await BALTokenAdmin.getBalancerToken();
+
+ const gaugeControllerTask = new Task('20220325-gauge-controller', TaskMode.READ_ONLY, getForkedNetwork(hre));
+ gaugeController = await gaugeControllerTask.deployedInstance('GaugeController');
+ veBAL = await gaugeControllerTask.instanceAt(
+ 'VotingEscrow',
+ gaugeControllerTask.output({ network: 'mainnet' }).VotingEscrow
+ );
+
+ const weightedPoolTask = new Task('20210418-weighted-pool', TaskMode.READ_ONLY, getForkedNetwork(hre));
+ bal80weth20Pool = await weightedPoolTask.instanceAt('WeightedPool2Tokens', VEBAL_POOL);
+ });
+
+ before('create veBAL whale', async () => {
+ const poolId = await bal80weth20Pool.getPoolId();
+
+ await vault.connect(veBALHolder).joinPool(
+ poolId,
+ veBALHolder.address,
+ veBALHolder.address,
+ {
+ assets: [BAL, ZERO_ADDRESS],
+ maxAmountsIn: [0, VAULT_BOUNTY],
+ fromInternalBalance: false,
+ userData: WeightedPoolEncoder.joinExactTokensInForBPTOut([0, VAULT_BOUNTY], 0),
+ },
+ { value: VAULT_BOUNTY }
+ );
+
+ await bal80weth20Pool.connect(veBALHolder).approve(veBAL.address, MAX_UINT256);
+ const currentTime = await currentTimestamp();
+ await veBAL
+ .connect(veBALHolder)
+ .create_lock(await bal80weth20Pool.balanceOf(veBALHolder.address), currentTime.add(MONTH * 12));
+
+ // Verify non-zero veBAL balance
+ const now = await currentTimestamp();
+ expect(await veBAL['balanceOf(address,uint256)'](veBALHolder.address, now)).to.gt(0);
+ });
+
+ it('can create a gauge', async () => {
+ const tx = await factory.create(recipient.address, weightCap);
+ const event = expectEvent.inReceipt(await tx.wait(), 'GaugeCreated');
+
+ gauge = await task.instanceAt('OptimisticRootGauge', event.args.gauge);
+
+ expect(await factory.isGaugeFromFactory(gauge.address)).to.be.true;
+
+ // We need to grant permissions to mint in the gauges, which is done via the Authorizer Adaptor Entrypoint
+ await authorizer
+ .connect(daoMultisig)
+ .grantRole(await adaptorEntrypoint.getActionId(gauge.interface.getSighash('checkpoint')), admin.address);
+ });
+
+ before('grant permissions on gauge adder', async () => {
+ const addGaugeTypeAction = await actionId(gaugeAdder, 'addGaugeType');
+ const setFactoryAction = await actionId(gaugeAdder, 'setGaugeFactory');
+ const addGaugeAction = await actionId(gaugeAdder, 'addGauge');
+
+ await authorizer.connect(daoMultisig).grantRole(addGaugeTypeAction, admin.address);
+ await authorizer.connect(daoMultisig).grantRole(setFactoryAction, admin.address);
+ await authorizer.connect(daoMultisig).grantRole(addGaugeAction, admin.address);
+ });
+
+ it('add gauge to gauge controller', async () => {
+ await gaugeAdder.connect(admin).addGaugeType('Fraxtal');
+ await gaugeAdder.connect(admin).setGaugeFactory(factory.address, 'Fraxtal');
+ await gaugeAdder.connect(admin).addGauge(gauge.address, 'Fraxtal');
+
+ expect(await gaugeAdder.isGaugeFromValidFactory(gauge.address, 'Fraxtal')).to.be.true;
+
+ expect(await gaugeController.gauge_exists(gauge.address)).to.be.true;
+ });
+
+ it('factory stores the gas limit', async () => {
+ expect(await factory.getOptimismGasLimit()).to.eq(gasLimit);
+ });
+
+ it('stores the recipient', async () => {
+ expect(await gauge.getRecipient()).to.eq(recipient.address);
+ });
+
+ it('stores the fraxtal bridge', async () => {
+ expect(await gauge.getOptimismBridge()).to.eq(fraxtalL1Bridge);
+ });
+
+ it('stores fraxtal BAL', async () => {
+ expect(await gauge.getOptimismBal()).to.eq(fraxtalBAL);
+ });
+
+ it('returns the correct network tag', async () => {
+ expect(await gauge.NETWORK()).to.eq('Fraxtal');
+ });
+
+ it('vote for gauge', async () => {
+ expect(await gaugeController.get_gauge_weight(gauge.address)).to.equal(0);
+ expect(await gauge.getCappedRelativeWeight(await currentTimestamp())).to.equal(0);
+
+ await gaugeController.connect(veBALHolder).vote_for_gauge_weights(gauge.address, 10000); // Max voting power is 10k points
+
+ // We now need to go through an epoch for the votes to be locked in.
+ // Advancing 7 days ensures we don't move forward 2 entire epochs, which would complicate the math ahead.
+ await advanceTime(DAY * 7);
+
+ await gaugeController.checkpoint();
+ // Gauge weight is equal to the cap, and controller weight for the gauge is greater than the cap.
+ expect(
+ await gaugeController['gauge_relative_weight(address,uint256)'](gauge.address, await currentWeekTimestamp())
+ ).to.be.gt(weightCap);
+ expect(await gauge.getCappedRelativeWeight(await currentTimestamp())).to.equal(weightCap);
+ });
+
+ it('mint & bridge tokens', async () => {
+ // The gauge has votes for this week, and it will mint the first batch of tokens. We store the current gauge
+ // relative weight, as it will change as time goes by due to vote decay.
+ const firstMintWeekTimestamp = await currentWeekTimestamp();
+
+ const calldata = gauge.interface.encodeFunctionData('checkpoint');
+
+ // Even though the gauge has relative weight, it cannot mint yet as it needs for the epoch to finish
+ const zeroMintTx = await adaptorEntrypoint.connect(admin).performAction(gauge.address, calldata);
+ expectEvent.inIndirectReceipt(await zeroMintTx.wait(), gauge.interface, 'Checkpoint', {
+ periodTime: firstMintWeekTimestamp.sub(WEEK), // Process past week, which had zero votes
+ periodEmissions: 0,
+ });
+ // No token transfers are performed if the emissions are zero, but we can't test for a lack of those
+
+ await advanceTime(WEEK);
+
+ const bridgeCost = await gauge.getTotalBridgeCost();
+
+ // The gauge should now mint and send all minted tokens to the Fraxtal bridge
+ const mintReceipt = await (
+ await adaptorEntrypoint.connect(admin).performAction(gauge.address, calldata, { value: bridgeCost })
+ ).wait();
+
+ const event = expectEvent.inIndirectReceipt(mintReceipt, gauge.interface, 'Checkpoint', {
+ periodTime: firstMintWeekTimestamp,
+ });
+ const actualEmissions: BigNumber = event.args.periodEmissions;
+
+ // The amount of tokens minted should equal the weekly emissions rate times the relative weight of the gauge
+ const weeklyRate = (await BALTokenAdmin.getInflationRate()).mul(WEEK);
+
+ // Note that instead of the weight, we use the cap (since we expect for the weight to be larger than the cap)
+ const expectedEmissions = weightCap.mul(weeklyRate).div(FP_ONE);
+ expectEqualWithError(actualEmissions, expectedEmissions, 0.001);
+
+ // Tokens are minted for the gauge
+ expectTransferEvent(
+ mintReceipt,
+ {
+ from: ZERO_ADDRESS,
+ to: gauge.address,
+ value: actualEmissions,
+ },
+ BAL
+ );
+
+ // And the gauge then deposits those via the bridge mechanism
+ expectTransferEvent(
+ mintReceipt,
+ {
+ from: gauge.address,
+ to: fraxtalL1Bridge,
+ value: actualEmissions,
+ },
+ BAL
+ );
+
+ expectEvent.inIndirectReceipt(mintReceipt, BRIDGE_INTERFACE, 'ERC20DepositInitiated', {
+ _l1Token: BAL,
+ _l2Token: fraxtalBAL,
+ _from: gauge.address,
+ _to: recipient.address,
+ _amount: actualEmissions,
+ });
+ });
+
+ it('mint multiple weeks', async () => {
+ const numberOfWeeks = 5;
+ await advanceTime(WEEK * numberOfWeeks);
+ await gaugeController.checkpoint_gauge(gauge.address);
+
+ const weekTimestamp = await currentWeekTimestamp();
+
+ // We can query the relative weight of the gauge for each of the weeks that have passed
+ const relativeWeights: BigNumber[] = await Promise.all(
+ range(1, numberOfWeeks + 1).map(async (weekIndex) =>
+ gaugeController['gauge_relative_weight(address,uint256)'](gauge.address, weekTimestamp.sub(WEEK * weekIndex))
+ )
+ );
+
+ // We require that they're all above the cap for simplicity - this lets us use the cap as each week's weight (and
+ // also tests cap behavior).
+ for (const relativeWeight of relativeWeights) {
+ expect(relativeWeight).to.be.gt(weightCap);
+ }
+
+ // The amount of tokens allocated to the gauge should equal the sum of the weekly emissions rate times the weight
+ // cap.
+ const weeklyRate = (await BALTokenAdmin.getInflationRate()).mul(WEEK);
+ // Note that instead of the weight, we use the cap (since we expect for the weight to be larger than the cap)
+ const expectedEmissions = weightCap.mul(numberOfWeeks).mul(weeklyRate).div(FP_ONE);
+
+ const bridgeCost = await gauge.getTotalBridgeCost();
+ const calldata = gauge.interface.encodeFunctionData('checkpoint');
+ const tx = await adaptorEntrypoint.connect(admin).performAction(gauge.address, calldata, { value: bridgeCost });
+ const receipt = await tx.wait();
+
+ await Promise.all(
+ range(1, numberOfWeeks + 1).map(async (weekIndex) =>
+ expectEvent.inIndirectReceipt(receipt, gauge.interface, 'Checkpoint', {
+ periodTime: weekTimestamp.sub(WEEK * weekIndex),
+ })
+ )
+ );
+
+ // Tokens are minted for the gauge
+ const transferEvent = expectTransferEvent(
+ receipt,
+ {
+ from: ZERO_ADDRESS,
+ to: gauge.address,
+ },
+ BAL
+ );
+
+ const actualEmissions = transferEvent.args.value;
+ expect(actualEmissions).to.be.almostEqual(expectedEmissions, 0.00001);
+
+ // And the gauge then deposits those via the bridge mechanism
+ expectTransferEvent(
+ receipt,
+ {
+ from: gauge.address,
+ to: fraxtalL1Bridge,
+ value: actualEmissions,
+ },
+ BAL
+ );
+
+ expectEvent.inIndirectReceipt(receipt, BRIDGE_INTERFACE, 'ERC20DepositInitiated', {
+ _l1Token: BAL,
+ _l2Token: fraxtalBAL,
+ _from: gauge.address,
+ _to: recipient.address,
+ _amount: actualEmissions,
+ });
+ });
+});